Toto je starší verze dokumentu!
Čidla a reakční prvky
Na každém stanovišti hry budou rozmístěny dva druhy zařízení (některé mohou obě funkce kombinovat):
- čidlo - je zařízení, které vnímá lokální stav svého okolí a při podstatných změnách informují řídicí jednotku stanoviště, příklady: PIR, teplota + vlhkost, spínač, mikrofon, intenzita světla, vibrace, apod.
- reakční prvek - je zařízení, jehož úkolem je aktivně změnit své okolí podle požadavku řídící jednotky, příkladem je motorky, „pípák“, ledky, laser, apod.
Implementace
Při pohledu na současné možnosti jednočipových počítačů / mikrokontrolerů se zdá, že původní Arduino založené na 8-bitové rodině AVR čipů dnes již od firmy Microchip ztrácí dech. Ve většině případů tomu tak asi skutečně je, přesto ale existují konkrétní situace, kde se stále více než hodí. Jedním z takových příkladů jsou zařízení pracující na baterii.
Provoz oblíbených čipu ESP8266 nebo jeho nástupců ESP32xxx je velmi naročný na zdroje a nemůže tedy být použit k řízení jednotlivých čidel, které potřebují interagovat s okolím po delší dobu.
Na druhou stranu tyto jednoduché čipy za pár korun nedokáží snadno komunikovat s okolím. K dispozici jsou různá řešení např. na stále oblíbené a volné frekvekvenci 433 MHz, ale tato komunikace, má-li být oboustranná zvyšuje nároky na cenu výsledného zařízení stejně tak jako na jeho velikost. Problémem může být i rušení, resp. vznikající kolize, pokud probíhá větší množství komunikace najednou.
Protokol ESPNow je velmi rozumnou alternativou a řešením komunikace mezi centální jednotkou stanoviště a jednotlivými čidly, resp. reakčními prvky. Je rychlý (sestavení komunikační linky proběhne cca za 200 ms) a tedy i úsporný, protože po proběhlé komunikaci je možné nenasytný čip ESP odpojit od cenné energie baterie. Přesto není vhodný, pokud je potřeba okamžitá reakce na nějakou změnu řízení.
Řešením může být kombinace těchto dvou komunikačních protokolů. ESPNow pro spolehlivou výměnu dat a RF433 jako alarm, že se něco děje a je potřeba se spojit s centrálou.
„Mozek“ čidla, který vyhodnocuje lokální stav v podobě úsporného čipu ATTINY13A nebo ATTINY84A si ani během aktivní práce neřekne o víc než 1 mA a je tedy možné, aby byl aktivní po celou dobu hry na stanovišti a uspával se až po skončení hry. Může tak lokálně sledovat celý průběh hry a čas od času se zeptat na globální stav řídící jednotky stanoviště.
Současně existuje i rozsáhlá komunita bastlířů, kteří znají a používají jak čipy z původního Arduina tak i dnes stále oblibenější čipy z rodiny ESPxxx.
- ATTINY13A (úsporné a malé řešení)
- ATTINY84A (více pinu a komfortní pro vývoj)
Napájení
Pro napájení čidla je potřeba nějaká kombinace baterii, pro náročnější reakční prvky je možné přidat i malý solární panel.
Odběr většiny čidel je zanedbatelný, pokud se kolem nic nic neděje. V případě jejich aktivace se probouzí nejprve energeticky nenáročný ATTINY, který odebírá od 0,5 mA do 4 mA v závislosti na nastevené frekvenci (1 MHz nebo 8 MHz) a vstupním napětí. Když logika čidla, která je implementována v ATTINY vyhodnotí, že je už potřeba informovat centrálu, probudí na chvilku ESP-01, které zajistí komunikaci s centrálou a zase ho deaktivuje.
Reakční prvky jsou na energii náročnější. Mají po celou dobu hry aktivní přijímač 433 MHz (odběr cca 3 mA i s ATTINY), aby mohly okamžitě reagovat na povely řídící jednotky stanoviště. Většinou také nemají jinou možnost, jak se dozvědět, že mají něco provést. Po příjetí signálu na 433 MHz musí probudit ESP-01, aby se dozvěděli, co přesně mají udělat a oznámily do řízení, že je to provedeno, případně, že nastaly nějaké komplikace.
Připravené a vyzkoušené možnosti napájení:
Pozor Čip ESP je na napájení náročnější. Potřebuje minimálně 3 V a maximálně snese podle specifikace 3.6 V. Navíc pro vykrytí špiček odběru až 200 mA vyžaduje kondenzátor 3300 uF, bez něhož může být nestabilní po začátku komunikace.
Komunikace mezi ESP a ATTINY probíhá ve všech uvažovaných režimech (všetně programování ATTINY) tak, že ATTINY nikdy „nezvedá“ komunikační linku do log. 1 a tedy přes pull-up na regulovaných 3.3 V zajistíme na lince maximální napětí, 3.3 V a není potřeba řešit napěťové úrovně komunikace, kdybychom snad nevěřili hláškám na facebooku (viz výše).
Tímto způsobem máme snadný přístup i k čidlům a reakčním prvkům, které potřebují napětí 5 V obvyklé v původním Arduino světě. Výstupy z těchto čidel můžeme potom komunikovat výše popsaným způsobem s centrální jednotkou stanoviště.
