Obsah:

FinduCar: Chytrý klíč od auta, který vede lidi k místu, kde je zaparkované auto: 11 kroků (s obrázky)
FinduCar: Chytrý klíč od auta, který vede lidi k místu, kde je zaparkované auto: 11 kroků (s obrázky)

Video: FinduCar: Chytrý klíč od auta, který vede lidi k místu, kde je zaparkované auto: 11 kroků (s obrázky)

Video: FinduCar: Chytrý klíč od auta, který vede lidi k místu, kde je zaparkované auto: 11 kroků (s obrázky)
Video: Веселые ребята (комедия, реж. Григорий Александров, 1934 г.) 2024, Červenec
Anonim
FinduCar: chytrý klíč od auta, který vede lidi tam, kde je zaparkované auto
FinduCar: chytrý klíč od auta, který vede lidi tam, kde je zaparkované auto

Aby bylo možné vyřešit výše uvedené problémy, tento projekt navrhuje vyvinout inteligentní klíč od auta, který by mohl nasměrovat lidi tam, kde zaparkovali auto. A můj plán je integrovat GPS do klíče od auta. Ke sledování vozu není nutné používat aplikaci pro chytré telefony, veškeré pokyny se zobrazí pouze na klíči od auta.

Krok 1: Skica papíru

Papírová skica
Papírová skica

Když lidé zamknou auto stisknutím tlačítka, mohou být informace o poloze automaticky zaznamenány do mikrokontroléru. Když pak lidé začnou navigovat k autu, rozsvítí se různé LED diody, aby nasměrovaly do polohy auta a frekvence blikání ukazuje vzdálenost k vozu. Mohou snadno sledovat blikající LED a rychle najít auto.

Krok 2: Seznam hardwaru

Seznam hardwaru
Seznam hardwaru

Toto jsou součásti použité v tomto projektu. Některé jsou ze souprav částic (prkénko, tlačítko, záhlaví), jiné jsou zakoupeny na oficiálních stránkách Adafruit (Adafruit Feather M0, modul Adafruit Ultimate GPS, baterie Lpoly a knoflíková baterie) a Amazon (NeoPixel Ring - 12 RGB LED).

Krok 3: Návrh obvodu

Návrh obvodu
Návrh obvodu

Neopixel_LED je připojen k PIN 6 Feather M0

Button_Unlock je připojen k PIN 12 Feather M0

Button_Lock je připojen k PIN 13 Feather M0

Krok 4: Hardwarové připojení

Hardwarové připojení
Hardwarové připojení
Hardwarové připojení
Hardwarové připojení
Hardwarové připojení
Hardwarové připojení

Pájejte záhlaví pomocí Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. Skládejte dvě desky k sobě. GPS FeatherWing se zapojuje přímo do vaší desky Feather M0 bez dalších kabelů.

Krok 5: Softwarový design

Softwarový design
Softwarový design

Testujte součásti

Přečtěte si OPRAVU

neplatné nastavení () {

Serial.println („test ozvěny GPS“); Serial.begin (9600); Serial1.begin (9600); // výchozí přenosová rychlost NMEA GPS}

prázdná smyčka () {

if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}

Blikající LED kroužek

Viz příklady Adafruit NeoPixel.

Funkce výpočtu GPS

Vypočítejte Azimut

// Vypočítejte azimut

dvojitý azimut (double lat_a, double lon_a, double lat_b, double lon_b) {

dvojité 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; návrat d; }

Vypočítejte čas na LED hodinách, což je také směr vozidla

// Vypočítejte čas na LED hodinách

int led_time (dvojitý úhel) {

int vlajka = 0; if (angle = 15) {angle_time = angle_time + 1; } if (flag == 1) {angle_time = 12 - angle_time; } return angle_time; }

Vypočítejte vzdálenost mezi osobou a jejím vozidlem

// Vypočítejte vzdálenost

dvojnásobná vzdálenost (double lat_a, double lon_a, double lat_b, double lon_b) {

dvojitý 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 * ZEMĚ RADIUS / 10000000; návrat s; }

Funkce LED displeje

Rozsviťte diody LED v kruhu, což ukazuje, že začne navigovat

// LED kruhové osvětlení jeden po druhém ukazuje, že navigace začíná

void colorWipe (uint32_t c, uint8_t počkejte) {

for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}

Získejte frekvenci LED na základě vzdálenosti

// Získejte frekvenci LED

int frekvence (dvojnásobná vzdálenost) {

int f = (int) vzdálenost * 20; návrat f; }

Mrkněte na určitou LED indikující směr auta

// Zobrazení na LED

strip.clear ();

strip.show (); zpoždění (frekvence (car_person_distance)); // zpoždění (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); zpoždění (frekvence (car_person_distance)); // zpoždění (500);

// Zakázat LED

if (button_flag == 1 && car_person_distance <5,0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }

Hlavní

#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

Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel strip = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Tlačítko button_lock (Button_Lock_PIN); Tlačítko button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t časovač = milis (); double car_lat, car_lon; double car_person_distance; double move_direction; double car_azimuth; dvojitý car_person_angle; int úhel_času;

neplatné nastavení () {

Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // výchozí NMEA GPS baud strip.begin (); // odkomentováním tohoto řádku zapnete RMC (doporučené minimum) a GGA (opravná data) včetně nadmořské výšky GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Nastavení rychlosti aktualizace GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // Rychlost aktualizace 1 Hz // Vyžádejte si aktualizace stavu antény, přidejte komentář, abyste mlčeli // GPS.sendCommand (PGCMD_ANTENNA); zpoždění (1000);}

void loop () {// if (Serial.available ()) {

// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); if (GPSECHO) if (c) Serial.print (c); // pokud je přijata věta, můžeme zkontrolovat kontrolní součet, analyzovat ji … pokud (GPS.newNMEAreceived ()) {// ošemetná věc je, když vytiskneme větu NMEA nebo data // nakonec neposloucháme a chytání dalších vět! // proto buďte velmi opatrní, pokud používáte OUTPUT_ALLDATA a pokoušíte se vytisknout data Serial.println (GPS.lastNMEA ()); // tím se také nastaví příznak newNMEAreceived () na false if (! GPS.parse (GPS.lastNMEA ())) // // tím se také nastaví příznak newNMEAreceived () na false return; // nemůžeme analyzovat větu, v takovém případě bychom měli počkat na další} // pokud se milis () nebo časovač zalomí, resetujeme jej, pokud (časovač> millis ()) timer = millis (); if (millis () - timer> 2000) {timer = millis (); // reset časovače Serial.print ("\ nČas:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.sekundy, DEC); Serial.print ('.'); Serial.println (GPS.millisekundy); Serial.print („Datum:“); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.měsíc, DEC); Serial.print ("/20"); Serial.println (GPS.year, DEC); Serial.print ("Oprava:"); Serial.print ((int) GPS.fix); Serial.print ("kvalita:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Location:"); Serial.print (GPS.latitude, 4); Serial.print (GPS.lat); Serial.print (","); Serial.print (GPS.longitude, 4); Serial.println (GPS.lon); Serial.print ("Poloha (ve stupních, funguje s Mapami Google):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Rychlost (uzly):"); Serial.println (GPS.speed); Serial.print ("Úhel:"); Serial.println (GPS.angle); Serial.print ("Nadmořská výška:"); Serial.println (GPS.altitude); Serial.print ("Satelity:"); Serial.println ((int) GPS.satelity); // Uložte GPS vozidla, pokud (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // pro ladění Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Začněte hledat auto if (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_flag = 0; } if (button_flag == 1) {car_person_distance = distance (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Vypočítejte vzdálenost // car_person_distance = vzdálenost (100 0005, 100 0005, 100,0, 100,0); // pro ladění Serial.println (car_person_distance); move_direction = GPS.angle; // Zaznamenejte směr pohybu (úhel) // move_direction = 100,0; // Zaznamenejte azimut (úhel) car_azimuth = azimut (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimut (100 0005, 100 0005, 100,0, 100,0); // Vypočítejte čas na LED hodinách car_person_angle = car_azimuth - move_direction; angle_time = led_time (car_person_angle); // Zobrazení na LED pásku.clear (); strip.show (); // zpoždění (frekvence (car_person_distance)); zpoždění (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); // zpoždění (frekvence (car_person_distance)); zpoždění (500); // Vypněte LED, pokud (button_flag == 1 && car_person_distance <5,0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}

Krok 6: Ladění na Breadboardu

Ladění na Breadboardu
Ladění na Breadboardu
Ladění na Breadboardu
Ladění na Breadboardu
Ladění na Breadboardu
Ladění na Breadboardu

Krok 7: Montáž hardwaru

Sestava hardwaru
Sestava hardwaru
Sestava hardwaru
Sestava hardwaru
Sestava hardwaru
Sestava hardwaru

Krok 8: Návrh pouzdra elektroniky v aplikaci Adobe Illustrator

Návrh pouzdra elektroniky v aplikaci Adobe Illustrator
Návrh pouzdra elektroniky v aplikaci Adobe Illustrator

Krok 9: Kartonový prototyp

Kartonový prototyp
Kartonový prototyp
Kartonový prototyp
Kartonový prototyp

Tento krok slouží k potvrzení velikosti pouzdra a každého kusu modelu, přičemž se ujistěte, že velikost krabice, poloha tlačítka a poloha LED odpovídají sestaveným elektronickým součástem.

Krok 10: Prototyp březové překližky

Prototyp březové překližky
Prototyp březové překližky
Prototyp březové překližky
Prototyp březové překližky

Toto byl původní prototyp. K jednomu z kusů byl nakonec přidán čtvercový otvor pro připojení k nabíječce.

Doporučuje: