Sisukord:

Lihtne Arduino robootikaplatvorm!: 5 sammu
Lihtne Arduino robootikaplatvorm!: 5 sammu

Video: Lihtne Arduino robootikaplatvorm!: 5 sammu

Video: Lihtne Arduino robootikaplatvorm!: 5 sammu
Video: Controlling Arduino Board via Pyserial Library and Serial Port - RC Circuit Example 2024, Juuli
Anonim
Lihtne Arduino robootikaplatvorm!
Lihtne Arduino robootikaplatvorm!
Lihtne Arduino robootikaplatvorm!
Lihtne Arduino robootikaplatvorm!

Sain just Arduino pärast seda, kui olin Robootika meeskonna koosolekutel mõne AVR -i mikrokontrolleriga ringi mänginud. Mulle meeldis idee tõeliselt odavast programmeeritavast kiibist, mis võiks lihtsast arvutiliidesest peaaegu kõike käivitada, nii et ma sain Arduino, kuna sellel on juba kena plaat ja USB -liides. Oma esimese Arduino projekti jaoks kaevasin välja Vex Robotics komplekti, mille olin pannud keskkoolis toimunud võistlustelt. Olin alati tahtnud teha arvutipõhist robootikaplatvormi, kuid Vexi mikrokontroller vajab programmeerimiskaablit, mida mul polnud. Otsustasin platvormi juhtimiseks kasutada oma uut Arduinot (ja võib -olla hiljem ka paljast AVR -kiipi, kui selle tööle saan). Lõpuks tahan saada netbooki ja siis saan juhtida robotit WiFi abil ja vaadata selle veebikaamerat eemalt.

Mul õnnestus hankida korralik jadaprotokoll ja lihtne näide, mis juhib robotit, kasutades Linuxi arvutiga ühendatud Xbox 360 kontrollerit.

Samm: mida see saab teha…

Mida see teha saab…
Mida see teha saab…
Mida see suudab…
Mida see suudab…

Arduino on väga mitmekülgne platvorm. Minu põhieesmärk oli lihtsalt panna Arduino ühendama arvutiga kaks Vex -mootorit, kuid mul oli palju sisend-/väljundnuppe üle jäänud ja otsustasin lisada lisakraami. Praegu on mul RGB LED jadapordi oleku jaoks (roheline, kui paketid on head, punased, kui need on halvad) ja arvuti ventilaator, mida juhib transistor. Ma võin lisada ka lüliteid ja andureid, kuid ma ei pannud veel ühtegi neist. Parim asi selles on see, et saate Arduino robotile lisada kõik, mida soovite. Lisakraami juhtimiseks ja arvutisse sisestamiseks kulub vaid natuke liidesekoodi.

2. samm: osad

Osad
Osad
Osad
Osad
Osad
Osad

