Kazalo:
- 1. korak: Skica papirja
- 2. korak: Seznam strojne opreme
- 3. korak: Oblikovanje vezja
- 4. korak: Povezava strojne opreme
- 5. korak: Oblikovanje programske opreme
- 6. korak: Odpravljanje napak na plošči
- 7. korak: Sestavljanje strojne opreme
- 8. korak: Oblikovanje ohišja elektronike v Adobe Illustratorju
- 9. korak: Prototip iz kartona
- 10. korak: Prototip vezanega lesa iz breze
- 11. korak: Prototip končne montaže
Video: FinduCar: pametni avtomobilski ključ, ki ljudi vodi do parkiranega avtomobila: 11 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Za rešitev zgornjih težav ta projekt predlaga razvoj pametnega avtomobilskega ključa, ki bi ljudi lahko usmeril tja, kjer so parkirali avto. In moj načrt je vključiti GPS v avtomobilski ključ. Za sledenje avtomobilu ni treba uporabljati aplikacije za pametni telefon, vse smernice bodo prikazane le na ključu avtomobila.
1. korak: Skica papirja
Ko ljudje pritisnejo gumb za zaklepanje avtomobila, se lahko podatki o lokaciji samodejno zabeležijo v mikrokrmilnik. Ko se ljudje začnejo premikati do avtomobila, zasveti druga LED, ki usmerja v položaj avtomobila, utripajoča frekvenca pa prikazuje razdaljo do avtomobila. Z lahkoto sledijo utripajoči LED in hitro najdejo avto.
2. korak: Seznam strojne opreme
To so komponente, uporabljene v tem projektu. Nekateri so iz kompletov delcev (plošča, gumb, glave), drugi so kupljeni na uradni spletni strani Adafruit (Adafruit Feather M0, Adafruit Ultimate GPS modul, Lpoly Battery in Coin Cell Battery) in Amazon (NeoPixel Ring - 12 RGB LED).
3. korak: Oblikovanje vezja
Neopixel_LED je povezan s kodo PIN 6 perja M0
Button_Unlock je povezan s kodo PIN 12 perja M0
Button_Lock je povezan s PIN -om 13 Feather M0
4. korak: Povezava strojne opreme
Spajite glave z Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. Zložite obe plošči skupaj. GPS FeatherWing se priključi neposredno na vašo ploščo Feather M0 brez več žic.
5. korak: Oblikovanje programske opreme
Preskusne komponente
Preberite POPRAVEK
void setup () {
Serial.println ("GPS odmevni test"); Serial.begin (9600); Serial1.begin (9600); // privzeti 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); }}
Utripajoči LED obroč
Glejte primere Adapruit NeoPixel.
Funkcije izračuna GPS
Izračunajte azimut
// Izračunaj azimut
dvojni azimut (dvojni lat_a, dvojni lon_a, dvojni lat_b, dvojni lon_b) {
dvojni 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; vrnitev d; }
Izračunajte čas na LED -uri, ki je tudi smer vozila
// Izračunajte čas LED ure
int led_time (dvojni kot) {
int zastava = 0; če (kot = 15) {kot_čas = kot_čas + +1; } if (flag == 1) {angle_time = 12 - angle_time; } povratni kot_čas; }
Izračunajte razdaljo med osebo in njenim vozilom
// Izračunajte razdaljo
dvojna razdalja (dvojni lat_a, dvojni lon_a, dvojni lat_b, dvojni lon_b) {
dvojni EARTH_RADIUS = 6378137,0; dvojni radLat1 = (lat_a * PI / 180,0); dvojni radLat2 = (lat_b * PI / 180.0); dvojni a = radLat1 - radLat2; dvojni b = (lon_a - lon_b) * PI / 180,0; dvojno s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; vrnitev s; }
Funkcije LED zaslona
Prižgite LED v krogu, ki kaže, da se začne krmariti
// LED osvetlitev obroča ena za drugo kaže, da se navigacija začne
void colorWipe (uint32_t c, uint8_t čakanje) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); zakasnitev (čakanje);}}
Dobite frekvenco LED na podlagi razdalje
// Pridobite frekvenco LED
int frekvenca (dvojna razdalja) {
int f = (int) razdalja * 20; vrnitev f; }
Utripa določena LED, ki označuje smer avtomobila
// Zaslon na LED
strip.clear ();
strip.show (); zamuda (frekvenca (razdalja_oseb_oseb)); // zakasnitev (500); strip.setPixelColor (kot_časov, trak. Barva (0, 0, 255)); strip.show (); zamuda (frekvenca (razdalja_oseb_oseb)); // zakasnitev (500);
// Onemogoči LED
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Glavni
#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); Gumb button_lock (Button_Lock_PIN); Gumb button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t timer = millis (); dvojni car_lat, car_lon; dvojna razdalja med osebnimi in avtomobilskimi razdaljami; dvojni premik_smer; dvojni car_azimut; dvojni car_person_angle; int kot_časov;
void setup () {
Serial.begin (115200); // Serial1.begin (9600); GPS.začetek (9600); // privzeti NMEA GPS baud strip.begin (); // odkomentirajte to vrstico, da vklopite RMC (priporočeni minimum) in GGA (popravljeni podatki), vključno z nadmorsko višino GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Nastavite stopnjo posodobitve GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz hitrost posodobitve // Zahtevajte posodobitve o stanju antene, komentirajte, da molčite // GPS.sendCommand (PGCMD_ANTENNA); zamuda (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); // če je stavek prejet, lahko preverimo kontrolno vsoto, jo razčlenimo … if (GPS.newNMEAreceived ()) {// tukaj je težavno, če natisnemo stavek NMEA ali podatke // na koncu ne poslušamo in ujeti druge stavke! // zato bodite zelo previdni, če uporabljate OUTPUT_ALLDATA in poskušate natisniti podatke Serial.println (GPS.lastNMEA ()); // to tudi zastavico newNMEAreceived () nastavi na false, če (! GPS.parse (GPS.lastNMEA ())) // to tudi zastavico newNMEAreceived () postavi na false return; // ne moremo razčleniti stavka, v tem primeru bi morali počakati na drugega} // če se milis () ali časovnik ovije, ga ponastavimo, če (timer> millis ()) timer = millis (); if (millis () - timer> 2000) {timer = millis (); // ponastavimo časovnik Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serijski.tisk (GPS.sekunde, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("Datum:"); Serijski.tisk (GPS.dan, DEC); Serial.print ('/'); Serijski.tisk (GPS.mesec, DEC); Serial.print ("/20"); Serial.println (GPS. leto, DEC); Serial.print ("Popravi:"); Serial.print ((int) GPS.fix); Serial.print ("kakovost:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Lokacija:"); Serial.print (GPS. Latitude, 4); Serijski.tisk (GPS.lat); Serial.print (","); Serial.print (GPS. longitude, 4); Serial.println (GPS.lon); Serial.print ("Lokacija (v stopinjah, deluje z Google Zemljevidi):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Hitrost (vozli):"); Serial.println (GPS.speed); Serial.print ("Kot:"); Serial.println (GPS.angle); Serial.print ("Nadmorska višina:"); Serial.println (GPS.višina); Serial.print ("Sateliti:"); Serial.println ((int) GPS.sateliti); // Shranite GPS vozila, če (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // za odpravljanje napak Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Začnite iskati avto, če (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); // Izračunaj razdaljo // car_person_distance = distance (100.0005, 100.0005, 100.0, 100.0); // za odpravljanje napak Serial.println (car_person_distance); move_direction = GPS.angle; // Zabeležite smer premikanja (kot) // move_direction = 100.0; // Zapisovanje azimuta (kot) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimut (100.0005, 100.0005, 100.0, 100.0); // Izračunajte čas na LED uri car_person_angle = car_azimuth - move_direction; kot_čas = čas vodenja LED (avtomobilski_okotnik); // Prikaz na LED traku.clear (); strip.show (); // zakasnitev (frekvenca (car_person_distance)); zamuda (500); strip.setPixelColor (kot_časov, trak. Barva (0, 0, 255)); strip.show (); // zakasnitev (frekvenca (car_person_distance)); zamuda (500); // Onemogoči LED, če (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
6. korak: Odpravljanje napak na plošči
7. korak: Sestavljanje strojne opreme
8. korak: Oblikovanje ohišja elektronike v Adobe Illustratorju
9. korak: Prototip iz kartona
Ta korak se uporablja za potrditev velikosti ohišja in vsakega kosa modela, pri čemer se prepričajte, da velikost škatle, položaj gumba in položaj LED ustrezajo sestavljenim elektronskim komponentam.
10. korak: Prototip vezanega lesa iz breze
To je bil začetni prototip. Enemu izmed kosov je bila na koncu dodana kvadratna luknja za priključitev na polnilnik.
11. korak: Prototip končne montaže
Priporočena:
Opozorilo o vodi - naprava za reševanje vašega čolna: 5 korakov (s slikami)
Opozorilo o vodi - naprava za reševanje vašega čolna: Če ste lastnik čolna, obstaja trdno udobje, da čoln končno spravite na suho. Tam ne more potoniti. Povsod drugje se sooča z nenehno bitko, da bi premagala težnjo, da bi zdrsnila pod valove in izginila. Pozimi tukaj, na žalost
DIY pametni robotski sledilni avtomobilski kompleti za sledenje avtomobilski fotoobčutljivi: 7 korakov
DIY Pametni robotski sledilni kompleti za sledenje Avtomobilski fotoobčutljivi: Design by SINONING ROBOT Lahko kupite pri sledilnem robotu Car TheoryLM393 chip primerjata oba fotorezistorja, ko je na strani BELO ena stran LED fotorezistorja, se bo stran motorja takoj ustavila, na drugi strani motorja zavrtite, tako da
Pretvorite navaden USB -ključ v varen USB -ključ: 6 korakov
Navaden USB -ključ spremenite v varen USB -ključ: V tem navodilu se bomo naučili, kako spremeniti navaden USB -ključ v varen USB -ključ. Vse s standardnimi funkcijami sistema Windows 10, nič posebnega in nič dodatnega za nakup. Kaj potrebujete: pogon ali ključek USB Thumb. Toplo priporočam getti
Fedora klobuk, ki ga vodi WiFi (ESP8266 + WS2812b): 5 korakov (s slikami)
Fedora klobuk, ki ga vodi WiFi (ESP8266 + WS2812b): To je kul, lepo videti LED klobuk. Barvo in učinke LED lahko spremenite s svojim pametnim telefonom ali računalnikom. Poskušal sem biti čim preprostejši in cenejši. Ima tudi baterijo za ponovno polnjenje, tako da jo lahko vzamete s seboj! Thi
Naredite avtomobilski nosilec za pametni telefon v vrednosti 2 USD v 10 minutah: 6 korakov (s slikami)
Naredite avtomobilski nosilec za pametni telefon, vreden 2 USD, v 10 minutah: Ali se kdaj po trgovini sprehajate po prehodih v trgovini in iščete ravno pravo stvar za držanje telefona/GPS/mobilne naprave med vožnjo? Teh je na trgu na tone, vendar mi nikoli ni uspelo najti takega, ki bi deloval v mojem nenavadnem