ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Glavne teze ili o čemu se radi u ovom članku

Nastavljamo ciklus članaka o ShIoTiny — vizualno programabilnom kontroleru temeljenom na čipu ESP8266.

U ovom članku se na primjeru projekta upravljanja ventilacijom u kupaonici ili drugoj prostoriji s povećanom vlagom objašnjava kako se gradi program za ShIoTiny.

Prethodni članci serije.

ShIoTiny: mala automatizacija, internet stvari ili 'šest mjeseci prije odmora'
ShIoTiny: čvorovi, veze i događaji ili osobitosti crtanja programa

Linkovi

Binarne firmware, shema kontrolera i dokumentacija
Upute i opis čvorova
Postavljanje MQTT posrednika cloudmqtt.com
Upravljačka ploča MQTT dashboard za Android

Uvod

Razumijevanje izvan iskustva ne postoji. To je istina koju je vrijeme i generacije provjerile. Stoga nema boljeg načina za učenje praktičnim vještinama nego pokušajem da se nešto učini samostalno. A primjeri koji pokazuju što se može raditi, a što ne bi trebalo, ovdje će biti više nego korisni. Tuđe pogreške, naravno, ne mogu spriječiti pojavu vlastitih grešaka, ali mogu pomoći smanjiti njihov broj.

Pitanja i pisma čitatelja prethodnih članaka potaknuli su me da izradim mali projekt-primjer upravljanja ventilacijom kako bih pokazao kako funkcioniraju čvorovi ShIoTiny.

Izvorna ideja na temelju koje je nastao kontroler ShIoTiny — pumpno-napojna stanica — nije zanimljiva i odgovara svima. Stoga sam uzeo svima poznati i mnogima koristan sustav upravljanja ventilacijom kao primjer.

Reći ću da ideja projekta nije moja, a uzet sam je odavde i zatim prilagodio za ShIoTiny.

Najprije razumij što želiš

Proces usavršavanja nije konačan. I upravo ta osobina je uništila mnoge dobre ideje i projekte. Razvijač, umjesto da objavi možda ne savršenu, ali funkcionalnu stvar — nastavljao ju je usavršavati. I usavršavao je dok konkurenti nisu prešli preko njega, objavljujući iako ne savršena (a često očito loša), ali funkcionalna rješenja.

Zato je vrlo važno znati — gdje postaviti točku u projektu. Drugim riječima, trebamo odrediti što želimo postići na kraju projekta s onim što imamo na početku. U hrvatskom jeziku postoji prekrasna kratka i sažeta riječ „plan“, koju nažalost neki prevoditelji i defektni menadžeri u posljednje vrijeme nazivaju „cestovna karta“. No, da, neka im.

Naš plan će izgledati ovako. Pretpostavimo da imamo prostoriju čija se vlažnost može povremeno jako povećati. Na primjer, kao što je kupaonica ili kuhinja. Vlažnost je neugodna, a borba protiv nje stara je kao svijet: prozračivanje prostorije. Ima mnogo načina prozračivanja. No, vjerojatno ćemo se odrediti protiv egzotičnih i zastarjelih metoda poput crnaca s lepezama i zadržati na običnom ventilatoru. Ventilatori su jeftiniji, a i lakše ih je pronaći ovdje.

Ukratko, želimo upravljati ventilatorom: uključivati ga i, sukladno tome, isključivati. Točnije, želimo da se sam uključuje i isključuje kada je potrebno.

Ostaje da odredimo: pod kojim uvjetima ventilator treba uključiti, a pod kojim isključiti.

Ovdje je sve očito: ako je vlažnost iznad određenog praga — ventilator se uključuje i izvlači zrak; kad vlažnost postane normalna — ventilator se isključuje.

Pažljiv čitatelj odmah će se primijetiti na riječ „zadanog“. Od koga zadanog? Kako zadanog?

Prag vlažnosti može se postaviti na nekoliko načina. Razmotrit ćemo dva od njih: prvi — pomoću promjenjivog otpora, a drugi — putem mreže putem protokola MQTT. Svaka od ovih metoda ima svoje prednosti i nedostatke, koje ćemo dalje razmotriti.

Za one koji nisu shvatili, objasnit ću da je „prag vlažnosti“ razina vlažnosti pri kojoj je potrebno uključiti ventilator.

Sljedeće pitanje: treba li korisniku dati pravo da uključi ventilator direktno? To jest, nezavisno od razine vlažnosti, pritiskom na tipku? Tu mogućnost ćemo omogućiti. Ventilator može biti potreban ne samo pri povišenoj vlažnosti, već i za uklanjanje, na primjer, neugodnog mirisa, kojeg u narodu nazivaju 'smradom'.

Dakle, shvatili smo što želimo i čak imamo ideju o tome kako će to funkcionirati. Kratko ćemo pobrojati sve funkcije našeg sustava upravljanja ventilacijom:

  • postavljanje praga vlažnosti (dvije opcije);
  • mjerenje razine vlažnosti;
  • automatsko uključivanje ventilatora;
  • automatsko isključivanje ventilatora;
  • ručno uključivanje ventilatora (pritiskom na tipku).

Dakle, plan je jasan. Potrebno je implementirati sve gore navedene funkcije u naš program. Na temelju ovog 'plana' ćemo djelovati. Prvo ćemo nacrtati strukturalnu shemu uređaja.

Strukturalna shema uređaja

Uglavnom, takvih shema će biti dvije. Prva — za varijantu u kojoj se prag vlažnosti postavlja varijabilnim otporom. Druga shema — za varijantu u kojoj se prag vlažnosti postavlja putem mreže preko protokola MQTT.

No pošto će se ove sheme razlikovati samo po jednom elementu — varijabilni otpornik 'postavljanje praga vlažnosti', nacrtat ćemo samo jednu strukturalnu shemu. Naravno, strukturalna shema prema GOST-u izgleda drugačije. No, ne orijentiramo se na inženjere starije generacije, već na mlade. Stoga je preglednost važnija.

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Dakle, što vidimo na slici? Ventilator je spojen na relej Relay1 kontrolera. ShIoTinySklanjam pažnju da je ventilator uređaj koji radi pod visokim naponom. Stoga, ako netko želi sam napraviti ovakvo — oprez. To jest, barem, prije nego što stavite svoje prste ili mjerače u shemu — isključite barem ventilator. I drugo zapažanje. Ako je vaš ventilator jači od 250W, ne spajajte ga direktno na ShIoTiny što bi trebalo biti — samo preko kontaktora.

Završili smo s ventilatorom. Sada gumb 'ručno uključivanje' ventilatora. Spojen je na ulaz Input1. Ovdje se ne treba ni dodatno objašnjavati.

Senzor temperature i razine vlažnosti DHT-11 (ili DHT-22 ili njihovi analozi). Za njegovu povezivanje predviđen je poseban ulaz na kontroleru ShIoTiny. Kao što se može vidjeti na slici — povezivanje takvog senzora također ne predstavlja problem.

I, konačno, promjenjivi otpor koji određuje prag vlažnosti. Točnije — razdjelnik koji se sastoji od promjenjivih i stalnih otpora. Problema s njegovim povezivanjem nema, ali ću pojasniti da je ugrađeni ADC na ESP8266 računat maksimum na 1Volt. Stoga je potreban razdjelnik napona otprilike u omjeru 5 prema 1.

I još jednom ću napomenuti da taj razdjelnik nije potreban ako se prag vlažnosti postavlja putem mreže korištenjem MQTT protokola.

Počnimo sastavljati algoritam rada uređaja u editoru ElDraw ShIoTiny. Kako ući u taj editor, možete pročitati u ranijim člancima ili u uputama, na koje se link nalazi na početku članka.

Prva varijanta, najjednostavnija

Počnimo s jednostavnim: uključivanjem releja Relay1 uzimajući u obzir prag vlažnosti određeno vrijeme.

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Kao što vidimo, ništa složeno: svega četiri čvora, ne računajući čvorove-komentare. DHT11 — to je zapravo senzor temperature i vlažnosti (može se zamijeniti sa DHT22).

