wireless

36. díl – OctopusLAB
Zkuste to bez drátů pane Marconi


Na úvod si připomeňme, že přenos dat v elektronických zařízeních může probíhat paralelně (vedle sebe) nebo sériově (za sebou).

Pokud má být přenos rychlý a technicky je možné „natáhnout“ vedle sebe více vodičů, upřednostňuje se v číslicové technice sběrnice (bus) paralelní. Z historie známe i čtyřbitové (procesor intel 4004), pak hojně používané osmibitové (což je zároveň i 1 byte [bajt]). Postupem času nám technologické inovace zpřístupnily 16- i 32-bitové sběrnice. Na vnitřních sběrnicích (třeba uvnitř mikroprocesoru nebo na jedné základové desce) se pro přístup do paměti nebo komunikaci s aritmeticko-logickou jednotkou se používá 64-, 128- i více-bitová sběrnice.

Dnes se zaměříme na přenos sériový, protože ten je využíván při bezdrátovém přenosu. V případě Arduina se s oblibou používaly dostupné a levné rádiové moduly 433MHz (nověji i 2,4GHz). Jejich připojení bylo velmi jednoduché a připomínalo slavnou Cimrmanovu větu „zkuste to bez drátů pane Marconi“, zjednodušeně se totiž realizovalo tak, že původní jeden drát určený pro přenos dat se „přestřihl“, na jeden konec se dal vysílač a na druhý přijímač. Tohoto řešení se využívalo nejvíce k připojení senzorů (například bezdrátových teploměrů pro malé meteorologické stanice). Ty mají relativně malou spotřebu, tomu odpovídající dosah (při povoleném vysílacím výkonu se jedná o desítky metrů) a často jsou jen jednosměrné (simplex).

ESP32 – Má WiFi i Bluetooth

Mikrokontrolér ESP32 disponuje dostatečným výpočetním výkonem pro realizaci složitějších zapojených v síti. „Síťařina“ je samostatný a poměrně obsáhlý obor, jehož alespoň základní znalost je nutná k pochopení moderních elektronických zařízení. Pro popis síťové komunikace se používá zobecněný model zvaný ISO/OSI (Open Systems Interconnection). Podívejme se, jak ho implementuje oblíbený protokol TCP/IP, na kterém funguje převážná část „běžného“ internetu:

Přenášená data jsou postupně „obalována“ vyššími vrstvami:

Zatímco jeden připojený teploměr k Arduinu si vystačí s první fyzickou vrstvou (drát nebo „bezdrát“) a druhou linkovou vrstvou (posíláme teplotu jako binární číslo po sériové lince), v případě více čidel se do dat přidával vlastní jednoduchý protokol (zpravidla jen hlavička, obsahující identifikaci senzoru). Toto je nástin další vrstvy, na které máme tzv. MAC adresu zařízení (Media Access Control address). Nemáme prostor zde podrobněji rozebírat jednotlivé vrstvy (ani se tomu do budoucna asi nebudeme věnovat), ale zmíníme některé specifické možnosti ESP32.

V předchozích částech jsme popisovali, že na WiFi v ESP se dá realizovat webový server (HTTP), dokážeme využívat složitější zabezpečené API (HTTPS – Hypertext Transfer Protocol Secure), dá se spustit i FTP a podobné. To všechno jsou už aplikace na nejvyšší aplikační vrstvě.
Na vrstvě transportní se navazují přímá spojení například pomocí UDP (pomocí otevřeného socketu proudí data bez zpětného ověřování). Využíváme jej tedy když nám nevadí, že se malé procento dat ztratí jako v případě přenosu audio signálu. Naproti tomu protokol TCP už používá potvrzení, že data dorazila v pořádku („acknowledge“ nebo tzv. „handshaking“). V opačném případě je klient posílá znovu. Nad TCP je realizováno například MQTT, o kterém se v některém příštím díle chceme rozepsat více, protože se ve spojení s ESP používá pro IoT (Internet of things – internet věcí).

ESP disponuje ještě jedním skvělým protokolem, a to je tzv. ESP-now. Už základní norma 802.11 má rezervovaný payload (datový obsah) o velikosti 255 Byte využívající vendor specific content. Umožňuje nám použít stávající wifi, ale pracuje na síťové vrstvě v časově úspornějším režimu (pouze s MAC indentifikací – bez IP adres). Při provozování na baterie (zařízení je během nečinnosti uspáno a probouzí se jen občas, tzv. deep-sleep) se podaří požadovaná data odeslat za 200-350 ms. V případě plného připojování k wifi (včetně získání IP od DHCP) by stejná operace mohla trvat i 6 až 10 vteřin. Pokud posíláme data jednou za pět minut, můžeme takto prodloužit provoz z jednotek týdnů na celé měsíce.
V ukázce použití demonstrujeme, jak jednoduchá celá operace může být: /esp32-micropython/examples/espnow.


Průběžně doplňujeme on-line dokumentaci pro projekty s ESP32. S popisem knihoven, ukázkami kódu a tutoriály.
Můžeme se domluvit na individuálním workshopu nebo konzultaci. V našem labu máme i většinu modulů, co používáme v ukázkách. Ozvěte se nám na info@octopuslab.cz.