Začínáme programovat RoboBoard X4

V tomto příspěvku se podíváme na řídicí desku RoboBoard X4 a jak s ní začít. Kromě jednoduchého připojení a ovládání chytrým mobilem můžeme desku naprogramovat tak, že reaguje jak na příkazy z mobilu, tak i samostatně něco rozhoduje a vykonává, třeba podle dat ze senzorů, které k ní připojíme.

Seznámení s RoboBoard X4

RoboBoard X4 je nejnovější řídicí deska ke stavebnici Totem. Obsahuje výkonný procesor a řadiče motorů a pro použití není potřeba pájení nebo další úpravy, prostě připojíte baterie, motory, senzory a je hotovo.

Zde je přehled hlavních částí desky. Další informace naleznete v podrobném popisu funkcí X4 X4 features.

Na přední straně desky nalezneme kromě pomocných obvodů tyto hlavní části:

  • Procesor ESP32 (s taktem 240MHz, zajišťuje i bezdrátové připojení modulu)
  • Dva konektory „Totem BUS“ pro propojení s dalšími moduly Totem
  • USB port
  • 4 digitální vstupy/výstupy (GPIO)
  • 3 kanály pro připojení serv
  • Tlačítko pro uživatelské využití
  • 4 kanály pro připojení stejnosměrných (DC) motorů
  • Konektory pro napájení ze zdroje a z baterie
  • Hlavní vypínač
  • Pohybový senzor (tříosý akcelerometr a tříosý gyroskop)
  • LED signalizující stav nabíjení1 (vedle napájecího konektoru)
  • LED signalizující stav chodu desky2 nebo stav, definovaný uživatelem v programu (vedle tlačítka)
  • Na zadní straně pak jsou ještě 4 trojbarevné (RGB) LED

Připojení z chytrého telefonu

Deska RobotBoard X4 je navržená tak, aby jí bylo možné programovat a zároveň se k ní připojit z chytrého telefonu. Připojení je stejné, jako u dalších desek v systému Totem.

Pro připojení RobotBoard X4 k mobilu postupujte takto:

  1. Spusťte apku Totem (dostupná pro Android i iOS).
  2. Připojte baterii nebo síťový zdroj a na desce X4 zapněte hlavní vypínač do polohy „on“.
  3. V aplikaci na mobilu zmáčkněte tlačítko „Connect“ a ze seznamu vyberte „Totem X4“.

Nyní můžete rovnou řídit svého robota. Pokud jste si desku pořídili jako součást nějaké stavebnice, pak si tuto stavebnici můžete vybrat v menu aplikace Totem. Jestli si stavíte vlastního robota, můžete si pro něj pomocí tlačítka „+“ sestavit vlastní ovládání (můžete postupovat podle tutoriálu Setting up Totem robot controls).

 Programování X4

Desku RobotBoard X4 je možné programovat v prostředí Arduino IDE3.

Abyste mohli začít s programováním desky X4, je třeba si na počítač nainstalovat vývojové prostředí Arduino IDE a podporu pro tuto desku. Celý postup naleznete v tutoriálu Arduino setup. V následujícím textu budeme Arduino IDE používat ve všech příkladech.

Po instalaci Arduino IDE a prvním připojení X4 by X4 měla běžet a měly by na ní blikat LED. (LED jsou na druhé straně desky, na obrázku níže se jejich světlo odráží o stůl). Jestli něco nefunguje, kontaktujte nás na fóru forum.totemmaker.net (anglicky) nebo forum.robodoupe.cz (česky) a pokusíme se Vám pomoci.

Psaní vlastních programů

V následujícím příkladu si ukážeme, jak napsat jednoduchý program pro blikání. Bude na všech LED dokola měnit barvu mezi červenou, zelenou a modrou. To zajistí následující kód, který si hned vzápětí rozebereme:

#include <Totem.h>
// funkce Arduino setup provede nastavení všeho potřebného.
void setup()
{
    // Inicializace desky X4 
    Totem.X4.begin();
}

// funkce Arduino loop provádí hlavní činnost programu
void loop()
{
    Totem.X4.write("rgbAll", 255, 255, 0, 0);
    delay(700);
    Totem.X4.write("rgbAll", 255, 0, 255, 0);
    delay(700);
    Totem.X4.write("rgbAll", 255, 0, 0, 255);
    delay(700);
}

Význam jednotlivých řádek je:

#include <Totem.h>

Tento řádek připojí knihovnu pro moduly Totem. Překladači tím dáváme informaci, co mají dělat funkce, které začínají na „Totem.X4“. Všechny funkce jsou popsány v dokumentaci  TotemModule.

void setup()

Při zapnutí napájení nebo resetu modulu je vždy nejprve vykonána funkce setup(). Ta nastavuje vše, co je potřeba ke správnému běhu.

Totem.X4.begin();

Tento příkaz inicializuje desku RoboBoard X4. Je nezbytný pro správný chod desky.

void loop()

Funkce loop() je hlavní výkonná funkce Arduina. Poté, co skončí funkce setup(), je tato funkce opakovaně vykonávána tak dlouho, dokud má deska zapnuté napájení. Kdyby funkce skončila (tj. vykonaly se všechny její příkazy), automaticky by byla zavolána znovu – tak je to i v tomto příkladu.

Totem.X4.write("rgbAll", 255, 255, 0, 0);

Pomocí této funkce nastavíme, jak má vícebarevná LED svítit. Jedná se o komplexní příkaz, který si nyní rozebereme:

Totem.X4.write – pomocí této funkce posíláme příkazy desce X4. Do závorek zapíšeme parametry, které jí chceme předat, a celý příkaz ukončíme středníkem.

"rgbAll" – první parametr funkce určuje, co chceme, aby deska X4 vykonala. Příkazem "rgbAll"4 říkáme, že chceme nastavit, jak moc a jakou barvou mají svítit její LED (všechny stejně). Všechny možné příkazy naleznete v dokumentaci desky X4.

255 – pokud nastavujeme svícení LED, tak další parametr určuje jas. Možné hodnoty jsou 0 až 255 a odpovídají intenzitě svitu od 0 do 100% (pro poloviční jas nastavte 128 atd.).

255, 0, 0 – poslední tři parametry určují barvu svitu. Ta vznikne smícháním tří základních barevných složek, červené, zelené a modré. Podobně jako s jasem určujeme podíl svitu jednotlivých složek v rozsahu 0 až 255, v tomto příkladu tedy červená svítí naplno a zelená i modrá jsou vypnuty.

delay(700);

Funkce loop() běží velmi rychle. Pokud bychom pouze nastavovali různé barvy svitu LED pořád dokola bez prodlevy, lidské oko by vše vnímalo jako stabilní svit všeho dohromady. Díky zavolání funkce delay() můžeme na zvolenou dobu pozastavit vykonávání dalších instrukcí a nechat tak mozku čas, aby si jednotlivých barev všimnul. Doba prodlevy se pro tuto funkci určuje v milisekundách, 700 tedy bude znamenat zastavení na 0,7 s.

Pokud tento program zkopírujete do Arduino IDE a zmáčknete tlačítko „Nahrát“ (šipka v horním řádku), program se přeloží a nahraje do desky.

Pokud vše proběhne správně, LED začnou blikat postupně jednotlivými barvami.

Nyní můžete sami zkusit měnit program a zkoušet, co to udělá. Zkuste například změnit barevné složky, dobu prodlevy, anebo ovládat LED samostatně (místo „rgbAll“ dejte „rgbA“, „rgbB“ atd.). Po změně vždy zmáčkněte tlačítko „nahrát”.


Poznámky:

  1. Nabíjecí LED: vypnuta – baterie je nabitá, svítí – baterie se nabíjí, pomalu bliká – baterie není připojena
  2. Stavová LED: svítí – deska běží, rychle bliká – deska startuje, pomalu bliká – chyba při inicializaci. Tuto LED můžete z Vašeho programu ovládat (rozsvítit/zhasnout).
  3. A také bez Arduino IDE, samozřejmě, ale o tom tento základní návod není.
  4. Uvozovky jsou nutné; pokud by chyběly, překlad programu skončí chybou.