Aplikace A20 komunikace mezi micro:bity “peer to peer”

Nyní pár lekcí přeskočíme, abychom mohli doplnit pár základů a v lekci A20 si ukážeme, jak nastavit komunikaci a posílat informace z jednoho microbitu na další. Ukážeme si přenos textové informace a přenos dat z teploměru a senzoru pohybu.

název: A20 komunikace mezi micro:bity “peer to peer”
kategorie: A začátečníci
ref.číslo: A20
projekt: kurz micro:bit
verze: 01, 2017-06-20
autor: Jaromír Hubálek, Brno


V této lekci si ukážeme, jak nastavit komunikaci a posílat informace z jednoho microbitu na další. Ukážeme si přenos textové informace a přenos dat z teploměru a senzoru pohybu. Programování takové komunikace je nutné dělat v jazycích, které mají příkazy pro radio. Uvedené ukázky byly provedeny v JavaScript Blocks Editoru.

Protože je microbit vybaven bezdrátovou komunikací s protokolem bluetooth, může kromě posílání příkazů na smart zařízení jako chytré telefony či tablety, komunikovat mezi sebou. Tato takzvaná „peer to peer“ komunikace funguje podobně jako po drátě, tj. jedno zařízení vyšle zprávu na určitém kanálu a všechna zařízení poslouchající na stejném kanálu tuto zprávu přijmou.

Pro nastavení kanálu se použije funkce „set group“, který musí být uveden v programu vysílacího i všech přijímacích. Začátek programu pak vypadá takto:

Tato část zajistí při spuštění programu inicializaci, nastavení kanálu číslo 2 a lze sem vložit další potřebná nastavení včetně nulování proměnných či smazání displeje.

Jak jsme již uvedli, budeme chtít přenášet informace o teplotě a z pohybového senzoru, proto vysílací zařízení bude obsahovat funkce na uložení teploty do proměnné „teplota“ a hodnotu z pohybového senzoru do proměnné „vibrace“. Proměnnou X bude lepší nastavit na sílu „strength“.

Dále si ukážeme funkce pro odeslání textového řetězce a pro čísla. Jsou to funkce radio send string a radio send number.

Celý program v blokovém editoru pak postupně musí zajistit přenos potřebného textu a čísel v následující posloupnosti:

Výsledný program vygenerovaný editorem bude v Java scriptu vypadat následovně:

U přijímače bude situace výrazně odlišná. Stejná bude pouze inicializace, kdy nastavíme stejný kanál, na kterém bude zprávy přijímat. Navíc musíme vynulovat počítadlo paketů index.

Protože protokol bezdrátového přenosu vysílá data po paketech, přičemž každý paket obsahuje textovou nebo numerickou část, je nutné přijímat data postupně a rozdělit dle pořadí příjmu. Z toho důvodu do funkce „on radio recieved“ musíme dát podmíněné příkazy a počítat počet přijatých paketů, čímž můžeme snadno rozdělit zprávu do různých proměnných, se kterými poté můžeme dle potřeby pracovat. Tímto vlastně nastavujeme vlastní protokol zprávy, kterou přijímáme, a musí souhlasit s protokolem vysílače. Náš protokol je „text-text-číslo-text-text-číslo-text“. Postupně tak naplníme proměnné pro text a proměnné pro čísla. Po načtení posledního paketu musíme počítaní paketů vynulovat, tj. vynulovat proměnnou index. Protože se tato proměnná zvyšuje o 1 na konci funkce, musí se vynulovat nastavení do -1 v poslední podmínce IF.

Nakonec v neustále dokola běžící funkci forever můžeme zobrazit ve stejném pořadí jednotlivé proměnné, které se vždy změní, až když dojde k přijmutí nové zprávy.

Výsledný Java script bude poměrně dlouhý, jak je uvedeno níže.

Scroll to Top