Talaan ng mga Nilalaman:
- Hakbang 1: Sketch ng Papel
- Hakbang 2: Listahan ng Hardware
- Hakbang 3: Disenyo ng Circuit
- Hakbang 4: Koneksyon sa Hardware
- Hakbang 5: Disenyo ng Software
- Hakbang 6: Pag-debug sa Breadboard
- Hakbang 7: Hardware Assembly
- Hakbang 8: Disenyo ng Pabahay ng Electronics sa Adobe Illustrator
- Hakbang 9: Prototype ng Cardboard
- Hakbang 10: Prototype ng Birch Plywood
- Hakbang 11: Huling Assembly Prototype
Video: FinduCar: isang Smart Car Key na Gumagabay sa Mga Tao sa Kung saan Naka-park ang Kotse: 11 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Upang malutas ang mga problema sa itaas, iminungkahi ng proyektong ito na bumuo ng isang smart key ng kotse na maaaring idirekta ang mga tao sa kung saan nila ipinarada ang kotse. At ang aking plano ay pagsasama ng isang GPS sa susi ng kotse. Hindi na kailangang gamitin ang smartphone app upang subaybayan ang kotse, ipapakita lamang ang lahat ng patnubay sa susi ng kotse.
Hakbang 1: Sketch ng Papel
Kapag pinindot ng mga tao ang pindutan upang i-lock ang kotse, awtomatikong maitatala ang impormasyon ng lokasyon sa microcontroller. Pagkatapos, kapag ang mga tao ay nagsimulang mag-navigate sa kotse, ang iba't ibang LED ay naiilawan upang magdirekta sa posisyon ng kotse at ang dalas ng kisap-mata ay nagpapakita ng distansya sa kotse. Madali nilang masundan ang blinking LED at mabilis na mahanap ang kotse.
Hakbang 2: Listahan ng Hardware
Ito ang mga sangkap na ginamit sa proyektong ito. Ang ilan ay mula sa mga particle kit (breadboard, button, header), ang iba ay binili mula sa opisyal na website ng Adafruit (Adafruit Feather M0, Adafruit Ultimate GPS module, Lpoly Battery at Coin Cell Battery) at Amazon (NeoPixel Ring - 12 RGB LED).
Hakbang 3: Disenyo ng Circuit
Ang Neopixel_LED ay konektado sa PIN 6 ng Feather M0
Ang Button_Unlock ay konektado sa PIN 12 ng Feather M0
Ang Button_Lock ay konektado sa PIN 13 ng Feather M0
Hakbang 4: Koneksyon sa Hardware
Paghinang ng mga header gamit ang Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. I-stack ang dalawang board nang magkasama. Ang mga GPS FeatherWing plugs mismo sa iyong board ng Feather M0 nang walang anumang mga wire.
Hakbang 5: Disenyo ng Software
Mga Sangkap ng Pagsubok
Basahin ang isang pag-aayos
walang bisa ang pag-setup () {
Serial.println ("Pagsubok sa echo ng GPS"); Serial.begin (9600); Serial1.begin (9600); // default NMEA GPS baud}
void loop () {
kung (Serial.available ()) {char c = Serial.read (); Serial1.sulat (c); } kung (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Blink LED Ring
Tingnan ang Mga Halimbawa ng Adafruit NeoPixel.
Mga Pag-andar ng Pagkalkula ng GPS
Kalkulahin ang Azimuth
// Kalkulahin ang Azimuth
dobleng azimuth (dobleng lat_a, dobleng lon_a, dobleng lat_b, dobleng lon_b) {
doble 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; bumalik d; }
Kalkulahin ang oras sa LED na orasan, na kung saan ay ang direksyon din ng sasakyan
// Kalkulahin ang oras sa LED na orasan
int led_time (dobleng anggulo) {
int flag = 0; kung (anggulo = 15) {anggulo_time = anggulo_time + 1; } kung (flag == 1) {anggulo_time = 12 - anggulo_time; } bumalik anggulo_time; }
Kalkulahin ang distansya sa pagitan ng tao at ng kanyang sasakyan
// Kalkulahin ang Distansya
dobleng distansya (dobleng lat_a, doble na lon_a, dobleng lat_b, doble na lon_b) {
doble ang EARTH_RADIUS = 6378137.0; dobleng radLat1 = (lat_a * PI / 180.0); dobleng radLat2 = (lat_b * PI / 180.0); doble a = radLat1 - radLat2; doble b = (lon_a - lon_b) * PI / 180.0; dobleng s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; ibalik s; }
Mga Pag-andar sa LED Display
Mga ilaw ng LED sa isang bilog na ipinapakita na nagsisimula itong mag-navigate
// Isa-isang ipinapakita ang pag-iilaw ng singsing na LED na nagsisimula ang pag-navigate
walang bisa na colorWipe (uint32_t c, uint8_t maghintay) {
para sa (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); antala (maghintay);}}
Kunin ang dalas ng LED batay sa distansya
// Kumuha ng Frequency ng LED
int frequency (dobleng distansya) {
int f = (int) distansya * 20; ibalik f; }
Blink ang tiyak na LED na nagpapahiwatig ng direksyon ng kotse
// Display sa LED
strip.clear ();
strip.show (); pagkaantala (dalas (car_person_distance)); // pagkaantala (500); strip.setPixelColor (anggulo_time, strip. Color (0, 0, 255)); strip.show (); pagkaantala (dalas (car_person_distance)); // pagkaantala (500);
// Huwag paganahin ang LED
kung (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Pangunahin
# isama ang Adafruit_GPS.h # isama ang Adafruit_NeoPixel.h # isama ang HardwareSerial.h #include Button.h #include math.h
# tukuyin ang Neopixel_LED_PIN 6
#define Neopixel_LED_NUM 12 # pagtukoy Button_Lock_PIN 13 # pagtukoy ng Button_Unlock_PIN 12 # pagtukoy ng GPSSerial Serial1
# tukuyin ang GPSECHO maling
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 timer = millis (); doble na car_lat, car_lon; dobleng car_person_distance; doble ilipat_direksyon; dobleng kotse_azimuth; dobleng car_person_angle; int anggulo_time;
walang bisa ang pag-setup () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // default NMEA GPS baud strip.begin (); // i-unsment ang linyang ito upang i-on ang RMC (inirekumendang minimum) at GGA (ayusin ang data) kasama ang altitude GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Itakda ang rate ng pag-update ng GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz rate ng pag-update // Humiling ng mga pag-update sa katayuan ng antena, magbigay ng puna upang manahimik // GPS.sendCommand (PGCMD_ANTENNA); antala (1000);}
void loop () {// if (Serial.available ()) {
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); kung (GPSECHO) kung (c) Serial.print (c); // kung natanggap ang isang pangungusap, maaari naming suriin ang checkum, i-parse ito … kung (GPS.newNMEAreceived ()) {// isang nakakalito na bagay dito ay kung nai-print namin ang pangungusap na NMEA, o data // natapos kaming hindi makinig at nakahahalina ng iba pang mga pangungusap! // kaya maging maingat kung gumagamit ng OUTPUT_ALLDATA at subukang i-print ang data Serial.println (GPS.lastNMEA ()); // nagtatakda din ito ng bagong // maaari nating mabigo upang mai-parse ang isang pangungusap kung saan maghihintay lamang tayo para sa isa pa} // kung ang millis () o timer ay nakabalot, ire-reset lamang namin ito kung (timer> millis ()) timer = millis (); kung (millis () - timer> 2000) {timer = millis (); // reset ang timer Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("Petsa:"); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.month, DEC); Serial.print ("/ 20"); Serial.println (GPS.year, DEC); Serial.print ("Ayusin:"); Serial.print ((int) GPS.fix); Serial.print ("kalidad:"); Serial.println ((int) GPS.fixquality); kung (GPS.fix) {Serial.print ("Lokasyon:"); Serial.print (GPS.latitude, 4); Serial.print (GPS.lat); Serial.print (","); Serial.print (GPS.longitude, 4); Serial.println (GPS.lon); Serial.print ("Lokasyon (sa degree, gumagana sa Google Maps):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Bilis (buhol):"); Serial.println (GPS. bilis); Serial.print ("Angle:"); Serial.println (GPS.angle); Serial.print ("Altitude:"); Serial.println (GPS.altitude); Serial.print ("Satellites:"); Serial.println ((int) GPS.satellites); // I-save ang GPS ng sasakyan kung (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // for debug Serial.print ("carLasalam:"); Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Simulang hanapin ang kotse kung (button_flag == 0) {button_flag = button_unlock.read (); } kung (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_flag = 0; } kung (button_flag == 1) {car_person_distance = distansya (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Kalkulahin ang distansya // car_person_distance = distansya (100.0005, 100.0005, 100.0, 100.0); // for debug Serial.println (car_person_distance); move_direction = GPS.angle; // Itala ang gumagalaw na direksyon (anggulo) // move_direction = 100.0; // Record the Azimuth (anggulo) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimuth (100.0005, 100.0005, 100.0, 100.0); // Kalkulahin ang oras sa LED relo car_person_angle = car_azimuth - move_direction; anggulo_time = led_time (car_person_angle); // Display sa LED strip. Malinaw (); strip.show (); // pagkaantala (dalas (car_person_distance)); pagkaantala (500); strip.setPixelColor (anggulo_time, strip. Color (0, 0, 255)); strip.show (); // pagkaantala (dalas (car_person_distance)); pagkaantala (500); // Huwag paganahin ang LED kung (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
Hakbang 6: Pag-debug sa Breadboard
Hakbang 7: Hardware Assembly
Hakbang 8: Disenyo ng Pabahay ng Electronics sa Adobe Illustrator
Hakbang 9: Prototype ng Cardboard
Ang hakbang na ito ay ginagamit upang kumpirmahing ang laki ng pabahay at bawat piraso ng modelo, na tinitiyak na ang laki ng kahon, at ang posisyon ng pindutan, at ang posisyon ng LED ay umaangkop sa naipong mga elektronikong sangkap.
Hakbang 10: Prototype ng Birch Plywood
Ito ang paunang prototype. Ang isang parisukat na butas para sa pagpasok sa isang charger ay naidagdag sa isa sa mga piraso sa wakas.
Hakbang 11: Huling Assembly Prototype
Inirerekumendang:
I-save ang Aking Anak: ang Matalinong Upuan na Nagpapadala ng Mga Mensahe sa Teksto Kung Nakalimutan Mo ang Bata sa Kotse: 8 Hakbang
I-save ang Aking Anak: ang Matalinong Upuan na Nagpapadala ng Mga Mensahe sa Teksto Kung Nakalimutan Mo ang Bata sa Kotse: Naka-install ito sa mga kotse, at salamat sa isang detektor na inilagay sa upuan ng bata, binabalaan tayo nito - sa pamamagitan ng SMS o tawag sa telepono - kung nakakuha kami palayo nang hindi dinadala ang bata
Baguhin ang Windows upang Maipakita Kung Saan Kinuha ang Larawan: 4 Mga Hakbang
Baguhin ang Windows upang Maipakita Kung Saan Isang Kuha ng Larawan: Panimula Naranasan mo na ba ang iyong mga larawan sa paglalakbay at nagsimulang magtaka kung saan mo kinuha ang mga ito? Ano ang pangalan ng maliit na bayan na tumigil ka sa limang taon na ang nakalilipas, ang isa kung saan mayroon kang pinaka-kamangha-manghang kape? Kapag nabago mo na ang Hangin
Paano Gumawa ng Mga Kotse ng RC Kotse Mula sa Cardboard at Kraft Paper: 9 Mga Hakbang (na may Mga Larawan)
Paano Gumawa ng Mga Kotse ng RC Kotse Mula sa Cardboard at Kraft Paper: Ang mga gulong ng RC ay mahahalagang bahagi para sa lahat ng mga kotseng RC. Mayroong iba't ibang mga kategorya at uri ng mga gulong RC at ang tamang pagpili ng gulong ay isa sa pinakamahalagang mga kadahilanan kapag nakikipag-usap sa mga kotseng ito. Nang magsimula akong mag-DIY sa mga kotseng RC, isa sa maj
Ang Programang Kotse ng ESP8266 ay Naka-Program sa Kotse ng ESP8266 Pangunahing: 18 Mga Hakbang (na may Mga Larawan)
Ang ESP8266 Robot Car Programmed With ESP8266 Basic: Ako ay isang guro sa agham sa gitnang paaralan at din ang Robotic Club Advisor. Naghahanap ako ng mas mabisang paraan upang magawa ang mga robot sa kamay ng aking mga mag-aaral. Sa mga mababang presyo ng mga board ng ESP8266, nagawa kong lumikha ng isang autonomous
Kung saan Hahanapin ang 5 Pinakamahusay na Magagamit na Mga Mac Apps: 5 Mga Hakbang
Kung saan Hahanapin ang Magagamit na 5 Mga Pinakamahusay na Mac Apps: Ang mga app na hahayaan kang makuha ang pinakamahusay mula sa iyong computer sa Apple Mac