Mendelova univerzita v Brně Provozně ekonomická fakulta
Rozšíření řídicí jednotky robotického systému LEGO Mindstorms NXT o Wi-Fi komunikační rozhraní Bakalářská práce
Vedoucí práce: Ing. Oldřich Trenz, Ph.D.
Tomáš Filip
Brno, 2010
Na tomto místě bych měl poděkovat několika osobám, bez nichž by tato bakalářská práce pravděpodobně nikdy nevznikla, nebo by byla o některé věci ochuzena. Především jsou to moji rodiče, kteří mě ve studiu neustále podporovali a vlévali do mě chuť k další práci. Také byli nesmírně trpěliví při vytváření této závěrečné práce. Dále bych chtěl poděkovat panu Ing. Trenzovi, Ph.D., jakožto vedoucímu mé bakalářské práce za tento skvělý námět a jeho drahocenný čas, který mi věnoval. Je mou povinností poděkovat i svému oponentovi, panu Dr. Ing. Kuklovi za jeho cenné rady při zpracovávání druhého řešení této práce. A nesmím také zapomenout poděkovat panu Kelerovi, panu Meduňovi a paní Fuchsové ze společnosti Globus ČR, k. s. za organizaci a umožnění praktické zkoušky mého řešení v rozsáhlém zázemí společnosti, díky čemuž jsem se přesvědčil, že můj návrh řešení opravdu funguje.
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně s použitím zdrojů, které uvádím v seznamu literatury.
V Brně, 7. 3. 2010
....................................................
4
Abstract Filip, T. Extending the control unit of the robotic system LEGO Mindstorms NXT by the Wi-Fi communication interface. Bachelor thesis. Brno, 2010 This bachelor thesis deals with the control unit of the robotic system LEGO Mindstorms NXT, in particular its communication with the surroundings. There will be analyzed all the communications technologies and standards, which has the unit. On the basis of this analysis will be designed a procedure to expand the unit by the wireless technology Wi-Fi. The proposed solution will be practically implemented. Keywords NXT, Mindstorms, robot, Wi-Fi, Java, LEGO, LeJOS
Abstrakt Filip, T. Rozšíření řídicí jednotky robotického systému LEGO Mindstorms NXT o Wi-Fi komunikační rozhraní. Bakalářská práce. Brno, 2010 Tato bakalářská práce se zabývá řídící jednotkou robotického systému LEGO Mindstorms NXT, zejména možnostmi její komunikace s okolím. Budou zde analyzovány všechny komunikační technologie a standardy, jimiž jednotka disponuje. Na základě této analýzy bude navržen postup pro rozšíření této jednotky o bezdrátovou technologii Wi-Fi. Navržené řešení bude prakticky realizováno. Klíčová slova NXT, Mindstorms, robot, Wi-Fi, Java, LEGO, LeJOS
5
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 6 6
2 Definice termínu „robotÿ
7
3 Robotický systém LEGO Mindstorms NXT 3.1 Řídicí jednotka LEGO Mindstorms NXT 9841 . . . . . 3.2 Tlakový senzor LEGO Mindstorms NXT 9843 . . . . . 3.3 Světelný senzor LEGO Mindstorms NXT 9844 . . . . . 3.4 Zvukový senzor LEGO Mindstorms NXT 9845 . . . . . 3.5 Ultrazvukový senzor LEGO Mindstorms NXT 9846 . . 3.6 Interaktivní servomotor LEGO Mindstorms NXT 9842 3.7 Propojovací kabely LEGO Mindstorms NXT 8529 . . . 3.8 Nabíjecí baterie LEGO Mindstorms NXT 9798 . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
8 9 10 10 11 12 13 14 14
4 Analýza konektivity řídicí jednotky 4.1 Rozhraní USB . . . . . . . . . . . . 4.2 Bezdrátová technologie Bluetooth . 4.3 Vstupní a výstupní porty NXT . . Rozhraní I2 C . . . . . . . . . . . . Rozhraní RS-485 . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
16 16 17 19 21 23
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
5 Návrh rozšíření řídicí jednotky o bezdrátovou technologii Wi-Fi 6 Praktická realizace návrhu rozšíření 6.1 Použitý model robota . . . . . . . . 6.2 Programovací nástroje . . . . . . . Firmware LeJOS . . . . . . . . . . Programovací jazyk Java . . . . . . 6.3 Řídicí aplikace v PC . . . . . . . . 6.4 Aplikace v řídicí jednotce . . . . . . 6.5 Převodník Wi-Fi↔Bluetooth . . . . Výhody a nevýhody . . . . . . . . 6.6 Převodník Wi-Fi↔RS-485 . . . . . Výhody a nevýhody . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
29
. . . . . . . . . .
32 32 33 33 34 34 35 35 36 36 40
7 Diskuze a závěr
41
8 Literatura
42
1
ÚVOD A CÍL PRÁCE
1 1.1
6
Úvod a cíl práce Úvod
Slovo robot je českého původu a vymyslel je malíř Josef Čapek pro umělé lidské bytosti v dramatické hře svého bratra Karla Čapka „R.U.Rÿ (Rossums Universal Robots). Toto slovo se ve světě velice rychle rozšířilo k označení jakýchkoli automatických zařízení (kuchyňský robot apod.). (Oplatek, 2000) Významným trendem dnešní doby je postupné nahrazování člověka ve výrobním procesu za automatické systémy. Je to proto, že dnešní rychle se rozvíjející trh vyžaduje ohromné množství produktů, přičemž musí být zachována vysoká úroveň kvality a zároveň výroba musí být provedena v co nejkratším čase. Toto ruční práce nikdy nemůže splnit. Roboti se také nasazují do míst člověku nebezpečných nebo zcela nepřístupných. Příkladem může být prostředí zamořené jaderným spadem po nukleární explozi. Dále hluboké vrty, či vzdálený vesmír. Spirit a Opportunity na Marsu toho budiž příkladem. V dnešní době se s roboty potkáváme skoro na každém kroku, aniž si to uvědomujeme. I takový automat, do něhož vhodíme minci a on nám po vložení požadavku vydá kávu, či bagetu, je taky robot. Roboti jsou dnes bráni jako úplně normální články našeho života.
1.2
Cíl práce
Cílem této bakalářské práce je návrh a praktická realizace rozšíření řídicí jednotky robotického systému LEGO Mindstorms NXT o komunikační rozhraní bezdrátové technologie Wi-Fi. Vlastní realizace návrhu bude dosaženo prostřednictvím převodníku, který by nám umožnil přemostit bezdrátovou technologii Wi-Fi a některé z dostupných rozhraní řídicí jednotky robotického systému LEGO Mindstorms NXT. Nejdříve tedy bude provedena analýza konektivity této jednotky a na jejím základě budou vybrána vhodná komunikační rozhraní pro praktickou realizaci teoretického návrhu.
2
2
DEFINICE TERMÍNU „ROBOTÿ
7
Definice termínu „robotÿ
Nejdříve by bylo dobré definovat pojem robot v této závěrečné práci. Budeme se zajímat pouze o autonomní mobilní roboty. Autonomní mobilní robot je inteligentní stroj schopen vykonávat úkoly samostatně, bez lidské pomoci. Příkladem takového robota může být autonomní helikoptéra, ale i robot velikosti mince. Nejdůležitější vlastností autonomního robota je jeho schopnost reagovat na změny prostředí. Za tu většinou vděčí svému mozku – počítači, který je zodpovědný více méně za vše, počínaje zpracováváním vstupních údajů, rozhodováním, i konečným provedením vybraných akcí. Vstupní údaje počítači poskytují senzory. Senzor je zařízení, které je schopné měřit nějakou vlastnost prostředí. Příkladem takového senzoru může být třeba i obyčejný spínač. Tento spínač může robot využít jako nárazník. Měřená vlastnost prostředí je tedy fakt, že se v cestě nachází překážka. Naopak působit na své prostředí může robot pomocí efektorů. Typickým příkladem efektoru je elektromotor. Po připojení na kolo umožní robotovi pohyb. V závislosti na velikosti robota se můžeme setkat i s dalšími typy efektorů, ať už to jsou spalovací motory či hydraulika. Z nutných součástí zbývá zmínit ještě zdroj energie, kterým je nejčastěji akumulátor, který poskytuje energii senzorům, počítači i většině efektorů. Větší roboti vybaveni spalovacími motory mívají alternátory, které akumulátor průběžně dobíjí, a doba, po kterou je robot schopen operovat autonomně, je tím značně prodloužena. Někteří roboti používají i solární panely (např. roboti vysláni na Mars). (Dlouhý, 2005) Pochopení výše uvedeného modelu robota je klíčové pro další postup této závěrečné práce, protože přesně na tomto typu robota bude řešení prakticky realizováno.
3
3
ROBOTICKÝ SYSTÉM LEGO MINDSTORMS NXT
8
Robotický systém LEGO Mindstorms NXT
Společnost LEGO uvedla v srpnu 2006 na trh vylepšenou verzi svého robotického systému RCX a nazvala ho Mindstorms NXT. Základem této vylepšené stavebnice je řídicí jednotka postavená na 32bitové ARM architektuře, která slouží jako výše zmíněný „mozekÿ robota. Další z klíčových komponent jsou různé senzory dodávající do řídicí jednotky vstupní data a servomotory, které zastávají funkci výše zmíněných efektorů. Řídicí jednotku, senzory, servomotory a jejich vzájemné propojení si podrobně popíšeme níže. Stavebnice je primárně určena dětem od 12 let. V základu se jedná o robotický systém, který lze snadno programovat pomocí přiloženého software podobající se programovacímu nástroji LabVIEW od společnosti National Instruments. Důvod je prostý, tato společnost se přímo podílela na vývoji programovacího nástroje pro LEGO Mindstorms NXT, který z LabVIEW přímo vychází. Jelikož se opravdu jedná o hračku pro děti, je standardní programovací nástroj hodně omezen. Na druhou stranu přesně odpovídá potřebám cílové skupiny, pro kterou je určen, tedy dětem. Díky tomu, že si výrobce nevytvořil nějaké svoje nestandardní řešení řídicí jednotky, ale jedná se opravdu o plnohodnotný mikropočítač s ARM mikroprocesorem, je možné ji programovat běžnými programovacími nástroji, jako jsou např. jazyky C/C++ nebo Java. Výrobce zveřejnil dokumentaci zařízení, tudíž bylo možné napsat vlastní mikroprogramové vybavení řídicí jednotky a po úpravě firmwaru je možné programovat jednotku za pomoci standardního programovacího jazyka. Stavebnice tímto dostává úplně jiný rozměr.
Obr. 1: Schéma zapojení robotického systému LEGO Mindstorms NXT.
Nyní je na místě představit všechny klíčové komponenty robotického systému LEGO Mindstorms NXT.
3.1
3.1
Řídicí jednotka LEGO Mindstorms NXT 9841
9
Řídicí jednotka LEGO Mindstorms NXT 9841
Logicky si jako první představíme centrální mozek tohoto systému. A začneme s jeho technickými parametry převzatými z oficiální dokumentace: • Main processor: – Atmel 32-bit ARM processor AT91SAM7S256 – 256 kB FLASH – 64 kB RAM – 48 MHz • Co-processor: – Atmel 8-bit AVR processor ATmega48 – 4 kB FLASH – 512 B RAM – 8 MHz • Bluetooth wireless communication: – CSR BlueCoreTM 4 v2.0 +EDR System – Supporting the Serial Port Profile (SPP) – Internal 47 KB RAM – External 8 Mb FLASH – 26 MHz • USB 2.0 communication: – Full speed port (12 Mb/s) • 4 input ports: – 6-wire interface supporting both digital and analog interface – 1 high speed port, IEC 61158 Type 4/EN 50170 compliant • 3 output ports: – 6-wire interface supporting input from encoders • Display: – 100 x 64 pixel LCD black white graphical display – View area: 26 x 40.6 mm • Loudspeaker: – Sound output channel with 8-bit resolution – Supporting a sample rate of 2-16 KHz • 4 button user-interface: – Rubber buttons • Power source: – 6 AA batteries (alkaline batteries are recommended) – Rechargeable Lithium-Polymer battery 1400 mAh is available • Connector: – 6-wire industry-standard connector, RJ12 Right side adjustment (LEGO, 2006)
3.2
Tlakový senzor LEGO Mindstorms NXT 9843
10
Z výše uvedených parametrů můžeme vyčíst, že jednotka disponuje čtyřmi vstupními a třemi výstupními porty. Vzpomeňme si na počáteční kapitolu, kde byl definován princip robotů. Pro osvěžení paměti si ten princip zopakujme. Robot musí mít nějaký centrální počítač, který získává vstupní data ze senzorů připojených právě ke vstupním portům a po vyhodnocení těchto dat řídí efektory (v našem případě servomotory) připojené na výstupních portech. Za efektory lze v našem případě považovat i displej a reproduktor, což jsou výstupní zařízení, kterými řídicí jednotka také dokáže reagovat na podněty ze senzorů (např. zobrazit hodnotu z určitého senzoru na displej, či přehrát zvuk po nárazu do překážky). Veškerá konektivita řídicí jednotky bude rozebrána ve zvláštní kapitole, protože přímo souvisí s cílem této závěrečné práce. Z uvedených parametrů je zřejmé, čím je řídicí jednotka vybavena a čím naopak nikoli. Jen je ještě dobré zmínit, že jednotka má čtyři tlačítka, která mají pevně stanovenou funkci a nelze je nijak měnit.
Obr. 2: Řídicí jednotka LEGO Mindstorms NXT 9841.
3.2
Tlakový senzor LEGO Mindstorms NXT 9843
Další komponentu, kterou si představíme je senzor, a sice ten nejjednodušší – tlakový. Tento senzor je opravdu velice jednoduchý a možná právě díky tomu velmi spolehlivý. Sestává pouze z tlačítka a RJ12 konektoru pro připojení k řídicí jednotce pomocí propojovacího kabelu (viz dále). Při stlačení tlačítka se uzavře obvod a senzor vrací do řídicí jednotky hodnotu 1, jinak vrací 0. Řídicí jednotka dokáže také vyhodnotit stlačení a okamžité uvolnění tlačítka (klik). Typické využití tohoto senzoru spočívá v reakci robota na náraz do překážky.
3.3
Světelný senzor LEGO Mindstorms NXT 9844
Tento senzor představuje zrak robota, ovšem jen velmi omezeně. Spolehlivě dokáže rozeznat světlý a tmavý povrch tělesa.
3.4
Zvukový senzor LEGO Mindstorms NXT 9845
11
Obr. 3: Tlakový senzor LEGO Mindstorms NXT 9843.
Stejně jako tlakový senzor a všechny ostatní senzory komunikuje s řídicí jednotkou pomocí propojovacího kabelu s konektory NXT RJ12. Jeho návratovou hodnotou je celé číslo v intervalu od 0 do 100, přičemž tato hodnota představuje intenzitu odraženého světla. Senzor je velice citlivý na okolní světlo, tudíž se doporučuje jej před každým použitím kalibrovat. Senzor v žádném případě nedokáže rozeznat barvy. Je vybaven červenou LED, která při aktivaci emituje červené světlo, což zvyšuje odrazivost tmavých objektů. Díky tomuto senzoru může robot například sledovat tmavou čáru na světlém pozadí. Funguje to samozřejmě i obráceně.
Obr. 4: Světelný senzor LEGO Mindstorms NXT 9844.
3.4
Zvukový senzor LEGO Mindstorms NXT 9845
Zrak robota jsme si tedy uvedli. Teď je na řadě robotův sluch. Ten představuje jeho zvukový senzor měřící akustický tlak, který ve své elektronice zpracovává a posílá do řídicí jednotky jeho intenzitu v procentuálním vyjádření. Vrací tedy celé číslo od 0 do 100, přičemž 100 % odpovídá hluku asi 90 dB. Senzor nejpřesněji vyhodnocuje zvuky vzdálené asi 1 m. Senzor podporuje dva provozní režimy – db a dbA. V režimu db zachytává zvuky i na frekvencích, které člověk neslyší. V režimu dbA pak jen frekvence zachytitelné lidským sluchem. Tak jako světelný senzor nedokáže rozeznat barvy, tak ani zvukový senzor nerozezná hlasy. Senzor opravdu pouze vrací intenzitu zvuků a není tedy robota možné naučit povelům. Jedno z možných využití tohoto senzoru je, že robot například reaguje na tlesknutí.
3.5
Ultrazvukový senzor LEGO Mindstorms NXT 9846
12
Obr. 5: Zvukový senzor LEGO Mindstorms NXT 9845.
3.5
Ultrazvukový senzor LEGO Mindstorms NXT 9846
A na řadě je poslední senzor, který je dodáván ke standardní stavebnici, a sice ultrazvukový. I tento senzor lze považovat v jistém smyslu za robotův zrak, protože díky němu robot dokáže vyhodnotit vzdálenost od libovolného blízkého předmětu. Je ovšem na místě zmínit, že předmět by měl být z pevného hladkého materiálu, kvůli dobré odrazivosti zvuku. Senzor pracuje tak, že před sebe neustále vysílá zvuk nad frekvencí 20 kHz (ultrazvuk). Rychlost zvuku se v běžném prostředí (suchý vzduch při teplotě 20 ◦ C) pohybuje kolem 350 m/s. Ultrazvuk se odrazí od překážky zpět do senzoru a ten na základě časového zpoždění vypočítá vzdálenost předmětu před sebou. Je tedy zřejmé, že pokud je hrana předmětu k senzoru natočena pod tupým úhlem, tak se ultrazvuk odrazí do ztracena a senzor vzdálenost nevypočítá. Díky principu senzoru, který je založen na odrazu ultrazvuku od překážky, je možné tento senzor využívat za jakýchkoli světelných podmínek, je na světle zcela nezávislý. Pokud je ovšem v dosahu více zdrojů ultrazvukového vlnění, mohou se navzájem rušit. Tento model ultrazvukového senzoru dovede měřit vzdálenosti předmětů vzdálených až 250 cm s přesností ±3 cm. Jeho návratovou hodnotou je tedy celé číslo od 0 do 250, představující vzdálenost v centimetrech při úspěšném vyhodnocení vzdálenosti. Vrací ještě hodnotu 255, která reprezentuje situaci, kdy jsou předměty vzdáleny více než 250 cm od senzoru, nebo při chybě. Tento model ultrazvukového senzoru dovede měřit vzdálenosti předmětů vzdálených až 250 cm s přesností ±3 cm. Jeho návratovou hodnotou je tedy celé číslo od 0 do 250, představující vzdálenost v centimetrech při úspěšném vyhodnocení vzdálenosti. Vrací ještě hodnotu 255, která reprezentuje situaci, kdy jsou předměty vzdáleny více než 250 cm od senzoru, nebo při chybě. Navzdory složitosti principu senzoru a jeho nízké pořizovací ceně funguje velice spolehlivě. Senzor umožňuje zobrazení výsledků i v palcích. Smysluplné využití senzoru je například v případě robota fungujícího jako hlídací pes. Při narušení určité vzdálenosti může řídicí jednotka robota začít například vydávat hlasité zvuky. Představením ultrazvukového senzoru byly vyčerpány všechny prvky dodávající do řídicí jednotky robota vstupní data. Senzorů pro tento robotický systém existuje
3.6
Interaktivní servomotor LEGO Mindstorms NXT 9842
13
Obr. 6: Ultrazvukový senzor LEGO Mindstorms NXT 9846.
celá řada, dokonce i od jiných výrobců než LEGO. Tato práce se jimi však nezabývá. Ke splnění cíle a ukázky komunikace nám zcela postačí tyto čtyři základní senzory.
3.6
Interaktivní servomotor LEGO Mindstorms NXT 9842
Neustále mějme na paměti princip provozu robota. Senzory představující zdroje vstupních dat do řídicí jednotky, které řídicí jednotka vyhodnocuje a na jejich základě ovládá efektory, tedy zařízení připojené na výstupní porty. Jedním z možných efektorů je interaktivní servomotor umožňující robotovi plynulý pohyb. Dlužno poznamenat, že v rámci robotického systému LEGO Mindstorms NXT se jedná o jediný dostupný mechanický efektor. Nejdříve bude asi nejlepší podívat se na vnitřní mechanismus tohoto servomotoru.
Obr. 7: Pohled na vniřní mechanismus interaktivního servomotoru LEGO Mindstorms NXT 9842.
3.7
Propojovací kabely LEGO Mindstorms NXT 8529
14
Definice servomotoru je taková, že na rozdíl od běžných motorů u nich lze přesně nastavit polohu natočení osy. (Wikipedia, 2005) Přesně takto funguje i servomotor dodávaný k této stavebnici. Na předešlém obrázku můžeme vidět, že servomotor v sobě ukrývá rotační senzor, který umožňuje přesnější ovládání robota. Rotační senzor měří otáčení motoru ve stupních nebo celkové otáčení (s přesností ± jeden stupeň). Jedno otočení odpovídá 360 stupňům, takže pokud nastavíme motor na otočení o 180 stupňů, provede jeho hřídel půl otáčky. Řídicí jednotka tohoto robotického systému umožňuje připojení až tří těchto servomotorů. Tento počet je také ke každé stavebnici standardně dodáván. K připojení servomotorů slouží tři výstupní porty na řídicí jednotce označené písmeny A, B a C. Myšlenka výrobce je taková, že k portům B a C se připojují servomotory umožňující robotovi pohyb v prostoru. K portu A se pak připojí servomotor plnící určitou funkci, například rozevření a sevření mechanického ramene robota. Servomotory je možné synchronizovat.
Obr. 8: Interaktivní servomotor LEGO Mindstorms NXT 9842.
3.7
Propojovací kabely LEGO Mindstorms NXT 8529
Teď si krátce představíme další nedílnou součást robotického systému LEGO Mindstorms NXT. Jsou jí propojovací kabely. Tyto kabely slouží k propojení všech senzorů a servomotorů s řídicí jednotkou systému. Ke stavebnici se dodává sedm kabelů v různých délkách, čtyři jsou pro zapojení senzorů a tři pro zapojení servomotorů. Kabely se však od sebe fyzicky nijak neliší (kromě již zmíněné délky). Všechny kabely mají šest vodičů. Jsou v barvách (bráno od pinu 1 po pin 6) bílá, černá, červená, zelená, žlutá a modrá. Na obou koncích jsou kabely zakončené konektorem NXT RJ12. Od standardního konektoru RJ12 se liší pouze tím, že má zástrčku proti vysunutí konektoru umístěnu na straně. Jednotlivé funkce vodičů budou popsány později, až se budou probírat vstupní a výstupní porty řídicí jednotky.
3.8
Nabíjecí baterie LEGO Mindstorms NXT 9798
Nyní si rozebereme poslední nedílnou součást robotického systému LEGO Mindstorms NXT, samotné napájení celého systému.
3.8
Nabíjecí baterie LEGO Mindstorms NXT 9798
15
Obr. 9: Konektor NXT RJ12.
Řídicí jednotka může být napájena dvěma druhy baterií. Mohou to být buď standardní tužkové baterie, kterých je potřeba celkem šest, nebo je k dispozici originální nabíjecí baterie přímo navržená pro napájení robotického systému LEGO Mindstorms NXT. Napájení standardními tužkovými bateriemi se moc nedoporučuje, neboť i při použití alkalických tužkových baterií robot moc dlouho nevydrží být v provozu. I tato závěrečná práce se omezuje na použití výhradně originální LEGO baterie, kterou si nyní představíme. Jedná se o nabíjecí Lithium-polymerový akumulátor, který řídicí jednotce poskytuje stejnosměrné napětí 7,4 V a kapacitu 1400 mAh. Při neustálém provozu robota vydrží několik hodin, poté je potřeba jej nabít. O to se stará nabíjecí adaptér, který se zapojí přímo do akumulátoru (dobré sofistikované řešení). Akumulátor je vybaven dvěma LED, červenou a zelenou. Při nabíjení svítí obě zaráz, po nabití pouze zelená. Nabíjecí adaptér a akumulátor je potřeba ke komerčně prodávaným stavebnicím dokoupit zvlášť. V současnosti se jedná o stavebnice 8527 a 8547. K výukovým sadám je vše již dodáno v ceně.
Obr. 10: Nabíjecí baterie LEGO Mindstorms NXT 9798.
Podrobné seznámení se s celým robotickým systémem LEGO Mindstorms NXT je tedy za námi, dále se již budeme zabývat pouze jeho řídicí jednotkou a možnostmi její komunikace s okolím. K senzorům a servomotorům se vrátíme až ke konci závěrečné práce při praktické ukázce komunikace robota přes bezdrátovou síť Wi-Fi.
4
ANALÝZA KONEKTIVITY ŘÍDICÍ JEDNOTKY
4
16
Analýza konektivity řídicí jednotky
Tato kapitola pojednává o všech komunikačních rozhraních, které má řídicí jednotka robotického systému k dispozici pro komunikaci s okolím. Na základě této analýzy bude vytvořen návrh pro její rozšíření o bezdrátovou technologii Wi-Fi. Kdybychom všechna komunikační rozhraní řídicí jednotky měli určit pouhým fyzickým pohledem ze všech stran, na nic moc bychom nepřišli. Na první pohled je totiž vidět pouze USB rozhraní a sedm konektorů NXT RJ12. Nic víc. To ale není ani polovina všech jejích možností komunikace. Tato jednotka navíc umí komunikovat s okolím bezdrátově pomocí technologie Bluetooth a pokud nahlédneme do dokumentace, zjistíme, že některý z těch sedmi konektorů NXT RJ12 pro nás skrývá příjemné překvapení. Teď už ale nepředbíhejme, je na čase si všechna rozhraní postupně rozebrat.
4.1
Rozhraní USB
Dříve než si vysvětlíme využití USB rozhraní na řídicí jednotce LEGO Mindstorms NXT, tak si USB krátce představíme. USB (Universal Serial Bus) v překladu znamená univerzální sériová sběrnice. Jedná se o moderní způsob připojení periferních zařízení k PC nebo k jiným zařízením (stolní DVD rekordér, rádio v autě apod.). Dříve se periferní zařízení k PC připojovala pomocí sériových (RS-232) a paralelních (Centronics) portů. Na nejnovějších PC na tato rozhraní narazíme jen zřídka. Vše se dnes již připojuje přes USB. Od svých předchůdců se liší způsobem připojení zařízení, podporuje tzv. Plug and Play. Zařízení lze připojit za běhu, ve většině případů se obejdeme bez ovladačů a restartu PC. Sběrnice využívá čtyři vodiče, ve většině případů jsou to červený (VCC +5 V), bílý (DATA−), zelený (někdy modrý, DATA+) a černý (GND).
Obr. 11: Schéma zapojení USB konektoru typu A a B na zařízení. (Wikipedia, 2010)
Toto nám k základnímu představení USB postačí. Vlastnosti USB, jako je např. napájecí napětí 5 V, maximální odběr proudu 500 mA a spoustu dalších zde nebudeme rozebírat, je to nad rámec této bakalářské práce. Teď se podíváme, jakým způsobem využívá USB řídicí jednotka LEGO Mindstorms NXT.
4.2
Bezdrátová technologie Bluetooth
17
Tato řídicí jednotka je vybavena USB ve verzi 2.0 – datová propustnost 12 Mb/s. USB 2.0 je ovšem zpětně kompatibilní se svým předchůdcem USB 1.1 (datová propustnost pouze 1,5 Mb/s). Jak již bylo řečeno v kapitole, která nás s robotickým systémem LEGO Mindstorms NXT podrobně seznámila, řídicí jednotka robota se programuje a kompiluje pomocí grafického nástroje v PC a poté je potřeba přeložený program do ní nahrát. Přenos přeloženého programu do řídicí jednotky je jediným využitím USB portu a vůbec nezáleží, v jakém nástroji jednotku programujeme a jaký je v ní firmware. USB v řídicí jednotce totiž nelze použít jinak než ke komunikaci s PC, nelze třeba propojit dvě řídicí jednotky NXT mezi sebou nebo ji připojit k nějakému jinému zařízení. Jednotka pro USB komunikaci vyžaduje ovladač, který je napsán pouze pro PC. Pro splnění cíle této závěrečné práce je tedy USB rozhraní řídicí jednotky naprosto nepoužitelné, protože jediným řešením by bylo zbavit model robota možností pohybovat se v prostoru. Komunikace přes USB je omezena na vzdálenost 5 m. Tento princip je využíván např. chirurgickými roboty, kteří jsou kabelem připojeni k serveru a přijímají pokyny operatéra třeba z druhého konce světa. Tato práce však pracuje s modelem robota, který je mobilní, USB tedy nevyužijeme.
4.2
Bezdrátová technologie Bluetooth
Dalším komunikačním rozhraním, kterým řídicí jednotka robota disponuje, je bezdrátová technologie Bluetooth 802.15.1. Stejně jako v případě USB si napřed Bluetooth představíme, abychom věděli, jak funguje a co to vlastně je. Poté se podíváme jak s Bluetooth pracuje naše řídicí jednotka. Ačkoliv se to na první pohled nezdá, technologie Bluetooth je velice podobná technologii Wi-Fi (WLAN – Wireless Local Area Network). Bluetooth patří do tzv. malých bezdrátových osobních sítí (WPAN – Wireless Personal Area Network). Bezdrátové sítě s velmi malým dosahem (WPAN) nabízejí řadu možností využití: pro domácí multimediální komunikaci, pro vzájemné propojení různých malých koncových zařízení či pro komunikaci v automobilu (jako součást moderních telematických systémů). Proto také vzniklo již několik typů WPAN, značně od sebe odlišných, zejména rychlostí (dosah je u všech sítí v řádu několika metrů, ale díky využití topologie mesh lze dosah díky komplexnímu směrování, multi-hop, zvýšit téměř neomezeně). (Pužmanová, 2006) WPAN mají tedy typicky menší dosah než WLAN, ale mají také (alespoň v některých případech) výrazně menší nároky na napájení, což vyplývá z jejich určení. S kapacitou WPAN je to různé, opět v souvislosti s konkrétním určením sítě. Specifikace Bluetooth (první verze byla k dispozici V roce 1999) je charakteristická nízkými nároky na napájení a spoluprací s malými koncovými zařízeními. Rychlost na fyzické vrstvě dosahuje 1 Mbit/s, přičemž skutečná propustnost dat se pohybuje maximálně kolem 720 kbit/s.
4.2
Bezdrátová technologie Bluetooth
18
Specifikace Bluetooth umožňuje různorodé služby prostřednictvím zabudované podpory kvality služeb a volitelně nabízí až tři hlasové kanály o 64 kbit/s (tento volitelný typ spojení je synchronní se spojením, synchronous connection-oriented). Bluetooth pracuje podobně jako WLAN 802.11b v bezlicenčním pásmu 2,4 GHz. Na rozdíl od 802.11b ale Bluetooth využívá metody rozprostřeného spektra s přeskakováním mezi kmitočty (FHSS, Frequency Hopping Spread Spectrum), kdy rádiový signál velmi rychle (1600krát za sekundu) náhodně přeskakuje mezi 79 jednoMhz kanály. Komunikace nabízí až tři hlasové kanály. (Pužmanová, 2006) Veškerou komunikaci řídí hlavní stanice (Master) prostřednictvím protokolu výzvy, podřízená stanice (Slave) může komunikovat s ostatními výhradně prostřednictvím hlavní stanice. Hlavní stanice alokuje časové úseky podle potřeb pro každý typ komunikace (synchronní nebo asynchronní) prostřednictvím mnohonásobného přístupu s časovým dělením (TDMA). Bluetooth používá stejné kmitočty pro vysílání a příjem s využitím TDD, které také umožňuje, aby jedna stanice sítě byla současně podřízenou i hlavní stanicí. Bluetooth podporuje jak dvoubodovou, tak mnohobodovou komunikaci. Pokud je více stanic propojeno do ad hoc sítě, tzv. pikosítě (piconet), jedna rádiová stanice působí jako hlavní (Master), a ta může simultánně obsloužit až 7 podřízených (Slave) zařízení (další zařízení mohou být v pikosíti v zaparkovaném režimu). Všechna zařízení v pikosíti se synchronizují s taktem hlavní stanice a se způsobem přeskakování mezi kmitočty. Specifikace dovoluje simultánně použít až 10 pikosítí na ploše o průměru 10 metrů. Pikosítě lze sdružovat do tzv. scatternets („rozprostřenýchÿ sítí), maximálně může takto spolupracovat až 80 zařízení. Bluetooth zařízení jsou dvojí kategorie: • třída 1 – nabízejí dosah 100 m, takže mají větší spotřebu a jsou většinou spojena se zařízeními s napájením ze sítě (PC, tiskárna); • třída 2 – s dosahem do 10 m, jedná se o většinu mobilních koncových zařízení (PDA a mobilní telefony) pro tvorbu WPAN. (Pužmanová, 2006) Teď tedy víme co to technologie Bluetooth přesně je a na jakém principu funguje. Naše řídicí jednotka tuto technologii primárně využívá ke stejnému účelu jako rozhraní USB, které jsme si představili v předchozí části, tj. k nahrávání zkompilovaných programů do paměti jednotky. Ovšem na rozdíl od USB, pro komunikaci pomocí Bluetooth nepotřebujeme vůbec žádné ovladače. Přes Bluetooth tak mohou komunikovat řídicí jednotky i mezi sebou, což umožňuje konstruování i složitějších modelů robotů s mnoha senzory a efektory. A ani to ještě není všechno, díky Bluetooth může jednotka komunikovat i s jinými zařízeními, např. s mobilními zařízeními, jako jsou PDA a mobilní telefony, a to díky implementaci Bluetooth profilu SPP (Serial Port Profile). Z dokumentace víme, že toto je také jediný Bluetooth profil, který má řídicí jednotka k dispozici. Avšak vzhledem k jejímu charakteru je to jediný nutný profil, který pro plnohodnotnou komunikaci jednotka potřebuje. Z předchozích poznatků je zřejmé, že tento komunikační kanál je vhodný a použitelný pro splnění cíle této závěrečné práce.
4.3
Vstupní a výstupní porty NXT
4.3
19
Vstupní a výstupní porty NXT
Řídicí jednotka přijímá vstupní data ze senzorů a na jejich základě řídí efektory. Z toho plyne, že potřebuje nějaké vstupní a výstupní rozhraní, přičemž senzory jsou připojeny na vstup a efektory na výstup. Toto vstupní a výstupní rozhraní jednotky představuje sedm konektorů typu NXT RJ12. Z dokumentace víme, že řídicí jednotka z těchto sedmi konektorů využívá čtyři jako vstupní porty pro příjem dat ze senzorů a tři jako výstupní porty pro ovládání servomotorů. Do konektorů typu RJ12 může být zapojeno až šest vodičů (čehož je také využito). Řídicí jednotka má konektory vstupních portů označeny čísly 1, 2, 3 a 4. Výstupní porty jsou pak označeny písmeny A, B a C. Zapojení konektorů pro vstup a pro výstup se samozřejmě liší. Nyní se podíváme na schéma zapojení konektorů pro servomotory, tedy výstup.
Obr. 12: Schéma zapojení NXT RJ12 konektorů výstupních portů.
• • • • 1
Význam jednotlivých pinů je následující: Pin 1 – MA0 – výstupní PWM1 signál pro servomotory; Pin 2 – MA1 – výstupní PWM signál pro servomotory; Pin 3 – GND – uzemnění; Pin 4 – POWERMA – napájení, výstupní napětí 4,3 V;
PWM je diskrétní modulace pro přenos analogového signálu pomocí dvouhodnotového signálu. Jako dvouhodnotová veličina může být použito například napětí, proud, nebo světelný tok. Signál je přenášen pomocí střídy. Pro demodulaci takového signálu pak stačí dolnofrekvenční propust. Vzhledem ke svým vlastnostem je PWM často využívána ve výkonové elektronice pro řízení velikosti napětí nebo proudu. Kombinace PWM modulátoru a dolnofrekvenční propusti bývá rovněž využívána jako levná náhrada D/A převodníku. Přenosový signál, který nese informaci o přenášené hodnotě, může nabývat hodnot zapnuto/vypnuto, tj. log 1/log 0. Hodnota přenášeného signálu je v přenosu „zakódovánaÿ jako poměr mezi stavy zapnuto/vypnuto. Tomuto poměru se říká střída. Cyklu, kdy dojde k přenosu jedné střídy, se říká perioda. Omezením pro PWM je to, že přenos informace je vždy omezen na relativní vyjádření, a to 0 – 100 %, to znamená, že musí být znám poměr mezi skutečnou hodnotou a procentuelním vyjádřením. Časové hodnoty střídy se pohybují v sekundách, v milisekundách pro přesnější řízení. Perioda je vždy součtem doby zapnuto a vypnuto. (Wikipedia, 2007)
4.3
Vstupní a výstupní porty NXT
20
• Pin 5 – TACHOA0 – vstupní rozhraní zahrnující Schmittův klopný obvod2 ; • Pin 6 – TACHOA1 – vstupní rozhraní zahrnující Schmittův klopný obvod. MA0 a MA1 jsou výstupní signály pro ovládání efektorů. Tyto signály jsou řízeny vnitřním ovladačem motoru, který dodává stejnosměrný proud 700 mA do každého výstupního portu a špičkový proud cca 1 A. Výstupní signál je signál PWM, který lze buď úplně přerušit, nebo plynule regulovat. Ovladač je vybaven tepelnou ochranou, což znamená, že pokud je z řídicí jednotky dlouhodobě čerpáno příliš mnoho energie, ovladač motoru automaticky upraví výstupní proud. POWERMA – výstupní napětí 4,3 V, které je vnitřně připojeno na napájecí piny všech vstupních a výstupních portů. Celkový maximální výstupní proud, který může řídicí jednotka vstupním a výstupním portům poskytnout, je přibližně 180 mA. To znamená, že na každý port připadá zhruba 20 mA. Pokud je čerpáno více, řídicí jednotka automaticky a bez varování sníží celkový výstupní proud. Při přímém propojení POWERMA a GND (zkrat), dojde k restartu řídicí jednotky. TACHO0 a TACHO1 jsou vstupní porty Shmittova klopného obvodu, který je zapojen mezi výstupní porty řídicí jednotky a vstupní piny jejího procesoru ARM7. Tyto dva signály umožňují určit fázový posun signálu vstupujícího do Shmittova klopného obvodu a signálu, jenž je jeho výstupem. Firmware řídicí jednotky tyto dva signály využívá k určení počtu otáček a detekci směru otáčení hřídele motorů. Se zapojením výstupních portů jsme tedy obeznámeni, podívejme se teď na zapojení konektorů určených standardně pro připojení senzorů, tedy vstupních portů.
Obr. 13: Schéma zapojení NXT RJ12 konektorů vstupních portů.
Opět význam jednotlivých pinů: 2
Schmittův klopný obvod slouží k úpravě tvaru impulzů. Jeho základní vlastností je hystereze. To znamená, že jeho výstup je závislý nejen na hodnotě vstupu, ale i na jeho původním stavu. (Wikipedia, 2005)
4.3
Vstupní a výstupní porty NXT
21
• Pin 1 – ANA – vstup pro analogová zařízení, může sloužit i jako výstupní signál proudu; • Pin 2 – GND – uzemnění; • Pin 3 – GND – uzemnění; • Pin 4 – POWERMA – napájení, výstupní napětí 4,3 V; • Pin 5 – DIGIAI0 – digitální vstupně/výstupní pin napojený na procesor ARM7 v řídicí jednotce. I2 C – SCL, RS-485 – vodič A; • Pin 6 – DIGIAI1 – digitální vstupně/výstupní pin napojený na procesor ARM7 v řídicí jednotce. I2 C – SDA, RS-485 – vodič B; ANA je pin pro analogový vstup připojený k 10bitovému A/D převodníku v rámci ARM procesoru. Je také napojen na proudový generátor, který je určen k vytváření elektrické energie pro aktivní senzory robotického systému LEGO Mindstorms NXT (jedná se například o rotační senzor v servomotoru). A/D vstupní signály jsou vzorkovány stejnou vzorkovací frekvencí pro všechny analogové senzory, která činí 333 Hz. DIGIAI1 a DIGIAI0 jsou určeny pro digitální komunikaci s řídicí jednotkou a stejně jako Bluetooth nám poskytují možné řešení pro splnění cíle této závěrečné práce. V úvodu této kapitoly bylo zmíněno, že některý z NXT RJ12 konektorů v sobě ukrývá příjemné překvapení, které nyní odhalíme. Všechny vstupní porty disponují standardní sériovou sběrnicí I2 C, což je samo o sobě skvělé, protože nám to umožňuje k řídicí jednotce připojit libovolné zařízení pracující s touto sběrnicí. Ovšem vstupní port číslo 4 v sobě zahrnuje pro nás naprosto ohromující komunikační kanál v podobě standardní průmyslové sériové vysokorychlostní sběrnice RS-485. Nyní se na obě rozhraní podíváme podrobněji. Rozhraní I2 C I2 C (anglicky Inter-Integrated Circuit, čteme I-squared-C, nesprávně I-two-C) je multi-masterová počítačová sériová sběrnice vyvinutá firmou Philips, která je používána k připojování nízkorychlostních periferií k základní desce, vestavěnému systému nebo mobilnímu telefonu. Sběrnice rozděluje připojená zařízení na řídicí (Master – zahajuje a ukončuje komunikaci; generuje hodinový signál SCL) a řízené (Slave – zařízení adresované řídicím zařízením). (Wikipedia, 2007) K 1. říjnu 2006 nejsou vyžadovány žádné licenční poplatky pro implementaci, avšak zpoplatněné je přidělování adres pro Slave zařízení. Umožňuje propojení až 128 různých zařízení pomocí dvou vodičů. Jeden tvoří hodinový signál SCL (Synchronous Clock) a druhý datový kanál SDA (Synchronous Data). Z elektrického hlediska jsou oba kanály zapojeny jako otevřený kolektor. Maximální délka vodičů je dána jejich nejvyšší přípustnou kapacitou 400 pF. Každý vodič musí být připojen jedním pull-up rezistorem ke kladnému napětí, což zajistí
4.3
Vstupní a výstupní porty NXT
22
vysokou úroveň v klidovém stavu. Při probíhajícím přenosu jsou na SDA vysílány jednotlivé datové bity, přičemž platí pravidlo, že logická úroveň na SDA se smí měnit pouze, je-li SCL v úrovni L. Toto pravidlo je porušeno ve dvou speciálních případech. A to při vysílání podmínek START a STOP, které se používají k zahájení komunikace a k ukončení přenosu. (Wikipedia, 2007) Maximální frekvence signálu SCL je podle verze I2 C 100 kHz nebo 400 kHz. Pro obě frekvence je dána minimální povolená doba setrvání SCL v úrovni L a H. Při komunikaci i při přenosu dat si jednotlivé stanice synchronizují generátory hodin tak, že trvání úrovně H na SCL je odměřováno vnitřním časovačem každé stanice až od okamžiku, kdy SCL skutečně úrovně H dosáhne (protože je SCL typu otevřený kolektor, může být v úrovni L držen i v situaci kdy se daná stanice snaží nastavit úroveň H). Podobně je doba trvání úrovně L na SCL odměřována od sestupné hrany. Tento mechanismus umožňuje některé ze stanic zpomalit přenos. Pomalá stanice může podržet po určitou dobu signál SCL v úrovni L a tím zabránit vysílající stanici ve vyslání dalšího bitu. Sběrnice I2 C neumožňuje duplexní přenos, v jednom okamžiku vysílá jen jedno zařízení. Všechna zařízení připojená na sběrnici musí mít individuální adresu o délce 7 nebo 10 bitů a implementovaný mechanismus komunikace pomocí I2 C sběrnice. Každému přenosu předchází vyslání podmínky START. Potom je vysílána 7 bitová adresa příjemce a jeden bit R/W, který indikuje požadovanou operaci (čtení/zápis). Další bit ACK je vysílán s úrovní H a je určen k potvrzení přijímací stanice o připravenosti příjmu. Dále jsou přenášena data ve směru určeném předchozím bitem R/W. Každý byte je následován jedním bitem ACK. Po ukončení přenosu je vyslána podmínka STOP. Pro řízení komunikace se na I2 C používá metoda s detekcí kolize. Každá ze stanic může zahájit vysílání, je-li předtím sběrnice v klidovém stavu. Během vysílání musí neustále porovnávat vysílané bity se skutečným stavem SDA. Je-li zjištěn rozdíl mezi očekávaným a skutečným stavem linky SDA, je to indikace kolize mezi několika stanicemi. Vzhledem k charakteru sběrnice (otevřené kolektory) může k této situaci dojít, pokud určitá stanice vysílá úroveň H, zatímco jiná stanice vysílá úroveň L. Stanice, která na lince zjistí úroveň L zatímco sama vysílá H, musí vysílání okamžitě ukončit. K řízení komunikace většinou dochází během vyslání několika prvních bitů, kdy je vysílána adresa přijímací stanice. Pokud by se např. dvě stanice současně pokusily o zápis do stejného obvodu, nastane kolize až při přenosu vlastních zapisovaných dat. V krajním případě, kdy několik stanic současně zapisuje stejná data na stejnou adresu, nemusí být kolize vůbec detekována. (Wikipedia, 2007) Každá stanice připojená na I2 C má přidělenou 7 bitovou adresu. Po zachycení podmínky START porovnávají všechny obvody svou adresu s adresou, která je vysílána na sběrnici. Zjistí-li některý z obvodů shodu, je vysílání určeno právě jemu a musí přijetí adresy potvrdit bitem ACK. Potom přijímá nebo vysílá další data. Několik adres je na I2 C vyhrazeno pro speciální účely. Například adresa 0000000 je určena pro vysílání broadcast, adresy 0000011, 00001XX a 11111XX jsou rezervovány pro další účely.
4.3
Vstupní a výstupní porty NXT
23
Každý vysílaný byte a vyslaná adresa je následována vysláním jednoho bitu ACK. Vysílající stanice jej vysílá v úrovni H. Přijímající stanice potvrzuje přijetí tím, že v době vysílání ACK připojí SDA na úroveň L. Pokud vysílající stanice nedostane potvrzení příjmu, ukončí vysílání podmínkou STOP. (Wikipedia, 2007)
Obr. 14: Schéma s jedním řídícím a třemi řízenými zařízeními s pull-up rezistory. (Wikipedia, 2010)
Tato sběrnice představuje pro řídicí jednotku robotického systému LEGO Mindstorms NXT digitální vstupně/výstupní komunikační rozhraní pro externí zařízení. Připojená externí zařízení mohou fungovat samostatně a mohou si s řídicí jednotkou vyměňovat informace (například hodnoty senzorů). Řídicí jednotka má čtyři I2 C komunikační kanály, pro každý vstupní port jeden. V rámci robotického systému LEGO Mindstorms NXT je digitální komunikace implementována jako „Master onlyÿ, což znamená, že řídicí jednotka si sama řídí datové toky na všech komunikačních kanálech a nikdy nemůže vystupovat jako „Slaveÿ. Důležitým aspektem, který umožňuje I2 C komunikaci mezi dvěma zařízeními je hardware set-up v každém zařízení. Všechny senzory, které komunikují s řídicí jednotkou přes sběrnici I2 C, obsahují externí Micro-Controller, který obstarává vzorkování fyzického prostředí. Ze standardně dodávaných senzorů robotického systému LEGO Mindstorms NXT se jedná například o ultrazvukový senzor. Pro splnění cíle této závěrečné práce se komunikační rozhraní I2 C nehodí, protože není velký výběr dostupných zařízení, která by disponovala rozhraním I2 C a zároveň bezdrátovou technologií Wi-Fi. Rozhraní RS-485 RS-485 je standardní sériová sběrnice, která se používá v průmyslovém prostředí a v systémech pro řízení a přenos dat (maloobjemových, žádné stovky Mb/s). Pro každý signál používá jedno Twisted Pair (TP) vedení, tj. 2 vodiče smotané kolem sebe. Z elektrického hlediska mluvíme o tzv. Balanced Data Transmission, nebo také Differential Voltage Transmission. Laicky řečeno, označíme-li si jeden vodič z TP jako A a druhý jako B, pak je-li signál neaktivní, je napětí na A záporné a na B kladné. V opačném případě, signál je aktivní, je-li A kladné a B záporné. Jedná se o napěťový rozdíl (diferenci) mezi vodiči A a B. Pro RS-485 může délka
4.3
Vstupní a výstupní porty NXT
24
Obr. 15: Schéma zapojení sběrnice I2 C na vstupních portech řídicí jednotky.
vedení dosahovat až 4000 stop (cca 1200 metrů) a běžně vyráběné obvody dosahují přenosových rychlostí 2,5 MB/s. (Staněk, 1998) Tato sběrnice se používá pro multi-point komunikaci, více zařízení může být připojeno na jedno signálové vedení. Stejně jako například sítě Ethernet vedené po koaxiálním kabelu. Většina RS-485 systémů používá Master/Slave architekturu, kde má každá Slave jednotka svoji unikátní adresu a odpovídá pouze na jí určené pakety. Tyto pakety generuje Master (například PC) a periodicky obesílá všechny připojené Slave jednotky. RS-485 existuje ve dvou variantách: • Single Twisted Pair – V této verzi jsou všechna zařízení připojená na jeden Twisted Pair. Všechny tudíž musí mít třístavové budiče (včetně Master). Komunikace probíhá po tomtéž vedení v obou směrech. Je tedy důležité, aby nezačalo vysílat více zařízení najednou, což je softwarová záležitost. • Double Twisted Pairs – V tomto zapojení Master nemusí mít třístavový výstup, protože Slave zařízení vysílají do druhého TP určeného pro komunikaci od Slave zařízení k Master. Pro základní zapojení RS-485 systému potřebujeme I/O budič s diferenciálními výstupy a I/O přijímač s diferenciálními vstupy. Do přenosového vedení se indukuje šum a rušení. Protože se však signál přenáší TP vodičů jdoucích stejnou trasou, je napěťová diference (rozdíl napětí mezi A a B) tohoto rušení téměř nulová. Vzhledem k diferenciální funkci vstupního zesilovače RS-485 přijímače je toto rušení eliminováno. Platí to také pro přeslechy ze sousedních vodičů, a pro jakékoli jiné zdroje šumů, dokud nejsou překročeny napěťové hranice vstupních obvodů přijímacího IO. Diferenciální vstup také eliminuje rozdíl zemnících potenciálů vysílače a přijímače. Tato vlastnost je velmi důležitá pro komunikaci mezi různorodými systémy, kde by jinak vznikaly veliké problémy například pro různé zdroje napájecího napětí atd. Použití Twisted Pair kabelů a korektní terminace (pro eliminaci odrazů) dovoluje rychlost přenosu dat větší než 10 Mbit/s a délky kabelů až 1 km.
4.3
Vstupní a výstupní porty NXT
25
Všechny tyto výhody přinášejí i některé nevýhody. Z důvodu vyšší složitosti obvodů pro RS-485 je poněkud vyšší i jejich cena. Vyšší rychlosti přenosu dat vyžaduje korektně zapojenou a přizpůsobenou terminaci vedení, což způsobuje problém u zapojení, kde se mění počet připojených zařízení. A konečně nutnost použít Twisted Pair vodiče. V Balanced Differential systému generuje vysílač napětí 2-7 V (přibližně) mezi A a B výstupy. Vysílač i přijímač jsou sice spojeny vodičem GND (zemnění), ale nepoužívá se pro určení logického stavu na vodičích A a B. Z toho tedy vyplývá již uvedená tolerance rozdílného zemnícího potenciálu u vysílače a přijímače. Vysílače RS-485 mají Enable vstup, umožňující nastavit výstupy do stavu vysoké impedance a tím sdílet na jednom TP několik zařízení. Napěťová úroveň většiny běžně prodávaných vysílačů je 0 a 5 V. V klidovém stavu je na B vodiči +5 V a na A vodiči 0 V. (Staněk, 1998) RS-485 přijímače reagují na rozdíl napětí mezi A a B. Je-li rozdíl napětí mezi vodiči A a B větší než 200 mV, pak je na výstupu přijímače definovaná logická úroveň. Pro rozdíl menší než 200 mV je logická úroveň opačná. EIA-RS 485 (ISO 8482) definuje vstupní impedanci RS-485 obvodů Ri = 12 kOhm. Proto je možné zapojit na jedno vedení až 32 vysílačů, přijímačů, nebo jejich kombinace. Protože se jedná o obousměrný přenos dat, vedení musí být zakončeno terminačním odporem na obou koncích. EIA-RS 485 dále definuje maximální napěťový rozsah na vstupu přijímače (rozdíl zemnících potenciálů a alternující signálové napětí) od −7 V do +12 V. Obvody RS-485 jsou vybaveny ochranou proti zkratu. Standard definuje zkrat jako proud 150 mA proti zemi, ale pro A nebo B signály reprezentuje zkratový proud 250 mA. Správná funkce vysílače a přijímače vyžaduje přítomnost zpětné signálové cesty mezi uzemněním jednotlivých zařízení. Tu můžeme realizovat například třetím vodičem, nebo uzemněním každého zařízení na zem (nulový kolík v zásuvce 230 V). Je-li použito třetího vodiče, měli by být do série zapojeny odpory cca 100 Ohm pro eliminování nežádoucích proudů vznikajících z rozdílu zemnících potenciálů. Terminace RS-485 vedení je velice podstatná hlavně při vyšších rychlostech a delších kabelech. Hlavní důvody pro korektní terminaci jsou především odrazy na konci vedení, definování úrovně na vedení a podmínka minimálního zatížení vysílače. U této sběrnice je terminace poněkud složitější. Jelikož každé zařízení komunikuje (Single TP varianta) obousměrně, nejsme schopni určit, kde je vysílač a kde přijímač. To se mění podle toho, které zařízení právě vysílá. Proto musíme na oba konce RS-485 vedení připojit 100 Ohmový terminátor. Tím ale problémy okolo terminace RS-485 tímto ještě nekončí. Jelikož všechny zařízení mají třístavové výstupy, nastávají (a to velice často – při každé změně komunikujícího zařízení, nebo směru toku dat) situace, kdy jsou všechny vysílače ve stavu vysoké impedance a na vedení, díky terminačním odporům, není definovaný žádný stav (rozdíl napětí mezi A a B je menší než 200 mV). V tomto stavu je ale žádoucí aby napětí definovalo klidový stav, rozdíl napětí mezi vodiči menší než −200 mV. (Staněk, 1998)
4.3
Vstupní a výstupní porty NXT
26
Hodnoty jsou spočítány tak, aby zapojení vyhovělo maximálnímu počtu zařízení o vstupní impedanci 12 kOhm, tj. 32, na jednom vedení. Důležité je, aby odpory Rt byly pouze dva, a to na konci kabelu (mohou být součástí posledního zařízení připojeného na vedení). Z podstaty RS-485 vyplývají jistá specifika, která musí zajišťovat software. Především se jedná o programové přidělování komunikačního média (TP vedení) jednotlivým stanicím tak, aby nedocházelo ke vzájemným kolizím a zároveň aby byla odezva stanic dostatečně rychlá. Uvědomme si, že máme k dispozici pouze jeden kanál pro přenos informací. Musíme přenést jak data, tak i bitovou a bajtovou synchronizaci. Pro přenos jednotlivých bitů je tedy vhodná jedna z modulací používaných v datových sítích, např. kódování NRZ, NRZI, fázová modulace NRZ, nebo diferenciální fázová modulace. Pro zajištění bajtové synchronizace máme opět několik možností. Asi nejjednodušší je definování jednoho specifického bajtu jako synchronizační znak. Software však musí zajišťovat konverzi datových bajtů shodných se synchronizačním znakem na posloupnost odlišných bajtů. Můžeme také využít přenosových protokolů SDLC/HDLC, vhodných pro vysokorychlostní přenosy dat. (Staněk, 1998) Ze síťového hlediska se u RS-485 jedná o sběrnicovou topologii. Jelikož Slave stanice nemají žádnou možnost, jak začít bez možné kolize vysílat, musí jim být přiděleno právo vysílat Master stanicí. Mluvíme tedy o centrálním přidělování, konkrétně přidělování na výzvu, kde se centrální stanice (Master) periodicky dotazuje všech Slave stanic, zda mají data k odeslání. Pakliže ano, dotazovaná stanice je ihned odešle. Nemá-li data k odeslání, odpoví pouze potvrzovacím paketem, nebo neodpoví vůbec. Tato metoda se jeví jako nejvýhodnější pro multi-point zapojení s menším počtem Slave stanic (cca do 100). Pro více stanic by se začala zpomalovat doba odezvy. Samozřejmě záleží na konkrétních potřebách systému. Uvedená hodnota 100 stanic je pro potřeby „on-lineÿ systému, kde stanice musí interaktivně reagovat na požadavky uživatele, a doba odezvy tudíž musí být maximálně 0,5 s (uvažováno pro rychlost 115200 b/s, která je v průmyslovém prostředí k dispozici jen málokdy). Nutno podotknout, že v systémech, kde Master stanice nemá prioritní funkci, nebo z jiných důvodů (například velký počet stanic s malou frekvencí přenášených dat) je možné použít i jiné přístupové metody. Například metoda náhodného přístupu ALOHA. Jakákoliv stanice vyšle svoje data bez ohledu na stav přenosového kanálu. Dojde-li ke kolizi, pak tato stanice nedostane potvrzení o doručení a opakuje vysílání. Tato metoda však využije průměrně 18 % přenosové kapacity a při větším objemu dat propustnost díky většímu množství kolizí rapidně klesá. U RS485, jelikož přijímače mohou neustále naslouchat stavu přenosového kanálu, je také možné implementovat metodu ALOHA vylepšenou o poslech datové aktivity kanálu. Stanice v tomto případě, zahájí vysílání pouze tehdy, je-li kanál v klidovém stavu. U obou těchto metod je nezbytně nutný přenosový protokol s detekcí chyb. U jakéhokoliv přenosu dat nemůžeme stoprocentně zaručit, že vyslaný paket dorazí do cílové stanice bez chyby, RS-485 nevyjímaje. Obzvláště u ALOHA metod může docházet ke kolizím, rušení, délka vedení atd., způsobuje chyby. Je tedy
4.3
Vstupní a výstupní porty NXT
27
vhodné, aby komunikační software řešil i tyto možnosti. U metody centrálního přidělování je výhodné, pokud Slave stanice vysílá jako odpověď paket s potvrzovací informací o posledním přijatém paketu. Možností je několik a záleží na konkrétním použití, jaký systém zvolit. (Staněk, 1998)
Obr. 16: Provedení nevětvené linky RS-485. (Staněk, 1998)
Vstupní port číslo 4 řídicí jednotky robotického systému LEGO Mindstorms NXT může fungovat jako vysokorychlostní komunikační port. Za standardním vstupním obvodem, který mají všechny vstupní porty řídicí jednotky stejný, má port číslo 4 implementován komunikační čip sběrnice RS-485. To umožňuje implementaci vysokorychlostní obousměrné datové komunikace vícebodového vedení i na dlouhé vzdálenosti. Společnost LEGO v současnosti nevyvíjí žádná zařízení, která by vyžadovala vysokorychlostní komunikační rozhraní, s využitím sběrnice RS-485 se počítá do budoucna. Výrobce umožňuje využití komunikačního protokolu P-Net, který je možné použít pro vícebodovou komunikaci. Tato práce se jím však nezabývá a nepracuje s ním.
Obr. 17: Schéma zapojení čipu sběrnice RS-485 na vstupním portu číslo 4.
Čip RS-485 integrovaný v řídicí jednotce má napájecí napětí 5 V, ale procesor ARM7 je napájen pouze 3,3 V. Z tohoto důvodu je mezi procesor ARM7 a čip RS485 umístěn posouvač úrovní (Level Shifter), který umožňuje propojení dvou různě napájených systémů. Pro vytvoření komunikace s řídicí jednotkou se standardním firmwarem je potřeba při vytváření spojení nastavit tyto parametry:
4.3
• • • •
Vstupní a výstupní porty NXT
28
Přenosová rychlost – 921600 b/s Datové bity – 8 b Stop bit – 1 b Parita – 0 b Výkladem o této sběrnici jsme již vyčerpali všechny komunikační možnosti řídicí jednotky robotického systému LEGO Mindstorms NXT. Analýza konektivity této jednotky je tedy za námi. Po technologii Bluetooth je sběrnice RS-485 druhé komunikační rozhraní, které je pro splnění cíle této závěrečné práce použitelné. Těmito dvěma komunikačními kanály se tedy budeme zabývat i nadále.
5
5
NÁVRH ROZŠÍŘENÍ ŘÍDICÍ JEDNOTKY O BEZDRÁTOVOU TECHNOLOGII WI-FI
29
Návrh rozšíření řídicí jednotky o bezdrátovou technologii Wi-Fi
V předchozí kapitole jsme si zanalyzovali komunikační možnosti řídicí jednotky LEGO Mindstorms NXT. V této kapitole bude na základě této analýzy zpracován návrh rozšíření této řídicí jednotky o komunikační rozhraní Wi-Fi, jímž jednotka standardně nedisponuje. Implementace bezdrátové sítě Wi-Fi do řídicí jednotky by posunula možnosti tohoto robotického systému zase o úroveň výš. Nesporná výhoda je samozřejmě v možnosti komunikace s robotickým systémem na teoreticky neomezenou vzdálenost. V dnešní době na tomto principu fungují již zmínění roboti ve zdravotnictví. Operatér může robota řídit z druhého konce světa. Teoretický návrh a praktická realizace řešení proběhne zhruba v těchto krocích, přičemž první dva už jsou za námi: • Analýza konektivity řídicí jednotky; • Výběr vhodných komunikačních rozhraní řídicí jednotky; • Volba vhodných převodníků technologie Wi-Fi a zvolených komunikačních rozhraní řídicí jednotky; • Volba programovacích nástrojů; • Naprogramování řídicí aplikace pro osobní počítač; • Naprogramování aplikace pro zpracovávání dohodnutých instrukcí pro řídicí jednotku; • Programování a nastavení převodníků. Tato bakalářská práce se samozřejmě zabývá nedestruktivním řešením rozšíření řídicí jednotky o technologii Wi-Fi, to znamená, že nedojde k žádné demontáži řídicí jednotky a integraci Wi-Fi čipu přímo na plošný spoj (dále jen PCB) základní desky v jednotce. Tento návrh je založen na přemostění některého z komunikačních rozhraní řídicí jednotky a bezdrátové technologie Wi-Fi pomocí vhodného převodníku. V předchozí kapitole jsme si rozebrali a zdůvodnili vhodnost a nevhodnost použití komunikačních rozhraní řídicí jednotky pro přemostění s Wi-Fi a dospěli jsme k závěru, že řídicí jednotka nám pro splnění cíle poskytuje hned dva vhodné komunikační kanály, které lze poměrně dobře použít k přemostění pomocí nějakého komerčně dostupného a hotového převodníku. Jedná se o bezdrátovou technologii Bluetooth a standardní průmyslovou sběrnici RS-485. Důvod, proč se nezabýváme nativní implementací Wi-Fi čipu na PCB základní desky řídicí jednotky, je prostý. Tato jednotka je komplexní a hotové řešení (na hotové PCB již není možné cokoli přidat), nejedná se o vývojový prototyp a navíc její konfigurace a možnosti technického vybavení (slabý procesor a málo paměti) neumožňují přidání a adresaci dalšího zařízení. Pokud bychom dali stranou tyto technické překážky a bylo by možné provést integraci Wi-Fi čipu na PCB, nevyhnuli bychom se složitému přeprogramování firmware zařízení na úrovni zdrojového kódu.
5
NÁVRH ROZŠÍŘENÍ ŘÍDICÍ JEDNOTKY O BEZDRÁTOVOU TECHNOLOGII WI-FI
30
Převodník, který bude použit pro přemostění bezdrátové technologie Wi-Fi a některého ze dvou zmíněných komunikačních rozhraní řídicí jednotky, by mělo být nejlépe úplně jednoduché zařízení, které by obsahovalo pouze komunikační rozhraní Wi-Fi a buď Bluetooth nebo sběrnici RS-485, přičemž firmware zařízení, kterým převodník pochopitelně musí disponovat, nebude dělat nic jiného, než že data, která přijme na rozhraní Wi-Fi odešle dál právě buď přes Bluetooth nebo sběrnici RS485. Komunikace musí fungovat samozřejmě i opačně, to znamená, že co přijme na rozhraní Bluetooth nebo RS-485, odešle přes rozhraní Wi-Fi. Z předchozích poznatků je logické, že tento převodník musí být neustále nablízku řídicí jednotce (do deseti metrů v případě použití Bluetooth, teoreticky 1200 m při použití RS-485, což samozřejmě není reálné).
Obr. 18: Schéma řešení rozšíření řídicí jednotky NXT o komunikační rozhraní Wi-Fi.
Obrázek 18 nám celý návrh znázorňuje. Je dobré zmínit, že člen mezi převodníkem a PC – bezdrátový router, resp. přístupový bod, není v žádném případě povinný nebo jich naopak může být i více. V analýze konektivity řídicí jednotky bylo uvedeno, že Bluetooth má pracovní dosah v řádech metrů, sběrnice RS-485 teoreticky 1200 m. Ovšem pomocí rozšíření o rozhraní Wi-Fi můžeme s řídicí jednotkou komunikovat třeba z druhého konce světa, a to i se zabezpečením pomocí 256bitové šifry AES. Stejně tak jako bezdrátový router, není povinný ani PC na druhém konci komunikace s řídicí jednotkou. Smí tam být cokoli, co je schopné za dané situace s řídicí jednotkou komunikovat, například další řídicí jednotka. Představme si situaci, kdy je potřeba, aby mezi sebou komunikovalo více řídicích jednotek (plně autonomní
5
NÁVRH ROZŠÍŘENÍ ŘÍDICÍ JEDNOTKY O BEZDRÁTOVOU TECHNOLOGII WI-FI
31
roboti, přičemž chování jednoho se odvíjí od chování druhého), které jsou od sebe hodně vzdálené. Potom není problém komunikaci naprogramovat úplně stejně, jako kdyby komunikovali mezi sebou přes Bluetooth. Jediný rozdíl bude v tom, že mezi nimi budou stát ještě dva převodníky (podle toho, kolik by bylo použito řídicích jednotek) a například soustava bezdrátových přístupových bodů. Nyní, když jsme kompletně seznámeni s robotickým systémem LEGO Mindstorms NXT a se všemi možnostmi komunikace jeho řídicí jednotky s okolím, se pustíme do praktické realizace tohoto návrhu rozšíření.
6
PRAKTICKÁ REALIZACE NÁVRHU ROZŠÍŘENÍ
6
32
Praktická realizace návrhu rozšíření
V předchozí kapitole byl zpracován návrh rozšíření řídicí jednotky o komunikační rozhraní Wi-Fi. V této kapitole se pokusíme tento návrh uvést do praxe. Začneme se seznámením modelu robota, který bude pro realizaci použit.
6.1
Použitý model robota
Robotický systém LEGO Mindstorms NXT má skoro neomezené možnosti v sestavování různorodých modelů robotů díky nepřebernému množství technických dílů stavebnice. Mimoto nabízí zhruba deset standardních modelů robotů, které lze sestavit pomocí přiložených návodů a které slouží pro výuku a seznámení se s robotickým systémem. I tato práce zachází s jedním ze standardních modelů, a sice s modelem nazvaným „TriBotÿ.
Obr. 19: Standardní model robota pro výuku nazvaný TriBot.
Toto nádherné „stvořeníÿ samozřejmě disponuje všemi senzory a servomotory (vzpomeňme na získávání vstupních dat a ovládání efektorů), které máme v rámci systému k dispozici. Je jedním ze dvou standardních modelů, který pro pohyb v prostoru používá kola, což se nám hodí hlavně kvůli úspoře energie baterie a obratnosti modelu. Kola jsou poháněna servomotory připojenými k výstupním portům řídicí jednotky B a C. Jsou na sobě nezávislá, což robotovi umožňuje zatáčení. Díky možnosti
6.2
Programovací nástroje
33
synchronizace servomotorů lze robota uvést do pohybu v přímém směru. Servomotor na výstupním portu A ovládá mechanickou paži, kterou robot používá pro uchopování předmětů (standardně plastového míčku přímo od výrobce). Tento model má všechny senzory umístěny smysluplně, například díky umístění tlakového senzoru vespod robota je možné reagovat na nízké překážky (podlahová lišta). Světelný senzor je zase umístěn tak, aby bylo možné analyzovat povrch, po kterém se robot pohybuje. Po drobné úpravě uchycení řídicí jednotky na tomto modelu, je možné umístit převodník přemosťující Wi-Fi a Bluetooth nebo RS-485 přímo pod řídicí jednotku. Robot tak má neomezený pohyb v rámci určité bezdrátové sítě. Toto pro představení pracovního modelu robota stačí. Nyní se podíváme na prostředky, kterými budeme robota programovat.
6.2
Programovací nástroje
Již několikrát byl v předchozích částech práce zmíněn pojem „standardní firmwareÿ. Jedná se o mikroprogramové vybavení řídicí jednotky dodané výrobcem LEGO. Tento standardní firmware poskytuje běhové prostředí pro programy, které byly programovány a zkompilovány standardním grafickým programovacím nástrojem, který ke stavebnici dodává výrobce. Tato práce ovšem vyžaduje mnohem pokročilejší programování řídicí jednotky, a to především na úrovni surových dat. Standardní firmware je tedy pro tuto práci nepoužitelný a je potřeba jej nahradit za takový firmware, který by umožnil programovat řídicí jednotku některým ze standardních programovacích jazyků. A jedním z nich je LeJOS – LEGO Java Operating System. Firmware LeJOS LeJOS je jedním z dostupných alternativních firmwarů pro robotický systém LEGO Mindstorms NXT. Je napsán v programovacím jazyku C a nabízí běhové prostředí pro programy napsané v jazyku Java. V současnosti se nachází ve verzi 0.85, což je zároveň verze použita pro tuto práci. Firmware je nabízen zdarma a má volně dostupné zdrojové kódy, což umožňuje úpravy firmwaru. Po stažení zazipovaných souborů ze stránek projektu je nutné firmware nejdříve nahrát do řídicí jednotky robotického systému. Je to úplně snadné, flash se provádí pomocí jednoduché grafické aplikace, která uživatele celým procesem provází. Po nahrání LeJOSu do řídicí jednotky se vymaže standardní firmware, který je možné opět obnovit pomocí standardního grafického programovacího softwaru dodávaného výrobcem. Po úspěšném nahrání LeJOSu do paměti řídicí jednotky již nic nebrání programování robotického systému standardním programovacím jazykem Java.
6.3
Řídicí aplikace v PC
34
Programovací jazyk Java Z představení firmwaru LeJOS vyplývá, že hlavním a také jediným programovacím nástrojem této práce je programovací jazyk Java. Detailní popis tohoto jazyku je nad rámec této bakalářské práce, která počítá minimálně se základními znalostmi jazyku. Klíčovou výhodou programovacího jazyku Java je nezávislost na platformě. To znamená, že program napsaný v Javě může běžet na jakémkoli zařízení, které má v sobě implementováno běhové prostředí tohoto jazyka (Java Runtime Environment). Dříve byla Javě vyčítána rychlost, resp. pomalost běhu programů, což je právě daň vykoupená nezávislostí na platformě. Dnes je však situace již jiná a ani na této práci se rychlost Javy neprojevuje negativně. Všechny aplikace používané v této práci byly vyvinuty ve vývojovém prostředí NetBeans 6.8. Projekt LeJOS má pro toto vývojové prostředí připraven plugin, což umožňuje psaní a překlad programů pro LeJOS přímo v tomto prostředí.
6.3
Řídicí aplikace v PC
Realizace návrhu rozšíření řídicí jednotky o komunikační rozhraní Wi-Fi bude předvedena pomocí počítače, kterým budeme schopni dálkově řídit robota a budeme také mít k dispozici data z jeho senzorů. Řízeným robotem nebude samozřejmě nic jiného, než TriBot, který byl představen výše. Dále nezapomínejme na provedenou analýzu konektivity řídicí jednotky, kde byla zmíněna dvě vhodná komunikační rozhraní, kterých využijeme pro splnění cíle této bakalářské práce. Budou tedy dvě řešení. Celé to bude fungovat tak, že na osobním počítači bude spuštěna grafická aplikace naprogramovaná v Javě, která představuje ovládací panel modelu robota. Tato aplikace bude nezávislá na použitém převodníku. Jestli tedy bude použit převodník Wi-Fi↔Bluetooth nebo Wi-Fi↔RS-485, je pro tuto aplikaci zcela nepodstatné. Pro obě řešení bude naprosto stejná. Aplikace funguje následujícím způsobem: ze všeho nejdříve je potřeba zadat do textového pole IP adresu převodníku přemosťujícího Wi-Fi s některým ze dvou zmíněných rozhraní a stisknout tlačítko „ Connectÿ. Po úspěšném spojení počítače s převodníkem, který už byl předtím ve spojení s řídicí jednotkou (vysvětleno níže), dá řídicí jednotka aplikaci vědět o úspěšném propojení všech zařízení pomocí dialogového okna. A nyní už aplikace funguje úplně jednoduchým způsobem, každé stlačení některého z ovládacích tlačítek, přepínačů a pohyb jezdcem ovládajícího rychlost servomotorů vyvolá událost, v níž se zavolá metoda pro odeslání dat do řídicí jednotky. Metoda odesílá do lokální sítě jednoduché bajty, což jsou celá čísla v rozsahu od −128 do 127, které představují dohodnuté instrukce pro řídicí jednotku. Když si vzpomeneme, jaké hodnoty vracejí všechny senzory robotického systému, zjistíme, že tento rozsah plně postačuje a je také úplně využitý. Ještě tedy jednou,
6.4
Aplikace v řídicí jednotce
35
aplikace si pouze vyměňuje bajty s řídicí jednotkou, resp. s převodníkem, který je v pořadí zařízení před ní (bráno ze strany PC).
6.4
Aplikace v řídicí jednotce
Další aplikaci, kterou je potřeba naprogramovat, je aplikace, která bude nepřetržitě spuštěna v řídicí jednotce. Jak bylo již řečeno, aplikace v PC pouze posílá bajty do sítě, coby dohodnuté instrukce pro řídicí jednotku. Aplikace v řídicí jednotce tedy musí umět na tyto instrukce reagovat. Na rozdíl od aplikace v PC, tato je závislá na tom, jestli převodník přemosťuje Wi-Fi s rozhraním Bluetooth nebo RS-485. Po spuštění aplikace v řídicí jednotce se tedy nejdříve zobrazí volba rozhraní, na kterém má být vytvořeno spojení s převodníkem. Po zvolení rozhraní uživatelem dojde ke spojení řídicí jednotky s převodníkem. Následně musí dojít k zadání IP adresy převodníku v aplikaci spuštěné v PC (postup uvedený v předešlém odstavci). Kostru aplikace běžící v jednotce tvoří cyklus, který lze ukončit buď tlačítkem na řídicí jednotce, nebo dálkově aplikací v PC. V tomto cyklu se kontroluje, zda není k dispozici nová instrukce. Pokud ano, dojde uvnitř těla cyklu k vyhodnocení instrukce pomocí příkazu switch a následně se provede požadovaná operace. Takto by to byla jen jednostranná komunikace, protože dochází k posílání bajtů pouze z počítače do řídicí jednotky. Avšak toto řešení implementuje oboustrannou komunikaci. Je prezentována situací, kdy uživatel v aplikaci v PC stiskne tlačítko pro získání dat z libovolného senzoru. V takovém případě dojde k odeslání instrukčního bajtu do jednotky a ta obratem odešle počítači návratovou hodnotu z požadovaného senzoru. Celé to tedy funguje pouze na základě posílání bajtů po síti, což se kladně projevuje na rychlosti komunikace, která se tak odehrává v reálném čase.
6.5
Převodník Wi-Fi↔Bluetooth
Nyní se budeme zabývat převodníky. Už víme, že jsou k dispozici dvě možná řešení. Začneme s převodníkem Wi-Fi ↔Bluetooth, který je jednodušší. Již bylo zmíněno, že převodník by mělo být jednoduché zařízení, které disponuje oběma komunikačními rozhraními a firmwarem, který se stará o oboustranné přeposílání dat mezi těmito rozhraními. V případě převodníku Wi-Fi ↔Bluetooth se přímo nabízí použití obyčejného mobilního telefonu, který podporuje technologie Wi-Fi a Bluetooth a má v sobě implementováno běhové prostředí Javy. Nejedná se ovšem o jednoduché zařízení, což nám ale v ničem nebrání. Má to i své výhody. Pro tuto práci výborně poslouží model mobilního telefonu Nokia 6300i, který přesně těmito technologiemi disponuje. Mobilní telefon je hotové zařízení, které má svůj firmware, vyřešené napájení a jedná se o samostatný systém, takže jediné, co je potřeba udělat pro to, aby nám posloužil jako převodník technologií Wi-Fi ↔Bluetooth, je naprogramovat Java aplikaci, která po spuštění naváže spojení s řídicí jednotkou přes Bluetooth a po stisknutí tlačítka „Connectÿ v aplikaci spuštěné v PC naváže spojení i s počítačem.
6.6
Převodník Wi-Fi↔RS-485
36
Kostrou této aplikace je cyklus, který lze ukončit buď pomocí klávesnice mobilního telefonu, nebo dohodnutou instrukcí na dálku z aplikace v PC. Cyklus obsahuje dvě podmínky. V první se kontroluje, zda jsou dostupná data na rozhraní Wi-Fi a v druhé jestli jsou dostupná data na rozhraní Bluetooth. Pokud ano, tato data se obratem odesílají přes Bluetooth do řídicí jednotky, resp. přes Wi-Fi do PC. Přesně tak, jak má fungovat obousměrný převodník dvou různých komunikačních technologií. Toto řešení se podařilo dostat do konečné fáze, kdy komunikace s robotem, tj. jeho řízení na dálku, získávání a zobrazování hodnot ze senzorů v PC, funguje stabilně a v reálném čase. Řešení bylo otestováno i v rozsáhlé síťové infrastruktuře o několika bezdrátových přístupových bodech prošlo absolutně bez výhrad. Výhody a nevýhody • • • • • • • • •
6.6
+ + + + + + − − −
Samostatné zařízení, postačuje naprogramovat jednoduchou aplikaci; Vyřešený systém napájení a snadné nabíjení; Díky displeji je možné sledovat běh aplikace, snadnější ladění; Snadná konfigurace bezdrátové sítě; Snadné přepínání mezi více sítěmi; Dostupnost zařízení, mobilní telefon má dnes každý; Horší citlivost integrované Wi-Fi antény v mobilním telefonu; Řešení převodníku pomocí zařízení, které má primárně úplně jiný účel; Cena řešení.
Převodník Wi-Fi↔RS-485
Teď se podíváme na možnost realizace návrhu rozšíření s využitím převodníku technologie Wi-Fi a průmyslové sériové sběrnice RS-485. Hotových zařízení tohoto typu je už znatelně méně než v případě mobilních telefonů. Tato práce se bude konkrétně zabývat zařízením Secure iWiFi od výrobce ConnectOne. Jedná se přímo o průmyslový převodník technologie Wi-Fi a sběrnicí RS-485, který je pro tento účel přímo navržen, nemá tedy v sobě nic navíc. Hned na začátku je potřeba zmínit, že toto řešení se, na rozdíl od předchozího, nepodařilo převést z teorie do praxe. Řešení ztroskotalo na nemožnosti kompilace upravených zdrojových kódů firmwaru. Řešení pomocí tohoto převodníku je o poznání komplikovanější než využití mobilního telefonu a nenabízí takový komfort, co se týče nastavení bezdrátové sítě. Nejedná se o samostatné a soběstačné zařízení. Jinými slovy, pokud bychom chtěli robota používat v různých bezdrátových sítích, které budeme často měnit a které budou pro tento převodník nové, nikdy se nevyhneme složité konfiguraci před každým použitím zařízení pomocí konfiguračního softwaru. Zařízení sice disponuje deseti profily pro přednastavení nejpoužívanějších bezdrátových sítí, ale pokud opravdu budeme chtít robota používat v prostředích pro převodník neznámých, je toto řešení naprosto nevhodné.
6.6
Převodník Wi-Fi↔RS-485
37
Obr. 20: Průmyslový převodník Wi-Fi↔RS-485 ConnectOne Secure iWiFi.
Nyní ale už k samotné realizaci. Převodník Secure iWiFi používá pro komunikační port RS-485 konektor DB9, což je konektor se kterým se můžeme často setkat u osobních počítačů, které jej využívají pro sběrnici RS-232 (sériový port, ve Windows adresovaný jako COM1, 2,. . . ). Řídicí jednotka používá pro RS-485 svůj konektor NXT RJ12. Tyto dva konektory je potřeba tedy propojit pomocí propojovacího kabelu, který ovšem nelze koupit a musíme jej tedy vyrobit. K tomu potřebujeme znát zapojení konektorů obou propojovaných zařízení. Zapojení konektoru NXT RJ12 výstupního portu číslo 4 na řídicí jednotce už známe. Bylo rozebráno při analýze konektivity řídicí jednotky. Konkrétně nás zajímají piny 3, 5 a 6: • Pin 3 – GND, zemnění, které, jak už víme z výkladu o sběrnici RS-485, musí být připojeno jako třetí vodič, pokud nemáme obě propojované zařízení uzemněné. • Pin 5 – představuje pro sběrnici RS-485 vodič A. • Pin 6 – představuje pro sběrnici RS-485 vodič B. Zapojení konektoru DB9 na převodníku Secure iWiFi je následující: • Pin 5 – zemnění, propojí se s pinem 3 na NXT RJ12 • Pin 3 – vodič A, propojí se s pinem 5 na NXT RJ12 • Pin 7 – vodič B, propojí se s pinem 6 na NXT RJ12 Pro zhotovení kabelu potřebujeme tedy ještě oba konektory. Je nesmysl letovat vodiče na konektor DB9 a krimpovat konektor NXT RJ12. Za prvé je to zbytečně pracné a za druhé tovární výroba těchto kabelů je mnohem přesnější a lepší. Použijeme tedy hotový plochý kabel s devíti vodiči a konektorem DB9, který se používá pro zapojení sériového portu na header základní desky počítače. Přerušíme kabel někde uprostřed jeho délky a zbavíme konektor plastového zátylku, abychom
6.6
Převodník Wi-Fi↔RS-485
38
viděli, jak jsou vodiče zapojené (existují dva typy zapojení konektoru DB9 pro RS232 v PC). Vybereme vodiče naletované na piny 3, 5 a 7 a ostatní vodiče od nich odlepíme a přerušíme o něco níže. Není nutné a ani žádoucí je z konektoru úplně odstraňovat, protože se tak naruší soudržnost vodičů a celá pevnost kabelu. Tři požadované vodiče na koncích odizolujeme. Tímto máme připravenu první polovinu propojovacího kabelu.
Obr. 21: Upravený kabel s konektorem DB9.
Druhá polovina tkví v úpravě originálního propojovacího kabelu robotického systému LEGO Mindstorms NXT, který slouží k propojení senzorů a servomotorů s řídicí jednotkou. Tato úprava je destruktivní a kabel tímto zničíme a znemožníme jeho použití pro jeho původní účel. Vezmeme tedy kabel a přerušíme ho opět někde uprostřed (záleží na nás, jakou délku výsledného kabelu požadujeme). Nyní ho zbavíme černé ochranné izolace asi 3 cm od místa přerušení kabelu. Všechny vodiče kromě těch připojených k pinům 3, 5 a 6 přeštípneme těsně u pokračování černé ochranné izolace. Tyto tři požadované vodiče opět zbavíme izolace, tak jako v prvním případě. Druhá polovina propojovacího kabelu je tedy připravena.
Obr. 22: Upravený originální propojovací kabel s konektorem NXT RJ12.
6.6
Převodník Wi-Fi↔RS-485
39
Teď už je jen potřeba obě poloviny spájet k sobě a vodiče zaizolovat páskou. Kabel sletujeme k sobě samozřejmě vodiči, které k sobě patří (zem na zem, A na A, B na B, podle přehledů funkcí pinů uvedených výše). Tímto máme propojovací kabel hotový. Teď je na řadě nastavení převodníku pomocí konfiguračního software. Tady je komplikace pouze v propojení převodníku s PC. Osobní počítače samozřejmě nedisponují řadiči sběrnice RS-485, resp. mohou, ale tyto řadiče jsou velmi drahé. Lepší je využít sériového portu počítače, sběrnice RS-232. RS-232 a RS-485 jsou samozřejmě nekompatibilní, je tedy nutné použít převodník těchto dvou rozhraní. Tato práce využívá převodník od společnosti Advantech, model ADAM-4520. Jedná se o převodník sběrnice RS-232 na RS-422/485. Po správném zapojení napájení, vodičů sběrnice RS-485 a propojení ADAM-4520 se Secure iWiFi a počítačem můžeme Secure iWiFi nastavovat konfiguračním softwarem. A právě tady narážíme na zásadní problém.
Obr. 23: Převodník rozhraní RS-232↔RS-422/485 ADAM-4520.
Náš firmware LeJOS, který jsme si nahráli do řídicí jednotky, definuje rychlost přenosu sběrnice RS-485 (tzv. baudrate) na hodnotu 921600, což je standardní rychlost definovaná i výrobcem řídicí jednotky. LeJOS tedy v tomto ohledu bere v potaz standardní firmware a oficiální dokumentaci řídicí jednotky. Zařízení Secure iWiFi tuto rychlost přenosu bohužel nepodporuje. Ze standardních rychlostí má k dispozici tyto (uvedeno v b/s): 2400, 4800, 9600, 19200, 38400, 57600, 115200 a 230400. Pokud chceme vyšší rychlost přenosu, zařízení to řeší pomocí speciální celočíselné proměnné. Maximální rychlost přenosu tohoto převodníku je 3000000 b/s. Tato speciální proměnná funguje tak, že je dělitelem maximální rychlosti. Pokud do
6.6
Převodník Wi-Fi↔RS-485
40
ní uložíme číslo tři, výsledný baudrate je roven 1000000 b/s. Rychlosti obou komunikujících zařízení musí být shodné. Jenomže my nejsme schopni rychlost přenosu 921600 b/s na převodníku Secure iWiFi nastavit. Zbývá tedy pokusit se nastavit jinou rychlost přenosu řídicí jednotky. Jak bylo již uvedeno, projekt LeJOS má volně dostupné zdrojové kódy. V souboru zdrojového kódu, který má na starosti obsluhu rozhraní RS-485 (jeho název je hs.c) je definována konstanta BAUD RATE, která je standardně nastavena právě na hodnotu 921600. Stačí tedy tuto hodnotu přepsat, například na 115200, kterou má převodník Secure iWiFi k dispozici a zároveň je tato rychlost kompatibilní i s rychlostí sběrnice RS-232, nehrozí tedy žádné komplikace při konfiguraci zařízení. Po úpravě hodnoty a uložení souboru je potřeba znovu zkompilovat firmware pro řídicí jednotku. Napsáno velice jednoduše, postup však neproveditelný. Firmware LeJOS má své zdrojové kódy výborně rozdělené a pro kompilaci má připraveno rozhraní. Problém je ten, že zdrojový kód firmwaru lze zkompilovat pouze v prostředí operačního systému Linux, který má zkompilováno prostředí GNU Toolchain pro vývoj programů pro procesory ARM architektury. GNU Toolchain sestává z několika dílčích linuxových balíčků, které musí být kompatibilní mezi sebou (správná konfigurace jejich verzí) a navíc celé prostředí Toolchain musí být verzi, která je kompatibilní s řídicí jednotkou LEGO Mindstorms NXT. V žádném případě se však balíčky nepodařilo zkompilovat. Vyzkoušeno na několika distribucích a jejich verzích Linuxu. Tímto problémem byla praktická realizace tohoto řešení znemožněna. Pokud by se tento problém podařilo vyřešit, tak potom už je jen potřeba propojit řídicí jednotku s převodníkem Secure iWiFi pomocí námi vyrobeného propojovacího kabelu a v Javě naprogramovat komunikaci pro rozhraní RS-485, která je v LeJOSu vyřešena velice dobře a jednoduše. Je potřeba pouze aktivovat port RS-485 na řídicí jednotce, inicializovat spojení a pak už celá komunikace probíhá úplně stejně jako v případě technologie Bluetooth. Je velká škoda, že toto řešení se nepodařilo dostat do zdárného konce, mohlo by být opravdu zajímavé. Výhody a nevýhody • • • • • • • • •
+ + + − − − − − −
Zařízení navržené přímo pro tento účel; Výborná citlivost antény; Cena řešení; Je potřeba vyřešit napájení pomocí nějakého akumulátoru; Velice složitá konfigurace bezdrátových sítí; Potřeba dalšího zařízení pro konfiguraci převodníku; Opravdu složitá a někdy zcela nemožná konfigurace; Bez PC nebo routeru nelze zjistit IP adresa převodníku; Nepoužitelné řešení při mobilním používání robota.
7
7
DISKUZE A ZÁVĚR
41
Diskuze a závěr
V mé paměti je nesmazatelně zakotvena vzpomínka na scénu jak robot Číslo 5 klepe svými mechanickými „prstíčkyÿ do stojanu s benzínem u čerpací a stanice a dožaduje se vstupních dat. Jako dítě jsem se mu smál, nechápal jsem, proč tolik potřebuje vstupní data. Tato bakalářská práce mi vše objasnila, roboti jednoduše bez vstupních dat nemohou vůbec fungovat. Jejich centrální mozek by neměl co vyhodnocovat a neměl by žádný základ pro ovládání efektorů. Dalo by se to přirovnat k člověku, kterému chybí smysly a nemůže tak reagovat na podněty ve svém okolí. Z této práce jsem si však odnesl mnohem více. Měl jsem možnost si vyzkoušet naprogramovat síťovou komunikaci. Řešení bylo realizováno pomocí protokolu TCP i UDP, kde jsem poznal, že u jednoduchých aplikací není možné poznat rozdíl v rychlosti spojované a nespojované komunikace. Co se ovšem negativně projevovalo na odezvách robotického systému, bylo experimentování s datovými typy posílanými do sítě. V momentě, kdy jsem neposílal data jako datový typ byte, ale jako datový typ integer, došlo k rapidnímu zpomalení celé komunikace. Ono je to logické, při datech, které si řídicí jednotka vyměňuje s počítačem, dochází v případě posílání datového typu integer k 75 % redundanci dat. Vždy se tři ze čtyř bajtů posílají zbytečně. Dále jsem měl možnost vyzkoušet naprogramovat si aplikaci pomocí Java Micro Edition a pochopit tak princip této platformy. Trochu mě překvapilo, že aniž bych si přečetl nějakou literaturu o převodnících a zařízeních, které propojují dvě různé technologie, byl jsem schopen bez problému takový převodník naprogramovat a programově si vyzkoušet jak převodníky fungují. Co mě ovšem velmi zamrzelo, byla bezmocnost zprovoznit druhé řešení této práce. Člověk zná přesný postup vedoucí k řešení daného problému a nemůže s tím nic dělat, protože bohužel Linux ještě pořád není tak dokonalý jak bychom si přáli. Je to výborný operační systém se skvělou architekturou, ale v případě, kdy je potřeba zkompilovat balíčky, které jsou mimo repositář, uživatel stráví dlouhé hodiny a dny na různých diskuzích a kolikrát problém stejně nevyřeší, protože programátoři oněch balíčků neodvedli kvalitní práci. Například v projektu GNU GCC se úplně vykašlali na nepovinný argument ve funkci open programovacího jazyka C a kompilace tohoto balíčku vždy skončí chybou, pokud si to uživatel neupraví ve zdrojovém kódu projektu sám. Na závěr bych chtěl dodat, že přesně takovýto námět bakalářské práce jsem si představoval. Programovat nějaké zařízení, které nezobrazuje jen výsledky na obrazovku, ale i něco dělá. Díky úspěšné praktické realizaci prvního z obou řešení byl cíl této bakalářské práce splněn.
8
8
LITERATURA
42
Literatura
[1] OPLATEK, František, et al. Automatizace a automatizační technika IV. Vydání první. Praha : Computer Press, a.s., 2000. 166 s. ISBN 80-7226-249-1, K0332. [2] DLOUHÝ, Martin; WINKLER, Zbyněk. Robotika.cz [online]. 2005-01-22 [cit. 2010-03-24]. Co je to robot?. Dostupné z WWW: http://robotika.cz/guide/ robot/cs. [3] The LEGO Group. Lego Mindstorms NXT : Hardware Developer Kit [online]. [s.l.] : [s.n.], 2006 [cit. 2010-02-10]. Dostupné z WWW: http://cache.lego. com/upload/contentTemplating/Mindstorms2SupportFilesDownloads/ otherfiles/download8CFD37F17F7EFCDC412AE7CEBF245C6A.zip. [4] Servomotor In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 2005-09-27, 2010-01-08 [cit. 2010-05-13]. Dostupné z WWW: http://cs.wikipedia.org/wiki/Servomotor. [5] PUŽMANOVÁ, Rita. Moderní komunikační sítě od A do Z : 2. aktualizované vydání. Brno : Computer Press, a.s., 2006. 430 s. ISBN 80-251-1278-0, K0995. [6] Pulzně šířková modulace In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 2007-03-12, 2010-05-06 [cit. 2010-0516]. Dostupné z WWW: http://cs.wikipedia.org/wiki/Pulzně_šířková_ modulace. [7] Klopný obvod In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 2005-04-28, 2010-05-16 [cit. 2010-05-16]. Dostupné z WWW: http://cs.wikipedia.org/wiki/Klopný_obvod. 2 [8] I C In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) : Wikipedia Foundation, 2007-06-16, 2007-06-16 [cit. 2010-05-19]. Dostupné z WWW: http://cs.wikipedia.org/wiki/I2C. [9] STANĚK, Jan; ŘEHÁK, Jan; POUCHA, Pavel. RS 485 & 422 : Popis rozhraní a přenosových protokolů v tomto jedinečném průmyslovém sériovém asynchronním rozhraní. Hw.cz [online]. 1998-01-15, 821, [cit. 201005-20]. Dostupné z WWW: http://hw.cz/Teorie-a-praxe/Dokumentace/ ART821-RS-485-422.html.