Orodha ya maudhui:
- Hatua ya 1: Mchoro wa Karatasi
- Hatua ya 2: Orodha ya vifaa
- Hatua ya 3: Ubunifu wa Mzunguko
- Hatua ya 4: Uunganisho wa vifaa
- Hatua ya 5: Ubunifu wa Programu
- Hatua ya 6: Utatuaji kwenye Bodi ya mkate
- Hatua ya 7: Mkutano wa vifaa
- Hatua ya 8: Ubunifu wa Nyumba ya Elektroniki katika Adobe Illustrator
- Hatua ya 9: Mfano wa Kadibodi
- Hatua ya 10: Mfano wa Plywood ya Birch
- Hatua ya 11: Mfano wa Mkutano wa Mwisho
Video: FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama: Hatua 11 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Ili kutatua shida zilizo hapo juu, mradi huu unapendekeza kuunda ufunguo mzuri wa gari ambao unaweza kuelekeza watu mahali walipoegesha gari. Na mpango wangu unajumuisha GPS kwenye ufunguo wa gari. Hakuna haja ya kutumia programu ya smartphone kufuatilia gari, mwongozo wote utaonyesha tu kwenye kitufe cha gari.
Hatua ya 1: Mchoro wa Karatasi
Wakati watu wanapobofya kitufe ili kufunga gari, habari ya eneo inaweza kurekodiwa kwenye microcontroller moja kwa moja. Halafu, wakati watu wanapoanza kuelekea kwenye gari, taa tofauti za LED huwashwa ili kuelekeza kwenye nafasi ya gari na mzunguko wa kupepesa unaonyesha umbali wa gari. Wanaweza kufuata kwa urahisi mwangaza wa LED na kupata gari haraka.
Hatua ya 2: Orodha ya vifaa
Hizi ndizo vifaa vilivyotumika katika mradi huu. Baadhi ni kutoka kwa vifaa vya chembe (ubao wa mkate, vifungo, vichwa), zingine zinunuliwa kutoka kwa wavuti rasmi ya Adafruit (Manyoya ya Adafruit M0, moduli ya Adafruit Ultimate GPS, Lpoly Battery na Batri ya Seli ya Sarafu) na Amazon (NeoPixel Ring - 12 RGB LED).
Hatua ya 3: Ubunifu wa Mzunguko
Neopixel_LED imeunganishwa na PIN 6 ya Manyoya M0
Button_Unlock imeunganishwa na PIN 12 ya Manyoya M0
Kitufe_Lock imeunganishwa na PIN 13 ya Manyoya M0
Hatua ya 4: Uunganisho wa vifaa
Solder vichwa vya kichwa na Manyoya ya Adafruit M0, Adafruit Ultimate GPS Featherwing. Weka bodi hizo mbili pamoja. Manyoya ya GPS manyoya huingia ndani ya bodi yako ya Manyoya M0 bila waya zaidi.
Hatua ya 5: Ubunifu wa Programu
Vipengele vya Mtihani
Soma MFUNGO
usanidi batili () {
Serial.println ("GPS echo test"); Serial. Kuanza (9600); Serial1.anza (9600); // chaguo-msingi cha NMEA GPS baud}
kitanzi batili () {
ikiwa (Serial haipatikani ()) {char c = Serial.read (); Serial1.andika (c); } ikiwa (Serial1 haipatikani ()) {char c = Serial1.read (); Serial.write (c); }}
Blink LED Gonga
Tazama Mifano ya NeoPixel ya Adafruit.
Kazi za Kuhesabu GPS
Mahesabu ya Azimuth
// Mahesabu ya Azimuth
azimuth mara mbili (lat lat mbili, lon_a mbili, lat_b mara mbili, lon_b mara mbili) {
mara mbili 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 = dhambi (lat_a) * dhambi (lat_b) + cos (lat_a) * cos (lat_b) * cos (lon_b-lon_a); d = sqrt (1-d * d); d = cos (lat_b) * dhambi (lon_b-lon_a) / d; d = asin (d) * 180 / PI; kurudi d; }
Mahesabu ya saa kwenye saa ya LED, ambayo pia ni mwelekeo wa gari
// Mahesabu ya saa kwenye saa ya LED
int led_time (pembe mbili) {
bendera = 0; ikiwa (angle = 15) {angle_time = angle_time + 1; } ikiwa (bendera == 1) {angle_time = 12 - muda wa pembe; } kurudi angle_time; }
Hesabu umbali kati ya mtu na gari lake
// Hesabu Umbali
umbali mara mbili (lat lat mbili, lon_a mbili, lat_b mara mbili, lon_b mara mbili) {
DUNIA_RADIUS mara mbili = 6378137.0; rad1Lat1 = mara mbili (lat_a * PI / 180.0); rad2Lat2 = (lat_b * PI / 180.0); mara mbili = radLat1 - radLat2; mara mbili b = (lon_a - lon_b) * PI / 180.0; mara mbili s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * DUNIA_RADIUS / 10000000; kurudi s; }
Kazi za Kuonyesha za LED
Washa taa za LED kwenye duara kuonyesha kwamba inaanza kuvinjari
// Taa za pete za LED moja kwa moja inaonyesha kuwa urambazaji huanza
batili colorWipe (uint32_t c, uint8_t subiri) {
kwa (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); kuchelewesha (subiri);}}
Pata mzunguko wa LED kwa msingi wa umbali
// Pata Mzunguko wa LED
mzunguko wa int (umbali mara mbili) {
int f = (int) umbali * 20; kurudi f; }
Piga mwangaza LED inayoonyesha mwelekeo wa gari
// Onyesha kwenye LED
ukanda. wazi ();
onyesha (); kuchelewesha (masafa (mwendo_moto_ya_moto)); // kuchelewa (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); onyesha (); kuchelewesha (masafa (mwendo_moto_ya_moto)); // kuchelewa (500);
// Lemaza LED
ikiwa (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; kuongozwa_lag = 1; ukanda. wazi (); onyesha (); }
Kuu
# pamoja na Adafruit_GPS.h # ni pamoja na Adafruit_NeoPixel.h # pamoja na HardwareSerial.h # pamoja na Kitufe.h # pamoja na math.h
#fafanua Neopikisi_Imewashwa_MAWAPO 6
#fafanua Neopixel_LED_NUM 12 #fafanua Kitufe_Lock_PIN 13 #fafanua Kitufe_Ufungue_PIN 12 #fafanua GPSSerial Serial1
#fafanua GPSECHO uwongo
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel strip = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Kitufe cha kifungo cha kifungo (Button_Lock_PIN); Kitufe cha kifungo_ufungue (Button_Unlock_PIN); kifungo kifungo_flag = 0; int led_flag = 1; uint32_t timer = millis (); gari mbili_lat, gari_lon; umbali wa gari_cha_mwili; mwelekeo_uelekezaji mara mbili; gari mbili_azimuth; gari_mwili_mraba_mwili; wakati wa pembe_wa muda;
usanidi batili () {
Serial. Kuanza (115200); // Serial1.anza (9600); Kuanza GPS (9600); // chaguo-msingi la NMEA GPS baud strip. kuanza (); // ondoa laini hii kuwasha RMC (kiwango cha chini kilichopendekezwa) na GGA (rekebisha data) pamoja na urefu wa GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Weka kiwango cha sasisho GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz kiwango cha sasisho // Omba sasisho juu ya hali ya antena, toa maoni yako kukaa kimya // GPS.sendCommand (PGCMD_ANTENNA); kuchelewesha (1000);}
kitanzi batili () {// ikiwa (Serial. haipatikani ()) {
// char c = Serial.read (); // Serial1.andika (c); //} // ikiwa (Serial1.available ()) {char c = GPS.read (); ikiwa (GPSECHO) ikiwa (c) Serial.print (c); // ikiwa sentensi imepokelewa, tunaweza kuangalia checksum, kuichanganua… ikiwa (GPS.newNMEA Imepokelewa ()) {// jambo gumu hapa ni ikiwa tutachapisha sentensi ya NMEA, au data // tunaishia kutosikiliza na kukamata sentensi zingine! // hivyo jihadharini ikiwa unatumia OUTPUT_ALLDATA na jaribu kuchapisha data Serial.println (GPS.lastNMEA ()); // hii pia inaweka bendera mpya yaNMEA () GPS ikiwa [! GPS.parse (GPS.lastNMEA ()) // hii pia inaweka bendera mpya yaNMEA () kurudi kwa uwongo; // tunaweza kushindwa kuchambua sentensi katika kesi hiyo tunapaswa kungojea mwingine} // ikiwa millis () au timer itazunguka, tutaiweka upya ikiwa (timer> millis ()) timer = millis (); ikiwa (millis () - kipima muda> 2000) {timer = millis (); // rekebisha kipima muda Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Printa ya serial (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("Tarehe:"); Serial.print (GPS.day, DEC); Serial.print ('/'); Printa ya serial (mwezi wa GPS, DEC); Serial.print ("/ 20"); Serial.println (GPS.waka, DEC); Serial.print ("Rekebisha:"); Serial.print ((int) GPS.fix); Serial.print ("ubora:"); Serial.println ((int) GPS usawa); ikiwa (GPS.fix) {Serial.print ("Mahali:"); Rekodi ya serial (GPS.lititude, 4); Serial.print (GPS.lat); Serial.print (","); Printa ya serial (urefu wa GPS, 4); Serial.println (GPS.lon); Serial.print ("Mahali (kwa digrii, inafanya kazi na Ramani za Google):"); Rekodi ya serial (GPS. Degree, 4); Serial.print (","); Serial.println (GPS. Urefu wa digrii, 4); Serial.print ("Kasi (mafundo):"); Serial.println (GPS. speed); Serial.print ("Angle:"); Serial.println (GPS.angle); Serial.print ("Urefu:"); Serial.println (GPS. Urefu); Serial.print ("Satelaiti:"); Serial.println ((int) GPS.satellites); // Hifadhi GPS ya gari ikiwa (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS. urefu wa digrii; // kwa utatuzi Serial.print ("CarLatitude:"); Serial.println (gari_lat); Serial.print ("gariLongitude:"); Serial.println (car_lon); } // Anza kupata gari ikiwa (button_flag == 0) {button_flag = button_unlock.read (); } ikiwa (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); risasi_lag = 0; } ikiwa (button_flag == 1) {car_person_distance = umbali (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Mahesabu ya umbali // car_person_distance = umbali (100.0005, 100.0005, 100.0, 100.0); // kwa utatuzi Serial.println (car_person_distance); hoja_direction = GPS.angle; // Rekodi mwelekeo wa kusonga (angle) // move_direction = 100.0; // Rekodi Azimuth (angle) car_azimuth = azimuth (GPS. LatitudeDegrees, GPS. LongitudeDegrees, car_lat, car_lon); // car_azimuth = azimuth (100.0005, 100.0005, 100.0, 100.0); // Mahesabu ya saa kwenye saa ya gari car_person_angle = car_azimuth - hoja_direction; wakati_wa_ngozi = saa ya kuongozwa // Onyesha kwenye ukanda wa LED. Wazi (); onyesha (); // kuchelewa (frequency (gari_person_distance)); kuchelewesha (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); onyesha (); // kuchelewa (frequency (gari_person_distance)); kuchelewesha (500); // Lemaza LED ikiwa (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; kuongozwa_lag = 1; ukanda. wazi (); onyesha (); }}} //}}}
Hatua ya 6: Utatuaji kwenye Bodi ya mkate
Hatua ya 7: Mkutano wa vifaa
Hatua ya 8: Ubunifu wa Nyumba ya Elektroniki katika Adobe Illustrator
Hatua ya 9: Mfano wa Kadibodi
Hatua hii hutumiwa kudhibitisha saizi ya nyumba na kila kipande cha mfano, kuhakikisha saizi ya kisanduku, na nafasi ya kifungo, na nafasi ya LED inafaa vifaa vya elektroniki vilivyokusanyika.
Hatua ya 10: Mfano wa Plywood ya Birch
Hii ilikuwa mfano wa awali. Shimo la mraba la kuingiza sinia liliongezwa kwa moja ya vipande hatimaye.
Hatua ya 11: Mfano wa Mkutano wa Mwisho
Ilipendekeza:
Msaidizi wa Maegesho ya Arduino - Hifadhi Gari lako Mahali Pote Sahihi Kila Wakati: Hatua 5 (na Picha)
Msaidizi wa Maegesho ya Arduino - Hifadhi Gari lako Mahali Sawa Kila Wakati: Katika mradi huu, nitakuonyesha jinsi ya kujenga msaidizi wako wa maegesho ukitumia Arudino. Msaidizi huyu wa maegesho hupima umbali wa gari lako na anakuongoza kuiegesha mahali sahihi kwa kutumia kisomaji cha onyesho la LCD na LED, ambayo inaendelea
Kugundua D2-5 Kufuatilia Vifaa vya Gari Mahiri: Hatua 6
Kugundua D2-5 Kufuatilia Vifaa vya Gari Mahiri: UtanguliziHapa timu ya ICStation inaonyesha jinsi ya kutengeneza roboti inayofuatilia gari. Lengo la kufundisha na kushiriki watu raha na mazoezi ya roboti na utaftaji, icstation inatoa magari mengi ya roboti kwa chaguo lako. Njia za Kufanya kazi Kuna upana wa mm 16 mm
Salama Mahali Nyumba Yako Mahiri: Hatua 14
Salama Nyumba Yako mahiri: Ninagombea mashindano salama na salama. Ikiwa ungependa kuifundisha tafadhali ipigie kura! Nitakuonyesha jinsi ya kuhifadhi nyumba yako na mazingira kwa urahisi na kwa bei rahisi.Ina sehemu ambazo utajifunza jinsi ya: 1. Sanidi y
Kufanya kazi kwa Gari mahiri kwa Mwendo wa Kidole: Hatua 7 (na Picha)
Kufanya kazi kwa Gari mahiri kwa Mwendo wa Kidole
Sura ya Picha mahiri: Hatua 4 (zilizo na Picha)
Sura ya Picha Mahiri: Mwanzo wa mradi huu ulikuwa ni kutatua shida tatu: angalia hali ya hewa ya karibu haraka kuhakikisha kuwa familia nzima ilikuwa ikisasishwa kwa shughuli zozote zilizopangwa kuonyesha mkusanyiko mkubwa wa picha za likizo Kama ilivyotokea, nilikuwa na mzee