Konstanta CONST — prag vlažnosti, u postocima.

Komparator — čvor koji uspoređuje dva broja i daje na izlaz 1, ako je zadani uvjet ispunjen i 0, ako uvjet nije ispunjen.

U našem slučaju, takav uvjet će biti A>B, gdje A — izmjerena razina vlažnosti od strane senzora, a B — prag iste vlažnosti.

Čim izmjerena razina vlažnosti (A) premaši prag vlažnosti (B), odmah će na izlazu komparatora A>B biti 1 i relej će se uključiti. I obratno, čim razina vlažnosti dođe u normalu (odnosno A<=B), odmah će na izlazu komparatora A>B bit će 0 i relej će se isključiti.

Sve jasno? Oni kojima nije baš — pročitajte još jednom ili zavirite u opis rada čvorova u uputama.

Napominjem da se podaci sa senzora DHT11 ažuriraju otprilike jednom u 10 sekundi. Stoga relej ne može uključivati i isključivati se češće od jednom u 10 sekundi.

Sve bi bilo u redu, ali željeli bismo postaviti prag vlažnosti pomoću promjenjivog otpornika. Nema ništa jednostavnije!

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Jednostavno ćemo zamijeniti čvor-konstantu s čvorom ADC. Jer upravo smo na ADC povezali razdjelnik napona s promjenjivim otpornikom.

Napon na ulazu ADC-a se mijenja od 0 do 1 Volta. A vlažnost na izlazu senzora mijenja se od 0 do 100%. Kako ih uspoređujemo? Sve je jednostavno. ADC čvor ShIoTiny ne samo da mjeri napon na ulazu, već ga također može skalirati i pomaknuti.

To jest, na izlazu čvora ADC1 (A/D pretvarač) bit će vrijednost X, izračunata prema formuli

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

, gdje ShIoTiny: ventilacija vlažnih prostorija (projektni primjer) — napon na ulazu ADC-a (od 0 do 1V); k — raspon (ADC raspon) i b- pomak (ADC offset). Dakle, ako postavimo k=100 i b=0, tada će prilikom promjene ShIoTiny: ventilacija vlažnih prostorija (projektni primjer) u rasponu od 0 do 1, vrijednost X na izlazu čvora ADC-a varirati u rasponu od 0 do 100. To jest, numerički jednaka rasponu promjene vlažnosti od 0 do 100%.

Ili, jednostavno rečeno, okretanjem potencijometra, možemo postaviti prag vlažnosti od 0 do 100. Jedina neugodnost je što nema uređaja za prikazivanje. No, u praksi, ako na potencijometru napravimo 6 podjela 0%, 20%, 40%, 60%, 80%, 100%) — to je dovoljno da se postavi prag vlažnosti.

Kako da postavimo koeficijente k — raspon (ADC raspon) i b- pomak (ADC offset)? Ma lako ko pasulj! Kliknite mišem na čvor ADC1 i odmah će se otvoriti prozor za podešavanje. U njemu možete postaviti sve što vam treba. Za naš slučaj to će biti prozor kao na slici.

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Dakle, imamo najjednostavnije radno rješenje. Počnimo ga unaprijediti.
Usput, najjednostavnije rješenje ima jednu prednost — ne treba Internet. Potpuno je autonomno.

Druga opcija, povežemo dugme

Sve radi i svi su zadovoljni. Ali u čemu je problem, ne možemo uključiti ventilaciju prisilno. Već smo se dogovorili da će na ulazu Input1 biti priključeno dugme koje će prisilno uključivati i isključivati ventilator, ne obraćajući pažnju na senzor vlažnosti.
Došlo je vrijeme da obradimo ovo dugme u našem schematskom programu.

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Blok obrade pritiska dugmeta označen je narančastom linijom. On predstavlja brojač pritisaka dugmeta, koji se resetuje na nulu kada vrijednost na njegovom izlazu premaši jednu (zelena linija, izlaz čvora CT).

Sve ovdje radi isto jednostavno kao i prije: brojač CT broji pritiske dugmeta, priključenog na ulazu Input1. To jest, vrijednost na izlazu ovog brojača povećava se za 1 sa svakim pritiskom dugmeta.

Čim ta vrijednost postane jednaka dva (to jest veća od 1), odmah na izlazu komparatora A>B Pojavit će se 1. I ova 1 će resetirati brojač CT na nulu. Misli se na komparator, donji po shemi!

Dakle, našoj tipki su dva stanja — 0 i 1. Da nam je trebala više stanja (3 ili 4 ili još više) — bilo bi dovoljno promijeniti konstantu CONST s jedinice na neku drugu vrijednost.

Dakle, imamo dva uvjeta za uključivanje ventila: prekoračenje zadane razine vlažnosti i jedno pritiskanje tipke. U ispunjenju bilo kojeg od uvjeta ventilator će se uključiti. I radit će sve dok se ne pritisne tipka ponovno I razina vlažnosti ne dođe u normalu.

Naravno, može se još dodatno zakomplicirati algoritam, ali nećemo to činiti — ostavit ćemo prostor za kreativnost željnima.

Treća opcija, povezujemo se na internet

Sve što smo opisali — sasvim je funkcionalno. A gdje su zapravo 'folije'? Svaki prištavi hipster-haker-kracker će se nasmijati onome tko okreće dugme i pritisne tipku, umjesto da upravlja s pametnog telefona! Okretanje dugmeta — to nije 'moderno'. A pomicanje prstom po pametnom telefonu, izgrebajući taj prst do krvi — to je vrhunac želja hipstera-hakera-krackera (nikad nisam mogao razlikovati sve njih — tako da, ako sam pogriješio, oprostite).

Ali bit ćemo blagi prema tim osobama. Upravljanje putem interneta ima i stvarne prednosti. Prvo, to je preglednost. Postoji mnoštvo aplikacija za sve platforme, koje omogućuju jednostavno stvaranje potpuno upotrebljive upravljačke ploče našeg kontrolera Karlsona s nekoliko dodirivanja. Drugo, postoji mogućnost daljinskog nadzora stanja vlažnosti u prostoriji. I, treće, možete vidjeti ne samo to što ventilator radi — okrene li se ili ne, već i koji je prag vlažnosti postavljen. I to — uključio se ventilator automatski ili ručno. Ukratko, sve što poželite.

Naravno, za neki ventilator je previše pažnje — ali to je samo primjer.

Dakle, za povezivanje na internet koristit ćemo tehnologiju MQTT i istoimeni protokol.
Da bismo koristili ovu tehnologiju, potrebna nam je MQTT poslužitelj. To je poseban poslužitelj koji opslužuje MQTT klijente, na primjer ShIoTIny i vaš pametni telefon.

Bit tehnologije MQTT sastoji se u tome da svaki od klijenata objavljuje na MQTT poslužitelju (serveru) proizvoljne podatke pod određenim imenom (koje nazivamo topic u terminologiji MQTT). Drugi klijenti mogu se pretplatiti na proizvoljne podatke po njihovom imenu (topic) i primati nove objavljene podatke. To jest, cijela razmjena podataka odvija se na principu klijent-broker-klijent.

Ja neću usredotočiti se na detalje. Na internetu ima puno članaka i učenja o tome kako funkcionira MQTT i koje postoje programe za izradu kontrolnih panela. Samo ću pokazati kako primati i objavljivati podatke putem ShIoTiny.

Kao broker koristio sam www.cloudmqtt.com, ali princip je svugdje isti.

Dakle, pretpostavit ćemo da ste se registrirali na MQTT brokeru. U općem slučaju, broker će vam dati (ili zahtijevati da osmislite) korisničko ime i lozinku (za autentifikaciju), kao i port za povezivanje. Povezati se ShIoTiny za MQTT brokeru možete na dva načina — obična povezanost i preko TLS (SSL).

Sve te postavke u ShIoTiny unose se na kartici Mrežno, odjeljak MQTT Connection to server.

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Ako vaš MQTT poslužitelj ne zahtijeva autentifikaciju — nemojte unositi korisničko ime i lozinku (ostavite ova polja prazna).

Parametar MQTT topic prefix zahtijeva posebno objašnjenje.

Prefiks MQTT parametara — to je niz koji se dodaje nazivu teme (topic) prilikom objavljivanja i pretplate na MQTT broker. Da biste postavili MQTT prefiks za vaš kontroler, jednostavno ga unesite u polje za unos „MQTT Topic Prefix» («MQTT topic prefix”). Prefiks uvijek počinje sa kosom crtom («/»)! Ako ne unesete kosu crtu u polje za unos — ona će se automatski dodati. U prefiksu se ne mogu koristiti znakovi «#» i «+». Druge zabrane ne postoje.

Na primjer, ako objavljujete parametar „status„ (ili se na njega pretplaćujete), a vaš prefiks je postavljen kao „/shiotiny/“, tada će se na brokeru taj parametar objaviti pod imenom „/shiotiny/status“. Ako imate postavljen prazan prefiks, svi parametri na brokeru će početi sa kosom crtom («/»): «status„ će se objaviti kao „/status».

Dakle, pretpostavljamo da ste se registrirali na MQTT brokeru i dobili korisničko ime, lozinku i port. Zatim ste unijeli ove parametre na kartici Mrežno, odjeljak MQTT Connection to server kontrolera. ShIoTiny.

Pretpostavljamo da je prefiks postavljen na vrijednost „/room/».

Počet ćemo s time da ćemo objaviti stanje svih ključnih parametara: relej Realay1, stanje ručnog uključivanja, stanje automatskog uključivanja i, konačno, prag i trenutne razine vlage. I kao bonus — temperaturu u prostoriji. Kako to učiniti, pogledajte na slici.

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Kao što vidimo, razlika od prethodne varijante — samo čvorovi „MQTT Publish“. S obzirom na prefiks, objavljuju se sljedeći parametri:
ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Kao što vidimo, sve stanje sustava je jasno kao dan!

Ali želimo ne samo vidjeti, već i upravljati. Što učiniti? Vrlo jednostavno. Odustat ćemo od postavljanja praga vlažnosti putem ADC i promjenjivog otpornika i postaviti taj prag vlažnosti direktno MQTT s pametnog telefona!

ShIoTiny: ventilacija vlažnih prostorija (projektni primjer)

Uklanjamo ADC čvor iz sheme i uključujemo tri nova čvora: FLASH pohrana, FLASH obnova i MQTT opis.

Funkcija čvora MQTT opis je očita: prima parametar /room/trigHset (prag vlažnosti) od MQTT posrednika. Ali što dalje radi s tim podacima? Jednostavno ih predaje čvoru FLASH pohrana, koji, zauzvrat, pohranjuje te podatke u nevolatilnu memoriju pod imenom trigH. Nakon toga, čvor FLASH obnova učitava iz nevolatilne memorije podatke pod imenom trigH i što se dalje događa već znamo.

Zašto takve komplikacije? Zašto odmah ne predati primljene podatke na ulaz komparatora?

Kako je govorio drug Š. Holmes — to je elementarno! Nitko ne garantira da će se vaše uređaj, nakon uključivanja, povezati s MQTT brokeru. A vlažnost je potrebno mjeriti. I ventilator je potrebno uključiti. No, bez informacija o pragu vlažnosti to nije moguće! Stoga, naše uređaj, prilikom uključenja, izvlači prethodno pohranjeni prag vlažnosti iz nevolatilne memorije i koristi ga za donošenje odluka. A kada se uspostavi veza s MQTT posrednikom i netko objavi novu vrijednost /room/trigHset, tada će se koristiti ta nova vrijednost.

Dalje možete smisliti što god želite. Na primjer, osim vlažnosti, dodati praćenje temperature. Ili uvesti „pametno” upravljanje osvjetljenjem (imamo još dva releja i dva ulaza koja nisu iskorištena). Sve je u vašim rukama!

Zaključak

Tako smo proučili nekoliko primjera implementacije jednog jednostavnog kontrolera temeljenog na ShIoTiny. Možda će nekome biti korisno.

Kao i uvijek, prijedlozi, želje, pitanja, greške i drugo — na email: shiotiny@yandex.ru

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster