Tartalomjegyzék:
- 1. lépés: Papírvázlat
- 2. lépés: Hardverlista
- 3. lépés: Áramkör tervezése
- 4. lépés: Hardvercsatlakozás
- 5. lépés: Szoftvertervezés
- 6. lépés: Hibakeresés a Breadboardon
- 7. lépés: A hardver összeszerelése
- 8. lépés: Elektronikai háztervezés az Adobe Illustrator programban
- 9. lépés: Karton prototípus
- 10. lépés: Nyír rétegelt lemez prototípus
Videó: FinduCar: intelligens autókulcs, amely elvezeti az embereket az autó parkolási helyéhez: 11 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
A fenti problémák megoldása érdekében ez a projekt egy intelligens autókulcs kifejlesztését javasolja, amely az embereket oda irányíthatja, ahol parkolt. És a tervem egy GPS beépítése az autó kulcsába. Nem kell az okostelefon alkalmazást használni az autó nyomon követéséhez, minden útmutatás csak az autó kulcsán jelenik meg.
1. lépés: Papírvázlat
Amikor az emberek megnyomják a gombot az autó lezárásához, a helyadatok automatikusan rögzíthetők a mikrokontrollerben. Ezután, amikor az emberek elkezdenek navigálni az autóhoz, a különböző LED -ek felgyulladnak, hogy az autó helyzetébe irányuljanak, és a villogás gyakorisága mutatja az autótól való távolságot. Könnyen követik a villogó LED -et, és gyorsan megtalálják az autót.
2. lépés: Hardverlista
Ezeket az összetevőket használják ebben a projektben. Néhány a részecske -készletekből (kenyérsütő, gomb, fejlécek) származik, másokat az Adafruit hivatalos webhelyéről (Adafruit Feather M0, Adafruit Ultimate GPS modul, Lpoly akkumulátor és gombelem) és az Amazon -tól (NeoPixel Ring - 12 RGB LED) vásárolnak.
3. lépés: Áramkör tervezése
A Neopixel_LED csatlakozik a Feather M0 PIN -kódjához
A Button_Unlock a Feather M0 12 -es PIN -kódjához van csatlakoztatva
A Button_Lock csatlakozik a Feather M0 PIN 13 -as PIN -kódjához
4. lépés: Hardvercsatlakozás
Forrasztja a fejléceket az Adafruit M0 Feather, az Adafruit Ultimate GPS Featherwing segítségével. Rakd össze a két táblát. A GPS FeatherWing vezeték nélkül csatlakoztatható a Feather M0 kártyához.
5. lépés: Szoftvertervezés
Tesztkomponensek
Olvassa el a FIX -et
void setup () {
Serial.println ("GPS visszhang teszt"); Sorozat.kezdet (9600); Sorozat1.kezdet (9600); // alapértelmezett NMEA GPS baud}
void loop () {
if (Serial.available ()) {char c = Serial.read (); Soros1.írás (c); } if (Serial1.available ()) {char c = Serial1.read (); Soros.írás (c); }}
Villogó LED gyűrű
Lásd az Adafruit NeoPixel példákat.
GPS számítási funkciók
Számítsa ki az azimutot
// Azimut kiszámítása
dupla azimut (dupla lat_a, dupla lon_a, dupla lat_b, dupla lon_b) {
kettős 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; visszatérés d; }
Számítsa ki az időt a LED óráján, ami egyben a jármű iránya is
// Számítsa ki az időt a LED -órán
int led_time (dupla szög) {
int zászló = 0; if (szög = 15) {szögidő = szögidő + 1; } if (zászló == 1) {szög_idő = 12 - szögidő; } visszatérési szög_idő; }
Számítsa ki a személy és a jármű közötti távolságot
// Számítsa ki a távolságot
kettős távolság (dupla lat_a, dupla lon_a, dupla lat_b, dupla lon_b) {
kettős FÖLD_RÁDIUS = 6378137,0; dupla radLat1 = (lat_a * PI / 180.0); dupla radLat2 = (lat_b * PI / 180.0); dupla a = radLat1 - radLat2; kettős b = (lon_a - lon_b) * PI / 180,0; kettős s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * FÖLD_RADIUS / 10000000; visszatérés s; }
LED kijelző funkciók
Gyújtson körbe LED -eket, jelezve, hogy elkezd navigálni
// A LED -es gyűrűk egyesével történő világítása azt jelzi, hogy a navigáció megkezdődik
void colorWipe (uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}
Szerezze meg a LED frekvenciáját a távolság alapján
// LED -frekvencia lekérése
int frekvencia (kettős távolság) {
int f = (int) távolság * 20; visszatérés f; }
Villogjon az a bizonyos LED, amely jelzi az autó irányát
// Kijelző LED -en
strip.clear ();
strip.show (); késleltetés (gyakoriság (autó_ember_táv)); // késleltetés (500); strip.setPixelColor (szögidő, szalag. Szín (0, 0, 255)); strip.show (); késleltetés (gyakoriság (autó_ember_táv)); // késleltetés (500);
// LED letiltása
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_zászló = 1; strip.clear (); strip.show (); }
Fő
#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 hamis
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel strip = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Button button_lock (Button_Lock_PIN); Button button_unlock (Button_Unlock_PIN); int gomb_zászló = 0; int led_zászló = 1; uint32_t timer = millis (); dupla autó_lat, autó_lon; dupla autó_ember_távolság; double move_direction; dupla car_azimuth; dupla autó_személy_szög; int szög_idő;
void setup () {
Sorozat.kezdet (115200); // Serial1.begin (9600); GPS.begin (9600); // alapértelmezett NMEA GPS baudsáv.begin (); // szüntesse meg a megjegyzést, ha be szeretné kapcsolni az RMC (ajánlott minimum) és a GGA (rögzített adatok) funkciót, beleértve a magasságbeli GPS.sendCommand parancsot (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Állítsa be a frissítési gyakoriságot GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz frissítési gyakoriság // Frissítés kérése az antenna állapotáról, megjegyzés a csendben // GPS.sendCommand (PGCMD_ANTENNA); késleltetés (1000);}
void loop () {// if (Serial.available ()) {
// char c = Sorozat.olvasás (); // Soros1.írás (c); //} // if (Serial1.available ()) {char c = GPS.read (); ha (GPSECHO) ha (c) Soros.nyomat (c); // ha egy mondat érkezik, akkor ellenőrizhetjük az ellenőrző összeget, elemezhetjük… ha (GPS.newNMEAreceived ()) {// itt bonyolult dolog, ha kinyomtatjuk az NMEA mondatot, vagy adatokat // végül nem hallgatunk, és más mondatok elkapása! // ezért legyen nagyon óvatos, ha OUTPUT_ALLDATA és trytng használatával nyomtat adatokat Serial.println (GPS.lastNMEA ()); // ez a newNMEAreceived () jelzőt is hamisra állítja, ha (! GPS.parse (GPS.lastNMEA ()))) // ez az newNMEAreceived () jelzőt is hamis visszatérésre állítja; // nem tudjuk elemezni a mondatot, ebben az esetben csak várni kell egy másikra. // if (millis () - időzítő> 2000) {timer = millis (); // az időzítő visszaállítása Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Soros.nyomtatás (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.milliszekundum); Serial.print ("Dátum:"); Soros.nyomtatás (GPS.nap, DEC); Serial.print ('/'); Soros.nyomtatás (GPS.hónap, DEC); Soros.nyomtatás ("/20"); Serial.println (GPS.év, DEC); Serial.print ("Javítás:"); Serial.print ((int) GPS.fix); Serial.print ("minőség:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Location:"); Soros.nyomtatás (GPS.szélesség, 4); Soros.nyomtatás (GPS.lat); Serial.print (","); Soros.nyomtatás (GPS.hosszúság, 4); Serial.println (GPS.lon); Serial.print ("Hely (fokokban, a Google Térképpel működik):"); Soros.nyomtatás (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Sebesség (csomó):"); Serial.println (GPS.sebesség); Serial.print ("Szög:"); Serial.println (GPS.szög); Serial.print ("Magasság:"); Serial.println (GPS.altitude); Serial.print ("Műholdak:"); Serial.println ((int) GPS.satellites); // Mentse el a jármű GPS -jét, ha (button_lock.read ()) {car_lat = GPS.latitudeDegrees; autó_lon = GPS.hosszúságDegrees; // debug Serial.print ("carLatitude:"); Sorozat.println (autó_lat); Serial.print ("carLongitude:"); Sorozat.println (autó_lon); } // Kezdje megtalálni az autót, ha (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_zászló = 0; } if (button_flag == 1) {car_person_distance = távolság (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // A távolság kiszámítása // autó_személy_távolság = távolság (100.0005, 100.0005, 100.0, 100.0); // hibakereséshez Serial.println (autó_személy_távolság); move_direction = GPS.angle; // A mozgásirány (szög) rögzítése // move_direction = 100.0; // Az azimut (szög) rögzítése car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimuth (100.0005, 100.0005, 100.0, 100.0); // Az idő kiszámítása a LED -es órán car_person_angle = car_azimuth - move_direction; szögidő = led_idő (autó_személyszög); // Megjelenítés LED szalagon.clear (); strip.show (); // késleltetés (gyakoriság (autó_ember_táv)); késleltetés (500); strip.setPixelColor (szögidő, szalag. Szín (0, 0, 255)); strip.show (); // késleltetés (gyakoriság (autó_ember_táv)); késleltetés (500); // A LED kikapcsolása, ha (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_zászló = 1; strip.clear (); strip.show (); }}} //}}}
6. lépés: Hibakeresés a Breadboardon
7. lépés: A hardver összeszerelése
8. lépés: Elektronikai háztervezés az Adobe Illustrator programban
9. lépés: Karton prototípus
Ezzel a lépéssel megerősítheti a ház méretét és a modell minden egyes darabját, ügyelve arra, hogy a doboz mérete, valamint a gomb helyzete és a LED helyzet illeszkedjen az összeszerelt elektronikus alkatrészekhez.
10. lépés: Nyír rétegelt lemez prototípus
Ez volt a kezdeti prototípus. Végül az egyik darabhoz négyzet alakú lyukat töltőt csatlakoztatni.
Ajánlott:
Raspberry Pi DIY intelligens ajtócsengő, amely képes észlelni embereket, autókat stb.: 5 lépés
Raspberry Pi DIY intelligens ajtócsengő, amely érzékeli az embereket, autókat stb. Fészket vagy a többi versenytársat) Én építettem saját intelligens ajtónkat
IoT -alapú intelligens parkolási rendszer a NodeMCU ESP8266 használatával: 5 lépés
IoT -alapú intelligens parkolási rendszer a NodeMCU ESP8266 használatával: Manapság nagyon nehéz megtalálni a parkolást a forgalmas területeken, és nincs olyan rendszer, amely a parkolási lehetőségek online elérhetőségét lekérné. Képzelje el, ha megkapja a parkolóhely elérhetőségét a telefonján, és nincs barangolása, hogy ellenőrizze a
Arduino parkolási asszisztens - parkolja le autóját a megfelelő helyre minden alkalommal: 5 lépés (képekkel)
Arduino parkolási asszisztens - parkolja le autóját a megfelelő helyre minden alkalommal: Ebben a projektben megmutatom, hogyan építhet saját parkolási asszisztenst egy Arudino segítségével. Ez a parkolási asszisztens méri az autójától való távolságot, és az LCD kijelző leolvasása és egy LED segítségével segít a megfelelő helyen parkolni
Félénk maszk, amely elhallgat, ha embereket lát: 9 lépés (képekkel)
Félénk maszk, amely elhallgat, ha embereket lát: Szomorú, hogy arcmaszkot kell viselnünk a Covid -19 miatt. Ez nem túl kellemes élmény, meleget, izzadtságot, idegességet és természetesen nehezebb levegőt venni. Vannak szomjas idők, amikor sürgeti a maszk eltávolítását, de fél attól. Amit én
Napelemes LED parkolási érzékelő: 8 lépés (képekkel)
Napenergiával működő LED parkolóérzékelő: A garázsunkban nincs nagy mélység, és szekrények vannak a végén, ami tovább csökkenti a mélységet. A feleségem autója elég rövid ahhoz, hogy elférjen, de közel van. Ezt az érzékelőt azért készítettem, hogy egyszerűsítsük a parkolási folyamatot, és biztosítsuk, hogy az autó megteljen