ShIoTiny: ventilace vlhkých prostor (projektní příklad)

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Hlavní body nebo o čem je tento článek

Pokračujeme v cyklu článků o ShIoTiny — vizuálně programovatelném ovladači založeném na čipu ESP8266.

V tomto článku je ukázáno na příkladu projektu řízení ventilace v koupelně nebo jiném prostoru s vysokou vlhkostí, jak se tvoří program pro ShIoTiny.

Předchozí články této série.

ShIoTiny: malá automatizace, internet věcí nebo „půl roku před dovolenou“
ShIoTiny: uzly, vazby a události nebo rysy kreslení programů

Odkazy

Binární firmware, schéma ovladače a dokumentace
Návod a popis uzlů
Nastavení MQTT brokeru cloudmqtt.com
Ovládací panel MQTT dashboard pro Android

Úvod

Porozumění bez zkušenosti neexistuje. To je pravda, kterou potvrzuje čas a generace. Proto není nic lepšího pro odčení praktických dovedností, než se pokusit něco udělat samostatně. A příklady, které ukazují, co lze a co není dobré zkoušet, jsou opravdu potřebné. Chybami druhých sice nelze předejít vlastním chybám, ale mohou pomoci snížit jejich počet.

Dotazy a dopisy čtenářů předchozích článků mě podnítily k vytvoření malého projektního příkladu řízení ventilace, abych ukázal, jak fungují uzly ShIoTiny.

Původní myšlenka, na jejímž základě ovladač vznikl, ShIoTiny — čerpací a zavlažovací stanice — zdaleka není pro každého a nebude zajímat každého. Proto jsem vzal všeobecně pochopitelný a pro mnohé užitečný systém řízení ventilace jako příklad.

Řeknu, že myšlenka projektu není moje, inspiraci jsem získal zde a poté ji přizpůsobil k ShIoTiny.

Nejprve pochop, co chceš

Proces zlepšování je nekonečný. A právě tato vlastnost pohřbila mnoho dobrých myšlenek a projektů. Vývojář místo toho, aby vydal i nepřesný, ale funkční produkt — stále jej vylepšoval. A vylepšoval, dokud ho konkurenti nepředstihli, vydávající i nepřesné (a často zoufale nedokonalé), ale funkční řešení.

Proto je velmi důležité vědět, kde v projektu stanovit cíl. Jinými slovy, musíme určit, co chceme na konci projektu získat na základě toho, co máme na začátku. V češtině existuje skvělé krátké a výstižné slovo „plán“, které někteří nezkušené překladatelé a vady manažeři v poslední době začali nepochopitelně nazývat „dálnicová mapa“. Ale to už nechme být.

Náš plán bude následující. Předpokládejme, že máme prostor, jehož vlhkost může občas výrazně vzrůst. Například takový, jako je koupelna nebo kuchyň. Vlhkost je otravná věc a prostředek k jejímu odstranění je tak starý jako svět: větrání prostoru. Existuje mnoho způsobů větrání. Ale asi se zříkáme exotičtějších a zastaralých metod, jako jsou černí lidé s mávajícími vějíři, a zastavíme se u běžného ventilátoru. Ventilátory jsou levnější a také je snazší je u nás najít.

Jinými slovy, chceme řídit ventilátor: zapínat ho a samozřejmě vypínat. Přesněji řečeno, chceme, aby se sám zapínal a vypínal, když je to potřeba.

Zbývá určit: za jakých podmínek by se měl ventilátor zapínat a za jakých podmínek vypínat.

Zde je to jasné: pokud je vlhkost nad určitou nastavenou hranicí, ventilátor se zapne a odvádí vzduch; pokud se vlhkost vrátí do normálu, ventilátor se vypne.

Pozorný čtenář se okamžitě chytí za slovo „nastavené“. Kým nastavené? Jak nastavené?

Prahovou vlhkost lze nastavit několika způsoby. Prozkoumáme dva z nich: první je pomocí proměnného odporu a druhý je prostřednictvím sítě pomocí protokolu MQTT. Každá z těchto metod má své výhody a nevýhody, které budou podrobněji prozkoumány později.

Pro ty, kdo nepochopili, vysvětlím, že „prahová vlhkost“ je úroveň vlhkosti, při jejímž překročení je nutné ventilátor zapnout.

Další otázka: dáme uživateli možnost zapnout ventilátor přímo? To znamená, nezávisle na úrovni vlhkosti, stisknutím tlačítka? Tuto možnost plánujeme. Ventilátor může být potřebný nejen při zvýšené vlhkosti, ale také pro odstranění nepříjemného zápachu z místnosti, obvykle nazývaného "smrad".

Takže víme, co chceme, a dokonce i trochu, jak to bude fungovat. Stručně shrneme všechny funkce našeho systému řízení větrání:

  • nastavení prahové úrovně vlhkosti (dva varianty);
  • měření úrovně vlhkosti;
  • automatické zapnutí ventilátoru;
  • automatické vypnutí ventilátoru;
  • manuální zapnutí ventilátoru (stisknutím tlačítka).

Takže plán je jasný. Je nutné realizovat všechny výše uvedené funkce v našem programu. Na základě tohoto "plánu" budeme postupovat. Nejprve nakreslíme strukturovaný schémat zařízení.

Strukturované schéma zařízení

Vlastně budeme mít dvě takové schémy. První — pro variantu, ve které je prahová úroveň vlhkosti nastavena proměnným odporem. Druhá schéma — pro variantu, ve které je prahová úroveň vlhkosti nastavena prostřednictvím sítě přes protokol MQTT.

Ale jelikož se tyto schémy budou lišit pouze o jeden prvek — proměnný rezistor "nastavení prahové úrovně vlhkosti", nakreslíme pouze jedno strukturované schéma. Samozřejmě, strukturované schéma podle GOST vypadá jinak. Ale my se neorientujeme na inženýrské "zuby", ale na mladou generaci. Proto je názornost důležitější.

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Takže, co vidíme na obrázku? Ventilátor je připojen k relé Relay1 řadiče ShIoTiny. Upozorňuji na to, že ventilátor je zařízení, které se nachází pod vysokým napětím. Proto, pokud si někdo chce tuto věc udělat sám, buďte opatrní. To znamená, alespoň před tím, než strčíte své prsty nebo měřící přístroje do schématu — odpojte alespoň ventilátor. A druhá poznámka. Pokud je váš ventilátor výkonnější než 250W, neměli byste ho připojovat přímo k ShIoTiny — pouze prostřednictvím spouštěče.

S ventilátorem jsme se srozuměli. Teď tlačítko "manuální zapnutí" ventilátoru. Je připojeno k vstupu Input1. Tady není co více vysvětlovat.

Senzor teploty a úrovně vlhkosti DHT-11 (nebo DHT-22 nebo jejich ekvivalentů). Pro jeho připojení je na řídicím modulu k dispozici speciální vstup ShIoTiny. Jak je vidět na obrázku, připojení takového senzoru také nepředstavuje problém.

A nakonec proměnné odpor, který nastavuje prahovou úroveň vlhkosti. Přesněji řečeno, dělící obvod, skládající se z proměnného a stálého odporu. S jeho připojením nejsou žádné problémy, ale dovolte mi vysvětlit, že vestavěný ADC na ESP8266 je určen maximálně na 1 Volt. Proto je potřeba dělič napětí přibližně 5krát.

A znovu připomínám, že tento dělič není potřeba, pokud je prahová úroveň vlhkosti nastavena prostřednictvím sítě pomocí protokolu MQTT.

Začněme vytvářet algoritmus činnosti zařízení v editoru ElDraw ShIoTiny. Jak se tam dostat, můžete přečíst v předchozích článcích nebo v návodu, jehož odkaz je na začátku článku.

První varianta je nejjednodušší

Začněme s jednoduchým: zapínáním relé Relay1 při překročení prahové úrovně vlhkosti na danou dobu.

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Jak vidíme, nic složitého: pouze čtyři uzly, nepočítaje komentující uzly. DHT11 — to je samotný senzor teploty a vlhkosti (můžete jej změnit na DHT22).

Konstanta CONST — prahová úroveň vlhkosti v procentech.

Komparátor — uzel porovnávající dvě čísla a na výstupu nastavující 1, pokud je zadaná podmínka splněna, a 0, pokud podmínka splněna není.

V našem případě bude takovou podmínkou A>B, kde A — naměřená úroveň vlhkosti senzorem, a B — prahová úroveň téže vlhkosti.

Jakmile naměřená úroveň vlhkosti (A) překročí prahovou úroveň vlhkosti (B), na výstupu komparátoru A>B se objeví 1 a relé se zapne. A naopak, jakmile úroveň vlhkosti opět dosáhne normy (tedy A<=B), na výstupu komparátoru A>B se objeví 0 a relé se vypne.

Všechno jasné? Kdo to moc nechápe — přečtěte si to ještě jednou nebo nahlédněte do popisu práce uzlů v návodu.

Upozorňuji, že data ze senzoru DHT11 se aktualizují přibližně jednou za 10 sekund. Proto relé nemůže být zapínáno a vypínáno častěji než jednou za 10 sekund.

Všechno by bylo v pořádku, ale chtěli bychom nastavit prahovou úroveň vlhkosti pomocí proměnného rezistoru. Není nic snazšího!

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Jednoduše nahradíme uzel-konstanta uzlem ADC. Vždyť právě k ADC jsme připojili dělící obvod s proměnným rezistorem.

Napětí na vstupu ADC se mění od 0 do 1 Volt. Ale vlhkost na výstupu senzoru se mění od 0 do 100 %. Jak je tedy srovnáváme? Je to jednoduché. Uzlu ADC1 ShIoTiny nejen měří napětí na vstupu, ale dokáže ho škálovat a posouvat..

To znamená, že na výstupu uzlu ADC1 bude hodnota X, vypočítaná podle vzorce

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

, kde ShIoTiny: ventilace vlhkých prostor (projektní příklad) — napětí na vstupu ADC (od 0 do 1V); k — rozsah (ADC range) a b- offset (ADC offset). Takže pokud nastavíme k=100 a b=0, pak při změně ShIoTiny: ventilace vlhkých prostor (projektní příklad) v rozsahu od 0 do 1, hodnota X na výstupu uzlu ADC se bude měnit v rozsahu od 0 do 100. To znamená, že numericky se rovná rozsahu změny vlhkosti od 0 do 100 %.

Jednoduše řečeno, otáčením potenciometru lze nastavit prahovou hladinu vlhkosti od 0 do 100. Jediným nepohodlím je, že neexistují žádné zobrazovací zařízení. Ale v praxi, pokud uděláte 6 dělení 0%, 20%, 40%, 60%, 80%, 100% — to stačí k nastavení prahové hladiny vlhkosti.

Jak nám nastavit koeficienty k — rozsah (ADC range) a b- offset (ADC offset)? Není to nic složitého! Klikněte ukazatelem myši na uzel ADC1 a okamžitě se vám objeví nastavení okno. V něm si můžete nastavit všechno, co potřebujete. Pro náš případ to bude takové okno, jaké je na obrázku.

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Takže máme jednoduché pracovní řešení. Začněme ho vylepšovat.
Mimochodem, nejjednodušší řešení má jednu výhodu — nepotřebuje internet. Je plně autonomní.

Druhá varianta, připojíme tlačítko.

Všechno funguje a všichni jsou spokojeni. Ale problém je, že nemůžeme nuceně zapnout ventilaci. Už jsme se dohodli, že k vstupu Input1 budeme připojeni tlačítko, které bude ventilátor zapínat a vypínat bez ohledu na senzor vlhkosti.
Nyní je čas zpracovat toto tlačítko v naší schématu-programu.

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Blok zpracování stisku tlačítka je zvýrazněn oranžovou čárou. Představuje to čítač stisků tlačítka, který se resetuje na nulu, když hodnota na jeho výstupu překročí jedničku (zelená čára, výstup uzlu CT.).

Všechny zde funguje tak jednoduše, jak tomu bylo dříve: čítač CT. počítá stisky tlačítka připojeného k vstupu. Input1To znamená, že hodnota na výstupu tohoto čítače se s každým stisknutím tlačítka zvyšuje o 1.

Jakmile se tato hodnota rovná dvěma (to znamená více než 1), okamžitě na výstupu komparátoru. A>B objeví se 1. A tento 1 vyresetuje čítač CT. na nul. Myslíme tím komparátor, dolní podle schématu!

Tímto máme pro naše tlačítko dva stavy – 0 a 1. Kdybychom potřebovali více stavů (3 nebo 4 nebo ještě více) – stačilo by změnit konstantu CONST z jedničky na jinou hodnotu.

Takže máme dvě podmínky pro zapnutí ventilátoru: překročení stanovené úrovně vlhkosti a jednorázové stisknutí tlačítka. Při splnění jakékoliv z podmínek se ventilátor zapne. A bude fungovat, dokud se tlačítko znovu nestiskne A úroveň vlhkosti se nevrátí do normálu.

Samozřejmě, můžeme algoritmus dále komplikovat, ale to dělat nebudeme – ponecháme prostor pro kreativitu pro zájemce.

Třetí varianta, připojíme se k internetu

Vše, co jsme popsali – je plně funkční. A co tedy styl? Každý pubertální hipster-hacker-cracker se vysmívá těm, kteří točí knoflík a stisknou tlačítko, místo aby to ovládali přes smartphone! Točit knoflíkem – je "out". Ale posouvat prstem po smartphonu až do krve – to je to, co si hipster-hacker-cracker přeje (nikdy jsem je nedokázal rozlišit – tak se, pokud jsem se mýlil, omlouvám).

Ale budeme shovívaví k těmto osobnostem. Ovládání přes internet má i své skutečné výhody. Za prvé, je to názornost. Existuje spousta aplikací pro všechny platformy, které umožňují několika kliknutími vytvořit dokonale použitelný ovládací panel našeho řídicího zařízení. Za druhé, to je možnost vzdáleného sledování stavu vlhkosti v místnosti. A za třetí, můžete vidět nejen to, co dělá ventilátor – točí se nebo ne, ale i to, jaká prahová úroveň vlhkosti je nastavena. A to – zda se ventilátor automaticky zapnul nebo ručně. Zkrátka vše, co si přejete.

Samozřejmě, pro nějaký ventilátor je tolik pozornosti příliš. Ale to je jen příklad.

Takže pro připojení k internetu budeme používat technologii MQTT a stejnojmenný protokol.
Abychom mohli tuto technologii využít, potřebujeme MQTT broker. To je speciální server, který obsluhuje MQTT klienty, například ShIoTIny a váš smartphone.

Podstata technologie MQTT spočívá v tom, že každý z klientů publikuje na MQTT brokeru (serveru) libovolná data pod určitým názvem (nazývaným topic v terminologii MQTT). Jiní klienti se mohou přihlásit k libovolným datům podle jejich názvu (topic) a získávat nově publikovaná data. Všechny výměny dat probíhají na principu klient-broker-klient.

Já nebudu zdůrazňovat podrobnosti. Na internetu je spousta článků a návodů, jak to funguje MQTT a jaké existují programy pro vytváření ovládacích panelů. Jen ukážu, jak přijímat a publikovat data prostřednictvím ShIoTiny.

Jako broker jsem použil www.cloudmqtt.com, ale princip je všude stejný.

Takže budeme předpokládat, že jste se zaregistrovali na MQTT-brokeru. Obecně broker poskytne (nebo vyžaduje vymyslet) uživatelské jméno a heslo (pro autorizaci), stejně jako port pro připojení. Připojit se k ShIoTiny k MQTT-brokeru lze dvěma způsoby — běžným připojením a přes TLS (SSL).

Všechny tyto parametry se ShIoTiny zadávají na kartě Síťování, sekce MQTT Connection to server.

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Pokud váš MQTT broker nevyžaduje autorizaci — nezadávejte přihlašovací jméno a heslo (nechte tato pole prázdná).

Parameter MQTT topic prefix vyžaduje samostatné vysvětlení.

Předpona MQTT-parametrů — to je řetězec, který se přidává k názvu tématu (topic) při publikaci a přihlášení na MQTT-brokeru. Chcete-li nastavit MQTT-předponu pro váš ovladač, stačí ji zadat do pole "Předpona tématu MQTT» («MQTT topic prefix"). Předpona vždy začíná lomítkem («/»)! Pokud do pole pro zadání nezadáte lomítko — přidá se automaticky. V předponě nelze používat znaky «#» a «+». Jiná omezení neexistují.

Například pokud publikujete parametr "status" (nebo se na něj přihlašujete), a vaše předpona je nastavena na "/shiotiny/", pak na brokeru bude tento parametr publikován pod názvem "/shiotiny/status". Pokud máte prázdnou předponu, budou všechna data na brokeru začínat lomítkem («/»): «status" bude publikováno jako "/status».

Takže budeme předpokládat, že jste se zaregistrovali na MQTT-brokeru a získali přihlašovací jméno, heslo a port. Poté jste tyto parametry zadali na kartě Síťování, sekce MQTT Connection to server řadiče ShIoTiny.

Předpokládáme, že předpona je nastavena na "/room/».

Začněme tím, že publikujeme stav všech klíčových parametrů: relé Realay1, stav ručního zapnutí, stav automatického zapnutí a nakonec prahová a aktuální úroveň vlhkosti. A jako bonus — teplotu v místnosti. Jak to udělat, vidíte na obrázku.

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Jak vidíme, rozdíl od předchozí varianty je pouze v uzlech "MQTT Publish". S ohledem na předponu se publikují následující parametry:
ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Jak vidíme, všechny informace o stavu systému máme jako na dlani!

Ale chceme nejen vidět, ale také řídit. Co s tím? Velmi jednoduše. Vzdáme se nastavování prahové úrovně vlhkosti pomocí ADC a proměnné rezistoru a budeme nastavovat tuto prahovou úroveň vlhkosti přímo MQTT ze smartphonu!

ShIoTiny: ventilace vlhkých prostor (projektní příklad)

Odstraňujeme uzel ADC ze schématu a připojujeme tam tři nové uzly: FLASH store, FLASH restore a MQTT describe.

Funkce uzlu MQTT describe je zřejmá: přijímá parametr /room/trigHset (prahová úroveň vlhkosti) od MQTT brokera. Ale co dále dělá s daty? Jen je předává uzlu FLASH store, který je naopak ukládá do nevolatilní paměti pod názvem trigH. Poté uzel FLASH restore čte z nevolatilní paměti data pod názvem trigH a co se stane dál, již víme.

Proč takové složitosti? Proč nelze okamžitě předat získaná data na vstup komparátoru?

Jak říkal soudruh Š. Holmes — to je elementární! Nikdo nezaručuje, že po zapnutí vašeho zařízení se připojí k MQTT-brokeru. A vlhkost se měřit musí. A ventilátor je potřeba zapnout. Ale bez informace o prahové úrovni vlhkosti to není možné! Proto naše zařízení při zapnutí získává dříve uloženou prahovou úroveň vlhkosti z nevolatilní paměti a používá ji k rozhodování. A až se naváže spojení s MQTT brokerem a někdo zveřejní novou hodnotu /room/trigHset, pak se použije tato nová hodnota.

Dále si můžete vymýšlet, co chcete. Například vedle vlhkosti zavést také sledování teploty. Nebo přidat „inteligentní“ ovládání osvětlení (máme ještě dvě relé a dva vstupy nevyužité). Všechno je ve vašich rukou!

Závěr

Tímto jsme si prošli několik příkladů realizace v podstatě nejjednoduššího kontroléru na základě ShIoTiny. Možná to bude někomu užitečné.

Jak vždy, návrhy, přání, dotazy, překlepy a další — na e-mail: shiotiny@yandex.ru

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster