Hlavní navigace

Bezdrátový přenos s IQRF: komunikační protokol DPA

25. 5. 2016
Doba čtení: 4 minuty

Sdílet

Zařízení v síti IQRF lze velmi snadno řídit a získávat z nich data. Pro tento účel byl vyvinut protokol DPA, který přinesl významné zjednodušení této komunikace.

Protokol DPA

Protokol DPA – Direct Peripheral Access – je jednoduchý bajtově orientovaný protokol pro řízení služeb a periferií zařízení v síti IQRF.

V transceiverech IQRF můžete najít tři základní vrstvy. Základem je operační systém, který je v transceiverech nahrán již z výroby a je možné jej na straně uživatele jednoduše aktualizovat.
Nad operačním systémem je vrstva DPA, která obsahuje připravené plug-in soubory, které jsou dávány k dispozici výrobcem. Jsou to tzv. HWP – hardware profiles. Nahráním zvoleného hardwarového profilu uděláte z transceiveru IQRF například Koordinátor nebo Nod.
V třetí vrstvě může být tzv. Custom DPA Handler, což je kompilovaný program psaný v jazyce C, pomocí kterého lze přizpůsobit chování transceiveru.

Často není potřeba ani žádný Custom DPA Handler vytvářet nebo modifikovat, protože pro žádanou funkcionalitu stačí pouze využívat operační systém spolu s funkčností HWP. 

Pomocí protokolu DPA lze na transceiver zasílat příkazy jednoduše v přesné struktuře, snadno se oslovují jeho periferie a zasílají se na ně specifické příkazy.

Struktura DPA příkazu

Podrobnou dokumentaci k protokolu DPA najdete na webu.

NADR

Síťová adresa zařízení

PNUM

Číslo periferie

PCMD

Příkaz pro příslušnou periferii

HWPID

Identifikace hardware

PDATA

Volitelná data

Pole NADR (2B) – síťová adresa – může obsahovat hodnoty 0×00 (Koordinátor), 0×01 – EF (adresy Nodů), 0×FF (broadcast), 0×FE (dočasná adresa), 0×FC („local device“), ostatní adresy jsou rezervované.

Pole PNUM (1B) – číslo periferie – např. 0×02 – OS, 0×03 – EEPROM, 0×04 – EEEPROM, 0×05 – RAM, 0×06 – LEDR, 0×07 – LEDG, 0×08 – SPI, 0×09 – IO, 0×0A – teploměr, 0×0D – FRC, 0×20–6F – uživatelské periferie.

Pole PCMD (1B) obsahuje kód příkazu, který přísluší zvolené periferii. Může obsahovat hodnoty 0×00‑0×3E.

Pole HWPID (2B) slouží k filtrování cílového hardware. V případě, že je zde uvedena hodnota 0×FFFF, tak k filtrování nedochází.

Pole PDATA může obsahovat až 56 bajtů uživatelských dat (v aktuální DPA verzi).

Odeslání DPA příkazu

DPA příkaz v prostředí IQRF IDE lze odeslat pomocí pop-up menu, makra, či ručně nastavením jednotlivých částí příkazu.

Jednoduché odeslání DPA príkazu přes pop-up menu

Jedním z nejjednodušších příkazů pro ověření funkčnosti cílového Nodu je zapnutí/vypnutí červené LED, kterou obsahuje (TR modul). To lze provést zvolením příslušného příkazu v kontextové nabídce zvoleného Nodu.

V přehledném zobrazení IQRF sítě (IQMESH Network Manager – Map View) zvolíte libovolný Nod, kliknete na něj pravým tlačítkem myši a zvolíte příslušný příkaz (LED Red On/Off/Pulse).

Pokud chcete na zvolený Nod odeslat jiný příkaz, který máte aktuálně nastaven v terminálu DPA Test – Data to send, a chcete k tomu využít názorné topologické zobrazení, kliknete na zvolený Nod pravým tlačítkem myši a vyberete příkaz Send Packet from DPA Test. Síťová adresa v DPA paketu se nastaví podle zvoleného Nodu.

DPA příkazy skryté v makrech

Makra slouží ke zjednodušení práce s DPA příkazy. Pod tlačítky maker jsou uloženy DPA příkazy, které lze kdykoli aplikovat. V balíčku Start-up package je připraven soubor DPA-macros.iqrfmcr (název odpovídá aktuální verzi). Lze jej najít v umístění /Examples/DPA/StartUp.

Tento soubor je možno importovat do projektu v IQRF IDE a využít již připravených příkladů (demo projekt má tato makra již importována). Jsou zde připravená makra pro bondování Nodů, zjištění počtu Nodů v síti IQRF, odbondování všech Nodů, nastavení pinů na vstup/výstup, zapnutí/vypnutí určitých pinů, zjištění teploty, vytvoření FRC příkazu a další.

K jednotlivým tlačítkům maker jsou přiřazeny příslušné příkazy, které si uživatel může měnit i tvořit nové.

Pokud chcete tedy zaslat zvolený příkaz skrytý pod některým z tlačítek v oblasti maker, stačí kliknout na příslušné tlačítko, upravit v terminálu DPA Test síťovou adresu cílového transceiveru (NADR) a příkaz odeslat stisknutím tlačítka Send. V případě nastavení síťové adresy na FF (hexadecimálně) se jedná o broadcast a příkaz bude zaslán všem Nodům v síti IQRF.

Vlastní sestavení DPA paketu

V prostředí Terminal – DPA Test lze nadefinovat DPA paket. NADR nastavte na adresu cílového transceiveru, zvolte periferii v políčku PNUM (např. 0A – Thermometer), zvolte příslušný příkaz PCMD (pro periferii Thermometer znamená příkaz 00 – Get temperature), nadefinujte pole HWPID (FFFF znamená nefiltrování hardware), případně nadefinujte PDATA (pro získání teploty z transceiveru není třeba definovat žádná další uživatelská data). Při sestavování částí DPA příkazu lze využít kontextové nabídky.

Výsledný paket – např. pro získání teploty z Nodu se síťovou adresou 01 vypadá takto:
0001 0A 00 FFFF – odešlete na cílové zařízení.

Komunikaci lze vidět v okně Terminal Log, případně detailní strukturu DPA paketu v okně Packet Inspector. V následující ukázce v okně Terminal Log je vidět vyvolaná komunikace z řídicí aplikace, potvrzení od Koordinátoru a odpověď od Nodu, kterému byl dotaz na teplotu zaslán. V okně Packet Inspector je vidět, že byla detekována teplota 26 °C.

Linux tip

Na webu technologie IQRF najdete podrobnou dokumentaci k protokolu DPA. Dále jsou zde k dispozici názorná vysvětlující videa.

V příštím díle se podíváme blíže na využití programové nadstavby Custom DPA Handler, pomocí které lze přizpůsobit chování transceiverů.

Autor článku

Má za sebou patnáctiletou praxi ve školství, dnes pracuje pro firmu IQRF Tech a IQRF Alliance a má na starosti akademický program IQRF Smart School zaměřený na podporu vzdělanosti mládeže v oblasti technologie IQRF.