Sadržaj:
- Korak 1: Skica papira
- Korak 2: Lista hardvera
- Korak 3: Dizajn kola
- Korak 4: Povezivanje hardvera
- Korak 5: Dizajn softvera
- Korak 6: Otklonite greške na Breadboard -u
- Korak 7: Sklapanje hardvera
- Korak 8: Dizajn kućišta elektronike u Adobe Illustratoru
- Korak 9: Prototip kartona
- Korak 10: Prototip šperploče od breze
Video: FinduCar: pametan ključ automobila koji vodi ljude do mjesta parkiranja automobila: 11 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Kako bi se riješili gore navedeni problemi, ovaj projekt predlaže razvoj pametnog ključa za automobil koji bi ljude mogao usmjeriti do mjesta gdje su parkirali automobil. I moj plan je integrirati GPS u ključ od automobila. Nema potrebe koristiti aplikaciju pametnog telefona za praćenje automobila, sve će se smjernice prikazati samo na ključu automobila.
Korak 1: Skica papira
Kada ljudi pritisnu dugme za zaključavanje automobila, informacije o lokaciji mogu se automatski snimiti u mikrokontroler. Zatim, kada ljudi počnu navigirati do automobila, druga LED lampica svijetli kako bi usmjerila prema položaju automobila, a frekvencija treptanja prikazuje udaljenost do automobila. Lako mogu pratiti trepćuću LED diodu i brzo pronaći automobil.
Korak 2: Lista hardvera
Ovo su komponente korištene u ovom projektu. Neki su iz kompleta čestica (ploča, gumb, zaglavlja), drugi su kupljeni na službenoj web stranici Adafruit (Adafruit Feather M0, Adafruit Ultimate GPS modul, Lpoly baterija i baterija u obliku kovanice) i Amazon (NeoPixel Ring - 12 RGB LED).
Korak 3: Dizajn kola
Neopixel_LED je povezan s PIN -om 6 perja M0
Button_Unlock je povezan sa PIN -om 12 perja M0
Button_Lock je povezan sa PIN -om 13 perja M0
Korak 4: Povezivanje hardvera
Lemljenje zaglavlja s Adafruit M0 perjem, Adafruit Ultimate GPS Featherwing. Složite dvije ploče zajedno. GPS FeatherWing se priključuje direktno na vašu ploču Feather M0 bez ikakvih žica.
Korak 5: Dizajn softvera
Komponente testa
Pročitajte FIX
void setup () {
Serial.println ("GPS eho test"); Serial.begin (9600); Serial1.begin (9600); // Zadani NMEA GPS prijenos u bazu}
void loop () {{100} {101}
if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Trepćući LED prsten
Pogledajte primjere Adapruit NeoPixel.
Funkcije proračuna GPS -a
Izračunajte azimut
// Izračunajte azimut
dupli azimut (dupli lat_a, dupli lon_a, dupli lat_b, dupli lon_b) {
dvostruki 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; }
Izračunajte vrijeme na LED satu, što je ujedno i smjer kretanja vozila
// Izračunajte vrijeme na LED satu
int led_time (dvostruki ugao) {
int flag = 0; if (angle = 15) {angle_time = angle_time + 1; } if (flag == 1) {angle_time = 12 - angle_time; } return angle_time; }
Izračunajte udaljenost između osobe i njenog vozila
// Izračunajte udaljenost
dvostruka udaljenost (dvostruka širina_a, dvostruka dužina_a, dvostruka širina_b, dvostruka dužina_b) {
dvostruki EARTH_RADIUS = 6378137.0; dvostruki radLat1 = (lat_a * PI / 180.0); dvostruki radLat2 = (lat_b * PI / 180.0); double a = radLat1 - radLat2; dvostruki b = (lon_a - lon_b) * PI / 180,0; dvostruki 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; }
Funkcije LED ekrana
Upalite LED diode u krugu pokazujući da počinje navigaciju
// LED svjetlo jedno po jedno pokazuje da navigacija počinje
void colorWipe (uint32_t c, uint8_t čekanje) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}
Dobijte LED frekvenciju na osnovu udaljenosti
// Dobijte LED frekvenciju
int frekvencija (dvostruka udaljenost) {
int f = (int) udaljenost * 20; return f; }
Treperi određena LED dioda koja pokazuje smjer automobila
// Prikaz na LED -u
strip.clear ();
strip.show (); kašnjenje (frekvencija (car_person_distance)); // kašnjenje (500); strip.setPixelColor (ugao_vreme, strip. Color (0, 0, 255)); strip.show (); kašnjenje (frekvencija (car_person_distance)); // kašnjenje (500);
// Onemogući LED
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Main
#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); Taster button_lock (Button_Lock_PIN); Taster button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t timer = millis (); dvostruki car_lat, car_lon; dvostruka car_person_distance; dvostruki move_direction; dvostruki car_azimut; dvostruki car_person_angle; int angle_time;
void setup () {
Serial.begin (115200); // Serial1.begin (9600); GPS.početak (9600); // zadani NMEA GPS baud strip.begin (); // raskomentirajte ovu liniju da biste uključili RMC (preporučeni minimum) i GGA (fiksni podaci) uključujući nadmorsku visinu GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Postavljanje brzine ažuriranja GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // Brzina ažuriranja od 1 Hz // Zatražite ažuriranje statusa antene, komentirajte kako biste šutjeli // GPS.sendCommand (PGCMD_ANTENNA); kašnjenje (1000);}
void loop () {// if (Serial.available ()) {{100} {101}
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); if (GPSECHO) if (c) Serial.print (c); // ako je rečenica primljena, možemo provjeriti kontrolni zbroj, raščlaniti je … if (GPS.newNMEAreceived ()) {// ovo je škakljiva stvar ako ispišemo rečenicu NMEA ili podatke // na kraju ne slušamo i hvatanje drugih rečenica! // stoga budite vrlo oprezni ako koristite OUTPUT_ALLDATA i pokušate ispisati podatke Serial.println (GPS.lastNMEA ()); // ovo također postavlja oznaku newNMEAreceived () na false ako (! GPS.parse (GPS.lastNMEA ())) // ovo također postavlja oznaku newNMEAreceived () na false return; // ne možemo analizirati rečenicu, u tom slučaju trebamo samo čekati drugu} // ako millis () ili timer premotaju, jednostavno ćemo ga resetirati if (timer> millis ()) timer = millis (); if (millis () - timer> 2000) {timer = millis (); // resetiranje tajmera Serial.print ("\ nTime:"); Serijski.print (GPS.sat, DEC); Serial.print (':'); Serijski.print (GPS.minuta, DEC); Serial.print (':'); Serijski.print (GPS.sekunde, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("Datum:"); Serijski.print (GPS.dan, DEC); Serial.print ('/'); Serijski.print (GPS.mjesec, DEC); Serial.print ("/20"); Serijski.println (GPS.godina, DEC); Serial.print ("Popravi:"); Serial.print ((int) GPS.fix); Serial.print ("kvaliteta:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Lokacija:"); Serial.print (GPS.latitude, 4); Serijski.print (GPS.lat); Serial.print (","); Serial.print (GPS. Longitude, 4); Serial.println (GPS.lon); Serial.print ("Lokacija (u stepenima, radi sa Google mapama):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Brzina (čvorovi):"); Serial.println (GPS.speed); Serial.print ("Ugao:"); Serial.println (GPS.ugao); Serial.print ("Visina:"); Serial.println (GPS.visina); Serial.print ("Sateliti:"); Serial.println ((int) GPS.sateliti); // Spremanje GPS -a vozila if (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // za ispravljanje grešaka Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Počnite tražiti automobil ako (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čunajte udaljenost // car_person_distance = distance (100.0005, 100.0005, 100.0, 100.0); // za ispravljanje grešaka Serial.println (car_person_distance); move_direction = GPS.angle; // Snimite smjer kretanja (kut) // move_direction = 100.0; // Snimimo Azimut (kut) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimut (100.0005, 100.0005, 100.0, 100.0); // Izračunajte vrijeme na LED satu car_person_angle = car_azimuth - move_direction; angle_time = led_time (car_person_angle); // Prikaz na LED traci.clear (); strip.show (); // kašnjenje (frekvencija (car_person_distance)); kašnjenje (500); strip.setPixelColor (ugao_vreme, strip. Color (0, 0, 255)); strip.show (); // kašnjenje (frekvencija (car_person_distance)); kašnjenje (500); // Onemogući LED ako (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
Korak 6: Otklonite greške na Breadboard -u
Korak 7: Sklapanje hardvera
Korak 8: Dizajn kućišta elektronike u Adobe Illustratoru
Korak 9: Prototip kartona
Ovaj korak se koristi za potvrdu veličine kućišta i svakog komada modela, provjeravajući da li veličina kutije, položaj dugmeta i LED položaj odgovaraju montiranim elektroničkim komponentama.
Korak 10: Prototip šperploče od breze
Ovo je bio početni prototip. Konačna rupa za uključivanje u punjač konačno je dodana jednom od komada.
Preporučuje se:
Pametni sistem parkiranja zasnovan na IoT -u koji koristi NodeMCU ESP8266: 5 koraka
IoT sistem pametnog parkiranja koji koristi NodeMCU ESP8266: U današnje vrijeme pronalaženje parkinga u prometnim područjima vrlo je teško i ne postoji sistem za dobijanje detalja o dostupnosti parkinga na mreži. Zamislite da na svom telefonu možete dobiti informacije o dostupnosti parkirnih mjesta, a nemate lutanje da provjerite
Sramežljiva maska koja se ugasi kad vidi ljude: 9 koraka (sa slikama)
Sramežljiva maska koja se ugasi kad vidi ljude: Tužno je što moramo nositi maske za lice zbog Covid -19. To iskustvo nije ugodno, čini vas vrućim, oznojenim, nervoznim i naravno teže disati. Postoje žedni trenuci kada tražite da uklonite masku, ali se plašite da to učinite. Šta ja
Šešir nije šešir - šešir za ljude koji zaista ne nose šešire, ali bi htjeli iskustvo šešira: 8 koraka
Šešir ne šešir - šešir za ljude koji zaista ne nose šešire, ali bi hteli iskustvo sa šeširom: Uvek sam želeo da mogu da budem šešir, ali nikada nisam pronašao šešir koji bi mi odgovarao. Ovaj " šešir nije šešir, " ili fascinator kako se zove, rješenje je gornjeg kora za moj problem sa šeširom u kojem bih mogao prisustvovati derbiju u Kentuckyju, u vakuumu
Pretvaranje bilo kojeg R/C automobila u Bluetooth aplikaciju za kontrolu R/C automobila: 9 koraka
Pretvaranje bilo kojeg R/C automobila u Bluetooth aplikaciju za upravljanje R/C automobilom: Ovaj projekt prikazuje korake za promjenu običnog automobila na daljinsko upravljanje u Bluetooth (BLE) upravljački automobil sa robotskom pločom Wombatics SAM01, aplikacijom Blynk i MIT App Inventor.The mnogi su jeftini RC automobili sa puno funkcija poput LED farova i
Uradi sam pametan Drone Follow Me Drone sa kamerom (baziran na Arduinu): 22 koraka (sa slikama)
Uradi sam pametan Drone Follow Me Drone sa kamerom (baziran na Arduinu): Dronovi su ovih dana vrlo popularne igračke i alati. Na tržištu možete pronaći profesionalne, pa čak i početne dronove i leteće sprave. Imam četiri drona (quadcopters i hexcopters), jer volim sve što leti, ali 200. let nije