Internet věcí (IoT) s Wemos D1 mini – krok za krokem

IoT s Wemos D1 mini – krok za krokem

Internet věcí, zkráceně IoT (Internet Of Things) je stále populárnější a zabydluje se nám v kdejakém zařízení, včetně naší domácnosti. Zjednodušeně můžeme internet věcí chápat jako „internet“ propojený s konkrétními fyzickými zařízeními, ze kterých mohu získávat nějaké informace (data) a nějaké informace posílat směrem k nim, což nám umožní taková zařízení ve výsledku také vzdáleně ovládat a řídit. Na Wikipedii najdeme odhad, který uvádí v roce 2020 přibližně 30 miliard takovýchto zařízení, a to už je dost velké množství. Pro lepší představu tu pro vás mám jeden příklad z nedávné praxe. Před časem jsme kupovali novou pračku. Rozhodující byly samozřejmě „prací schopnosti“ a to ostatní šlo tak trochu mimo náš zájem. Kupodivu jsme po rozbalení a zapojení zjistili, že jde o IoT zařízení, které se chce připojit do naší „chytré domácnosti“, kterou mimochodem nemáme. Pračka ale vzala zavděk i naší běžnou WiFi sítí. Aplikace v mobilu přitom umožňuje kompletní nastavení, ovládání a sledování „pracího procesu“. S průvodcem je nastavení praní konkrétního typu prádla „hračkou“ (žádná několika-úrovňová menu na displeji pračky) a nejen to, současně jste třeba upozorňováni na čištění filtru. Jistě, není to nezbytné a každému to nemusí vyhovovat. Pro řadu uživatelů to ale nakonec bude určitě docela příjemné a užitečné.

Když už se na nás valí nejrůznější IoT zařízení, bylo by dobré přiblížit našim žákům, jak to celé funguje. Pro porozumění problematice IoT by se nám ve školních lavicích hodilo něco, z čeho bychom si IoT aplikaci takříkajíc „postavili“. Za tímto účelem si již nějaký ten čas můžeme pořídit různé „předpřipravené“ vzdělávací sady. Za všechny jmenujme české Hardwario, jejíž základní IoT sadu jste mohli získat jako účastníci konference Počítač ve škole 2020. Podobné sady ovšem nejsou zrovna nejlevnější záležitostí, a tak český učitel hledá různé levné alternativní cesty. Jednu takovou cestu vám ukážeme v tomto článku krok za krokem a s ohledem na to, že jste v této oblasti třeba úplní začátečníci. Spíše než o klasický článek, který přečtete najednou od začátku do konce, jde tentokrát o jakýsi „tutoriál“, u kterého je ideální vše si rovnou zkoušet a postupovat po menších částech, klidně s několikadenními přestávkami.

zpět na začátek

1. Co budeme potřebovat a kolik to bude stát?

Naše IoT ukázka bude založená na mikrokontroléru ESP8266, který obsahuje WiFi, a tím pádem nám snadno umožní bezdrátové připojení k internetu. Konkrétně použijeme „destičku“ Wemos D1 mini, jejíž výhodou je snadné rozšíření o celou řadu modulů (shieldů). Všem přírodovědcům doporučuji podívat se především na sekci Environment Shields, kde najdeme kandidáty vhodné do terénu i do laboratoře. Samozřejmě, že připojit se dá dodatečně téměř cokoli, ale zapojení již není tak jednoduché jako u hotových shieldů. Pro chemiky se otevírají možnosti měřit např. pH, vodivost, tlak, CO2 apod. Můžete postavit i různé automatické měřicí a regulační stanice, např. pro sledování a úpravu pH (inspirací nám může být návod na Instructables). My ale začneme pěkně od začátku krok za krokem a měli by to zvládnout i ti, kteří nemají v této oblasti prakticky žádné zkušenosti. Základní sada, kterou jsme si vybrali, obsahuje modul s mikrokontrolérem ESP8266 a modul s teploměrem a vlhkoměrem, včetně USB kabelu. Dá se zakoupit již za cenu pod 200 Kč (aktuálně v době vydání tohoto článku za 168 Kč, obr. 1obr. 2). Samozřejmě není problém pořídit si moduly jednotlivě. Na sadě se mi ale zamlouvá praktická plastová krabička, která umožní přehledné skladování v kabinetu či učebně. Sadu si ještě pro naše potřeby seznamování s IoT rozšíříme o modul tlačítka, což je nějakých 28 Kč navíc (obr. 3). Dále využijeme nepájivé pole, jednu LED diodu a jeden rezistor. Pokud pracujete např. s Arduinem, věřím, že všechny tyto věci již máte, a pokud ne, stačí si je dokoupit (cena jedné LED je zhruba 1 Kč, rezistoru 220 Ω asi 0,8 Kč a za nepájivé pole dáte cca 50 Kč). V případě, že oželíte IoT rozsvěcení a zhasínání světla, nebudete nic z výše uvedených dodatečných komponent potřebovat. V maximalistické variantě se dostaneme na jedno žákovské pracoviště s cenou na 250 Kč. Když vezmeme v potaz, že potenciální využití nemusí být pouze „seznamování“ s IoT, ale skutečné IoT aplikace (např. monitoring prostředí ve třídách, kontrola parametrů dlouhodobých probíhajících experimentů v rámci přírodních věd, zasílání zpráv o aktuální obsazenosti jídelny, tlačítko na přivolání školníka apod.) nebo využití v rámci výuky algoritmizace a programování či dokonce fyziky (elektrické obvody), je uvedené cena opravdu „lidová“.

Obr. 1: Sada LasKKit IoT MINI Starter Kit (www.laskarduino.cz)  Obr. 2: Rozbalená sada LasKKit IoT MINI Starter Kit (www.laskarduino.cz)  Obr. 3: Všechny komponenty, které v rámci našeho seznamování s IoT použijeme

zpět na začátek

2. Než začneme zapojovat

Než se pustíme do zapojování, je vhodné si s žáky jednotlivé „destičky“ prohlédnout a alespoň některé součásti si na nich blíže popsat. Nejvíce viditelných komponent najdeme na destičce osazené mikrokontrolérem ESP8266 (obr. 4). Na jedné straně je vidět kovový kryt mikrokontroléru s popisem (A), výrazná je také klikatá anténa (B). Na druhé straně je dominantou čip s označením CH340G (C), který slouží ke komunikaci po USB lince (tzv. převodník „USB to serial“, jde o převodník USB na UART (v napěťových úrovních TTL), tedy na sériovou komunikaci, které ESP8266 „rozumí“). Abychom mohli s naší „destičkou“ komunikovat z počítače pomocí USB kabelu, budeme si muset nainstalovat odpovídající ovladač pro CH340G. Důležité pro nás bude také tlačítko RESET (D). Při připojování dalších modulů je potřeba stále myslet na správnou orientaci destiček vůči sobě (můžeme se např. zaměřit na vývody, které typicky označujeme jako tzv. piny, RST a TX, označené na obrázku zelenými šipkami, a hlídáme propojení RST na RST a TX na TX). Pokud bychom rozšiřující modul (shield) nechtěně otočili, v lepším případě nebude po připojení napájení funkční, v horším případě ho rovnou zničíme.

Obr. 4: Wemos D1 mini osazený mikrokontrolérem ESP8266 (popis částí v textu článku)  Obr. 5: Wemos D1 mini DHT shield (popis částí v textu článku)  Obr. 6: Wemos D1 mini Button shield (popis částí v textu článku)

Modul označený jako „DHT shield“ (obr. 5) obsahuje pod světle modrým plastovým krytem kombinované čidlo teploty a relativní vlhkosti DHT11 (A). I když jsou viditelné 4 nožičky, zapojené jsou pouze tři (napájení + VCC, zem - GND, DATA). Po nahlédnutí do dokumentace (PDF) zjistíme, že přesnost měření relativní vlhkosti je ±5 % (rozsah 20-90 %) a přesnost měření teploty ±2 °C (rozsah 0-50 °C). Na přesná měření to tedy rozhodně není. A ještě jeden údaj je pro nás poměrně zásadní, „Sampling period: more than 2 seconds“. Nemá tedy smysl měřit nějaké rychlé děje, protože po vyčtení teploty a vlhkosti získáme další novou hodnotu „nejdříve“ až za asi 2 s (někde se uvádí i 1 s). V chemické laboratoři je třeba myslet také na to, že čidlo „nemá rádo“ těkavá rozpouštědla a expozice ve vysoké koncentraci par např. ethanolu (lihu) ho poměrně rychle zničí. A jak to vlastně měří? Princip měření vlhkosti: se změnou vlhkosti se mění vodivost (odpor) materiálu mezi dvěma elektrodami. Princip měření teploty: využívá se NTC termistor („Negativní Teplotní (C)koeficient“, odpor termistoru klesá se zvyšováním teploty). Měřené hodnoty jsou zpracovány „čidlem“ a posléze dostupné pomocí „jednodrátové“ sběrnice (one-wire).
Na druhé straně modulu je vidět, že pro komunikaci s čidlem je použitý jeden pin, označený jako D4 (B). K označování pinů se ještě dostaneme (pokud jste zvyklí jen na Arduino, čeká tu na nás taková malá „zrada“…).

Poslední modul je modul tlačítka „BUTTON shield“ (obr. 6). Na spodní straně není vidět, že by nožičky tlačítka byly připojeny k nějakému konkrétnímu pinu. Při bližším pohledu ale zjistíme, že dvě nožičky (A) jsou propojeny s „rozlitou“ zemí (GND, měděná vrstva pokrývá prakticky celou spodní část). Na horní straně pak najdeme propojku mezi jednou nožičkou spínače a pinem D3 (B).

Proč se těmito věcmi tak detailně zabýváme? Jednak je dobré vědět, na jakém principu čidlo měří, jaká jsou jeho omezení, jaký je rozsah měřených hodnot a jaká je „přesnost“. Jeden příklad za všechny (ideální jako problémový úkol pro žáky): Chceme si postavit školní meteostanici. – Můžeme použít DHT11 čidlo pro celoroční monitoring teploty a vlhkosti? – Ne, jak začne mrznout, nastane problém. Jaký? Schválně, jestli na něj přijdete…
Může se vám také stát, že se vám do rukou dostane modul, který bude zapojený jinak, než jaké je typické zapojení. Např. tlačítko nebude připojené na pin D3, ale někam jinam. V takovém případě samozřejmě nebude náš kód funkční a bude třeba v kódu programu změnit odpovídající pin.

zpět na začátek

3. Začínáme zapojovat

Moduly „Wemos D1 mini shieldů“ se takříkajíc „stohují“ na sebe (obr. 7, obr. 8obr. 9). Přitom je třeba dávat pozor na orientaci jednotlivých modulů vůči sobě (o tom jsme se již zmiňovali výše).

Obr. 7: Wemos D1 mini ESP8266 a DHT11 shield   Obr. 8: Wemos D1 mini ESP8266 a DHT11 shield (zelené šipky naznačují piny RST a TX, které jsme použili ke kontrole správné orientace před kompletací)  Obr. 8: Wemos D1 mini ESP8266 a DHT11 shield (zelené šipky naznačují piny RST a TX, které jsme použili ke kontrole správné orientace před kompletací)

zpět na začátek

3.1 Vložení ESP8233 modulu do nepájivého pole

Vše potřebné máme připraveno (obr. 10). Mezi naše pomůcky jsme na fotografii zařadili i malou powerbanku, ze které můžeme ve finále naši malou IoT sestavu napájet. Začneme s nepájivým polem, do kterého zasuneme modul s ESP8266. Využijeme krajní pozici tak, aby USB konektor směřoval z nepájivého pole ven (obr. 11). Modul opatrně zatlačíme do nepájivého pole tak, jak je vidět na dalším obrázku (obr. 12). Pin 5 V (na obrázku vpravo) a pin 3,3 V (na obrázku vlevo) jsou zapojeny v řádce označené číslem 1 (kvůli USB konektoru směřujícímu dolů je nepájivé pole na obrázku vzhůru nohama).

Obr. 10: Připravené komponenty naší malé IoT sestavy (zleva shora: Wemos D1 mini moduly: ESP8266, DHT11 shield, Button shield, nepájivé pole, červená LED, rezistor)   Obr. 11: Wemos D1 mini ESP8266 zorientujeme USB portem ven z nepájivého pole  Obr. 12: Wemos D1 mini ESP8266 správně umístěný do nepájivého pole

zpět na začátek

3.2 Zapojení LED

K připojení LED do budoucí několikapatrové sestavy využijeme nejjednodušší cestu, nepájivé pole. Šestý řádek našeho nepájivého pole (na fotografii vpravo) je propojený s pinem D1 (obr. 13, A). Delší nožičku LED (anodu) zapojíme do jednoho z otvorů v 6. řádku nepájivého pole a kratší nožičku (katodu) do jednoho otvoru z bočního sloupce označeného modrým pruhem a symbolem „mínus“ (obr. 13, B).
Obdobně připojíme v dalším kroku odpor (rezistor), alespoň 220 Ω (na obrázku (obr. 14) je odpor 4,7 kΩ). Jednu nožičku odporu (zde na orientaci nezáleží) zapojíme do otvoru ve 2. řádce, propojené s pinem označeným G (GND) (obr. 14, A). Druhou nožičku opět zapojíme do jednoho z otvorů bočního sloupce označeného modrým pruhem a symbolem „mínus“ (obr. 14, B). Tím máme část elektrického obvodu s LED hotovou. Boční pohled na naši zapojenou LED s rezistorem je vidět na následujícím obrázku (obr. 15).

Obr. 13: Zapojení LED (popis částí v textu článku)  Obr. 14: Zapojení rezistoru (popis částí v textu článku)  Obr. 15: Boční pohled na finální zapojení LED s rezistorem

zpět na začátek

3.3 Připojení teploměru a vlhkoměru (DHT11 shieldu)

Při připojování DHT shieldu je třeba dbát správné orientace jednotlivých pinů vůči sobě a pohlídat si, abychom se trefili se všemi piny tam, kam patří. V případě, že nejsou piny na spodní části shieldu rovné, můžeme je tlakem z boku lehce narovnat/ohnout tak, aby „pasovaly“ do spodního ESP modulu (obr. 16).

zpět na začátek

3.4 Připojení tlačítka spínače (Button shieldu)

Obdobným způsobem, jako DHT shield, připojíme naši poslední část, shield s tlačítkem (obr. 17). Opět je potřeba dbát na správnou orientaci.

Obr. 16: Připojení DHT11 shieldu  Obr. 17: Připojení shieldu s tlačítkem (Button shield)  Obr. 18: Naše hotová sestava Wemos D1 mini s připojenou powerbankou jako napájecím zdrojem

Tímto máme naši sestavu hotovou. Mohli bychom připojit napájecí zdroj (USB z počítače, USB nabíječku telefonu, USB powerbanku, …), jak je vidět na posledním obrázku v této sérii (obr. 18), a čekat, že se budeme moci se sestavou spojit třeba ze svého mobilního telefonu. K tomu nám ale ještě chybí jeden podstatný krok! Musíme do ESP8266 nahrát svůj „kód“, kterým celá sestava „ožije“ a začne s námi komunikovat.

zpět na začátek

4. Než začneme programovat

zpět na začátek

4.1 Potřebuji ovladač?

Jak zjistíme, že jsme schopni s ESP8266 z našeho počítače komunikovat? Je nutné instalovat nějaké ovladače (drivery)? V případě, že jste v OS MS Windows, odpoví vám na tyto otázky pohled do „Správce zařízení“. Připojíme si ESP modul k USB portu počítače a spustíme Správce zařízení (Device manager). V něm si rozbalíme položku Porty (COM a LPT) (obr. 19), a pokud najdeme zařízení „USB-SERIAL CH340 (COMX)“ (nebo hodně podobný řetězec), máme vyhráno a nic instalovat nemusíme. Pokud takovéto zařízení nenajdeme, ESP od USB portu odpojíme a nejprve si nainstalujeme ovladače. Poté postup se Správcem zařízení zopakujeme. Nyní bychom již měli vidět nové zařízení pod položkou Porty. Pro další postup si také zapamatujeme číslo portu – v rámci COMX je to ono X (konkrétně např. COM8). Ale pozor, při připojení zařízení do jiného USB portu se může stát, že se také změní číslo portu COM.

zpět na začátek

4.2 V čem budeme programovat?

Možností „v čem programovat“ je celá řada. My pro naše účely použijeme Arduino IDE. Toto vývojové prostředí je k dispozici zdarma (obr. 20), stáhnout instalaci). Arduino IDE (obr. 21) si následně trochu rozšíříme o podporu ESP8266 a také o několik knihoven.

Obr. 19: Správce zařízení s detekovaným ESP8266 modulem (USB-SERIAL CH340 (COMX))  Obr. 20: Arduino IDE je k dispozici zdarma na stránkách www.arduino.cc/en/software  Obr. 21: Arduino IDE je jednoduché a přehledné – i když nedisponuje pokročilejšími funkcemi, je pro naše potřeby zcela dostačující

Postup potřebných instalací v rámci Adruino IDE je přehledně zobrazen na následující sérii obrázků s instrukcemi v jejich popisech (obr. 22obr. 30). Pozn.: Na obrázcích jsou komponenty již nainstalované, proto jsou tlačítka pro instalaci neaktivní „zašedlá“. Jedná se o následující kroky:

  1. Instalace rozšíření pro ESP8266 (ESP8266, ESP8266 Community, url pro přidání ESP8266 v rámci nastavení Arduino IDE: http://arduino.esp8266.com/stable/package_esp8266com_index.json). Instalace je popsána na obrázcích: obr. 22obr. 25.
  2. Instalace knihoven Blynk (Blynk by Volodymyr Shymansky) a DHT (DHT sensor library by Adafruit). Instalace je popsána na obrázcích: obr. 26obr. 28.
  3. Dalším krokem je nastavení správné „desky“ v menu Tools –> Board, kde vybereme položku „LOLIN(WEMOS) D1 R2 & mini“ (obr. 29).
  4. Posledním krokem je nastavení správného COM portu v menu Tools –> Board, kde vybereme port odpovídající našemu ESP, na screenshotu je to COM9 (obr. 30).

Obr. 22: Arduino IDE: Zobrazení dialogu nastavení  Obr. 23: Arduino IDE: Přidání adresy serveru s definicí dalších „desek“ (máme ESP8266)  Obr. 24: Arduino IDE: Zobrazení dialogu „Správce desek“.

Obr. 25: Arduino IDE: Vyhledání řetězce „ESP“ a nalezení a instalace odpovídajícího rozšíření…  Obr. 26: Arduino IDE: Zobrazení dialogu „Správce knihoven“  Obr. 27: Arduino IDE: Vyhledání řetězce „blynk“ a nalezení a instalace odpovídající knihovny…

Obr. 28: Arduino IDE: Vyhledání řetězce „DHT“ a nalezení a instalace odpovídající knihovny…  Obr. 29: Arduino IDE: Nastavení naší desky s ESP8266 – Wemos D1 mini  Obr. 30: Arduino IDE: Nastavení COM portu naší desky Wemos D1 mini (je třeba nastavit „svůj port“)

zpět na začátek

5. Přichází IoT

Asi jste si všimnuli, že jsme instalovali jakési knihovny s názvem Blynk, ale přitom jsme o žádném Blynku zatím vůbec nemluvili. Blynk je totiž něco, co je často označováno jako tzv. „IoT platforma“ a zahrnuje v sobě hned několik služeb. Pro nás ve škole je dobrou zprávou, že pro většinu našich úloh můžeme Blynk využívat zcela zdarma. Služby Blynk cloudu si můžeme přiblížit pomocí následujícího obrázku (obr. 31). Na obrázku je vpravo dole HW zařízení, za které si můžeme dosadit naše Wemos D1 mini. Když budeme stoupat nahoru, vidíme, že potřebujeme připojení k internetu (Internet Access) a ke komunikaci bude náš kód využívat knihovny (Blynk Libraries). Následuje tečkovaná čára, která nás „po internetu“ dovede k (Blynk Serveru), tedy ke službě, kterou nám Blynk zdarma poskytuje. Dalším sledováním čáry se dostaneme k našemu chytrému zařízení (mobil/tablet) s aplikací Blynk (Blynk App). Díky této aplikaci si můžeme snadno sestavit svoji vlastní aplikaci, a to i bez znalosti programování svého „chytrého“ zařízení.

Pokud se v problematice IoT orientujete, asi vás v tuto chvíli napadá spousta otázek. Třeba jak je to s komunikačním protokolem? Používá Blynk MQTT, nebo něco jiného, nebo má nějaký vlastní protokol? A co sítě jako LoRa, Sigfox, …? A jak je to u Blynku obecně s bezpečností? Všechny tyto otázky a mnohé další jsou samozřejmě důležité, ale značně přesahují rámec tohoto článku, proto se jimi zde nebudeme zabývat. Naším hlavním kritériem pro praktické seznámení s IoT ve výuce je v tuto chvíli cena a jednoduchost, kterou nám Blynk přináší. Pokud vás zajímají odpovědi na výše zmíněné otázky, lze je najít v podrobné dokumentaci paltofrmy Blynk.

Obr. 31: Schématické znázornění IoT s Blynkem

zpět na začátek

5.1 Instalujeme Blynk na svůj mobil

Než se vrhneme na programování, nainstalujeme si na své chytré zařízení aplikaci Blynk. Blynk je k dispozici na Google Play i v App Store. Na obrázcích v tomto článku uvidíte vždy verzi pro Android. Po instalaci a spuštění aplikace si musíte založit účet a zadat svoji emailovou adresu (je vyžadováno ověření ze zadaného emailu). Tento krok je nezbytný, protože emailem nám bude chodit „autorizační kód“ (Token) k našim aplikacím, které si v Blynku vytvoříme, a tento token budeme potřebovat při programování Wemos D1 mini ESP8266. Průběh založení účtu a vytvoření první aplikace je na obrázcích 3237 (popisy najdete u jednotlivých obrázků). Pokud bychom chtěli zobrazit token a nebo změnit nastavení nově vytvořeného projektu/aplikace, použijeme ikonu „matičky“ v horním menu (zobrazí se dialog Project Settings).

Obr. 32: Blynk app: Vytvoření nového účtu  Obr. 33: Blynk app: Založení nového projektu (aplikace)  Obr. 34: Blynk app: Pojmenování projektu a výběr HW, v našem případě Wemos D1 mini

Obr. 35: Blynk app: Výběr typu připojení a volba tématu vzhledu (tmavý/světlý)  Obr. 36: Blynk app: Zpráva o odeslání autorizačního tokenu k vytvořené aplikaci emailem, token je dostupný také v nastaveních aplikace  Obr. 37: Blynk app: Nově vytvořená aplikace je zatím prázdná, musíme ji teprve poskládat z různých vizuálních prvků, k nastavení aplikace použijeme ikonu „matičky“ v horním menu (zobrazí se dialog Project Settings)

Aplikaci máme vytvořenou. Jak jí ale propojit s naší sestavou Wemos D1 mini? Musíme se přesunout zpět na počítač a začít programovat…

zpět na začátek

6. Začínáme programovat

Patříte-li mezi početnou skupinu uživatelů Arduina, máte určitě představu, co bude následovat. Do našeho ESP8266 musíme nahrát program, který je třeba v Arduino IDE vytvořit (napsat). Ale co když jsem nikdy nic neprogramoval(a)? Nevadí! Když to zvládnou žáci (šesté a sedmé třídy), kteří také nikdy neprogramovali, tak vy to zvládnete také! Blynk nám totiž podává pomocnou ruku v podobě „generátoru příkladů“ (přejít na „generátor“) (obr. 38), takže hotový kód si jednoduše zkopírujeme z internetu a jen v něm upravíme několik textových řetězců. V „generátoru“ si v dialogu nastavení vlevo nahoře vybereme WeMos D1, připojení ESP8266 WiFi (nebo lépe bezpečnější ESP8266 WiFi SSL) a odpovídající příklad, třeba pro čidlo teploty a vlhkosti DHT11. Políčko Token můžete použít pro vložení tokenu, který vám přišel emailem, ale není to nutné, můžete si ho tam vložit až následně v Arduino IDE. A aby to bylo ještě jednodušší, můžete si zazipované příklady k použité Wemos D1 mini sadě stáhnout ze stránek e-Molu. V archivu najdete několik adresářů/složek, na které se budeme v další části odvolávat.

Obr. 38: Generátor příkladů kódů s nastavenými parametry pro Wemos D1 a čidlo DHT11 (examples.blynk.cc)

zpět na začátek

7. Programujeme

Rozbalíme si stažený ZIP archiv. V jednotlivých složkách je vždy odpovídající soubor s koncovkou „.ino“. Ten budeme otevírat v Arduino IDE. Soubor přitom musí být ponechán ve složce se stejným názvem.

zpět na začátek

7.1 Čidlo DHT11

Příklad s tímto čidlem najdete ve složce IoT-ESP8266-DHT11-BLYNK-01 (soubor IoT-ESP8266-DHT11-BLYNK-01.ino). Po otevření souboru v Arduino IDE musíme změnit tři řetězce tak, jak je naznačeno na obrázku 39. Text v uvozovkách „Your Auth Token“ nahradíte zkopírovaným autorizačním tokenem, který vám přišel emailem po vytvoření aplikace v Blynku. Pozor, uvozovky tam musí zůstat, stejně jako středník na konci řádku! Podobná výměna textu vás čeká u „your ssid“, kde zadáte SSID své/školní wifi sítě a „your pass“, kam zadáte heslo k této wifi síti. Při detailním pohledu je tu vidět i ta malá „zrada“ pro „Arduinisty“, kterou jsem avizoval dříve. Definice DHTPIN má hodnotu 2, nikoli 4. Jak je to možné? Říkali jsme přece, že čidlo DHT11 je připojené k pinu 4! Odpověď je na obrázku 40, kde je vidět, že v „terminologii“ NodeMCU jde skutečně o pin 4 (lépe D4), což je ale v terminologii Arduina pin 2 (GPIO2). Spousta chyb žáků zvyklých na Arduino je zde často způsobena právě chybným uvedením pinu, kdy se žáci snaží komunikovat s čidlem na určitém pinu, ale čidlo je ve skutečnosti připojené k jinému pinu. (Zde musíme buďto uvést 2, nebo D4; když napíšeme 4, myslíme tím pin D2.)

Když posuneme kód našeho příkladu kousek dolů (obr. 41), najdeme dva důležité řádky, které nebudeme měnit, ale dobře si je zapamatujeme. Jde o řádky Blynk.virtualWrite(V5, h)Blynk.virtualWrite(V6, t), na kterých vidíme, že Blynk bude posílat naměřené hodnoty vlhkosti (h, humidity) a teploty (t, temperature) na konkrétní „virtuální piny“ naší aplikace vytvořené před chvílí v Blynku na našem mobilním zařízení. Budeme si pamatovat, že na virtuálním pinu V5 bude vlhkost a na virtuálním pinu V6 bude teplota.

Kód máme připravený, takže zbývá kompilace a nahrání kódu do ESP8266. To můžeme udělat jedním tlačítkem v horním levém rohu Arduino IDE (obr 42). Nezapomeneme ESP8266 připojit pomocí USB kabelu ke svému počítači. Zdárný konec kompilace a nahrání kódu je vidět na obrázku 43 (poněkud zavádějící je použitá červená barva textu, ale zde je to v pořádku). Kontrolu provedeme pomocí Sériového monitoru (obr. 44). Pokud se nic neděje, použijeme k resetu ESP8266 malé tlačítko na boku modulu (vedle USB konektoru). V sériovém monitoru vidíme, zda se ESP8266 zdárně připojilo k naší wifi síti a k Blynk cloudu (obr. 44).

Obr. 39: Arduino IDE: Ukázkový kód pro DHT11 čidlo (zvýrazněny části zmiňované v textu článku)  Obr. 40: Wemos D1 mini: Zvýraznění pinu připojeného k DHT11 (Pozor! pin NodeMCU D4 = Arduino 2)  Obr. 41: Arduino IDE: Virtuální piny (V5 – vlhkost a V6 – teplota), kterým bude „rozumět“ aplikace Blynk v našem mobilním zařízení

Obr. 42: Arduino IDE: Tlačítko pro kompilaci kódu a jeho následné nahrání do našeho ESP8266  Obr. 43: Arduino IDE: Ve stavovém okně vidíme, že kompilace i nahrávání proběhlo korektně, a na konci nahrávání kódu do ESP8266 proběhl hard reset, což je v pořádku  Obr. 44: Arduino IDE: Ukázka výpisu ze sériového monitoru – zdárné připojení k místní wifi síti a k Blynk cloudu

Teď už jen dokončit naši aplikaci na mobilním zařízení.

zpět na začátek

7.2 Blynk aplikace k čidlu DHT11

V Blynku jsme skončili prázdnou černou plochou (obr. 37). Nyní si ukážeme, jak přidat nějaké zobrazovací prvky (widgety). Naším cílem je aplikace, která nám bude zobrazovat teplotu a vlhkost v číselné podobě a také v grafu. Naměřená data bychom si také chtěli případně stáhnout v nějakém tabulkovém formátu. Toto všechno nám Blynk umožňuje, a to navíc ve vizuálním stylu, takže už nemusíme psát (ani kopírovat) žádný další textový kód.

Pomocí tlačítka + (plus) vpravo nahoře (obr. 45) si zobrazíme nabídku widgetů (více o widgetech). Možností máme opravdu hodně. Widgety jsou rozděleny do několika skupin: ovladače, zobrazovače, notifikace, rozhraní a další (obr. 46). My využijeme prvek Value Display (případně Labeled Value, obr. 47), který slouží k zobrazování hodnot. Než Widget Box opustíme, všimneme si ještě jedné věci, která souvisí s obchodním modelem Blynku. V horní části vidíme svoji dostupnou Energii. U každého widgetu je uvedena hodnota energie, kterou vás jeho použití bude stát. Na začátku jsme dostali zdarma jakýchsi 2000 energobodů, což pro náš Wemos D1 mini kit rozšířený o LED a tlačítko stačí „tak akorát“. Použitím prvku Value Display (případně Labeled Value) se nám bilance energie sníží o 200 bodů (resp. o 400 bodů, Labeled Value). Jakmile se nám hodnota sníží tak, že si některé prvky nemůžete dovolit, bude se jejich „cena“ zobrazovat červeně. Je jasné, že jakmile energie „dojde“ a budeme ji chtít, můžeme si ji dokoupit. K tomu slouží tlačítko + Add v pravém horním rohu (obr. 48). Energii si můžeme dokoupit v určitých „balíčcích“ (k dispozici jsou různé nabídky také na webu, balíčky pro školy se dají domluvit individuálně). Cena jednoho bodu vychází lépe u těch dražších online balíčků (obr. 49). Nákup z aplikace Blynk v mobilu proběhne klasicky online, takže hned vidíte nárůst své použitelné energie (obr. 50). Užitečné je, že pokud prvek (widget) ze své aplikace odstraníte, energie se vám vrátí zpět. Ale pozor, v některých situacích se vám energie již zpět nevrací (např. při sdílení aplikace mezi více uživateli).

Obr. 45: Blynk app: Tlačítko pro otevření dialogu s dostupnými widgety pro „stavbu“ aplikace  Obr. 46: Blynk app: Přehled dostupných widgetů, ze kterých můžeme poskládat svoji aplikaci  Obr. 47: Blynk app: Prvek (widget) Value Display použijeme ke zobrazování hodnot; pokud chceme zobrazovat i jednotku měřené veličiny, musíme použít Labeled Value, „zaplatíme“ ovšem více „energie“.

Obr. 48: Blynk app: Použitím widgetů spotřebováváme „energii“ (E) a některé prvky pak mohou být zablokované (hodnota E u widgetu je červeně)  Obr. 49: Blynk app: Energii si můžeme dokoupit a vesele stavět i složitější aplikace  Obr. 50: Blynk app: Po dokoupení energie vidíme nárůst na našem ukazateli Energy Balance

Po výběru widgetu Value Display (případně Labeled Value) se nám reprezentace zobrazovacího prvku objeví na ploše aplikace jako šedý obdélník (obr. 51). Delším přidržením obdélníku se nám aktivuje možnost měnit jeho rozměr a pozici. Krátkým stisknutím se nám objeví dialog nastavení prvku, ve kterém je vhodné prvek pojmenovat, začneme tedy třeba „teplotou“. To důležité je pro nás ale především tlačítko PIN (obr. 52). Vzpomínáte, co jsme měli v kódu v Arduino IDE? – Teplota V6 a vlhkost V5. – Nastavíme tedy virtuální pin V6 (obr. 53). Po potvrzení nastavení se hodnota vybraného pinu objeví v políčku/tlačítku INPUT (obr. 54). A to je vše. Nic dalšího nastavovat nemusíme.

Můžeme se vrátit na obrazovku naší aplikace a celý postup zopakovat pro vlhkost, u které nastavíme na druhém zobrazovači virtuální pin V5 (obr. 5557).

Obr. 51: Blynk app: Po výběru widgetu Value Display se na ploše aplikace objeví šedý obdélník; ťuknutím se dostaneme do nastavení prvku (dlouhým podržením ho můžeme vybrat a upravit jeho pozici a velikost)  Obr. 52: Blynk app: Nastavení pinu, ze kterého budeme dostávat data  Obr. 53: Blynk app: V našem případě použijeme virtuální pin, teplota bude na pinu V6

Obr. 54: Blynk app: Po nastavení pinu je vidět vybraný pin V6 v tlačítku  Obr. 55: Blynk app: Obdobným způsobem přidáme další Value Display a provedeme jeho nastavení  Obr. 56: Blynk app: Tentokrát nastavíme pin V5 (vlhkost)

Tím máme vše připraveno k prvnímu testu. Aplikaci spustíme tlačítkem play/run v horním pravém rohu (obr. 58). Za předpokladu, že máme naše ESP8266 připojené k internetu, měla by se nám během pár sekund začít zobrazovat data – teplota a vlhkost (obr. 59). Tlačítko play se změnilo na stop, kterým můžeme aplikaci zastavit a třeba provést nějaké změny. Vedle tlačítka stop je ikona reprezentující naše připojené zařízení (Wemod D1 mini). Po rozkliknutí se nám zobrazí stav zařízení (obr. 60), v případě problémů s připojením (je např. možné, že naše ESP8266 není z nějakého důvodu připojené k internetu a Blynk cloudu) se zobrazí červená výstraha (obr. 61).

Obr. 58: Blynk app: Naši aplikaci spustíme tlačítkem Play/Run  Obr. 59: Blynk app: V naší aplikaci se zobrazí aktuální hodnota teploty a vlhkosti  Obr. 60: Blynk app: Po ťuknutí na ikonu desky mikrokontroléru se v horní části objeví stavové hlášení

Obr. 61: Blynk app: V případě problémů uvidíme červenou výstrahu  Obr. 62: Blynk app: Dalším widgetem v naší aplikaci bude graf SuperChart  Obr. 63: Blynk app: Widget SuperChart umístěný na ploše aplikace

Nakonec si ještě přidáme zobrazení teploty a vlhkosti v grafu. Postup bude podobný, jen použijeme widget SuperChart (obr. 62). Postup nastavení je na obrázcích 63 75. Vpravo dole jsou v grafu dvě ikony. Krajní slouží k maximalizaci grafu (obr. 76). Ikona tří teček pak vede (obr. 77) ke zobrazení možnosti exportu dat v tabulkovém formátu CSV (obr. 78) a k smazání naměřených dat.

Obr. 64: Blynk app: Ve widgetu SuperChart si přidáme datový proud (Datastream)   Obr. 65: Blynk app: Datový proud v SuperChart pojmenujeme a nastavíme datový zdroj  Obr. 66: Blynk app: Pojmenování datového proudu v rámci widgetu SuperChart
Obr. 67: Blynk app: V dialogu datového proudu vytvořeného pro teplotu nastavíme správný pin (V6)  Obr. 68: Blynk app: Po nastavení pinu je vidět vybraný pin V6 v tlačítku, pro lepší přehlednost je vhodné zadat také jednotku a případně si změnit barvu a typ čáry, ovlivnit můžeme i počet zobrazovaných desetinných míst  Obr. 69: Blynk app: Stejným způsobem jako u teploty přidáme druhý datový proud pro vlhkost
Obr. 70: Blynk app: Stejným způsobem jako u teploty přidáme druhý datový proud pro vlhkost  Obr. 71: Blynk app: Po nastavení pinu je vidět vybraný pin V5 v tlačítku, pro lepší přehlednost je vhodné zadat také jednotku (zde znak %) a případně si změnit barvu a typ čáry, pro vlhkost můžeme také nastavit osu Y na rozsah 0 až 100  Obr. 72: Blynk app: Máme nastavené naše dva datové proudy (teplota a vlhkost)
Obr. 73: Blynk app: Po přidání a nastavení widgetu SuperChart aplikaci spustíme  Obr. 74: Blynk app: Ve widgetu SuperChart se vykresluje graf teploty a vlhkosti  Obr. 75: Blynk app: Po zastavení aplikace můžeme upravit velikost widgetu tak, abychom využili celou dostupnou plochu

Obr. 76: Blynk app: Po opětovném spuštění máme možnost graf jednoduše maximalizovat (tlačítkem dole vpravo)  Obr. 77: Blynk app: Maximalizovaný widget SuperChart (v horním pravém rohu zrušení maximalizace, v dolním pravém rohu možnost exportu a smazání dat)  Obr. 78: Blynk app: Dialog pro export naměřených dat ve formátu CSV a možnost smazaní dat (Erase data)

Naše první IoT aplikace, která měří teplotu a vlhkost, je nyní hotová. Nezapomeňte, že pokud chcete data zaznamenávat, musí být aplikace ve vašem mobilním telefonu spuštěná (tlačítko play). Pak už ale není nutné být s telefonem stále on-line připojen k internetu. Data se zaznamenávají na Blynk cloudu a po opětovném připojení mobilního telefonu k internetu se nám naměřená data v aplikaci zobrazí.

zpět na začátek

7.3 Jdeme na tlačítko…

Už víme, že můžeme v rámci IoT zaznamenávat nějaká data. V našem případě je to teplota a vlhkost z čidla DHT11. Ale co kdybychom chtěli, aby se stisknutí tlačítka na naší Wemos D1 mini sestavě nějak promítnulo na našem mobilním telefonu? Mohli bychom si třeba takto poslat nějakou zprávu? Ale jistě! Zkusíme si z tlačítka udělat takové tlačítko, které nám přivolá děti do kuchyně k jídlu. Mohlo by to ale být klidně tlačítko k přivolání pomoci pro naši babičku/dědečka, nebo speciální tlačítko na přivolání školníka. Samozřejmě, že ve všech případech půjde o to odeslat stisknutím tlačítka zprávu na mobilní telefon osoby, která bude mít naši aplikaci (mohli bychom ale třeba také odesílat email na konkrétní emailové adresy nebo třeba zprávu na Twitter a nebo všechno uvedené dohromady).

Ještě než začneme s programováním tlačítka, vytvoříme si v Blynku na svém mobilním zařízení nový projekt (aplikaci) pro naše testy s tlačítkem. Můžeme ji pojmenovat přímo „Tlačítko“ (obr. 79). Tím pádem nám na email přijde další autorizační kód (Token) k nově vytvořené a zatím prázdné aplikaci.

Obr. 79: Blynk app: Pro tlačítko si vytvoříme novou samostatnou aplikaci

zpět na začátek

7.4 Programujeme tlačítko

Předpřipravený příklad pro tlačítko najdeme ve složce IoT-ESP8266-BUTTON-BLYNK-04. Otevřeme si soubor IoT-ESP8266-BUTTON-BLYNK-04.ino v Arduino IDE a podíváme se, co nás zde čeká za úpravy. Jako první musíte opět vložit tři správné textové řetězce. Text v uvozovkách „Your Auth Token“ nahradíte zkopírovaným novým autorizačním tokenem, který vám přišel emailem po vytvoření další aplikace v Blynku. V případě „your ssid“ zadáme SSID své/školní wifi sítě a „your pass“ se změní na heslo k wifi síti (pozor na uvozovky, v kódu musí zůstat, obr. 80). Posuneme se o něco níže na řádek 55, kde si můžeme napsat mezi uvozovky libovolnou zprávu (obr. 81). Máme možnost do zprávy vložit i název svého zařízení, což může být někdy užitečné (příklad je v kódu v poznámce, viz obr. 82, více informací). Tak třeba: „V kuchyni se podává jídlo. Kdo nepřijde, má smůlu!“ V tomto kroku už zbývá jen kompilace a nahrání do ESP8266 (stejně jako na obr. 42obr. 43). Test provedeme obdobně jako u čidla DHT11 (viz obr. 44).

Obr. 80: Arduino IDE: Nastavení tokenu, ssid a hesla wifi sítě pro aplikaci Tlačítko  Obr. 81: Arduino IDE: Svoji textovou zprávu musíme vložit opět mezi uvozovky  Obr. 82: Arduino IDE: Jeden z řádků v ukázkovém kódu nám ukazuje možnost vložit do zprávy název zařízení

zpět na začátek

7.5 Blynk aplikace k tlačítku

Na plochu aplikace vložíme widget Notification (obr. 83). V nastavení widgetu (obr. 84) máme možnost reagovat např. i na situaci, kdy by bylo naše ESP8266 offline (tuto volbu ponecháme vypnutou – OFF). A to je vše, nic dalšího pro provoz našeho tlačítka nepotřebujeme (obr. 85). Po spuštění aplikace si nejdříve ponecháme Blynk viditelný. Když stiskneme tlačítko a zobrazí se nám zpráva viditelná na obrázku 86, je vše v pořádku. Pokud ne, je potřeba zkontrolovat, zda jsme s ESP8266 připojeni k wifi síti a k internetu, zda jsme v kódu použili správný token, … Zkusme nyní dva experimenty. Stisknout tlačítko, když nebude aplikace Blynk na popředí – zobrazí se standardní upozornění (obr. 87) – a když bude mobilní zařízení uzamčeno – zde záleží na nastavení samotného zařízení a povolení zpráv na zamykací obrazovce (obr. 88).

Obr. 83: Blynk app: Pro aplikaci s Tlačítkem nám stačí widget Notification  Obr. 84: Blynk app: Dialog nastavení widgetu Notification  Obr. 85: Blynk app: Výsledná aplikace bude prakticky prázdná (až na prvek Notification)

Obr. 86: Blynk app: Takto vypadá doručená zpráva, když je Blynk aplikací v popředí  Obr. 87: Blynk app: Takto vypadá doručená zpráva, když je Blynk aplikací v pozadí  Obr. 88: Blynk app: Takto vypadá doručená zpráva na zamčené obrazovce mobilu

Pokud vám vše funguje, můžete si pogratulovat, máte hotovou svoji druhou IoT aplikaci.

zpět na začátek

7.6 Programujeme světlo

Na úvod si v Blynku na svém mobilním zařízení opět vytvoříme nový projekt (aplikaci) pro naše testy se světlem (s LED). Na svém emailu si vyzvedneme třetí autorizační Token. Kód poslední aplikace najdeme ve složce IoT-ESP8266-LED-BLYNK-03. V Arduino IDE si otevřeme soubor IoT-ESP8266-LED-BLYNK-03.ino. Vše se bude opět opakovat (řetězec pro auth, ssid, pass). Nyní si ale všimneme řádku 43, kde je uveden pin, na který bychom měli mít LED připojenu (pin 5) a řádku 47, kde je vidět, že pro rozsvícení LED je použit virtuální pin V9 (obr. 89). A následuje zase kompilace a nahrání do ESP8266 (stejně jako na obr. 42obr. 43). Test provedeme obdobně jako u čidla DHT11 (viz obr. 44).

Obr. 89: Arduino IDE: Dáme si pozor na LED_PIN a zapamatujeme si virtuální pin V9

zpět na začátek

7.7 Blynk aplikace ke světlu

Naše poslední aplikace v Blynku (nastavení na obr. 90), kterou jsme vytvořili na začátku předchozí části, Programujeme světlo, bude obsahovat widget tlačítka – Button (případně můžete použít dražší Styled Button, obr. 91). Možná jste při předchozích testech používali takové widgety, že již nemáte dostatečné množství „energie“. Pak je třeba vrátit se do některé z minulých aplikací a některý z widgetů v aplikaci smazat, čímž se vám doplní energie a můžete pokračovat dále (nebo si můžete energii dokoupit). Pakliže jste používali pouze doporučené widgety (ty nejlevnější), měla by vám energie na jeden widget Button ještě zbývat.
Po vložení tlačítka (obr. 92) je vhodné upravit jeho velikost a pozici (obr. 93). V dialogu nastavení tlačítka nezapomeneme nastavit správný pin pro ovládání LED (nyní je to virtuální pin V9). Mód tlačítka nastavíme na přepínač – SWITCH (má dva stavy zapnuto/vypnuto). Můžeme doplnit popisek při zapnutém a vypnutém přepínači (včetně barvy textu) a podobně nastavit barvu pozadí zapnutého a vypnutého stavu přepínače (obr. 94). Po návratu do aplikace (obr. 95) nezbývá než aplikaci spustit a otestovat (obr. 96obr. 97). A jak by to mělo vypadat? Na ukázku se můžete podívat na animovaném gifu z jedné hodiny (obr. 98). Povšimněte si delší reakční doby tlačítka. Na to nejsme při rozsvěcení běžného osvětlení zvyklí. Jde zhruba o sekundovou prodlevou způsobenou komunikací v řetězci mobil – Blynk server – naše ESP8266.

Takže třetí aplikace je hotova a můžeme jít ještě o kousek dál…

Obr. 90: Blynk app: Naši třetí aplikaci jsme nazvali „Světlo – LED“  Obr. 91: Blynk app: Použít můžeme jednoduché tlačítko Button (případně „dražší“ Styled Button)  Obr. 92: Blynk app: Widget tlačítka vložený do naší aplikace

Obr. 93: Blynk app: Velikost a pozici widgetu tlačítka je vhodné upravit  Obr. 94: Blynk app: Nastavení widgetu tlačítka (popis v textu článku)  Obr. 95: Blynk app: Tlačítko máme nastaveno, spustíme aplikaci…

Obr. 96: Blynk app: Po spuštění aplikace vidíme, že text na tlačítku se změnil a můžeme zapnout naši LED  Obr. 97: Blynk app: Po rozsvícení LED se změní barva a text tlačítka  Obr. 98: Blynk app: Ukázka použití LED v praxi (obdobná aplikace jako ta námi vytvořená)

zpět na začátek

7.8 Vše do jedné aplikace

Jestli jste se dostali až sem, možná vás napadá, proč z našich tří aplikací neudělat jednu jedinou. To je dobrý nápad a poslouží nám k procvičení všech věcí, které jsme si ukázali. Pokud se alespoň trochu orientujete v programování (v Arduino IDE jsme používali Wiring, což je v podstatě C++), můžete si výsledný kód pro ESP8266 zkusit sestavit na základě našich ukázek samostatně. Neprogramátoři mohou opět použít ukázkový kód v adresáři IoT-ESP8266-LED-BUTT-DHT-VSE-05. Aby byla aplikace přehledná, doporučujeme widget pro vytvoření „záložek“ Tabs. Pro případ, že nechcete nakupovat v Blynku Energii, budete muset naše dosavadní tři aplikace odstranit, Project Settings –> Delete (nebo odstranit dvě a jednu „přestavět“), čímž budete mít k dispozici opět 2000 bodů. A abychom využili našich 2000 bodů na maximum, můžeme si za zbývajících 100 bodů přidat widget Email a tlačítkem zasílat nejen upozornění do aplikace Blynk, ale také emailem (nastavení již určitě zvládnete sami). Svoji aplikaci můžete samozřejmě vizuálně poskládat jinak než my (obr. 99, obr. 100obr. 101).

Obr. 99: Blynk app: Výsledná aplikace 3 v 1. Nahoře jsou vidět tři záložky  Obr. 100: Blynk app: Druhá záložka obsahuje pouze tlačítko pro zapnutí/vypnutí LED  Obr. 101: Blynk app: Na třetí záložce najdeme widget Notification a navíc i Email

zpět na začátek

7.9 Dva náměty bez Blynku

Říkáte si, zda by nešlo Wemos D1 mini používat i bez Blynku? Šlo, a to mnoha způsoby. Rámcově si představíme dvě možnosti. Detailní popis ve stylu „krok za krokem“ by ovšem vydal na samostatný článek, takže to bude opravdu jen stručná ukázka další možné cesty a nasměrování na zdroje ke studiu a samostatnému experimentování.

zpět na začátek
7.9.1 TMEP

V rámci ukázkového kódu v adresáři IoT-ESP8266-DHT11-TMEP jsou použity dvě online služby pro záznam dat (obr. 102). Jednou je skvělý projekt Michala Ševčíka TMEP. Po vytvoření účtu si můžete zdarma založit subdoménu, na které pak budete mít dostupné přehledné grafy a dlouhodobé statistiky. K dispozici je česká příručka, která vám ukáže, jak službu se svým čidlem zprovoznit. K dispozici je i mapa čidel. V našem ukázkovém kódu se data z čidla odesílají primárně právě na server TMEP. Můžete se podívat, jaký je průběh teploty a vlhkosti u nás v Centru technického vzdělávání Půda (upozorňuji, že jde pouze o test a čidlo DHT11 nebylo nijak kalibrováno).
Úprava kódu v Arduino IDE je relativně jednoduchá. Opět je třeba nastavit ssid a heslo (password) vaší WiFi sítě a vložit GUID řetězec, který si vytvoříte pod svým účtem na TMEP.cz (obr. 107). Kód zkompilujeme a nahrajeme do Wemos D1 mini s DHT11 shieldem, zkontrolujeme připojení k WiFi a už se můžeme těšit na pěkné přehledné grafy online.

zpět na začátek
7.9.2 Thingspeak

Druhá služba, která je v ukázkovém kódu použita, je Thingspeak.com. K aktivaci je potřeba provést v kódu IoT-ESP8266-DHT11-TMEP.ino malou úpravu. Na řádku 131 (obr. 103) je třeba odstranit dvě lomítka, která znamenají, že jde o poznámku a nikoli o kód, který se má vykonat. A podobným způsobem můžeme „vypnout“ odesílání dat na tmep.cz (tam lomítka na začátek řádku naopak přidáme). Výsledek je vidět na obrázku obr. 104.
Na portálu Thingspeak je třeba založit si svůj účet a vše řádně nastavit. K dispozici je také průvodce (tutoriál), tentokráte ovšem anglicky. V kanálu (obr. 105), který si založíte (jak na to), je dobré nastavit si popisek prvního pole (Field1) na „Teplota“ a druhého (Field2) na „Vlhkost“ (v našem ukázkovém kódu je také použito první políčko pro teplotu a druhé pro vlhkost) (obr. 106). Ve svém kanálu si pak můžete zobrazovat různé vizuální prvky (použijte Add Visualisation). V případě, že chcete s daty dále pracovat, máte online k dispozici MATLAB (pro analýzu i vizualizaci) a vše může být opět zobrazeno ve vašem kanálu pomocí vizualizačních „prvků“. Základní pohledy na váš kanál jsou přitom dva – soukromý (Private View) a veřejný (Public View). Ukázka stejných dat, jako v případě policka.tmep.cz, je v našem testovacím kanálu na Thingspeaku (data se z našeho Wemos D1 mini odesílají současně na obě online služby).

Obr. 102: Arduino IDE: Části kódu, kterým musíme věnovat svoji pozornost při využití tmep.cz a thingspeak.com  Obr. 103: Arduino IDE: Pro odesílání dat na Thingspeak.com je třeba smazat dvě úvodní lomítka na řádku 131  Obr. 104: Arduino IDE: Ukázka úpravy kódu, kdy se data odesílají na Thingspeak.com a na TMEP.cz se neodesílají

Obr. 105: Thingspeak.com při zobrazení kanálů (založený je jen jeden kanál)  Obr. 106: Dialog nastavení kanálu na Thingspeak.com   Obr. 107: Seznam čidel na tmep.cz (zde jedno čidlo) a dialog nastavení čidla

zpět na začátek

8. Zkušenosti z výuky

Možnosti využití IoT ve výuce jsou velmi široké, což jsme nastínili již na začátku tohoto článku. Velkou výhodou je, že použitá IoT sada s Wemos D1 mini je skutečně využitelná v nějakém reálném projektu. Není to tedy jednoúčelová výuková pomůcka, která slouží pouze k základnímu seznámení s nějakou tematikou, a tím to končí. Následující zkušenosti vychází z práce s žáky 6. a 7. třídy (resp. sekundy a tercie osmiletého gymnázia). Jednotlivé „kroky“ je možné realizovat jako samostatné hodiny v rámci výuky IVT, přičemž dva kroky se dají dobře spojit do jedné dvouhodinovky.

zpět na začátek

8.1 Krok nula (příprava učitele a žáků)

Ještě než začneme „v hodině“, je potřeba nainstalovat na počítačích, které budeme s žáky používat, Arduino IDE a všechny potřebné komponenty a rozšíření (nezapomeneme na ovladač pro CH340). Tuto část můžeme také absolvovat přímo s žáky, ale počítejme s tím, že příprava nám zabere klidně celou vyučovací hodinu. Na druhou stranu, někteří žáci pak budou schopní lépe celý postup zopakovat na svém domácím počítači. Soubory příkladů umístíme na nějaké sdílené úložiště tak, aby byly přístupné všem žákům. Žáci dostanou dopředu úkol nainstalovat si na své mobilní zařízení (telefon/tablet) aplikaci Blynk. Osvědčilo se využívat zařízení žáků (BYOD), protože žáci velmi oceňují, že pak mohou snadno ukázat ostatním (spolužákům, kamarádům, rodičům,…) svoji IoT aplikaci.

zpět na začátek

8.2 První krok

Na úvod se osvědčilo žákům ukázat pár příkladů, jak se IoT prakticky využívá, a následně je ponechat vyhledat další příklady „z praxe“. Když už máme s žáky nějaký seznam konkrétních příkladů využití IoT, hodí se navázat diskuzí o tom, co všechno je potřeba k tomu, aby takové IoT zařízení „fungovalo“. Velkou motivací pro žáky jsou poté ukázky konkrétních projektů postavených na obdobných nebo stejných komponentách, se kterými budeme pracovat (jako příklad mohou posloužit různá Arduina, ESP8266, ESP32 a další). Je vhodné nechat žáky vyhledávat různé projekty, přičemž použijí klíčová slova jako „wemos“, „esp8266“, „arduino“ v kombinaci s klíčovými slovy „Internet of Things““, „IoT“, „home automation“. Každý pak představí, co zajímavého našel, a vysvětlí, proč ho to zaujalo a zda by to pro něj mělo nějaké praktické využití. Žáci takto zjistí, že to, co se budou učit, je použito v celé řadě praktických projektů, které se školou a výukou přímo vůbec nesouvisí. Je tu jasný přesah do praxe a otázka „K čemu nám to bude?“ je předem jasně zodpovězena.

zpět na začátek

8.3 Druhý krok

My jsme si z naší sady, v tomto článku, sestavili postupně tři různé aplikace a ty pak zkombinovali do jedné. S žáky je vhodné začít v jiném pořadí. Osvědčilo se předestřít žákům ony tři možnosti a začít tou, která je nejvíce zaujme. Z měření teploty a vlhkosti, rozsvěcení LED a speciálního tlačítka většinou zvítězí právě ta poslední možnost, tlačítko, což se nám hodí. V případě tlačítka můžeme vynechat celý DHT11 shield, stejně jako nepájivé pole. Tím se naše práce značně zjednoduší a k výsledné Blynk aplikaci se dobereme o to rychleji. Při experimentování také někteří žáci rychle zjistí, jak se dá aplikace sdílet mezi více uživateli. V takovém případě ale přijdou v Blynku o „energii“ nevratně, což nám pak může zkomplikovat další postup. Je potřeba upozornit na tuto skutečnost předem. Pomůže, pokud žákům vysvětlíme, že sdílení aplikace bude smysluplnější až u nějakého jejich vlastního projektu.

zpět na začátek

8.4 Třetí krok

Zbývají nám dvě aplikace – měření teploty a vlhkosti a rozsvěcení LED. V případě teploty a vlhkosti (DHT11) je situace opět jednodušší (nemusíme zapojovat LED a odpor). Nabízí se tu možnost domluvit si předem zapojení elektrického obvodu s LED v rámci výuky fyziky. Obě aplikace se pak dají zvládnout v rámci jedné hodiny, případně se dá práce bez problému přerušit a navázat pokračováním v další hodině. Někteří zdatnější žáci stíhají samostatně vytvořit i závěrečnou aplikaci kombinující vše dohromady.

zpět na začátek

8.5 Čtvrtý krok

Posledním krokem je „vlastní projekt“ žáků. Je vhodné zadat žákům vymyslet nějaké uplatnění IoT na půdě školy a v rámci výuky různých předmětů. Přímo se nabízí přírodní vědy, kde můžeme využít celou řadu dalších čidel v rámci nejrůznějších experimentů. I s pouhým měřením teploty a vlhkosti můžeme řešit různé zajímavé badatelské úkoly. Několik nápadů žáků: Která třída ve škole je nejteplejší? Může různá teplota na různých místech ve třídě ovlivnit známky z písemky? Mění se ve třídě v průběhu vyučování vlhkost? Jak dlouho předem se musí zatopit, aby bylo po zimních prázdninách ve třídě teplo? Vydávají rostliny nějaké teplo? Jaká je vlhkost a teplota ve skleníku? Budou naše těla ve třídě více „topit“ po hodině tělocviku? Je v místě korodujících trubek od topení větší vlhkost než tam, kde trubky nekorodují? Podobně vymyslí žáci spoustu námětů na využití tlačítka i náměty na to, co bychom mohli ve škole rozsvěcet a zhasínat přímo z našich mobilních telefonů. A není to jen o rozsvěcení, ale o ovládání čehokoli, mohli bychom třeba spouštět zatemnění v učebně. Velice důležité je upozornit žáky, že nemůžeme zasahovat do elektrických rozvodů a do elektrických spotřebičů napájených 230 V (přitom návodů na tyto úpravy najdou žáci na internetu nepřeberně!). Máme ale možnost vložit spínací relé do místa, kde je již bezpečné napětí (to může být lampička, která má napájecí adaptér mimo vlastní lampičku, a z adaptéru je již výstup 12 V).

zpět na začátek

8.6 Tipy

V případě napájení naší sestavy s ESP8266 z powerbanky se hodí mikrokontrolér v době nečinnosti uspávat (převést ho do tzv. deep-sleep módu), jinak se nám powerbanka docela rychle vybije (a to v řádu dní). Jaký je v tom rozdíl a jak na to se dozvíte třeba na diyprojects.io. Pokud je váš projekt dlouhodobějšího rázu a máte po ruce el. zásuvku, je nejjednodušším řešením použít adaptér (např. klasickou nabíječku mobilního telefonu s micro USB konektorem).

Docela se hodí, když škola pro různé projekty žáků zakoupí balíček „energie“ pro Blynk, který pak žáci mohou využívat (jeden kód – 10 000 bodů/žáka vycházel na 250 Kč/žáka, při 400 žácích byla cena za 10 000 b. výrazně nižší – cca 60 Kč/žáka). Někteří žáci ale nemají problém zakoupit si „energii“ pro svůj projekt/aplikaci sami, vždyť pracují na svém zařízení a pod svým účtem :-).

zpět na začátek

9. Shrnutí a závěr

Krok za krokem jsme si prošli postup vytvoření tří IoT aplikací. Použili jsme k tomu levnou sadu Wemos D1 mini. Ukázali jsme si, že s malou pomocí dokáže reálnou IoT aplikaci vytvořit i ten, kdo není zrovna programátor, a nemusíme se přitom omezovat na „výukové hračky“. Nastínili jsme si také využití služeb jako je TMEP a Thingspeak. Samozřejmě jsme celou řadu věcí pominuli a nevěnovali se detailnímu nastavení Blynku, všech komponent (witgetů), možnostem sdílení Blynk aplikací (což by si také zasloužilo svůj prostor), v Arduino IDE nám zůstala spousta řádek, o jejichž funkci jsme se vůbec nezmínili, a je toho ještě mnohem více, co by se slušelo zmínit a vysvětlit… Myslím si ale, že pro začátek toho bylo až až... Berme to tak, že jsme vyběhli na trať a jsme teprve kousek za startem. Přitom už teď můžeme mít velkou radost z toho, že vůbec běžíme, a o tuto radost bychom se měli podělit se svými žáky. Přiveďme je také na start a nechme je uběhnout kousek po IoT trati. Věřím, že z toho budou mít vaši žáci také radost a náležitě si seznamování s IoT užijí. A nejlepší bude, až nás žáci předběhnou a přijdou s nějakým svým inovátorským velkým IoT projektem a budou na nás třeba i vzpomínat, že jsme je kdysi dovedli na pomyslnou startovní čáru.

Autor: Tomáš Feltl, Gymnázium Polička & Časopis e-Mole.cz & Centrum technického vzdělávání při Městské knihovně Polička

Jak citovat tento článek:

FELTL, Tomáš. Internet věcí (IoT) s Wemos D1 mini – krok za krokem. e-Mole: časopis o výuce nejen s digitálními technologiemi [online]. 2021 (2/12). Vydáno: 12. 2. 2021. vyd. Tomáš Feltl – TFSoft, 2021. [cit. datum citování]. ISSN 2336-5714. Dostupné z: https://www.e-mole.cz/clanek/internet-veci-iot-s-wemos-d1-mini-krok-za-krokem

Všechny obrázky v článku: 
Obr. 1: Sada LasKKit IoT MINI Starter Kit (www.laskarduino.cz)
Obr. 2: Rozbalená sada LasKKit IoT MINI Starter Kit (www.laskarduino.cz)
Obr. 3: Všechny komponenty, které v rámci našeho seznamování s IoT použijeme
Obr. 4: Wemos D1 mini osazený mikrokontrolérem ESP8266 (popis částí v textu článku)
Obr. 5: Wemos D1 mini DHT shield (popis částí v textu článku)
Obr. 6: Wemos D1 mini Button shield (popis částí v textu článku)
Obr. 7: Wemos D1 mini ESP8266 a DHT11 shield
Obr. 8: Wemos D1 mini ESP8266 a DHT11 shield (zelené šipky naznačují piny RST a TX, které jsme použili ke kontrole správné orientace před kompletací)
Obr. 9: Wemos D1 mini ESP8266 a DHT11 shield
Obr. 10: Připravené komponenty naší malé IoT sestavy (zleva shora: Wemos D1 mini moduly: ESP8266, DHT11 shield, Button shield, nepájivé pole, červená LED, rezistor)
Obr. 11: Wemos D1 mini ESP8266 zorientujeme USB portem ven z nepájivého pole
Obr. 12: Wemos D1 mini ESP8266 správně umístěný do nepájivého pole
Obr. 13: Zapojení LED (popis částí v textu článku)
Obr. 14: Zapojení rezistoru (popis částí v textu článku)
Obr. 15: Boční pohled na finální zapojení LED s rezistorem
Obr. 16: Připojení DHT11 shieldu
Obr. 17: Připojení shieldu s tlačítkem (Button shield)
Obr. 18: Naše hotová sestava Wemos D1 mini s připojenou powerbankou jako napájecím zdrojem
Obr. 19: Správce zařízení s detekovaným ESP8266 modulem (USB-SERIAL CH340 (COMX))
Obr. 20: Arduino IDE je k dispozici zdarma na stránkách www.arduino.cc/en/software
Obr. 21: Arduino IDE je jednoduché a přehledné – i když nedisponuje pokročilejšími funkcemi, je pro naše potřeby zcela dostačující
Obr. 22: Arduino IDE: Zobrazení dialogu nastavení
Obr. 23: Arduino IDE: Přidání adresy serveru s definicí dalších „desek“ (máme ESP8266)
Obr. 24: Arduino IDE: Zobrazení dialogu „Správce desek“.
Obr. 25: Arduino IDE: Vyhledání řetězce „ESP“ a nalezení a instalace odpovídajícího rozšíření…
Obr. 26: Arduino IDE: Zobrazení dialogu „Správce knihoven“
Obr. 27: Arduino IDE: Vyhledání řetězce „blynk“ a nalezení a instalace odpovídající knihovny…
Obr. 28: Arduino IDE: Vyhledání řetězce „DHT“ a nalezení a instalace odpovídající knihovny…
Obr. 29: Arduino IDE: Nastavení naší desky s ESP8266 – Wemos D1 mini
Obr. 30: Arduino IDE: Nastavení COM portu naší desky Wemos D1 mini (je třeba nastavit „svůj port“)
Obr. 31: Schématické znázornění IoT s Blynkem
Obr. 32: Blynk app: Vytvoření nového účtu
Obr. 33: Blynk app: Založení nového projektu (aplikace)
Obr. 34: Blynk app: Pojmenování projektu a výběr HW, v našem případě Wemos D1 mini
Obr. 35: Blynk app: Výběr typu připojení a volba tématu vzhledu (tmavý/světlý)
Obr. 36: Blynk app: Zpráva o odeslání autorizačního tokenu k vytvořené aplikaci emailem, token je dostupný také v nastaveních aplikace
Obr. 37: Blynk app: Nově vytvořená aplikace je zatím prázdná, musíme ji teprve poskládat z různých vizuálních prvků, k nastavení aplikace použijeme ikonu „matičky“ v horním menu (zobrazí se dialog Project Settings)
Obr. 38: Generátor příkladů kódů s nastavenými parametry pro Wemos D1 a čidlo DHT11 (examples.blynk.cc)
Obr. 39: Arduino IDE: Ukázkový kód pro DHT11 čidlo (zvýrazněny části zmiňované v textu článku)
Obr. 40: Wemos D1 mini: Zvýraznění pinu připojeného k DHT11 (Pozor! pin NodeMCU D4 = Arduino 2)
Obr. 41: Arduino IDE: Virtuální piny (V5 – vlhkost a V6 – teplota), kterým bude „rozumět“ aplikace Blynk v našem mobilním zařízení
Obr. 42: Arduino IDE: Tlačítko pro kompilaci kódu a jeho následné nahrání do našeho ESP8266
Obr. 43: Arduino IDE: Ve stavovém okně vidíme, že kompilace i nahrávání proběhlo korektně, a na konci nahrávání kódu do ESP8266 proběhl hard reset, což je v pořádku
Obr. 44: Arduino IDE: Ukázka výpisu ze sériového monitoru – zdárné připojení k místní wifi síti a k Blynk cloudu
Obr. 45: Blynk app: Tlačítko pro otevření dialogu s dostupnými widgety pro „stavbu“ aplikace
Obr. 46: Blynk app: Přehled dostupných widgetů, ze kterých můžeme poskládat svoji aplikaci
Obr. 47: Blynk app: Prvek (widget) Value Display použijeme ke zobrazování hodnot; pokud chceme zobrazovat i jednotku měřené veličiny, musíme použít Labeled Value, „zaplatíme“ ovšem více „energie“.
Obr. 48: Blynk app: Použitím widgetů spotřebováváme „energii“ (E) a některé prvky pak mohou být zablokované (hodnota E u widgetu je červeně)
Obr. 49: Blynk app: Energii si můžeme dokoupit a vesele stavět i složitější aplikace
Obr. 50: Blynk app: Po dokoupení energie vidíme nárůst na našem ukazateli Energy Balance
Obr. 51: Blynk app: Po výběru widgetu Value Display se na ploše aplikace objeví šedý obdélník; ťuknutím se dostaneme do nastavení prvku (dlouhým podržením ho můžeme vybrat a upravit jeho pozici a velikost)
Obr. 52: Blynk app: Nastavení pinu, ze kterého budeme dostávat data
Obr. 53: Blynk app: V našem případě použijeme virtuální pin, teplota bude na pinu V6
Obr. 54: Blynk app: Po nastavení pinu je vidět vybraný pin V6 v tlačítku
Obr. 55: Blynk app: Obdobným způsobem přidáme další Value Display a provedem jeho nastavení
Obr. 56: Blynk app: Tentokrát nastavíme pin V5 (vlhkost)
Obr. 57: Blynk app: Po nastavení pinu je vidět vybraný pin V5 v tlačítku
Obr. 58: Blynk app: Naši aplikaci spustíme tlačítkem Play/Run
Obr. 59: Blynk app: V naší aplikaci se zobrazí aktuální hodnota teploty a vlhkosti
Obr. 60: Blynk app: Po ťuknutí na ikonu desky mikrokontroléru se v horní části objeví stavové hlášení
Obr. 61: Blynk app: V případě problémů uvidíme červenou výstrahu
Obr. 62: Blynk app: Dalším widgetem v naší aplikaci bude graf SuperChart
Obr. 63: Blynk app: Widget SuperChart umístěný na ploše aplikace
Obr. 64: Blynk app: Ve widgetu SuperChart si přidáme datový proud (Datastream)
Obr. 65: Blynk app: Datový proud v SuperChart pojmenujeme a nastavíme datový zdroj
Obr. 66: Blynk app: Pojmenování datového proudu v rámci widgetu SuperChart
Obr. 67: Blynk app: V dialogu datového proudu vytvořeného pro teplotu nastavíme správný pin (V6)
Obr. 68: Blynk app: Po nastavení pinu je vidět vybraný pin V6 v tlačítku, pro lepší přehlednost je vhodné zadat také jednotku a případně si změnit barvu a typ čáry, ovlivnit můžeme i počet zobrazovaných desetinných míst
Obr. 69: Blynk app: Stejným způsobem jako u teploty přidáme druhý datový proud pro vlhkost
Obr. 70: Blynk app: Stejným způsobem jako u teploty přidáme druhý datový proud pro vlhkost
Obr. 71: Blynk app: Po nastavení pinu je vidět vybraný pin V5 v tlačítku, pro lepší přehlednost je vhodné zadat také jednotku (zde znak %) a případně si změnit barvu a typ čáry, pro vlhkost můžeme také nastavit osu Y na rozsah 0 až 100
Obr. 72: Blynk app: Máme nastavené naše dva datové proudy (teplota a vlhkost)
Obr. 73: Blynk app: Po přidání a nastavení widgetu SuperChart aplikaci spustíme
Obr. 74: Blynk app: Ve widgetu SuperChart se vykresluje graf teploty a vlhkosti
Obr. 75: Blynk app: Po zastavení aplikace můžeme upravit velikost widgetu tak, abychom využili celou dostupnou plochu
Obr. 76: Blynk app: Po opětovném spuštění máme možnost graf jednoduše maximalizovat (tlačítkem dole vpravo)
Obr. 77: Blynk app: Maximalizovaný widget SuperChart (v horním pravém rohu zrušení maximalizace, v dolním pravém rohu možnost exportu a smazání dat)
Obr. 78: Blynk app: Dialog pro export naměřených dat ve formátu CSV a možnost smazaní dat (Erase data)
Obr. 79: Blynk app: Pro tlačítko si vytvoříme novou samostatnou aplikaci
Obr. 80: Arduino IDE: Nastavení tokenu, ssid a hesla wifi sítě pro aplikaci Tlačítko
Obr. 81: Arduino IDE: Svoji textovou zprávu musíme vložit opět mezi uvozovky
Obr. 82: Arduino IDE: Jeden z řádků v ukázkovém kódu nám ukazuje možnost vložit do zprávy název zařízení
Obr. 83: Blynk app: Pro aplikaci s Tlačítkem nám stačí widget Notification
Obr. 84: Blynk app: Dialog nastavení widgetu Notification
Obr. 85: Blynk app: Výsledná aplikace bude prakticky prázdná (až na prvek Notification)
Obr. 86: Blynk app: Takto vypadá doručená zpráva, když je Blynk aplikací v popředí
Obr. 87: Blynk app: Takto vypadá doručená zpráva, když je Blynk aplikací v pozadí
Obr. 88: Blynk app: Takto vypadá doručená zpráva na zamčené obrazovce mobilu
Obr. 89: Arduino IDE: Dáme si pozor na LED_PIN a zapamatujeme si virtuální pin V9
Obr. 90: Blynk app: Naši třetí aplikaci jsme nazvali „Světlo – LED“
Obr. 91: Blynk app: Použít můžeme jednoduché tlačítko Button (případně „dražší“ Styled Button)
Obr. 92: Blynk app: Widget tlačítka vložený do naší aplikace
Obr. 93: Blynk app: Velikost a pozici widgetu tlačítka je vhodné upravit
Obr. 94: Blynk app: Nastavení widgetu tlačítka (popis v textu článku)
Obr. 95: Blynk app: Tlačítko máme nastaveno, spustíme aplikaci…
Obr. 96: Blynk app: Po spuštění aplikace vidíme, že text na tlačítku se změnil a můžeme zapnout naši LED
Obr. 97: Blynk app: Po rozsvícení LED se změní barva a text tlačítka
Obr. 98: Blynk app: Ukázka použití LED v praxi (obdobná aplikace jako ta námi vytvořená)
Obr. 99: Blynk app: Výsledná aplikace 3 v 1. Nahoře jsou vidět tři záložky
Obr. 100: Blynk app: Druhá záložka obsahuje pouze tlačítko pro zapnutí/vypnutí LED
Obr. 101: Blynk app: Na třetí záložce najdeme widget Notification a navíc i Email
Obr. 102: Arduino IDE: Části kódu, kterým musíme věnovat svoji pozornost při využití tmep.cz a thingspeak.com
Obr. 103: Arduino IDE: Pro odesílání dat na Thingspeak.com je třeba smazat dvě úvodní lomítka na řádku 131
Obr. 104: Arduino IDE: Ukázka úpravy kódu, kdy se data odesílají na Thingspeak.com a na TMEP.cz se neodesílají
Obr. 105: Thingspeak.com při zobrazení kanálů (založený je jen jeden kanál)
Obr. 106: Dialog nastavení kanálu na Thingspeak.com
Obr. 107: Seznam čidel na tmep.cz (zde jedno čidlo) a dialog nastavení čidla

Automatic translation

Můžete využít automatický překlad stránek do následujících jazyků. Výchozím jazykem je čeština. K automatickému překladu využíváme služeb GTranslate.
You can use automatic translation of the pages into the following languages. The default language is Czech. We use GTranslate services for automatic translation.

Czech English French German Italian Portuguese Russian Spanish

e-Mole zpravodaj

Objednejte si zasílání novinek e-mailem! Váš e-mail bude použit pouze k zasílání informací o novinkách na našem webu. Odebírání e-mailového zpravodaje můžete kdykoli zrušit (váš email bude z naší databáze trvale odstraněn).