Turinys:
- 1 žingsnis: popieriaus eskizas
- 2 žingsnis: Aparatūros sąrašas
- 3 žingsnis: grandinės projektavimas
- 4 žingsnis: aparatinės įrangos prijungimas
- 5 žingsnis: programinės įrangos projektavimas
- 6 veiksmas: derinkite „Breadboard“
- 7 žingsnis: Aparatūros surinkimas
- 8 veiksmas: elektronikos būsto projektavimas „Adobe Illustrator“
- 9 žingsnis: kartono prototipas
- 10 žingsnis: beržo faneros prototipas
Video: „FinduCar“: išmanusis automobilio raktas, vedantis žmones į automobilio stovėjimo vietą: 11 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Siekiant išspręsti aukščiau išvardytas problemas, šiame projekte siūloma sukurti išmanųjį automobilio raktą, kuris galėtų nukreipti žmones ten, kur jie pastatė automobilį. Ir mano planas yra integruoti GPS į automobilio raktą. Automobiliui sekti nereikia naudoti išmaniojo telefono programos, visi nurodymai bus rodomi tik ant automobilio rakto.
1 žingsnis: popieriaus eskizas
Kai žmonės paspaudžia mygtuką, norėdami užrakinti automobilį, vietos informacija gali būti automatiškai įrašoma į mikrovaldiklį. Tada, kai žmonės pradeda naršyti prie automobilio, užsidega skirtingas šviesos diodas, kuris nukreipia į automobilio padėtį, o mirksėjimo dažnis rodo atstumą iki automobilio. Jie gali lengvai sekti mirksintį šviesos diodą ir greitai rasti automobilį.
2 žingsnis: Aparatūros sąrašas
Tai yra šiame projekte naudojami komponentai. Kai kurie yra iš dalelių rinkinių (duonos lentos, mygtukas, antraštės), kiti - iš oficialios „Adafruit“svetainės („Adafruit Feather M0“, „Adafruit Ultimate GPS“modulis, „Lpoly Battery“ir „Coin Cell Battery“) ir „Amazon“(„NeoPixel Ring“- 12 RGB LED).
3 žingsnis: grandinės projektavimas
„Neopixel_LED“prijungtas prie „Feather M0“PIN 6
„Button_Unlock“yra prijungtas prie „Feather M0“PIN 12
„Button_Lock“prijungtas prie „Feather M0“PIN 13
4 žingsnis: aparatinės įrangos prijungimas
Lituokite antraštes naudodami „Adafruit M0 Feather“, „Adafruit Ultimate GPS Featherwing“. Sudėkite dvi lentas kartu. „GPS FeatherWing“prijungiamas tiesiai prie „Feather M0“plokštės be jokių laidų.
5 žingsnis: programinės įrangos projektavimas
Bandymo komponentai
Skaitykite FIX
void setup () {
Serial.println („GPS aido testas“); Serial.begin (9600); Serial1.begin (9600); // numatytasis NMEA GPS baudas}
void loop () {
if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Mirksi LED žiedas
Žr. „Adafruit NeoPixel“pavyzdžius.
GPS skaičiavimo funkcijos
Apskaičiuokite azimutą
// Apskaičiuokite azimutą
dvigubas azimutas (dvigubas lat_a, dvigubas lon_a, dvigubas lat_b, dvigubas lon_b) {
dvigubas 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; grįžti d; }
Apskaičiuokite LED laikrodžio laiką, kuris taip pat yra transporto priemonės kryptis
// Apskaičiuokite laiką pagal LED laikrodį
int led_time (dvigubas kampas) {
int vėliava = 0; if (kampas = 15) {kampo_ laikas = kampo_ laikas + 1; } if (vėliava == 1) {kampo_ laikas = 12 - kampo_ laikas; } return kampas_laikas; }
Apskaičiuokite atstumą tarp žmogaus ir jo transporto priemonės
// Apskaičiuokite atstumą
dvigubas atstumas (dvigubas lat_a, dvigubas lon_a, dvigubas lat_b, dvigubas lon_b) {
dvigubas EARTH_RADIUS = 6378137,0; dvigubas radLat1 = (lat_a * PI / 180.0); dvigubas radLat2 = (lat_b * PI / 180.0); dvigubas a = radLat1 - radLat2; dvigubas b = (lon_a - lon_b) * PI / 180,0; dvigubas s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; grįžti s; }
LED ekrano funkcijos
Apskritime užsidega šviesos diodai, rodantys, kad jis pradeda naršyti
// LED žiedo apšvietimas po vieną rodo, kad navigacija prasideda
void colorWipe (uint32_t c, uint8_t palaukti) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (wait);}}
Gaukite šviesos diodų dažnį pagal atstumą
// Gaukite LED dažnį
int dažnis (dvigubas atstumas) {
int f = (int) atstumas * 20; grįžti f; }
Mirksi tam tikras šviesos diodas, rodantis automobilio kryptį
// Rodyti LED
strip.clear ();
strip.show (); vėlavimas (dažnis (automobilio_žmonės_distansas)); // uždelsimas (500); strip.setPixelColor (kampo laikas, juostelė. Spalva (0, 0, 255)); strip.show (); vėlavimas (dažnis (automobilio_žmonės_distansas)); // uždelsimas (500);
// Išjungti šviesos diodą
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_ vėliava = 1; strip.clear (); strip.show (); }
Pagrindinis
#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); Button button_lock (Button_Lock_PIN); Button button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t laikmatis = milis (); double car_lat, car_lon; dvigubas automobilis_žmogus_distance; double move_direction; dvigubas automobilis_azimutas; dvigubas automobilis_žmogus_kampis; int kampas_laikas;
void setup () {
Serial.begin (115200); // Serial1.begin (9600); GPS.pradis (9600); // numatytoji NMEA GPS baudos juosta.begin (); // atšaukite komentarą iš šios eilutės, kad įjungtumėte RMC (rekomenduojamas minimumas) ir GGA (fiksuoti duomenis), įskaitant aukščio GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Nustatykite atnaujinimo greitį GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz atnaujinimo dažnis // Prašykite atnaujinti antenos būseną, pakomentuokite, kad tylėtumėte // GPS.sendCommand (PGCMD_ANTENNA); vėlavimas (1000);}
void loop () {// if (Serial.available ()) {
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); jei (GPSECHO), jei (c) serijinis atspaudas (c); // jei gautas sakinys, galime patikrinti kontrolinę sumą, ją išanalizuoti … jei (GPS.newNMEAreceived ()) {// čia sudėtinga, jei išspausdinsime NMEA sakinį arba duomenis // galiausiai neklausysime ir pagauti kitus sakinius! // todėl būkite labai atsargūs, jei naudojate OUTPUT_ALLDATA ir bandote spausdinti duomenis Serial.println (GPS.lastNMEA ()); // tai taip pat nustato newNMEAreceived () vėliavą į false, jei (! GPS.parse (GPS.lastNMEA ()))) // tai taip pat nustato newNMEAreceived () vėliavą į false return; // mes negalime išanalizuoti sakinio, tokiu atveju turėtume tiesiog laukti kito} // jei „millis“() arba laikmatis apsisuks, mes jį iš naujo nustatysime, jei (timer> millis ()) timer = millis (); if (milis () - laikmatis> 2000) {laikmatis = milis (); // iš naujo nustatyti laikmatį Serial.print ("\ nLaikas:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serijinis atspaudas (GPS minutė, DEC); Serial.print (':'); Serijinis spaudinys (GPS.sekundės, DEC); Serial.print ('.'); Serial.println (GPS.milisekundės); Serial.print ("Data:"); Serijinis atspaudas (GPS diena, DEC); Serial.print ('/'); Serijinis atspaudas (GPS mėnuo, DEC); Serijinis atspaudas ("/20"); Serial.println (GPS.metai, DEC); Serial.print („Pataisymas:“); Serial.print ((int) GPS.fix); Serial.print ("kokybė:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Vieta:"); Serijinis atspaudas (GPS platuma, 4); Serijinis atspaudas (GPS.lat); Serial.print (","); Serijinis atspaudas (GPS.ilguma, 4); Serial.println (GPS.lon); Serial.print ("Vieta (laipsniais, veikia su" Google "žemėlapiais):"); Serijinis atspaudas (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Greitis (mazgai):"); Serial.println (GPS.speed); Serial.print ("Angle:"); Serial.println (GPS.angle); Serial.print ("Aukščio aukštis:"); Serial.println (GPS.altitude); Serial.print („Palydovai:“); Serial.println ((int) GPS.satellites); // Išsaugokite transporto priemonės GPS, jei (button_lock.read ()) {car_lat = GPS.latitudeDegrees; automobilis_lonas = GPS.longitudeDegrees; // derinimui Serial.print ("carLatitude:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Pradėkite ieškoti automobilio, jei (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_ vėliava = 0; } if (button_flag == 1) {car_person_distance = atstumas (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Apskaičiuokite atstumą // automobilio_žmonės_distansas = atstumas (100.0005, 100.0005, 100.0, 100.0); // derinimui Serial.println (car_person_distance); move_direction = GPS.angle; // Įrašyti judėjimo kryptį (kampą) // move_direction = 100,0; // Įrašyti azimutą (kampą) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimutas (100.0005, 100.0005, 100.0, 100.0); // Skaičiuoti laiką ant LED laikrodžio car_person_angle = car_azimuth - move_direction; kampo laikas = šviesos diodo laikas (automobilio_žmogus_kampis); // Rodyti ant LED juostos.clear (); strip.show (); // uždelsimas (dažnis (automobilio_žmonės_distance)); vėlavimas (500); strip.setPixelColor (kampo laikas, juostelė. Spalva (0, 0, 255)); strip.show (); // uždelsimas (dažnis (automobilio_žmonės_distance)); vėlavimas (500); // Išjungti šviesos diodą, jei (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_ vėliava = 1; strip.clear (); strip.show (); }}} //}}}
6 veiksmas: derinkite „Breadboard“
7 žingsnis: Aparatūros surinkimas
8 veiksmas: elektronikos būsto projektavimas „Adobe Illustrator“
9 žingsnis: kartono prototipas
Šis žingsnis naudojamas patvirtinti korpuso ir kiekvieno modelio gabalo dydį, įsitikinant, kad dėžutės dydis, mygtuko padėtis ir LED padėtis atitinka surinktus elektroninius komponentus.
10 žingsnis: beržo faneros prototipas
Tai buvo pradinis prototipas. Galiausiai prie vienos iš dalių buvo pridėta kvadratinė skylė, skirta prijungti prie įkroviklio.
Rekomenduojamas:
„Smart Desk“LED lemputė - Išmanusis apšvietimas su „Arduino“- „Neopikselių“darbo vieta: 10 žingsnių (su nuotraukomis)
„Smart Desk“LED lemputė | Išmanusis apšvietimas su „Arduino“| „Neopikselių“darbo erdvė: dabar mes daug laiko praleidžiame namuose, mokomės ir dirbame virtualiai, tad kodėl gi ne išplėsti savo darbo erdvę naudojant pritaikytą ir išmanią „Arduino“ir „Ws2812b“šviesos diodų apšvietimo sistemą. Čia aš jums parodysiu, kaip sukurti išmanųjį Stalo LED lemputė, kuri
Automobilio stovėjimo signalizacija naudojant PIR jutiklį- pasidaryk pats: 7 žingsniai (su nuotraukomis)
Automobilio stovėjimo signalizacija, naudojant PIR jutiklį- pasidaryk pats: ar kada nors susidūrėte su sunkumais statydami automobilį, pvz., Automobilį, sunkvežimį, motociklą ar bet kurį kitą, tada šioje instrukcijoje parodysiu, kaip įveikti šią problemą naudojant paprastą automobilio stovėjimo signalizaciją sistema naudojant PIR jutiklį. Šioje sistemoje, kuri
Išmanusis žadintuvas: išmanusis žadintuvas, pagamintas naudojant „Raspberry Pi“: 10 žingsnių (su nuotraukomis)
Išmanusis žadintuvas: išmanusis žadintuvas, pagamintas naudojant „Raspberry Pi“: ar kada nors norėjote išmaniojo laikrodžio? Jei taip, tai yra sprendimas jums! Aš sukūriau išmanųjį žadintuvą, tai laikrodis, kuriuo galite pakeisti žadintuvo laiką pagal svetainę. Kai žadintuvas išsijungs, pasigirs garsas (švilpukas) ir 2 lemputės
Vadovas Ericas įkvėptas LED kubas (Žemės žmonės): 10 žingsnių (su nuotraukomis)
Vadovas Ericas įkvėpė LED kubą (Žemės žmonės): Kas ir kas yra vadovas Ericas - ir kodėl jūs tai statytumėte. Prižiūrėtojas Ericas yra DĖŽUTĖ ar Kubas ar kažkas iš TBS laidos „Žmonės iš Žemės“. Kuris yra juokingas laida apie ateivių pagrobtus žmones - dažniausiai al
Tikrai paprastas/lengvas/nesudėtingas būdas priversti žmones/žmones/gyvūnus/robotus atrodyti taip, lyg jie turėtų tikrai vėsų/ryškų šilumos regėjimą (jūsų pasirinkta spalva) naudojant GIMP: 4 žingsniai
Tikrai paprastas/lengvas/nesudėtingas būdas priversti žmones/žmones/gyvūnus/robotus atrodyti taip, lyg jie turėtų tikrai vėsų/ryškų šilumos regėjimą (jūsų pasirinkta spalva) naudojant GIMP: skaitykite … pavadinimą