Vyšší odborná škola a Střední průmyslová škola, Jičín, Pod Koželuhy 100

  

Úvod

Chytrá města (Smart Cities) jsou termínem úzce spojeným s IoT (Internet of Things) a IoE (Internet of Everything). Tyto komunikační technologie pomáhají zvyšovat kvalitu života obyvatel, snižovat spotřebu energie a redukovat uhlíkovou stopu. Ve městě na ulici se běžně setkáme s domy, lampy nebo s místy na sběr odpadu. Deska byla navržena tak, aby demonstrovala přesně tuto infrastrukturu. Lampy se automaticky zapínají, ale jdou také ovládat jednotlivě manuálně. Toho se docílí pomocí relé na modulu IQRF. To zajišťuje fotorezistor, ze kterého jsme schopni hodnotu světla odečíst. Pro sběrné místo odpadu byl použit sonický senzor, čímž byla měřena vzdálenost odpadu od sonického senzoru. To indikuje plnost kontejneru. Získaná data byla shromážděna na Raspberry Pi, kde běží Node-RED – otevřená platforma pro vizuální programování. Node-RED zpracovává data v reálném čase a umožňuje vytváření přehledných dashboardů na základě získaných informací. Výše zmíněné modely, které budou na desce, byly buď vytištěny na 3D tiskárně, nebo vylaserovány na CO2 laseru.

Teoretická část

V této kapitole jsou představeny teoretické základy. Podrobně vysvětleny všechny použité technologie, které jsou nutné k vzájemnému propojení IoT sítí.

Internet věcí

Internet věcí (anglicky Internet of Things, zkráceně IoT) je síť fyzických zařízení, vozidel, objektů a spotřebičů, které jsou vybaveny senzory, softwarem a síťovou konektivitou. [1]

Historie IoT ve zkratce vycházela z myšlenky označit všechny objekty identifikátorem a připojit je do internetu a tím je spravovat. Koncept IoT byl poprvé formulován v roce 1999. Termín „Internet of Things“ byl užit Kevinem Ashtonem, který pracoval pro společnost Procter & Gamble, kde jeho hlavní mise byla zautomatizovat a zefektivnit práci. RFID čipy byly použity k monitorování zboží. Každopádně to nebylo zcela první IoT řešení. V roce 1982 na Univerzitě Carnegie Mellon bylo chtěno zjistit, zda má cenu chodit k automatu na Coca-Colu.[2] Automat byl připojen do místní sítě a byly přidány senzory. Byly poskytovány informace o stavu zásob a teplotě nápojů v reálném čase. Od té doby byl Internet věcí využíván téměř ve všech odvětvích. Průmysl, energetika, zdravotnictví, doprava, logistika, zemědělství, chytrá města či domácnosti jsou jen ukázkou, že toto téma změnilo celý svět.

Rozmach IoT dokazují i čísla. Podle statistik je aktuálně přes 18 miliard těchto zařízení a podle předpovědí toto číslo brzy přesáhne 30 miliard v následujících letech.[3] Dnešní doba ukazuje, jak mocné je spojení IoT a cloudu. Data se posílají sama do cloudu, kde se ukládají, zpracovávají a mohou být snadno použity na řešení jiných problémů. V rozvoji odvětví Big Data přichází teprve plná síla využitelnosti chytrých zařízení. Učení AI (umělá inteligence) obvyklých či neobvyklých jevů, reagování na změnu, informování na stavy, které možná nastanou bude směr kudy IoT půjde další léta.[1]

Internet věcí je zařízení, které má senzory. Pomocí nich měří různé hodnoty. V síti komunikuje pomocí síťových protokolů a pro přenos dat využívá datových protokolů. Data se posílají do systému či cloudu, kde se vyhodnocují a dále zpracovávají.

IQRF

V rámci Internetu věcí hraje technologie IQRF (Intelligent Quality Radio Frequency) významnou roli hned v několika oblastech. Jde o technologii vyvinutou českou společností MICRORISC a je chráněna několika patenty. IQRF je platforma určená pro bezdrátovou komunikaci s nízkou spotřebou energie. Přenos dat probíhá v pásmu sub-GHz (433MHz, 868MHz a pro USA 916MHz) a jde o bez licenční pásma, tudíž nevyžaduje poplatky za přenos ani jinou infrastrukturu externích operátorů.

Pro propojení se vyžívá tzv. mesh topologie. V případě IQRF se jedná o protokol IQMESH. Komunikaci zajišťují speciální transceivery. Díky spojení těchto transcieverů s mesh sítí může dosah přesahovat až stovky metrů. Síť je pak řízena koordinátorem, který řídí další nody(uzly). Pro větší sítě či cloudová řešení musí být v síti i gateway.[4]

IQMESH

„Směrovací protokol IQRF Mesh se nazývá IQMESH.“ Jde o robustní a spolehlivý komunikační protokol, který byl vyvinutý přímo pro IQRF. Byl navrženou tak, aby umožnil komunikaci velkému počtu zařízení v rámci jedné sítě. V jedné IQRF síti může být až 240 transcieverů. IQMESH tedy vytváří mesh síť, tzn. každý uzel je připojen na všechny další, co má v dosahu. Je založen na optimalizovaném zaplavení (node hopping), proto každý node může fungovat jako přenosový bod, čímž zajišťují několik cest kudy data mohou jít, pokud nějaký node selže. IQMESH je zároveň flexibilní protokol a dokáže se automaticky přizpůsobit změnám v síti.

Obrázek 1 – popis všech vlastností IQMESH [5]

Transciever

Transciever je jedno z klíčových zařízení v IQRF technologii. Zajišťuje obousměrnou bezdrátovou komunikaci. Kombinuje funkce vysílače a přijímače. Jsou to malé plošné spoje o velikosti SIM karty a umožňují přijímat i vysílat radiové vlny. Mezi nejdůležitější části patří řídící mikrokontroler s OS, Externí EEPROM paměť, senzor teploty, červená a zelená LED a několik dalších pinů, které mohou sloužit pro připojení dalších zařízení.

Obrázek 2 – Model transceiveru se schématickými popisky

IQRF OS

IQRF vyvinula pro běh aplikací svůj operační systém. Je určen pro řízení komunikace bezdrátových sítí. Obsahuje sadu předdefinovaných funkcí a umožňuje vývoj aplikací v jazyce C. IQRF OS také umožňuje řízení pomocí DPA protokolu. Tento protokol zjednodušuje ovládání jednotlivých zařízení bez větších znalostí jazyka C nebo síťových znalostí. Operační systém má na starost také plno dalších funkcí jako správa mesh sítě, automatická oprava, řízení spotřeby energie nebo bezpečnost přenosu dat. Zároveň jde o kompatibilní systém, tudíž usnadňuje integraci do různých řešení.[6][7]

DPA framework (V4.31)

Direct Peripheral Access (dále jen DPA) je součástí technologie IQRF a tvoří most mezi hardwarem, komunikací a aplikační logikou. Jedná se o komunikační protokol, který zjednodušuje vývoj či správu IQMESH sítě. Komunikace probíhá přes komunikační protokol SPI nebo UART. Uživatel je schopen prostřednictvím jednoduchých příkazů ovládat předdefinovanou periferii. IQRF obsahuje sadu funkcí s účelem zrychlit a zjednodušit práci. Pokud uživatel potřebuje vlastní funkcionalitu, může použít Custom DPA Handler. Propojení sítí probíhá přes tzv. bonding a Discovery.[8]

Struktura zprávy se skládá z 4 povinných parametrů.

  • NADR

„Node address“ je základem směrování pro IQMESH. NADR je 2-bytový parametr pro síťové adresování (tzn.16-bitový).  Přesto lze využít pouze 1 nižší byte. Vyšší byte není podporovaný. Adresy mají své významy:

0x00 = IQMESH Coordinator

0x01 – 0xEF = IQMESH Node Addresses (1-239)

0xFF = broadcast address (zpráva pro všechny nody v síti)

0xFE = temporary address (dočasná adresa, např. při bondování)

  • PNUM

„Peripheral Number“ je jednobitový parametr, který určuje jaká periferie je adresována. Podle hodnot jsou rozděleny do různých skupin:

0x00 – 0x1F = vestavěné periferie

0x20 – 0x3E = pro uživatelské periferie

0x40 – 0x7F – rezervováno IQRF

Další nejsou přístupné

  • PCMD

„Peripheral Command“ je jednobitový parametr, který pracuje společně s PNUM a definuje jakou operaci provést s danou periferií. Bit 7 je jeden z nejdůležitějších, označuje odpověď.

  • HWPID

„Hardware Profile ID“ je dvoubitový parametr, který specifikuje funkcionalitu a chování zařízení. Určuje jaká uživatelská periferie je implementována. Slouží pro ověření, kontrolu a bezpečnost. Předchází spuštění neplatných příkazů nebo nekompatibilních zařízení.

  • Volitelně PDate

„Peripheral data“ je volitelné pole s proměnlivou délkou (max. 56bytes). Nese přidaná data příkazů nebo odpovědí. Používá se pro čtení z pamětí a periferií. Na základě své délky ovlivňuje čas prostupnosti sítě.

DPA zprávy se dále dělí na DPA request, DPA Confirmation, DPA Notification, DPA Response.

FRC – Fast Response Command je vložená periferie v IQRF, která umožňuje rychlý sběr dat z několika nodu v sítí. Hlavní cíl je rychlost vybírání dat stejného typu pomocí jednoho požadavku. PNUM příkazu FRC je 0x0D.

IQRF IDE

IQRF IDE je další z ekosystému IQRF. Jedná se o mocný softwarový program, který je navržen pro efektivní vývoj, správu, programování, testování IQRF aplikací. Software nabízí mnoho funkcí, který usnadňuje vývojářům práci. Nabízí také správu IQMESH sítě, využití DPA protokolů a monitorování zařízení.  IQRF IDE nabízí user-friendly prostředí. Je vhodné pro začátečníky i pokročilé.

Bezpečnost

Bezpečnost jde ruku v ruce s operačním systémem. S novým OS přichází také vylepšené zabezpečení. Protože jde znovu o klíčový aspekt, obzvlášť, pokud jde o bezdrátovou komunikaci, proto IQRF implementuje hned několik vrstev ochrany. Rozděleny jsou do tří bezpečnostních prvků (přístupové, síťové, uživatelské šifrování) založených na standardu AES-128.[6] Tento algoritmus zajišťuje, aby byla všechna data v síti šifrována. Při přidávání nových zařízení do sítě probíhá tzn. bonding. Jde o způsob bezpečného párování. Při bondování musí být zadány citlivá data jako je NID, heslo nebo síťová adresa, proto jsou přenášena přístupovým šifrováním. Mezi některá další opatření může být datový packet opatřen kontrolním součtem nebo časovým razítkem. Dále IQRF také aplikuje různá opatření proti různým typům útoků (replay attack, man-in-the-middle).

Další zařízení

IQRF disponuje širokou škálou vývojových prostředků. Při vývoji se transceiver nemusí pájet k jinému plošnému spoji, ale stačí ho pouze zasunout do konektorů SIM. Níže budou představeny vývojové prostředky, které budou využity při této práci.

CK-USB-04a

Tento modul je vývojový a programovací prostředek určený pro práci s transceiverem zasunutým v SIM konektoru. Je vybaven malým mikrokontrolerem, který umožňuje připojení k počítači přes USB. Není vybaven akumulátorem, proto je napájen přes USB port počítače. CK-USB-04a obsahuje dvě tlačítka. První slouží pro reset transceiveru a druhé pro uživatelské použití. Může fungovat jako gateway propojující síť s PC.

DK-EVAL-04a

Tento modul je možné připojit přes piny na další periferie nebo rozšiřující vybavení. DK-EVAL-04a není vybaven mikrokontrolerem, takže ho není možno připojit k PC. Má akumulátor, který lze nabíjet. Obsahuje totožná tlačítka s CK-USB-04a. Pro zapnutí tohoto modulu je nutné propojit spínač tzv. jumper.[10]

DDC-SE-01

Při připojení na modul DK-EVAL-04a nabízí využití další senzorů. Na tomto modulu lze naleznout teplotní senzor, fotorezistor a potenciometr. DDC-SE-01 podporuje připojení dalšího zařízení přes sběrnici I2C.

DDC-RE-01

Tento modul může mít mnoho praktického využití. Je vybaven dvěma relé, která jsou schopna ovládat spotřebiče do napětí 24 V a do výkonu 12 W.  

 KON-RASP-01

Modul (Shield) vyvinutý pro použití s Raspberry pi s klíčovými vlastnostmi. Lze vložit IQRF transceiver. Modul je připojený skrz GPIO piny. Napájený skrz Raspberry pi. Pro připojení musí být Raspberry pi vypnuto, to platí i pro připojení transceiveru.[11]

IQRF SDK

QRF SDK (Software Development Kit) je platforma navržená pro jednoduchý vývoj softwarových aplikací pro zařízení s IQRF transceivery. Podporuje programovací jazyky jako Java nebo C(++) a je integrována do vývoje na zařízeních, jako je Raspberry Pi. SDK poskytuje knihovny, které usnadňují komunikaci se zařízeními IQRF přes SPI nebo GPIO.

Network service

CATS (Configurator, analyser, Tester, Scanner)

Pouze pro využití DCTR – je možno využít CATS

  • Slouží k připojení pomocí nodu k jakémukoliv nodu pomoci MID a konfigurovat ho po síti.

Komunikační protokoly

SPI

Serial Peripheral Interface je seriový periferní komunikační protokol používaný k propojení mikrokontrolérů s periferními zařízeními. SPI je synchronní protokol. Pro komunikaci je využíván hodinový signál, který zajišťuje synchronizaci mezi zařízeními. Rozděluje 2 zařízení – Master X Slave. Master generuje signál a řídí komunikaci. Slave odpovídá na požadavky. Ke komunikaci využívá 4 hlavní vodiče. Výhodou je rychlost, full-dulexní komunikace a jednoduchost. Pokud je používáno větší množství zařízení, nastane problém s počtem pinů.[12]

UART

Universal Asynchronous Receiver-Transmitter je sběrnice sloužící pro asynchronní sériový přenos dat mezi zařízeními. Jde o široce využívaný modul v mikrokontrolerech, počítačích a dalších elektronických zařízeních. Umožňuje jednoduchou výměnu dat přes sériové rozhraní bez potřeby synchronního hodinového signálu. Komunikace probíhá pomocí dvou hlavních vodičů. Tx (Transmitter) je vodič, kterým zařízení odesílá data. RX (Receive) je vodič, kterým zařízení přijímá data. Komunikace nevyžaduje sdílený hodinový signál, ale ta to musí být předem nastavena stejná přenosová rychlost (buad rate) kvůli správné synchronizaci dat. Každý datový rámec obsahuje Start bit, Datové bity, Paritní bit, Stop bit. Mezi výhody patří jednoduchost, spolehlivost díky paritnímu bitu nebo nízký počet vodičů. Na druhou stranu jde o pomalejší protokol, který vyžaduje nastavení přenosové rychlosti.[13]

Node-Red

Node-Red je velmi výkonný open-source nástroj, který usnadňuje integraci různých systémů, technologií a služeb bez nutnosti velkých znalostí programování. Propojuje hardware, API a online služby, čímž vytváří mnoho zajímavých a nových řešení. Za tímhle účelem byl vytvořen společností IBM Emerging Technology Services a v aktuálně je jednou z částí OpenJS Foundation. Programování probíhá přímo v prohlížečovém rozhraní (browser-based) pomocí drag-and-drop.[14] To dělá jednoduché zapojení mnoha uzlů pohromadě. Jde o stále vyvíjený software a díky podpoře komunity dochází k neustálému vývoji.

Využití/Praktické řešení

V IoT světě je Node-Red skvělý nástroj pro vývoj aplikací. Poskytuje snadnou správu, analýzu a automatizaci dat v reálném čase klidně od několika IoT zařízení najednou. Podporuje mnoho běžných protokolů (MQTT, HTTP) pro přenos dat mezi zařízeními a cloudem. Uživatelům umožňuje vizualizovat data a zobrazovat je pomocí dashboardů. V rámci automatizace lze nastavit mnoho pravidel, jak se má zařízení chovat v různých situací a podmínek. Data také možno ukládat do databáze, nebo odesílat přímo pro analýzu. Je ideální od použití v domácnostech, průmyslu, zemědělství tak i chytrá města.

Architektura

Node-Red je postaven na platformě Node.js. Ten je zodpovědný za zpracování událostí. Je asynchronní běhové prostředí pro JavaScript. Node-Red právě díky tomu zvládne pracovat s událostmi a asynchronními procesy. Node.js pokrývá serverovou část, která běží nezávisle na klientovi a zajišťuje stabilitu a rychlou komunikaci. GUI je webová aplikace (editor), kde vše jde řešit vizuálně. Pomocí jednotlivých nodů (uzly – funkční blok) tvořit flows (toky – řetězec, který má nějaký výsledek), které pak mají logický význam. Všechny nody, jejich propojení a data se ukládají ve formátu JSON.

Funkce a možnosti

Tento nástroj nabízí přizpůsobení různým požadavkům pomocí rozmanitých funkcí, knihoven a balíčků. Nody jsou základní stavební prvky. Jsou to pomyslné bloky kódu, které mají danou funkci. Flows jsou uspořádané sekvence kódů, které mají výsledek. Node-Red obsahuje standartní knihovnu, která má mnoho běžných funkcí. Základní vstupní a výstupní nody nebo pro debug. Pokud paleta balíčků nestačí, pak je k dispozici npm (Node Package Manager), kde snadno package nainstalovat. Například Dashboard je jednou z nich.

Bezpečnost

Node-Red nabízí řadu bezpečnostních funkcí. Při přihlášení do editoru může být nakonfigurováno přihlášení a vyžadování hesla pro přístup k tokům. RBAC je vlastnost, kterou Node-Red získal až o něco déle. Vytvoří více úrovní přístupových práv. To znamená, že některým uživatelům lze přidělit pouze omezený přístup. Přenos dat mezi klient server zajišťují protokoly TLS/SSL.[15] Dalším prvkem by mělo být správné naložení s daty. Jelikož se data ukládají ve formátu JSON, což je obvykle uloženo v souborovém systému, tak jsou snadno přístupná. Pro vyšší zabezpečení lze data ukládat do zabezpečené databáze.

Node-Red a umělá inteligence

Už v této době lze zaznamenat umělou inteligenci v Node-Red. Je možné pracovat s balíčky pro AI, které mají predikci, rozpoznávání, rozpoznávání obrazu nebo umí rozpoznat něco neobvyklého. Pokud potřebujeme naučit AI konkrétní situace, jsou zde před trénované modely. TensorFlows.js může být dotrénován, jelikož používá neuronové sítě. Cloudy v dnešní době určitě využívají AI a lze implementovat umělou inteligenci do Node-Red skrz cloudové řešení.

Raspberyy pi

Raspberry pi je malý výkonný jednodeskový počítač, který se využívá často ve vývojářských projektech, vzdělávání nebo IoT aplikací. Díky své ceně je velmi dostupný. První vznikl roku 2012 s myšlenou rozšíření znalostí o počítačové technice. Díky vlastnostem, kterými disponuje se hodil do mnoha průmyslových řešení.  

Hardware Raspberry Pi 4

Hardwarová vrstva poskytuje veškerou základní výbavu pro samostatné fungování. Základem je CPU – ARM Cortex-A72 s frekvencí až 1,5GHz. RAM paměť je dostupná ve velikostech 2GB, 4GB a 8GB (v projektu využíváno 4GB). Úložiště využívá microSD, protože nemá vlastní pevný disk. Na microSD je uložen OS a data. Pro připojení další periferii slouží 4 x USB port (2.0 a 3.0), 2 x HDMI port, Ethernet, Wifi, Bluethoot, a A/V port. Nejvýznamnější částí jsou GPIO (General Purpose Input/Output) piny, které umožňují komunikaci přímo s hardwarovými komponenty. Raspberry pi je osazeno 40 piny. Piny mají své funkce (power pins, General purpose – digitální piny, se speciální funkcí – SPI, UART I2C).[16]

Software

Na Raspberry lze nahrát mnoho operačních systémů. Oficiální se však nazývá Raspberry Pi OS a dříve byl také nazýván Raspbian. Ten je založen na linuxové distribuci Debian. Debian je jednou z nejstarších linux distribucí a je zkompilován pro procesory ARM. Pokud jde o průmyslové použití v IoT a není potřeba linux, existuje také operační systém Windows IoT Core, který je proto určen.

Možnosti využití

Raspberry Pi zvládá od primitivních až po složité operace. Proto je vhodný do spousta projektů od domácího použití po řešení projektů s umělou inteligencí. Často slouží jako server nebo řídící prvek sítě, který dokáže ovládat ostatní zařízení. V případě práce IQRF výukový simulační modul bude právě řídící prvek.

Praktická část

V této části se popisuje realizace projektu založeného na IQRF technologii. Jsou zde vysvětleny jednotlivé kroky vedoucí k dokončení práce, včetně problémů, které se během řešení objevují, a jejich vysvětlení. Pro lepší přehlednost se celý proces dělí do několika pod částí.

Výstavba IQRF sítě

Nejprve byla připravena všechna zařízení určená pro sběr dat a řízení v rámci jedné sítě. Pro tento účel bylo využito čtyř nodů a jednoho koordinátoru. Počátečním krokem bylo zprovoznění sítě, přičemž každý prvek byl nakonfigurován pro správnou komunikaci v rámci IQMESH technologie.

Obrázek 3 – fyzické modely IQRF s periferií

Úvod do projektu

Konfigurace sítě je realizována prostřednictvím softwaru IQRF IDE, který zajišťuje její kompletní správu a ovládání. Nejprve je nezbytné stáhnout vývojové prostředí z oficiálních stránek IQRF.org, následně rozbalit instalační balíček a provést jeho instalaci.

Při vytváření nového projektu je k dispozici několik možností konfigurace. Vzhledem k tomu, že základním prvkem sítě je mesh topologie, je vhodné využít předpřipravený projekt „IQMESH demo“, který obsahuje veškeré potřebné soubory a usnadňuje konfiguraci sítě.

