ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Puntu nagusiak edo zeri buruz den artikulu hau

artikulu sorta jarraitzen dugu ShIoTiny - bisualki programagarria den txip bidezko kontrolatzailea ESP8266.

Artikulu honek bainugela edo hezetasun handiko beste gela bateko aireztapen-kontrol proiektu baten adibidea erabiltzen du programa bat nola eraikitzen den deskribatzeko. ShIoTiny.

Aurreko artikuluak seriean.

ShIoTiny: automatizazio txikia, gauzen Internet edo "sei hilabete oporrak baino lehen"
ShIoTiny: marrazketa programen nodoak, konexioak eta gertaerak edo ezaugarriak

Erreferentziak

Firmware bitarra, kontrolatzailearen eskema eta dokumentazioa
Unitateen argibideak eta deskribapena
MQTT brokerra cloudmqtt.com konfiguratzen
MQTT aginte-panela Android

Sarrera

Ez dago ulermenik esperientziarik gabe. Egia da hau denborak eta belaunaldiek frogatu dutena. Beraz, ez dago trebetasun praktikoak ikasteko ezer hoberik zerbait zeuk probatzea baino. Eta zer probatu daitekeen eta zer ez den erakusten duten adibideak bereziki lagungarriak dira hemen. Besteen akatsek ez zaituzte eragotziko zeureak egitea, baina haien kopurua murrizten lagun dezakete.

Aurreko artikuluen irakurleen galderek eta gutunek inspiratu ninduten aireztapen-kontrolerako adibide-proiektu txiki bat sortzera, ShIoTiny nodoek nola funtzionatzen duten erakusteko.

Kontrolatzailera eraman zuen jatorrizko ideia ShIoTiny Ponpaketa eta ureztatze estazio bat ez da denon gustukoa edo interesatuko. Horregatik erabili dut adibide gisa aireztapen kontrol sistema bat, erraz ulertzen dena eta erabilgarria dena.

Esango dut proiektuaren ideia ez dela nirea, baina Hemendik hartu dut. eta gero egokituta ShIoTiny.

Lehenik eta behin, ulertu zer nahi duzun.

Hobekuntza prozesua amaigabea da. Eta hain zuzen ere ezaugarri horrek hondatu ditu ideia eta proiektu on asko. Produktu funtzional bat, inperfektua izan arren, kaleratu beharrean, garatzaileak fintzen jarraitu zuen. Eta fintzen joan zen lehiakideek gainditu arte, irtenbide funtzional bat kaleratuz, inperfektua izan arren (eta askotan oso txarra izan arren).

Beraz, ezinbestekoa da jakitea non gelditu proiektu bati. Edo, beste era batera esanda, hasieran dugunetik abiatuta, proiektuaren amaieran zer lortu nahi dugun zehaztu behar dugu. Errusieraz, zerbait sortzeko bidea deskribatzeko bereziki idatzitako dokumentu batek hitz zoragarri, labur eta zehatz bat du: "plana", eta azkenaldian atzerapen mentala duten itzultzaileek eta kudeatzaile ezgaiek "errepide-orria" deitzen hasi dira. Tira, ahaztu haiei.

Gure plana honako hau izango da. Demagun hezetasunak noizean behin nabarmen igotzen den gela bat dugula, adibidez, bainugela edo sukaldea. Hezetasuna gauza desatsegina da, eta horren konponbidea denbora bezain zaharra da: gela aireztatzea. Aireztapen metodo asko daude. Baina ziurrenik haizagailuak bezalako metodo exotiko eta zaharkituak alde batera utziko ditugu eta haizagailu arrunt bat aukeratuko dugu. Haizagailuak merkeagoak eta errazago aurkitzen dira gure inguruan.

Laburbilduz, haizagailua kontrolatu nahi dugu: piztu eta itzali. Zehatzago esanda, behar denean automatikoki piztu eta itzaltzea nahi dugu.

