Obsah:
- Krok 1: Skica papiera
- Krok 2: Zoznam hardvéru
- Krok 3: Návrh obvodu
- Krok 4: Hardvérové pripojenie
- Krok 5: Návrh softvéru
- Krok 6: Ladenie na Breadboard
- Krok 7: Zostava hardvéru
- Krok 8: Návrh krytu elektroniky v programe Adobe Illustrator
- Krok 9: Kartónový prototyp
- Krok 10: Prototyp brezovej preglejky
- Krok 11: Prototyp konečného zhromaždenia
Video: FinduCar: Kľúč inteligentného auta, ktorý ľudí zavedie na miesto, kde stojí auto: 11 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Aby sa vyriešili vyššie uvedené problémy, tento projekt navrhuje vyvinúť inteligentný kľúč od auta, ktorý by mohol ľudí nasmerovať tam, kde zaparkovali auto. A môj plán je integrovať GPS do kľúča od auta. Na sledovanie auta nie je potrebné používať aplikáciu pre smartfóny, všetky pokyny sa zobrazia iba na kľúči od auta.
Krok 1: Skica papiera
Keď ľudia stlačením tlačidla uzamknú auto, informácie o polohe sa môžu automaticky zaznamenať do mikrokontroléra. Potom, keď ľudia začnú navigovať k autu, rozsvietia sa rôzne LED diódy, aby nasmerovali do polohy auta a frekvencia blikania ukazuje vzdialenosť od auta. Môžu ľahko sledovať blikajúcu LED a rýchlo nájsť auto.
Krok 2: Zoznam hardvéru
Toto sú komponenty použité v tomto projekte. Niektoré sú zo súprav častíc (nepájivá doska, tlačidlo, záhlavia), iné sú zakúpené na oficiálnych webových stránkach spoločnosti Adafruit (Adafruit Feather M0, modul Adafruit Ultimate GPS, batéria Lpoly a gombíková batéria) a Amazon (prstenec NeoPixel - 12 RGB LED).
Krok 3: Návrh obvodu
Neopixel_LED je pripojený k PIN 6 zariadenia Feather M0
Button_Unlock je spojený s PIN 12 Feather M0
Button_Lock je pripojený k PIN 13 zariadenia Feather M0
Krok 4: Hardvérové pripojenie
Spájkujte záhlavia s perím Adafruit M0, Adafruit Ultimate GPS Featherwing. Zložte dve dosky dohromady. GPS FeatherWing sa pripája priamo k vašej doske Feather M0 bez ďalších káblov.
Krok 5: Návrh softvéru
Testujte komponenty
Prečítajte si OPRAVU
neplatné nastavenie () {
Serial.println („test ozveny GPS“); Serial.begin (9600); Serial1.begin (9600); // predvolená prenosová rýchlosť NMEA GPS}
prázdna slučka () {
if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Blikajúci LED krúžok
Pozrite si príklady Adafruit NeoPixel.
Funkcie výpočtu GPS
Vypočítajte azimut
// Vypočítajte 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 = asín (d)*180/PI; návrat d; }
Vypočítajte čas na LED hodinách, ktorým je zároveň smer vozidla
// Vypočítajte čas na LED hodinách
int led_time (dvojitý uhol) {
int príznak = 0; if (uhol = 15) {angle_time = uhol_času + 1; } if (flag == 1) {angle_time = 12 - angle_time; } uhol uhla návratu; }
Vypočítajte vzdialenosť medzi osobou a jej vozidlom
// Vypočítajte vzdialenosť
dvojnásobná vzdialenosť (double lat_a, double lon_a, double lat_b, double lon_b) {
dvojitý EARTH_RADIUS = 6378137,0; double radLat1 = (lat_a * PI / 180,0); dvojitý radLat2 = (lat_b * PI / 180,0); double a = radLat1 - radLat2; dvojité 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 * ZEMNÝ ROZSAH / 10000000; návrat s; }
Funkcie LED displeja
Rozsvieťte diódy LED v kruhu a ukážte, že sa začína navigovať
// LED kruhové osvetlenie jeden po druhom ukazuje, že navigácia sa začína
void colorWipe (uint32_t c, uint8_t počkajte) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}
Získajte frekvenciu LED na základe vzdialenosti
// Získajte frekvenciu LED
vnútorná frekvencia (dvojnásobná vzdialenosť) {
int f = (int) vzdialenosť * 20; návrat f; }
Blikajte určitou LED diódou indikujúcou smer auta
// Displej na LED
strip.clear ();
strip.show (); oneskorenie (frekvencia (car_person_distance)); // zdržanie (500); strip.setPixelColor (uhol_času, strip. Color (0, 0, 255)); strip.show (); oneskorenie (frekvencia (car_person_distance)); // zdržanie (500);
// Vypnite 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čidlo button_lock (Button_Lock_PIN); Tlačidlo button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t časovač = milis (); dvojitý car_lat, car_lon; dvojité auto_osoba_vzdialenosť; double move_direction; dvojité auto_azimuth; dvojitý car_person_angle; int uhol_cas;
neplatné nastavenie () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // default NMEA GPS baud strip.begin (); // odkomentovaním tohto riadka zapnete RMC (odporúčané minimum) a GGA (opravné údaje) vrátane nadmorskej výšky GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Nastavenie rýchlosti aktualizácie GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // Frekvencia aktualizácie 1 Hz // Žiadosť o aktualizáciu stavu antény, komentáre, aby ste boli ticho // GPS.sendCommand (PGCMD_ANTENNA); oneskorenie (1 000);}
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); // ak je prijatá veta, môžeme skontrolovať kontrolný súčet, analyzovať ju … ak (GPS.newNMEAreceived ()) {// zložitá vec je, ak vytlačíme vetu NMEA alebo údaje // nakoniec nepočúvame a chytanie ďalších viet! // preto buďte veľmi opatrní, ak používate OUTPUT_ALLDATA a pokúšate sa vytlačiť údaje Serial.println (GPS.lastNMEA ()); // tým sa tiež nastaví príznak newNMEAreceived () na false if (! GPS.parse (GPS.lastNMEA ())) // // tým sa tiež nastaví príznak newNMEAreceived () na false return; // nemôžeme analyzovať vetu, v takom prípade by sme mali počkať na ďalšiu} // ak sa milis () alebo časovač zalomí, resetujeme ho, ak (časovač> millis ()) timer = millis (); if (millis () - timer> 2000) {timer = millis (); // reset časovača Serial.print ("\ nČas:"); Serial.print (GPS.hodina, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.sekundy, DEC); Serial.print ('.'); Serial.println (GPS.millisekundy); Serial.print („Dátum:“); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.mesiac, DEC); Serial.print ("/20"); Serial.println (GPS.rok, DEC); Serial.print ("Oprava:"); Serial.print ((int) GPS.fix); Serial.print ("kvalita:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Poloha:"); Serial.print (GPS.latitude, 4); Serial.print (GPS.lat); Serial.print (","); Serial.print (GPS.longitude, 4); Serial.println (GPS.lon); Serial.print ("Poloha (v stupňoch, funguje s Mapami Google):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Rýchlosť (uzly):"); Serial.println (GPS.speed); Serial.print ("Uhol:"); Serial.println (GPS.angle); Serial.print ("Nadmorská výška:"); Serial.println (GPS.altitude); Serial.print („Satelity:“); Serial.println ((int) GPS.satelity); // Uložte GPS vozidla, ak (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // pre ladenie Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Začnite hľadať auto, ak (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čítajte vzdialenosť // car_person_distance = vzdialenosť (100 0005, 100 0005, 100,0, 100,0); // pre ladenie Serial.println (car_person_distance); move_direction = GPS.angle; // Zaznamenajte smer pohybu (uhol) // move_direction = 100,0; // Zaznamenajte azimut (uhol) car_azimuth = azimut (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimut (100 0005, 100 0005, 100,0, 100,0); // Vypočítajte čas na LED hodinách car_person_angle = car_azimuth - move_direction; angle_time = led_time (car_person_angle); // Zobrazenie na páse LED.clear (); strip.show (); // oneskorenie (frekvencia (car_person_distance)); oneskorenie (500); strip.setPixelColor (uhol_času, strip. Color (0, 0, 255)); strip.show (); // oneskorenie (frekvencia (car_person_distance)); oneskorenie (500); // Vypnite LED, ak (button_flag == 1 && car_person_distance <5,0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
Krok 6: Ladenie na Breadboard
Krok 7: Zostava hardvéru
Krok 8: Návrh krytu elektroniky v programe Adobe Illustrator
Krok 9: Kartónový prototyp
Tento krok sa používa na potvrdenie veľkosti puzdra a každého kusu modelu, pričom sa uistite, že veľkosť škatule, poloha tlačidiel a poloha LED zodpovedajú zostaveným elektronickým komponentom.
Krok 10: Prototyp brezovej preglejky
Toto bol prvotný prototyp. K jednému z dielov bol nakoniec pridaný štvorcový otvor na zapojenie do nabíjačky.
Krok 11: Prototyp konečného zhromaždenia
Odporúča:
Inteligentný domový zvonček Raspberry Pi, ktorý dokáže detekovať ľudí, autá a pod .: 5 krokov
Inteligentný zvonček Raspberry Pi DIY, ktorý dokáže detekovať ľudí, autá a pod.: Tento dizajn s tematikou steampunku sa integruje s domácim asistentom a naším viacpriestorovým audio systémom, aby komunikoval so zvyškom nášho inteligentného domu pre domácich majstrov. Namiesto kúpy zvončeka (alebo Nest, alebo jeden z ďalších konkurentov) Postavil som si vlastnú inteligentnú bránu
Nové! Podvozok inteligentného robota do auta od serva FUTABA 3003 SINONING: 3 kroky
Novinka Car Riadenie podvozku Smart Robot od Servo FUTABA 3003 SINONING: Dizajn a výroba od SINONING RO BOT Toto je inteligentný podvozok do auta, môžete naň nainštalovať dosku plošných spojov, napríklad Arduino, a napísať kód, stane sa robotickým autom. chcete, môžete si kúpiť u podvozku robota riadenia
Premeňte obyčajný USB kľúč na bezpečný USB kľúč: 6 krokov
Premeňte obyčajný USB kľúč na bezpečný USB kľúč: V tomto návode sa naučíme, ako premeniť obyčajný USB kľúč na bezpečný USB kľúč. Všetko so štandardnými funkciami systému Windows 10, nič špeciálne a nič extra na nákup. Čo potrebujete: USB flash disk alebo kľúč. Vrelo odporúčam
Ovládanie auta Arduino Bluetooth do auta 4 x 4: 9 krokov (s obrázkami)
Ovládanie auta Arduino Bluetooth do auta 4 X 4: Kroky aplikácie projektu: 1. Nainštalovať “ Arduino Bluetooth ovládanie auta ” Odkaz z nižšie uvedeného odkazu: https://play.google.com/store/apps/details?id=com.mtm.car22&hl=tr2. Stiahnite si schému zapojenia, kroky izolácie. A Arduino.ino
Naozaj jednoduchý/ľahký/nekomplikovaný spôsob, ako prinútiť ľudí/ľudí/zvieratá/roboty, aby vyzerali, že majú skutočne chladnú/jasnú tepelnú víziu (farba podľa vášho výberu) pomocou GIMP: 4 kroky
Naozaj jednoduchý/ľahký/nekomplikovaný spôsob, ako prinútiť ľudí/ľudí/zvieratá/roboty, aby vyzerali, že majú skutočne chladnú/jasnú tepelnú víziu (farba podľa vášho výberu) pomocou GIMP: Prečítajte si … názov