V této práci byl využit předpřipravený projekt ze starter kitu IoT-StarterKit-01-demo, který obsahuje předdefinované knihovny a makra určená pro řízení sítě prostřednictvím DPA příkazů. Tato makra výrazně zjednodušují správu a ovládání sítě, což umožňuje efektivnější práci s IQMESH technologií.

Na úvod je nutné zdůraznit, že vytvoření IQMESH sítě představuje komplexní proces, který vyžaduje předem připravené nody pro zajištění správné funkčnosti a stability sítě. Níže je uveden postup, podle kterého byla konfigurace sítě realizována.

Nastavení transcieveru

IQRF platforma se neustále vyvíjí, a proto je nutné před konfigurací ověřit kompatibilitu zařízení a verze operačního systému, který jim bude nahrán. Plug-iny (předpřipravené hardwarové profily – HWP) určené pro nody a koordinátor, které jsou součástí ukázkového projektu, nejsou kompatibilní s novějšími verzemi OS.

V současnosti je aktuální verze transceiverového OS 4.06D, zatímco hardwarové profily obsažené v projektu jsou kompatibilní pouze s verzemi 4.00D a 4.02D. Z tohoto důvodu dochází při pokusu o nahrání plug-inu do transceiveru k chybě. Tento problém není problém řešit, existují dva jednoduché způsoby: 1 – Downgrade OS na požadovanou verzi pomocí nástroje Change IQRF OS Wizard. 2 – Stažení a použití nových kompatibilních plug-inů, odpovídajících aktuální verzi OS.

Obrázek 4 – chyba při nahrání plug-inu

Obrázek 5 – zjištění OS TR modulu

Obrázek 6 – porovnání starších DPA a nových

Nahrání HWP (i jiné konfigurace) TR modulů probíhá přes USB rozhraní, které je připojeno k programátoru CK-USB-04A. Vložení TR modulu se provádí za současného stisknutí reset tlačítka a zasunutí do SIM konektoru, aby nedošlo k poškození zařízení. Zelená LED v levém rohu v IDE bliká v případě, že zařízení je rozpoznáno a komunikuje s PC.

Obrázek 7 – připojený TR modul do CK-USB-04A

Soubor se do transceiverů nahraje kliknutím pravého tlačítko a výběru upload (také stisknutím klávesy F10). Na nody v síti se nahraje plug-in s názvem „DPA-Node-STD-7xD-V417-220224“, který řekne transceiveru, aby se choval jako Nod. Pro koordinátor je to plug-in „DPA-Coordinator-STD-7xD-V417-220224“.

Vlastnosti chování TR

Konfigurace transceiverů ovlivňuje zásadně jejich chování a výdrž. V části projektu „TR Configuration“ jsou soubory s příponou .xml, což je strukturovaný datový soubor obsahující informace o nastavení. Parametry frekvence komunikace (868 MHz) a kanálu (52) se ponechávají na výchozí úrovni. Pro všechny TR toto musí být stejné, aby došlo ke komunikaci mezi jednotlivými zařízeními. Zabezpečení je další nezbytnou podmínkou pro IQMESH, a proto je nastavováno heslo. Dále nastavení DPA:

  • Node bez připojené periferie má nejjednodušší konfiguraci.
  • Node s připojenou periferií vyžaduje nastavení custom DPA Handler.
  • Koncový Node může mít vypnuté routování (routing off) – není nutné.
  • Koordinátor zajišťuje funkci FRC pro rychlý sběr dat a má povolenou komunikaci přes SPI.

Vytvoření IQMESH sítě

Pokud zařízení byla před tím součástí jiné sítě je potřeba všechny předchozí vazby mezi nody a koordinátorem zrušit. V koordinátoru se to dělá pomocí funkce Clear All Bonds, která je v části IQMESH Network Manager. U nodů je potřeba podržet obě tlačítka naráz, poté pustit reset tlačítko(horní) a počkat, dokud nezhasne rozsvícená zelená LED. Jakmile zhasne, druhé tlačítko musí být puštěno. Úspěšné provedení signalizuje blikající červená LED na Nodu.

Bondování může proběhnout různými cestami. V této práci je využito lokálního bondování.

Obrázek 8 – náhled na IQMESH Network manager

Bondování – proces, při kterém Node získává:

  • logickou adresu,
  • network ID,
  • síťové heslo,
  • konfiguraci komunikačního kanálu od koordinátora.

V průběhu procesu Discovery se mapují nody a přiřazují jim VRN (Virtual Routing Number). Tímto krokem se také vytváří směrovací tabulka. Přejitím do záložky „map view“ lze vidět náhled sítě.

Obrázek 9 – Map View sítě

Tímto procesem je IQMESH připravená. Správně nastavenou síť lze ověřit pomocí DPA příkazu k rozsvícení červené LED diody, na kterémkoliv nodu.

Custom DPA Handler

Poslední důležitou částí jsou zdrojové kódy. Jde o kompilované programy napsané v jazyce C pro mikrokontrolery. Nazývají se „Custom DPA Handlery“ a umožňují přizpůsobit chování transceiverů. Mnoho příkladů už je vytvořeno právě od společnosti MICRORISC a lze je využít. Soubor musí být před nahráním zkompilovaný do formátu .hex.

V této výukové pomůcce je pracováno s periferními zařízeními, pro které už jsou Custom DPA Handlery napsány, tak i s periferií pro kterou bylo nutné napsat vlastní zdrojový kód.

Pro modul DDC-RE-01, který obsahuje relé lze využít „0C02_BinaryOutput-Template“, který pracuje s relé. Díky starter-kitu jsou zde i připravená makra pomocí, kterých tyto relé ovládat. Kód .c je tedy potřeba kompilovat a poté ho uploadovat do TR.

Obrázek 10 – makra Iot Stater KITu

DDC-SE-01 je druhý modul, který má především senzory. Byl zde využit stejný postup akorát jiný handler „0002_DDC-SE01“.

Senzor měření vzdálenosti – Custom DPA Handler

Zapojení ultrazvukového senzoru HC-SR04 probíhá přímým propojením s modulem DK-EVAL-04A. Tento senzor slouží jako ultrazvukový měřič vzdálenosti a umožňuje přesné měření vzdálenosti od objektů v definovaném rozsahu.

Senzor disponuje 4mi piny – VCC, TRIG, ECHO a GND. VCC připojeno na 5V což odpovídá pinu Vbat na modulu DK-EVAL-04A, GND připojeno na ground (také  pin GND), TRIG pin (Výstup) je zapojená do RA0 – což odpovídá pinu C1 na modulu. Echo je zapojen do RC5 (C8). Pro ovládání tohoto senzoru je použitý custom DPA Handler napsaný v jazyce C.[17]

// obrázek – jak bude vypadat zapojený na popelnici

Rozbor C kódu

Kód je rozdělen na více částí, které zajišťují použití DPA Frameworku, který umožňuje ovládat IQRF zařízení. V hlavičce programu jsou přidány soubory nutné pro práci s DPA protokolem. Celý kód je uvnitř funkce CustomDpaHandler() s návratovým typem funkce bit (v běžném jazyce C se používá bool (C99 + ), ale některé embedded systémy používají stále tento typ pro úsporu paměti).

Obrázek 11 – přidané soubory v hlavičce

Funkce clrwdt() je v kódu proto, aby zajistila, že mikrokontroler nebude resetován, pokud běží správně. Tato funkce resetuje watchdog timer (WDT) v mikrokontroléru. Jde o bezpečnostní mechanismus, který resetuje procesor, pokud nastane nějaká chyba. Běží neustále na pozadí.

Přepínání mezi DPA událostmi – funkce GetDpaEvent() zjišťuje jaká událost byla vyvolána. Možné události:

  • DpaEvent_Interrupt – je to metoda, která značí hardwarové přerušení, který předává CARRY jako flag(příznak), tj. speciální bit, který se používá pro určité operace – zde buď bude 1(TRUE) nebo 0(FALSE)
  • DpaEventInit – Inicializace/nastavení pinů
  • DpaEvent_Idle – Tato událost je volána, pokud zařízení je v klidném stavu nečinnosti (idle), mohlo by být využito k úspoře energie nebo například k monitorování stavu
  • DpaEvent_DpaRequest – zde je hlavní logika programu

Inicializace pinů probíhá přes registry LAT a TRIS, ty jsou součástí mikrokontroléru, který je uvnitř IQRF modulů (TR-72). TRIS určuje pinu, zda bude vstupem nebo výstupem. TRISx.y = 0; znamená že se jedná o výstup (1 by značila vstup). LAT(Latch) nastavuje výstupní logickou hodnotu – 0 = LOW, 1 = HIGH. Pokud se LAT nastaví jako vstup (TRIS = 1) nemá žádnou funkci. Tudíž funguje pouze jako výstupní pin. Pro práci s piny souvisí i PORT – čte hodnotu ze vstupního pinu. PORTx.y == 1 {}.[18]

Obrázek 12 – inicialziace pinů

Zpracování požadavků periferie je v části kódu, která obsahuje DPA požadavky související s periferií v zařízení. Nastaví se počet periferních zařízení, které budou připojené na zařízení (UserPerNr = 1). Je také přidaná do seznamu periferií a je jí přiřazené ID (PNUM_USER + 0). Potřeba je ještě HWPID a HWPIDver.

Obrázek 13 – zpracování periferie

Měření samotné vzdálenosti proběhne přes zapnutí LATA.0 = 1. Pin musí být high po dobu 10μs, toho je docíleno pomocí nop() – trvá 1μs. Poté se čeká na začátek ECHO signálu. Přepočet vzdálenosti pak vychází z fyzikálních parametrů zvuku ve vzduchu (při 20° C (343 m/s)).[19]

Obrázek 14 – zdržení pomocí operace nop

Obrázek 15 – čtení hodnoty z pinu, výpočet vzdálenosti

Vysvětlení některých pojmů

Embedded systémy – zařízení, které obsahuje mikroprocesor, paměť a I/O, má omezené zdroje, má jednu dedikovanou funkci, je to často součástí nějakého většího zařízení

Raspberry pi

Plánovaný postup práce/očekávání/problémy

Pokud síť funguje správně, pokračuje se v práci s Raspberry Pi. Postupováno bylo podle návodu od IQRF.[20]

Předpokládá se využití Raspberry Pi 4 společně s novým Raspberry Pi OS (64-bit Debian GNU/Linux 12 Bookworm). Pro začátek se provádí vypálení image na SD kartu pomocí Raspberry Pi Imageru, pokračuje se připojením periferií a základním nastavením systému.

Dále se stahují potřebné technologie pro zprostředkování a přenos dat (middleware, tedy software sloužící jako prostředník mezi aplikacemi). Provádí se konfigurace IQRF Gateway Daemon WebApp, instalace Node-Red a testování.

Během práce se objevily první problémy. Vyzkoušel se image přímo poskytnutý na IQRF, avšak při pokusu o použití Raspberry Pi 4 s Raspbian Lite (Raspberry Pi OS) se zobrazuje chybová hláška: “This board requires newer software.” Firmware již není kompatibilní s Raspberry Pi 4.

Na kartu byl vypálen nejnovější OS pro Rpi. Problém nastal hned, když na Raspberry Pi byl nahrán nekompatibilní repositář, který nebyl určen pro specifickou distribuci. Konkrétně byl použit repositář pro Debian Buster (10) stable testing, zatímco běžící distribuce byla Debian Bookworm (12). Problémy byly identifikovány při kontrole, zda služba běží, přičemž několik procesů bylo hned ukončeno. Při odstraňování problémů se zjistila záměna distribucí. Pro zajištění čistého systému byla data vymazána nejjednodušším způsobem přeformátováním karty, případně nevratným krokem pomocí příkazu sudo rm -rf /home/pi/*. Následně byla distribuce opravena na aktuální verzi dostupnou z oficiálních stránek https://repos.iqrf.org/.

Proces stažení byl opakován a provedeny kontrolní testy, které ukazovaly, že služba běží správně. Pokračovalo se ke stažení Gateway Daemon WebApp, což je webové rozhraní pro správu a řízení bezdrátové IQRF sítě. V tomto rozhraní se nastavuje rozhraní SPI pro komunikaci.[21] Po restartu služby by měla být IQRF síť přístupná skrze Network Configurator.

Zde nastal třetí problém – síť se znovu nedokázala správně načíst. Nebylo možné rozpoznat koordinátor ani načíst další zařízení. Hledání příčiny tohoto problému bylo náročné. Přezkoumání chybových hlášení ukázalo, že problém spočíval v neschopnosti načíst TR modul. Podle logů měl být problém v konfiguraci rozhraní. Hláška vypadala následovně:
Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: Error: Cannot get TR parameters msg => interface to DPA coordinator is not working – verify (CDC or SPI or UART) configuration.

Bylo zkoušeno povolení SPI jak prostřednictvím raspi-config, tak úpravou v konfiguračním souboru, nicméně problém přetrvával.[22] Po kontaktování společnosti Microrisc bylo sděleno, že nový kernel 6.x momentálně není podporován (zjištění informace uname -a), a bylo doporučeno využít starší, kompatibilní verzi.

Zde jsou ukázány další chybové logy:

journalctl -u iqrf-gateway-daemon.service -f

Jan 12 19:26:22 raspberrypi iqrfgd2[2787]: Error during opening file: No such file or direktory

Jan 12 19:26:22 raspberrypi iqrfgd2[2787]: Error during opening file: No such file or directory

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: Error: Cannot get TR parameters msg => interface to DPA coordinator is not working – verify (CDC or SPI or UART) configuration

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: Error: Interface to DPA coordinator is not ready – verify (CDC or SPI or UART) configuration

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: [IQRF Repository cache] Cache is up to date.

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: [IQRF Repository cache] Loading cache …

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: [IQRF Repository cache] Cache successfully loaded.

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: Cannot load required package for: os=”0000″ dpa=”0000″

Jan 12 19:26:26 raspberrypi iqrfgd2[2787]: Loaded package for: os=”08B1″ dpa=”0300″

Postup řešení

Při práci se postupuje podle doporučení a dokumentace MICRORISC. Pro realizaci se využívá obraz systému 2023-02-21-raspios-bullseye-arm64.img.xz, který představuje verzi Linuxu 11 (Bullseye). Systém běží na jádru verze 5.15, což je kompatibilní verze kernelu.

Obraz systému se stahuje a vypaluje na SD kartu pomocí softwaru BalenaEtcher.

Obrázek 16 – software balenaEtcher

Příprava Rpi

SD karta s vypáleným obrazem systému se vkládá do Raspberry Pi. Současně se připojuje napájecí zdroj, který by měl poskytovat napětí přibližně 5 V a proud přibližně 3 A. Používá se zdroj kompatibilní s modulem, aby se předešlo poškození zařízení. Dále se připojuje zobrazovací zařízení (displej), na kterém se bude pracovat, a k Raspberry Pi se připojuje ethernetový kabel pro připojení k síti. K správě systému se připojují také myš a klávesnice.[8]

Aby se předešlo vkládání IQRF modulu KON-RASP-01 za běhu zařízení, což je podle dokumentace nevhodné, připojuje se modul předem.[11]

Obrázek 17 – funkce GPIO pinů [23]

GPIO piny jsou chráněny pomocí analogového spínače, což minimalizuje riziko jejich poškození. Pro komunikaci s transceivery využívá IQRF SPI rozhraní, přičemž Raspberry Pi je implementováno jako SPI slave.

Obrázek 18 – vložení KON-RASP-01 [11]

Konfigurace Rpi

Výchozí konfigurace pro ukázku se nastavuje s přihlašovacími údaji: user=pi, password=Raspberry. Následně je potřeba systém aktualizovat na aktuální verzi pomocí příkazu sudo apt-get update && sudo apt-get -y full-upgrade.

SPI

Pro povolení SPI rozhraní se upravuje konfigurační soubor příkazem sudo nano /boot/config.txt. V tomto souboru se od komentuje řádek dtparam=spi=on, tím se rozhraní povolí. Aby se změny projevily, je nutné systém restartovat příkazem sudo reboot.

MQTT

Instalace MQTT brokera na Raspberry Pi. Message Queuing Telemetry Transport (MQTT) je komunikační protokol navržený pro zařízení s omezenými zdroji a nízkou šířkou pásma. Slouží jako prostředník mezi klienty, kteří posílají nebo přijímají zprávy. Tento protokol nachází široké uplatnění v IoT sítích, kde jsou data zpracovávána brokerem, monitorována a zobrazována uživateli.[24]

Pro práci je možné vybírat z mnoha dostupných brokerů. V tomto prostředí se pracuje s Mosquitto, což je open-source řešení (další možnosti HiveMQ, Eclipse MQTT). Standardní komunikační port MQTT je 1883.

Instalace samotné služby tedy zajišťuje funkci MQTT serveru. Po instalaci se broker spustí automaticky jako systémová služba. Download proběhne spuštěním příkazu – sudo apt-get install -y mosquitto mosquitto-clients. Důležité je, aby instalace proběhla bez chyb a mosquitto fungoval – systemctl status mosquitto.service – ověření služby. Pokud by bylo potřeba nastavit jiná nastavení, potom se musí přes hlavní konfigurační soubor (Nastavení portů, zabezpečení, anonymní přístup).

IQRF Gateway  Daemon

Softwarový proces běžící na Linuxu umožňuje komunikaci mezi IQRF sítěmi a externími aplikacemi. Na Linuxu je Daemon proces navržený tak, aby běžel na pozadí bez přímé interakce s uživatelem. Jeho úkolem je poskytovat služby nebo vykonávat specifické úlohy kontinuálně nebo na požádání. IQRF Gateway Daemon monitoruje a spravuje komunikaci mezi transceivery. IQRF Gateway jsou fyzická zařízení vybavená softwarem, která propojují IQRF síť s dalšími systémy. Slouží jako most mezi bezdrátovou sítí IQRF a systémy, jako jsou MQTT nebo HTTP.[25]

Před instalací samotné služby je nutné přidat některé balíčky, bez kterých by instalace nebyla možná. Mezi tyto balíčky patří správce klíčů, které umožňují komunikaci s keyservery a správu GPG klíčů. Klíče zajišťují, že balíčky z repositáře jsou ověřené a bezpečné pro použití. Následně se přidává nový repositář odpovídající verzi distribuce, který je dostupný na oficiálním IQRF webu. Po přidání repositáře je vhodné aktualizovat seznamy balíčků a provést instalaci samotné služby příkazem: sudo apt-get update && sudo apt-get install -y iqrf-gateway-daemon. Po instalaci je potřeba ověřit, že služba funguje správně.

Obrázek 19 – výběr repozitáře shodný s distribucí [26]

IQRF Gateway Daemon WebApp

Pokud je služba active (running), pokračuje se instalací další části, kterou je webová aplikace IQRF Gateway Daemon WebApp. Jedná se o webové uživatelské rozhraní určené pro správu sítě, konfiguraci gatewaye, diagnostiku a monitorování.

Hlavní funkcí této aplikace je konfigurace brány, která umožňuje definovat mapování mezi transceiverem a kontrolérem. Přizpůsobuje komunikaci pomocí parametrů SPI a UART. Aplikace nabízí také vzdálený přístup přes webový prohlížeč a možnost správy přístupů pro více uživatelů.

Pro instalaci IQRF Gateway Daemon WebApp je nutné mít aktivního Daemona, který slouží jako backend pro WebApp. Instalace aplikace se provádí příkazem: sudo apt-get install -y iqrf-gateway-webapp. Po instalaci je aplikace dostupná prostřednictvím adresy http://localhost nebo http://127.0.0.1. Localhost je označení pro počítač, na kterém běží aplikace nebo proces, a používá se pro testování bez potřeby připojení k externí síti.

Při prvním vstupu do webového rozhraní je nutné vytvořit credentials neboli přístupové údaje. Aby modul, na kterém je připojen transceiver, mohl správně komunikovat přes SPI je potřeba nastavit komunikační rozhraní. Pro výchozí pozici modulu lze využít předpřipravený modul KON-RASP-01, který má defaultní hodnoty. Pro „Power enable GPIO pin“, který má účel ovládání napájení transceiveru, musí být aktivováno nastavení tohoto pinu na logickou hodnotu 1 (GPIO pin 23).   Další „Bus SPI GPIO pin“ je využíván jako součást SPI komunikace. Je potřebné zajištění správné konfigurace, aby mohl IQRF modul a Rpi komunikovat prostřednictví SPI (GPIO pin 7). Poslední  „Programming Mode Switch GPIO Pin“ je zodpovědný za přepínání modů transceiveru.

Obrázek 20 – Nastavení SPI interface

Aby se změny projevily, je nutné restartovat službu. To se provádí v nastavení gatewaye v sekci Daemon – Restart.

Obrázek 21 – Služba Daemon ve webovém rozhraní

Správná funkčnost systému se ověřuje prostřednictvím Network Manageru. V sekci zařízení jsou zobrazovány všechny přibondované nody, což umožňuje snadnou kontrolu připojení. Pomocí tlačítka Indicate Coordinator se aktivuje červená LED na koordinátoru, která začne blikat a potvrzuje správnou komunikaci. Webová aplikace (WebApp) zároveň poskytuje možnost odesílání DPA příkazů, což umožňuje nejen ověřovat funkčnost, ale také efektivně spravovat celou síť. Na závěr se provádí restart Raspberry Pi. Pokud služba naběhne i po novém spuštění, potvrzuje se správná funkčnost systému.

Obrázek 22 – Sekce zařízení v Netowrk manager

Node-RED

Node-RED je vizuální prostředí ideální pro IoT a automatizační aplikace. Nabízí snadné vizuální propojení komponent a datových toků, přičemž běží na Node.js. Při instalaci na Raspberry Pi je potřeba zajistit přítomnost dalších balíčků. Klíčovým nástrojem je curl, který slouží pro stahování obsahu z internetu. Ten se instaluje příkazem: sudo apt-get install -y curl. Pro instalaci Node-RED se využívá skript, který se spouští příkazem: bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered). Tento skript provádí několik důležitých kroků: Odstraňuje starou verzi Node-RED, pokud je již nainstalována. Kontroluje a aktualizuje instalaci Node.js. Instaluje Node-RED pomocí npm (Node Package Manager – správce balíčků pro Node.js). Nastavuje základní konfigurační soubor dle uživatele.

Zajištění automatického spuštění při startu systému je potřeba provést povolení: sudo systemctl enable nodered.service a sudo systemctl start nodered.service.

Pro práci s Node-RED je potřeba doinstalovat některé z dalších palet nodů. Jednou z nich je node-red-dashboard, která umožňuje vytváření uživatelského rozhraní pro vizualizaci dat. Toto rozhraní je po instalaci přístupné na adrese http://localhost:1880/ui. Instalace node-red-dashboard se provádí přímo v prostředí Node-RED prostřednictvím správy palet nebo lze i příkazem v terminálu.

Od IQRF je dostupný starter-kit, který usnadňuje integraci Node-RED do IoT projektů. Součástí starter-kitu jsou šablony pro Node-RED, které umožňují vizualizaci dat z IQRF zařízení. Díky přiloženým modulům je zajištěna komunikace mezi Node-RED a IQRF přes MQTT. Repositář starter-kitu se klonuje z GitLab do domovské složky na Raspberry Pi pomocí příkazu: git clone https://gitlab.iqrf.org/alliance/iot-starter-kit.git. Tím se vytvoří nová složka iot-starter-kit, která obsahuje všechny soubory z repositáře. Tyto soubory je následně potřeba zkopírovat do adresáře s konfigurací Node-RED, konkrétně do složky: /home/pi/.node-red. V závěru restart Node-Red pro načtení nových změn.
Celý postup:

cd /home/pi

git clone https://gitlab.iqrf.org/alliance/iot-starter-kit.git

cd iot-starter-kit/install

cp rpi-board/node-red/* /home/pi/.node-red

sudo systemctl restart nodered.service

Pokud je služba správně spuštěná (lze ověřit pomocí systemctl status nodered.service), na adrese http://localhost:1880 by měly být viditelné připravené IQRF flows pro komunikaci. V případě, že IQMESH síť funguje, jednotlivé nody komunikují s koordinátorem, který následně komunikuje s Raspberry Pi. Daemon pracuje ve spojení s MQTT a Node-RED. Pokud jsou všechny tyto komponenty správně propojeny a funkční, měla by být data zobrazena na dashboardu dostupném na adrese http://localhost:1880/ui.

Obrázek 23 – Node-Red dashboard s daty ze sítě

Tvorba flows a dashboardu

Celý proces je založen na konfiguraci nodů v prostředí Node-RED. Funkčnost jednotlivých nodů a flows bude vysvětlena na konkrétních ukázkách. Flows jsou tvořeny třemi záložkami.

Popis začíná záložkou IQRF Overview.

Dashboard IQRF Overview slouží k přehledu IQRF zařízení, ke kterým jsou připojeny moduly s rozšiřující periferií. V tomto případě se jedná o nody s modulem DDC-SE-01 a dva moduly s relé DDC-RC-01.

Obrázek 24 – Node Red IQRF overview

Nastavení správné adresy nodů

V dolní části rozhraní, označené „ADDRESS SET – UI“, se provádí nastavení logické adresy nodu. Používají se následující nody:

  • Inject – při startu nastaví výchozí adresy.
  • UI_numeric – součást knihovny Dashboard, umožňuje ruční nastavení hodnoty.
  • Function – ukládá adresu do globální proměnné pomocí global.set(‘DDC-RE2’, msg.payload);.

Horní část flow slouží k odeslání zpracovaných dat do MQTT out:

  • Inject – každých 5 sekund provádí aktualizaci pro kontrolu dat.
  • Function – získává adresy z globální proměnné a následně pracuje s IQRF DPA API, což umožňuje ovládání zařízení v síti.

var adress=global.get(“DDC-RE”);

var reqeuest=

{

    “mType”: “iqrfBinaryoutput_SetOutput”, //typ zprávy jaké operace se provádí, odlišení zpráv, aby se zpracovaly odpovídajícím způsobem

    “data”: {

        “msgId”: “IQRFdemo”, //zde se nastavuje msgId pro oddělení různých typů zpráv a přehlednosti

        “req”: {

            “nAdr”: 1,  //výchozí adresa

            “param”: {

                “binOuts”: []

            }

        },

        “returnVerbose”: true

    }

};

reqeuest.data.req.nAdr=adress; //nastavení ručně nastavené adresy

msg.payload=reqeuest; //uložení do msg

return msg;

  • Link out – propojuje více flows bez nutnosti přímého propojení dráty. V tomto případě posílá data do MQTT.

Prostřední část flow bude popsána později. Nyní se zaměříme na část Connection (MQTT).

Připojení k MQTT brokeru

Obrázek 25 – Node Red Connection MQTT

Sekce Connection (MQTT) zajišťuje připojení k MQTT brokeru a zpracování zpráv ze/do systému IQRF.

Přehled hlavních nodů:

  • Link in – umožňuje propojení více flows bez přímého propojení drátem.
  • MQTT out – odesílá zprávy do brokeru. Nastavují se parametry:
    • Adresa serveru: 127.0.0.1:1883
    • Topic: iqrf/DpaRequest (určuje, že zprávy jsou směrovány do IQRF)
    • QoS (Quality of Service) – potvrzení doručení zprávy
  • MQTT in – naslouchá zprávám na MQTT brokeru (127.0.0.1:1883). Při přijetí zprávy ji předává jako msg.payload, topic, qos.
  • JSON – převádí přijatá data z formátu JSON na objekt JavaScriptu.
  • Link out – odesílá zpracovaný objekt zpět do IQRF Overview, kde dochází k dalšímu filtrování a zpracování dat.

Směrování zpráv v sekci IQRF Overview

V této části dochází k podmíněnému směrování zpráv a jejich filtrování podle specifických kritérií.

  • Switch – provádí směrování zpráv na základě hodnoty msg.payload.data.msgId, pokud msgId == “IQRFdemo”, zpráva je dále zpracována. Tento mechanismus umožňuje rozpoznání zpráv IQRF a jejich odlišení od ostatních MQTT zpráv.
  • Switch 2 – filtruje adresy nodů na základě payload.data.rsp.nAdr. Propouští pouze zprávy odpovídající dané globální proměnné (například DDC-RE2). Tento krok zajišťuje, že systém pracuje pouze s daty ze specifických zařízení.
  • Switch 3 – rozděluje zprávy podle hodnoty msg.payload.mType, která určuje typ prováděné operace. Pro DDC-SE (senzorové zařízení):
    • “iqrfSensor_ReadSensorsWithTypes” – určuje čtení hodnot senzorů IQRF.
    • “iqrfEmbedThermometer_Read” – identifikuje čtení teplotních dat z IQRF Embed Thermometer.
  • Link out – přeposílá filtrované zprávy do poslední sekce IQRF DEMO, kde probíhá jejich konečné zpracování.

IQRF DEMO

Obrázek 26 – Node Red IQRF DEMO

Záložka IQRF DEMO obsahuje několik function nodů v kombinaci s dashboard nody z knihovny node-red-dashboard. Function nody provádějí selekci dat a dále pracují se strukturou DPA handleru.

Klíčovou roli hrají parametry hwpId, které určují ovládání výstupů pro různé typy zařízení a podle indexů identifikují jednotlivé komponenty modulů.

  • Pro DDC-SE modul jsou senzory ukládány do pole sensors, přičemž každý senzor má svůj specifický index.
  • Pro DDC-RE modul function node ukládá přijatou hodnotu a vytváří požadavek na změnu stavu binárního výstupu. Indexy určuje, které relé má být výstupem.

Tento mechanismus umožňuje efektivní zpracování dat a následné ovládání připojených IQRF zařízení v prostředí Node-RED.

var stateOfRel=msg.payload;

msg.payload={

“mType”: “iqrfBinaryoutput_SetOutput”,

“data”: {

“msgId”: “IQRFdemo”,

“req”: {

 “nAdr”: 2,

“param”: {

“binOuts”: [ {

“index”: 1,

“state”: true }

]}},

“returnVerbose”: true

}

};

msg.payload.data.req.param.binOuts[0].state=stateOfRel;

msg.payload.data.req.nAdr=global.get(“DDC-RE”);

if (global.get(“DDC-RE-hwpId”)===3074) {

 msg.payload.data.req.param.binOuts[0].index=3; }

if (global.get(“DDC-RE-hwpId”)===18434) {

msg.payload.data.req.param.binOuts[0].index=1; }

return msg;

Zpracování hodnot v UI nodech

Zpracování hodnot – pracují s proměnnou {{value}}, která obsahuje aktuální data.

Vizualizace – zobrazují hodnoty senzorů nebo stav výstupů zařízení. (chart, gauge)

Ovládací prvky – umožňují interakci s IQRF zařízeními, například změnu stavu binárních výstupů nebo nastavení parametrů.

Díky propojení s function nody UI nody přehledně zobrazují zpracovaná data a umožňují jejich řízení v reálném čase.

Tvorba Node-Red pro sonický senzor

Pro správnou komunikaci je nezbytné porozumět fungování IQRF Gateway Daemon API. V případě, kdy není využíván IQRF standard, je nutné použít IQRF Generic API, což je univerzální formát pro přenos dat přes MQTT do IQRF sítě.[27]

Pro odesílání DPA příkazů se využívá IQRF raw formát. Struktura Request/Response je zapisována do pole rData, přičemž jednotlivé hodnoty jsou rozděleny na dvojbajtové sekvence, které jsou odděleny tečkou. Tento formát zajišťuje konzistentní a správný přenos příkazů v rámci IQMESH sítě.

  • nAdrL . nAdrH . PNUM . PCMD . HWPID_L . HWPID_H . PData

Obrázek 27 – ukázkový příklad z dokumentace IQRF[27]

Pro správné sestavení DPA příkazu je nutné dodržet přesnou strukturu a odpovídající hodnoty.

Pokud je node umístěn na adrese 1, první bajt (nižší byte) bude obsahovat hodnotu 01. Následně se nastaví: PNUM – uživatelská periferie s hodnotou 20, PCMD – nastavena na 00, HWPID – univerzální hodnota FF.FF.

Výsledný příkaz bude vypadat takto: “rData”: “01.00.20.00.FF.FF”. Tento příkaz je následně vložen do funkce, která je připojena k link out, odkud se odešle na MQTT out.

Obrázek 28 – označené uzly, které byly přidány pro HC-SR04

Zpětná odpověď přichází prostřednictvím MQTT in na topicu Iqrf/DpaResponse. Odpovědní pole rsp.rData obsahuje DPA rámec s výsledkem, včetně dvou bajtů pro data z CustomDpaHandleru.

Filtrování je potřeba na základě msgID – používá se IQRF DEMO jako identifikátor a typu zprávy (mType) – na základě iqrfRaw se data odesílají do funkce, která provádí parsování pro dashboard.

Obrázek 29 – přidaná část do záložky IQRF DEMO

Obrázek 30 – Parsování dat pro dashboard

Obrázek 31 – Ukázka mType možností

Obrázek 32 – výsledek zobrazený v Node-Red

Návrh desky

Při tvorbě návrhu desky bylo nejprve nutné promyslet celkový návrh a rozložení jednotlivých prvků, aby byla efektivně demonstrována funkčnost chytré ulice. Za tímto účelem byl využit generativní nástroj ChatGPT pro vytvoření počáteční vizuální podoby, která sloužila jako základní návrh, který poukázal na, že toto řešení je všestranné, řeší obecný problém a je možné implementovat na jakýkoliv problém.

Následně byla přepracována úprava v inkscape. Nástroj pro tvorbu vektorové grafiky. Ve webové aplikaci Canva byly upraveny texty a vylepšena vizuální stránka návrhu. SVG soubor byl pak nahrán do programu K-40 Whisper, který pracuje s laserem. Tímto způsobem vznikla deska.

Obrázek 33 – K40 whisper návrh řešení

Při návrhu byly využity schémata modulů z datasheetů z IQRF za účelem lepší demonstrace prvků. Důležitým aspektem bylo také promyšlení způsobu, jakým bude na desce vizuálně znázorněna bezdrátová komunikace, jelikož tato technologie není přímo viditelná. Byla znázorněna přerušovanou čarou. Deska byla také doplněna o grafické prvky pro lepší pochopení studentů.

3D tisk

Pro lepší efekt fyzické podoby byl využit 3D tisk, který demonstruje lampy, kontejner a umožňuje uchycení modulů na desku.

Moduly byly staženy z printables.com, cults3d.com a bylo s nimi nakládáno dle licencí.

  • Lampa – autor Nikki, streetLamp [29]
  • Kontejner – autor CosyMaker79, GarbageBin [30]
  • Držák na boxy – autor Tbah, remixovaný IQRF box [31]
  • Držák na display s uchycením řídící jednotky – autor hallbraden, drzak [32]

Skládání finálního modelu

Při skládání všeho dohromady přišlo na propojení hardwaru samotného IQRF se zbytkem. K modulu DK-EVAL-04A se připojí druhý modul, který obsahuje relé (DDC-RE-01). Jak relé ovládat bylo vysvětleno výše. To samé se provede i s modulem se senzory(DDC-SE-01). Vše se dá na určené místo.

DDC-SE-01 nepotřebuje jinou periferii na připojení, proto stačí když bude takto samostatně. Reprezentovat může bytový dům, kde se sleduje teplota, na večer při tmě se mohou rozsvítit světla nebo pomocí potenciometru upravovat intenzitu světel či řídit průtok klimatizace.

Zapojení lamp, které jsou schopny reagovat na stav relé je potřeba LED, rezistor 220omů. Pro spojení komponent bylo je potřeba správně spájet, aby vydrželi při horší manipulaci, například při usazovaní na desku.

Displej zapojení

Pro připojení displeje je potřeba plochý kabel (15 pinový) a napájecí kabely. Jelikož je snaha o co největší ušetření infrastruktury, proto se bude napájet displej přímo přes GPIO pinů. 5V z Rpi na pinu 2 a GND na pinu 6. Plochý kabel se připojí k Raspberry a displej funguje. [33]

Obrázek 34 – finální testování displeje se světly

Závěr

Tato práce se zabývala vytvářením výukové desky simulující infrastrukturu „Smart city“. Problematikou takovýchto měst jsou optimalizace spotřeby energie a zlepšení kvality života obyvatel. Práce umožňuje ovládání inteligentního veřejného osvětlení, sledování zaplnění odpadu v kontejnerech nebo měření teploty v uzavřených prostorách. Integrace IQRF se postarala o efektivní (spolehlivý) sběr dat, která byla zpracována a vizualizována.

Výsledkem práce je nejen funkční model chytrého města, ale také podrobná dokumentace, která usnadňuje pochopení tohoto tématu ve více podobách. Ať už je to pochopení světa „Internetu věcí“ obecně nebo samotné technologie IQRF.

Tento model poukazuje pouze na malou část tohoto obrovského tématu. Další vývoj by se mohl zaměřit na další integraci chytré infrastruktury či dokonce zapojení prvků strojového učení pro prediktivní údržbu chytrého města.

 


KATAPULT CHALLENGE

Video bylo úspěšně nahráno.