Zehaztu behar da: zein baldintzatan piztu behar den haizagailua eta zein baldintzatan itzali behar den.

Dena argi dago hemen: hezetasuna muga jakin baten gainetik badago, haizagailua piztu eta airea ateratzen du; hezetasuna normaltasunera itzultzen denean, haizagailua itzali egiten da.

Irakurle arretatsu batek berehala harrapatuko du "emandako" hitza. Nork emanda? Nola emanda?

Hezetasun-atalasea ezartzeko hainbat modu daude. Bi aztertuko ditugu: lehenengoa erresistentzia aldakor bat erabiltzea da, eta bigarrena sarearen bidez MQTT protokoloaren bidez. Metodo horietako bakoitzak abantailak eta desabantailak ditu, geroago aztertuko direnak.

Ulertzen ez dutenentzat, azalduko dizuet "atalaseko hezetasuna" hezetasun maila bat dela, eta maila horretatik gora haizagailua piztu behar dela.

Hurrengo galdera: erabiltzaileari haizagailua zuzenean pizteko aukera eman behar al zaio? Hau da, hezetasun maila edozein dela ere, botoi bat sakatuta? Aukera hau emango dugu. Azken finean, haizagailua ez da soilik hezetasun handia dagoenean beharrezkoa izan daiteke, baita gelatik usain desatsegina kentzeko ere, adibidez, "kiratsa" bezala ezagutzen dena.

Beraz, zer nahi dugun eta nola funtzionatuko duen ere pixka bat jakin dugu. Zerrenda ditzagun laburki gure aireztapen kontrol sistemaren funtzio guztiak:

  • hezetasun-atalase maila ezartzea (bi aukera);
  • hezetasun mailaren neurketa;
  • haizagailuaren pizte automatikoa;
  • haizagailuaren itzaltze automatikoa;
  • Haizagailua eskuz aktibatzea (botoi bat sakatuz).

Beraz, plana argi dago. Aipatutako funtzio guztiak gure programan inplementatu behar ditugu. "Plan" honen arabera jardungo dugu. Lehenik eta behin, gailuaren bloke-diagrama marraztuko dugu.

Gailuaren egitura-diagrama

Oro har, bi eskema izango ditugu. Lehenengoa hezetasun-atalasea erresistentzia aldakor batek ezartzen duen aldaera da. Bigarrena, hezetasun-atalasea sarean MQTT protokoloaren bidez ezartzen duen aldaera da.

Baina zirkuitu hauek elementu bakar batean bakarrik desberdinduko direnez —hezetasun-atalasea ezartzeko erresistentzia aldakorra—, egitura-diagrama bakarra marraztuko dugu. Jakina, GOSTen araberako egitura-diagrama desberdina da. Baina belaunaldi gazteagoari zuzenduta gaude, ez ingeniari beteranoei. Beraz, argitasuna garrantzitsuagoa da.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Beraz, zer ikusten dugu irudian? Haizagailua erreleari konektatuta dago. Relay1 kontrolatzaile ShIoTinyKontuan izan haizagailua tentsio handiko osagaia dela. Beraz, zuk zeuk egiten ari bazara, kontuz ibili. Gutxienez, hatzak edo neurketa-tresnak zirkuituan sartu aurretik, itzali haizagailua. Eta bigarren ohar bat: zure haizagailua tentsio handikoa baino indartsuagoa bada... 250W, eta gero zuzenean konektatu ShIoTiny ez da beharrezkoa - abiarazlearen bidez bakarrik.

Haizagailua konpondu dugu. Orain haizagailuaren "eskuzko pizteko" botoia. Sarrerara konektatuta dago. Sarrera1Ez dago hemen azaltzeko ezer gehiago.

Tenperatura eta hezetasun sentsorea DHT-11 (Edo DHT-22 (edo baliokideak). Kontrolatzaileak sarrera berezi bat du haren konexiorako. ShIoTinyIrudian ikus dezakezuen bezala, sentsore hori konektatzeak ere ez du arazorik sortzen.

Eta azkenik, hezetasun-atalasea ezartzen duen erresistentzia aldakor bat. Zehatzago esanda, erresistentzia aldakor eta konstante batez osatutako zatitzaile bat. Ez dago arazorik konektatzeko, baina argi utzi behar dut barneko ADC-a ESP8266 Gehienez 1 volt-erako diseinatuta dago. Horregatik behar da gutxi gorabehera 5 aldiz tentsio-zatitzaile bat.

Gogorarazi nahi dizuet berriro ere zatitzaile hau ez dela beharrezkoa hezetasun-atalase maila sarean MQTT protokoloa erabiliz ezartzen bada.

Has gaitezen gailuaren funtzionamendu-algoritmoa sortzen ElDraw ShIoTiny editorean. Editore honetara nola sartu aurreko artikuluetan edo artikulu honen hasieran estekatutako argibideetan irakur dezakezu.

Lehenengo aukera, errazena

Has gaitezen gauza sinple batekin: errelea piztea Relay1 denbora-tarte jakin batean hezetasun-maila atalasea gainditzen denean.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ikus dezakegunez, ez dago ezer konplikaturik: lau nodo bakarrik, iruzkinen nodoak kontuan hartu gabe. DHT11 - hau tenperatura eta hezetasun sentsore bat da, hain zuzen ere (honekin ordezkatu daiteke) DHT22).

Konstantea KONST — hezetasun-maila maximoa, ehunekotan.

Konparatzailea bi zenbaki alderatzen dituen nodo bat da, eta baldintza betetzen bada 1 ematen du, eta baldintza betetzen ez bada 0.

Gure kasuan, egoera hori izango da A>BNon A — sentsoreak neurtutako hezetasun maila, eta B — hezetasun beraren atalase-maila.

Hezetasun maila neurtu ondoren (A) hezetasun-maila maximoa gaindituko du (B), konparagailuaren irteeran bertan A>B 1 agertuko da eta errelea piztuko da. Eta alderantziz, hezetasun maila normaltasunera itzultzen denean (hau da, A<=B), konparagailuaren irteeran bertan A>B 0 agertuko da eta errelea itzali egingo da.

Dena argi al dago? Ez bazaude, irakurri berriro edo begiratu osagaien funtzionamenduaren deskribapena argibideetan.

Sentsorearen datuak aipatu nahi ditut DHT11 10 segundoro gutxi gorabehera eguneratzen dira. Beraz, errelea ezingo da 10 segundoro baino maizago piztu eta itzali.

Dena ondo egongo litzateke, baina hezetasun-atalasea erresistentzia aldakor bat erabiliz ezarri nahi genuke. Ezer ez da sinpleagoa izan!

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ordeztu dezagun nodo konstantea ADC nodo batekin. Azken finean, ADCra konektatu dugu tentsio zatitzailea erresistentzia aldakorrarekin.

ADC sarrerako tentsioa 0 eta 1 volt artekoa da. Baina sentsorearen irteerako hezetasuna % 0tik % 100era bitartekoa da. Nola alderatu ditzakegu? Erraza da. ADC unitatea... ShIoTiny sarrerako tentsioa ez ezik, eskala eta desplazamendua.

Hau da, ADC1 nodoaren (ADC) irteera balioa izango da X, formula erabiliz kalkulatua

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Non ShIoTiny: gela heze baten aireztapena (proiektu adibidea) — ADC sarrerako tentsioa (0tik 1V-ra); k - irismena (ADC irismena) eta b- desplazamendua (ADC desplazamendua). Beraz, ezartzen baduzu k = 100 и b=0, orduan aldatzean ShIoTiny: gela heze baten aireztapena (proiektu adibidea) 0tik 1era bitarteko balioa, X ADC nodoaren irteeran 0tik 100era bitarteko tartean aldatuko da. Hau da, zenbakiz % 0tik % 100era bitarteko hezetasun-aldaketaren tartearen berdina da.

Edo, laburbilduz, erresistentzia aldakorraren graduatzailea biratuz, hezetasun-atalase maila 0tik 100era ezar dezakezu. Desabantaila bakarra bistaratze-gailurik ez dagoela da. Baina praktikan, erresistentzia aldakorraren graduatzailea sei zatitan ezarrita badago (% 0, % 20, % 40, % 60, % 80, % 100), nahikoa da hezetasun-atalase maila ezartzeko.

Nola ezartzen ditugu probabilitateak? k - irismena (ADC irismena) eta b-ADC desplazamendua? Oso erraza da! Seinalatu sagua nodoari. ADC1 Berehala agertuko da ezarpenen leiho bat. Hemen behar duzun guztia konfigura dezakezu. Gure kasuan, irudian agertzen denaren antzekoa izango da.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Beraz, badugu funtzionatzeko moduko irtenbide sinple bat. Has gaitezen hobetzen.
Bide batez, irtenbide sinpleen honek abantaila bat du: ez du interneterako sarbiderik behar. Guztiz autonomoa da.

Bigarren aukera, konektatu botoia

Dena funtzionatzen du eta denak pozik daude. Baina arazoa hauxe da: ezin dugu aireztapena piztu. Sarreran adostu dugu hori. Sarrera1 Hezetasun sentsorea alde batera utzita, haizagailua indarrez piztu eta itzaliko duen botoi bat izango dugu konektatuta.
Gure zirkuitu programan botoi hau prozesatzeko garaia da.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Botoi-sakatzearen prozesatzeko blokea laranja koloreko lerro batekin nabarmenduta dago. Botoi-sakatzearen kontagailu bat adierazten du, eta zerora berrezartzen da bere irteerako balioa bat baino handiagoa denean (lerro berdea, nodoaren irteera). CT).

Dena hemen lehen bezain sinple funtzionatzen du: kontagailua CT sarrerara konektatutako botoi baten klik kopurua zenbatzen du Sarrera1Hau da, kontagailu honen irteerako balioa 1 handitzen da botoia sakatuta bakoitzean.

Balio hau biren berdina bihurtzen denean (hau da, 1 baino handiagoa), konparagailuaren irteeran berehala A>B 1 agertuko da. Eta 1 honek kontagailua berrezarriko du. CT zerora. Honek konparatzaileari egiten dio erreferentzia, diagraman behekoari!

Beraz, gure botoiak bi egoera ditu - 0 eta 1. Egoera gehiago behar baditugu (3 edo 4 edo gehiago), konstantea aldatu besterik ez genuke egin beharko. KONST balio batetik bestera.

Beraz, bi baldintza ditugu haizagailua pizteko: ezarritako hezetasun maila gainditzea eta botoia behin sakatzea. Baldintza horietako bat betetzen bada, haizagailua piztuko da eta martxan jarraituko du botoia berriro sakatu arte. И hezetasun maila ez da normaltasunera itzuliko.

Noski, algoritmoa are gehiago konplikatzea posible da, baina ez dugu hori egingo; sormenerako tartea utziko diegu nahi dutenei.

Hirugarren aukera: Internetera konektatu

Deskribatu dugun guztia guztiz funtzionala da. Baina zer gertatzen da harroputzarekin? Azken finean, edozein hipster hacker garautsuk barre egingo lioke telefono bat erabili beharrean botoi bat biratu eta botoia sakatu duen edonori! Botila bat biratu "modaz kanpo" dago. Baina telefono baten gainetik hatza pasatzea, gordin igurztea... horixe da hipster hacker baten desioen gailurra (inoiz ez naiz gai izan denak bereizteko, beraz, oker banago, barkatu).

Baina izan gaitezen adeitsuak aipatutakoekin. Interneteko kontrolak baditu bere benetako abantailak. Lehenik eta behin, argi dago. Plataforma guztietarako aplikazio ugari daude, gure Carlson estiloko kontrolagailurako kontrol-panel guztiz erabilgarri bat sortzeko aukera ematen dutenak klik gutxi batzuekin. Bigarrenik, gelako hezetasun-maila urrunetik kontrolatzeko aukera ematen du. Eta hirugarrenik, ez duzu ikus dezakezu bakarrik haizagailua zer egiten ari den —biratzen ari den ala ez—, baita zein hezetasun-atalasean dagoen ere. Eta orduan ere, haizagailua automatikoki edo eskuz pizten ari den. Funtsean, nahi duzuna.

Noski, zale batzuentzat, arreta hori ohore handia da. Baina hau adibide bat besterik ez da.

Beraz, Internetera konektatzeko teknologia erabiliko dugu MQTT eta izen bereko protokoloa.
Teknologia hau aprobetxatzeko behar dugu MQTT bitartekariaZerbitzari berezi bat da hau, zerbitzatzen duena MQTT bezeroakAdibidez, ShioTIny eta zure telefonoa.

Teknologiaren funtsa. MQTT bezeroetako edozeinek MQTT broker-ean (zerbitzarian) datu arbitrarioak argitaratzen dituela da, izen jakin baten pean (deiturikoa) Gaia terminologian MQTT). Beste bezeroek nahi adina datu harpidetu ditzakete beren izenaren bidez (Gaia) eta argitaratu berri diren datuak jaso. Horrek esan nahi du datu-trukea guztia bezero-bitartekari-bezero oinarrian gertatzen dela.

Я Ez dut egingo Xehetasunetan arreta jarri. Interneten artikulu eta tutorial ugari daude nola funtzionatzen duen azaltzen dutenak. MQTT eta zer programa daude kontrol panelak sortzeko? Erakutsiko dizuet nola jasotzen eta argitaratzen ditugun datuak erabiliz ShIoTiny.

bitartekari gisa erabili nuen www.cloudmqtt.com, baina printzipioa berdina da leku guztietan.

Beraz, demagun izena eman duzula MQTT bitartekariaOro har, bitartekariak erabiltzaile-izen eta pasahitz bat (baimenerako) emango dizu (edo sortzea eskatuko dizu), baita konexiorako portu bat ere. Konektatu ShIoTiny к MQTT bitartekaria Bi modu daude horretarako: ohiko konexioa eta TLS (SSL).

Parametro horiek guztiak daude ShIoTiny fitxan sartzen dira. Sare, kapitulua MQTT zerbitzarirako konexioa.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Zure bada MQTT bitartekaria ez du baimenik behar - ez sartu zure erabiltzaile-izena eta pasahitza (utzi eremu hauek hutsik).

Parametroa MQTT gaiaren aurrizkia azalpen bereizia behar du.

MQTT parametroen aurrizkia gaiaren izenari erantsitako kate bat da (Gaia) MQTT broker bat argitaratzean eta harpidetzean. Instalatzeko MQTT aurrizkia zure kontrolatzailearentzat, sarrera eremuan sartu besterik ez duzu egin behar "MQTT gaiaren aurrizkia"("MQTT gaiaren aurrizkia"). Aurrizkia beti barra batekin hasten da ("/")! Sarrera-eremuan barrarik sartzen ez baduzu, automatikoki gehituko da. Ezin dituzu sinboloak erabili aurrizkian. "#" и "+"Ez dago beste mugarik.

Adibidez, " parametroa" argitaratzen baduzuegoera" (edo harpidetu), eta zure aurrizkia " da/shiotiny/", orduan parametro hau broker-ean " izenarekin argitaratuko da/shiotiny/egoera" Aurrizki huts bat baduzu, bitartekariaren parametro guztiak barra batekin hasiko dira ("/"): "egoera" honela argitaratuko da "/egoera'.

Beraz, izena eman duzula suposatzen dugu MQTT bitartekaria eta saioa hasteko, pasahitza eta ataka jaso dituzu. Ondoren, parametro hauek sartu dituzu fitxan Sare, kapitulua MQTT zerbitzarirako konexioa kontrolatzaile ShIoTiny.

Aurrizkia " baliora ezarrita dagoela suposatzen dugu/gela/'.

Has gaitezen parametro gako guztien egoera argitaratuz: erreleboa Erreala1, eskuzko pizte/itzaltze egoera, automatiko pizte/itzaltze egoera, eta, azkenik, atalasea eta uneko hezetasun mailak. Eta, gainera, giroko tenperatura. Ikusi diagrama argibideak ikusteko.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ikus dezakegunez, aurreko bertsioarekiko aldea nodoetan baino ez datza.MQTT Argitaratze"Aurrizkia kontuan hartuta, parametro hauek argitaratzen dira:
ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ikus dezakegunez, sistemaren egoera osoa gure esku dago!

Baina ez dugu ikusi bakarrik nahi, baita kontrolatu ere. Zer egin? Oso erraza da. Hezetasun-atalasea ezartzeari utziko diogu erabiliz ADC eta erresistentzia aldakor bat eta atalase-hezetasun maila hori ezarriko dugu honen arabera MQTT zuzenean zure telefonotik!

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

ADC nodoa zirkuitutik kentzen dugu eta hiru nodo berri sartzen ditugu bertan: Flash denda, Flash leheneratzea и MQTT deskribapena.

Nodo funtzioa MQTT deskribapena agerikoa da: parametro bat jasotzen du /gela/trigHmultzoa (hezetasun-atalasea) honekin MQTT bitartekariaBaina zer egiten du datuekin ondoren? Nodoari ematen dizkio, besterik gabe. Flash denda, eta horrek, aldi berean, datu horiek memoria ez-hegazkorrean gordetzen ditu izen honekin trigHHonen ondoren, nodoa Flash leheneratzea izenapean memoria ez-hegazkorretik datuak irakurtzen ditu trigH eta badakigu jada zer gertatuko den ondoren.

Zergatik konplexutasun hau guztia? Zergatik ezin dira jasotako datuak zuzenean konparadorearen sarrerara bidali?

S. Holmes kamaradak esaten zuen bezala, oinarrizkoa da.! Inork ez du bermatzen gailua piztu ondoren, bat egingo duenik MQTT bitartekariaEta hezetasuna neurtu behar da. Eta haizagailua piztu behar da. Baina hezetasun-atalaseari buruzko informaziorik gabe, hori ezinezkoa da! Beraz, gure gailua piztuta dagoenean, aurretik gordetako hezetasun-atalasea berreskuratzen du memoria ez-hegazkorretik eta erabakiak hartzeko erabiltzen du. Eta konexioa ezarri ondoren... MQTT bitartekaria eta norbaitek balio berri bat argitaratuko du /gela/trigHmultzoa, orduan balio berri hau erabiliko da.

Hemendik aurrera, nahi duzuna asma dezakezu. Adibidez, hezetasunaz gain, tenperaturaren monitorizazioa ere gehi dezakezu. Edo argiztapen-kontrol adimenduna gehi dezakezu (oraindik bi errele eta bi sarrera ditugu erabili gabe). Dena zure esku dago!

Ondorioa

Beraz, ShIoTiny-n oinarritutako kontrolatzaile sinple bat inplementatzeko hainbat adibide aztertu ditugu. Agian norbaiti baliagarria izango zaio.

Beti bezala, bidali iradokizunak, eskaerak, galderak, akatsak eta abar helbide honetara: shiotiny@yandex.ru

Iturria: www.habr.com

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster