O veciach

čo je to vec v IoT, cyklus Sense-Think-Act v prostredí IoT, mikroprocesoroch, mikrokontroléroch, počítačoch, o mikrokontroléri RPi Pico WH a jazyku MicroPython, senzory a akčné členy, prípadová štúdia chytrého vývozu smetí, odporúčania pri návrhu riešení, veci ako stavový stroj

Záznam z prednášky

Úvod

  • (slide) Naposledy sme sa rozprávali o tom, čo je to IoT a povedali sme si, že budeme rešpektovať túto opisnú charakteristiku:

    The Internet of Things (IoT) is a system of interrelated computing devices, mechanical and digital machines, objects, animals or people that are provided with unique identifiers and the ability to transfer data over a network without requiring human-to-human or human-to-computer interaction. – by iotagenda

  • Dnes sa budeme venovať veciam - označované v terminológii IoT ako things. Vec je hmotná. Z pohľadu opisnej charakteristiky sú použité spojenia ako:

    • počítačové zariadenie (computing device),
    • mechanické zariadenie (mechanical machine)
    • digitálne zariadenie (digital machine)

    ale ide ďalej a hovorí, že sú to rozličné predmety, dokonca zvieratá a ľudia. Samozrejme musia byť vybavené prvkami, ktoré umožňujú týmto zariadeniam komunikovať.

  • (slide) Obecne teda môžeme povedať, že vec:

    • má svoju fyzickú reprezentáciu,
    • je jednoznačne identifikovateľná,
    • má riadiacu jednotku,
    • obsahuje senzory a akčné členy,
    • vie komunikovať.
  • (slide) V oblasti IoT existujú variácie robotickej paradigmy typu Sense, Think, Connect, Act alebo Sense, Infer, Act, ale v princípe sú si veľmi podobné. Čo je však dôležité, obsahujú časť pre komunikáciu.

    Sense Think Act Cycle [@s22]
  • O jednotlivých komponentoch IoT zariadení si povieme ďalej v prednáške.

O mikrokontroléroch

  • Začneme sa teda baviť o riadiacej jednotke, ktorá je srdcom každej veci. Je programovateľná, takže môžeme povedať, že je mozgom celého zariadenia. Realizuje sa pomocou (mikro)kontrolérov.

  • (slide) Čo je to mikroprocesor? Čo je to mikrokontrolér? A čo mikropočítač? Aký je medzi nimi rozdiel?

  • Mikrokontrolér je integrovaný obvod, ktorý na jednom čipe obsahuje procesor, pamäť a periférne zariadenia. Mikrokontroléry sú lacné, kompaktné a sú určené na vykonávanie špecifických úloh v domácich spotrebičoch, autách a pod.

  • (slide) Pekné video na túto tému pripravilo aj Raspberry Pi Foundation, kde na príklade mikrokontroléra Raspberry Pi Pico ukazuje, čo mikrokontrolér je a čo mikrokontrolér naopak nie je.

  • Skúsme porovnať vlastnosti mikrokontrolérov a mikroprocesorov:

    mikroprocesor mikrokontrolér
    je zariadenie na všeobecné použitie špecializované zariadenie
    označuje sa ako “jednočipový počítač
    neobsahuje I/O porty, pamäť, časovače a pod. obsahuje RAM, ROM, sériové a pralelné rozhranie, časovače, … všetko na jednom čipe
    používajú sa ako CPU v mikropočítačoch používajú sa v jednoduchých/jednoúčelových zariadeniach
    jeho dizajn/návrh je komplexný jeho dizajn/návrh je jednoduchý
    je drahý (desiatky/stovky Eur) je lacný (jednotky Eur)
    energeticky náročný (desiatky watov) energeticky nenáročný (jednotky Watov)
    majú Von Neumannovu architektúru majú Harvardskú architektúru
    vysoká rýchlosť (GHz) malá rýchlosť (MHz)
    Raspberry Pi Arduino (ATmega328), ESP32, micro:bit (Cortex M0), RPi Pico (RP2040)
  • V porovnaní vyššie sa spomínajú dva typy počítačových architektúr:

    1. Von Neumannova architektúra, a
    2. Harvardská architektúra

    Pozrime sa na vlastnosti oboch týchto architektúr podrobnejšie.

Von Neumannova architektúra

  • (slide) Túto architektúra navrhol v roku 1945 matematik s maďarským pôvodom John Von Neumann. Dnes je táto architektúra používaná vo všetkých bežných počítačoch. Jej bloková schéma sa nachádza na nasledovnom obrázku:

    Von Neumannova architektúra
  • Bloky tejto architektúry tvoria:

    • CPU (Central Processing Unit) - Hlavný riadiaci blok, ktorý sa ďalej skladá z:

      • výkonná jednotka (alebo aritmeticko-logická jednotka) - je zodpovedná za všetky aritmetické a logické operácie, ako sú sčítanie, odčítanie, násobenie, delenie, porovnávanie a pod.
      • riadiaca jednotka (alebo radič) - riadi celú činnosť počítača; tá sa vykonáva pomocou signálov, ktoré sú posielané každému zariadeniu architekúry
    • Memory - Pamäť počítača, v ktorej sa súčasne nachádza samotný program, ako aj jeho údaje.

    • Input - Vstupná jednotka.

    • Output - Výstupná jednotka.

  • Hlavnou charakteristikou tejto počítačovej architektúry je, že používa spoločnú pamäť pre program a údaje. To znamená, že spracovávanie je sekvenčné.

Harvardská architektúra

  • (slide) Tento typ počítačovej architektúry má od seba fyzicky oddelenú pamäť pre program a pre údaje. Okrem toho má od seba oddelené aj komunikačné zbernice pre prístup k týmto pamätiam. Spracovávanie je v tejto architektúre paralelné.

    Harvardská architektúra
  • Medzi výhody tejto architektúry patria:

    • inštrukcie programu ako aj údaje sú uložené v rôznych pamäťových priestoroch
    • komunikačné zbernice môžu mať rôzne šírky
    • súčasne sa môžu spracovávať inštrukcie aj dáta
    • kedže sú pamäte fyzicky oddelené, je rovnako oddelený aj ich adresný priestor
    • program nemôže prepísať sám seba
    • možnosť zreťazenia inštrukcií (pipelining) (spracovanie viacerých inštrukcií naraz) → možnosť rýchlejšieho spracovania väčšieho objemu dát

Populárne riešenia

  • Pozrime sa na populárne riešenia v tejto oblasti. Samozrejme uvedený zoznam nie je kompletný, ale je to skôr prehľad existujúcich riešení, ktoré je jednoduché zohnať a sú populárne práve v domácich “kutilských” kruhoch ;)

Minipočítač Raspberry Pi

  • (slide) Raspberry Pi

    Minipočítač Raspberry Pi [@s73]
  • 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE, Gigabit Ethernet

  • niekoľko generácií

  • nebudeme ho však porovnávať a zahŕňať do výsledku, pretože je to počítač, ktorý potrebuje byť pre svoju činnosť neustále napájaný, nemá režimy spánkov a teda nevieme s ním efektívne pracovať s prerušeniami

Doska Arduino Uno

  • (slide) Prototypovacia doska Arduino Uno

    Arduino UNO (zdroj)
  • na trhu od 2005

  • Flash memory (program space), is where the Arduino sketch is stored - 32kB

  • SRAM (static random access memory) is where the sketch creates and manipulates variables when it runs - 2kB

Doska BBC micro:bit

  • (slide) Na svojej domovskej stránke je BBC micro:bit charakterizovaný ako:

    The BBC micro:bit is a pocket-sized computer that introduces you to how software and hardware work together.

  • BBC micro:bit je vývojová doska určená na vzdelávanie, ktorá je nesmierne populárna vďaka cene a svojim možnostiam. Na doske totiž nájdete výrazne viac komponentov, ako je to v prípade dosky Arduino Uno. Rozloženie jednotlivých komponentov je zobrazené na obrázku.

    BBC micro:bit v2 [@s15]
  • Oproti doske Arduino Uno umožňuje BBC micro:bit komunikovať so svojím okolím pomocou technológie Bluetooth s podporou Low Energy. Verzia 1 tejto dosky mala podporu pre Bluetooth 4.1_, zatiaľ čo verzia 2 už podporuje Bluetooth 5.0.

Dosky s mikrokontrolérom ESP32

  • (slide) ESP32

    ESP32 [@s17]
  • BLE, WiFi

  • viaceré verzie - líšia sa prevedením ako aj počtom pinov - 30 a 38.

  • (slide) blokový diagram

    Blokový diagram mikrokontroléra ESP32 (zdroj)

Raspberry Pi Pico WH

  • (slide) Raspberry Pi Pico WH

    Raspberry Pi Pico WH
  • prírastok do rodiny zariadení od Raspberry Pi, ktorého srdcom je mikrokontrolér RP2040.

Porovnanie riešení

  • Nakoniec môžeme vlastnosti týchto riešení porovnať v nasledujúcej tabuľke:

    Porovnanie vlastností populárnych dosiek
    Arduino Uno ESP32 BBC micro:bit RPi Pico WH
    µcontroller ATmega328P ESP32 nRF52833 RP2040
    proc Tensilica Xtensa LX6 ARM Cortex-M0 ARM Cortex-M0+
    arch 8b 32b 32b 32b
    cores 1 2 1 2
    freq 16 MHz 240 MHz 16MHz 133MHz
    SRAM 2kB 520 kB 16kB 264kB
    flash 32kB 16 MB 256kB 2MB
    op. voltage 5V 3V3 3V3 3V3
    comm. WiFi, BLE BLE WiFi, BLE 5.2
    power cons 60mA 55mA 17mA 18mA

Jazyk MicroPython

  • (slide) MicroPython - MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.

  • Pre písanie kódu v jazyku MicroPython potrebujete mať editor/IDE a zariadenie s MicroPython-om. Existuje niekoľko editorov, ktoré môžete použiť:

  • Pre potreby predmetu budem používať editor Thonny. Vo výbere editora vás nebudeme nijako obmedzovať.

Vnútorný súborový systém ESP32

  • (slide) If your devices has 1Mbyte or more of storage then it will be set up (upon first boot) to contain a filesystem. This filesystem uses the FAT format and is stored in the flash after the MicroPython firmware.

  • V súborovom systéme môžete čítať a zapisovať súbory, prechádzať štruktúrou priečinkov ako v normálnom súborovom systéme.

  • Dva súbory však majú špeciálny význam:

    • súbor boot.py - Ak tento súbor existuje, je spustený ako prvý.
    • súbor main.py - Ak tento súbor existuje, je spustený ako druhý.
  • Súbor boot.py by mal obsahovať rozličné nastavenia, ktoré budú dostupné od momentu spustenia mikrokontroléra, resp. od momentu spustenia tohto súboru. V súbore main.py by sa mal nachádzať kód, ktorý sa začne vykonávať po štarte mikrokontroléra.

  • Ak teda horeuvedený fragment kódu aplikácie Blink uložíme do súborového systému mikrokontroléra ESP32 ako súbor main.py, spustí sa automaticky po štarte mikrokontroléra.

Senzory

  • (slide) Tieto zariadenia však dokážu reagovať na rozličné externé podnety a udalosti. Sú vybavené senzormi (z angl. sensor), ktoré dokážu previesť fyzikálnu veličinu na elektrický prúd a následne na číselnú hodnotu, s ktorou veci ďalej pracujú. Napríklad to môže byť senzor intenzity svetla, teploty, vlhkosti vzdialenosti a pod.

Akčné členy

  • (slide) Rovnako tak tieto zariadenia dokážu produkovať rozličné výstupy, kedy prevádzajú elektrickú energiu na fyzikálne veličiny. Tieto prvky sa nazývajú akčné členy (z angl. actuator). Napríklad to môže byť LED dióda, motor, tepelná špirála a pod.

Komunikácia

  • To, čím sú IoT veci odlišné od bežných zariadení, je práve možnosť komunikovať - buď s ostatnými vecami alebo priamo so zariadeniami vyšších vrstvie (napr. IoT Gateway, Edge alebo Cloud).

  • Na výber vhodného komunikačného protokolu, resp. vhodnej komunikačnej technológie, sa dá pozerať z rozličných aspektov. Viac sa preto tejto oblasti budeme venovať v niektorej z budúcich prednášok.

Designing IoT Thing for Smart Waste Bin

  • Vráťme sa teda k nášmu sprievodnému projektu pre tento semester, ktorým je služba zabezpečujúca chytrý vývoz smetí a konkrétne ku návrhu veci (zariadenia), ktorú budeme inštalovať do každého kontajnera. V tejto časti sa teda pokúsime túto vec navrhnúť, vybrať jednotlivé komponenty a to všetko s ohľadom na základnú charakteristiku každého IoT zariadenia:

    • má svoju fyzickú reprezentáciu,
    • je jednoznačne identifikovateľná,
    • má riadiacu jednotku,
    • obsahuje senzory a akčné členy,
    • vie komunikovať.

Komponenty chytrého smetného koša

  • (slide) Našim cieľom je teda vytvoriť chytrý kontajner, ktorý bude sledovať aktuálny stav a na jeho základe sa bude vedieť rozhodnúť, čo ďalej.

  • Uvažovať teda môžeme o týchto komponentoch:

    • Senzor hladiny odpadu - Ultrazvukový (ultrasonic) senzor, pomocou ktorého zabezpečíme včasný odvoz smetí. Vďaka tomuto senzoru už viac žiadny kontajner nebude pretekať odpadom.

    • Senzor teploty a vlhkosti - Senzor alebo senzory na monitorovanie prostredia. Toto je extrémne dôležité vtedy, ak sa jedná napr. o organický odpad, ktorý môže vplyvom teploty a vlhkosti hniť a zapáchať. Rovnako môžu údaje z týchto senzorov slúžiť aj ako prevencia pred možnosťou vzniku požiaru (napr. vo veľmi suchých oblastiach).

    • Senzor plameňa - V prípade, že niekto vhodí do kontajnera nedopalok z cigarety, môže dôjsť v kontajneri k požiaru. Občas môže dôjsť k úmyselnému zapáleniu kontajneru. Pomocou tohto senzora môžeme predísť takýmto situáciám včasným kontaktovaním potrebných zložiek ako aj prípadným ďalším škodám (napr. od kontajnera sa môže chytiť nehnuteľnosť v okolí).

    • Senzor otvorenia - Pomocou údajov z tohto senzora budeme vedieť štatistiku používania kontajnera. Rovnako tak môžeme na otvorenie kontajnera naviazať ďalšie činnosti, ako napr. meranie výšky hladiny odpadu až po zatvorení kontajnera.

    • Komunikačný modul - Tento modul bude zabezpečovať komunikáciu, vďaka čomu sa údaje z kontajnera dostanú do databázy a následne budú spracované a vyhodnotené. Výber vhodného komunikačného modulu samozrejme závisí aj od prostredia, v ktorom sa bude kontajner nachádzať.

    • Senzor vlhkosti pôdy - Tento senzor je zaujímavý len v prípade, ak sa jedná o kontajner pre kompost, aby bolo možné sledovať kompostovací proces.

    • Lokalizačný systém - Za zváženie stojí riešenie lokalizácie kontajneru. Poznáme rozličné typy kontajnerov - od statických, ktoré sa premiestňujú len pomocou žeriavu, a pohyblivé, ktoré sú často vybavené priamo kolieskami. Preto stojí za to zamyslieť sa aj nad touto otázkou, napr. aj v prípade špeciálneho použitia napr. na letných festivaloch. (otázky typu: Je GPS nutné? Stačí kontajner vybaviť QR kódmi? NFC senzormi? …)

    • Akčné členy zobrazujúce stav - Občas môže byť vhodné, ak zariadenie dá opticky alebo akusticky vedieť, čo práve robí. Napr. blikne LED diódou, ak meria alebo odosiela údaje alebo displej zobrazujúci stavové údaje. Použitie týchto akčných členov však treba zvážiť vzhľadom na vyššiu spotrebu energie.

    • Zdroj energie - Treba predpokladať, že chytrý kontajner nebude vybavený stálym zdrojom napätia. Preto treba uvažovať aj nad použitým zdrojom energie, poprípade uvažovať nad alternatívnym zdrojom, napr. v podobe solárnych článkov.

Additional Design Considerations

  • (slide) Na záver spomeniem ešte niekoľko vecí, ktoré je dobré zvážiť pri dizajnovaní IoT vecí.

  • Nebudem hovoriť o veciach ako cena, bezpečnosť alebo nízka spotreba, aj keď aj to sú faktory, na ktoré pri návrhu IoT zariadení a riešení netreba zabúdať. Pozrieme sa na niekoľko iných faktorov.

Size

  • (slide) IoT zariadenie je malé. Vzhľadom na použitie môže spadať do kategórie nositeľná elektronika (wearables).

  • Pri dizajnovaní a prototypovaní samozrejme veľkosť výsledného produktu nehrá rolu. Vo výsledku však áno. Snažte sa preto na veľkosť výsledného riešenia myslieť aj vo fáze návrhu.

KISS

  • (slide) Hneď na začiatku uvediem obecný návrhový vzor známy pod skratkou KISS. KISS je akronym pre “Keep it simple, stupid” alebo aj “Keep it stupid simple.”. Tento vzor hovorí o tom, že väčšina systémov pracuje najlepšie vtedy, keď sú jednoduché. Takže jednoduchosť je kľúčovým faktorom pri dizajnovaní produktov nie len v IoT.

  • Jednoduchosť sa v tomto prípade môže týkať ako hardvérového návrhu a celkového prevedenia, tak aj softvéru. Zbytočná komplexita prevedenia totiž nemusí hovoriť o vašej genialite, ale práve opačne - o vašej neschopnosti robiť veci jednoducho.

Things are State Machines

  • (slide) Je dobré si uvedomiť, že správanie vačšiny vecí (zariadení) sa dá opísať pomocou stavového diagramu. To tiež znamená, že tieto veci sú vlastne stavovými strojmi (stavovými automatmi, konečno-stavovými automatmi).

    State Machine of Turnstile [@s21]
  • Pozerať sa na zariadenie ako na stavový stroj môže uľahčiť jeho vývoj. Máme totiž veľmi dobrý aparát na ich opís (pomocou diagramu stavov) a rovnako tak máme aj softvérové riešenie na implementáciu stavového stroja (návrhový vzor stav). To nám umožňuje dekomponovať aj komplexný problém na menšie časti (jednotlivé stavy) a sústrediť sa na ich riešenie osobitne.

  • Grafická notácia pre reprezentáciu stavového stroja je veľmi jednoduchá, pretože obsahuje vlastne len dva prvky:

    • stavy, a
    • prechody medzi stavmi.
  • Samozrejme - ako stavy tak aj prechody medzi nimi môžeme obohatiť ďalšími informáciami, ako napr. kedy ku prechodu dôjde, čo sa udeje po vstupe do stavu, ako je stav reprezentovaný, a pod.