ShIoTiny: prezračevanje mokre sobe (primer projekta)

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Glavne točke ali o čem govori ta članek

Nadaljujemo serijo člankov o ShioTiny - vizualno programabilni krmilnik na osnovi čipa ESP8266.

Ta članek na primeru projekta nadzora prezračevanja v kopalnici ali drugem prostoru z visoko vlažnostjo opisuje, kako je zgrajen program za ShioTiny.

Prejšnji članki v seriji.

ShIoTiny: majhna avtomatizacija, internet stvari ali “šest mesecev pred dopustom”
ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

reference

Binarna vdelana programska oprema, krmilno vezje in dokumentacija
Navodila in opis komponent
Nastavitev posrednika MQTT cloudmqtt.com
Nadzorna plošča MQTT za Android

Predstavitev

Brez izkušenj ni razumevanja. To je resnica, preverjena s časom in generacijami. Zato ni nič boljšega za učenje praktičnih veščin kot poskušati nekaj narediti sam. In primeri, ki pokažejo, kaj zmorete in česa ne bi smeli niti poskusiti, vam bodo tukaj prišli prav. Tuje napake seveda ne morejo preprečiti nastanka lastnih napak, lahko pa pomagajo zmanjšati število slednjih.

Vprašanja in pisma bralcev prejšnjih člankov so me spodbudila, da naredim majhen projekt - primer nadzora prezračevanja, da pokažem, kako delujejo vozlišča ShioTiny.

Prvotna ideja, iz katere se je rodil krmilnik ShioTiny - črpalna in namakalna postaja - ni primerna za vsakogar in ne bo zanimiva za vsakogar. Zato sem za primer vzel sistem za nadzor prezračevanja, ki je mnogim razumljiv in uporaben.

Rekel bom, da ideja projekta ni moja, ampak Dobil sem ga od tukaj in nato prilagojena ShioTiny.

Najprej razumejte, kaj želite

Proces izboljšav je neskončen. In prav to premoženje je uničilo marsikatero dobro idejo in projekt. Razvijalec je namesto da bi izdal nekaj, kar ni bilo popolno, a še vedno deluje, to še naprej izboljševal. In ga je izboljševal, dokler ga konkurenti niso obšli in izdali delujočo rešitev, sicer ne idealno (in pogosto naravnost slabo), a delujočo.

Zato je zelo pomembno vedeti, kje projekt končati. Ali z drugimi besedami, določiti moramo, kaj želimo dobiti na koncu projekta od tega, kar imamo na začetku. V ruščini za dokument, ki je sestavljen prav z namenom, da opiše pot do ustvarjanja nečesa, obstaja čudovita kratka in jedrnata beseda "načrt", ki so jo duševno zaostali prevajalci in pomanjkljivi menedžerji v zadnjem času iz nekega razloga začeli imenovati "cesta". zemljevid". No, Bog jih blagoslovi.

Naš načrt bo takšen. Predpostavimo, da obstaja prostor, v katerem se lahko vlaga včasih močno poveča. Na primer, kot je kopalnica ali kuhinja. Vlaga je neprijetna stvar in način za boj proti njej je star kot svet: prezračite prostor. Načinov prezračevanja je kar nekaj. Morda pa bomo opustili eksotične in staromodne metode, kot so črnci s pahljačami, in se držali navadne pahljače. Ventilatorji so pri nas cenejši in jih je lažje najti.

Z eno besedo, želimo nadzorovati ventilator: vklopiti ga in ustrezno izklopiti. Natančneje, želimo, da se vklopi in izklopi, ko je to potrebno.

Ostaja še ugotoviti: pod kakšnimi pogoji naj se ventilator vklopi in pod kakšnimi pogoji naj se izklopi.

Tukaj je vse očitno: če je vlažnost nad določeno mejo, se ventilator vklopi in izvleče zrak; Vlažnost se je vrnila v normalno stanje - ventilator se izklopi.

Pozornemu bralcu bo takoj padla v oči beseda »dano«. Od koga? Kot je določeno?

Prag vlažnosti lahko nastavite na več načinov. Ogledali si bomo dva od njih: prvega - z uporabo spremenljivega upora in drugega - preko omrežja prek protokola MQTT. Vsaka od teh metod ima prednosti in slabosti, o katerih bomo razpravljali kasneje.

Za tiste, ki ne razumejo, bom pojasnil, da je "prag vlažnosti" raven vlažnosti, nad katero je treba vklopiti ventilator.

Naslednje vprašanje je: ali naj dobi uporabnik pravico, da neposredno vklopi ventilator? Se pravi, ne glede na stopnjo vlažnosti, s pritiskom na gumb? Takšno možnost bomo zagotovili. Navsezadnje bo ventilator morda potreben ne samo pri visoki vlažnosti, ampak tudi za odstranitev iz prostora, na primer, neprijetnega vonja, popularno imenovanega "smrad".

Torej, razumemo, kaj želimo in celo malo, kako bo delovalo. Naj na kratko naštejemo vse funkcije našega krmilnega sistema prezračevanja:

  • nastavitev mejne ravni vlažnosti (dve možnosti);
  • merjenje ravni vlažnosti;
  • samodejni vklop ventilatorja;
  • samodejni izklop ventilatorja;
  • ročni vklop ventilatorja (s pritiskom na gumb).

Torej, načrt je jasen. Vse zgoraj navedene funkcije je potrebno implementirati v naš program. Delovali bomo na podlagi tega »načrta«. Najprej narišimo blokovni diagram naprave.

Blokovna shema naprave

Na splošno bomo imeli dve taki shemi. Prva je za možnost, pri kateri je mejna raven vlažnosti nastavljena s spremenljivim uporom. Druga shema je za možnost, pri kateri se mejna raven vlažnosti nastavi prek omrežja preko protokola MQTT.

Ker pa se bodo ta vezja razlikovala samo po enem elementu - spremenljivem uporu, ki "nastavi mejno raven vlažnosti", bomo narisali samo en blokovni diagram. Seveda je blokovni diagram po GOST videti drugače. Vendar se ne osredotočamo na bizone inženirje, ampak na mlajšo generacijo. Zato je bolj pomembna prepoznavnost.

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Torej, kaj vidimo na sliki? Ventilator je priključen na rele Relay1 krmilnik ShioTiny. Upoštevajte, da je ventilator visokonapetostna naprava. Zato, če kdo to počne sam, bodite previdni. To pomeni, da najmanj, preden vtaknete prste ali merilne instrumente v vezje, vsaj izklopite napajanje ventilatorja. In druga opomba. Če je vaš ventilator močnejši od 250W, nato pa ga priključite neposredno na ShioTiny ni vredno - samo skozi zaganjalnik.

Ventilator smo uredili. Zdaj gumb "ročno vklopi" ventilator. Priključen je na vhod Vhod1. Tukaj ni več kaj razlagati.

Senzor temperature in vlažnosti DHT-11 (Ali DHT-22 ali njihovi analogi). Za njegovo povezavo je na krmilniku poseben vhod. ShioTiny. Kot lahko vidite na sliki, povezava takšnega senzorja tudi ni težava.

In končno, spremenljiva odpornost, ki določa mejno raven vlažnosti. Natančneje, delilnik, sestavljen iz spremenljivih in konstantnih uporov. Z njegovim priklopom ni težav, vendar naj pojasnim, da je vgrajeni ADC ESP8266 zasnovan za največ 1 volt. Zato je potreben približno 5-kratni delilnik napetosti.

In naj vas še enkrat spomnim, da ta delilnik ni potreben, če je mejna raven vlažnosti nastavljena prek omrežja s protokolom MQTT.

Začnimo ustvarjati algoritem za napravo v urejevalniku ElDraw ShIoTiny. Kako priti tja, do tega urejevalnika, si lahko preberete v prejšnjih člankih ali v navodilih, povezava do katerih je na začetku članka.

Prva možnost, najpreprostejša

Začnimo z nečim preprostim: vklopom releja Relay1 ko je za določen čas presežena mejna raven vlažnosti.

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Kot lahko vidite, nič zapletenega: samo štiri vozlišča, brez štetja vozlišč komentarjev. DHT11 - to je sam senzor temperature in vlažnosti (lahko ga zamenjate z DHT22).

Stalno KONST — mejna raven vlažnosti, v odstotkih.

Primerjalnik – vozlišče, ki primerja dve števili in izda 1, če je dani pogoj izpolnjen, in 0, če pogoj ni izpolnjen.

V našem primeru bo ta pogoj A>BČe A je raven vlažnosti, ki jo meri senzor, in B — mejna raven iste vlažnosti.

Takoj ko je izmerjena raven vlažnosti (A) bo presegla mejno raven vlažnosti (B), tam na izhodu primerjalnika A>B Prikaže se 1 in rele se vklopi. Nasprotno pa takoj, ko se raven vlažnosti povrne na normalno (tj. A<=B), tam na izhodu primerjalnika A>B Prikaže se 0 in rele se izklopi.

Vse jasno? Za tiste, ki vam ni najbolj udobno, si ga preberite še enkrat ali si oglejte opis delovanja enot v navodilih.

Upoštevajte, da podatki senzorja DHT11 posodobljen približno enkrat vsakih 10 sekund. Zato se rele ne bo mogel vklopiti in izklopiti pogosteje kot enkrat na 10 sekund.

Vse bi bilo v redu, vendar bi radi nastavili mejno raven vlažnosti s pomočjo spremenljivega upora. Nič ne bi moglo biti lažje!

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Zamenjajmo konstantno vozlišče z vozliščem ADC. Konec koncev smo na ADC priključili napetostni delilnik s spremenljivim uporom.

Napetost na vhodu ADC se spreminja od 0 do 1 volta. Vendar se vlažnost na izhodu senzorja spreminja od 0 do 100%. Kako jih primerjamo? Enostavno je. ADC vozlišče v ShioTiny ne le meri vhodno napetost, ampak tudi ve, kako lestvica in premik.

To pomeni, da bo imel izhod vozlišča ADC1 (ADC) vrednost X, izračunano po formuli

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Če ShIoTiny: prezračevanje mokre sobe (primer projekta) — napetost na vhodu ADC (od 0 do 1V); k - obseg (območje ADC) in b-odmik (ADC odmik). Torej, če nastavite k = 100 и b = 0, nato pa ob menjavi ShIoTiny: prezračevanje mokre sobe (primer projekta) v območju od 0 do 1, vrednost X na izhodu vozlišča ADC se bo spreminjal v območju od 0 do 100. To je številčno enako razponu sprememb vlažnosti od 0 do 100%.

Ali pa preprosto z vrtenjem drsnika s spremenljivo odpornostjo nastavite mejno raven vlažnosti od 0 do 100. Edina nevšečnost je, da ni prikazovalnih naprav. Toda v praksi, če naredite 6 delitev motorja s spremenljivim uporom (0%, 20%, 40%, 60%, 80%, 100%) - potem je to dovolj, da nastavite mejno raven vlažnosti.

Kako določimo kvote? k - obseg (območje ADC) in b-offset (odmik ADC)? Da, lažje kot parjena repa! Kazalec miške usmerite na vozlišče ADC1 in takoj boste videli okno z nastavitvami. Vanj lahko spravite vse, kar potrebujete. V našem primeru bo to okno, kot je na sliki.

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Imamo torej najpreprostejšo delujočo rešitev. Začnimo ga izboljševati.
Mimogrede, najpreprostejša rešitev ima eno prednost - ne potrebuje interneta. Je popolnoma avtonomen.

Druga možnost, povežite gumb

Vse deluje in vsi so zadovoljni. A smola, prezračevanja ne moremo vklopiti na silo. To sva se že dogovorila na vhodu Vhod1 imeli bomo priklopljen gumb, ki bo prisilno vklopil in izklopil ventilator, ne glede na senzor vlage.
Čas je, da obdelamo ta gumb v našem programskem diagramu.

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Blok za obdelavo klika gumba je označen z oranžno črto. Je števec pritiskov gumbov, ki se ponastavi na nič, ko vrednost na njegovem izhodu preseže ena (zelena črta, izhod vozlišča CT).

Tukaj vse deluje preprosto kot prej: števec CT šteje pritiske gumba, povezanega z vhodom Vhod1. To pomeni, da se vrednost na izhodu tega števca z vsakim pritiskom na gumb poveča za 1.

Takoj ko ta vrednost postane enaka dve (to je večja od 1), takoj na izhodu primerjalnika A>B Prikaže se 1. In ta 1 ponastavi števec CT na nič. To pomeni primerjalnik, spodnji v diagramu!

Tako ima naš gumb dve stanji - 0 in 1. Če bi potrebovali več stanj (3 ali 4 ali celo več) - bi morali spremeniti samo konstanto KONST od ene do druge vrednosti.

Imamo torej dva pogoja za vklop ventilatorja: prekoračitev dane stopnje vlažnosti in enkratni pritisk na gumb. Če je kateri od pogojev izpolnjen, se bo ventilator vklopil. In delovalo bo, dokler gumb ne pritisnete znova И stopnja vlažnosti se ne bo vrnila v normalno stanje.

Seveda lahko algoritem še bolj zapletete, vendar tega ne bomo storili - tistim, ki želijo, bomo pustili prostor za ustvarjalnost.

Tretja možnost, povezava z internetom

Vse, kar smo opisali, je zelo izvedljivo. Kaj pa razkazovanja? Navsezadnje se bo vsak hipsterski kraker heker smejal nekomu, ki vrti gumb in pritiska gumb, namesto da ga upravlja s pametnim telefonom! Sukanje ročaja "ni modno". Toda plazenje s prstom po pametnem telefonu, drgnjenje prsta do krvi - to je vrhunec želja hipster-hekerja-krekerja (nikoli jih nisem mogel ločiti vseh - tako da, če sem se motil, mi oprostite).

A bodimo prizanesljivi do teh posameznikov. Upravljanje prek interneta ima resnične prednosti. Prvič, to je vidnost. Obstaja veliko aplikacij za vse platforme, ki vam omogočajo, da z nekaj prilagoditvami ustvarite popolnoma uporabno nadzorno ploščo za naš krmilnik Carlson. Drugič, to je priložnost za daljinsko spremljanje stanja vlažnosti v prostoru. In tretjič, vidite lahko ne samo, kaj ventilator počne - vrti se ali ne, ampak tudi, kakšna mejna raven vlažnosti je nastavljena. In potem se je ventilator vklopil samodejno ali ročno. Na splošno vse, kar želite.

Seveda je za nekega oboževalca velika čast, da je deležen tolikšne pozornosti. Ampak to je le primer.

Za povezavo z internetom bomo torej uporabili tehnologijo MQTT in istoimenski protokol.
Da bi izkoristili to tehnologijo, potrebujemo posrednik MQTT. To je poseben strežnik, ki služi odjemalci MQTTNpr ŠIoTIny in vaš pametni telefon.

Bistvo tehnologije MQTT je sestavljen iz dejstva, da kateri koli odjemalec objavi poljubne podatke posredniku (strežniku) MQTT pod določenim imenom (imenovanim temo v terminologiji MQTT). Drugi odjemalci se lahko naročijo na poljubne podatke s svojim imenom (temo) in prejemanje na novo objavljenih podatkov. To pomeni, da vsa izmenjava podatkov poteka po načelu stranka-posrednik-stranka.

Я ne bom osredotočite se na podrobnosti. Na internetu je veliko člankov in vadnic o tem, kako deluje. MQTT in kateri programi obstajajo za izdelavo nadzornih plošč. Pokazal vam bom samo, kako lahko prejemamo in objavljamo podatke z uporabo ShioTiny.

Kot posrednik sem uporabil www.cloudmqtt.com, vendar je princip povsod enak.

Predvidevamo torej, da ste se registrirali za posrednik MQTT. Na splošno vam bo posrednik dal (ali zahteval, da si ga izmislite) uporabniško ime in geslo (za avtorizacijo), pa tudi vrata za povezavo. Za priklop ShioTiny к posrednik MQTT možno na dva načina - navadna povezava in preko TLS (SSL).

Vsi ti parametri v ShioTiny vneseno na zavihku Mreža, odsek MQTT Povezava s strežnikom.

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Če tvoj posrednik MQTT ne zahteva avtorizacije - ne vnesite svoje prijave in gesla (pustite ta polja prazna).

Parameter Predpona teme MQTT zahteva posebno razlago.

Predpona parametrov MQTT je niz, pripet k imenu teme (temo) ob objavi in ​​naročanju na posrednika MQTT. za namestitev MQTT predpona za vaš krmilnik ga morate samo vnesti v polje za vnos "Predpona teme MQTT"("Predpona teme MQTT"). Predpona se vedno začne s poševnico ("/")! Če v vnosno polje ne vnesete poševnice, bo dodana samodejno. V predponi ne morete uporabljati simbolov "#" и "+". Drugih omejitev ni.

Na primer, če objavite parameter "Status" (ali se naročite nanj) in vaša predpona je nastavljena na "/shiotiny/", potem bo ta parameter objavljen na posredniku pod imenom "/shiotiny/status" Če imate prazno predpono, se bodo vsi parametri na posredniku začeli s poševnico ("/"): "Status" bo objavljen kot "/stanje".

Torej verjamemo, da ste se registrirali za posrednik MQTT in prejel prijavo, geslo in vrata. Nato ste te parametre vnesli na zavihek Mreža, odsek MQTT Povezava s strežnikom krmilnik ShioTiny.

Predvidevamo, da je predpona nastavljena na "/soba/".

Začnimo z objavo stanja vseh ključnih parametrov: rele Relay1, ročna preklopna stanja, samodejna preklopna stanja in končno mejna in trenutna raven vlažnosti. No, bonus je temperatura v prostoru. Kako to storiti, glejte sliko.

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Kot lahko vidite, je razlika od prejšnje različice samo vozlišča "Objava MQTT" Ob upoštevanju predpone so objavljeni naslednji parametri:
ShIoTiny: prezračevanje mokre sobe (primer projekta)

Kot lahko vidite, imamo celotno stanje sistema na dlani!

A želimo ne samo videti, ampak tudi nadzorovati. Kaj naj naredim? Zelo preprosto. Zavrnili bomo nastavitev mejne ravni vlažnosti z uporabo ADC in spremenljivim uporom in nastavili bomo ravno to mejno raven vlažnosti glede na MQTT neposredno iz pametnega telefona!

ShIoTiny: prezračevanje mokre sobe (primer projekta)

Iz vezja odstranimo vozlišče ADC in vanj vključimo tri nova vozlišča: Trgovina FLASH, Obnovi FLASH и MQTT opišite.

Funkcija vozlišča MQTT opišite očitno: prejme parameter /soba/trigHset (mejna raven vlažnosti) s posrednik MQTT. Toda kaj potem naredi s podatki? Samo da jih vozlišču Trgovina FLASH, ki te podatke shrani v obstojnem pomnilniku pod imenom trigH. Po tem, vozlišče Obnovi FLASH bere podatke iz obstojnega pomnilnika pod imenom trigH in že vemo, kaj se bo zgodilo naprej.

Zakaj takšne težave? Zakaj prejetih podatkov ne moremo takoj poslati na vhod primerjalnika?

Kot je rekel tovariš S. Holmes - elementarno je! Nihče ne jamči, da se bo po vklopu vaše naprave pridružila posrednik MQTT. In vlažnost je treba izmeriti. In ventilator mora biti vklopljen. Toda brez informacij o mejni ravni vlažnosti je to nemogoče! Zato naša naprava, ko je vklopljena, iz obstojnega pomnilnika pridobi predhodno shranjeno raven praga vlažnosti in jo uporabi za sprejemanje odločitev. In ko se vzpostavi povezava z posrednik MQTT in nekdo bo objavil novo vrednost /soba/trigHset, bo uporabljena ta nova vrednost.

Potem si lahko izmisliš, kar hočeš. Na primer, poleg vlažnosti uvedite tudi temperaturno obračunavanje. Ali dodajte »pametno« krmiljenje osvetlitve (še vedno imamo dva releja in dva vhoda neuporabljena). Vse v tvojih rokah!

Zaključek

Tako smo si ogledali več primerov implementacije v bistvu preprostega krmilnika, ki temelji na ShIoTiny. Mogoče bo to komu koristilo.

Kot vedno, predlogi, želje, vprašanja, tipkarske napake itd. - po e-pošti: [e-pošta zaščitena]

Vir: www.habr.com

Dodaj komentar