Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

tank 2011/04/23 11:16 tank 2017/10/10 00:00 aktuální
Řádek 1: Řádek 1:
 +====== Tank ======
 +[[http://translate.google.com/translate?prev=hp&hl=cs&js=n&u=http%3A%2F%2Fprojects.adamh.cz%2Ftank&sl=auto&tl=en|English version]]
 +
 +<html>
 +<div class="notify" style="padding: 20px; margin: 0 auto; background-image: none">
 +Stránka vznikla v roce 2009 a slouží jako dokumentace popisující stavbu vozítka ovládaného technologií Bluetooth.<br>
 +<strong>Dnes si jsem vědom toho, že návrh obsahuje chyby</strong> (v elektronice či ve způsobu psaní programu), nicméně pro poměrnou oblíbenost stránky (několik lidí si podle ní fungující vozítko postavilo nebo jim ulehčila seznámení se s mobilní robotikou) ji na webu nechávám.
 +</div>
 +</html>
 +
 +
 +===== Úvod =====
 +Po dvou složitějších robotech ([[Eurobot2008]] a [[Robot2]]) jsem se rozhodl postavit si vozítko malé a jednoduché. Volba padla na plastový tančík, který byl ovládaný dvěma tužkovými monočlánky AA - podobných hraček se dá v hračkářstvích, na půdách nebo v bazarech sehnat plno. Další nabízejí na Internetu (například na [[http://shop.snailinstruments.com/index.php?main_page=product_info&cPath=77&products_id=313|Snailinstruments.cz]] jich několik je - navíc podvozek nemusí být nutně pásový, stačí i dvě hnací kolečka a jedno otočné).
 +Pásový (diferenciální) podvozek je pro malého robotka jako dělaný například proto, že se umí otočit na místě. Robotek může být řízen mobilním telefonem pomocí technologie Bluetooth díky modulu  [[http://pier.own.cz/dokumenty/OEMSPA310_datasheet.pdf|OEMSPA310]].
 +
 +{{http://dir.adamh.cz/robot-tank/fotka.jpg?400x290}}
 +{{http://dir.adamh.cz/robot-tank/foto/09042009733.jpg?400x290}}
 +
 +===== Elektronika =====
 +==== Deska ====
 +Jako mozek vozítka jsem použil svůj oblíbený mikrokontrolér [[http://knowhow.adamh.cz/cs:atmega8board|ATmega48]] - je relativně levný a má dostatek periferií. Deska plošných spojů obsahuje minimum drátových propojek a je navrhnuta tak, aby šla postavit na univerzálním plošném spoji s pady v rastru 2,54 mm, která se dá běžně koupit (já s ní pracuji tak, že jednotlivé pady propojuji cínovými cestičkami - chce to trochu cviku, ale zvládne to i programátor :-) ), nicméně připravil jsem i verzi, kterou si můžete vyrobit doma fotocestou. Díry jsou určeny pro uchycení šroubky a distančními sloupky M3 a jsou umístěny tak, aby pasovaly do stavebnice Merkur (násobky 10 mm). Kromě jednočipu **ATmega48** obsahuje tyto části:
 +  * **Stabilizátor 7805** - stabilizuje napájecí napětí 5 V pro desku.
 +  * **Resetovací tlačítko** - při stisku se program v procesoru spustí od začátku.
 +  * **Červená LED** dioda připojená k jednočipu (pin PD7).
 +  * **DIP switch** (4-bitový přepínač) - dá se použít například pro nastavení parametrů programu (volitelný)
 +  * **Hřebínky** pro vyvedení všech důležitých pinů jednočipu - zapojeny jako //PIN|GND// nebo //PIN|5V|GND// pro připojení analogových senzorů nebo modelářských serv (port C jednočipu).
 +  * **H-můstek L293D** pro spínání dvou motorů - maximálně 0,5 A (umožňuje měnit směr a řízení pomocí pulzně-šířkové moduleace - PWM). Při větších proudech se poměrně dost zahřívá, pro klid duše je dobré jej doplnit chladičem (chladič pro DIP16 - například v GM je to korunová položa). Ten pak stačí přilepit například vteřinovým lepidlem. Dobré je si předtím poznačit, kde se na obvodu nachází pin č. 1 - klasický prolis je totiž chladičem zakryt.
 +
 +Soubory nakreslené v programu Eagle si můžete stáhnout [[http://dir.adamh.cz/robot-tank/sources/board.zip|zde]]. Stisknutím tlačítka //Ratsnest// Eagle vykreslí rolitou měď (GND) pod H-můstkem, která pomáhá integrovaný obvod uchladit.
 +
 +{{http://dir.adamh.cz/robot-tank/sources/schematic.png?750x400}}
 +
 +==== Popis konektorů ====
 +{{http://dir.adamh.cz/robot-tank/sources/connectors.png}}
 +  * pokud je //JUMPER// zkratován, jsou motory napájeny 5 V přímo z desky. Pokud ne, je napájen z konektoru //MOTOR SUPPLY//.
 +  * konektor //UART// slouží k vyvedení sériového kanálu  TTL úrovních, například pro připojení Bluetooth modulu.
 +  * konektor //POWER// může sloužit k přímému napájení desky 5 V nebo k napájení periferií (senzory, Bluetooth modul) - pozor na polaritu!
 +  * konektory //MOTOR1// a //MOTOR2// slouží k připojení motorů, prostřední pin (GND) může být přiveden na kostru motoru, je li potřeba odrušení.
 +  * modré konektory u H-můstku a jednočipu znázorňují propojení dvoužilovými kablíky - slouží k ovládání motorů a je možné je jednoduše zaměnit nebo otočit.
 +  * Fialové konektory značí způsob připojení programátoru.
 +  * Žluté tlačítko //reset// slouží k resetování programu v jednočipu.
 +  * Svorkovnice v levém dolním rohu slouží k přivedení nestabilizovaného napájení 7-15 V pro desku.
 +
 +
 +
 +
 +
 +
 +
 +==== Kablíky ====
 +Je potřeba připravit si následující kablíky:
 +  * 2x propojovací kablík jednočipu a h-můstku -dvoužilný (nebo trojžilný, chcete-li z nějakého důvodu měnit pin enable h-můtku)
 +  * propojovací kablík h-můstek-motory - na jedné straně připájený k motorům, na straně druhé //PIN A|GND|PIN B//. Piny A a B se připojují na svorky motoru, pin GND může zůstat volný nebo může být přiveden na kovovou kostru motoru, chcete-li použít odrušení.
 +
 +Pro výrobu stačí samotný kablík (například šedý desetižilný), dutink, plastové obaly a kleštičky - vše se dá koupit v [[http://gme.cz|GM]] pod názvem KONPC. Je dobré nakoupit si jich několik do zásoby. Pokud nemáte krimpovací kleště, doporučuji [[http://rc.xf.cz/servokonektory.html|tento článek]], který výrobu pěkně popisuje - nesnažte se je pájet.
 +
 +==== Napájení ====
 +Díky stabilizátru 7805 (lze nahradit za nějakou lowdrop verzi) je možné desku napájet napětím 7-15 V - například klasickou 9 V baterií nebo 12 V trafem od starého routeru. Přestože je napájení před stabilizátorem chráněno diodou, je dobré si na svorkovnici poznačit, kam se připojuje kladné napětí. Na přívodní kabel do svorkovnice je dobré umístit malý vypínač.
 +
 +Celou desku je možné napájet čtyřmi tužkovými monočlánky, napětí musí být přivedeno na některý z konektorů (nejlépe na třířadý hřebínek u portu C) - zde si ale musíte dát pozor na polaritu, přímé napájení pěti volty chráněno diodou není.
 +
 +Na desce je jedinný jumper, kterým se nastavuje napájení motorů. pokud je zapojen, jsou motory napájeny 5 V napájením desky, pokud je rozpojen, berou si proud ze svého napájecího konektoru. **Jumper nesmí být zapojen, pokud je na napájecí konektor motorů přivedeno větší naptí než 5 V - zničilo by elektroniku**.
 +
 +Vypínač může být například vteřinovým lepidlem přilepen přímo pod desku:
 +
 +{{http://temp.adamh.cz/robot-tank/foto/09042009731.jpg?250x150}}
 +
 +==== Programování jednočipu ====
 +Pokud jste v oblasti jednočipů začítečníky, doporučuji navštívit stránku [[http://robotika.cz/guide/blink/cs|Blikáme LED diodou]], která vysvětluje, co je to jednočip, jak funguje a jak jej naprogramovat pomocí jednoduchého programátoru do paralelního portu, který se zkládá z několika odporů a kusu kablelu. Jednotlivé piny kablíku (je jich celkem pět) můžete osadit dutinkami, které jsem popsal výše, samostatně, nebo je sloučit do dvou konektorů: //RESET|GND// a //MOSI|MISO|SCK//.
 +
 +ATmega48 má interní oscilátor nastaven na 8 MHz, není tedy třeba nic nastavovat (zrušení osminásobné děličky je řešeno v programu) a stačí nahrát hex soubor. Ten si i s kompletními zdrojovými kódy v jazyce C (AVR-LIBC) můžete stáhnout [[http://dir.adamh.cz/robot-tank/sources/avr-sources.zip|zde]].
 +
 +==== Seznam součástek ====
 +  * IO ATmega48 + patice28 (stačí klasická, nemusí být precizní)
 +  * IO L293D (písmeno D je důležité - obvod obsahuje ochranné diody) + patice DIP16 (stačí klasická, nemusí být precizní) + volitelně chladič na DIP16, pokud se přiliš zahřívá
 +  * IO 7805(P) (NE verze L - ta má příliš malý proud) + volitelně chladič na TO220, pokud se příliš zahřívá
 +  * 4-bitový DIP switch (volitelně)
 +  * Mikrospínač (tact-switch)
 +  * Svorkovnice do DPS (2 piny)
 +  * Jednořadě a dvouřadé přímé lámací kolíkové lišty (hřebínky)
 +  * LED červená, 3 mm
 +  * Dioda 1N4007
 +  * R 330 ohmů
 +  * R 1k5 - 2x
 +  * C 2,2 uF (elektrolyt)
 +  * C 100 uF (elektrolyt)
 +  * C 0,1 uF - 2x (keramika)
 +  * Zkratovací propojka (jumper)
 +  * Kablíky, dutinky a krytky konektorů
 +  * Šroubky M3, distanční sloupky, ...
 +
 +
 +
 +
 +
 +
 +
 +===== Bluetooth =====
 +{{http://dir.adamh.cz/robot-tank/sources/bluetooth.png?250x200}}
 +
 +Aby šel tančík řídit z počítače nebo mobilního telefonu bezdrátově, rozhodl jsem se pro použití Bluetooth modulu, konkrétně [[http://www.connectblue.com/products/bluetooth-products/oem-modules/oemspa310/|OEMSPA310]], vyráběného firmou [[http://www.connectblue.se/|ConnectBlue]]. Bluetooth modul poskytl dodavatel pro Českou republiku, firma [[http://spezial.cz|Spezial Electronic]].
 +
 +
 +**Modul je potřeba správně nastavit.** O nastavení jsem požádal firmu Spezial Electronic, k nastavení doma totiž potřebujete speciální program a převodník:
 +
 +  * 8N1 (8 datových bitů, 1 stop bit, bez parity)
 +  * Bez HW flow control (RTS/CTS)
 +  * Rychlost 9600 kbps
 +  * Configuration Over Air (povolení nastavení Bluetooth modulu bezdrátově)
 +
 +Připojení k modulu je možno realizovat buď připájením přímo na desku plošných spojů, použitím speciálního konektoru, nebo přímým připájením kablíků k vybraným pinům - to je znázorněno na horním obrázku. Po připájení jsem nakrimpoval dva konektory - jeden na pár //Rx// a //Tx//, druhý na //Vcc// a //GND//. Modul vyžaduje napájení od 3-6 V, proto je možné připojit napájecí kablík přímo k desce. Místo, kde jsou kablíky připájeny, jsem přelepil izolační páskou, aby případný tah za kablíky nepůsobil na pájený spoj - ten by byl velice náchylný na zlomení nebo vytrhnutí. Modul lze připevnit dvěma šroubky M2, v tanku je schován v prostoru pod hlavní deskou.
 +
 +__Pozor:__ **Kablíky z modulu __nepřipojujeme k mikrokontroleru přímo__, protože výstupní signály OEMSPA310 jsou v 3 V úrovních a 5 V úrovně z ATmega48 by jej mohly zničit. Pro ochranu postačí, když vysílací (Tx - transmit) pin mikrokontroléru a přijímací (Rx - receive) pin Bluetooth modulu propojíme odporovým děličem 1k8/2k2:**
 +
 +{{http://dir.adamh.cz/robot-tank/sources/avr-bluetooth.png}}
 +
 +
 +===== Ovládání =====
 +Dálkové ovládání je řešeno SPP (Serial Port Protocol) - to znamená, že se bluetooth modul chová jako sériový port - v tomto případě je nastaven na 9600 8N1. Přijímá dvouznakové příkazy oddělené novým řádkem (CR LF); První znak řídí levý motor, druhý pravý. Můžou se točit buď dopředu (F), dozadu (B) nebo se zastavit (S). Kombinace pak vypadá nějak takto:
 +
 +  * //FF// - jeď dopředu
 +  * //SS// - stůj
 +  * //BF// - otoč se na místě
 +
 +Na každý příkaz posílá odpověď //OK//, jak se můžete přesvědčit například v Hyperterminálu.
 +
 +
 +
 +
 +==== Počítač ====
 +Nejdříve je potřeba ve správci bluetooth zařízení spárovat bluetooth modul s počítačem. Systém pak oznámí, jaké číslo portu bude zařízení používat (u mě je to COM9). Pro řízení byla napsaána jednoduchá aplikace v Delphi (vývojové prosředí Delphi 7 personal edition, které je zdarma). Aplikace se připojí k sériovému portu a posílá příkazy - lze buď klikat na tlačítka nebo použít šipky na klávesnici. Pro zastavení je použita šipka dolů.
 +
 +{{http://dir.adamh.cz/robot-tank/sources/tank-control.png}}
 +
 +Pro ladění má aplikace jednoduchou konzoli, díky které můžeme posílat/přijímat příkazy - například //SS// pro zastavení. Je zde hlavně pro vyplnění místa a kvůli ladění :-)
 +
 +Aplikace je volně ke stažení jako [[http://dir.adamh.cz/robot-tank/sources/TankControl.exe|TankControl.exe]] nebo jako [[http://dir.adamh.cz/robot-tank/sources/tank-control.zip|ZIP archív se zdrojovými kódy]]. Pro upravování zdrojových kódů a kompilaci je potřeba knihovna [[http://www.ararat.cz/synapse/files/synaser.zip|synaser]] (soubory *.pas stačí nakopírovat do library adresáře Delphi), více o knihovně v [[http://casopis.programator.cz/r-art.php?clanek=115|článku na programator.cz]].
 +
 +Lidé, kteří z trucu nebo ze záliby v příkazové řádce používají nějaký minoritní operační systém postavný na Linuxu, by aplikaci měli spustit pomocí programu //wine// (zatím netestováno).
 +
 +==== Mobilní telefon ====
 +
 +Většina dnešních mobilních telefonů disponuje bluetoothem a javou (J2ME), takže jsem se rozhodl napsat ovládací aplikaci i pro ně. Zatím je velice jednoduchá - po spuštění je potřeba kliknou na adresu našeho zařízení (ne na položku //fake mode// - ta slouží poue k testování), potvrdit připojení k němu a je to. Ovládá se klávesnicí:
 +
 +  * 2 - dopředu
 +  * 5 - stůj
 +  * 8 - dozadu
 +  * 4 - doleva na místě
 +  * 6 - doprava na místě
 +  * 1 - doleva (točí se pouze jeden motor)
 +  * 3 - doprava (točí se pouze jeden motor)
 +
 +{{http://dir.adamh.cz/robot-tank/sources/j2me-tank-control.png}}
 +
 +Aplikace je napsána (a naklikána) ve výjovovém prostředí Netbeans 6.5, které je rovněž volně ke stažení. Zatím není odzkoušena na jiných telefonech, než na symbianových Nokiích (s60 3rd ed.) - například N78. Ke stažení jsou jak [[http://dir.adamh.cz/robot-tank/sources/BluetoothApplication.zip|zdrojové kódy]], tak i [[http://dir.adamh.cz/robot-tank/sources/BluetoothApplication.jar|JAR]] a [[http://dir.adamh.cz/robot-tank/sources/BluetoothApplication.jad|JAD]] soubory.
 +
 +
 +
 +
 +===== Videa =====
 +
 +<html>
 +<object width="425" height="344">
 +<param name="movie" value="http://www.youtube.com/v/UUsMal8-oX4&hl=en&fs=1">
 +</param><param name="allowFullScreen" value="true">
 +</param><param name="allowscriptaccess" value="always">
 +</param><embed src=http://www.youtube.com/v/UUsMal8-oX4&hl=en&fs=1
 +type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
 +</embed></object>
 +
 +<object width="425" height="344">
 +<param name="movie" value="http://www.youtube.com/v/ZnGisX0zvmo&hl=en&fs=1">
 +</param><param name="allowFullScreen" value="true">
 +</param><param name="allowscriptaccess" value="always">
 +</param><embed src=http://www.youtube.com/v/ZnGisX0zvmo&hl=en&fs=1
 +type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344">
 +</embed></object>
 +</html>
 +
 +Odkazy na YouTube: [[http://www.youtube.com/watch?v=UUsMal8-oX4&feature=channel|první]] a [[http://www.youtube.com/watch?v=ZnGisX0zvmo&feature=channel|druhé video]].
 +
 +
 +===== Kdo si již tančk postavil? =====
 +
 +Pokud jste se rozhodli pro stavbu tančíku, napište mi prosím na můj [[http://adamh.cz|e-mail]] :-)
 +
 +Následující obrázky poskytl Miroslav Kubánek:
 +
 +{{http://dir.adamh.cz/robot-tank/foto/miroslav_kubanek/tancik1.jpg?400x300}}
 +{{http://dir.adamh.cz/robot-tank/foto/miroslav_kubanek/tancik2.jpg?400x300}}
 +
 +Jiří Škvára se rozhodl pro bezpásovou variantu se dvěma kolečky, původní desku vylepšil a svého robota doplnil o autonomní chování s využitím pěkně zpracovaných dotykových čidel:
 +
 +{{http://dir.adamh.cz/robot-tank/foto/jiri_skvara/jirka1.jpg?400x300}}
 +{{http://dir.adamh.cz/robot-tank/foto/jiri_skvara/jirka2.jpg?400x300}}
 +
 +
 +===== Odkazy =====
 +  * **Schémata, ovládací program, fotografie:** http://dir.adamh.cz/robot-tank
 +
 +  * Firma Spezial Electronic (dodavatel bluetooth modulů ConnectBlue): http://www.spezial.cz
 +  * Přestavba RC auta na bluetooth: http://pier.own.cz/index.php?text=16-prestavba-rc-auta-na-bluetooth
 +  * Web věnovaný robotice: http://robotika.cz
 +
 +  * Článek na Pandatronu: http://pandatron.cz/?740&robot_ovladany_pres_bluetooth
 +
 +  * **Robot BlueBot:** http://knowhow.adamh.cz/BlueBot/
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 
 
Driven by DokuWiki

© 2008-2012 Adam Heinrich, adamh.cz, adam@adamh.cz