
Peamised punktid vÔi millest on see artikkel
JĂ€tkame artiklite tsĂŒklit ShIoTiny â visuaalselt programmeeritav kontroller, mis pĂ”hineb kiibil ESP8266.
Selles artiklis rÀÀgitakse vannitoa vÔi muu niiske ruumi ventilatsiooni juhtimise projekti nÀitel, kuidas luua programm ShIoTiny.
Eelmised artiklid seeriast.
Viidatud lingid
Sissejuhatus
MÔistmine ei tule ilma kogemuseta. See on tÔde, mida on ajaga ja pÔlvkondadega tÔestatud. SeetÔttu pole paremat viis harida oma praktilisi oskusi kui proovida midagi ise teha. Ja nÀited, mis nÀitavad, mida saab teha ja mida mitte, tulevad sel hetkel vÀga Àra. Teiste vead ei suuda muidugi meie enda vigu Àra hoida, kuid need vÔivad aidata viia viimaste arvu minimaalseteni.
Eelmiste artiklite lugejate kĂŒsimused ja kirjad innustasid mind tegema vĂ€ikese nĂ€idisprojekti ventilatsiooni juhtimiseks, et nĂ€idata, kuidas ShIoTiny ĂŒksused töötavad.
Algne idee, mille alusel kontroller sĂŒndis ShIoTiny â pumpamiseks ja kastmiseks mĂ”eldud jaam â ei sobi kaugeltki kĂ”ikidele ja ei ole huvitav. SeetĂ”ttu valisin kĂ”ikidele arusaadava ja paljudele kasuliku ventilatsiooni juhtimise sĂŒsteemi nĂ€itena.
Ătlen, et projekti idee ei ole minu oma, vaid ja seejĂ€rel kohandasin seda ShIoTiny.
Esiteks mÔista, mida sa tahad
TĂ€iendamise protsess on lĂ”putu. Ja just see omadus on hĂ€vitanud hulga hĂ€id ideid ja projekte. Arendaja, selle asemel, et vĂ€lja anda vĂ€hemalt mitte ideaalne, kuid töötav lahendus â jĂ€tkas selle tĂ€iustamist. Ja tĂ€iustas seni, kuni konkurendid möödusid temast, tehes vĂ€lja vĂ€hemalt mitte ideaalset (ja tihti avatud), kuid töötavat lahendust.
SeetĂ”ttu on vĂ€ga oluline teada â kus projektis punkt panna. VĂ”i teisisĂ”nu, tuleb mÀÀratleda, mida me soovime saavutada projekti lĂ”pus, arvestades seda, mis meil on alguses. Venekeeles on dokumendile, mis koostatakse just eesmĂ€rgiga kirjeldada, kuidas midagi luua, suurepĂ€rane lĂŒhike ja sisukas sĂ”na âplaanâ, mida mĂ”istuse puudumisega tĂ”lkijad ja defektiivsed juhid on viimasel ajal kuidagi hakanud nimetama âteekaardiksâ. Aga las olla.
Meie plaan on jÀrgmine. Oletame, et on ruum, kus niiskus vÔib vahel tÔsiselt tÔusta. NÀiteks nagu vannituba vÔi köök. Niiskus on ebameeldiv asi ja selle vastu vÔitlemine on vana kui aeg: ruumi ventileerimine. Ventileerimise viise on mitmeid. Kuid loobume eksootilistest ja vananenud meetoditest nagu orjad, kes lehvitavad, ning peatume tavalisel ventilaatoril. Ventilaatorid on odavamad ja neid on meie kandis lihtsam leida.
KokkuvĂ”ttes tahame ventilaatorit juhtida: sisse lĂŒlitada ja vastavalt vĂ€lja lĂŒlitada. TĂ€psemalt, tahame, et see lĂŒlituks ise sisse ja vĂ€lja, kui vajalik.
JÀÀnud on mÀÀrata, millistel tingimustel ventilaator peaks sisse lĂŒlituma ja millistel tingimustel - vĂ€lja lĂŒlituma.
Siin on kĂ”ik ilmne: kui niiskus ĂŒletab mĂ”nda mÀÀratud piiri - ventilaator lĂŒlitub sisse ja tĂ”mbab Ă”hku vĂ€lja; niiskus on normaliseerunud - ventilaator lĂŒlitub vĂ€lja.
Hoolikas lugeja paneb kohe tĂ€hele sĂ”na âmÀÀratudâ. Kelle mÀÀratud? Kuidas mÀÀratud?
Piirniiskuse mÀÀramine on vĂ”imalik mitmeti. Vaatleme kahte meetodit: esimene - muutuva takistuse abil ja teine - ĂŒle vĂ”rgu MQTT protokolli kaudu. Igal neist meetoditest on omad eelised ja puudused, mida arutame hiljem.
Nendele, kes ei mĂ”istnud, selgitan, et âpiirniiskusâ on niiskuse tase, mille ĂŒletamisel on vajaliku ventilaatori sisselĂŒlitamine.
JĂ€rgmine kĂŒsimus: kas anda kasutajale vĂ”imalus ventilaator otse sisse lĂŒlitada? St olenemata niiskuse tasemest, nuppu vajutades? Meie kinnitasime sellise vĂ”imaluse. LĂ”ppude lĂ”puks vĂ”ib ventilaator olla vajalik mitte ainult kĂ”rge niiskuse korral, vaid ka nĂ€iteks ebameeldiva lĂ”hna eemaldamiseks, mida rahvasuus tuntakse kui âhaisâ.
Nii et oleme aru saanud, mida tahame ning ka veidi, kuidas see toimib. Loetleme lĂŒhidalt kĂ”ik meie Ă”hutusĂŒsteemi funktsioonid:
- piirniiskuse taseme seadmine (kaks varianti);
- niiskustaseme mÔÔtmine;
- ventilaatori automaatne sisse lĂŒlitamine;
- ventilaatori automaatne vĂ€lja lĂŒlitamine;
- ventilaatori manuaalne sisse lĂŒlitamine (nupu vajutamisel).
Nii, plaan on selge. KĂ”ik ĂŒlaltoodud funktsioonid tuleb meie programmis rakendada. Selle "plaani" alusel me ka tegutseme. Esmalt joonistame seadme struktuurskeemi.
Seadme struktuurskeem
Tegelikult on selliseid skeeme meil kaks. Esimene â variant, kus niiskustase mÀÀratakse muutuva takistusega. Teine skeem â variant, kus niiskustase mÀÀratakse vĂ”rgus MQTT-protokolli kaudu.
Kuna need skeemid erinevad vaid ĂŒhe elemendi â muutuva takistiga âniiskuse mÀÀramise seadeâ â poolest, joonistame siiski vaid ĂŒhe struktuurskeemi. Loomulikult nĂ€eb struktuurskeem vastavalt GOST-ile teistsugune vĂ€lja. Kuid meie ei suuna tĂ€helepanu inseneride "puhastele menĂŒĂŒdâ vaid noorele pĂ”lvkonnale. SeetĂ”ttu on visuaalsus olulisem.

Nii, mida me joonisel nĂ€eme? Ventilaator on ĂŒhendatud releega Relay1 kontrolleris. ShIoTinyJuhin tĂ€helepanu, et ventilaator on seade, mis töötab kĂ”rge pingega. Seega, kui keegi kavatseb sellist asja ise teha â olge ettevaatlik. Ehkki, vĂ€hemalt enne kui torkate sĂ”rmed vĂ”i mÔÔteseadmed skeemi â lĂŒlitage ventilaator kindlasti vĂ€lja. Teine mĂ€rk oleks: kui teie ventilaator on vĂ”imsam kui 250W, siis ei tohiks te seda otse ShIoTiny ĂŒhendada â ainult kĂ€ivitusseadmest.
Ventilaatorist oleme aru saanud. NĂŒĂŒd on nupp âmanuaalne sisselĂŒlitamineâ ventilaatorile. See on ĂŒhendatud sissepÀÀsuga Input1. Siin pole rohkem seletamist.
Temperatuuri ja niiskustaseme andur DHT-11 (vĂ”i DHT-22 vĂ”i nende analoogid). Selle ĂŒhendamiseks on kontrolleris ette nĂ€htud spetsiaalne sisend. ShIoTiny. Nagu jooniselt nĂ€ha â sellise anduri ĂŒhendamine ei ole probleem.
Ja lĂ”puks, muutuva takistusega, mis mÀÀrab niiskuse lĂ€ve. TĂ€psemalt â jagur, mis koosneb muutuva ja pĂŒsiva takistusega. Selle ĂŒhendamisega pole probleeme, aga selgitan, et sisseehitatud A/D muundur ESP8266 on maksimaalselt 1V. Seega on vajalik pingejagur umbes 5 korda.
Ja veel korda tuletan meelde, et see jagur pole vajalik, kui niiskuse lÀve mÀÀratakse vÔrgus MQTT-protokolli kaudu.
Alustame seadme töö algoritmi koostamist ElDraw ShIoTiny toimetajas. Kuidas sinna toimetajasse pÀÀseda, saate lugeda varasemates artiklites vÔi juhendis, mille link on artikli alguses.
Esimene variant, kÔige lihtsam
Alustame lihtsast: relee aktiveerimisest Relay1 niiskustaseme ĂŒletamisel mÀÀratud aja jooksul.

Nagu nĂ€eme, pole siin midagi keerulist: ainult neli plokki, vĂ€lja arvatud kommentaariplokid. DHT11 â see on temperatuur ja niiskuse andur (seda vĂ”ib asendada DHT22).
Konstant CONST â niiskustase protsentides.
VĂ”rdlusplokk â plokk, mis vĂ”rdleb kaht numbrit ja annab vĂ€ljundis 1, kui mÀÀratud tingimus on tĂ€idetud, ja 0, kui tingimus ei ole tĂ€idetud.
Meie puhul on selliseks tingimuseks A>B, kus A â anduri mÔÔdetud niiskustase, ja B â sama niiskuse piirtase.
Niipea kui mÔÔdetud niiskustase (A) ĂŒletab niiskuse piirtaseme (B), ilmub vĂ”rdlusploki vĂ€ljundisse 1 ja relee lĂŒlitub sisse. Ja vastupidi, niipea kui niiskustase normaliseerub (st A>B A<=B ilmub 0 ja relee lĂŒlitub vĂ€lja.), ilmub vĂ”rdlusploki vĂ€ljundisse 1 ja relee lĂŒlitub sisse. Ja vastupidi, niipea kui niiskustase normaliseerub (st A>B Kas kĂ”ik on selge? Kes ei saa hĂ€sti aru â looge uuesti vĂ”i vaadake plokkide töö kirjeldust juhendis.
Mainin, et anduri andmed
uuendatakse umbes iga 10 sekundi jĂ€rel. SeetĂ”ttu ei saa relee lĂŒlituda sisse ega vĂ€lja sagedamini kui kord 10 sekundi jooksul. DHT11 KĂ”ik olekski hĂ€sti, aga me tahaksime mÀÀrata niiskustaseme kasutades muutuja takistit. Mitte midagi lihtsamat!
Lihtsalt asendame konstantsuse ploki A/C plokiga. LĂ”ppude lĂ”puks ĂŒhendasime pingedivideri muutuva takistiga just A/C-ga.

A/C sisenemine pinget on vahemikus 0 kuni 1 V. Kuid anduri vĂ€ljundis olevale niiskusele â vahemik on 0 kuni 100%. Kuidas me neid siis vĂ”rdleme? KĂ”ik on lihtne. A/C plokk
ei mÔÔda mitte ainult sisendpinget, vaid oskab seda ka ShIoTiny skaalal ja nihutada See tÀhendab, et A/C ploki vÀljundis on vÀÀrtus.
, arvutatud valemiga Xâ sisendpinge ADC (0 kuni 1 V);

, kus
â vahemik (ADC vahemik) ja k â nihke (ADC nihke). Nii et kui seadistame bk=100 b=0 ja , siis pinget muutesvahemikus 0 kuni 1, vÀÀrtus
A/C ploki vÀljundis muutub vahemikus 0 kuni 100. See tÀhendab, et see on numbreid muutva niiskuse vahemikust 0 kuni 100% vÔrdeliselt. X ADC sÔlme vÀljund muudab vahemikus 0 kuni 100. See tÀhendab, et see vastab niiskuse muutumise vahemikule 0 kuni 100%.
VĂ”i, lihtsustatult öeldes, pöörates muutuva takistuse mootori, saab seadistada niiskuse kĂŒnniset ĂŒkskĂ”ik kus vahemikus 0 kuni 100. Ainuke ebamugavus on see, et puuduvad igasugused kuvamise seadmed. Kuid praktikas, kui muutuva takistuse mootoril on 6 jaotust (0%, 20%, 40%, 60%, 80%, 100%) â siis seda piisab, et seada niiskuse kĂŒnnis.
Kuidas me saame mÀÀrata koefitsiente k â nihke (ADC nihke). Nii et kui seadistame b- nihke (ADC offset)? See on sama lihtne kui raha! KlĂ”psake hiirega sĂ”lmel ADC1 ja teil avaneb koheselt seadistamise aken. Selles aknas saate seadistada kĂ”ike, mis teil on vajalik. Meie olukorra jaoks on see selline aken nagu joonisel.

Nii et meil on olemas lihtne toimiv lahendus. Alustame selle tÀiustamist.
Muide, lihtsal lahendusel on ĂŒks eelis â see ei vaja internetti. See on tĂ€ielikult iseseisev.
Teine variant, ĂŒhendame nupu
KĂ”ik töötab ja kĂ”igil on hea meel. Kuid on probleem â me ei saa sundventilatsiooni sisse lĂŒlitada. Oleme juba kokku leppinud, et sissepÀÀsule Input1 on ĂŒhendatud nupp, mis lĂŒlitab ventilaatori sisse ja vĂ€lja, ignoreerides niiskuse andurit.
On aeg selle nuppu meie skeemis-programmis töödelda.

Nupu vajutamise töötlemise plokk on vĂ€lja toodud oranĆŸi joonena. See on nupu vajutuste loendur, mis lĂ€htestatakse nulli, kui selle vĂ€ljund ĂŒletab ĂŒhe (roheline joon, sĂ”lme vĂ€ljund CT).
Siin töötab kĂ”ik sama lihtsalt nagu varem: loendur CT loendab nupu vajutusi, mis on ĂŒhendatud sisendiga Input1. See tĂ€hendab, et selle loenduri vĂ€ljund suureneb iga nupu vajutusega 1 vĂ”rra.
Niipea, kui see vÀÀrtus on vÔrdne kahega (st suurem kui 1), ilmub kohe komparaatori vÀljundisse A>B 1. Ja see 1 lÀhtestab loenduri CT nulli. RÀÀgime komparaatorist, mis on skeemi alumine osa!
Nii et meie nupul on kaks olekut â 0 ja 1. Kui meil oleks vaja rohkem olekuid (3 vĂ”i 4 vĂ”i veel rohkem) â piisaks lihtsalt konstantset CONST muuta ĂŒhele teisele vÀÀrtusele.
Nii et meil on kaks tingimust ventilaatori sisselĂŒlitamiseks: ĂŒletamine mÀÀratud niiskuse tasemest ja korra nende vajutamine nuppu. ĂkskĂ”ik millise tingimuse tĂ€itmisel lĂŒlitub ventilaator sisse. Ja see töötab, kuni nuppu uuesti vajutatakse Ja niiskuse tase ei normaliseeru.
Muidugi, algoritmi saab veelgi keerulisemaks muuta, kuid me ei tee seda â jĂ€tame loomingulisuseks ruumi soovijatele.
Kolmas variant, ĂŒhendame internetiga
KĂ”ik, mida me oleme kirjeldanud, töötab tĂ€iesti. Aga kuidas on uhkuse kĂŒsimusega? Iga akne ajal hippi-hĂ€kker-naerja naerab selle ĂŒle, kes keerab nuppu ja vajutab nuppu, mitte ei juhi oma nutitelefonist! Nupu keeramine on "ebaaktuaarne". Aga sĂ”rmega nutitelefonil libisemine, seda sĂ”rme veretuks kulutades â see ongi hippi-hĂ€kkeri soovide haripunkt (ma ei ole kunagi suutnud neid eristada â nii et kui ma eksisin, vabandage).
Aga olgem nende isikute suhtes leebed. Interneti kaudu juhtimisega on ka reaalsed eelised. Esiteks, see on kĂ”rge nĂ€htavus. On tohutult rakendusi kĂ”ikide platvormide jaoks, mis vĂ”imaldavad paarise klĂ”psuga luua tĂ€iesti kasutatava juhtpaneeli meie kontrolli â Carlssoniga. Teiseks, see vĂ”imaldab kaugelt jĂ€lgida ruumi niiskuse taset. Ja kolmandaks, saab nĂ€ha mitte ainult seda, kas ventilaatore keerleb vĂ”i mitte, vaid ka seda, milline on seatud niiskuse piirvÀÀrtus. Ja samuti â kas ventilaatore lĂŒlitati sisse automaatselt vĂ”i kĂ€sitsi. ĂhesĂ”naga, kĂ”ik, mida soovite.
KĂŒll aga on mĂ”ne ventilaatore jaoks liiga palju au â nii palju tĂ€helepanu. Kuid see on vaid nĂ€ide.
Nii et internetiĂŒhenduse loomiseks kasutame me tehnoloogiat MQTT ja samanimelist protokolli.
Selle tehnoloogia kasutamiseks on meil vajalik MQTT-broker. See on spetsiaalne server, mis teenindab MQTT-kliente, nÀiteks ShIoTIny ja teie nutitelefoni.
Tehnoloogia olemus MQTT on selline, et iga klient avaldab MQTT-brokeris (serveris) suvalisi andmeid kindla nime all (mida nimetatakse teema terminoloogias MQTT). Teised kliendid vÔivad liituda suvaliste andmetega nende nime jÀrgi (teema) ja saada uusi avaldatud andmeid. See tÀhendab, et kogu andmevahetus toimub kliendi-brokeri-kliendi pÔhimÔttel.
Mina Ma ei hakka arhiivisuguseid ĂŒksikasju. Internetis on tohutult artikleid ja Ă”petusi selle kohta, kuidas töötab MQTT ning millised programmid on rikaste paneelide loomiseks. Lihtsalt nĂ€itan, kuidas me saame andmeid vastu vĂ”tta ja avaldada ShIoTiny.
Brokernikuna kasutasin ma , kuid pÔhimÔte on igal pool sama.
Nii et eeldame, et olete registreerunud MQTT-brokerisĂldjuhul annab maakler teile (vĂ”i nĂ”uab, et te vĂ€lja mĂ”tleksite) kasutajanime ja parooli (autentimiseks), samuti portsjoni ĂŒhendamiseks. Ăhendage ShIoTiny aadressile MQTT maakleriga kahe erineva meetodi kaudu â tavaline ĂŒhendus ja TLS (SSL).
KĂ”ik need parameetrid ShIoTiny sisestatakse vahekaardile VĂ”rgundus, jaos MQTT ĂŒhendus Serveriga.

Kui teie MQTT-broker ei nĂ”ua autentimist â Ă€rge sisestage kasutajanime ja parooli (jĂ€tke need vĂ€ljad tĂŒhjaks).
Parameeter MQTT teema prefiks nÔuab eraldi selgitamist.
MQTT parameetrite prefiks on string, mis lisatakse teema nimele (teema) publikatsioonide ja tellimuste ajal MQTT maakleris. Et mÀÀrata MQTT prefiks oma kontrollerile, peate selle lihtsalt sisestama vĂ€ljale "MQTT teema prefiksi» («MQTT teema prefiks". Prefiks algab alati kaldkriipsuga («/»)! Kui te ei sisesta vĂ€ljale kaldkriipsu â lisatakse see automaatselt. Prefiksis ei tohi kasutada mĂ€rke «#» ja «+». Teisi piiranguid pole.
NĂ€iteks, kui avaldate parameetri "staatus" (vĂ”i tellite selle), ja teie prefiks on mÀÀratud kui "/shiotiny/", siis avaldatakse see parameeter maakleris nime all "/shiotiny/status". Kui teil on mÀÀratud tĂŒhi prefiks, siis kĂ”ik parameetrid maakleris algavad kaldkriipsuga («/»): «staatus" avaldatakse kui "/status».
Nii et oletame, et olete registreerunud MQTT-brokeris ja saanud kasutajanime, parooli ja portsjoni. SeejĂ€rel olete need parameetrid mÀÀranud vahekaardile VĂ”rgundus, jaos MQTT ĂŒhendus Serveriga kontrolleris. ShIoTiny.
Oletame, et prefiks on mÀÀratud vÀÀrtusele "/room/».
Alustame sellega, et avaldame kĂ”igi vĂ”tme parameetrite seisundi: relee Realay1, kĂ€sitsi sisse-lĂŒlitamise seisund, automaatse sisse-lĂŒlitamise seisund ja lĂ”puks piiri- ja praegused niiskustasemed. Ja boonuseks â toatemperatuur. Kuidas seda teha, vaadake jooniselt.

Kuidas nÀeme, siis erinevus eelneva variandi vahel on ainult sÔlmedes "MQTT avaldamine". VÔttes arvesse prefiksi, avaldatakse jÀrgmised parameetrid:

Kuidas nĂ€eme, on kogu sĂŒsteemi seisund meil kĂ€eulatuses!
Aga me tahame mitte ainult nÀha, vaid ka juhtida. Kuidas olla? VÀga lihtne. Loobume niiskustaseme piiri mÀÀramisest lÀbi ADC ja muutmisvastase jaoturi ning mÀÀrame selle piiri niiskustaseme otse oma nutitelefonist! MQTT Kustutame sÔlme ADC skeemist ja lisame sinna kolm uut sÔlme:

FLASH salvestamine FLASH taastamine, MQTT kirjeldus ja SÔlme funktsioon.
on selge: see saab parameetri SÔlme funktsioon (niiskustase) MQTT maaklerilt. /room/trigHset Aga mida ta andmetega edasi teeb? Lihtsalt edastab need sÔlmele .. FLASH taastamine, mis omakorda salvestab need andmed energiat mittehaldas mÀlus nimega trigH. PÀrast seda loeb sÔlm MQTT kirjeldus energiamitthoidva mÀlu andmed nimega trigH ja mis edasi juhtub, me juba teame.
Miks sellised keerukused? Miks ei saa saadud andmeid kohe vÔrreldavale sisendiks anda?
Nagu ĂŒtles tover Ć . Holms â see on elementaarne! Keegi ei garanteeri, et pĂ€rast seadme sisselĂŒlitamist see ĂŒhendub MQTT maakleriga. Ja niiskust tuleb mÔÔta. Ja ventilaator tuleb sisse lĂŒlitada. Kuid ilma teabeta niiskuse piirtaseme kohta on see vĂ”imatu! SeetĂ”ttu meie seade sisselĂŒlitamisel tĂ”mbab varasemalt mĂ€letatud niiskuse piirtaseme energiat mittehaldavas mĂ€lus ja kasutab seda otsuste tegemiseks. Ja kui tekib ĂŒhendus MQTT-vahetajaga ja keegi avaldab uue vÀÀrtuse /room/trigHset, siis kasutatakse seda uut vÀÀrtust.
Edasi vÔite vÀlja mÔelda kÔike, mida soovite. NÀiteks lisada niiskusele ka temperatuuri jÀlgimine. VÔi lisada 'nutikat' valgustuse juhtimist (meil on veel kaks releed ja kaks sisendit kasutamata). KÔik on teie kÀtes!
KokkuvÔte
Nii oleme vaadanud mitmeid lihtsate pĂ”himĂ”tete rakendamise nĂ€iteid ShIoTiny baasil. Ăkki on sellest kellelegi kasu.
Kuidas ikka, ettepanekud, soovid, kĂŒsimused, trĂŒkivead ja muu â aadressil: shiotiny@yandex.ru
Allikas: habr.com
