OK

Při poskytování služeb nám pomáhají soubory cookie. Používáním našich služeb vyjadřujete souhlas s naším používáním souborů cookie. Více informací

Úvodní stránka » IoT - Internet of Things » Jak na IoT - Díl I. - Základní úvahy a přípravy

Jak na IoT - Díl I. - Základní úvahy a přípravy

Čtenáři mých stránek jistě někdy narazili na stále populárnější termín IoT - Internet of Things - internet věcí. Existuje poměrně dost robustních řešení, jak volně dostupných, tak na ryze komerční bázi. V jednom z článku věnované problematice GPRS jsem popsal jeden takový free přístup s využitím sítě GPRS, jejíž provoz není zadarmo, ale je poměrně levný a hlavně je globálně dostupná a to díky roamingu v podstatě na většině obydlených míst na světě. Drtivá většina aplikací se bude odehrávat v naši domácnosti, takže pod poměrně dobrým pokrytím wifi sítě. Existuje ještě jedna kompromisní varianta, kterou zmiňuji zde a je to beze sporu technologie budoucnosti - LoRa WAN infrastruktura, které se budu také v dalších dílech seriálu zabývat. Pro prvotní aktivity v oboru IoT budeme věrní WiFi infrastruktuře.

Vhodná čipová platforma - ESP8266

Pomineme existenci hotových produktů určených pro širokou veřejnost, které se jen připojí k 230V a můžete si za patřičný a ne příliš malý obnos zpřístupnit v domácnosti třeba zásuvku nebo zprezentovat teplotu doma na nějaký většinou placený portál. Jako správní bastlíři si jistě poradíme s vytvořením toho co potřebujeme dle obrazu svého, za jiné peníze a taky s pocitem, že jsme něco zase zmákli a něco se naučili. Omezíme-li se na platformy, které jsou integrovány do Arduino IDE, pak zřejmě vyjde vítězně jakákoliv modifikace čipu ESP8266. Samotné Arduino trochu zaspalo zejména se svým originálním a těžce předraženým wifi shieldem a když už bychom chtěli Arduino přes wifi zpřístupnit, pak se opět dostaneme k ESP8266 tentokrát v modifikaci jako převodník wifi/uart. Ano, přiznám se ke své velké preferenci ESP8266 a úplnému odklonu od původní paltformy Arduino, minimálně v oboru IoT. Svůj postoj ale hodlám řádně zdůvodnit a okomentovat. Tak tedy.

  1. ESPčko je dnes perfektně integrováno do prostředí Arduino IDE, tím pádem jej velmi snadno dostanete do Visual Studia díky pluginu visualmicro a můžete tedy psád kódy tak, jak jste si zvyklí s klasickým Arduinem. Z vlastních zkušeností mohu potvrdit, že integrace se opravdu povedla a na samotném fóru ESP8266.com již existuje bezpočet vláken, examplů a vůbec komunita lidí pracující pod Arduino IDE s ESPčkem začíná být opravdu mohutná. Před časem jsem na svých stránkách zveřejnil návod, jak na integraci ESP8266 do prostředí Arduino IDE včetně jednoduchého příkladu, více zde.
  2. ESPčko stojí na ARMu - zde je jakýkoliv komentář nebo srovnávání s AVRkem (ATmega328) zbytečné. K dispozici je relativně mnoho prostředků, o kterých se nám ani nezdá. Snad jeden za všechny - 4M prostoru, tzv. SPIFFS (SPI Flash File System), nebo-li vnitřního filesystému, do kterého lze umístit poměrně rozsáhlé webstránky, javascripty, soubory css stylů a i pár rozumně velkých obrázků, aby jste vytvořili hezké uživatelské rozhraní. To je něco, co jsme mohli s Arduinem realizovat jen s SD kartou (jejíž spolehlivost je diskutabilní) nebo s přidavnou SPI flash.
  3. Integrovaná podpora OTA (Over The Air - tedy vzduchem) uploadu nového sketche. Ano, ESPčko nemusíte mít připojené kabelem, aby jste do něj nalili nový sketch. 
  4. Integrované hodiny reálného času pro možnost zotavení z deep sleep režimu, tedy ze stavu, kdy ESPčko konzumuje jen pár uA, přesto v něm dokáže běžet timer, který jej uvede zpět v život. Toto žel AVRko neumí, to lze probudit jen externím signálem - přerušením.
  5. Podíváme-li se na podporu stávajících knihoven, na které jsme byli zvyklí a které budeme hojně využívat v IoT projektech - tedy zejména knihovny pro komunikaci s různými čidly s rozhraním OneWire, I2C apod. tak zde můžeme být bez obav. Knihovny jsou přizpůsobeny a funkční. Dokonce byla upravená i knohovna SoftwareSerial, takže nic nebrání integraci s dalšími moduly, které využívají UART, např. GSM moduly, bluetooth moduly apod. pro účely třeba zálohy při přísných požadavcích na spolehlivost komunikace a nutnost implementovat nějaké záložní spojení.
  6. ESPčko je wifi modul, tak jej asi většina z nás zná. WiFi stack je dnes na vysoce stabilní úrovni, zde neuděláme chybu, když ESPčku svěříme nenáročný webserver, který díky již zmíněnému filesystému můžeme napsat opravdu velmi snadno a efektivně - to je nesrovnatelné s "tisknutím" stránek přímo do TCP clienta z proměnných v RAM nebo flash. ESPčko je taky ale především procesor - a to ne ledajaký, je to ARM se všemi vlastnostmi, které můžeme v projektech využít. K dispozici máme dle verze ESPčka až 11 GPIO - namapovaných na z Arduina dobře známé digitální porty Dx - tedy zapsat na takový port lze opět přes digitalWrite(D3,HIGH); např. Jedinou trošku slabinou ESPčka je přítomnost pouze jednoho analogového portu a to pouze A0. Nicméně díky podpoře I2C a to na libovolném volném pinu lze i tuto vlastnost eliminovat vhodným AD převodníkem s potřebným počtem kanálů.
  7. ESPčko máme dnes dostupné v mnoha modifikacích, o kterých píšu např. zde.

Na obrázku níže je mnou preferovaná platforma konstrukce ESP8266, mini D1 - jedná se o ESP8266 ve verzi 12, s integrovaným USB rozhraním na čipu CH340G. Na tuto platformu budou konstruovány mini shieldy vlastní produkce Arduinotech - zde např. minishield s DH11.

Napájení IoT zařízení

Mluvíme-li o IoT zařízení, pak nezřídka očekáváme, že bude předávat nějaká data pouze při nějaké události. WiFi jako taková nepatří mezi zrovna úsporné technologie z hlediska spotřeby proudu při permanentním provozu. Nicméně, budeme-li chtít provozovat IoT zařízení na baterii, pak se nevyhneme řízení spotřeby. Zde je opět ESPčko velmi zajímavé, nabízí totiž tzv. deep sleep mód se spotřebou pohých 10uA - to není asi žádný zázrak, Arduino uspíme taky na nějakých 7uA, ale co je důležité - ESPčko má vestavěné RTC hodiny a tak jej můžeme uspat na dobu od nějakých pár mikrosekund až po 71 minut, tedy cca hodinu. Po nastaveném čase lze pak provést nějakou komunikaci a systém znovu uspat. Narazil jsem na zajímavý článek, který celkem podrobně pojednává o průměrné spotřebě. Pro zajímavost uveřejňuji z tohoto zdroje následující tabulku, která vznikla skutečným měřením spotřeby na reálném ESP modulu.

 

Suma sumárum lze dosáhnout průměrné spotřeby 1mA, takže při použití celkem nevelké modelářské baterie 3,7V/1000mAh můžeme zařízení provozovat cca 1000 hodin, tedy zhruba 40 dnů. Mno, je to nic moc, ale v nouzi dobré. Tak či tak je třeba zajistit zajistit nějaké napájení a bateriové napájení brát jako zálohu. Pravé IoT s bateriovým napájením, které snesou specifikaci pro wearables (nositelná zařízení) splní jen technologie LoRa, kde se spotřeba pohybuje řádově někde jinde (o 2 řády), takže i výdrž na baterií je ekvivalentně někde jinde, také řádově.

Trochu praxe na závěr

Předpokládám, že jsem Vás přesvědčil o kvalitách platformy ESP8266 a budu se snažit navázat na již zveřejněné 2 články o NodeMCU. Zejména zde v praktickém příkladu jsem ukázal, jak lze jednoduše vytvořit webserver a zobrazovat na něm nějaké naměřené parametry. Příklad se možná zdá být složitý, protože celou stránku si musíme pracně vytvořit do proměnné, ktrerou držíme v programové flash nebo dokonce v RAM.  Zmiňoval jsem ale možnost využití filesystému a pojďme se podívat, jak jej zprovoznit na ESPčku:

  1. Stáhněte si plugin do prostředí Arduino IDE z tohoto odkazu.
  2. Odzipovaný obsah vložde do ..Arduino/tools, pokud z nějakého důvodu adresář tools neexistuje, pak jej založte. Celá cesta by pak měla vypadat takto: ../Arduino/tools/ESP8266FS/tool/esp8266fs.jar 
  3. Restartujte prostředí Arduino IDE
  4. Nyní doporučuji vyhledat příklad z instalace toolboxu ESP8266 (předpokládám, že jej máte instalovaný podle návodu v tomto článku) pro File system web server, najdete jej přes menu Soubor -> Příklady -> ESP8266WebServer a vyberte example FSBrowser.
  5. Všimněte si, že ve zdrojovém adresáři examplu FSBrowser je podadresář data - zde je možné umístit soubory, které chcete pro prvotní inicializaci do SPIFFS nahrát. Nemusíte moc přemýšlet, co ještě, vše pak ostatní pak dohrajete přes vestavěný editor přímo z webbrowseru, nicméně nějak musíme ten vestavěný editor dostat dovnitř.
  6. Abychom dostali obsah složky data do filesytsému a následně umožnili spustit editor (edit.htm.gz) je potřeba nahrát tento podadresář trochu jinak, než jsme zvyklí a to sice přes plugin, který jsme instalovali v kroku 2. - název je trochu matoucí ESP Sketch Data Upload, ve skutečnosti je to kopirování složky data do filesystemu, viz následující obrázek:
  7. Spusťte nahrávání -bude to chvilku trvat, cca 2 minutky (záleží, jakou jste zadali rychlost nahrávání u modulu NodeMCU).
  8. Tím jste dostali obsah adresáře data do file systému a nyní si ve sketchi upravte své wifi připojení, tedy zadejte patřičné SSID a heslo Vaši wifi sítě. Nahrejte sketch obvyklým způsobem.
  9. Po uploadu spusťte sériový monitor a koukněte se, jaká Vám byla přidělena Vašim wifi routerem IP adresa.
  10. Do Vašeho browseru zadejte link http://vase.ip.adresa/edit a proběhlo-li vše tak, jak mělo, pak se dostanete k Vašemu filesystému, kde přes edit.htm.gz editor můžete nahrávat své vlastní htm, css nebo js soubory. Mělo by to vypadat asi takto: 

 

Zkuste nyní nahrát (přes Vybrat soubor a Upload) nějaký htm soubor, třeba test.htm - měli by jste jej pak vidět ve struktuře souborů ve sloupečku vlevo. Pak je možné na něj přistoupit přes http://vase.ip.adresa/test.htm - ESPčko sáhne při http requestu pro soubor test.htm přímo do filesystému, kam jste soubor uložili. Zde jsme si tedy připravili perfektní platformu pro psaní nejen jednoduchých webů, ale díky AJAXu můžeme vytvořit i poměrně hezké dynamické weby s výměnou informací mezi jádrem, ve kterém nám běží sketch a web browserem. Zde již pomalu vyvstává otázka, k čemu jsou vlastně dobré všemožné displeje, tedy kromě těch na našich smartfonech a tabletech :-). To je ale jiné téma. Takže od této chvíle se budeme v následujících dílech seriálu zabývat 3 klíčovými programovacími přístupy:

  1. C++ ala Arduino IDE - tedy klasická tvorba sketchů, které něco měří, zjišťují  apod.
  2. Surovým HTML jazykem pro napsání základní struktury webu
  3. Javascriptem, který nám udělá můstek mezi sketchem a webovou stránkou

Zdá se to trochu zašmodrchané, ale není to tak. Pokud ovládáte alespoň 1 nebo 2 z výše uvedených technik, tak se zbytek snadno doučíte. Příští díl bude věnovaný v podstatě přepsáním příkladu z toho článku do trochu profiverze - tedy bez hloupého refreshe stránky co 5 sekund a data k zobrazení budeme servírovat přes JavaScript přímo do jednoduché stránky htm. Uvedeme tedy do praxe výše zmíněné body 1. až 3. Základním předpokladem bude zvládnutí výše uvedeného example FSbrowser.

závěrem bych rád odkázal na tuto stránku, která perfektně sumarizuje všechny vlastnosti platformy ESP8266 s ohledem na integraci do IDE Arduino.

PF


TOP produkty

NodeMCU s ESP8266

NodeMCU s ESP8266
350 Kč s DPH

Arduinotech GSM shield

Arduinotech GSM shield
877 Kč s DPH

Kontakt

Ing. Petr Foltýn
Kunčice pod Ondřejníkem 814, 73913
TOPlist