Мазмұны:
- 1 -қадам: Қағаз эскизі
- 2 -қадам: Жабдықтардың тізімі
- 3 -қадам: схеманы жобалау
- 4 -қадам: Жабдыққа қосылу
- 5 -қадам: Бағдарламалық жасақтама дизайны
- 6 -қадам: Breadboard -де күйін келтіру
- 7 -қадам: аппараттық құралдарды жинау
- 8 -қадам: Adobe Illustrator -да электронды корпустың дизайны
- 9 -қадам: картоннан жасалған прототип
- 10 -қадам: қайың фанерасының прототипі
Бейне: FinduCar: Ақылды автокөлік кілті адамдарды көлік тұрған жерге бағыттайды: 11 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Жоғарыда айтылған мәселелерді шешу үшін бұл жоба адамдарды көлікті қойған жеріне бағыттай алатын ақылды автокөліктің кілтін жасауды ұсынады. Менің жоспарым - GPS кілтін көлік кілтіне енгізу. Көлікті қадағалау үшін смартфон қосымшасын пайдаланудың қажеті жоқ, барлық нұсқаулар тек көлік кілтінде көрсетіледі.
1 -қадам: Қағаз эскизі
Адамдар көлікті құлыптау үшін түймені басқанда, орналасқан жер туралы ақпарат микроконтроллерге автоматты түрде жазылуы мүмкін. Содан кейін, адамдар автокөлікке бара бастағанда, әр түрлі жарық диоды көліктің орнына қарай жанып тұрады және жыпылықтау жиілігі автомобильге дейінгі қашықтықты көрсетеді. Олар жыпылықтайтын жарықдиодты оңай қадағалап, көлікті тез таба алады.
2 -қадам: Жабдықтардың тізімі
Бұл осы жобада қолданылатын компоненттер. Кейбіреулер бөлшектер жиынтығынан (нан тақтасы, түйме, тақырыптар), басқалары Adafruit ресми сайтынан (Adafruit Feather M0, Adafruit Ultimate GPS модулі, Lpoly батареясы мен монеталық ұялы батарея) және Amazon -дан (NeoPixel Ring - 12 RGB LED) сатып алынады.
3 -қадам: схеманы жобалау
Neopixel_LED Feather M0 PIN 6 -ға қосылған
Button_Unlock Feather M0 PIN 12 -ге қосылған
Button_Lock Feather M0 PIN 13 -ке қосылған
4 -қадам: Жабдыққа қосылу
Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing көмегімен тақырыптарды дәнекерлеңіз. Екі тақтаны біріктіріңіз. GPS FeatherWing сымсыз Feather M0 тақтасына қосылады.
5 -қадам: Бағдарламалық жасақтама дизайны
Тест компоненттері
FIX оқу
жарамсыз орнату () {
Serial.println («GPS жаңғырық сынағы»); Serial.begin (9600); Сериялық1.баста (9600); // әдепкі NMEA GPS бады}
void loop () {
if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Жыпылықтайтын жарықдиодты сақина
Adafruit NeoPixel мысалдарын қараңыз.
GPS есептеу функциялары
Азимутты есептеңіз
// Азимутты есептеңіз
қос азимут (қос лат_а, қос лон_а, қос лат_б, қос лон_б) {
қос 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 (лат_а)*күнә (лат_б)+кос (лат_а)*кос (лат_б)*кос (лон_б-лон_а); d = sqrt (1-d*d); d = cos (лат_б)*күнә (lon_b-lon_a)/d; d = asin (d)*180/PI; қайтару d; }
Жарық диодты сағаттағы уақытты есептеңіз, ол сонымен қатар көліктің бағыты
// Жарықдиодты сағаттағы уақытты есептеңіз
int led_time (қос бұрыш) {
int жалаушасы = 0; егер (бұрыш = 15) {бұрыш_ұнақ = бұрыш_уақыт + 1; } if (flag == 1) {angle_time = 12 - angle_time; } қайтару бұрышы_ уақыты; }
Адам мен оның көлігі арасындағы қашықтықты есептеңіз
// Қашықтықты есептеңіз
қос қашықтық (қос лат_а, қос лон_а, қос лат_б, қос лон_б) {
қос EARTH_RADIUS = 6378137.0; қос radLat1 = (lat_a * PI / 180.0); қос radLat2 = (lat_b * PI / 180.0); қос a = radLat1 - radLat2; қос b = (lon_a - lon_b) * PI / 180.0; қос s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; қайтару с; }
Жарықдиодты дисплейдің функциялары
Светодиодтарды шеңберге жағыңыз, ол шарлауды бастайды
// Жарықдиодты жарықдиодты жарықтандыру бірінен соң бірі шарлаудың басталатынын көрсетеді
жарамсыз colorWipe (uint32_t c, uint8_t күте тұрыңыз) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); кешіктіру (күту);}}
Жарық диодты жиілікті қашықтыққа сәйкес алыңыз
// Жарық диодты жиілікті алу
int жиілігі (қос қашықтық) {
int f = (int) қашықтық * 20; қайтару f; }
Көліктің бағытын көрсететін белгілі бір жарық диодты жыпылықтаңыз
// Жарық диодты дисплейде
strip.clear ();
strip.show (); кідіріс (жиілік (car_person_distance)); // кешіктіру (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); кідіріс (жиілік (car_person_distance)); // кешіктіру (500);
// Жарық диодты өшіру
if (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }
Негізгі
#қосу Adafruit_GPS.h #қосу Adafruit_NeoPixel.h #HardwareSerial.h #қосу батырмасы.h #математиканы қосу.h
#неопиксельді_LED_PIN анықтау 6
#неопиксельді_LED_NUM 12 анықтау
#GPSECHO жалғанын анықтаңыз
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel жолағы = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Түймені құлыптау (Button_Lock_PIN); Түймені_құлыптан босату (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t таймері = миллис (); қосарланған автокөлік, автокөлік_лон; автокөлік_адамының_қашықтығы; қос қозғалыс бағыты; қосарлы автомобиль_азимут; қосарланған_адам_бұрышы; int angle_time;
жарамсыз орнату () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // әдепкі NMEA GPS baud strip.begin (); // GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA) биіктігін қосқанда RMC (ұсынылатын минимум) мен GGA (деректерді түзету) қосу үшін осы жолға түсініктеме бермеңіз; // GPS.sendCommand жаңарту жылдамдығын орнатыңыз (PMTK_SET_NMEA_UPDATE_1HZ); // 1 Гц жаңарту жылдамдығы // Антенна күйі туралы жаңартуларды сұрау, үндемеу үшін пікір қалдырыңыз // GPS.sendCommand (PGCMD_ANTENNA); кешіктіру (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); // егер сөйлем қабылданса, біз бақылау сомасын тексере аламыз, оны талдай аламыз … if (GPS.newNMEAreceived ()) {// бұл жерде біз NMEA сөйлемін немесе деректерді басып шығарсақ, біз тыңдамаймыз. басқа сөйлемдерді есту! // сондықтан OUTPUT_ALLDATA пайдалану мен Serial.println (GPS.lastNMEA ()) деректерін басып шығаруға тырысқанда өте сақ болыңыз; // бұл сондай -ақ newNMEAreceived () жалаушасын жалғанға орнатады, егер (! GPS.parse (GPS.lastNMEA ())) // бұл сонымен қатар newNMEAreceived () жалаушасын жалған қайтаруға қояды; // біз сөйлемді талдай алмаймыз, бұл жағдайда басқасын күту керек} // // егер миллис () немесе таймер айналса, біз оны қалпына келтіреміз, егер (таймер> миллис ()) таймер = миллис (); if (миллис () - таймер> 2000) {таймер = миллис (); // Serial.print таймерін қалпына келтіру («\ nУақыт:»); 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 («Күні:»); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.month, DEC); Serial.print («/20»); Serial.println (GPS.жыл, DEC); Serial.print («Түзету:»); Serial.print ((int) GPS.fix); Serial.print («сапасы:»); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print («Орналасқан жері:»); Serial.print (GPS.сатылым, 4); Serial.print (GPS.lat); Serial.print («,»); Serial.print (GPS. Ұзындық, 4); Serial.println (GPS.lon); Serial.print («Орналасуы (градус бойынша, Google Maps -пен жұмыс істейді):»); Serial.print (GPS.latitudeDegrees, 4); Serial.print («,»); Serial.println (GPS.longitudeDegrees, 4); Serial.print («Жылдамдық (түйіндер):»); Serial.println (GPS.speed); Serial.print («Бұрыш:»); Serial.println (GPS.angle); Serial.print («Биіктік:»); Serial.println (GPS.altitude); Serial.print («Жерсеріктер:»); Serial.println ((int) GPS.satellites); // Көліктің GPS сақтаңыз, егер (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // Serial.print («carLatitude:») күйін келтіру үшін; Serial.println (car_lat); Serial.print («carLongitude:»); Serial.println (car_lon); } // Көлікті табуды бастаңыз, егер (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 = қашықтық (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Қашықтықты есептеңіз // car_person_distance = қашықтық (100.0005, 100.0005, 100.0, 100.0); // Serial.println (car_person_distance) күйін келтіру үшін; move_direction = GPS.angle; // Жылжымалы бағытты (бұрышты) жазыңыз // move_direction = 100.0; // Азимутты жазыңыз (бұрыш) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimuth (100.0005, 100.0005, 100.0, 100.0); // Жарықдиодты сағаттағы уақытты есептеңіз car_person_angle = car_azimuth - move_direction; бұрыштық_уақыт = led_time (car_person_angle); // Жарық диодты жолақта дисплей.clear (); strip.show (); // кідіріс (жиілік (car_person_distance)); кешіктіру (500); strip.setPixelColor (angle_time, strip. Color (0, 0, 255)); strip.show (); // кідіріс (жиілік (car_person_distance)); кешіктіру (500); // Светодиодты өшіріңіз, егер (button_flag == 1 && car_person_distance <5.0) {button_flag = 0; led_flag = 1; strip.clear (); strip.show (); }}} //}}}
6 -қадам: Breadboard -де күйін келтіру
7 -қадам: аппараттық құралдарды жинау
8 -қадам: Adobe Illustrator -да электронды корпустың дизайны
9 -қадам: картоннан жасалған прототип
Бұл қадам корпустың өлшемін және модельдің әрбір бөлігін растау үшін пайдаланылады, қораптың өлшемі мен түйменің орналасуы мен жарық диодты орналасуы жинақталған электронды компоненттерге сәйкес келетініне көз жеткізіңіз.
10 -қадам: қайың фанерасының прототипі
Бұл алғашқы прототип болды. Ақырында бөліктердің біріне зарядтағышты қосуға арналған төртбұрышты тесік қосылды.
Ұсынылған:
Raspberry Pi DIY ақылды есік қоңырауы адамдарды, автокөліктерді және т.б. анықтай алады: 5 қадам
Raspberry Pi DIY ақылды есік қоңырауы адамдарды, автокөліктерді және т. Nest немесе басқа бәсекелестердің бірі) Мен өзіміздің есікті есікті құрдық
Жаңадан бастаушының автокөлік соқтығысуын болдырмайтын автокөлік: 7 қадам
Жаңадан бастаушының автокөлік соқтығысуын болдырмайтын автокөлік: Сәлеметсіз бе! Менің жаңадан үйренетін нұсқаулыққа қош келдіңіз, соқтығысуды болдырмайтын және GPS навигациясы бар өздігінен жүретін роботты автокөлікті қалай жасауға болады. Жоғарыда роботты көрсететін YouTube бейнесі бар. Бұл нағыз автономияны көрсетудің үлгісі
Саусақпен қозғалатын ақылды көлік: 7 қадам (суреттермен)
Саусақ қозғалысы арқылы жұмыс істейтін ақылды автокөлік: бұл менің ақылды автокөлігім, ол мобильді немесе қалыпты қашықтан басқару пультімен жұмыс істемейді, ол қолғаппен жұмыс істейді, сондықтан пульт саусағымның қозғалысы
Адамдарды/адамдарды/жануарларды/роботтарды GIMP көмегімен шынымен салқын/жарқын жылу көрінісі (сіздің таңдауыңыздың түсі) сияқты етіп көрсетудің қарапайым/қарапайым/күрделі емес әдісі: 4 қадам
GIMP көмегімен адамдарды/адамдарды/жануарларды/роботтарды шынымен де салқын/жарқын жылулық көрінісі (сіздің таңдауыңыздың түсі) бар етіп көрсетудің қарапайым/қарапайым/күрделі емес әдісі: … тақырыбын оқыңыз
Кез келген жерге бара алатын қашықтағы көлік: 6 қадам
Кез келген жерге бара алатын қашықтағы көлік: бұл көлік, сіз қалаған жерге су, жер және тағы басқа жерлерге бара алады !! Бұл автокөлікті жасау үшін сізге қажет нәрселер:- 1. артқы дөңгелектері бар қозғалтқышы бар алдыңғы машинасы бар ескі автокөлік 2. сізге 9 вольтты 2 батарея 3.2 немесе 1 қажет