Obsah:

Jednoduchá platforma robotiky Arduino!: 5 krokov
Jednoduchá platforma robotiky Arduino!: 5 krokov

Video: Jednoduchá platforma robotiky Arduino!: 5 krokov

Video: Jednoduchá platforma robotiky Arduino!: 5 krokov
Video: Leap Motion SDK 2024, November
Anonim
Jednoduchá platforma robotiky Arduino!
Jednoduchá platforma robotiky Arduino!
Jednoduchá platforma robotiky Arduino!
Jednoduchá platforma robotiky Arduino!

Práve som si zohral Arduino po hraní si s niektorými mikrokontrolérmi AVR počas stretnutí tímu Robotics. Páčila sa mi myšlienka skutočne lacného programovateľného čipu, ktorý by dokázal spustiť čokoľvek z jednoduchého počítačového rozhrania, takže som si kúpil Arduino, pretože už má peknú dosku a rozhranie USB. Pre môj prvý projekt Arduino som vykopal súpravu Vex Robotics, s ktorou som sa stretával v rámci niektorých súťaží, ktoré som robil na strednej škole. Vždy som chcel vytvoriť počítačom riadenú robotickú platformu, ale mikrokontrolér Vex vyžaduje programovací kábel, ktorý som nemal. Rozhodol som sa použiť svoje nové Arduino (a možno neskôr holý čip AVR, ak bude fungovať) na riadenie platformy. Nakoniec si chcem zaobstarať netbook a potom môžem riadiť robota pomocou WiFi a diaľkovo zobrazovať jeho webovú kameru.

Podarilo sa mi získať slušný sériový protokol a jednoduchý príklad, ktorý poháňa robota pomocou ovládača Xbox 360 pripojeného k počítaču s Linuxom.

Krok 1: Čo môže urobiť …

Čo dokáže…
Čo dokáže…
Čo dokáže…
Čo dokáže…

Arduino je veľmi univerzálna platforma. Mojím základným cieľom bolo len dostať Arduino k rozhraniu dvoch motorov Vex k počítaču, ale mal som veľa zvyšných vstupných/výstupných pinov a rozhodol som sa pridať ďalšie položky. Práve teraz mám RGB LED pre stav sériového portu (zelená, ak sú pakety dobré, červená, ak sú zlé) a ventilátor PC poháňaný tranzistorom. Môžem tiež pridať prepínače a senzory, ale ešte som na ne nič z toho nedal. Najlepšie na tom je, že do robota Arduino môžete pridať čokoľvek chcete. Ovládanie ďalších vecí a vstup do počítača vyžaduje iba trochu kódu rozhrania.

Krok 2: Diely

Časti
Časti
Časti
Časti
Časti
Časti

Na svoju robotu som použil niekoľko rôznych dielov. Väčšina dielov bola zo starých vecí, ktoré som mal položených okolo suterénu. 1) Arduino Duemilanove w/ ATMega328 Toto je najnovšie Arduino, a pretože som ho dostal pred niekoľkými dňami, mám najnovšie. Kód je však dostatočne malý, aby sa ľahko zmestil na akékoľvek Arduino. Pravdepodobne by sa to mohlo hodiť aj na ATTiny (ak postavím robotický ovládač okrem Arduina, ATTiny 2313 vyzerá ako dobrá voľba, je menší a lacnejší, ale stále má dostatok výstupov a sériové rozhranie UART) 2) Platforma Vex RoboticsI pred niekoľkými rokmi dostal súpravu Vex na stavbu rádiom riadeného robota na vyzdvihnutie vecí na stredoškolskú súťaž. Zostrojil som základňu „square bot“, ktorá má 4 kolesá poháňané dvoma motormi. Ak máte inú platformu, na ktorej chcete jazdiť, môžete nahradiť iné základne robotov. Je dôležité si uvedomiť, že motory Vex sú v podstate serva s nepretržitým otáčaním a používajú moduláciu šírky impulzu na signalizáciu toho, ako rýchlo a akým smerom sa majú otáčať. Motory Vex sú pekné, pretože majú vysoký rozsah prevádzkových napätí, niekde medzi 5 až 15 voltami. Používam 12V, pretože som mal batériu 12V. Na väčšinu štandardných hobby servov budete potrebovať nižšie napätie (často 6 voltov). 3) Batéria Robot je bez napájania zbytočný. Na testovanie používam štandardný 9V nástenný bradavičný adaptér od spoločnosti RadioShack, ale pre bezkáblovú prevádzku som v starodávnom prenosnom počítači našiel 12 V batériu NiMH. Napriek tomu, že na prevádzku prenosného počítača nie je dostatočne nabitý, poháňa môjho robota Vex v pohode. Môže tiež napájať Arduino pomocou vstupného kolíka Vin na napájacom konektore, Arduino bude regulovať 12 V až na 5 a dokonca ho vyvedie na výstupný kolík 5 V na napájacom konektore. 4) Základná doska na chlieb zapojte všetko. Nakoniec získam krajšiu prototypovaciu dosku a spájku na niektorých trvalejších spojoch, ale zatiaľ doska umožňuje ľahké zmeny vecí. Môj breadboard je „základný breadboard“spoločnosti SparkFun, iba nepájivá doska na kovovej doske s 3 svorkami.5) Konvertor RS232-TTL na báze MAX232 Ak chcete ovládať svojho robota pomocou pripojenia sériového portu RS-232 (na rozdiel od vstavaného Arduina v USB) môžete použiť prevodník RS232-TTL. Používam MAX232, pretože som ich mal položených niekoľko a spájkoval som ich na malý kus prototypovej dosky s požadovanými kondenzátormi. Potrebujem RS-232, pretože môj starý prenosný počítač má iba jeden port USB a ten používam na ovládanie robota herným ovládačom. 6) Ďalšie diely podľa potreby Na jednoduché ladenie sériového protokolu som naň umiestnil RGB LED (dostal jeden s mojou objednávkou Arduino, pretože zneli skvele). Keď sa Arduino spustí, svetlo bliká červeno, zeleno, modro a ukazuje, že sa robot reštartoval, a potom sa rozsvieti zelene, keď bol prijatý paket motora, modrá, keď bol prijatý paket ventilátora, a červená, keď je zlý alebo neznámy balíček bol prijatý. Na pohon ventilátora som použil štandardný NPN tranzistor (ten istý, ktorý som predviedol v mojom poslednom návode) a odpor medzi tranzistorom a Arduinom (tranzistor čerpal príliš veľa prúdu a zahrieval Arduino, preto som dal obmedzujúci zapojte odpor).

Krok 3: Programovanie Arduino a PC

Programovanie Arduino a PC
Programovanie Arduino a PC

Na programovanie Arduina budete očividne potrebovať softvér Arduino a kábel USB. Ak má váš počítač sériový port, môžete Arduino naprogramovať aj pomocou sériového portu a prevodníka úrovne TTL. Sériové rozhranie USB nebude komunikovať s procesorom Arduino ATMega, ak je k sériovým kolíkom Arduina (kolíky 0 a 1) pripojený prevodník úrovní, preto ho pred použitím USB odpojte. Na Arduine budeme potrebovať sériové rozhranie, ktoré umožňuje PC na ovládanie motorov. Budeme tiež potrebovať servopohonový systém PWM, aby sme odoslali správne signály do motorov Vex a zaistili, aby pri správnych hodnotách išli správnymi smermi. Tiež som pridal niekoľko jednoduchých blikajúcich LED diód, hlavne kvôli indikácii stavu, ale aj preto, že vyzerá super. Na počítači budeme musieť otvoriť sériový port a odoslať rámce údajov, ktorým program Arduino porozumie. PC musí tiež prísť s hodnotami motora. Jednoduchý spôsob, ako to urobiť, je použiť hernú podložku alebo joystick USB. Používam ovládač Xbox 360. Ďalšou možnosťou je použiť počítač v sieti (buď netbook alebo malú mini dosku ITX) na samotnom robotovi na bezdrôtovú jazdu. S netbookom môžete dokonca použiť vstavanú webovú kameru na streamovanie videa a na diaľkové ovládanie svojho robota. Na nastavenie siete som použil systém soketov Linux na programovanie siete. Jeden program („server joysticku“) beží na samostatnom počítači, do ktorého je zapojený ovládač, a ďalší program („klient“) sa spúšťa na netbooku pripojenom k Arduinu. Toto prepojí dva počítače a odošle informácie o joysticku na netbook, ktorý potom odošle sériové pakety do Arduina, ktoré poháňa robota. Ak sa chcete pripojiť k Arduinu pomocou počítača so systémom Linux (v C ++), musíte najskôr otvoriť sériový port na správnom mieste prenosovú rýchlosť a potom odošlite hodnoty pomocou protokolu, ktorý ste použili aj v kóde Arduina. Môj sériový formát je jednoduchý a efektívny. Na odoslanie dvoch rýchlostí motora (každý je jeden bajt) používam 4 bajty na „rámec“. Prvý a posledný bajt sú naprogramované hodnoty, ktoré sa používajú na to, aby Arduino neposielalo nesprávny bajt do kódu PWM a aby sa motory zbláznili. Toto je hlavný účel RGB LED diódy, ktorá bliká načerveno, keď nebol sériový rámec dokončený. Štyri bajty sú nasledujúce: 255 (pevne kódovaný „štartovací“bajt),,, 200 (napevno kódovaný „koncový“bajt) Aby ste zaistili spoľahlivý príjem údajov, medzi slučkami programu vložte dostatočné oneskorenie. Ak spustíte počítačový kód príliš rýchlo, zaplaví port a Arduino môže začať vypúšťať alebo dokonca nesprávne čítať bajty. Aj keď to nespúšťa informácie, môže to tiež pretekať vyrovnávacou pamäťou sériového portu Arduina. V prípade motorov Vex som použil knižnicu Arduino Servo. Pretože motory Vex sú iba motory s nepretržitým otáčaním, používajú úplne rovnakú signalizáciu, akú používajú servá. Avšak namiesto 90 stupňov ako stredového bodu je to bod zastavenia, kde sa motor netočí. Zníženie „uhla“spôsobí, že sa motor začne otáčať v jednom smere, zatiaľ čo pri zvyšovaní uhla sa bude otáčať v druhom smere. Čím ďalej ste od stredového bodu, tým rýchlejšie sa motor bude otáčať. Aj keď sa nič nepokazí, ak do motorov pošlete hodnoty vyššie ako 180 stupňov, odporúčam obmedziť hodnoty od 0 do 180 stupňov (čo sú v tomto prípade prírastky rýchlosti). Pretože som chcel väčšiu kontrolu a menej kontrolu nad riadením robota, pridal som do svojho programu softvérový „rýchlostný limit“, ktorý neumožňuje zvýšenie rýchlosti nad 30 „stupňov“v oboch smeroch (rozsah je 90 +/- 30). Plánujem pridať príkaz sériového portu, ktorý zmení rýchlostný limit, aby počítač mohol za behu rýchlo odstrániť limit (testoval som v malých miestnostiach, takže nechcem, aby sa zrýchlil) a narazíte do steny, najmä s netbookom). Ak chcete získať ďalšie informácie, stiahnite si priložený kód na konci tohto pokynu.

Krok 4: Pridajte netbook na objavovanie neznámych svetov na diaľku

Pridajte si netbook a objavujte neznáme svety na diaľku
Pridajte si netbook a objavujte neznáme svety na diaľku
Pridajte si netbook a objavujte neznáme svety na diaľku
Pridajte si netbook a objavujte neznáme svety na diaľku

S plne integrovaným počítačom vášho robota Arduino budete môcť svojho robota riadiť tak ďaleko, ako to dokáže dosiahnuť vaše WiFi, bez akýchkoľvek káblov, aby sa robot obmedzil na jednu oblasť. Dobrým kandidátom na túto prácu je netbook, pretože netbooky sú malé, ľahké, majú vstavanú batériu, majú WiFi a väčšina dokonca má vstavané webové kamery, pomocou ktorých je možné streamovať pohľad robota späť na bezpečné miesto. môže to ovládať Ak je váš netbook vybavený aj mobilnou širokopásmovou službou, váš dosah je prakticky neobmedzený. S dostatkom batérií môžete svojho robota odviezť na miestne miesto na pizzu a zadať objednávku cez webovú kameru (neodporúča sa, roboty nie sú na pizzerie zvyčajne povolené, aj keď by sa ľudia pravdepodobne pokúsili ukradnúť robota a možno dokonca aj pizza). Môže to byť tiež dobrý spôsob, ako preskúmať temné hĺbky suterénu z pohodlia kancelárskej stoličky, aj keď v tomto prípade môže byť veľmi užitočné pridať niektoré svetlomety.

Existuje mnoho spôsobov, ako to dosiahnuť, mnohé sú pravdepodobne oveľa jednoduchšie ako moje, hoci nie som oboznámený s jazykmi založenými na spracovaní alebo skriptoch, a preto som sa rozhodol použiť Linux a C ++ na vytvorenie prepojenia bezdrôtového ovládania medzi mojou základňovou stanicou (aka starý ThinkPad) a môj nový netbook Lenovo IdeaPad, ktorý je pripojený k základni pohonu Arduino. Oba počítače používajú Ubuntu. Môj ThinkPad je zapojený do školskej siete LAN a môj IdeaPad je pripojený k môjmu prístupovému bodu WiFi, ktorý je tiež pripojený k školskej sieti LAN (nemohol som získať spoľahlivý video stream zo školského WiFi, pretože ho používajú všetci ostatní, a tak som nastavil vytvoriť vlastný smerovač, aby poskytoval dobré pripojenie). Dobré pripojenie je v mojom prípade obzvlášť dôležité, pretože som neimplementoval žiadnu kontrolu chýb ani časový limit. Ak náhle dôjde k prerušeniu sieťového pripojenia, robot pokračuje v práci, kým do niečoho nezrazí, alebo kým ja nespustím a nezastavím to. Toto je hlavný faktor môjho rozhodnutia spomaliť hnaciu sústavu zaradením nižších prevodových stupňov motorov a zavedením softvérového obmedzenia rýchlosti.

Krok 5: Získajte kanál videa

Potom, čo váš robotický prieskumník môže jazdiť bezdrôtovo, budete pravdepodobne chcieť mať k dispozícii video z netbooku, aby ste vedeli, kde sa váš robot nachádza. Ak používate Ubuntu (alebo aj keď nie!) Na streamovanie odporúčam použiť VLC Media Player. Ak ho nemáte nainštalovaný, naozaj vám uniká, tak ho nainštalujte pomocou príkazu „sudo apt-get install vlc“, vyhľadajte VLC v softvérovom centre Ubuntu (iba 9.10) alebo si stiahnite inštalátor do videolanu. org, ak používate Windows. Budete potrebovať VLC spustený na oboch počítačoch. VLC dokáže streamovať aj prehrávať streamy v sieti. Na netbooku (robotický počítač) sa najskôr uistite, že vaša webová kamera (vstavaná alebo pripojená cez USB) funguje tak, že kliknete na položku Otvoriť zariadenie na snímanie a vyskúšate aplikáciu Video for Linux 2 (niektoré staršie zariadenia môžu namiesto novej verzie 2 potrebovať Video pre Linux). Pohľad kamery by ste mali vidieť na obrazovke netbooku. Ak ho chcete streamovať, v ponuke Súbor vyberte položku Streamovanie a potom vyberte kartu Zachytiť zariadenie v hornej časti zobrazeného okna. Nezabudnite, že Ubuntu (a mnoho ďalších distribúcií Linuxu) vám umožňuje podržať kláves Alt a klikať a ťahať okná, ktoré sú príliš veľké pre vašu obrazovku (obzvlášť užitočné pre staršie netbooky, aj keď aj môj IdeaPad má bez zjavného dôvodu zvláštne rozlíšenie 1024 x 576). Ak chcete skrátiť oneskorenie, kliknite na „Zobraziť ďalšie možnosti“a znížte hodnotu ukladania do vyrovnávacej pamäte. Suma, ktorú môžete znížiť, niekedy závisí od zariadenia. Ak ho príliš znížite, stane sa nestabilným. Po 300 ms sa môžete mierne zdržať, ale nie je to také zlé.

Potom kliknutím na Streamovať prejdete do ďalšej ponuky. Kliknite na Ďalej, potom vyberte a pridajte HTTP ako nový cieľ. Teraz nastavte transkódovanie, aby bol stream menší. Vytvoril som vlastný profil, ktorý používa M-JPEG pri 60 kb/s a 8 snímkach za sekundu. Dôvodom je, že používanie pokročilého kodeku, akým je MPEG alebo Theora, zaberie veľa času CPU procesoru Atom netbooku, čo môže viesť k zastaveniu prenosu videa bez zjavného dôvodu. MJPEG je jednoduchý kodek, ktorý sa ľahko používa pri nízkych bitových tokoch. Po spustení streamu otvorte VLC na druhom počítači, otvorte sieťový stream, zvoľte HTTP a potom zadajte IP adresu svojho netbooku (buď lokálneho alebo internetového podľa toho, ako sa pripájate), za ktorým nasleduje „: 8080“. Z nejakého zvláštneho dôvodu musíte zadať port, inak vám to spôsobí chyby. Ak máte slušné pripojenie, mali by ste na druhom počítači vidieť kanál svojej webovej kamery, ale bude to mať mierne (asi sekundové) oneskorenie. Neviem presne, prečo k tomuto zdržaniu dochádza, ale neviem prísť na to, ako sa toho zbaviť. Teraz otvorte aplikáciu na ovládanie a začnite riadiť svojho robota netbook. Vyskúšajte si, ako funguje oneskorenie počas jazdy, aby ste do ničoho nenarazili. Ak to funguje, váš robot netbook je hotový.

Odporúča: