Uživatelské nástroje

Nástroje pro tento web


cidla

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.

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 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.

Neoficiálně zástupce firmy Espressif - výrobce čipů rodiny ESP - prohlásil někde na fecebooku, že GPIO jsou 5 V tolerantní při napájení čipu alespoň 3.3 V, což potvrdili i pokusy komunity s anekdotickými případy selhání, pokud je napěti na spodní hranici 3 V. Toto se netýká napájení čipu, pouze GPIO.

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ě a není potřeba řešit převod napšťových úrovní.

Vypínání / zapínání části obvodu

Některé senzory nebo reakční prvky mohou odebírat i v klidu hodně energie z baterie. Např. hotová destička driver motoru s LD297D z Číny za asi 25 Kč si nestydí vzít i bez spuštěného motorku koem 50 mA. Tento obvod tedy není možné u reakčního prvku nechat trvale napájet.

Pomocí kombinace optočlenu a NPN tranzistoru můžeme vytvořit „vypínač“ napájení řízený přímo pinem ATTINY.

Příklad níže s induktiovní zátěží (např. DC motorkem) napájeným dvěma 18650 články:

Přímé řízení výstupním pinem

Pro řízení některých zařízení stačí přímo zapojit pin mikrokontroleru. Přiklady:

  • LED pásky s WS2811 (takt mikrokontroleru musí být 8 MHz, 1 MHz na řízení nestačí, protože operace NOP trvá 1 us)
  • Relé modul

Komunikace s externími čidly

Piny univerzálního seriového rozhraní (např. u ATTINY84 PA5 a PA6) jsou vyvedeny pro účely přípojení sběrnice I2C nebo UART. Podobně je ponechán volný i pin SCK pro případné využití sběrnice SPI, např. některými displeji.

Měření napětí, proudu a kapacity

TODO

Měření stavu baterie

TODO

RGB LED pásky s WS2811

Komunikace s řídicí jednotkou stanoviště

Když se ATTINY rozhodne komunikovat s centrálou ať už z důvodu svého vlastního rozhodnutí kvůli lokálním změnám (čidla) anebo proto, že obdrží po 433 MHz žádost o komunikaci (reakční prvky), pošle RESET impulz svému ESP-01, který je v režimu deepsleep.

ESP-01 ihned po probuzení naváže kontakt s centrálou komunikační vrstvou ESPNow, oznámí své probuzení a zeptá se, jestli není k dispozici aktualizace firmware. Pokud je nový firmware, aktivuje svou servisní WIFI a nastaví stavovou buňku paměti pro ATTINY o probíhajícím servisu.

Pokud ATTINY začne posílat data (příkazem poke), bude vyčkávat až na nastavení specifické stavové buňky paměti na hodnotu, která potvrzuje předání všech dat z ATTINY a poté celou paměť pošle přes ESPNow do centrální jednotky.

Centrální jednotka po obdržení datového balíku pamětových buněk čidla nebo reakčního prvku tato uloží do své SQLite databáze a spustí několik koleček řídicích pravidel k dosažení pevného bodu. Poté odešle nově získáná data zpět přes ESPNow do ESP-01. ESP-01 po obdržení dat jimi přepíše svou paměť a nastaví stavovou buňku na hodnotu - „data z centráli předána“.

ATTINY bude po předání dat pravidelně kontrolovat, jestli ESP-01 už má nastavenou stavovou hodnotu o předání dat. Pokud to zjistí přečte si data, o která má zájem a vyšle ESP-01 signál k uspání.

cidla.1629491962.txt.gz · Poslední úprava: autor: martin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki