Orodha ya maudhui:

FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama: Hatua 11 (na Picha)
FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama: Hatua 11 (na Picha)

Video: FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama: Hatua 11 (na Picha)

Video: FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama: Hatua 11 (na Picha)
Video: UKIONA DALILI HIZI 9 WIKI 2 BAADA YA KUJAMIIANA KAPIME UKIMWI HARAKA HUENDA UMEAMBUKIZWA 2024, Novemba
Anonim
FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama
FinduCar: Ufunguo wa Gari mahiri Unaowaongoza Watu Mahali Gari Lilipokuwa Limesimama

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

Mchoro wa Karatasi
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

Orodha ya vifaa
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

Ubunifu wa Mzunguko
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

Uunganisho wa vifaa
Uunganisho wa vifaa
Uunganisho wa vifaa
Uunganisho wa vifaa
Uunganisho wa vifaa
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

Ubunifu wa Programu
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

Utatuaji kwenye ubao wa mkate
Utatuaji kwenye ubao wa mkate
Utatuaji kwenye ubao wa mkate
Utatuaji kwenye ubao wa mkate
Utatuaji kwenye ubao wa mkate
Utatuaji kwenye ubao wa mkate

Hatua ya 7: Mkutano wa vifaa

Mkutano wa vifaa
Mkutano wa vifaa
Mkutano wa vifaa
Mkutano wa vifaa
Mkutano wa vifaa
Mkutano wa vifaa

Hatua ya 8: Ubunifu wa Nyumba ya Elektroniki katika Adobe Illustrator

Ubunifu wa Nyumba za Elektroniki katika Adobe Illustrator
Ubunifu wa Nyumba za Elektroniki katika Adobe Illustrator

Hatua ya 9: Mfano wa Kadibodi

Mfano wa Kadibodi
Mfano wa Kadibodi
Mfano wa Kadibodi
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

Mfano wa Plywood ya Birch
Mfano wa Plywood ya Birch
Mfano wa Plywood ya Birch
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: