Satura rādītājs:

Vienkārša Arduino robotikas platforma!: 5 soļi
Vienkārša Arduino robotikas platforma!: 5 soļi

Video: Vienkārša Arduino robotikas platforma!: 5 soļi

Video: Vienkārša Arduino robotikas platforma!: 5 soļi
Video: $5 WiFi Camera Setup | ESP32 Wifi Setup view on Mobile phone 2024, Jūlijs
Anonim
Vienkārša Arduino robotikas platforma!
Vienkārša Arduino robotikas platforma!
Vienkārša Arduino robotikas platforma!
Vienkārša Arduino robotikas platforma!

Es tikko saņēmu Arduino pēc tam, kad Robotikas komandas sanāksmju laikā spēlējos ar dažiem AVR mikrokontrolleriem. Man patika ideja par patiešām lētu programmējamu mikroshēmu, kas varētu darbināt gandrīz jebko no vienkāršas datora saskarnes, tāpēc es saņēmu Arduino, jo tai jau ir jauka tāfele un USB saskarne. Savam pirmajam Arduino projektam es izraku Vex Robotics komplektu, ko biju atradis dažās sacensībās, kuras veicu vidusskolā. Es vienmēr gribēju izveidot robotizētu platformu ar datoru, bet Vex mikrokontrolleram ir nepieciešams programmēšanas kabelis, kas man nebija. Es nolēmu izmantot savu jauno Arduino (un varbūt vēlāk tukšu AVR mikroshēmu, ja tā darbosies), lai vadītu platformu. Galu galā es vēlos iegūt netbook, un tad es varu vadīt robotu, izmantojot WiFi, un attālināti apskatīt tā tīmekļa kameru.

Man izdevās iegūt pienācīgu sērijas protokolu un vienkāršu piemēru, kas virza robotu, izmantojot Xbox 360 kontrolieri, kas savienots ar Linux datoru.

1. darbība: ko tā var darīt…

Ko tas spēj…
Ko tas spēj…
Ko tas spēj…
Ko tas spēj…

Arduino ir ļoti universāla platforma. Mans galvenais mērķis bija tikai panākt, lai Arduino savienotu divus Vex motorus ar datoru, taču man bija daudz atlikušo ievades/izvades tapu un nolēmu pievienot dažas papildu lietas. Pašlaik man ir RGB gaismas diode seriālā porta statusam (zaļa, ja paketes ir labas, sarkana, ja tās ir sliktas) un datora ventilators, ko darbina tranzistors. Es varu arī pievienot slēdžus un sensorus, bet es vēl neesmu ievietojis nevienu no tiem. Labākais par to ir tas, ka jūs varat pievienot visu, ko vēlaties Arduino robotam. Nepieciešams tikai nedaudz interfeisa koda, lai kontrolētu papildu lietas un ievadītu datoru.

2. darbība. Daļas

Daļas
Daļas
Daļas
Daļas
Daļas
Daļas

Savam robotam es izmantoju dažas dažādas detaļas. Lielākā daļa detaļu bija no vecām lietām, kuras es noliku pa pagrabu. 1) Arduino Duemilanove ar ATMega328 Šis ir jaunākais Arduino, un, tā kā es to tikko saņēmu pirms dažām dienām, man ir jaunākais. Tomēr kods ir pietiekami mazs, tāpēc tam vajadzētu viegli iekļauties jebkurā Arduino. Tas, iespējams, pat varētu ietilpt ATTiny (ja es būvētu robota kontrolieri, izņemot Arduino, ATTiny 2313 izskatās kā laba izvēle, tas ir mazāks un lētāks, bet tajā joprojām ir daudz izeju un sērijas UART interfeiss) 2) Vex Robotics PlatformI pirms dažiem gadiem saņēmu Vex komplektu, lai izveidotu radio vadāmu robotu, lai paņemtu lietas vidusskolas sacensībām. Es izveidoju pamata "kvadrātveida robotu" bāzi, kurai ir 4 riteņi, kurus darbina divi motori. Jūs varat aizstāt citas robotu bāzes, ja jums ir kāda cita platforma, kuru vēlaties vadīt. Svarīgi atzīmēt, ka Vex motori būtībā ir nepārtrauktas rotācijas servo, tie izmanto impulsa platuma modulāciju, lai norādītu, cik ātri un kādā virzienā jāgriežas. Vex motori ir jauki, jo tiem ir augsts darba spriegumu diapazons, apmēram 5 līdz 15 volti. Es izmantoju 12V, jo man bija 12V akumulators. Lielākajai daļai standarta hobiju servo ierīču jums būs nepieciešams zemāks spriegums (bieži vien 6 volti). 3) Akumulators Robots ir bezjēdzīgs bez barošanas avota. Pārbaudei es izmantoju standarta 9V sienas kārpu adapteri no RadioShack, bet bezvadu darbībai es atradu 12V NiMH akumulatoru senā klēpjdatorā. Lai gan tas nespēj pietiekami uzlādēt, lai palaistu klēpjdatoru, tas manu Vex robotu vada lieliski. Tas var arī darbināt Arduino, izmantojot strāvas savienotāja Vin ieejas tapu, Arduino noregulēs 12 V līdz 5 un pat izvadīs to no 5 V izejas tapas uz strāvas savienotāja. 4) Basic Breadboard visu vadu. Galu galā es iegūstu jaukāku prototipēšanas dēli un lodēt uz dažiem pastāvīgākiem savienojumiem, bet pagaidām maizes dēlis ļauj viegli mainīt lietas. Mans maizes dēlis ir SparkFun "pamata maizes dēlis", tikai maizes dēlis uz metāla plāksnes ar 3 spailēm.5) Uz MAX232 balstīts RS232-TTL pārveidotājs Ja vēlaties vadīt savu robotu, izmantojot RS-232 seriālā porta savienojumu (pretstatā Arduino iebūvētajam) USB) varat izmantot RS232-TTL pārveidotāju. Es izmantoju MAX232, jo daži no tiem gulēja, un es to lodēju uz neliela prototipēšanas dēļa gabala ar nepieciešamajiem kondensatoriem. Man ir nepieciešams RS-232, jo manam vecajam klēpjdatoram ir tikai viens USB ports, un es to izmantoju, lai spēļu kontrolieris vadītu robotu. 6) Papildu detaļas pēc vēlēšanās Lai atvieglotu sērijas protokola atkļūdošanu, es uz tā ievietoju RGB LED (Es saņēmu vienu ar manu Arduino pasūtījumu, jo tie izklausījās forši). Gaisma secīgi mirgo sarkanā, zaļā, zilā krāsā, kad Arduino sāk darboties, lai parādītu, ka robots ir atsāknējies, un pēc tam iedegas zaļā krāsā, kad ir saņemta motora pakete, zila, kad ir saņemta ventilatora pakete, un sarkana, ja ir slikta vai nezināma paciņa ir saņemta. Lai darbinātu ventilatoru, es izmantoju standarta NPN tranzistoru (tos pašus, ko es demonstrēju savā pēdējā Instructable) un rezistoru starp tranzistoru un Arduino (tranzistors pārāk daudz strāvas un uzsildīja Arduino, tāpēc es ievietoju ierobežojumu rezistors, lai to apturētu).

3. darbība: Arduino un datora programmēšana

Arduino un datora programmēšana
Arduino un datora programmēšana

Lai ieprogrammētu Arduino, jums acīmredzami būs nepieciešama Arduino programmatūra un USB kabelis. Varat arī programmēt Arduino, izmantojot seriālo portu un TTL līmeņa pārveidotāju, ja datoram ir seriālais ports. Ņemiet vērā, ka USB seriālais interfeiss nesazinās ar Arduino ATMega procesoru, ja Arduino sērijas tapām (0 un 1 tapas) ir pievienots līmeņa pārveidotājs, tāpēc pirms USB izmantošanas atvienojiet to. Arduino mums būs nepieciešams seriālais interfeiss, kas ļauj Dators motoru vadīšanai. Mums būs nepieciešama arī PWM servopiedziņas sistēma, lai nosūtītu pareizos signālus uz Vex motoriem un pārliecinātos, ka, ja tiek norādītas pareizās vērtības, tie virzās pareizajos virzienos. Es arī pievienoju vienkāršu LED mirgošanu, galvenokārt statusa norādīšanai, bet arī tāpēc, ka tas izskatās forši. Datorā mums būs jāatver seriālais ports un jānosūta datu rāmji, kurus Arduino programma sapratīs. Datoram arī jānāk klajā ar motora vērtībām. Vienkāršs veids, kā to izdarīt, ir izmantot USB spēļu spilventiņu vai kursorsviru, es izmantoju Xbox 360 kontrolieri. Vēl viena iespēja ir izmantot tīklā savienotu datoru (vai nu netbook, vai nelielu mini ITX plāksni), lai pats vadītu bezvadu savienojumu. Izmantojot netbook, jūs pat varat izmantot iebūvēto tīmekļa kameru, lai straumētu atpakaļ video plūsmu un attālināti vadītu savu robotu. Iestatīšanai tīkla programmēšanai izmantoju Linux ligzdu sistēmu. Viena programma ("kursorsviru serveris") tiek palaista atsevišķā personālajā datorā, kuram ir pievienots kontrolieris, un cita programma ("klients") tiek palaista netbook, kas savienots ar Arduino. Tas savieno abus datorus un nosūta kursorsviras informāciju uz netbook, kas pēc tam nosūta sērijveida paketes uz Arduino, kas vada robotu. Lai izveidotu savienojumu ar Arduino, izmantojot Linux datoru (C ++), vispirms ir jāatver sērijas ports pareizajā vietā bodu ātrumu un pēc tam nosūtiet vērtības, izmantojot protokolu, kuru esat izmantojis arī Arduino kodā. Mans sērijas formāts ir vienkāršs un efektīvs. Es izmantoju 4 baitus uz "rāmi", lai nosūtītu divus motora ātrumus (katrs ir viens baits). Pirmais un pēdējais baits ir kodētas vērtības, kuras tiek izmantotas, lai Arduino nesūtītu nepareizu baitu uz PWM kodu un izraisītu motoru trakošanu. Tas ir RGB gaismas diodes galvenais mērķis, tas mirgo sarkanā krāsā, kad sērijas kadrs bija nepilnīgs. 4 baiti ir šādi: 255 (kodēts "sākuma" baits),,, 200 (grūti kodēts "beigu" baits) Lai nodrošinātu drošu datu uztveršanu, pārliecinieties, ka starp programmu cilpām ir pietiekami daudz laika. Ja datora kodu darbināsit pārāk ātri, tas pārpludinās ostu un Arduino var sākt pilināt vai pat nepareizi nolasīt baitus. Pat ja tas nezaudē informāciju, tas var arī pārpildīt Arduino seriālā porta buferi. Vex motoriem es izmantoju Arduino Servo bibliotēku. Tā kā Vex motori ir tikai nepārtrauktas rotācijas motori, tie izmanto tieši to pašu signālu, ko izmanto servos. Tomēr tā vietā, lai centrālais punkts būtu 90 grādi, tas ir apstāšanās punkts, kurā motors negriežas. Nolaižot "leņķi", motors sāk griezties vienā virzienā, bet leņķa pacelšana liek griezties otrā virzienā. Jo tālāk no centra punkta atrodaties, jo ātrāk motors griežas. Lai gan tas neko nesabojās, ja uz motoriem nosūtīsit vērtības, kas lielākas par 180 grādiem, es ieteiktu ierobežot vērtības no 0 līdz 180 grādiem (kas šajā gadījumā ir ātruma palielinājumi). Tā kā es gribēju lielāku kontroli un mazāk nekontrolējamu robotu vadīšanu, es savai programmai pievienoju programmatūras "ātruma ierobežojumu", kas neļauj ātrumam palielināties virs 30 "grādiem" abos virzienos (diapazons ir 90 +/- 30). Es plānoju pievienot seriālā porta komandu, kas maina ātruma ierobežojumu, lai dators varētu ātri noņemt ātrumu, ja vēlaties ātri (esmu testējis mazās telpās, tāpēc nevēlos, lai tas paātrinātu un ietriekties sienā, it īpaši ar netbook uz tā). Lai iegūtu vairāk informācijas, lejupielādējiet pievienoto kodu šīs pamācības beigās.

4. solis: pievienojiet Netbook, lai no attāluma izpētītu nezināmas pasaules

Pievienojiet Netbook, lai no attāluma izpētītu nezināmas pasaules
Pievienojiet Netbook, lai no attāluma izpētītu nezināmas pasaules
Pievienojiet Netbook, lai no attāluma izpētītu nezināmas pasaules
Pievienojiet Netbook, lai no attāluma izpētītu nezināmas pasaules

Ja jūsu Arduino robotā ir viss dators, jūs varat vadīt savu robotu no tā, cik jūsu WiFi var sasniegt bez vadiem, lai ierobežotu robotu tikai vienā apgabalā. Labs kandidāts šim darbam ir netbook, jo netbooks ir niecīgi, viegli, tiem ir iebūvēts akumulators, tiem ir WiFi, un lielākajai daļai pat ir iebūvētas tīmekļa kameras, kuras var izmantot, lai straumētu robota skatu atpakaļ drošā vietā. var to kontrolēt. Turklāt, ja jūsu netbook ir aprīkots ar mobilo platjoslas pakalpojumu, jūsu diapazons ir praktiski neierobežots. Ja ir pietiekami daudz bateriju, jūs varētu aizvest savu robotu uz vietējo picas vietu un veikt pasūtījumu, izmantojot tīmekļa kameru (nav ieteicams, roboti parasti nav atļauti picu vietās, pat ja tie būtu cilvēki, iespējams, mēģinās robotu nozagt, un varbūt pat pica). Tas var būt arī labs veids, kā no biroja krēsla ērti izpētīt pagraba tumšos dziļumus, lai gan dažu lukturu pievienošana šajā gadījumā var būt ļoti noderīga.

Ir daudz veidu, kā to panākt, daudzi, iespējams, ir daudz vieglāk nekā manējie, lai gan es neesmu pazīstams ar apstrādes vai skriptu valodām, tāpēc es izvēlējos izmantot Linux un C ++, lai izveidotu bezvadu vadības saiti starp manu bāzes staciju (aka veco ThinkPad) un manu jauno Lenovo IdeaPad netbook, kas ir savienots ar Arduino diskdzini. Abos datoros darbojas Ubuntu. Mans ThinkPad ir pievienots manas skolas LAN un mans IdeaPad ir pievienots manam WiFi piekļuves punktam, kas ir savienots arī ar skolas LAN (es nevarēju iegūt uzticamu video straumi no skolas WiFi, jo visi citi to izmanto, tāpēc es iestatīju izveidot savu maršrutētāju, lai nodrošinātu labu savienojumu). Labs savienojums manā gadījumā ir īpaši svarīgs, jo neesmu ieviesis nevienu kļūdu pārbaudi vai taimautu. Ja tīkla savienojums pēkšņi pārtrūkst, robots turpina darboties, līdz kaut kas ietriecas vai es skrienu un apturu to. Tas ir galvenais faktors, kas noteica manu lēmumu palēnināt piedziņu, gan samazinot motorus, gan ieviešot programmatūras ātruma ierobežojumu.

5. darbība: iegūstiet video plūsmu

Kad jūsu robotu pētnieks varēs braukt bezvadu režīmā, iespējams, vēlēsities iegūt video plūsmu no netbook, lai jūs varētu pateikt, kur atrodas jūsu robots. Ja jūs izmantojat Ubuntu (vai pat ja jūs to nedarāt!), Es ieteiktu straumēšanai izmantot VLC Media Player. Ja neesat to instalējis, jums patiešām trūkst, tāpēc instalējiet to, izmantojot komandu "sudo apt-get install vlc", pārlūkojiet VLC Ubuntu programmatūras centrā (tikai 9.10) vai lejupielādējiet instalētāju vietnē videolan. org, ja izmantojat Windows. Jums būs nepieciešama VLC, kas darbojas abos datoros. VLC spēj straumēt, kā arī atskaņot straumes tīklā. Netbook datorā (robota datorā) vispirms pārliecinieties, vai jūsu tīmekļa kamera (vai nu iebūvēta, vai savienota ar USB) darbojas, noklikšķinot uz Atvērt uztveršanas ierīci un izmēģinot Video operētājsistēmai Linux 2 (dažām vecākām ierīcēm var būt nepieciešams video operētājsistēmai Linux, nevis jaunajai 2 versijai). Jums vajadzētu redzēt kameras skatu netbook ekrānā. Lai to straumētu, izvēlnē Fails atlasiet Straumēšana un pēc tam parādītā loga augšdaļā izvēlieties cilni Capture Device. Atcerieties, ka Ubuntu (un daudzi citi Linux distributīvi) ļauj turēt nospiestu taustiņu Alt, lai noklikšķinātu un vilktu ekrānam pārāk lielus logus (īpaši noderīgi vecākiem netbook datoriem, lai gan pat manam IdeaPad bez redzama iemesla ir nepāra 1024x576 izšķirtspēja). Lai samazinātu kavēšanos, noklikšķiniet uz "Rādīt vairāk opciju" un samaziniet kešatmiņas vērtību. Summa, ko varat pazemināt, dažkārt ir atkarīga no ierīces. Pārāk daudz pazeminot, tā kļūst nestabila. Pēc 300 ms jūs varat nedaudz aizkavēties, bet tas nav pārāk slikti.

Pēc tam noklikšķiniet uz Straume, lai pārietu uz nākamo izvēlni. Noklikšķiniet uz Tālāk, pēc tam atlasiet un pievienojiet HTTP kā jaunu galamērķi. Tagad iestatiet pārkodēšanu, lai straume būtu mazāka. Es izveidoju pielāgotu profilu, kas izmanto M-JPEG ar ātrumu 60 kb/s un 8 kadri sekundē. Tas ir tāpēc, ka, izmantojot modernu kodeku, piemēram, MPEG vai Theora, netbook datora Atom procesorā tiks patērēts milzīgs CPU laiks, un tas var novest pie tā, ka jūsu video plūsma tiks pārtraukta bez redzama iemesla. MJPEG ir vienkāršs kodeks, kuru ir viegli lietot ar zemu bitu pārraides ātrumu. Pēc straumes sākšanas atveriet VLC savā otrā datorā, atveriet tīkla straumi, atlasiet HTTP un pēc tam ierakstiet sava netbook IP adresi (vietējo vai interneta atkarībā no savienojuma veida), kam seko ": 8080". Ports ir jānorāda nepāra iemesla dēļ, pretējā gadījumā tas rada kļūdas. Ja jums ir pienācīgs savienojums, jums vajadzētu redzēt tīmekļa kameras plūsmu citā datorā, taču tam būs neliela (apmēram sekunde) aizkavēšanās. Es precīzi nezinu, kāpēc šī kavēšanās notiek, bet es nevaru saprast, kā no tā atbrīvoties. Tagad atveriet vadības lietotni un sāciet vadīt savu netbook robotu. Uzziniet, kā kavēšanās darbojas braukšanas laikā, lai jūs neiekļūtu nekādā gadījumā. Ja tas darbojas, jūsu netbook robots ir pabeigts.

Ieteicams: