Obsah:

Jednoduchá platforma robotiky Arduino !: 5 kroků
Jednoduchá platforma robotiky Arduino !: 5 kroků

Video: Jednoduchá platforma robotiky Arduino !: 5 kroků

Video: Jednoduchá platforma robotiky Arduino !: 5 kroků
Video: Arduino: Základy 01 | Seznámení s Arduinem [sub] 2024, Červenec
Anonim
Jednoduchá platforma robotiky Arduino!
Jednoduchá platforma robotiky Arduino!
Jednoduchá platforma robotiky Arduino!
Jednoduchá platforma robotiky Arduino!

Právě jsem dostal Arduino po hraní s některými mikrokontroléry AVR během setkání týmu Robotics. Líbil se mi nápad opravdu levného programovatelného čipu, který by mohl běžet téměř cokoli z jednoduchého počítačového rozhraní, takže jsem dostal Arduino, protože už má pěknou desku a rozhraní USB. Pro svůj první projekt Arduino jsem vykopal stavebnici Vex Robotics, kterou jsem měl položenou kolem některých soutěží, které jsem dělal na střední škole. Vždy jsem chtěl vytvořit počítačovou robotickou platformu, ale mikrokontrolér Vex vyžaduje programovací kabel, který jsem neměl. Rozhodl jsem se použít svůj nový Arduino (a možná později holý AVR čip, pokud mi to funguje) k řízení platformy. Nakonec chci získat netbook a pak mohu řídit robota pomocí WiFi a vzdáleně zobrazit jeho webovou kameru.

Podařilo se mi získat slušný sériový protokol a jednoduchý příklad, který řídí robota pomocí ovladače Xbox 360 připojeného k počítači s Linuxem.

Krok 1: Co dokáže…

Co dokáže…
Co dokáže…
Co dokáže…
Co dokáže…

Arduino je velmi univerzální platforma. Mým základním cílem bylo jen přimět Arduino k propojení dvou motorů Vex s PC, ale měl jsem spoustu zbylých vstupních/výstupních pinů a rozhodl jsem se přidat nějaké další věci. Právě teď mám RGB LED pro stav sériového portu (zelená, pokud jsou pakety dobré, červená, pokud jsou špatné) a ventilátor PC poháněný tranzistorem. Můžu také přidat přepínače a senzory, ale ještě jsem na ně žádný z nich nedal. Nejlepší na tom je, že do robota Arduino můžete přidat co chcete. K ovládání dalších věcí a získání vstupu do počítače stačí jen trochu kódu rozhraní.

Krok 2: Díly

Díly
Díly
Díly
Díly
Díly
Díly

Pro svého robota jsem použil několik různých částí. Většina dílů pocházela ze starých věcí, které jsem měl v suterénu. 1) Arduino Duemilanove w/ ATMega328 Toto je nejnovější Arduino, a protože jsem ho dostal před několika dny, mám nejnovější. Kód je však dostatečně malý, aby se snadno vešel na jakékoli Arduino. Pravděpodobně by se to mohlo dokonce hodit na ATTiny (pokud postavím robotický ovladač mimo Arduino, ATTiny 2313 vypadá jako dobrá volba, je menší a levnější, ale stále má spoustu výstupů a sériové rozhraní UART) 2) Platforma Vex RoboticsI před několika lety dostal stavebnici Vex na stavbu rádiem řízeného robota, který by sbíral věci pro soutěž na střední škole. Postavil jsem základní základnu „square bot“, která má 4 kola poháněná dvěma motory. Pokud máte jinou platformu, kterou chcete řídit, můžete nahradit jiné základny robotů. Důležité je poznamenat, že motory Vex jsou v podstatě serva s nepřetržitým otáčením a používají modulaci šířky impulzů k signalizaci rychlosti a směru otáčení. Motory Vex jsou pěkné, protože mají vysoký rozsah provozních napětí, někde mezi 5 až 15 volty. Používám 12V, protože jsem měl 12V baterii. U většiny standardních hobby serv budete potřebovat nižší napětí (často 6 voltů). 3) Baterie Robot je bez zdroje k ničemu. K testování používám standardní 9V nástěnný adaptér od společnosti RadioShack, ale pro bezdrátový provoz jsem ve starodávném notebooku našel baterii 12V NiMH. Přestože nenabízí dostatečně nabitý notebook, pohání mého robota Vex v pohodě. Může také napájet Arduino pomocí vstupního kolíku Vin na napájecím konektoru, Arduino bude regulovat 12V až na 5 a dokonce jej vyvede na výstupní pin 5V na napájecím konektoru. 4) Základní Breadboard zapojit vše. Nakonec získám hezčí prototypovací desku a pájku na některých trvalejších připojeních, ale prozatím deska usnadňuje změnu věcí. Moje prkénko je „základní prkénko“SparkFun, jen prkénko na kovové desce se 3 svorkami.5) Převodník RS232-TTL na bázi MAX232 Pokud chcete řídit svého robota pomocí připojení sériového portu RS-232 (na rozdíl od vestavěného Arduina USB) můžete použít převodník RS232-TTL. Používám MAX232, protože se mi jich pár povalovalo a připájel jsem je na kousek prototypovací desky s požadovanými kondenzátory. Potřebuji RS-232, protože můj starý notebook má pouze jeden USB port a ten používám pro ovládání robota herním ovladačem. 6) Další díly podle potřeby Pro snadné ladění sériového protokolu jsem na něj umístil RGB LED (dostal jeden s mojí objednávkou Arduino, protože zněly skvěle). Kontrolka bliká červeně, zeleně, modře v pořadí, když se Arduino spustí, aby ukázal, že se robot restartoval, a poté se rozsvítí zeleně, když byl přijat paket motoru, modrá, když byl přijat paket ventilátoru, a červená, když byl špatný nebo neznámý paket byl přijat. K pohonu ventilátoru jsem použil standardní NPN tranzistor (stejný, jaký jsem předvedl ve svém posledním Instructable) a odpor mezi tranzistorem a Arduinem (tranzistor odebíral příliš mnoho proudu a zahříval Arduino, takže jsem dal omezující odpor k zastavení).

Krok 3: Programování Arduina a PC

Programování Arduino a PC
Programování Arduino a PC

K programování Arduina budete zjevně potřebovat software Arduino a USB kabel. Pokud má váš počítač sériový port, můžete Arduino také naprogramovat pomocí sériového portu a převodníku úrovně TTL. Sériové rozhraní USB nebude komunikovat s procesorem Arduino ATMega, pokud je k sériovým pinům Arduina (piny 0 a 1) připojen převodník úrovní, takže jej před použitím USB odpojte. Na Arduinu budeme potřebovat sériové rozhraní, které umožňuje PC k ovládání motorů. Budeme také potřebovat systém servopohonu PWM, který bude vysílat správné signály do motorů Vex a ujistit se, že při správných hodnotách jdou správnými směry. Také jsem přidal nějaké jednoduché blikání LED, hlavně pro indikaci stavu, ale také proto, že to vypadá skvěle. Na PC budeme muset otevřít sériový port a odeslat rámce dat, kterým program Arduino porozumí. PC také musí přijít s hodnotami motoru. Snadný způsob, jak to udělat, je použít herní podložku nebo joystick USB. Používám ovladač Xbox 360. Další možností je použít počítač v síti (buď netbook nebo malou desku mini ITX) na samotném robotu k bezdrátovému řízení. S netbookem můžete dokonce použít integrovanou webovou kameru ke streamování videa a řízení robota na dálku. K nastavení sítě jsem použil systém soketů Linux k programování sítě. Jeden program („server joysticku“) je spuštěn na samostatném počítači, do kterého je zapojen ovladač, a jiný program („klient“) je spuštěn na netbooku připojeném k Arduinu. Tím se propojí oba počítače a odešle se informace o joysticku na netbook, který poté odešle sériové pakety do Arduina, který řídí robota. Chcete -li se připojit k Arduinu pomocí počítače se systémem Linux (v C ++), musíte nejprve otevřít sériový port na správném přenosovou rychlost a poté odešlete hodnoty pomocí protokolu, který jste také použili na kódu Arduina. Můj sériový formát je jednoduchý a efektivní. K odeslání dvou rychlostí motoru (každý je jeden bajt) používám 4 bajty na „rámec“. První a poslední bajty jsou pevně zakódované hodnoty, které se používají k tomu, aby Arduino neposílalo nesprávný bajt do kódu PWM a způsobovalo šílenství motorů. Toto je primární účel RGB LED, bliká červeně, když sériový snímek nebyl kompletní. 4 bajty jsou následující: 255 (pevně kódovaný „počáteční“bajt),,, 200 (pevně kódovaný „koncový“bajt) Chcete -li zajistit spolehlivý příjem dat, zajistěte dostatečné zpoždění mezi smyčkami programu. Pokud spustíte počítačový kód příliš rychle, zaplaví port a Arduino může začít upouštět nebo dokonce chybně číst bajty. I když to nespustí informace, může to také přetečit vyrovnávací paměť sériového portu Arduina. U motorů Vex jsem použil knihovnu Arduino Servo. Protože motory Vex jsou pouze motory s nepřetržitým otáčením, používají přesně stejnou signalizaci, jakou používají serva. Místo toho, aby 90 stupňů bylo středovým bodem, je to bod zastavení, kde se motor netočí. Snížení „úhlu“způsobí, že se motor začne točit v jednom směru, zatímco se zvyšováním úhlu se bude otáčet v opačném směru. Čím dále jste od středového bodu, tím rychleji se motor točí. I když se nic nezlomí, pokud do motorů pošlete hodnoty větší než 180 stupňů, doporučil bych omezit hodnoty od 0 do 180 stupňů (což jsou v tomto případě přírůstky rychlosti). Protože jsem chtěl větší kontrolu a méně kontroly mimo řízení robota, přidal jsem do svého programu softwarový „rychlostní limit“, který neumožňuje zvýšení rychlosti nad 30 „stupňů“v žádném směru (rozsah je 90 +/- 30). Mám v plánu přidat příkaz sériového portu, který změní rychlostní limit, aby počítač mohl odstranit limit za běhu, pokud chcete jet rychle (testoval jsem v malých místnostech, takže nechci, aby to zrychlilo a narazit do zdi, zejména s netbookem). Chcete -li získat další informace, stáhněte si přiložený kód na konci tohoto Instructable.

Krok 4: Přidejte netbook a prozkoumejte na dálku neznámé světy

Přidejte si netbook a prozkoumejte na dálku neznámé světy
Přidejte si netbook a prozkoumejte na dálku neznámé světy
Přidejte si netbook a prozkoumejte na dálku neznámé světy
Přidejte si netbook a prozkoumejte na dálku neznámé světy

S plným PC na palubě vašeho robota Arduino můžete řídit svého robota tak daleko, jak to vaše WiFi dosáhne, bez jakýchkoli kabelů, které by robota omezily na jednu oblast. Dobrým kandidátem na tuto práci je netbook, protože netbooky jsou malé, lehké, mají vestavěnou baterii, mají WiFi a většina dokonce má zabudované webové kamery, pomocí kterých lze streamovat pohled robota zpět na bezpečné místo, kde může to ovládat. Pokud je váš netbook vybaven mobilní širokopásmovou službou, je váš dosah prakticky neomezený. S dostatkem baterií můžete svého robota odvézt na místní pizzerii a zadat objednávku přes webovou kameru (nedoporučuje se, roboti na pizzerie obvykle nemají přístup, i když by se pravděpodobně lidé pokusili ukrást robota a možná dokonce i pizza). Může to být také dobrý způsob, jak prozkoumat temné hloubky vašeho suterénu z pohodlí vaší kancelářské židle, i když přidání některých světlometů může být v tomto případě velmi užitečné.

Existuje mnoho způsobů, jak to zprovoznit, mnohé jsou pravděpodobně mnohem jednodušší než moje, i když nejsem obeznámen s jazyky pro zpracování nebo skripty, takže jsem se rozhodl použít Linux a C ++ k vytvoření bezdrátového ovládacího propojení mezi mojí základnovou stanicí (aka starý ThinkPad) a můj nový netbook Lenovo IdeaPad, který je připojen k základně pohonu Arduino. Oba počítače používají Ubuntu. Můj ThinkPad je zapojen do LAN mé školy a můj IdeaPad je připojen k mému přístupovému bodu WiFi, který je také připojen ke školní LAN (nemohl jsem získat spolehlivý stream videa ze školního WiFi, protože jej používají všichni ostatní, takže jsem nastavil vytvořte vlastní směrovač, abyste zajistili dobré připojení). Dobré připojení je v mém případě obzvláště důležité, protože jsem neimplementoval žádnou kontrolu chyb nebo časový limit. Pokud síťové připojení náhle přeruší, robot pokračuje v pohybu, dokud do něčeho nenarazí, nebo já jej nespustím a nezastavím. Toto je hlavní faktor mého rozhodnutí zpomalit hnací ústrojí, a to převodem motorů dolů a zavedením softwarového rychlostního limitu.

Krok 5: Získejte kanál videa

Poté, co váš robotický průzkumník může řídit bezdrátově, budete pravděpodobně chtít mít video přenos z netbooku, abyste věděli, kde je váš robot. Pokud používáte Ubuntu (nebo i když ne!) Doporučuji ke streamování použít VLC Media Player. Pokud jste jej nenainstalovali, opravdu vám něco chybí, nainstalujte jej tedy pomocí příkazu „sudo apt-get install vlc“, vyhledejte VLC v softwarovém centru Ubuntu (pouze 9.10) nebo si stáhněte instalační program na videolan. org, pokud používáte Windows. Budete potřebovat VLC běžící na obou PC. VLC je schopen streamovat i přehrávat streamy v síti. Na netbooku (robot PC) se nejprve ujistěte, že vaše webová kamera (vestavěná nebo připojená přes USB) funguje tak, že kliknete na Otevřít zařízení pro zachycení a vyzkoušíte Video pro Linux 2 (některá starší zařízení mohou potřebovat Video pro Linux spíše než novou verzi 2). Pohled kamery byste měli vidět na obrazovce netbooku. Chcete -li jej streamovat, vyberte Streamování z nabídky Soubor a poté vyberte kartu Zachytit zařízení v horní části zobrazeného okna. Pamatujte, že Ubuntu (a mnoho dalších distribucí Linuxu) vám umožní podržet Alt a klikat a přetahovat okna, která jsou příliš velká pro vaši obrazovku (obzvláště užitečné u starších netbooků, i když i můj IdeaPad má liché rozlišení 1024x576 bez zjevného důvodu). Chcete -li zkrátit zpoždění, klikněte na „Zobrazit další možnosti“a snižte hodnotu ukládání do mezipaměti. Částka, kterou můžete snížit, někdy závisí na zařízení, stane se nestabilní, pokud ji příliš snížíte. Na 300 ms se můžete trochu zpozdit, ale není to tak špatné.

Dále kliknutím na Stream přejdete do další nabídky. Klikněte na Další, poté vyberte a přidejte HTTP jako nový cíl. Nyní nastavte Transcoding, aby byl stream menší. Vytvořil jsem vlastní profil, který používá M-JPEG při 60 kb/s a 8 fps. Důvodem je, že používání pokročilého kodeku, jako je MPEG nebo Theora, spotřebuje na procesoru Atom netbooku značný čas CPU, což může vést k tomu, že se vaše video zastaví bez zjevného důvodu. MJPEG je jednoduchý kodek, který se snadno používá při nízkých přenosových rychlostech. Po spuštění streamu otevřete na druhém počítači VLC, otevřete síťový stream, vyberte HTTP a poté zadejte IP adresu netbooku (ať už lokálního nebo internetového podle toho, jak se připojujete) a za ním „: 8080“. Z nějakého lichého důvodu musíte zadat port, jinak vám to způsobí chyby. Pokud máte slušné připojení, měli byste vidět zdroj vaší webové kamery na druhém počítači, ale bude mít mírné (asi vteřinové) zpoždění. Nevím přesně, proč k tomuto zpoždění dochází, ale nemohu přijít na to, jak se toho zbavit. Nyní otevřete ovládací aplikaci a začněte řídit svého robota netbook. Zjistěte, jak funguje zpoždění při řízení, abyste do ničeho nenarazili. Pokud to funguje, váš robot netbook je hotový.

Doporučuje: