systému LEGO Mindstorms NXT o Wi-Fi komunikační rozhraní



Podobné dokumenty
Cílem této kapitoly je seznámit s parametry a moduly stavebnice NXT. Obr. 1: Brick s moduly [3]

Co je uvnitř - senzory a přístrojová technika v NXT robotech. Pavel Ripka katedra měření ČVUT

Rozhraní mikrořadiče, SPI, IIC bus,..

1 Podrobná specifikace Yunifly Datasheet

enos dat rnici inicializaci adresování adresu enosu zprávy start bit átek zprávy paritními bity Ukon ení zprávy stop bitu ijíma potvrzuje p

UDAQ-1216A UDAQ-1416A. multifunkèní modul pro rozhraní USB

SEMINÁŘ ROBOTIKA. LEGO Roboti a jejich programování (teoretická a praktická část) Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond

Robot Lego Mindstorms NXT doplněný o kamerku a software v jazyce C#

Úvod do mobilní robotiky AIL028

METODICKÝ LIST K TECHNICKÉMU KROUŽKU:

1.1 Schema zapojení pro MODBUS. 1.2 Zapojení desky DMS2 T3 a uživatelských vstupů. Binární vstup A1/N. Binární vstup A1/N. Binární vstup B1/P

METODICKÝ LIST K TECHNICKÉMU KROUŽKU:

Podstanice DESIGO PX Modulární řada s rozšiřujícím modulem

Třífázové statické činné elektroměry

Bezdrátový přenos dat

ARDUINO L02. Programování a robotika snadno a rychle? Tomáš Feltl. Připraveno pro kroužek robotiky JAOS. Kroužek JAOS Farní sbor ČCE v Poličce

Distribuované průmyslové měřicí systémy

Vestavné systémy BI-VES Přednáška 5

DataLab IO. DataLab PC/IO

PROCESOR. Typy procesorů

1x Monitor 30 ; orientační cena ,- Kč bez DPH. Parametry:

Výklad učiva: Co je to počítač?

Základní deska (mainboard, motherboard)

PK Design. MB-ATmega16/32 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (21.12.

Základní normalizované datové přenosy

Měření kmitočtu a tvaru signálů pomocí osciloskopu

Elektronická kapacitní dekáda - BASIC

Hardware. Z čeho se skládá počítač

DVR7VW01. Profesionální FULL HD černá skříňka do vozidel Volkswagen. Uživatelská příručka

Řídicí systémy řady 400 str.2 z 16 MICROPEL

8xDCOUT-CAN. (modul osmi výstupů s rozhraním CAN) rev. 1.0

) informace o stavu řízené veličiny (předávaná řídícímu systému) - nahrazování člověka při řízení Příklad řízení CNC obráběcího stroje

Úloha č. 2: Měření voltampérových charakteristik elektrických prvků pomocí multifunkční karty

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Kompaktní procesní stanice

ŘÍDÍCÍ ČLEN GCD 411. univerzální procesorový člen pro mikropočítačové systémy. charakteristika. technické údaje

TECHNICKÁ UNIVERZITA V LIBERCI Studentská 1402/ Liberec 1

IEEE Wi FI. Wi Fi

Minidiktafon EDIC mini LCD

VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ

Zkouškové otázky z A7B31ELI

MAKER WORKS TECHNOLOGY INC Technická podpora:

Vnější paměti. Vnější paměti. Dělení podle materiálu a fyzikálních principů

Microchip. PICmicro Microcontrollers

Zdroje elektrosmogu a signály modulace

Bezdrátová chůvička s 2,4'' dotekovým displejem. Uživatelská příručka 87250

Konektory a Kabely. Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení

C 208. Dálkové ovládání GB060. Aplikační list. Dálkové ovládání regulátorů a přenos technologických informací telefonním terminálem GB060

IRC systém. - Instalační příručka verze 1.04 (firmware 2.14) KOMFORTNÍ VYTÁPĚNÍ IRC SYSTÉM DIGI CAN MODUL ŘÍDÍCÍ JEDNOTKA

Obecný popis základní jednotky

Typ Napětí Hmotnost kg

I/O řídící/měřící deska pro PC VELLEMAN K8055N

CQ485. Opakovač a převodník linek RS485 a RS422. S aktivní i pasivní obnovou dat

PCU Procesorová jednotka. Příručka uživatele. Platí od výr. č Střešovická 49, Praha 6, s o f c o s o f c o n.

ExperimentalCar. Kurz vyhodnocení komfortu jízdy na sedadle experimentálního vozidla, rozšíření rozsahu WiFi sítě

NÁVOD K OBSLUZE. Obj.č.: / /

Snímače teploty a vlhkosti s komunikací po RS485 protokolem Modbus RTU - řada PHM

RTU RTU. Podklady pro dokumentaci. Gateway to Modbus RTU RESET USB MODBUS RTU RS 485 DATA. Made in EU DATA

Počítačové sítě. Miloš Hrdý. 21. října 2007

Zemní ochrana rotoru generátoru ve spojení proudové injektážní jednotky PIZ 50V a ochrany REJ 521

Registrační teploměr

ExperimentalCar Rozšířeny kurz provozních měření na experimentálním vozidle

Rádiové dálkové ovládání posunovacích lokomotiv OPL 99.A

O autorovi 6 O odborném redaktorovi 7 Úvod 21 Laptop nebo notebook? 21 Co je cílem této knihy 22 Webové stránky autora 23 Osobní poznámka 23

Aplikace číslicového řízení

Zadávací dokumentace

Dálkové ovládání GB060. Umožní jednoduché ovládání otopné soustavy. Osm binárních vstupů / výstupů a jeden reléový výstup

MyIO - webový komunikátor

Ovládání RC modelu pomocí Wi-fi. Pavel Valenta

Modul analogových vstupů M-AI4

Komunikační jednotka MEg202.2

FASTPort. Nová sběrnice pro připojení inteligentních karet* k osmibitovým počítačům. aneb. Jak připojit koprocesor

Úvod do mobilní robotiky NAIL028

Úloha- Systém sběru dat, A4B38NVS, ČVUT - FEL,

A4B38NVS, 2011, kat. měření, J.Fischer, ČVUT - FEL. Rozhraní mikrořadiče, SPI, IIC bus,.. A438NVS, kat. měření, ČVUT - FEL, Praha. J.

Rozhraní mikrořadiče, SPI, IIC bus,..

Servozesilovače. Digitální servozesilovače TGA, TGP

Multi Sentry TT, MST kva

Počítačové sítě internet

Digitální paměťový osciloskop (DSO)

ARDUINO L01. Programování a robotika snadno a rychle? Tomáš Feltl. Připraveno pro kroužek robotiky JAOS. Kroužek JAOS Farní sbor ČCE v Poličce

Bezdrátový radiobudík s IR kamerou

Vestavné systémy BI-VES Přednáška 10

XD Routing a vstupní I/O systém. Digitální broadcast technologie

Informační a komunikační technologie

ULTRAZVUKOVÝ DÁLKOMĚR

Jednoduchý bezdrátový ovladač XWL Maus

Inovace bakalářského studijního oboru Aplikovaná chemie. Reg. č.: CZ.1.07/2.2.00/

GRAFICKÉ ADAPTÉRY. Pracovní režimy grafické karty

DISTA. Technická dokumentace. Pokyny pro obsluhu a údržbu. Verze 2.5

Vytvoření knihovny do systému Control Web pro plný přístup k NXT Mindstorms

Sestava kamery s mot. objektivem Tamron

Průmyslové pece Tepelné procesy Sušárny a klimatizační komory Zkušebny Technologické linky Stroje

Architektura počítače

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA PEDAGOGICKÁ KATEDRA TECHNICKÉ VÝCHOVY

Internetová kamera ICA-300. Uživatelský návod

Voděodolný tloušťkoměr MG-401 Obsah:

Zpracování informací

Popis zapojení: < 27 dbµv. < 33 dbµv LW. S/N ratio (60 dbµv): > 57 db FM mono > 52 db AM

Displej DT20-6. Update firmware řadiče. Simulační systémy Řídicí systémy Zpracování a přenos dat TM 2012_10_

Transkript:

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

OBSAH 5 Obsah 1 Úvod a cíl práce 6 1.1 Úvod.................................... 6 1.2 Cíl práce.................................. 6 2 Definice termínu robot 7 3 Robotický systém LEGO Mindstorms NXT 8 3.1 Řídicí jednotka LEGO Mindstorms NXT 9841............. 9 3.2 Tlakový senzor LEGO Mindstorms NXT 9843............. 10 3.3 Světelný senzor LEGO Mindstorms NXT 9844............. 10 3.4 Zvukový senzor LEGO Mindstorms NXT 9845............. 11 3.5 Ultrazvukový senzor LEGO Mindstorms NXT 9846.......... 12 3.6 Interaktivní servomotor LEGO Mindstorms NXT 9842........ 13 3.7 Propojovací kabely LEGO Mindstorms NXT 8529........... 14 3.8 Nabíjecí baterie LEGO Mindstorms NXT 9798............. 14 4 Analýza konektivity řídicí jednotky 16 4.1 Rozhraní USB............................... 16 4.2 Bezdrátová technologie Bluetooth.................... 17 4.3 Vstupní a výstupní porty NXT..................... 19 Rozhraní I 2 C............................... 21 Rozhraní RS-485............................. 23 5 Návrh rozšíření řídicí jednotky o bezdrátovou technologii Wi-Fi 29 6 Praktická realizace návrhu rozšíření 32 6.1 Použitý model robota........................... 32 6.2 Programovací nástroje.......................... 33 Firmware LeJOS............................. 33 Programovací jazyk Java......................... 34 6.3 Řídicí aplikace v PC........................... 34 6.4 Aplikace v řídicí jednotce......................... 35 6.5 Převodník Wi-Fi Bluetooth....................... 35 Výhody a nevýhody........................... 36 6.6 Převodník Wi-Fi RS-485........................ 36 Výhody a nevýhody........................... 40 7 Diskuze a závěr 41 8 Literatura 42

1 ÚVOD A CÍL PRÁCE 6 1 Úvod a cíl práce 1.1 Ú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 DEFINICE TERMÍNU ROBOT 7 2 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 ROBOTICKÝ SYSTÉM LEGO MINDSTORMS NXT 8 3 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 Řídicí jednotka LEGO Mindstorms NXT 9841 9 3.1 Ří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 16 4 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 19 4.3 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ů. Význam jednotlivých pinů je následující: Pin 1 MA0 výstupní PWM 1 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; 1 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ý obvod 2 ; 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. I 2 C SCL, RS-485 vodič A; Pin 6 DIGIAI1 digitální vstupně/výstupní pin napojený na procesor ARM7 v řídicí jednotce. I 2 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í I 2 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í I 2 C I 2 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 I 2 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 I 2 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í I 2 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 I 2 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 I 2 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 I 2 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 I 2 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 I 2 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 I 2 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í I 2 C nehodí, protože není velký výběr dostupných zařízení, která by disponovala rozhraním I 2 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 I 2 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ů R i = 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 R t 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 RS- 485, 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 RS- 485 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 NÁVRH ROZŠÍŘENÍ ŘÍDICÍ JEDNOTKY O BEZDRÁTOVOU TECHNOLOGII WI-FI 29 5 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 RS- 485. 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Í 32 6 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 + 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í. 6.6 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 RS- 232 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