Oma roboti jaoks kasutasin mõnda erinevat osa. Enamik osi olid pärit vanadest asjadest, mis mul keldri ümber asetati. 1) Arduino Duemilanove w/ ATMega328 See on uusim Arduino ja kuna ma just paar päeva tagasi selle sain, on mul uusim. Kood on aga piisavalt väike, et see sobiks kergesti igale Arduinole. See sobiks ilmselt isegi ATTiny -le (kui ma ehitaksin robotkontrolleri peale Arduino, tundub ATTiny 2313 hea valik, see on väiksem ja odavam, kuid sellel on siiski palju väljundeid ja UART -liides) 2) Vex Robotics PlatformI sai paar aastat tagasi Vexi komplekti, et ehitada raadio teel juhitav robot, et korjata kraami keskkooli võistluseks. Ehitasin põhilise "ruudukujulise" aluse, millel on 4 ratast, mida juhivad kaks mootorit. Kui teil on mõni muu platvorm, millega soovite sõita, võite asendada muud robotibaasid. Oluline on märkida, et Vex mootorid on sisuliselt pideva pöörlemise servod, nad kasutavad impulsi laiuse modulatsiooni, et anda märku, kui kiiresti ja mis suunas pöörata. Vexi mootorid on toredad, kuna neil on suur tööpinge, vahemikus 5 kuni 15 volti. Ma kasutan 12V, kuna mul oli 12V aku. Enamiku tavaliste hobi -servode jaoks on vaja madalamat pinget (sageli 6 volti).3) AkuA Robot on ilma toiteallikata kasutu. Testimiseks kasutan RadioShacki standardset 9V seinaküünalde adapterit, kuid juhtmeta tööks leidsin 12V NiMH akupaketi vanast sülearvutist. Ehkki sülearvuti käitamiseks ei jätku piisavalt laadimist, sõidab see minu Vex -robotiga suurepäraselt. Arduino saab toita ka toitepistiku Vini sisendpoldi abil, Arduino reguleerib 12 V kuni 5 ja väljastab selle isegi toitepistiku 5 V väljundpistikust. 4) Põhiline leivaplaat traatida kõik. Lõpuks saan kenama prototüüpimisplaadi ja jootmise mõnele püsivamale ühendusele, kuid praeguseks on leivalaud lihtne asju muuta. Minu leivaplaat on SparkFuni „põhiline leivalaud”, lihtsalt kolme klemmiga metallplaadil olev leivaplaat.5) MAX232-põhine RS232-TTL-muundur USB-s) saate kasutada RS232-TTL-muundurit. Ma kasutan MAX232, sest mul oli mõni neist lebamas ja jootsin selle vajaliku kondensaatoriga prototüüpimisplaadile. Mul on vaja RS-232, kuna mu vanal sülearvutil on ainult üks USB-port ja ma kasutan seda mängu juhtimiseks, et robotit juhtida. 6) Lisaosad vastavalt soovile Jadaprotokolli lihtsaks silumiseks panin sellele RGB LED-i (sain ühe oma Arduino tellimusega, sest need kõlasid lahedalt). Tuli vilgub järjest punaselt, roheliselt ja siniselt, kui Arduino käivitub, et näidata, et robot on taaskäivitunud, ja süttib seejärel roheliselt, kui mootoripakett on vastu võetud, sinine, kui ventilaatoripakett on vastu võetud, ja punane, kui halb või tundmatu pakett on kätte saadud. Ventilaatori juhtimiseks kasutasin tavalist NPN -transistorit (samu, mida demonstreerisin oma viimases juhendis) ja takisti transistori ja Arduino vahel (transistor tõmbas liiga palju voolu ja soojendas Arduino, nii et panin piirangu takisti sisse lülitada).

Samm: Arduino ja arvuti programmeerimine

Arduino ja arvuti programmeerimine
Arduino ja arvuti programmeerimine

Arduino programmeerimiseks vajate ilmselgelt Arduino tarkvara ja USB -kaablit. Kui teie arvutis on jadaport, saate Arduino programmeerida ka jadapordi ja TTL -taseme muunduri abil. Pange tähele, et USB jadaliides ei suhtle Arduino ATMega protsessoriga, kui Arduino jadapistikutega (nööpnõelad 0 ja 1) on ühendatud nivoo muundur, nii et ühendage see enne USB kasutamist lahti. Arduino puhul vajame jadaliidest, mis võimaldab PC mootorite juhtimiseks. Vajame ka PWM servoajamisüsteemi, et saata Vex mootoritele õiged signaalid ja veenduda, et need lähevad õigete väärtuste korral õiges suunas. Lisasin ka mõne lihtsa LED -i vilkumise, peamiselt oleku näitamiseks, aga ka sellepärast, et see tundub lahe. Arvutis peame avama jadapordi ja saatma andmekaadreid, millest Arduino programm aru saab. Arvuti peab välja pakkuma ka mootori väärtused. Lihtne viis seda teha on kasutada USB mängupadi või juhtkangi, mina kasutan Xbox 360 kontrollerit. Teine võimalus on juhtmevaba juhtimise jaoks robotil endal kasutada võrku ühendatud arvutit (kas netbook või väike mini -ITX -plaat). Netbooki abil saate isegi veebipõhist veebikaamerat kasutada videovoogu tagasi voogesitamiseks ja oma roboti kaugjuhtimiseks. Kasutasin seadistamiseks võrguprogrammeerimiseks Linuxi pistikupesade süsteemi. Üks programm ("juhtkangi server") töötab eraldi arvutis, kuhu on ühendatud kontroller, ja teine programm ("klient") käivitatakse Arduinoga ühendatud netbookis. See ühendab kaks arvutit ja saadab juhtkangi teabe netbooki, mis saadab seejärel jadapaketid robotit juhtivale Arduinole. Arduinoga ühenduse loomiseks Linuxi arvuti abil (C ++) peate esmalt avama jadapordi baudikiirus ja seejärel saatke väärtused protokolli abil, mida olete kasutanud ka Arduino koodil. Minu seeriavorming on lihtne ja tõhus. Kahe mootorikiiruse saatmiseks kasutan 4 baiti "kaadri" kohta (kumbki on üks bait). Esimene ja viimane bait on kõvasti kodeeritud väärtused, mida kasutatakse selleks, et Arduino ei saaks PWM-koodile vale baiti saata ja mootorid hulluks ajada. See on RGB LED -i peamine eesmärk, see vilgub punaselt, kui jadakaader oli puudulik. 4 baiti on järgmised: 255 (kõvakoodiga "algus" bait),,, 200 (kõvakodeeritud "lõpp" bait) Andmete usaldusväärse vastuvõtu tagamiseks veenduge, et programmiahelate vahel oleks piisavalt viivitust. Kui käivitate oma arvuti koodi liiga kiiresti, ujutab see porti üle ja Arduino võib hakata baite langema või isegi valesti lugema. Isegi kui see teavet ei lange, võib see ka Arduino jadapordi puhver üle voolata. Vex -mootorite puhul kasutasin Arduino Servo raamatukogu. Kuna Vex -mootorid on lihtsalt pideva pöörlemisega mootorid, kasutavad nad täpselt sama signaali, mida kasutavad servod. Selle asemel, et 90 kraadi oleks keskpunkt, on see peatuspunkt, kus mootor ei pöörle. "Nurga" langetamine põhjustab mootori pöörlemise ühes suunas, nurga tõstmine aga teises suunas. Mida kaugemal keskpunktist olete, seda kiiremini mootor pöörleb. Kuigi see ei purusta midagi, kui saadate mootoritele väärtused, mis on suuremad kui 180 kraadi, soovitan piirata väärtused vahemikus 0 kuni 180 kraadi (mis on antud juhul kiiruse suurendamine). Kuna ma tahtsin rohkem kontrolli ja vähem kontrolli alt väljuvat robotite sõitu, lisasin oma programmi tarkvara "kiirusepiirangu", mis ei luba kiirusel tõusta üle 30 "kraadi" kummaski suunas (vahemik on 90 +/- 30). Kavatsen lisada kiirpiirangut muutva jadaporti käsu, et arvuti saaks kiirelt liikudes piirangu käigu pealt eemaldada (olen katsetanud väikestes ruumides, nii et ma ei taha, et see kiirendaks ja kukkuda seina, eriti kui sellel on netbook). Lisateabe saamiseks laadige selle juhendi lõpus olev lisatud kood alla.

Samm: lisage Netbook, et avastada tundmatuid maailmu eemalt

Lisage Netbook, et avastada tundmatuid maailmu eemalt
Lisage Netbook, et avastada tundmatuid maailmu eemalt
Lisage Netbook, et avastada tundmatuid maailmu eemalt
Lisage Netbook, et avastada tundmatuid maailmu eemalt

Kui teie Arduino roboti pardal on täisarvuti, saate oma robotit juhtida nii kaugele, kui teie WiFi jõuab, ilma juhtmeteta, et piirata robot ühte piirkonda. Hea kandidaat sellele tööle on netbook, sest netbookid on pisikesed, kerged, neil on sisseehitatud aku, neil on WiFi ja enamikul on isegi sisseehitatud veebikaamerad, mida saab kasutada roboti vaate tagastamiseks turvalisse kohta suudab seda kontrollida. Samuti, kui teie netbook on varustatud mobiilse lairibateenusega, on teie valik praktiliselt piiramatu. Piisavate akude korral saaksite oma roboti kohalikku pitsakohta juhtida ja veebikaamera kaudu tellimuse esitada (pole soovitatav, roboteid ei lubata tavaliselt pitsakohtadesse, isegi kui need oleksid inimesed, kes tõenäoliselt proovivad robotit varastada) isegi pitsa). See võib olla ka hea viis keldri pimedate sügavuste uurimiseks mugavalt kontoritoolist, kuigi mõne esilaterna lisamine võib sel juhul olla väga kasulik.

Selle toimimiseks on palju viise, paljud on ilmselt palju lihtsamad kui minu omad, kuigi ma ei tunne töötlemis- ega skriptipõhiseid keeli, nii et otsustasin kasutada oma baasjaama vahel traadita juhtühenduse loomiseks Linuxi ja C ++ vana ThinkPad) ja minu uus Lenovo IdeaPad netbook, mis on ühendatud Arduino draivibaasiga. Mõlemad arvutid töötavad Ubuntuga. Minu ThinkPad on ühendatud minu kooli kohtvõrguga ja minu IdeaPad on ühendatud minu WiFi -pöörduspunktiga, mis on ühendatud ka kooli LAN -iga (ma ei saanud kooli WiFi -st usaldusväärset videovoogu, kuna kõik teised kasutavad seda, seega seadsin hea ühenduse tagamiseks oma ruuteri). Hea ühendus on minu puhul eriti oluline, kuna ma ei ole kasutanud ühtegi veakontrolli ega aegumist. Kui võrguühendus äkki katkeb, jätkab robot seni, kuni ta millegi vastu kokku jookseb või ma jooksen ja peatan selle. See on peamine tegur, miks ma otsustasin jõuülekannet aeglustada nii mootorite vähendamise kui ka tarkvara kiirusepiirangu rakendamisega.

Samm: hankige videovoog

Kui teie robotiuurija saab juhtmevabalt sõita, soovite tõenäoliselt saada netbookist videovoogu, et saaksite teada, kus teie robot asub. Kui kasutate Ubuntut (või isegi kui te seda ei tee!), Soovitan voogesituseks kasutada VLC Media Playerit. Kui te pole seda installinud, jääte sellest tõesti ilma, nii et installige see käsuga "sudo apt-get install vlc", otsige Ubuntu tarkvarakeskusest VLC (ainult 9.10) või laadige installija alla videolanist. org, kui kasutate Windowsi. Mõlemas arvutis peate töötama VLC -ga. VLC on võimeline voogesitama ja vooge võrgus esitama. Veenduge esmalt netbookis (robotarvutis), et teie veebikaamera (kas sisseehitatud või USB-ühendusega) töötab, klõpsates nuppu Open Capture Device ja proovides Video for Linux 2 (mõned vanemad seadmed võivad vajada videot Linuxile, mitte uut 2 versiooni). Te peaksite nägema kaamera vaadet netbooki ekraanil. Selle voogesitamiseks valige menüüst Fail Streaming ja seejärel kuvatava akna ülaosas vahekaart Capture Device. Pidage meeles, et Ubuntu (ja paljud teised Linuxi distributsioonid) võimaldavad teil ekraani jaoks liiga suurte akende klõpsamiseks ja lohistamiseks klahvi Alt all hoida (eriti kasulik vanematel netbookidel, kuigi isegi minu IdeaPadil on ilmse põhjuseta veider 1024x576 eraldusvõime). Viivituse vähendamiseks klõpsake "Kuva rohkem valikuid" ja vähendage vahemällu salvestamise väärtust. Summa, mida saate langetada, sõltub mõnikord seadmest, see muutub ebastabiilseks, kui alandate seda liiga palju. 300 ms pärast võite saada väikese viivituse, kuid see pole liiga halb.

Järgmiseks klõpsake järgmisele menüüle liikumiseks nuppu Oja. Klõpsake nuppu Edasi, seejärel valige ja lisage HTTP uueks sihtkohaks. Nüüd seadistage transkodeerimine, et muuta voog väiksemaks. Tegin kohandatud profiili, mis kasutab M-JPEG kiirusega 60 kb/s ja 8 kaadrit sekundis. Selle põhjuseks on asjaolu, et täiustatud koodeki, näiteks MPEG või Theora, kasutamine kulutab netbooki Atom -protsessoril tohutult protsessori aega ja see võib põhjustada teie videovoogu ilma nähtava põhjuseta peatumise. MJPEG on lihtne koodek, mida on lihtne kasutada madala bitikiirusega. Pärast voo käivitamist avage oma teises arvutis VLC, avage võrguvoog, valige HTTP ja seejärel tippige oma netbooki IP -aadress (sõltuvalt kohalikust või Internetist sõltuvalt ühenduse loomise viisist), millele järgneb ": 8080". Pordi peate mingil veidral põhjusel määrama, vastasel juhul annab see teile vigu. Kui teil on korralik ühendus, peaksite oma teises arvutis nägema oma veebikaamera voogu, kuid sellel on väike (umbes sekund) viivitus. Ma ei tea täpselt, miks see viivitus tekib, aga ma ei saa aru, kuidas sellest lahti saada. Nüüd avage juhtimisrakendus ja hakake oma netbook -robotiga sõitma. Tunne, kuidas viivitus sõidu ajal toimib, nii et sa ei põrkaks millegagi kokku. Kui see töötab, on teie netbooki robot valmis.

Soovitan: