Programování robota SMARS je docela komplexní záležitostí. Program pro chod a zejména ovládání robota nejsou jen jedním kódem, ale jsou to programy spíše dva a v našem případě jsou doplněny i vlastní knihovnou pro řízení chodu motorků. Je třeba také poznamenat, že se základní verzí programu pro arduino UNO, kterou jsem později upravoval pro konkrétní užití a zejména s knihovnou pro řízení motorků mi pomáhal (lépe řečeno je komplet naprogramoval) můj žák Ondřej Čech, Program je tedy komplet naším výtvorem a to zejména proto, že jsme nikde originální program ke stažení na internetu nedohledali.
Tento článek navazuje na seriál čtyř článků týkajících se popisu základní verze robota SMARS (Úvod, Konstrukce, Elektronika a zapojení a Montáž) , kterou jsem se snažil celou věc přiblížit mým starším robotikům (doufám že nezůstane jen u nabídky a že si to hoši i zkusí sestavit).
Program do mobilu
Bluetooth modul HC 05
Ještě před tím, než jsem si zkusil sestavit SMARSE jsem věděl, že jej bude třeba nějak dálkově ovládat a věděl jsem, že pro toto ovládání využiji technologie bluetooth. S bluetooth modulem HC 05 a jeho ovládáním jsem si mimochodem zažil mnohé okamžiky tichého šílenství a stálo mě to kromě času i nějakou tu korunu navíc. Ovšem ničeho z toho nelituji, přimělo mě to celou problematiku podrobněji nastudovat. Před „X“ lety, když jsem bluetooth modul coby možnost bezdrátového spojení pro arduino na krátkou vzdálenost pro sebe objevil, totiž nebylo vše tak samozřejmou věcí jako dnes. V první řadě chyběly informační zdroje, tudíž se vše objevovalo metodou „pokus-omyl“. Vzhledem k tomu, že je bluetooth modul poměrně netolerantní i k mírně zvýšeným napětím v obvodu a také nemá rád statickou elektřinu na prstech kutila, často se stávalo, že modulek v rámci kutivé činnosti odkráčel v půlce výzkumného procesu do křemíkového nebe.

S klidem ruského polního maršála, který ví že ztráty jednotlivců je možné eliminovat nasazením mas v zájmu dosažení velkého cíle, jsem i já zkoušel a testoval na větším množství modulů. Podle mého soukromého názoru bylo kromě nedostatku jakýchkoliv informací problémem i to, že v těch modulech měli chaos i dodavatelé. Mám pocit že většina dodavatelů na trh dodávala typ tohoto modulu – slave, který je pasivní a prodávala je s tím, že se jedná o aktivní typ master.
Každopádně prvé co je třeba řešit je naučit se pracovat s bluetooth modulem. Při montáži a připojování (pokud vymýšlíte vlastní variantu robota) dbejte na maximální úroveň napětí 7V (raději ještě méně). Je třeba sledovat blikání LED diody na modulu a to zejména v okamžicích kdy testujete celou soustavu. Pomalé blikání signalizuje připravenost ke spojení, permanentní svit právě probíhající navázané spojení a rychle blikání AT režim, při kterém je možné v sériovém komunikátoru na editoru arduino IDE nastavovat heslo a jméno modulu v síti, případně další trvale nastavené parametry modulu. Oproti starším verzím modulu je současná verze obalena plastem, tudíž je alespoň vyřešena ochrana proti statickému výboji.
MIT App Inventor
Ať již budete vyvíjet vlastní verzi ovládací aplikace do mobilu, nebo upravovat mojí aplikaci, děje se tak v online editoru MIT App Inventor. Pokud s tímto editorem začínáte, je samozřejmě dobré po registraci zkusit si realizovat pár drobnějších projektů, čistě proto, aby jste si to vyzkoušeli. Obecně platí, že je třeba kromě registrace v MIT App Inventoru stáhnout si také jeho aplikační část do vlastního mobilu, abyste mohli testovat program, který vyrábíte. Testovaný program lze pak opakovaně načítat do mobilu pomocí QR kódu. Funguje to po načtení jako byste měli vyráběnou apku nainstalovanou v mobilu, takže je možné ji pak vesele testovat i v praxi.

Tvorba mobilní aplikace probíhá ve dvou rozhraních. V rozhraní „Designer“ se nastavují formulářové prvky, ze kterých se aplikace bude sestávat (tlačítka, roletky, funkce timeru, grafika apod.). Prvky se vybírají v menu úplně vlevo a prostým přetáhnutím na plochu je vložíte do budoucí aplikace. Každému prvku, po označení pomocí nakliknutí, je pak možné editovat jeho vlastnosti v menu úplně vpravo. Rozložení formulářových prvků v prostoru se organizuje pomocí prvků ze skupiny Layout, které je možné organizovat do jakési stromové struktury (Bloček „all components“). Pod bločkem komponent se nachází bloček „Media“, kam postupně uploadujete použitou grafiku (vyexportovaný program si díky tomu nosí veškerou potřebnou grafiku ve vlastním batůžku sebou).

Pokud již máte všechny formulářové prvky umístěny tam, kde je budete v aplikaci používat a nastavené jejich vlastnosti, přepněte do rozhraní „Blocks“, kde můžete pomocí jednoduchého scratchového rozhraní naprogramovat samotné chování budoucí aplikace. Programové bloky můžete používat buď obecné (označené barevnými kostičkami), nebo bloky vázanými přímo na použité formulářové prvky (zde můžete přímo v toku programu dle potřeby ovlivňovat jejich vlastnosti).
Program pro mobil – smarsController
Program, který jsem v MIT App Inventoru vytvořil a vyzkoušel a který vám na závěr přikládám k vyzkoušení a případnému použití, je vytvořený, podobně jako celý SMARS, k dalšímu rozšiřování a obohacování podle toho, jakým směrem se bude ubírat vaše verze SMARSU. V základu je v aplikaci smarsController možné ovládat pohyb SMARSE a světelnou signalizaci RGB LED na hřbetě robota.
Krátký popis aplikace smarsController
V prvé řadě je v programu logicky řešeno připojení k SMARSOVI pomocí bluetoothu (bloky listPickeru). Zde, pokud budete chtít lépe porozumět logice fungování můžete shlédnout video na youtube například zde, kde je vše popisované. Podobných videí a tutoriálů je samozřejmě na youtube plno, MIT App Inventor patří v tomto směru k nadstandardně publikovaným tématům.
Část programových bloků typu „VolbaPohyb“, nebo „VolbaSvetla“ pak upravuje přepínání mezi jednotlivými režimy pro ovládání světla, nebo pohybu. V podstatě při aktivaci, nebo deaktivaci pouze upravuje stav vlastnosti Visible – zviditelňování, nebo zneviditelňování prvků při volbě režimu pohybu, nebo světla. Zjistil jsem, že čím větší počet funkcí chceme ve SMARSOVI ovládat, tím komplikovanější a nepřehlednější je pak logicky i ovládací rozhraní. Zdá se, že je to nikdy nekončící boj.
Samotná komunikace spočívá v odesílání a přijímání znaků přes bluetooth rozhraní. Na příjem znaku je pak formou události navázaná reakce robota SMARS. Do této kategorie pak patří všechny následující bloky „image“ – aktivací grafiky pro směr pohybu se odesílá pokyn pro odpovídající chování ve SMARSOVI. Úplně stejné je to pak u tlačítek pro volbu světla RGB LED.
Upozornění: Pozor ještě před odesláním příkazu pro pohyb SMARSE je třeba na prvku pro stanovení rychlosti nějakou nastavit, jinak zůstane SMARS pasívní.
Programy ke stažení
V jednom balíčku si můžete zde stáhnout zip se dvěma soubory. Soubor s příponou .apk je možné rovnou uploadovat do mobilu. Při prvním spuštění se nainstaluje a umožní vám ovládat základní verzi SMARSE. Druhý soubor s příponou .aia je pracovní verze programu, kterou je možné importovat do vašeho účtu na MIT App Inventoru a dále studovat, zkoušet, případně upravovat pro své účely.
Program pro SMARSE – vložený do Arduino UNO
Druhý program, o kterém jsem se v souvislostí s programováním robota SMARS zmiňoval, vkládáme do mikrokontroléru Arduino UNO. I při sestaveném a zakrytovaném robotovi máme i nadále plný přístup k USB slotu arduina, tudíž je možné i později s programem elaborovat a vylepšovat.
Program smars_v2 v podobě ve které jej na mé stránky vkládám ke stažení se skládá z jednoho hlavního programu a tří pomocných knihoven. Hlavní program je okomentován, takže se v něm lze snadno orientovat. Pomocná knihovna Motor,hpp obsluhuje přímé řízení motorového driveru a motorů, knihovna LineReceiver.hpp obsluhuje přijímaný signál z bluetooth modulu a knihovna Timer.hpp se stará o cyklování funkcí.
Programy ke stažení
Program smars_v2 ke stažení zde