Sadržaj:

Jednostavna Arduino robotska platforma!: 5 koraka
Jednostavna Arduino robotska platforma!: 5 koraka

Video: Jednostavna Arduino robotska platforma!: 5 koraka

Video: Jednostavna Arduino robotska platforma!: 5 koraka
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, Srpanj
Anonim
Jednostavna Arduino robotska platforma!
Jednostavna Arduino robotska platforma!
Jednostavna Arduino robotska platforma!
Jednostavna Arduino robotska platforma!

Upravo sam dobio Arduino nakon što sam se igrao s nekim AVR mikrokontrolerima tijekom sastanaka tima Robotics. Svidjela mi se ideja o stvarno jeftinom programabilnom čipu koji bi mogao pokrenuti gotovo sve iz jednostavnog računalnog sučelja pa sam dobio Arduino jer već ima lijepu ploču i USB sučelje. Za svoj prvi Arduino projekt iskopao sam komplet Vex Robotics koji sam položio na nekim natjecanjima u srednjoj školi. Oduvijek sam želio napraviti robotsku platformu za robotiku, ali za mikrokontroler Vex potreban je programski kabel koji nisam imao. Odlučio sam koristiti svoj novi Arduino (a možda i kasnije goli AVR čip ako uspijem) za pogon platforme. Na kraju želim nabaviti netbook, a zatim mogu voziti robota koristeći WiFi i daljinski pregledavati njegovu web kameru.

Uspio sam dobiti pristojan serijski protokol i jednostavan primjer koji pokreće robota pomoću Xbox 360 kontrolera spojenog na Linux računalo.

Korak 1: Što može učiniti …

Što može učiniti…
Što može učiniti…
Što može učiniti…
Što može učiniti…

Arduino je vrlo svestrana platforma. Moj osnovni cilj bio je samo natjerati Arduino da poveže dva Vex motora s računalom, ali imao sam puno preostalih ulazno/izlaznih iglica i odlučio sam dodati neke dodatne stvari. Trenutno imam RGB LED za status serijskog porta (zeleno ako su paketi dobri, crveno ako su loši) i ventilator za računalo kojim upravlja tranzistor. Mogu dodati i prekidače i senzore, ali još nisam stavio ništa od toga. Najbolje od svega je što možete dodati sve što želite u Arduino robota. Potrebno je samo malo koda sučelja za kontrolu dodatnih stvari i unos podataka u računalo.

Korak 2: Dijelovi

Dijelovi
Dijelovi
Dijelovi
Dijelovi
Dijelovi
Dijelovi

