Obsah:
- Krok 1: Skica papíru
- Krok 2: Seznam hardwaru
- Krok 3: Návrh obvodu
- Krok 4: Hardwarové připojení
- Krok 5: Softwarový design
- Krok 6: Ladění na Breadboardu
- Krok 7: Montáž hardwaru
- Krok 8: Návrh pouzdra elektroniky v aplikaci Adobe Illustrator
- Krok 9: Kartonový prototyp
- Krok 10: Prototyp březové překližky
Video: FinduCar: Chytrý klíč od auta, který vede lidi k místu, kde je zaparkované auto: 11 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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
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
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
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í
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
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
Krok 7: Montáž hardwaru
Krok 8: Návrh pouzdra elektroniky v aplikaci Adobe Illustrator
Krok 9: 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
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:
Inteligentní zvonek Raspberry Pi DIY, který dokáže detekovat lidi, auta atd.: 5 kroků
Inteligentní zvonek Raspberry Pi DIY, který dokáže detekovat lidi, auta atd.: Tento design s tematikou steampunku se integruje s domácím asistentem a naším vícepokojovým audio systémem, aby komunikoval se zbytkem našeho chytrého domu pro kutily. Nest, nebo jeden z dalších konkurentů) Postavil jsem vlastní inteligentní dveřní
ParaMouse počítačová myš pro paralyzované lidi: 5 kroků (s obrázky)
ParaMouse počítačová myš pro paralyzované lidi: Dobrý den, v tomto tutoriálu popíšu, jak postavit počítačovou myš pro zdravotně postižené, paralyzované nebo čtyřnásobné lidi. Toto konkrétní zařízení se snadno staví a má velmi nízké náklady, pouze malý šroubovák a řezací nůž být více než dost pro
Plachá maska, která se vypne, když vidí lidi: 9 kroků (s obrázky)
Plachá maska, která se vypne, když vidí lidi: Je smutné, že kvůli Covid -19 musíme nosit obličejové masky. Není to příliš příjemný zážitek, je z vás horko, pot, nervozita a samozřejmě těžší dýchání. Existují žíznivé časy, kdy naléháte na odstranění masky, ale bojíte se to udělat. Co já
Proměňte obyčejný USB klíč na bezpečný USB klíč: 6 kroků
Proměňte obyčejný USB flash disk na bezpečný USB flash disk: V tomto Instructable se naučíme, jak z obyčejného USB flash disku udělat bezpečný USB flash disk. Vše se standardními funkcemi Windows 10, nic zvláštního a nic extra k zakoupení. Co potřebujete: USB flash disk nebo stick. Vřele doporučuji
Opravdu jednoduchý/snadný/nekomplikovaný způsob, jak přimět lidi/lidi/zvířata/roboty, aby vypadali, jako by měli opravdu chladné/jasné tepelné vidění (barva dle vašeho výběru) pomocí GIMP: 4 kroky
Opravdu jednoduchý/snadný/nekomplikovaný způsob, jak přimět lidi/lidi/zvířata/roboty, aby vypadali, jako by měli opravdu chladnou/jasnou tepelnou vizi (barva dle vašeho výběru) pomocí GIMP: Přečtěte si … název