如何将GPS集成到车钥匙中

电子说

1.2w人已加入

描述

第1步:纸质素描

gps

当人们按下按钮锁定汽车时,位置信息可以自动记录在微控制器中。然后,当人们开始导航到汽车时,不同的LED被点亮以指向汽车的位置,闪烁的频率显示到汽车的距离。他们可以轻松跟踪闪烁的LED并快速找到汽车。

第2步:硬件列表

gps

这些是该项目中使用的组件。一些来自粒子套件(面包板,按钮,标题),其他来自Adafruit官方网站(Adafruit羽毛M0,Adafruit终极GPS模块,Lpoly电池和纽扣电池)和亚马逊(NeoPixel Ring - 12 RGB LED)。

步骤3:电路设计

gps

Neopixel_LED连接到羽毛M0的PIN 6

Button_Unlock连接到羽毛M0的PIN 12

Button_Lock连接到羽毛M0的PIN 13

步骤4:硬件连接

gps

gps

gps

使用Adafruit M0 Feather,Adafruit Ultimate GPS Featherwing焊接标题。将两块板堆叠在一起。 GPS FeatherWing可以直接插入您的羽毛M0板,无需任何电线。

步骤5:软件设计

gps

测试组件

阅读FIX

void setup() {

Serial.println(“GPS echo test”);

Serial.begin(9600);

Serial1.begin(9600); // default NMEA GPS baud

} void loop() {

if (Serial.available()) {

char c = Serial.read();

Serial1.write(c);

}

if (Serial1.available()) {

char c = Serial1.read();

Serial.write(c);

}

}

闪烁LED指示灯

请参阅Adafruit NeoPixel示例。

GPS计算功能

计算方位角

// Calculate the Azimuth double azimuth(double lat_a, double lon_a, double lat_b, double lon_b) {

double d = 0;

lat_a = lat_a*PI/180;

lon_a = lon_a*PI/180;

lat_b = lat_b*PI/180;

lon_b = lon_b*PI/180;

d = sin(lat_a)*sin(lat_b)+cos(lat_a)*cos(lat_b)*cos(lon_b-lon_a);

d = sqrt(1-d*d);

d = cos(lat_b)*sin(lon_b-lon_a)/d;

d = asin(d)*180/PI; return d;

}

计算LED时钟的时间,这也是车辆的方向

// Calculate the time on LED clock int led_time(double angle){

int flag = 0;

if (angle 《 0){

flag = 1;

}

angle = abs(angle);

double angle_remainder = fmod(angle, 30);

int angle_time = (int)angle/30;

if (angle_remainder 》= 15) {

angle_time = angle_time + 1;

}

if (flag == 1){

angle_time = 12 - angle_time;

}

return angle_time;

}

计算人与车辆之间的距离

// Calculate the Distance

double distance(double lat_a, double lon_a, double lat_b, double lon_b) {

double EARTH_RADIUS = 6378137.0; double radLat1 = (lat_a * PI / 180.0);

double radLat2 = (lat_b * PI / 180.0);

double a = radLat1 - radLat2;

double b = (lon_a - lon_b) * PI / 180.0; double s = 2 * asin(sqrt(pow(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * pow(sin(b / 2), 2)));

s = s * EARTH_RADIUS / 10000000;

return s;

}

LED显示功能

点亮LED显示它开始导航的圆圈

// LED ring lighting one by one shows that the navigation begins void colorWipe(uint32_t c, uint8_t wait) {

for(uint16_t i=0; i strip.setPixelColor(i, c);

strip.show();

delay(wait);

}

}

根据距离获取LED频率

// Get LED Frequency int frequency(double distance){

int f = (int)distance * 20;

return f;

}

闪烁指示汽车方向的特定LED

//Display on LED

主要

strip.clear();

strip.show();

delay(frequency(car_person_distance));

// delay(500);

strip.setPixelColor(angle_time, strip.Color(0, 0, 255));

strip.show();

delay(frequency(car_person_distance));

// delay(500); //Disable LED if (button_flag == 1 && car_person_distance 《 5.0){

button_flag = 0;

led_flag = 1;

strip.clear();

strip.show();

} #include Adafruit_GPS.h

#include Adafruit_NeoPixel.h

#include HardwareSerial.h

#include Button.h

#include math.h #define Neopixel_LED_PIN 6

#define Neopixel_LED_NUM 12

#define Button_Lock_PIN 13

#define Button_Unlock_PIN 12

#define GPSSerial Serial1

#define GPSECHO false

步骤6:在面包板上调试

gps

gps

gps

步骤7:硬件组装

gps

gps

gps

gps

gps

步骤8:Adobe Illustrator中的电子设备外壳设计

gps

步骤9:纸板原型

gps

gps

此步骤用于确认外壳尺寸和每个型号,确保盒子尺寸,按钮位置和LED位置适合组装的电子元件。

步骤10:桦木胶合板原型

gps

gps

这是最初的原型。最后将一个用于插入充电器的方孔添加到其中一个部件中。

步骤11:最终装配原型

gps

gps

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分