Za svog robota koristio sam nekoliko različitih dijelova. Većina dijelova bili su od starih stvari koje sam položio po podrumu.1) Arduino Duemilanove s ATMega328Ovo je najnoviji Arduino, a budući da sam ga dobio tek prije nekoliko dana, imam najnoviji. Međutim, kôd je dovoljno mali da bi se lako mogao uklopiti u bilo koji Arduino. Vjerojatno bi mogao stati čak i na ATTiny (ako izgradim robotski kontroler osim Arduina, ATTiny 2313 izgleda kao dobar izbor, manji je i jeftiniji, ali i dalje ima dosta izlaza i serijsko UART sučelje) 2) Vex Robotics PlatformI dobio je prije nekoliko godina komplet Vex za izradu radio-kontroliranog robota koji će pokupiti stvari za srednjoškolsko natjecanje. Konstruirao sam osnovnu bazu "square bot" koja ima 4 kotača pogonjena s dva motora. Mogli biste zamijeniti druge baze robota ako imate neku drugu platformu koju želite voziti. Važno je napomenuti da su Vex motori u biti servo pogoni s kontinuiranim okretanjem, koji koriste modulaciju širine impulsa kako bi signalizirali koliko brzo i u kojem smjeru se okretati. Vex motori su lijepi jer imaju veliki raspon radnih napona, negdje između 5 i 15 volti. Koristim 12V jer sam imao 12V bateriju. Za većinu standardnih hobi servo -a trebat će vam niži napon (često 6 volti).3) Baterija Robot je beskoristan bez napajanja. Za testiranje koristim standardni 9V adapter za zidne bradavice iz RadioShacka, ali za bežični rad pronašao sam 12V NiMH bateriju u starom prijenosnom računalu. Iako ne drži dovoljno napunjenosti za pokretanje prijenosnog računala, moj Vex robot vozi sasvim u redu. Također može napajati Arduino pomoću Vin ulaznog pina na konektoru za napajanje, Arduino će regulirati 12V na 5 pa čak i izlaziti na 5V izlazni pin na konektoru za napajanje. ožiči sve. Na kraju ću dobiti ljepšu ploču za izradu prototipa i lemiti na nekim trajnijim vezama, ali zasad matična ploča olakšava mijenjanje stvari. Moja matična ploča je SparkFunova "osnovna ploča", samo ploča na metalnoj ploči s 3 terminala. 5) RS232-TTL pretvarač temeljen na MAX232 Ako želite upravljati svojim robotom pomoću veze serijskog porta RS-232 (za razliku od ugrađenog Arduina u USB-u) možete koristiti RS232-TTL pretvarač. Koristim MAX232 jer ih je nekoliko ležalo i lemio sam ga na mali komad ploče za izradu prototipa s potrebnim kondenzatorima. Trebam RS-232 jer moj stari laptop ima samo jedan USB priključak i to koristim za kontroler igre za pogon robota.6) Dodatni dijelovi po željiZa lakše otklanjanje pogrešaka serijskog protokola, stavio sam na njega RGB LED (dobio sam jedan s mojom narudžbom Arduino jer su zvučali super). Svjetlo treperi crveno, zeleno, plavo u nizu kada se Arduino podigne kako bi pokazao da se robot ponovno pokrenuo, a zatim svijetli zeleno kada je primljen paket motora, plavo kad je paket ventilatora primljen, a crveno kada je loš ili nepoznat paket je primljen. Za pogon ventilatora koristio sam standardni NPN tranzistor (isti koji sam pokazao u prošlom Instructable) i otpornik između tranzistora i Arduina (tranzistor je vukao previše struje i zagrijavao Arduino, pa sam stavio ograničenje otpornik da ga zaustavi).

Korak 3: Arduino i PC programiranje

Arduino i PC programiranje
Arduino i PC programiranje

Za programiranje Arduina očito će vam trebati softver Arduino i USB kabel. Arduino možete programirati i pomoću serijskog porta i pretvarača razine TTL ako vaše računalo ima serijski priključak. Imajte na umu da USB serijsko sučelje neće komunicirati s Arduinovim ATMega procesorom ako je pretvarač razine spojen na Arduinove serijske pinove (pinovi 0 i 1) pa ga odspojite prije korištenja USB -a. Na Arduinu će nam trebati serijsko sučelje koje omogućuje PC za upravljanje motorima. Trebat će nam i PWM servo pogonski sustav za slanje ispravnih signala Vex motorima i osiguravanje da idu u ispravnim smjerovima kad im se daju prave vrijednosti. Dodao sam i neko jednostavno LED bljeskanje, uglavnom za indikaciju statusa, ali i zato što izgleda super. Na računalu ćemo morati otvoriti serijski port i poslati okvire podataka koje će program Arduino razumjeti. Računalo također mora doći do vrijednosti motora. Jednostavan način za to je korištenje USB podloge za igru ili upravljačke palice, koristim Xbox 360 kontroler. Druga je mogućnost korištenje umreženog računala (bilo netbooka ili male mini ITX ploče) na samom robotu za bežičnu vožnju. S netbookom čak možete koristiti ugrađenu web kameru za streaming video sadržaja i daljinski upravljati robotom. Koristio sam sustav Linux utičnica za programiranje mreže za postavljanje. Jedan program ("poslužitelj joystick") izvodi se na zasebnom računalu kojemu je priključen kontroler, a drugi program ("klijent") radi na netbooku spojenom na Arduino. Ovo povezuje dva računala i šalje podatke o upravljačkoj palici na netbook, koji zatim šalje serijske pakete na Arduino koji pokreće robota. Da biste se povezali s Arduinom pomoću Linux računala (u C ++), morate prvo otvoriti serijski port na ispravnom mjestu. baud rate, a zatim pošaljite vrijednosti koristeći protokol koji ste također koristili na Arduino kodu. Moj serijski format je jednostavan i učinkovit. Koristim 4 bajta po "okviru" za slanje dviju brzina motora (svaka je jedan bajt). Prvi i zadnji bajt tvrdo su kodirane vrijednosti koje se koriste kako bi spriječile Arduino da pošalje pogrešan bajt u PWM kôd i uzrokuje da motori polude. Ovo je primarna svrha RGB LED diode, treperi crveno kada serijski okvir nije potpun. Četiri bajta su sljedeća: 255 (teško kodirani "početni" bajt),,, 200 (tvrdo kodirani "završni" bajt) Kako biste osigurali pouzdan prijem podataka, pobrinite se da ostavite dovoljno kašnjenja između programskih petlji. Ako prebrzo pokrenete računalni kod, preplavit će port i Arduino može početi ispuštati ili čak pogrešno čitati bajtove. Čak i ako ne ispušta informacije, također može preopteretiti međuspremnik serijskog porta Arduina. Za Vex motore, koristio sam Arduino Servo knjižnicu. Budući da su Vex motori samo motori s kontinuiranom rotacijom, koriste potpuno istu signalizaciju koju koriste servomotori. Međutim, umjesto da je 90 stupnjeva središnja točka, to je zaustavna točka u kojoj se motor ne okreće. Smanjivanjem "kuta" motor se počinje vrtjeti u jednom smjeru, dok se povećanjem kuta okreće u drugom smjeru. Što ste dalje od središnje točke, motor će se brže vrtjeti. Iako neće ništa slomiti ako motorima šaljete vrijednosti veće od 180 stupnjeva, savjetovao bih da ograničite vrijednosti s 0 na 180 stupnjeva (što su u ovom slučaju prirasti brzine). Budući da sam želio veću kontrolu i manje kontrole vožnje robota, u svoj sam program dodao softversko "ograničenje brzine" koje ne dopušta povećanje brzine iznad 30 "stupnjeva" u bilo kojem smjeru (raspon je 90 +/- 30). Planiram dodati naredbu za serijski port koja mijenja ograničenje brzine, tako da računalo može ukloniti ograničenje u hodu ako želite ići brzo (testirao sam u malim sobama pa ne želim da se ubrza i udariti u zid, osobito s netbookom na sebi). Za dodatne informacije preuzmite priloženi kôd na kraju ovog uputstva.

Korak 4: Dodajte Netbook za istraživanje nepoznatih svjetova iz daljine

Dodajte Netbook za istraživanje nepoznatih svjetova iz daljine
Dodajte Netbook za istraživanje nepoznatih svjetova iz daljine
Dodajte netbook kako biste istraživali nepoznate svjetove iz daljine
Dodajte netbook kako biste istraživali nepoznate svjetove iz daljine

S punim računalom na svom Arduino robotu možete upravljati svojim robotom koliko god vaš WiFi može dosegnuti bez ikakvih kabela za ograničavanje robota na jedno područje. Dobar kandidat za ovaj posao je netbook, jer su netbookovi sićušni, lagani, imaju ugrađenu bateriju, imaju WiFi, a većina čak ima i ugrađene web kamere koje se mogu koristiti za usmjeravanje pogleda robota na sigurno mjesto na kojem se nalazite može kontrolirati. Također, ako je vaš netbook opremljen mobilnom širokopojasnom uslugom, vaš je raspon praktički neograničen. S dovoljno baterija mogli biste odvesti svog robota do lokalnog pizzerija i naručiti putem web kamere (ne preporučuje se, roboti obično nisu dopušteni na pizzerijama, čak i ako su to ljudi vjerojatno će pokušati ukrasti robota, a možda čak i pizza). To bi također mogao biti dobar način za istraživanje mračnih dubina vašeg podruma iz udobnosti vašeg uredskog stolca, iako bi dodavanje nekih svjetala moglo biti od velike pomoći u ovom slučaju.

Postoji mnogo načina da ovo funkcionira, mnogi su vjerojatno puno lakši od mog, iako nisam upoznat s procesima ili jezicima temeljenim na skriptama pa sam odlučio koristiti Linux i C ++ za stvaranje bežične upravljačke veze između moje bazne stanice (tzv. stari ThinkPad) i moj novi Lenovo IdeaPad netbook koji je spojen na bazu pogona Arduino. Na oba računara radi Ubuntu. Moj ThinkPad je priključen na LAN moje škole, a IdeaPad je spojen na moju WiFi pristupnu točku koja je također spojena na školski LAN (nisam mogao dobiti pouzdan video stream sa školskog WiFi -a jer ga svi drugi koriste, pa sam postavio podići vlastiti usmjerivač kako bih osigurao dobru vezu). Dobra veza posebno je važna u mom slučaju budući da nisam proveo nikakvu provjeru pogrešaka ili istek vremena. Ako mrežna veza iznenada prekine, robot nastavlja raditi sve dok ne naleti na nešto ili dok ne pokrenem i zaustavim to. To je glavni faktor iza moje odluke da usporim pogonski sklop, tako što ću reducirati motore i primijeniti softversko ograničenje brzine.

5. korak: Nabavite video feed

Nakon što vaš robotski istraživač može bežično voziti, vjerojatno ćete htjeti imati video feed s netbooka kako biste mogli reći gdje se vaš robot nalazi. Ako koristite Ubuntu (ili čak i ako niste!), Preporučujem korištenje VLC Media Playera za streaming. Ako ga niste instalirali, stvarno vam nedostaje, pa ga instalirajte pomoću naredbe "sudo apt-get install vlc", potražite VLC u Ubuntu Software Center (samo 9.10) ili preuzmite instalacijski program na videolan. org ako koristite Windows. Trebat će vam VLC pokrenut na oba računala. VLC je sposoban za streaming i reprodukciju tokova na mreži. Na netbooku (robotskom računalu) prvo provjerite radi li vaša web kamera (ugrađena ili spojena USB-om) tako da kliknete Otvori uređaj za snimanje i isprobate Video za Linux 2 (nekim starijim uređajima možda će trebati Video za Linux, a ne nova verzija 2). Na zaslonu netbooka trebali biste vidjeti prikaz kamere. Da biste ga strujali, odaberite Streaming na izborniku Datoteka, a zatim odaberite karticu Snimanje uređaja pri vrhu prozora koji se pojavi. Upamtite da vam Ubuntu (i mnogi drugi Linux distributeri) drže pritisnutu tipku Alt za klikanje i povlačenje prozora koji su preveliki za vaš zaslon (osobito korisno na starijim netbookovima, iako čak i moj IdeaPad ima čudnu rezoluciju 1024x576 bez vidljivog razloga). Da biste smanjili kašnjenje, kliknite na "Prikaži više opcija" i smanjite vrijednost predmemorije. Iznos koji možete smanjiti ponekad ovisi o uređaju, postaje nestabilan ako ga previše spustite. Na 300 ms možete dobiti malo kašnjenje, ali nije tako loše.

Zatim kliknite Stream za prelazak na sljedeći izbornik. Pritisnite Dalje, zatim odaberite i dodajte HTTP kao novo odredište. Sada postavite Transcoding da biste smanjili tok. Napravio sam prilagođeni profil koji koristi M-JPEG pri 60kb/s i 8fps. To je zato što će upotreba naprednog kodeka poput MPEG -a ili Theore pojesti ogromno vrijeme procesora na Atom procesoru netbooka, a to može dovesti do zaustavljanja vašeg video feeda bez vidljivog razloga. MJPEG je jednostavan kodek koji se lako koristi pri niskim bitrejtovima. Nakon pokretanja streama, otvorite VLC na drugom računalu, otvorite mrežni tok, odaberite HTTP, a zatim upišite IP adresu svog netbooka (lokalnog ili internetskog, ovisno o načinu povezivanja), a zatim ": 8080". Morate navesti port iz nekog čudnog razloga, inače vam daje pogreške. Ako imate pristojnu vezu, trebali biste vidjeti sažetak web -kamere na drugom računalu, ali će imati malo (oko sekunde) kašnjenja. Ne znam točno zašto dolazi do ovog kašnjenja, ali ne mogu shvatiti kako ga se riješiti. Sada otvorite aplikaciju za upravljanje i počnite voziti svog netbook robota. Osjetite kako odgoda funkcionira tijekom vožnje kako se ne biste zabili u bilo što. Ako radi, vaš netbook robot je dovršen.

Preporučeni: