Mundarija:
- 1 -qadam: qog'oz eskiz
- 2 -qadam: Uskuna ro'yxati
- 3 -qadam: O'chirish dizayni
- 4 -qadam: Uskuna ulanishi
- 5 -qadam: dasturiy ta'minotni loyihalash
- 6 -qadam: Breadboard -da disk raskadrovka
- 7 -qadam: Uskuna yig'ish
- 8 -qadam: Adobe Illustrator -da elektron uy -joy dizayni
- 9 -qadam: karton prototipi
- 10 -qadam: kontrplak kontrplakining prototipi
- 11 -qadam: yakuniy yig'ilish prototipi
Video: FinduCar: odamlarni mashina turgan joyga yo'naltiruvchi aqlli avtomobil kaliti: 11 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Yuqoridagi muammolarni hal qilish uchun ushbu loyiha odamlarni mashinani to'xtagan joyiga yo'naltiradigan aqlli avtomobil kalitini yaratishni taklif qiladi. Mening rejam - GPS kalitini avtomobil kalitiga qo'shish. Avtomobilni kuzatish uchun smartfon ilovasidan foydalanishning hojati yo'q, barcha ko'rsatmalar faqat avtomobil kalitida ko'rsatiladi.
1 -qadam: qog'oz eskiz
Odamlar mashinani qulflash uchun tugmachani bosganlarida, joylashuv ma'lumoti mikrokontrollerda avtomatik tarzda qayd etilishi mumkin edi. Keyin, odamlar mashinaga borishni boshlaganda, turli xil LEDlar yonadi, ular mashinaning holatiga to'g'ri keladi va miltillovchi chastota mashinaga masofani ko'rsatadi. Ular miltillovchi LEDni osongina kuzatib, mashinani tezda topa oladilar.
2 -qadam: Uskuna ro'yxati
Bu loyihada ishlatiladigan komponentlar. Ba'zilar zarrachalar to'plamidan (non paneli, tugma, sarlavhalar), boshqalari Adafruit rasmiy veb -saytidan (Adafruit Feather M0, Adafruit Ultimate GPS moduli, Lpoly Battery and Coin Cell Battery) va Amazon (NeoPixel Ring - 12 RGB LED) dan sotib olinadi.
3 -qadam: O'chirish dizayni
Neopixel_LED Feather M0 PIN 6 ga ulangan
Button_Unlock Feather M0 PIN 12 kodiga ulangan
Button_Lock Feather M0 ning PIN -kodi 13 ga ulangan
4 -qadam: Uskuna ulanishi
Sarlavhalarni Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing bilan lehimlang. Ikkita taxtani bir -biriga yopishtiring. GPS FeatherWing Feather M0 kartasiga simsiz ulanadi.
5 -qadam: dasturiy ta'minotni loyihalash
Sinov komponentlari
FIX o'qing
bo'sh o'rnatish () {
Serial.println ("GPS echo testi"); Serial.begin (9600); Seriya 1. boshlanishi (9600); // standart NMEA GPS uzatmasi}
void loop () {
if (Serial.available ()) {char c = Serial.read (); Serial 1. yozish (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Blink LED halqasi
Adafruit NeoPixel misollariga qarang.
GPS hisoblash funktsiyalari
Azimutni hisoblang
// Azimutni hisoblang
er -xotin azimut (er -xotin lat_a, juft lon_a, juft lat_b, juft lon_b) {
er -xotin 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 = kvadrat (1-d*d); d = cos (lat_b)*sin (lon_b-lon_a)/d; d = asin (d)*180/PI; qaytish d; }
LED soatidagi vaqtni hisoblang, bu ham avtomobil yo'nalishi
// LED soatidagi vaqtni hisoblang
int led_time (ikki burchakli) {
int bayrog'i = 0; agar (burchak = 15) {burchak_ vaqti = burchak_ vaqti + 1; } agar (bayroq == 1) {burchak_ vaqti = 12 - burchak_ vaqti; } qaytarish burchagi_vaqt; }
Odam va uning mashinasi orasidagi masofani hisoblang
// Masofani hisoblang
er -xotin masofa (er -xotin lat_a, er -xotin uzunlik, er -xotin lat
er -xotin EARTH_RADIUS = 6378137.0; er -xotin radLat1 = (lat_a * PI / 180.0); er -xotin radLat2 = (lat_b * PI / 180.0); er -xotin a = radLat1 - radLat2; er -xotin b = (lon_a - lon_b) * PI / 180.0; er -xotin s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; qaytish s; }
LED displey funktsiyalari
LEDlar aylana bo'ylab yonadi, ular harakatlana boshlaganini ko'rsatadi
// LED halqali yorug'lik birin -ketin navigatsiya boshlanishini ko'rsatadi
void colorWipe (uint32_t c, uint8_t kuting) {
uchun (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); kechiktirish (kutish);}}
LED chastotasini masofaga qarab oling
// LED chastotasini oling
int chastotasi (ikki masofali) {
int f = (int) masofa * 20; qaytish f; }
Mashinaning yo'nalishini ko'rsatadigan LEDni o'chiring
// LED displeyi
strip.clear ();
strip.show (); kechikish (chastota (car_person_distance)); // kechikish (500); strip.setPixelColor (burchak_ vaqti, chiziq. Color (0, 0, 255)); strip.show (); kechikish (chastota (car_person_distance)); // kechikish (500);
// LEDni o'chiring
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Asosiy
#qo'shish Adafruit_GPS.h #o'z ichiga Adafruit_NeoPixel.h #HardwareSerial.h qo'shish #tugmasini qo'shish.h #matematikani qo'shish
#aniqlang Neopixel_LED_PIN 6
#aniqlang Neopixel_LED_NUM 12 #belgilash tugmasi_Lock_PIN 13 #belgilash tugmasi_Unlock_PIN 12 #aniqlang GPSSerial Serial1
#GPSECHO yolg'onini aniqlang
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel tasmasi = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Tugma qulfi (Button_Lock_PIN); Tugma tugmachalarini ochish (Button_Unlock_PIN); int tugmasi_flag = 0; int led_flag = 1; uint32_t taymer = millis (); er -xotin car_lat, car_lon; ikki kishilik avtomobil masofasi; ikki tomonlama harakatlanish yo'nalishi; ikki kar_azimut; ikki kishilik avtomobil burchagi; int burchak_ vaqti;
bo'sh o'rnatish () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // standart NMEA GPS baud strip.begin (); // RMC (tavsiya etilgan minimal) va GGA (ma'lumotlarni tuzatish) balandligini, shu jumladan GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA) ni yoqish uchun bu qatorga izoh qoldirmang; // GPS.sendCommand yangilanish tezligini o'rnating (PMTK_SET_NMEA_UPDATE_1HZ); // 1 gigagertsli yangilanish tezligi // antenna holati bo'yicha yangilanishlarni so'rang, jim turish uchun izoh qoldiring // GPS.sendCommand (PGCMD_ANTENNA); kechikish (1000);}
void loop () {// if (Serial.available ()) {
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); if (GPSECHO) if (c) Serial.print (c); // agar jumla qabul qilinsa, biz nazorat summasini tekshirib ko'rishimiz, uni tahlil qilishimiz mumkin … agar (GPS.newNMEAreceived ()) {// bu erda biz NMEA jumlasini yoki ma'lumotni chop etsak // biz eshitmay qolamiz va boshqa jumlalarni toping! // agar OUTPUT_ALLDATA dan foydalansangiz va Serial.println (GPS.lastNMEA ()) ma'lumotlarini chop etishga harakat qilsangiz, juda ehtiyot bo'ling; // bu, shuningdek, yangi! // biz jumlani tahlil qila olmaymiz, bunda boshqasini kutish kerak // // agar milis () yoki taymer aylansa, biz uni faqat sozlaymiz, agar (taymer> millis ()) taymer = millis (); if (millis () - taymer> 2000) {taymer = millis (); // taymerni qayta o'rnatish Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.sekund, DEC); Serial.print ('.'); Serial.println (GPS.millisekundlari); Serial.print ("Sana:"); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.oy, DEC); Serial.print ("/20"); Serial.println (GPS.yil, DEC); Serial.print ("Tuzatish:"); Serial.print ((int) GPS.fix); Serial.print ("sifat:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Manzil:"); Serial.print (GPS.davlat, 4); Serial.print (GPS.lat); Serial.print (","); Serial.print (GPS. Uzunlik, 4); Serial.println (GPS.lon); Serial.print ("Joylashuv (darajalarda, Google Xaritalar bilan ishlaydi):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Tezlik (tugunlar):"); Serial.println (GPS tezligi); Serial.print ("Burchak:"); Serial.println (GPS.angle); Serial.print ("Balandlik:"); Serial.println (GPS. balandligi); Serial.print ("Sun'iy yo'ldoshlar:"); Serial.println ((int) GPS.satellites); // Avtomobilning GPS -ni saqlang, agar (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // Serial.print ("carLatitude:") disk raskadrovka uchun; Serial.println (car_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Mashinani topishni boshlang, agar (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (strip. Color (0, 255, 0), 500); led_flag = 0; } if (button_flag == 1) {car_person_distance = masofa (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Masofani hisoblang // car_person_distance = masofa (100.0005, 100.0005, 100.0, 100.0); // disk raskadrovka uchun Serial.println (car_person_distance); move_direction = GPS.angle; // harakatlanuvchi yo'nalishni (burchakni) yozib olish // move_direction = 100.0; // Azimutni yozing (burchak) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimut (100.0005, 100.0005, 100.0, 100.0); // LED soatidagi vaqtni hisoblang car_person_angle = car_azimuth - move_direction; burchak_vaqti = LED_ vaqti (mashina_kishi_burchagi); // LED tasmasidagi displey.clear (); strip.show (); // kechikish (chastota (car_person_distance)); kechikish (500); strip.setPixelColor (burchak_ vaqti, chiziq. Color (0, 0, 255)); strip.show (); // kechikish (chastota (car_person_distance)); kechikish (500); // LEDni o'chiring, agar (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
6 -qadam: Breadboard -da disk raskadrovka
7 -qadam: Uskuna yig'ish
8 -qadam: Adobe Illustrator -da elektron uy -joy dizayni
9 -qadam: karton prototipi
Bu qadam korpusning o'lchamini va modelning har bir qismini tasdiqlash uchun ishlatiladi, bunda qutining o'lchami, tugmachaning joylashuvi va LED pozitsiyasi yig'ilgan elektron komponentalarga mos keladi.
10 -qadam: kontrplak kontrplakining prototipi
Bu dastlabki prototip edi. Oxir -oqibat bo'laklardan biriga zaryadlovchini ulash uchun to'rtburchaklar teshik qo'shildi.
11 -qadam: yakuniy yig'ilish prototipi
Tavsiya:
Odamlarni, mashinalarni va boshqalarni aniqlaydigan Raspberry Pi DIY aqlli eshik qo'ng'irog'i: 5 qadam
Odamlar, mashinalar va boshqalarni aniqlay oladigan Raspberry Pi DIY aqlli eshik qo'ng'irog'i: Bu steampunk-ga asoslangan dizayn bizning uyimizdagi aqlli uyning qolgan qismi bilan muloqot qilish uchun uy yordamchisi va ko'p xonali audio tizimimiz bilan birlashtirilgan. Nest yoki boshqa raqobatchilardan biri) Men o'z aqlli eshigimizni qurdik
Arduino mashinalar yordamchisi - har safar mashinangizni to'g'ri joyga qo'ying: 5 qadam (rasmlar bilan)
Arduino avtoturargoh yordamchisi - Har safar mashinangizni to'g'ri joyga qo'ying: Ushbu loyihada men sizga Arudino yordamida avtoturargoh yordamchisini qanday qurishni ko'rsataman. Bu to'xtash joyi yordamchisi sizning mashinangizgacha bo'lgan masofani o'lchaydi va LCD displey o'qilishi va svetodiod yordamida uni to'g'ri joyga qo'yishingizga yordam beradi
Barmoq harakati bilan ishlaydigan aqlli avtomobil: 7 qadam (rasmlar bilan)
Barmoq harakati bilan ishlaydigan aqlli avtomobil: bu mening aqlli avtomobilim, u mobil yoki oddiy masofadan boshqarish bilan ishlamaydi, qo'lqopda ishlaydi, shuning uchun masofadan boshqarish parmog'i barmog'imning harakatidir
GIMP -dan foydalanib, odamlarni/odamlarni/hayvonlarni/robotlarni chindan ham sovuq/yorqin ko'rish (siz tanlagan rang) kabi ko'rinishga keltirishning oddiy/oson/murakkab bo'lmagan usuli
GIMP -dan foydalanib, odamlarni/odamlarni/hayvonlarni/robotlarni chindan ham sovuq/yorqin ko'rish (siz tanlagan rang) kabi ko'rinishga keltirishning juda oddiy/oson/murakkab bo'lmagan usuli: o'qing … sarlavhasini o'qing
Har qanday joyga boradigan masofali mashina: 6 qadam
Har qanday joyga boradigan masofali mashina: bu mashina, siz xohlagan joyga borishingiz mumkin, suv, quruqlik va boshqa joylarga !! Bu mashinani yasash uchun sizga kerak bo'ladigan narsalar:- 1. orqa g'ildirakli dvigateli va old burilish dvigateliga ega eski mashina 2. sizga 9 voltli batareyalardan 2 tasi 3.2 yoki 1 kerak bo'ladi