. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Robot ovládaný přes Bluetooth
16. dubna 2009 | Adam Heinrich | Robot ovládaný přes Bluetooth | Komentářů: 85  

Robot ovládaný přes Bluetooth

Konstrukce jednoduchého robota – tančíku, ovládaného prostřednictvím PC a mobilního telefonu s Bluetooth.

Po dvou složitějších robotech (Eurobot2008 a Robot2) jsem se rozhodl postavit si malé a jednoduché vozítko. 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 vždy plno. Další nabízejí na Internetu (například na 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 robota jako dělaný například proto, že se umí otočit na místě. Robot může být řízen mobilním telefonem pomocí technologie Bluetooth, což mi darováním Bluetoth modulu OEMSPA310 výrobce ConnectBlue umožnila firma Spezial Electronic - tímto bych jí chtěl ještě jednou poděkovat.


Obr. 1: Fotografie robota v terénu
 
Obr. 2: Fotografie robota v kamenitém terénu

Popis elektroniky:

Deska:
Jako mozek vozítka jsem použil svůj oblíbený mikrokontrolér ATmega48, který je relativně levný a má dostatek periferií i paměti. Deska plošných spojů obsahuje minimum drátových propojek a je navržena tak, aby šla postavit na univerzálním plošném spoji s piny v rastru 2,54 mm, která se dá běžně koupit (já s ní pracuji tak, že jednotlivé piny 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 například 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 deska tyto části:

  • Stabilizátor 7805 - stabilizuje napájecí napětí +5V 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, je tedy pouze 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ů - proud maximálně 0,5 A (umožňuje měnit směr a řízení pomocí pulzně-šířkové modulace - PWM). Při větších proudech se poměrně dost zahřívá, pro klid duše je dobré jej tedy 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ž následně chladičem zakryt.

Soubory nakreslené v programu Eagle si můžete stáhnout zde, nebo na konci článku z webu autora. Stisknutím tlačítka Ratsnest Eagle vykreslí rozlitou měď (GND) pod H-můstkem, která pomáhá integrovaný obvod uchladit.


Obr. 3: Schéma zapojení

Popis konektorů:


Obr. 4: Rozmístění konektorů

  • Pokud je JUMPER zkratován, jsou motory napájeny napětím +5V přímo z desky. Pokud ne, jsou napájeny z konektoru MOTOR SUPPLY.
  • Konektor UART slouží k vyvedení sériové linky v TTL úrovních, například pro připojení Bluetooth modulu.
  • Konektor POWER může sloužit k přímému napájení desky napětím 5V nebo k napájení dalšíchperiferií (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 zajistit například 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:
Pro stavbu 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ý), dutinky, plastové obaly a kleštičky - vše se dá koupit v GM pod názvem KONPC. Je dobré nakoupit si jich několik do zásoby. Pokud nemáte krimpovací kleště, doporučuji například 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 poté 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 +5V 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ší napětí než 5V - zničilo by elektroniku.

Vypínač může být například vteřinovým lepidlem přilepen přímo pod desku s elektronikou:


Obr. 5: Hlavní vypínač umístený pod deskou

Programování jednočipu:
Pokud jste v oblasti jednočipů začítečníky, doporučuji navštívit například stránku 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 kabelu. Jednotlivé piny kablíku (je jich celkem pět) můžete osadit dutinkami, které jsem popsal výše a to buď 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 jen stačí nahrát hex soubor. Ten si i s kompletními zdrojovými kódy v jazyce C (AVR-LIBC) můžete stáhnout zde, nebo na konci článku z webu autora.

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 modul:


Obr. 6: Zapojení Bluetooth modulu OEMSPA310

Aby šel robot ovládat z počítače nebo mobilního telefonu bezdrátově, rozhodl jsem se pro použití Bluetooth modulu. Konkrétně padla volba na OEMSPA310, vyráběný firmou ConnectBlue a dodávaného firmou Spezial Electronic. Firmě Spezial Electronic bych tímto za darování modulu na stavbu robota chtěl poděkovat.

Modul jsem si firmou Spezial Electronic nechal nastavit na komunikaci 9600 bd 8N1 (9600 kbps, 8 datových bitů, jeden stop bit, bez parity) a povolení nastavování vzdáleně přes bluetooth, doma jsem proto ani nemusel stahovat speciální konfigurační program. 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 obrázku č.6. Po připájení kablíků jsem na jejich konce 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 raději ještě přelepil izolační páskou, aby případný tah za kablíky nepůsobil přímo na pájený spoj - ten by tím 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:


Ovládání:

Dálkové ovládání je řešeno pomocí SPP (Serial Port Protocol) - to znamená, že se Bluetooth modul chová jako sériový port - v tomto případě je nastaven na 9600 8N1. Robot 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 robot odpovídá 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í robota byla napsána jednoduchá aplikace v Delphi (vývojové prostř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ů.


Obr. 7: Ovládací program Tank Control

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 již zmínenému ladění.

Aplikace je volně ke stažení jako ZIP archív se zdrojovými kódy. Pro upravování zdrojových kódů a kompilaci je potřeba knihovna synaser (soubory *.pas stačí nakopírovat do library adresáře Delphi), více o knihovně v č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 postavený 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 pouze velice jednoduchá - po spuštění je potřeba kliknou na adresu našeho zařízení (ne na položku fake mode - ta slouží pouze k testování), potvrdit připojení k němu a je to.

Pohyb robota se následně ovládá 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)


Obr. 8: Ovládání prostřednictvím mobilního telefonu

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 zdrojové kódy, tak i JAR a JAD soubory.


Videa:

Stáhněte si prosím Flash Player pro přehrávání videí.


Stáhněte si prosím Flash Player pro přehrávání videí.

Možná vylepšení:

Deska je samozřejmě vybavena spoustou volných pinů a slušným množstvím rozhraní, stačí tedy přidat jeden nebo dva senzory a napsat jednoduché algoritmy umělé inteligence, aby se z malého plastového tančíku stal robot jak má být. Robotika je pro spoustu programátorů určitě zajímavým odvětvím, odzkoušet si algoritmy na něčem, co bzučí a jezdí po podlaze je bezesporu lákavé :-)

Pro ladění se dá použít jak sériový port, tak i čtyřbitový DIP switch. Možností vylepšení je plno, například:

  • Vyšperkování ovládacích programů.
  • Úprava řídícího programu, aby pomocí PWM (pulzně-šířková modulace) mohl měnit rychlost otáček › plynulejší zatáčení.
  • Připojení analogového infračerveného měřiče vzdálenosti (například GP2D120) - vyhýbání se překážkám.
  • Připojení ultrazvukového měřiče vzdálenosti (například SRF02, který komunikuje přes I2C) - vyhýbání se překážkám.
  • Měřiče vzdálenosti mohou být uchyceny na modelářském servu, které jim umožní natáčení (ideální je nějaké levné mikroservo).
  • Připojení akcelerometru (například MMA7260) - pro jízdu terénem - detekce náklonu atd.
  • Vytvoření inkrementálního enkodéru („snímače otáček“) - jednoduchá odometrie.

Autor: Adam Heinrich

Odkazy & Download:
Schémata, ovládací program na - http://lib.adamh.cz/tank
Další fotografie na - http://temp.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







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (85):

Zobrazit starší 30 dnů (85)...

host
85. Dne 01. 09. 2013 v 00:33 zaslal host
OBS411i
Mám bluetooth modul OBS411i a mám problém s komunikací. Z čipu na počítač odešlu cokoliv, ale s počítače na čip se mi to nedaří. Program používám ten který jsem si tu stáhl. Myslím že problém je někde v nastavení modulu. Můžete mi někdo poradit jak přesně nastavit všechny konfigurace v AT Toolboxu? Děkuji


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
CBA-LS-40M
Kablík s konektorem pro GPS modul GPS-320FW od RF Solutions.
od 165 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007