ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Haadpunten of wêr't dit artikel oer giet

Wy fierder de rige fan artikels oer ShioTiny - visueel programmeerbere chip-basearre controller ESP8266.

Dit artikel beskriuwt, mei it foarbyld fan in fentilaasjekontrôleprojekt yn in badkeamer of oare keamer mei hege fochtigens, hoe't in programma boud is foar ShioTiny.

Foarige artikels yn 'e rige.

ShIoTiny: lytse automatisearring, ynternet fan dingen as "seis moannen foar fakânsje"
ShIoTiny: knopen, ferbiningen en eveneminten as funksjes fan tekenprogramma's

referinsjes

Binêre firmware, controller circuit en dokumintaasje
Ynstruksjes en beskriuwing fan komponinten
It ynstellen fan MQTT-broker cloudmqtt.com
MQTT dashboard foar Android

Ynlieding

D'r is gjin begryp sûnder ûnderfining. Dit is in wierheid test troch tiid en generaasjes. Dêrom is d'r neat better foar it learen fan praktyske feardigens dan besykje sels wat te dwaan. En foarbylden dy't sjen litte wat jo kinne en wat jo net iens besykje moatte, komme hjir goed fan pas. De flaters fan oaren kinne fansels it foarkommen fan jo eigen flaters net foarkomme, mar se kinne helpe om it oantal fan de lêste te ferminderjen.

Fragen en brieven fan lêzers fan eardere artikels fregen my om in lyts projekt te meitsjen - in foarbyld fan fentilaasjekontrôle om sjen te litten hoe't ShIoTiny knopen wurkje.

It orizjinele idee wêrfan de controller berne is ShioTiny - pomp- en yrrigaasjestasjon - net geskikt foar elkenien en sil net foar elkenien fan belang wêze. Dêrom naam ik in fentilaasjekontrôlesysteem dat foar in protte begryplik en nuttich is as foarbyld.

Ik sil sizze dat it idee fan it projekt net fan my is, mar Ik haw it hjirwei en dan oanpast oan ShioTiny.

Begryp earst wat jo wolle

It proses fan ferbettering is einleaze. En it is dit pân dat in protte goede ideeën en projekten ferneatige hat. De ûntwikkelder, ynstee fan iets frij te litten dat net perfekt wie, mar noch wurke, bleau it ferbetterje. En hy ferbettere it oant konkurrinten it omseagen, in wurkjende oplossing frijlitten, hoewol net ideaal (en faaks gewoan min), mar wurke.

Dêrom is it tige wichtich om te witten wêr't in ein oan it projekt te meitsjen. Of, mei oare wurden, wy moatte bepale wat wy wolle krije oan 'e ein fan it projekt út wat wy hawwe oan it begjin. Yn it Russysk, foar in dokumint dat krekt is gearstald mei it doel fan it beskriuwen fan it paad nei it meitsjen fan wat, is d'r in prachtich koart en koart wurd "plan", dat ferstanlik retardearre oersetters en defekte managers koartlyn om ien of oare reden begon te neamen "road" kaart". No, God segenje harren.

Us plan sil sa wêze. Litte wy oannimme dat d'r in keamer is wêryn't de fochtigens soms signifikant tanimme kin. Bygelyks, lykas in badkeamer of keuken. Feuchte is in onaangenaam ding en de manier om it te bestriden is sa âld as de wrâld: ventilearje de keamer. D'r binne nochal wat manieren om te ventilearjen. Mar wy, miskien, sille ferlitte eksoatyske en âlderwetske metoaden lykas swarten mei fans en fêsthâlde oan in gewoane fan. Fans binne goedkeaper en makliker te finen yn ús gebiet.

Yn in wurd wolle wy de fan kontrolearje: ynskeakelje en, sadwaande, útsette. Mear krekter, wy wolle dat it yn- en útskeakele wurdt as it nedich is.

It bliuwt om te bepalen: ûnder hokker betingsten de fan moat draaie en ûnder hokker betingsten it moat útsette.

Alles is hjir dúdlik: as de fochtigens boppe in bepaalde oantsjutte limyt is, giet de fan en lûkt lucht út; De luchtvochtigheid is werom nei normaal - de fan giet út.

In oandachtige lêzer sil it wurd "jûn" fuortendaliks yn 'e gaten hâlde. Troch wa jûn? As oantsjutte?

Jo kinne de drompelfochtigens op ferskate manieren ynstelle. Wy sille twa fan har besjen: de earste - mei fariabele ferset en de twadde - oer it netwurk fia it MQTT-protokol. Elk fan dizze metoaden hat foar- en neidielen, dy't letter besprutsen wurde.

Foar dyjingen dy't it net begripe, sil ik útlizze dat "drompelfochtigens" in feiligensnivo is dêr't de fan moat wurde ynskeakele.

De folgjende fraach is: moat de brûker it rjocht krije om de fan direkt yn te skeakeljen? Dat is, nettsjinsteande it luchtvochtigheidsnivo, mei de druk op in knop? Wy sille soargje foar sa'n mooglikheid. Ommers, in fan kin nedich net allinnich as der in hege luchtvochtigheid, mar ek te ferwiderjen út 'e keamer, bygelyks, in onaangename geur, populêr neamd "stank."

Dat, wy begripe wat wy wolle en sels in bytsje hoe't it sil wurkje. Lit ús koart listje alle funksjes fan ús fentilaasje kontrôle systeem:

  • it ynstellen fan it drompelfochtigensnivo (twa opsjes);
  • mjitting fan vochtigheid;
  • automatyske fan ynskeakelje;
  • automatyske fan ôfsluting;
  • hânmjittich fan aktivearring (troch te drukken op in knop).

Dus, it plan is dúdlik. It is needsaaklik om alle boppesteande funksjes yn ús programma út te fieren. Wy sille hannelje op basis fan dit "plan". Lit ús earst in blokdiagram fan it apparaat tekenje.

Blokdiagram fan it apparaat

Yn 't algemien sille wy twa sokke regelingen hawwe. De earste is foar de opsje wêryn it drompelfochtigensnivo wurdt ynsteld troch in fariabele ferset. It twadde skema is foar de opsje wêryn it drompelfochtigensnivo wurdt ynsteld oer it netwurk fia it MQTT-protokol.

Mar om't dizze circuits mar ien elemint ferskille - de fariabele wjerstân "ynstelle fan it drompelfochtigensnivo", sille wy mar ien blokdiagram tekenje. Fansels sjocht it blokdiagram neffens GOST oars. Mar wy rjochtsje ús net op bizon-yngenieurs, mar op de jongere generaasje. Dêrom is sichtberens wichtiger.

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Dus, wat sjogge wy op 'e foto? De fan is ferbûn mei it relais Relais 1 kontrôler ShioTiny. Tink derom dat de fan in apparaat mei hege spanning is. Dêrom, as immen dit sels docht, wês foarsichtich. Dat is, op syn minst, foardat jo jo fingers of mjitynstruminten yn it circuit stekke, op syn minst de krêft nei de fan útsette. En de twadde notysje. As jo ​​fan is machtiger as 250W, ferbine it dan direkt mei ShioTiny net wurdich - allinich troch de starter.

Wy sorteare de fan. No de knop "manueel ynskeakelje" de fan. It is ferbûn mei de ynfier Ynfier1. D'r is hjir neat mear te ferklearjen.

Temperatuer en vochtigheid sensor DHT-11 (of DHT-22 of harren analogen). D'r is in spesjale ynfier op 'e controller foar syn ferbining. ShioTiny. Sa't jo sjen kinne yn 'e figuer, it ferbinen fan sa'n sensor is ek gjin probleem.

En as lêste, fariabele ferset, dy't it drompelnivo fan fochtigens ynstelt. Mear krekter, in divider besteande út fariabele en konstante wjerstannen. Der binne gjin problemen mei syn ferbining, mar lit my útlizze dat de ynboude ADC is ESP8266 ûntwurpen foar maksimaal 1 Volt. Dêrom is in spanningsdeler fan sawat 5 kear nedich.

En lit my jo nochris herinnerje dat dizze divider net nedich is as it drompelfochtigensnivo wurdt ynsteld oer it netwurk mei it MQTT-protokol.

Litte wy begjinne mei it meitsjen fan in algoritme foar it apparaat yn 'e ElDraw ShIoTiny-bewurker. Hoe't jo dêr komme kinne, nei dizze bewurker, kinne wurde lêzen yn eardere artikels as yn 'e ynstruksjes, de keppeling wêrnei't oan it begjin fan it artikel is.

Opsje ien, ienfâldichste

Litte wy begjinne mei wat ienfâldich: it estafette oansette Relais 1 as it drompelfochtigensnivo foar in spesifisearre tiid oerschreden wurdt.

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Sa't jo sjen kinne, neat yngewikkeld: mar fjouwer knopen, net telle kommentaar knopen. DHT11 - dit is de temperatuer- en vochtigheidssensor sels (kin ferfongen wurde troch DHT22).

Konstant CONST - drompel Feuchte nivo, yn prosint.

Komparator - in knooppunt dat fergeliket twa nûmers en útgongen 1 as in opjûne betingst wurdt foldien en 0 as de betingst is net foldien.

Yn ús gefal sil dizze betingst wêze A>Bwêr A is it vochtigheidsnivo mjitten troch de sensor, en B - it drompelnivo fan deselde fochtigens.

Sadree't it mjitten vochtigheidsnivo (A) sil it drompelfochtigensnivo oerskriuwe (B), krekt dêr by de útfier fan 'e komparator A>B 1 sil ferskine en it estafette sil oansette. Oarsom, sa gau as it fochtigensnivo weromkomt nei normaal (d.w.s. A<=B), krekt dêr by de útfier fan 'e komparator A>B 0 sil ferskine en it estafette sil útsette.

Alles dúdlik? Foar dyjingen dy't net hiel noflik binne, lês it nochris of sjoch de beskriuwing fan 'e wurking fan' e ienheden yn 'e ynstruksjes.

Tink derom dat de gegevens fan 'e sensor DHT11 bywurke likernôch ien kear elke 10 sekonden. Dêrom sil it estafette net faker as ien kear yn 'e 10 sekonden yn- en útskeakelje kinne.

Alles soe goed wêze, mar wy wolle it drompelfochtigensnivo ynstelle mei in fariabele wjerstân. Neat koe makliker!

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Litte wy gewoan it konstante knooppunt ferfange troch in ADC-knooppunt. Ommers, it wie oan 'e ADC dat wy ferbûn in spanning divider mei in fariabele wjerstân.

De spanning by de ADC-ynfier fariearret fan 0 oant 1 Volt. Mar de fochtigens by de sensorútfier fariearret fan 0 oant 100%. Hoe fergelykje wy se? It is ienfâldich. ADC node yn ShioTiny net allinnich mjit de ynfier spanning, mar ek wit hoe te skaal en ferskowing.

Dat is, de útfier fan 'e ADC1-knooppunt (ADC) sil de wearde hawwe X, berekkene troch de formule

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

wêr ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt) - spanning by de ADC-ynfier (fan 0 oant 1V); k - berik (ADC berik) en b-offset (ADC offset). Sa, as jo ynstelle k = 100 и b = 0, dan by it feroarjen ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt) yn it berik fan 0 oan 1, wearde X by de útfier fan de ADC knooppunt sil fariearje yn it berik fan 0 oan 100. Dat is, numerike lyk oan it berik fan feroarings yn luchtvochtigheid fan 0 oan 100%.

Of, gewoan, troch it draaien fan de fariabele wjerstânslider, kinne jo it drompelfochtigensnivo ynstelle fan 0 oant 100. It ienige ûngemak is dat d'r gjin display-apparaten binne. Mar yn 'e praktyk, as jo 6 divyzjes ​​​​fan in fariabele fersetmotor meitsje (0%, 20%, 40%, 60%, 80%, 100%) - dan is dit genôch om it drompelfochtigensnivo yn te stellen.

Hoe sette wy odds? k - berik (ADC berik) en b-offset (ADC offset)? Ja, makliker as stoomde raap! Rjochtsje jo mûsoanwizer op in knooppunt ADC1 en daliks sille jo in ynstellingsfinster sjen. Jo kinne der alles yn sette wat jo nedich hawwe. Foar ús gefal sil it in finster wêze lykas dat yn 'e figuer.

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Dat, wy hawwe de ienfâldichste wurkjende oplossing. Litte wy it begjinne te ferbetterjen.
Trouwens, de ienfâldichste oplossing hat ien foardiel - it hat gjin ynternet nedich. It is folslein autonoom.

Opsje twa, ferbine de knop

Alles wurket en elkenien is bliid. Mar pech, wy kinne de fentilaasje net mei geweld ynskeakelje. Dat ha we al ôfpraat by de yngong Ynfier1 wy sille hawwe in knop ferbûn dy't sil krêftich keare de fan oan en út, nettsjinsteande de vochtigheid sensor.
It is tiid om dizze knop te ferwurkjen yn ús programmadiagram.

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

It ferwurkingsblok fan 'e knop klik wurdt markearre mei in oranje line. It is in teller fan knopdrukken, dy't op nul weromset wurdt as de wearde by syn útfier grutter is dan ien (griene line, knooppuntútfier CT).

Alles wurket hjir sa ienfâldich as earder: de teller CT telt de parsen fan in knop ferbûn mei de ynfier Ynfier1. Dat is, de wearde by de útfier fan dizze teller nimt ta mei 1 mei elke druk op de knop.

Sadree't dizze wearde gelyk wurdt oan twa (dat is grutter dan 1), daliks by de útfier fan 'e komparator A>B 1 sil ferskine. En dizze 1 sil de teller weromsette CT oan nul. Dit betsjut de komparator, de ûnderste yn it diagram!

Sa, ús knop hat twa steaten - 0 en 1. As wy nedich hawwe mear steaten (3 of 4 of sels mear) - wy moatte allinne feroarje de konstante CONST fan de iene nei de oare wearde.

Dat, wy hawwe twa betingsten foar it ynskeakeljen fan 'e fan: in opjûne fochtigensnivo oerskriuwe en ien kear op de knop drukke. As ien fan 'e betingsten foldien wurdt, sil de fan oansette. En it sil wurkje oant de knop wer yndrukt wurdt И de luchtvochtigheid nivo sil net werom nei normaal.

Jo kinne, fansels, komplisearje it algoritme noch mear, mar wy sille net dwaan - wy litte romte foar kreativiteit oan dyjingen dy't wolle.

Opsje trije, ferbine mei it ynternet

Alles wat wy beskreaun binne frij wurkber. Hoe sit it mei de show-offs? Ommers, elke pimply hipster cracker hacker sil laitsje om ien dy't in knop draait en op in knop drukke ynstee fan kontrolearret it fan in smartphone! It draaien fan 'e handgreep is "net modieus." Mar krûpe mei jo finger op jo smartphone, wrijven jo finger bloedich - dit is it hichtepunt fan 'e winsken fan in hipster-hacker-cracker (ik koe se noait allegear ûnderskiede - dus as ik ferkeard wie, ferjou my).

Mar lit ús mild wêze foar dizze persoanen. D'r binne echte foardielen foar behear fia it ynternet. Earst is it sichtberens. D'r binne in protte applikaasjes foar alle platfoarms wêrmei jo in folslein brûkber kontrôlepaniel kinne meitsje foar ús Carlson-controller mei in pear tweaks. Twads, it is in kâns om op ôfstân te kontrolearjen de steat fan vochtigheid yn 'e keamer. En as tredde kinne jo net allinich sjen wat de fan docht - spinnen of net, mar ek hokker drompelfochtigensnivo is ynsteld. En dan draaide de fan automatysk of mei de hân. Yn it algemien, alles wat jo wolle.

Fansels is it in protte eare foar guon fans om safolle oandacht te krijen. Mar dit is mar in foarbyld.

Dus, om te ferbinen mei it ynternet sille wy technology brûke MQTT en it protokol mei deselde namme.
Om te profitearjen fan dizze technology, wy moatte MQTT broker. Dit is in spesjale tsjinner dy't tsjinnet MQTT kliïnten, bygelyks ShioTIny en jo smartphone.

It essinsje fan technology MQTT bestiet út it feit dat ien fan 'e kliïnten willekeurige gegevens publisearret oan' e MQTT-broker (tsjinner) ûnder in spesifike namme (neamd ûnderwerp yn terminology MQTT). Oare kliïnten kinne har abonnearje op willekeurige gegevens mei har namme (ûnderwerp) en ûntfange nij publisearre gegevens. Dat is, alle gegevensútwikseling folget it client-broker-client-prinsipe.

Я ik wol net fokus op details. D'r binne in protte artikels en tutorials op it ynternet oer hoe't it wurket. MQTT en hokker programma's binne der foar it meitsjen fan kontrôlepanielen. Ik sil jo gewoan sjen litte hoe't wy gegevens kinne ûntfange en publisearje mei ShioTiny.

As makelder brûkte ik www.cloudmqtt.com, mar it prinsipe is oeral itselde.

Dat, wy sille oannimme dat jo hawwe registrearre foar MQTT broker. Yn 't algemien sil de brokker jo (of fereaskje dat jo mei) in brûkersnamme en wachtwurd jaan (foar autorisaasje), en ek in poarte foar ferbining. Te pluggen ShioTiny к MQTT broker mooglik op twa manieren - reguliere ferbining en fia TLS (SSL).

Al dizze parameters yn ShioTiny ynfierd op de ljepper Networking, haadstik MQTT Ferbining mei tsjinner.

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

As dyn MQTT broker fereasket gjin autorisaasje - Fier jo oanmelding en wachtwurd net yn (lit dizze fjilden leech).

Parameter MQTT ûnderwerp foarheaksel freget om in aparte útlis.

It foarheaksel fan MQTT-parameters is in tekenrige taheakke oan de namme fan it ûnderwerp (ûnderwerp) by it publisearjen en abonnearje op in MQTT-broker. ynstallearje MQTT foarheaksel foar jo controller, jo moatte it gewoan ynfiere yn it ynfierfjild "MQTT Underwerp Prefix»(«MQTT ûnderwerp foarheaksel"). It foarheaksel begjint altyd mei in slash ("/")! As jo ​​gjin slash ynfiere yn it ynfierfjild, wurdt it automatysk tafoege. Jo kinne gjin symboalen brûke yn it foarheaksel "#" и "+". D'r binne gjin oare beheiningen.

As jo ​​bygelyks de parameter "status"(of abonnearje derop) en jo foarheaksel is ynsteld op"/shiotiny/", dan wurdt dizze parameter publisearre op 'e broker ûnder de namme "/shiotiny/status" As jo ​​​​in leech foarheaksel hawwe, dan begjinne alle parameters op 'e makelder mei in slash ("/"):"status"sil publisearre wurde as"/status".

Dat, wy leauwe dat jo hawwe registrearre foar MQTT broker en krige in oanmelding, wachtwurd en poarte. Dan jo ynfierd dizze parameters op de ljepper Networking, haadstik MQTT Ferbining mei tsjinner kontrôler ShioTiny.

Wy geane der fan út dat it foarheaksel is ynsteld op "/Keamer/".

Litte wy begjinne mei it publisearjen fan de status fan alle wichtige parameters: estafette Realay1, hânmjittich switching steaten, automatyske switching steaten en úteinlik drompel en hjoeddeistige vochtigheid nivo. No, in bonus is de temperatuer yn 'e keamer. Hoe dit te dwaan, sjoch de figuer.

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Sa't jo sjen kinne, is it ferskil fan 'e foarige ferzje allinich de knopen "MQTT Publisearje" Mei it rekkenjen fan it foarheaksel wurde de folgjende parameters publisearre:
ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Sa't jo sjen kinne, hawwe wy de heule steat fan it systeem yn 'e palm fan ús hannen!

Mar wy wolle net allinich sjen, mar ek kontrolearje. Wat moat ik dwaan? Hiel ienfâldich. Wy sille wegerje in set in drompel humidity nivo mei help fan ADC en in fariabele wjerstân en wy sille ynstelle dit tige drompel vochtigheid nivo neffens MQTT direkt fan jo smartphone!

ShIoTiny: fentilaasje fan in wiete keamer (foarbyldprojekt)

Wy ferwiderje it ADC-knooppunt fan it circuit en befetsje dêr trije nije knopen: FLASH winkel, FLASH weromsette и MQTT beskriuwe.

Node funksje MQTT beskriuwe fanselssprekkend: it krijt in parameter /room/trigHset (drompelvochtigheidsnivo) s MQTT broker. Mar wat docht it dan mei de gegevens? Jout se gewoan oan it knooppunt FLASH winkel, dy't op syn beurt dizze gegevens opslaan yn net-flechtich ûnthâld ûnder de namme trijH. Nei dit, it knooppunt FLASH weromsette lêst gegevens út net-flechtich ûnthâld ûnder de namme trijH en wy witte al wat der bart.

Wêrom sokke swierrichheden? Wêrom kinne de ûntfongen gegevens net fuortendaliks stjoerd wurde nei de ynput fan 'e komparator?

Lykas kameraad S. Holmes altyd sei - it is elemintêr! Nimmen garandearret dat nei it ynskeakeljen fan jo apparaat, it sil meidwaan MQTT broker. En de luchtvochtigheid moat mjitten wurde. En de fan moat ynskeakele wurde. Mar sûnder ynformaasje oer it drompelfochtigensnivo is dit ûnmooglik! Dêrom, as it ynskeakele is, hellet ús apparaat it earder opsleine drompelfochtigensnivo op út net-flechtich ûnthâld en brûkt it om besluten te nimmen. En doe't de ferbining wurdt oprjochte mei MQTT broker en immen sil pleatse in nije wearde /room/trigHset, dan sil dizze nije wearde brûkt wurde.

Dan kinne jo komme mei wat jo wolle. Bygelyks, neist fochtigens, ek ynfiere temperatuer boekhâlding. Of foegje "smart" ljochtkontrôle ta (wy hawwe noch twa relais en twa yngongen net brûkt). Alles yn jo hannen!

konklúzje

Dat wy seagen nei ferskate foarbylden fan 'e ymplemintaasje fan in yn wêzen ienfâldige controller basearre op ShIoTiny. Miskien sil dit nuttich wêze foar ien.

Lykas altyd, suggestjes, winsken, fragen, typfouten, ensfh. - fia e-post: [e-post beskerme]

Boarne: www.habr.com

Add a comment