Použití ultrazvukového senzoru, známého také pod pojmem Ultrasonic, jsem popisoval v případě staršího mBota v článku Pozor – mBot naslouchá. Novější mBot2 samozřejmě také tuto vymoženost používá, ale oproti starší verzi i ultrazvukový senzor doznal podstatného vylepšení.
Porovnání ultrazvukových senzorů mBota a mBota2
Již od pohledu na obrázek výše je jasné, že mezi oběma senzory jsou jisté rozdíly. Kupodivu nejsou rozdíly v garantovaném výkonu a přesnosti obou senzorů, ale spíše v doprovodném servisu – vybavenosti jednotlivých senzorů.
V případě staršího typu byl garantovaný dosah signálu a tím i vzdálenost, kterou lze senzorem měřit 3–400 cm, u novějšího typu je rozsah podobný 3–300 cm s garantovanou přesností ±5 %, přičemž se domnívám, že je vzdálenost, kterou je možné tímto senzorem měřit, snížena uměle pomocí editoru mBlock5 z reálných 400 cm na garantovaných 300 cm. V praxi ovšem rozdíl není k poznání.
Nový senzor má také robustnější konstrukci (díky pevnému plastovému krytu). Rozdíl naleznete také v sériovém principu připojení k desce, který byl zmíněn v jedné z prvních recenzí na mBota2 na českém trhu. U staršího typu je možné připojit ultrazvukové čidlo k desce přes robustní konektor RJ25. U novějšího typu je možno snadno v sériovém zapojení připojit k desce i více ultrazvukových senzorů (nového typu) a v programu je pak zohlednit přidělením ID. Bohužel jsem nezaznamenal samostatný prodej těchto čidel na našem trhu, aby bylo možné této možnosti využít při hraní si s mBotem2, ale přesto s touto možností bylo zjevně počítáno. Snad bude brzy tento problém vyřešen.
Firma Makeblock, která na náš trh mBota2 dodává, zároveň doplnila ultrasonické čidlo o čip, který by měl vylepšit „stabilitu provozu“ a oči mBota o dva modré LED prstence, které je možné ovládat programově a rozsvítit je například při detekování překážky.
Programujeme mBota2 s Ultrasonikem
Podobně jako jsme přidávali v předešlém díle seriálu knihovnu pro ovládání pohybu musíme, chceme-li využít ultrazvukového senzoru v programu mBota2, bude potřeba přidat rozšíření pro toto čidlo. Po kliknutí na tlačítko rozšíření (viz obrázek) se v editoru objeví nabídka všech rozšíření pro mBota2. Zvolíme si kartu pro Ultrasonic a aktivujeme ji tlačítkem „přidat“. Tímto krokem obohatíme nabídku programovacích bloků o bloky umožňující mBotovi2 využívat ultrazvukový detektor.
Příkazové bloky pro Ultrasonic
Doplnili jste si do editoru mBlock5 rozšíření pro Ultrasonic a přemýšlíte k čemu je možné nové bloky využít? Nejdůležitější jsou první dva.
S těmito bloky je možné pracovat pomocí bloků pro deklarování podmínkových příkazů (složka „Ovládání“). Logika ovládání je pro všechny společná v tom, že je třeba na začátku příkazu nastavit ID ultrazvukového senzoru, se kterým chceme pracovat (můžeme pracovat až s osmi různými ultrazvukovými senzory). Pokud budete používat pouze ten jeden, který jste dostali se svým robůtkem (což bude asi většina případů), nechte nastavené číslo 1.
První blok na obrázku (ten s kulatými okraji) nám vrací naměřenou hodnotu od senzoru až po překážku v centimetrech.
Druhý blok nám v podmínce vrací hodnotu true/pravda, pokud není v dosahu Ultrasoniku žádná překážka.
Zbývající čtyři bloky jsou určeny vesměs pro ovládání LED prstenců kolem senzorů. Je možné jimi ovládat buď jeden Ultrasonic dle zadaného ID, nebo všechny, které jsou k řídící jednotce připojeny. Lze nastavovat sílu svitu LED (zadáváme v 0–100 %), případně je možné vše měnit o určitá procenta, nebo úplně zhasnout. Perličkou je pak blok pro vyjádření různých „emocí“ mBota2 pomocí změn svitu prstencových LED.
Příklad programu
Pro demonstraci, jak lze použít ultrazvukový senzor a jak vytvořit program, který umí snímač vzdálenosti využít, si zkusíme postupně vytvořit demonstrační program (na konci článku jej naleznete ke stažení).
První část programu je spuštěna pouhým zapnutím mBota2. Celý program cykluje v intervalu po třech desetinách sekundy a provádí tuto činnost – vymaže obsah displeje, zobrazí na displeji text „Distance:“ a přesune se na další řádek displeje, kde vypíše aktuální hodnotu vzdálenosti mezi senzorem a překážkou, kterou odesílá ultrazvukové čidlo do řídící jednotky. K vypisované hodnotě vzdálenosti přidá ještě text „cm“ pro upřesnění naměřené vzdálenosti.
Program cykluje, tudíž se naměřená hodnota pravidelně aktualizuje a přepisuje na displeji. Tato část programu nám dává kontrolu nad tím, jak mBot2 vnímá vzdálenost od překážky před sebou. Zároveň si můžeme vše ověřit dodatečným změřením reálného stavu, například pomocí pásmového metru.
Další část našeho demonstračního programu obsahuje činnost, která je spuštěna po stisku tlačítka A na jednotce CyberPi mBota2 (to je to hranaté tlačítko vedle displeje). Program je opět v nekonečné smyčce a prověřuje, jestli ultrazvukový senzor nehlásí řídící jednotce překážku. Mezitím mBot2 jede vpřed. Pokud se tato překážka vyskytne blíž než 10 cm, zasáhne řídící jednotka a pomocí podmínkového příkazu spustí druhou variantu činnosti – zastaví mBota2. Pokud se situace změní a překážka zmizí, mBot opět pokračuje v pohybu vpřed.
Poslední částí demonstračního programu naučíme našeho robota ještě „chytřejší“ činnosti, než bylo pouhé zastavení před překážkou. V další upravené části programu se bude mBot2 jednoduchým způsobem snažit obejít překážku. Tato část programu je aktivována stiskem tlačítka B na jednotce CyberPi (trojúhelníček). Následující program je víceméně totožný s programem aktivovaným po stisku tlačítka A. Změnu naleznete v příkazech umístěných v podmínkovém bloku po textu „jinak“. V této části má mBot2 naprogramováno toto chování – otočí se v úhlu 90 ° doprava, popojede o 10 cm, vrátí se do původního směru otočkou o 90 ° doleva a znova se „podívá“ Ultrasonicem, jestli před ním není překážka. Pokud tam překážka není – robot jede dál rovně. Pokud tam překážku nalezne – pokračuje v pokusech jí objet.
Závěr
Ultrasonické čidlo lze používat pro detekci překážek nebo vzdálenosti. Pomocí podmínkových příkazů je pak možné naprogramovat i poměrně značně složité chování, které se bude měnit v závislosti na datech přicházejících z ultrazvukového snímače.
Data z ultrazvuku je možné využívat i při ovládání mBota2 – uživatel může ovlivňovat data odcházející z Ultrasonicu do řídící jednotky jednoduchým posouváním ruky před senzorem. Je možné pak v programu nastavit reakce například v podobě zvuků a vytvořit tak třeba i sci-fi hudební nástroj ze seriálu Star Trek – Theremin.