第1步:纸质素描
当人们按下按钮锁定汽车时,位置信息可以自动记录在微控制器中。然后,当人们开始导航到汽车时,不同的LED被点亮以指向汽车的位置,闪烁的频率显示到汽车的距离。他们可以轻松跟踪闪烁的LED并快速找到汽车。
第2步:硬件列表
这些是该项目中使用的组件。一些来自粒子套件(面包板,按钮,标题),其他来自Adafruit官方网站(Adafruit羽毛M0,Adafruit终极GPS模块,Lpoly电池和纽扣电池)和亚马逊(NeoPixel Ring - 12 RGB LED)。
步骤3:电路设计
Neopixel_LED连接到羽毛M0的PIN 6
Button_Unlock连接到羽毛M0的PIN 12
Button_Lock连接到羽毛M0的PIN 13
步骤4:硬件连接
使用Adafruit M0 Feather,Adafruit Ultimate GPS Featherwing焊接标题。将两块板堆叠在一起。 GPS FeatherWing可以直接插入您的羽毛M0板,无需任何电线。
步骤5:软件设计
测试组件
阅读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:在面包板上调试
步骤7:硬件组装
步骤8:Adobe Illustrator中的电子设备外壳设计
步骤9:纸板原型
此步骤用于确认外壳尺寸和每个型号,确保盒子尺寸,按钮位置和LED位置适合组装的电子元件。
步骤10:桦木胶合板原型
这是最初的原型。最后将一个用于插入充电器的方孔添加到其中一个部件中。
步骤11:最终装配原型
-
gps
+关注
关注
22文章
2882浏览量
166019 -
汽车钥匙
+关注
关注
1文章
24浏览量
11732
发布评论请先 登录
相关推荐
评论