
PÔhiteesid vÔi millest see artikkel rÀÀgib
JĂ€tkame artiklite tsĂŒklit teemal ShIoTiny â visuaalselt programmeeritav kontroller, mis pĂ”hineb kiibil ESP8266.
Selles artiklis rÀÀgitakse vannitoa ventilatsiooni juhtimise projekti nÀitel, kuidas koostada programm ShIoTiny.
Eelmised artiklid sarjast.
Lingid
Sissejuhatus
MÔistus ilma kogemuseta ei eksisteeri. See on tÔde, mille on tÔestanud aeg ja pÔlvkonnad. SeetÔttu pole midagi paremat praktiliste oskuste Ôppimiseks kui proovida midagi ise teha. Ja nÀidised, mis nÀitavad, mida saab teha ja mida ei tasu proovida, tulevad siinkohal vÀga kasuks. Teiste vead ei suuda kindlasti Àra hoida enda vigu, kuid vÔivad aidata vÀhendada viimaste arvu.
Eelnevad artiklid ja lugejate kirjad inspireerisid mind looma vÀikse nÀidisprojekti, et nÀidata, kuidas ShIoTiny moodulid ventileerimise juhtimist toimivad.
Algne idee, mille alusel kontroller ilmus, ShIoTiny â pumpamis- ja kastmissĂŒsteem â ei pruugi kĂ”igile sobida ega huvi pakkuda. SeetĂ”ttu vĂ”tsin nĂ€itena lihtsa ja paljudele kasuliku ventileerimise juhtimissĂŒsteemi.
RÀÀkides sellest, ei ole projekti idee minu, vaid ja seejÀrel kohandasin ShIoTiny.
KÔigepealt mÔista, mida soovid
Parendamise protsess on lĂ”putu. Just see omadus on tapnud palju hĂ€id ideid ja projekte. Arendaja jĂ€tkas, selle asemel et vĂ€lja anda ehk mitte ideaalne, kuid töötav toode â parendamist. Ja ta parendas seda seni, kuni konkurendid möödusid temast, tuues turule ehk mitte ideaalse (ja sageli koguni kohutava), aga töötava lahenduse.
SeetĂ”ttu on vĂ€ga oluline teada, kus projektis punkt paika panna. TeisisĂ”nu, tuleb mÀÀratleda, mida me lĂ”puks alguses olevast saavutada tahame. Eesti keeles on dokumendi jaoks, mis koostatakse eesmĂ€rgiga kirjeldada millegi loomise teed, olemas suurepĂ€rane lĂŒhike ja sisukas sĂ”na âplaanâ, mida mĂ”nikord nimetavad vale tĂ”lgenduse tĂ”ttu âteekonnakaardiksâ mitte professionaalsed tĂ”lgid ja defektsed juhid. Aga las olla.
Meie plaan on jĂ€rgmine. Oletame, et meil on ruum, kus Ă”huniiskus vĂ”ib mĂ”nikord tugevalt tĂ”usta. NĂ€iteks nagu vannituba vĂ”i köök. Niiskus on ebameeldiv asi ja selle vastu saab vĂ”idelda juba iidsetest aegadest: ruumi Ă”hutamine. Ăhutamiseks on palju viise. Kuid me loobume eksootilistest ja vanamoelistest meetoditest, nagu nĂ€iteks orjad ventilaatoritega, ja piirdume tavalise ventilaatoriga. Ventilaatorid on odavamad ning neid on meie kandis lihtsam leida.
ĂhesĂ”naga, me tahame ventilaatorit kontrollida: lĂŒlitada see sisse ja vĂ€lja. TĂ€psemalt, me tahame, et see ise lĂŒlituks sisse ja vĂ€lja, kui vaja.
JÀÀb selgeks teha: millistel tingimustel ventilaator peab sisse lĂŒlitama ja millistel tingimustel vĂ€lja lĂŒlitama.
Siin on kĂ”ik selge: kui niiskus ĂŒletab teatud mÀÀra, siis ventilaator lĂŒlitub sisse ja tĂ”mbab Ă”hku vĂ€lja; niiskus normaliseerub â ventilaator lĂŒlitub vĂ€lja.
Hoolikas lugeja mĂ€rkab kohe sĂ”na âmÀÀratudâ. Kelle mÀÀratud? Kuidas mÀÀratud?
MÀÀrata lĂ€ve niiskust saab mitmeti. Vaadake kaht meetodit: esimene â muutuva takistuse kaudu ja teine â vĂ”rgu kaudu MQTT protokolli kaudu. Igal meetodil on omad eelised ja puudused, mis kĂ€sitletakse hiljem.
Neile, kes ei saanud aru, selgitan, et âlĂ€ve niiskusâ on selline niiskuse tase, mille ĂŒletamisel tuleb ventilaator sisse lĂŒlitada.
JĂ€rgmine kĂŒsimus: kas anda kasutajale Ă”igus ventilaator otse sisse lĂŒlitada? See tĂ€hendab, sĂ”ltumata niiskustasemest, nupule vajutamisel? Me kavandame sellist vĂ”imalust. LĂ”ppude lĂ”puks vĂ”ib ventilaatorit vajada mitte ainult suurema niiskuse korral, vaid ka ruumist nĂ€iteks ebameeldiva lĂ”hna, mida rahvasuus nimetatakse âpahaks lĂ”hnaksâ, eemaldamiseks.
Nii et me mĂ”istsime, mida soovime ja isegi veidi, kuidas see töötab. Loetleme lĂŒhidalt kĂ”ik meie ventilatsioonisĂŒsteemi funktsioonid:
- niiskustaseme kĂŒnnise seadmine (kaks varianti);
- niiskustaseme mÔÔtmine;
- ventilaatori automaatne sisselĂŒlitamine;
- ventilaatori automaatne vĂ€ljalĂŒlitamine;
- ventilaatori kĂ€sitsi sisselĂŒlitamine (nupule vajutamisel).
Nii et plaan on selge. On vajalik teostada kĂ”ik ĂŒlaltoodud funktsioonid meie programmis. Selle âplaaniâ alusel me tegutseme. Alustuseks joonistame seadme struktuurskeemi.
Seadme struktuurskeem
Ăldiselt on meil selliseid skeeme kaks. Esimene â variandi jaoks, kus niiskuse lĂ€vivÀÀrtus on mÀÀratud muutuva takistusega. Teine skeem â variandi jaoks, kus niiskuse lĂ€vivÀÀrtus on mÀÀratud vĂ”rgus lĂ€bi protokolli MQTT.
Kuna need skeemid erinevad vaid ĂŒhe elemendi â muutuva takistuse âniiskuse lĂ€vivÀÀrtuse seadistamineâ â poolest, joonistame vaid ĂŒhe struktuurses skeemis. Loomulikult nĂ€eb struktuurne skeem vastavalt GOST-ile vĂ€lja teistsugune. Kuid me ei tohiks keskenduda inseneride kĂ€sitööle, vaid noorele pĂ”lvkonnale. SeetĂ”ttu on visuaalsus olulisem.

Nii et, mida me jooniselt nĂ€eme? Ventilaator on ĂŒhendatud releega Relay1 kontrolleri ShIoTiny. Joonin tĂ€helepanu, et ventilaator on seade, mis töötab kĂ”rgel pingel. Seega, kui keegi soovib sellist teha â olge ettevaatlik. See tĂ€hendab, et vĂ€hemalt enne, kui panete oma sĂ”rmed vĂ”i mÔÔturid skeemi, lĂŒlitage vĂ€lja vĂ€hemalt ventilaator. Ja teine tĂ€helepanek. Kui teie ventilaator on vĂ”imsam kui 250 W, siis pole mĂ”tet seda otse ShIoTiny ĂŒhendada â ainult lĂ€bi kĂ€ivitaja.
Ventilaatoriga saime hakkama. NĂŒĂŒd on nupu «manuaalne aktiveerimine» ventilaatorile. See on ĂŒhendatud sisendiga Sisend1. Siin polegi rohkem selgitada.
Temperatuuri ja niiskuse andur DHT-11 (vĂ”i DHT-22 vĂ”i nende analoogid). Selle ĂŒhendamiseks on kontrolleril ette nĂ€htud spetsiaalne sisend ShIoTiny. Nagu pildilt nĂ€ha â sellise anduri ĂŒhendamine ei valmista probleeme.
Ja lĂ”puks, muutuv takistus, mis mÀÀrab niiskuse lĂ€vitaseme. TĂ€psemalt â jagaja, mis koosneb muutuvast ja pidevast takistusest. Probleeme selle ĂŒhendamisega ei ole, kuid selgitan, et sisseehitatud A/D muundur on ESP8266 mĂ”eldud maksimaalselt 1V. SeetĂ”ttu on vajalik pingejagaja umbes 5 korda.
Ăra unusta, et seda jagajat ei vajata, kui niiskuse lĂ€vitaseme mÀÀrab vĂ”rgu kaudu MQTT protokolli abil.
Alustame seadme töö algoritmi koostamist ElDraw ShIoTiny toimetajas. Kuidas sinna pÀÀseda, saab lugeda varasemates artiklites vÔi juhendis, mille link on artikli alguses.
Esimene variant, kÔige lihtsam
Alustame lihtsast: relee sisselĂŒlitamine Relay1 niiskuse lĂ€vitaseme ĂŒletamisel kindlaksmÀÀratud ajaks.

Nagu nĂ€eme, pole midagi keerulist: kokku neli sĂ”lme, vĂ€lja arvatud kommentaarsĂ”lmed. DHT11 â see on tegelikult temperatuuri ja niiskuse andur (vĂ”ib vahetada vĂ€lja DHT22).
Konstant CONST â niiskuse piiritase protsentides.
Komparaator â sĂ”lm, mis vĂ”rdleb kahte arvu ja annab vĂ€ljundis 1, kui mÀÀratud tingimus peab paika, ja 0, kui tingimus ei vasta.
Meie juhul on selliseks tingimuseks A>B, kus A â anduri mÔÔdetud niiskus, ning B â sama niiskuse piiritase.
Niipea, kui mÔÔdetud niiskus (A) ĂŒletab niiskuse piiritaseme (B), ilmub komparaatori vĂ€ljundisse A>B 1 ja relee lĂŒlitub sisse. Ja vastupidi, kohe, kui niiskus normaliseerub (st A<=B), ilmub komparaatori vĂ€ljundisse A>B ), ilmub 0 ja relee lĂŒlitub vĂ€lja.
Kas kÔik on selge? Kui ei, loe veel kord vÔi vaata sÔlmede töö kirjeldust juhendis.
TĂ”in vĂ€lja, et andurist saadud andmed DHT11 uuendatakse umbes iga 10 sekundi jĂ€rel. Seega ei saa relee sisse ja vĂ€lja lĂŒlituda sagedamini kui ĂŒks kord 10 sekundi jooksul.
KÔik oleks hÀsti, aga me tahaksime mÀÀrata niiskuse piiritaseme muutuvatest takistidest. Pole midagi lihtsamat!

Lihtsalt asendame konstantse sĂ”lme ADC sĂ”lmega. Just ADC-ule me ĂŒhendasime muutuva takistiga pingelĂ”hiku.
Pinged ADC sisendis muutub vahemikus 0 kuni 1 Volt. Aga niiskus anduri vĂ€ljundis â muutub vahemikus 0 kuni 100%. Kuidas me neid vĂ”rreldame? KĂ”ik on lihtne. ADC sĂ”lm ShIoTiny ei mÔÔda lihtsalt pinget sisendis, vaid oskab seda skaaluda ja nihutada..
See tÀhendab, et ADC1 (ADC) vÀljunds on vÀÀrtus X, arvutatud valemi jÀrgi

, kus
â pinget ADC sisendis (vahemikus 0 kuni 1 V); k â vahemik (ADC vahemik) ja b- nihke (ADC nihke). Nii et kui seada k=100 ja b=0, siis pingete muutumisel
vahemikus 0 kuni 1, vÀÀrtus X ADC sÔlme vÀljundis muutub vahemikus 0 kuni 100. See tÀhendab, et numbriliselt on see vÔrdne niiskuse muutumise vahemikuga 0 kuni 100%.
VĂ”i lihtsamalt, pöörates muutuva vastupanu mootori, saab seada niiskuse lĂ€vendi vahemikus 0 kuni 100. Ainus ebamugavus on see, et puuduvad kuvamise seadmed. Kuid praktikas, kui teha muutuva takistuse mootori 6 jagu 0%, 20%, 40%, 60%, 80%, 100%) â siis on seda piisavalt, et seada niiskuse lĂ€vend.
Kuidas me saame seada koefitsiendid? k â vahemik (ADC vahemik) ja b- nihkejĂ”ud (ADC offset)? Jah, see on lihtne nagu lebamine! KlĂ”psake hiirekursoriga sĂ”lmele ADC1 ja kohe avaneb seadistamise aken. Sellega saate mÀÀrata kĂ”ik, mida vajate. Meie juhtumi jaoks on see aken nagu pildil.

Nii et meil on lihtne töötav lahendus. Alustame selle tÀiustamist.
Muide, sellel lihtsaimal lahendusel on ĂŒks eelis â see ei vaja internetti. See on tĂ€iesti iseseisev.
Teine variant on nuppu ĂŒhendada.
KĂ”ik töötab ja kĂ”ik on Ă”nnelikud. Aga on probleem, et me ei saa sundida ventilatsiooni sisse lĂŒlitada. Oleme juba kokkuleppinud, et sisendisse Sisend1 kasutatakse nuppu, mis lĂŒlitab ventilaatori sundsisse ja -vĂ€lja, ilma niiskuseandurile tĂ€helepanu pööramata.
On aeg töötlema hakata seda nuppu meie skeemis-programmis.

Nupu vajutamise töötlusblokk on esile tĂ”stetud oranĆŸi joonaga. See on nuppude vajutuste loenduri, mis nullitakse, kui selle vĂ€ljund ĂŒletab ĂŒhe (roheline joon, sĂ”lme vĂ€ljund) CT).
Siin töötab kĂ”ik sama arusaadavalt nagu varem: loendur CT loendab nuppude vajutusi, mis on ĂŒhendatud sisendiga. Sisend1. See, the value of this counter increases by 1 with each button press.
As soon as this value reaches two (that is, more than 1), the comparator's output A>B will show 1. And this 1 will reset the counter CT to zero. This refers to the comparator, the lower one in the scheme!
Thus, our button has two states â 0 and 1. If we needed more states (3, 4, or even more) â we would simply change the constant CONST from one to another value.
So, we have two conditions for turning on the fan: exceeding the specified humidity level and a single button press. When either condition is met, the fan will turn on and will run until the button is pressed again JA or the humidity level returns to normal.
Of course, we could complicate the algorithm even further, but we won't do that â let's leave room for creativity for those interested.
Option three, we connect to the internet
KĂ”ik, mida me kirjeldasime, on igati toimiv. Aga kuidas on lood mainega? Iga akne tĂ€is hipster-hĂ€kker-naerja naerab seda, kes keerab nuppu ja vajutab nuppu, mitte ei kasuta nutitelefoni! Nupu keeramine on âmitte moesâ. Aga sĂ”rme hÔÔrumine nutitelefonil, veretuks seda sĂ”rme hÔÔrudes â vaat', see on hipster-hĂ€kker-naerja unistuste tipp (ma ei ole kunagi suutnud neid eristada â kui eksisin, palun andke andeks).
Aga olgem nende isikute suhtes leebed. Interneti kaudu juhtimisel on ka tĂ”elisi eeliseid. Esiteks, see on visuaalne. On hulk rakendusi, mis on saadaval kĂ”igile platvormidele, mis vĂ”imaldavad paaril puudutusel luua tĂ€iesti kasutatava juhtpaneeli meie kontroller-karlasun jaoks. Teiseks on see vĂ”imalus kaugelt jĂ€lgida ruumi Ă”huniiskuse seisundit. Ja kolmandaks, mitte ainult seda, mida ventilaator teeb â kas see pöörleb vĂ”i mitte, vaid ka seda, milline niiskuse lĂ€vend on seatud. Ja kas ventilaator lĂŒlitus sisse automaatselt vĂ”i kĂ€sitsi. ĂhesĂ”naga, kĂ”ik, mida soovite.
Loomulikult on mĂ”ne ventilaatori jaoks palju head tahet â nii palju tĂ€helepanu. Aga see on vaid nĂ€ide.
Nii et, internetiĂŒhenduse loomiseks kasutame tehnoloogiat MQTT ja sama nime kandvat protokolli.
Kasutamiseks vajame MQTT-vahendajat. See on eriline server, mis teenindab MQTT-kliente, nÀiteks ShIoTIny ja teie nutitelefoni.
Selle tehnoloogia olemus MQTT on see, et iga klient avaldab MQTT-vahendajale (serverile) mis tahes andmeid kindla nimega (mida nimetatakse teema terminoloogias MQTT). Teised kliendid saavad tellida mis tahes andmeid nende nime kaudu (teema) ja saada uuesti avaldatud andmeid. See tÀhendab, et kogu andmevahetus toimub kliendi-vahendaja-kliendi pÔhimÔttel.
Mina Ărge muretsege detailide ĂŒle. Internetis on palju artikleid ja Ă”petusi selle kohta, kuidas see toimib MQTT ja milliseid programme on juhtpaneelide loomiseks. NĂ€itan lihtsalt, kuidas andmeid vastuvĂ”tta ja avaldada kasutades ShIoTiny.
Brokernina kasutasin , kuid pÔhimÔte on igal pool sama.
Nii et oletame, et olete registreerunud MQTT-vahendajal. Ăldiselt annab vahendaja teile (vĂ”i nĂ”uab vĂ€lja mĂ”tlema) kasutajanime ja parooli (autentimiseks), samuti pordi ĂŒhendamiseks. Ăhendage ShIoTiny kellele MQTT brokeri saab teha kahel viisil â tavaline ĂŒhendus ja TLS (SSL).
KĂ”ik need parameetrid ShIoTiny sisestatakse vahekaardile VĂ”rgustik, jaotises MQTT serveriga ĂŒhendus.

Kui teie MQTT-vahendajat ei nĂ”ua autentimist â siis jĂ€tke kasutajanimi ja parool tĂŒhjaks (jĂ€tke need vĂ€ljad tĂŒhjaks).
Parameeter MQTT teema eesliide vajab eraldi selgitust.
MQTT parameetrite eesliide on string, mis lisatakse teema nimele (teema) MQTT brokeris publikatsiooni ja tellimise ajal. Eesliite seadmiseks MQTT eesliide oma kontrolleri jaoks tuleb lihtsalt sisestada vÀljale "MQTT teema eesliide» («MQTT teema eesliide". Eesliide algab alati kaldkriipsuga («/»)! Kui te ei sisesta kaldkriipsu, lisatakse see automaatselt. Eesliides ei tohi kasutada mÀrke «#» ja «+». Teisi piiranguid ei ole.
NĂ€iteks, kui avaldate parameetri "status" (vĂ”i tellite selle), ja teie eesliide on mÀÀratud "/shiotiny/", siis avaldatakse see parameeter brokeris nime all "/shiotiny/status". Kui teil on mÀÀratud tĂŒhi eesliide, algavad kĂ”ik parameetrid brokeris kaldkriipsuga («/»): «status" avaldatakse kui "/status».
Seega, eeldame, et olete registreerunud MQTT-vahendajal ja saanud kasutajanime, parooli ja portaali. SeejĂ€rel olete need parameetrid mÀÀranud vahekaardile VĂ”rgustik, jaotises MQTT serveriga ĂŒhendus kontrolleri ShIoTiny.
Eeldame, et eesliide on seatud vÀÀrtusele "/room/».
Alustame sellega, et avaldame kĂ”igi vĂ”tmeparameetrite oleku: relee Relee1, kĂ€sitsi sisselĂŒlitamise oleku, automaatse sisselĂŒlitamise oleku ja lĂ”puks, niiskustaseme lĂ€ve ja praegused tasemed. Ja boonusena â toa temperatuur. Kuidas seda teha, vaadake jooniselt.

Kuidas nÀeme, erinevus eelmisest variandist on ainult sÔlmed «MQTT Publish». Arvestades prefiksi, avaldatakse jÀrgmised parameetrid:

Kuidas nĂ€eme, kogu sĂŒsteemi olek on meil nagu peopesal!
Aga me tahame mitte ainult nÀha, vaid ka juhtida. Mida teha? VÀga lihtne. Me loobume niiskustaseme lÀve seadmisest lÀbi ADC ja muutuva takistiga ning seadistame selle niiskustaseme otse MQTT nutitelefonist!

Eemaldame ADC sĂ”lme skeemist ja lĂŒlitame sisse kolm uut sĂ”lme: FLASH store, FLASH restore ja MQTT describe.
SĂ”lme funktsioon MQTT describe on ilmselge: see saab parameetri /room/trigHset (niiskustaseme lĂ€ve) koos MQTT vahendajalt. Aga mida ta teeb andmetega edasi? Ta lihtsalt annab need ĂŒle sĂ”lmele FLASH store, mis omakorda salvestab need andmed energiat mittekaotavasse mĂ€llu nimega trigH. PĂ€rast seda loeb sĂ”lm FLASH restore energiata mĂ€lust andmed nimega trigH ja ja toimub, me teame juba.
Miks sellised keerukused? Miks ei saa lihtsalt saadud andmeid otse vÔrdlejale anda?
Nagu ĂŒtles kaaslane Ć . Holmes â see on elementaarne! Keegi ei garanteeri, et teie seade pĂ€rast sisselĂŒlitamist ĂŒhendub MQTT brokeri. Niiskust tuleb mÔÔta. Ja ventilaator tuleks sisse lĂŒlitada. Kuid ilma teabeta niiskustaseme piirvÀÀrtuse kohta on see vĂ”imatu! SeetĂ”ttu meie seade lĂŒlitamisel tĂ”mbab varem salvestatud niiskuse piirvÀÀrtuse vahetuks mĂ€lust ja kasutab seda otsusteks. Kui ĂŒhendus saab loodud MQTT-brokkeriga ja keegi jagab uut vÀÀrtust /room/trigHset, siis kasutatakse seda uut vÀÀrtust.
Edasi vÔite vÀlja mÔelda mida iganes. NÀiteks, lisada niiskuse kÔrval ka temperatuuri jÀlgimine. VÔi lisada 'nutikad' valgustuse juhtimise vÔimalused (meil on veel kaks releed ja kaks sisendit kasutamata). KÔik on teie kÀtes!
KokkuvÔte
Nii oleme vaadanud lÀbi mitmeid nÀiteid lihtsa kontrolleri rakendamisest ShIoTiny baasil. VÔib-olla on see kellelegi kasulik.
Kuna nagu alati, ettepanekud, soovid, kĂŒsimused, trĂŒkivead ja muu - kirjutage e-posti aadressile: shiotiny@yandex.ru
Allikas: habr.com
