Kazalo:

Preprosta platforma Arduino Robotics!: 5 korakov
Preprosta platforma Arduino Robotics!: 5 korakov

Video: Preprosta platforma Arduino Robotics!: 5 korakov

Video: Preprosta platforma Arduino Robotics!: 5 korakov
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, Julij
Anonim
Preprosta Arduino platforma za robotiko!
Preprosta Arduino platforma za robotiko!
Preprosta Arduino platforma za robotiko!
Preprosta Arduino platforma za robotiko!

Pravkar sem dobil Arduino, potem ko sem se med sestanki skupine Robotics igral z nekaj mikrokontrolerji AVR. Všeč mi je bila zamisel o res poceni programabilnem čipu, ki bi lahko deloval s karkoli iz preprostega računalniškega vmesnika, zato sem dobil Arduino, ker že ima lepo ploščo in vmesnik USB. Za svoj prvi projekt Arduino sem izkopal komplet Vex Robotics, ki sem ga imel na voljo na nekaterih tekmovanjih v srednji šoli. Vedno sem si želel narediti računalniško vodeno robotsko platformo, vendar mikrokrmilnik Vex zahteva programski kabel, ki ga nisem imel. Odločil sem se, da bom za poganjanje platforme uporabil svoj novi Arduino (in morda kasneje goli AVR čip, če mi uspe). Sčasoma želim dobiti netbook in potem lahko vozim robota prek WiFi in si na daljavo ogledam njegovo spletno kamero.

Uspelo mi je dobiti dostojen serijski protokol in preprost primer, ki poganja robota s krmilnikom Xbox 360, povezanim z osebnim računalnikom Linux.

Korak: Kaj lahko stori…

Kaj lahko naredi…
Kaj lahko naredi…
Kaj lahko naredi…
Kaj lahko naredi…

Arduino je zelo vsestranska platforma. Moj osnovni cilj je bil le, da Arduino poveže dva motorja Vex z osebnim računalnikom, vendar sem imel veliko preostalih vhodno/izhodnih zatičev in sem se odločil dodati nekaj dodatnih stvari. Trenutno imam LED RGB za stanje serijskih vrat (zelena, če so paketi dobri, rdeča, če so slabi) in ventilator za računalnik, ki ga poganja tranzistor. Lahko dodam tudi stikala in senzorje, vendar tega še nisem postavil. Najboljše pri tem je, da lahko robotu Arduino dodate vse, kar želite. Za nadzor dodatnih stvari in vnos v računalnik potrebujete le malo vmesniške kode.

2. korak: Deli

Deli
Deli
Deli
Deli
Deli
Deli

Za svojega robota sem uporabil nekaj različnih delov. Večina delov je bila iz starih stvari, ki sem jih polagal po kleti.1) Arduino Duemilanove z ATMega328 To je najnovejši Arduino, in ker sem ga dobil pred nekaj dnevi, imam najnovejšega. Vendar je koda dovolj majhna, da bi se zlahka prilegala kateremu koli Arduinu. Verjetno bi se lahko prilegal celo na ATTiny (če poleg Arduina zgradim še robotski krmilnik, je ATTiny 2313 dobra izbira, je manjši in cenejši, vendar ima še vedno veliko izhodov in serijski vmesnik UART) 2) Vex Robotics PlatformI pred nekaj leti sem dobil komplet Vex za izdelavo radijsko vodenega robota, ki je pobral stvari za srednješolsko tekmovanje. Zgradil sem osnovno podlago "kvadratni bot", ki ima 4 kolesa, ki jih poganjata dva motorja. Če imate drugo platformo, ki jo želite voziti, lahko zamenjate druge baze robotov. Pomembno je omeniti, da so motorji Vex v bistvu servomotorji z neprekinjenim vrtenjem, ki uporabljajo širinsko-impulzno modulacijo, da signalizirajo, kako hitro in v katero smer se obrniti. Motorji Vex so prijetni, ker imajo visok razpon obratovalnih napetosti, nekje med 5 in 15 volti. Uporabljam 12V, ker sem imel 12V baterijo. Za večino standardnih hobi servomotorjev boste potrebovali nižjo napetost (pogosto 6 voltov).3) Baterija Robot je brez napajanja neuporaben. Za testiranje uporabljam standardni 9V adapter za stenske bradavice podjetja RadioShack, za brezžično delovanje pa sem v starodavnem prenosnem računalniku našel 12V baterijo NiMH. Čeprav za prenosni računalnik ne nosi dovolj napolnjenosti, mojega robota Vex odlično poganja. Arduino lahko napaja tudi z vhodnim zatičem Vin na priključku za napajanje, Arduino bo 12V znižal na 5 in ga celo izhodil na izhodu 5 V na priključku za napajanje. 4) Osnovna plošča trenutno uporabljam ožiči vse. Sčasoma bom dobil lepšo ploščo za izdelavo prototipov in spajkanje na nekaj trajnejših povezavah, toda za zdaj lahko plošča preprosto spremeni stvari. Moja matična plošča je SparkFunova "osnovna plošča", le plošča na kovinski plošči s tremi priključki.5) Pretvornik RS232-TTL na osnovi MAX232 Če želite svojega robota poganjati prek povezave serijskih vrat RS-232 (v nasprotju z vgrajenim Arduinom v USB) lahko uporabite pretvornik RS232-TTL. Uporabljam MAX232, ker jih je nekaj ležalo naokoli in sem ga spajkal na majhen kos prototipne plošče z zahtevanimi kondenzatorji. Potrebujem RS-232, ker ima moj stari prenosni računalnik samo ena vrata USB in to uporabljam za krmiljenje iger za pogon robota. dobil sem eno z mojim naročilom Arduino, ker so zveneli kul). Lučka utripa rdeče, zeleno, modro v zaporedju, ko se Arduino zažene, da prikaže, da se je robot znova zagnal, nato pa zasveti zeleno, ko je bil sprejet paket motorja, modra, ko je bil paket ventilatorja sprejet, in rdeča, ko je slab ali neznan paket je bil sprejet. Za pogon ventilatorja sem uporabil standardni tranzistor NPN (isti, ki sem ga pokazal v svojem zadnjem Instructable) in upor med tranzistorjem in Arduinom (tranzistor je črpal preveč toka in segreval Arduino, zato sem postavil omejitev upor, da ga ustavite).

3. korak: Arduino in računalniško programiranje

Arduino in računalniško programiranje
Arduino in računalniško programiranje

Za programiranje Arduina boste očitno potrebovali programsko opremo Arduino in kabel USB. Arduino lahko programirate tudi s serijskimi vrati in pretvornikom ravni TTL, če ima vaš računalnik serijska vrata. Upoštevajte, da serijski vmesnik USB ne bo komuniciral s procesorjem ATMega Arduino, če je pretvornik nivoja priključen na serijske zatiče Arduino (nožici 0 in 1), zato ga pred uporabo USB odklopite. Računalnik za krmiljenje motorjev. Potrebovali bomo tudi servo pogonski sistem PWM za pošiljanje pravilnih signalov motorjem Vex in zagotovitev, da gredo v pravilnih smereh, ko dobijo prave vrednosti. Dodal sem tudi nekaj preprostih utripajočih LED, predvsem za prikaz statusa, pa tudi zato, ker izgleda kul. V računalniku bomo morali odpreti serijska vrata in poslati okvirje podatkov, ki jih bo program Arduino razumel. Računalnik mora določiti tudi vrednosti motorja. Enostaven način za to je uporaba igralne ploščice USB ali igralne palice, uporabljam krmilnik Xbox 360. Druga možnost je uporaba brezžičnega računalnika v omrežju (bodisi netbooka ali majhne mini ITX plošče) na samem robotu. Z netbookom lahko celo uporabite vgrajeno spletno kamero za pretočno predvajanje video posnetkov in oddaljenega upravljanja vašega robota. Za nastavitev omrežja sem uporabil sistem vtičnic Linux. En program ("strežnik krmilne palice") se izvaja na ločenem računalniku, na katerega je priključen krmilnik, drug program ("odjemalec") pa se izvaja na netbooku, povezanem z Arduinom. Ta poveže oba računalnika in pošlje podatke o igralni palici v netbook, ki nato pošlje serijske pakete na Arduino, ki poganja robota. Če se želite povezati z Arduinom z osebnim računalnikom Linux (v C ++), morate najprej odpreti serijska vrata na pravilnem baud rate in nato vrednosti pošljite s protokolom, ki ste ga uporabili tudi v kodi Arduino. Moja serijska oblika je preprosta in učinkovita. Za pošiljanje dveh hitrosti motorja uporabljam 4 bajte na "okvir" (vsak je en bajt). Prvi in zadnji bajt sta trdo kodirani vrednosti, ki se uporabljata za preprečevanje, da bi Arduino poslal napačen bajt v kodo PWM in povzročil, da bi motorji ponoreli. To je glavni namen LED RGB, utripa rdeče, ko serijski okvir ni bil dokončan. 4 bajti so naslednji: 255 (trdo kodiran "začetni" bajt),,, 200 (trdo kodiran "zaključni" bajt) Za zagotovitev zanesljivega sprejema podatkov, poskrbite, da boste med programskimi zankami dali dovolj zamude. Če kodo računalnika zaženete prehitro, bo poplavila vrata in Arduino lahko začne spuščati ali celo napačno brati bajte. Tudi če ne izpusti informacij, lahko preplavi tudi vmesnik za serijska vrata Arduina. Za motorje Vex sem uporabil knjižnico Arduino Servo. Ker so motorji Vex le motorji z neprekinjenim vrtenjem, uporabljajo popolnoma enako signalizacijo, kot jo uporabljajo servomotorji. Namesto da bi bila 90 stopinj središčna točka, je to točka, kjer se motor ne vrti. Z znižanjem "kota" se motor začne vrteti v eno smer, z dvigom kota pa v drugo smer. Čim dlje ste od središča, hitreje se bo motor vrtel. Čeprav ne pošljete ničesar, če motorjem pošljete vrednosti, večje od 180 stopinj, bi vam priporočil, da omejite vrednosti od 0 do 180 stopinj (v tem primeru gre za prirastek hitrosti). Ker sem želel več nadzora in manj nadzora nad vožnjo robota, sem v svoj program dodal programsko "omejitev hitrosti", ki ne dovoljuje povečanja hitrosti nad 30 "stopinj" v obe smeri (razpon je 90 +/- 30). Načrtujem, da dodam ukaz za serijska vrata, ki spremeni omejitev hitrosti, tako da lahko računalnik na hitro odstrani omejitev, če želite hitro (preizkušal sem v majhnih prostorih, zato ne želim, da se pospeši) in se zaleteti v steno, še posebej z netbookom). Za več informacij prenesite priloženo kodo na koncu tega navodila.

4. korak: Dodajte Netbook za raziskovanje neznanih svetov na daljavo

Dodajte Netbook za raziskovanje neznanih svetov na daljavo
Dodajte Netbook za raziskovanje neznanih svetov na daljavo
Dodajte Netbook za raziskovanje neznanih svetov na daljavo
Dodajte Netbook za raziskovanje neznanih svetov na daljavo

S polnim računalnikom na svojem robotu Arduino lahko svojega robota pripeljete tako daleč, kot je dosegljiv brezžičnim omrežjem WiFi, brez kablov, ki omejujejo robota na eno območje. Dober kandidat za to delovno mesto je netbook, saj so netbooki majhni, lahki, imajo vgrajeno baterijo, imajo WiFi in večina ima celo vgrajene spletne kamere, ki jih lahko uporabite za pretakanje pogleda robota nazaj na varno mesto, kjer lahko nadzoruje. Če je vaš prenosnik opremljen s širokopasovnimi mobilnimi storitvami, je vaš doseg praktično neomejen. Z dovolj baterijami bi lahko svojega robota odpeljali do lokalnega picerija in oddali naročilo prek spletne kamere (ni priporočljivo, roboti običajno niso dovoljeni v picerijah, čeprav bi jih ljudje verjetno poskušali ukrasti. tudi pico). Morda je tudi dober način za raziskovanje temnih globin vaše kleti iz udobja vašega pisarniškega stola, čeprav je v tem primeru lahko zelo koristno dodati nekaj žarometov.

Obstaja veliko načinov, kako to delovati, mnogi so verjetno veliko lažji od mojega, čeprav ne poznam procesiranja ali jezikov, ki temeljijo na skriptah, zato sem se odločil za uporabo Linuxa in C ++ za ustvarjanje brezžične nadzorne povezave med mojo bazno postajo (aka. stari ThinkPad) in moj novi prenosni računalnik Lenovo IdeaPad, ki je povezan z bazo pogonov Arduino. Oba računalnika poganjata Ubuntu. Moj ThinkPad je priključen na LAN moje šole, IdeaPad pa na mojo dostopno točko WiFi, ki je povezana tudi s šolskim LAN -om (zanesljivega videotoka iz šolskega WiFi -ja nisem mogel dobiti, ker ga uporabljajo vsi drugi, zato sem nastavil vzpostaviti svoj usmerjevalnik, da zagotovim dobro povezavo). Dobra povezava je v mojem primeru še posebej pomembna, saj nisem izvedel preverjanja napak ali časovne omejitve. Če se omrežna povezava nenadoma prekine, robot nadaljuje, dokler ne trči v nekaj ali pa tečem in ustavim. To je glavni dejavnik pri moji odločitvi, da bom upočasnila pogon tako, da bom prestavila motorje in uvedla programsko omejitev hitrosti.

5. korak: Pridobite video vir

Ko lahko vaš robotski raziskovalec vozi brezžično, boste verjetno želeli imeti video vir iz netbooka, da boste lahko ugotovili, kje je vaš robot. Če uporabljate Ubuntu (ali celo če ne!), Priporočam uporabo VLC Media Playerja za pretakanje. Če ga niste namestili, ga res pogrešate, zato ga namestite z ukazom "sudo apt-get install vlc", poiščite VLC v Ubuntu Software Center (samo 9.10) ali naložite namestitveni program na videolan. org, če uporabljate Windows. Potrebovali boste VLC, ki deluje na obeh računalnikih. VLC je sposoben pretakanja in predvajanja tokov v omrežju. Na netbooku (robotski računalnik) se najprej prepričajte, da deluje vaša spletna kamera (vgrajena ali priključena na USB), tako da kliknete Odpri napravo za zajem in poskusite Video za Linux 2 (nekatere starejše naprave bodo morda potrebovale Video za Linux namesto nove različice 2). Na zaslonu netbooka bi morali videti pogled kamere. Če ga želite pretočno predvajati, v meniju Datoteka izberite Streaming in nato izberite zavihek Capture Device na vrhu okna, ki se prikaže. Ne pozabite, da vam Ubuntu (in številni drugi distribucijski sistemi Linux) držite pritisnjeno tipko Alt, da kliknete in povlečete okna, ki so prevelika za vaš zaslon (še posebej uporabno pri starejših prenosnih računalnikih, čeprav ima tudi moj IdeaPad liho ločljivost 1024x576 brez očitnega razloga). Če želite zmanjšati zamudo, kliknite »Prikaži več možnosti« in znižajte vrednost predpomnjenja. Količina, ki jo lahko znižate, je včasih odvisna od naprave, postane nestabilna, če jo preveč znižate. Pri 300 ms lahko pride do rahle zamude, vendar ni tako hudo.

Nato kliknite Stream, da se pomaknete na naslednji meni. Kliknite Naprej, nato izberite in dodajte HTTP kot nov cilj. Zdaj nastavite Transcoding, da bo tok manjši. Naredil sem profil po meri, ki uporablja M-JPEG pri 60kb/s in 8fps. To je zato, ker bo uporaba naprednega kodeka, kot sta MPEG ali Theora, porabila veliko časa procesorja na procesorju Atom netbooka, kar lahko povzroči, da se vaš video vir ustavi brez očitnega razloga. MJPEG je preprost kodek, ki je enostaven za uporabo pri nizkih bitnih hitrostih. Ko zaženete tok, odprite VLC v drugem računalniku, odprite omrežni tok, izberite HTTP in nato vnesite naslov IP vašega prenosnega računalnika (lokalnega ali internetnega, odvisno od tega, kako se povezujete), ki mu sledi »: 8080«. Vrata morate iz nekega čudnega razloga določiti, sicer se pojavijo napake. Če imate dostojno povezavo, bi morali na drugem računalniku videti vir spletne kamere, vendar bo imel rahlo (približno sekundo) zamudo. Ne vem natančno, zakaj je prišlo do te zamude, vendar ne vem, kako se je znebiti. Zdaj odprite nadzorno aplikacijo in začnite voziti svojega netbook robota. Občutite, kako deluje zamuda med vožnjo, da ne boste trčili v nič. Če deluje, je vaš netbook robot končan.

Priporočena: