Sisukord:
- Samm: paberi visand
- Samm: riistvara loend
- 3. samm: vooluahela kujundus
- Samm: riistvaraühendus
- Samm 5: Tarkvara projekteerimine
- 6. samm: silumine leivaplaadil
- 7. samm: riistvara kokkupanek
- 8. samm: elektroonika korpuse projekteerimine Adobe Illustratoris
- 9. samm: papist prototüüp
- 10. samm: kasevineeri prototüüp
Video: FinduCar: nutikas autovõti, mis juhib inimesi auto parkimiskohta: 11 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Ülaltoodud probleemide lahendamiseks tehakse selles projektis ettepanek välja töötada nutikas autovõti, mis suunaks inimesed sinna, kuhu nad auto parkisid. Ja minu plaan on integreerida GPS autovõtmesse. Auto jälgimiseks pole vaja nutitelefoni rakendust kasutada, kõik juhised kuvatakse lihtsalt autovõtmel.
Samm: paberi visand
Kui inimesed vajutavad auto lukustamiseks nuppu, võidakse asukohaandmed mikrokontrollerisse automaatselt salvestada. Siis, kui inimesed hakkavad auto juurde navigeerima, süttib eri LED, et suunata auto asendisse ja vilkuv sagedus näitab kaugust autoni. Nad saavad hõlpsalt vilkuvat LED -i jälgida ja auto kiiresti üles leida.
Samm: riistvara loend
Neid komponente kasutatakse selles projektis. Mõned on osakeste komplektidest (leivaplaat, nupp, päised), teised on ostetud Adafruit'i ametlikult veebisaidilt (Adafruit Feather M0, Adafruit Ultimate GPS -moodul, Lpoly aku ja mündipatarei aku) ja Amazonist (NeoPixel Ring - 12 RGB LED).
3. samm: vooluahela kujundus
Neopixel_LED on ühendatud Feather M0 PIN -koodiga 6
Button_Unlock on ühendatud Feather M0 PIN -koodiga 12
Button_Lock on ühendatud Feather M0 PIN -koodiga 13
Samm: riistvaraühendus
Jootke päised Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing abil. Pange kaks lauda kokku. GPS FeatherWing ühendatakse otse teie Feather M0 plaadiga ilma juhtmeteta.
Samm 5: Tarkvara projekteerimine
Katsekomponendid
Lugege parandust
tühine seadistus () {
Serial.println ("GPS kaja test"); Seriaalne algus (9600); Seriaal1.algus (9600); // vaikimisi NMEA GPS baud}
void loop () {
if (Serial.available ()) {char c = Serial.read (); Seeria1.kirjutage (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Vilkuv LED -rõngas
Vaadake Adafruit NeoPixeli näiteid.
GPS -i arvutusfunktsioonid
Arvutage asimuut
// Asimuudi arvutamine
topeltasimuut (kahekordne lat_a, kahekordne lon_a, kahekordne lat_b, kahekordne lon_b) {
kahekordne 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; tagasitulek d; }
Arvutage LED -kellalt aeg, mis on ka sõiduki suund
// Arvutage LED -kella aeg
int led_time (topeltnurk) {
int lipp = 0; kui (nurk = 15) {nurgaaeg = nurgaaeg + 1; } if (lipp == 1) {nurgaaeg = 12 - nurgaaeg; } tagasinurga_aeg; }
Arvutage inimese ja tema sõiduki vaheline kaugus
// Arvutage kaugus
topeltkaugus (kahekordne lat_a, kahekordne lon_a, kahekordne lat_b, kahekordne lon_b) {
kahekordne EARTH_RADIUS = 6378137,0; kahekordne radLat1 = (lat_a * PI / 180,0); kahekordne radLat2 = (lat_b * PI / 180,0); kahekordne a = radLat1 - radLat2; kahekordne b = (lon_a - lon_b) * PI / 180,0; topelt s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; tagasitulek s; }
LED -ekraani funktsioonid
Sütti ringis valgusdioodid, mis näitavad, et see hakkab navigeerima
// LED -rõnga valgustus ükshaaval näitab, et navigeerimine algab
void colorWipe (uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}
Hankige LED -sagedus kauguse alusel
// Hangi LED -sagedus
int sagedus (kahekordne vahemaa) {
int f = (int) kaugus * 20; tagasitulek f; }
Vilgub teatud LED, mis näitab auto suunda
// LED -ekraan
riba.selge ();
strip.show (); viivitus (sagedus (auto_isiku_distants)); // viivitus (500); strip.setPixelColor (nurga_aeg, riba. Värv (0, 0, 255)); strip.show (); viivitus (sagedus (auto_isiku_distants)); // viivitus (500);
// Keela LED
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_lipp = 1; riba.selge (); strip.show (); }
Peamine
#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 riba = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Nupp nuppude lukk (Button_Lock_PIN); Button button_unlock (Button_Unlock_PIN); int nupu_lipp = 0; int led_flag = 1; uint32_t taimer = millis (); kahekordne auto_lat, auto_lon; topelt auto_isiku_distants; double move_direction; topelt auto_asimuut; topelt auto_isiku_nurk; int nurga_aeg;
tühine seadistus () {
Seriaalne algus (115200); // Seriaal1.algus (9600); GPS.algus (9600); // vaikimisi NMEA GPS baudriba.begin (); // tühistage see rida, et lülitada sisse RMC (soovitatav miinimum) ja GGA (parandage andmed), sealhulgas kõrguse GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Määra värskenduskiirus GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz värskendussagedus // Taotlege värskendusi antenni oleku kohta, kommenteerige vaikimiseks // GPS.sendCommand (PGCMD_ANTENNA); viivitus (1000);}
void loop () {// if (Serial.available ()) {
// char c = Serial.read (); // Sarja1. Kirjutamine (c); //} // if (Serial1.available ()) {char c = GPS.read (); kui (GPSECHO) kui (c) jadatrükk (c); // kui lause on laekunud, saame kontrollida kontrollsummat, sõeluda seda… kui (GPS.newNMEAreceived ()) {// siin on keeruline asi, kui prindime NMEA lause või andmed // me lõpuks ei kuula ja püüda teisi lauseid! // seega olge väga ettevaatlik, kui kasutate andmete printimiseks OUTPUT_ALLDATA ja proovite Serial.println (GPS.lastNMEA ()); // see määrab ka lipu newNMEAreceived () väärtuseks vale, kui (! GPS.parse (GPS.lastNMEA ()))) // see määrab ka newNMEAreceived () lipu valele tagastamisele; // me ei suuda lauset parsida, sel juhul peaksime lihtsalt ootama teist} // kui millis () või taimer ümber keerleb, lähtestame selle lihtsalt, kui (timer> millis ()) timer = millis (); if (millis () - taimer> 2000) {taimer = millis (); // lähtesta taimer Serial.print ("\ nAeg:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Jadaprint (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.millisekundit); Serial.print ("Kuupäev:"); Serial.print (GPS.päev, DEC); Serial.print ('/'); Serial.print (GPS.kuu, DEC); Serial.print ("/20"); Serial.println (GPS.aasta, DEC); Serial.print ("Parandus:"); Serial.print ((int) GPS.fix); Serial.print ("kvaliteet:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Asukoht:"); Jadajälg (GPS.laiuskraad, 4); Serial.print (GPS.lat); Serial.print (","); Jadaprint (GPS.pikkus, 4); Serial.println (GPS.lon); Serial.print ("Asukoht (kraadides, töötab Google Mapsiga):"); Seeriaprint (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.pikkuskraadid, 4); Serial.print ("Kiirus (sõlmed):"); Serial.println (GPS.kiirus); Serial.print ("Nurk:"); Serial.println (GPS.nurk); Serial.print ("Kõrgus:"); Serial.println (GPS.altitude); Serial.print ("Satelliidid:"); Serial.println ((int) GPS.satellites); // Salvesta sõiduki GPS, kui (button_lock.read ()) {car_lat = GPS.latitudeDegrees; auto_lon = GPS.pikkuskraadid; // silumiseks Serial.print ("carLatitude:"); Serial.println (auto_lat); Serial.print ("carLongitude:"); Seeria.println (auto_lon); } // Alusta auto leidmist, kui (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_lipp = 0; } kui (nupu_lipp == 1) {auto_isiku_distants = kaugus (GPS.laiuskraadid, GPS.pikkuskraadid, auto_lat, auto_lon); // Arvuta vahemaa // auto_isik_kaugus = vahemaa (100.0005, 100.0005, 100.0, 100.0); // silumiseks Serial.println (auto_isiku_kaugus); move_direction = GPS.angle; // Salvesta liikumissuund (nurk) // move_direction = 100.0; // Salvestage asimuut (nurk) car_azimuth = asimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // auto_asimuut = asimuut (100 0005, 100 0005, 100,0, 100,0); // Arvuta aeg LED -kellal car_person_angle = car_azimuth - move_direction; nurga_aeg = led_aeg (auto_isiku_nurk); // Kuva LED -ribal.clear (); strip.show (); // viivitus (sagedus (auto_isiku_kaugus)); viivitus (500); strip.setPixelColor (nurga_aeg, riba. Värv (0, 0, 255)); strip.show (); // viivitus (sagedus (auto_isiku_kaugus)); viivitus (500); // Keela LED, kui (nupu_lipp == 1 && auto_isiku_kaugus <5,0) {nupu_lipp = 0; led_lipp = 1; riba.selge (); strip.show (); }}} //}}}
6. samm: silumine leivaplaadil
7. samm: riistvara kokkupanek
8. samm: elektroonika korpuse projekteerimine Adobe Illustratoris
9. samm: papist prototüüp
Seda sammu kasutatakse korpuse ja mudeli iga osa kinnitamiseks, veendudes, et karbi suurus, nuppude asukoht ja LED -asend sobivad kokku pandud elektroonikakomponentidega.
10. samm: kasevineeri prototüüp
See oli esialgne prototüüp. Lõpuks lisati ühele tükile ruudukujuline auk laadijaga ühendamiseks.
Soovitan:
Raspberry Pi DIY nutikas uksekell, mis tuvastab inimesi, autosid jne: 5 sammu
Raspberry Pi DIY nutikas uksekell, mis tuvastab inimesi, autosid jne: see aurupunkteemaline disain integreerub koduabilise ja meie mitmetoalise helisüsteemiga, et suhelda ülejäänud meie DIY nutikoduga. Selle asemel, et osta Ring Doorbell (või Nest või üks teistest konkurentidest) Ehitasin oma nutika ukseava
Häbelik mask, mis lülitub inimesi nähes välja: 9 sammu (piltidega)
Häbelik mask, mis inimesi nähes kinni läheb: On kurb, et peame Covid -19 tõttu kandma näomaske. See ei ole väga nauditav kogemus, ajab kuumaks, higistab, närvitseb ja loomulikult raskendab hingamist. On januseid aegu, kui te soovitate maski eemaldada, kuid kardate seda teha. Mida mina
Nutikas äratuskell: nutikas äratuskell, mis on valmistatud Raspberry Pi -ga: 10 sammu (koos piltidega)
Nutikas äratuskell: nutikas äratuskell, mis on valmistatud Raspberry Pi -ga: kas olete kunagi tahtnud nutikat kella? Kui jah, siis see on teie jaoks lahendus! Ma tegin nutika äratuskella, see on kell, mille abil saate äratusaega vastavalt veebisaidile muuta. Kui äratus hakkab tööle, kostab heli (sumin) ja 2 tuld
Arduino LED -nupp, mis juhib animatsioonide töötlemist: 36 sammu (piltidega)
Arduino LED -nupp, mis juhib töötlusanimatsioone: See nupp on valmistatud PCB -st ja muudest Sparkfuni toodetud komponentidest. Seda juhib Arduino Mega. Iga nupp on kena ja sihvakas ning rahuldustpakkuv ning selle sees on RGB LED! Olen seda kasutanud animatsioonide juhtimiseks
IoT -nupp, mis juhib teie rakendust: 6 sammu
IoT -nupp, mis juhib teie rakendust: Üks asi, mis mulle mikrokontrollerite juures kõige rohkem meeldib, on võimalus kasutada neid sisendseadmena, näiteks Arduino Micro saab kasutada HID -ina (inimese liideseadmena), mis tähendab mõningast kodeerimist ja oskusteavet saate ise teha