ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Puntu nagusiak edo zeri buruz den artikulu hau

Honi buruzko artikulu sorta jarraitzen dugu ShIoTiny - Txip-oinarritutako kontrolagailu bisualki programagarria ESP8266.

Artikulu honek, bainugela edo hezetasun handiko beste gela bateko aireztapena kontrolatzeko proiektu baten adibidea erabiliz, programa bat nola eraikitzen den deskribatzen du. ShIoTiny.

Multzoko aurreko artikuluak.

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

Erreferentziak

Firmware bitarra, kontrolagailu-zirkuitua eta dokumentazioa
Osagaien argibideak eta deskribapena
MQTT broker cloudmqtt.com konfiguratzea
Android-erako MQTT panela

Sarrera

Ez dago ulertzerik esperientziarik gabe. Denborak eta belaunaldiek probatutako egia da. Hori dela eta, ez dago trebetasun praktikoak ikasteko ezer hoberik zerbait egiten saiatzea baino. Eta zer egin dezakezun eta probatu behar ez duzuna erakusten duten adibideak ondo etorriko zaizkizu hemen. Besteen akatsek, noski, ezin dute zure akatsak gertatzea eragotzi, baina azken horien kopurua murrizten lagun dezakete.

Aurreko artikuluen irakurleen galderek eta gutunek proiektu txiki bat egitera bultzatu ninduten, aireztapen kontrolaren adibide bat, ShIoTiny nodoek nola funtzionatzen duten erakusteko.

Kontroladorea sortu zen jatorrizko ideia ShIoTiny - ponpaketa eta ureztatze estazioa - ez da guztiontzat egokia eta ez da guztientzat interesgarria izango. Horregatik, askorentzat ulergarria eta erabilgarria den aireztapena kontrolatzeko sistema bat hartu nuen adibide gisa.

Proiektuaren ideia ez dela nirea esango dut, baina Hemendik lortu dut eta gero egokitu ShIoTiny.

Lehenik eta behin, ulertu zer nahi duzun

Hobekuntza prozesua amaigabea da. Eta jabetza hori da ideia eta proiektu on asko hondatu dituena. Garatzaileak, perfektua ez zen zerbait kaleratu beharrean, baina oraindik lanean, hobetzen jarraitu zuen. Eta hobetu egin zuen lehiakideek saihestu arte, laneko irtenbide bat kaleratuz, ideala ez izan arren (eta askotan zeharo eskasa), baina lanean.

Horregatik, oso garrantzitsua da proiektuari non amaitu jakitea. Edo, bestela esanda, proiektua amaitzean zer lortu nahi dugun zehaztu behar dugu hasieran daukagunetik. Errusieraz, zerbait sortzeko bidea deskribatzeko helburuarekin bildutako dokumentu baterako, "plan" hitz labur eta labur zoragarri bat dago, adimen atzeratuak eta kudeatzaile akastunak duela gutxi arrazoiren batengatik "errepidea" deitzen hasi direnak. mapa". Beno, Jainkoak bedeinka ditzala.

Gure plana honelakoa izango da. Demagun gela bat dagoela, zeinetan hezetasuna nabarmen igo daitekeen batzuetan. Adibidez, bainugela edo sukaldea adibidez. Hezetasuna gauza desatsegina da eta horri aurre egiteko modua mundua bezain zaharra da: gela aireztatu. Aireztapenerako modu dezente daude. Baina guk, agian, metodo exotiko eta zaharkituak alde batera utziko ditugu beltzak haizagailuekin bezalakoak eta ohiko haizagailu bati eutsiko diogu. Gure inguruan zaleak merkeagoak eta aurkitzea errazagoa da.

Hitz batean, haizagailua kontrolatu nahi dugu: piztu eta, horren arabera, itzali. Zehatzago esanda, behar denean piztu eta itzaltzea nahi dugu.

Zehaztea geratzen da: haizagailua zein baldintzetan piztu behar den eta zein baldintzatan itzali behar den.

Hemen dena agerikoa da: hezetasuna muga jakin batetik gora badago, haizagailua piztu eta airea ateratzen du; Hezetasuna normaltasunera itzuli da - haizagailua itzaltzen da.

Irakurle adi batek berehala harrapatuko du "emanda" hitza. Nork emana? Zehazten den moduan?

Atalasearen hezetasuna hainbat modutan ezar dezakezu. Horietako bi aztertuko ditugu: lehenengoa –erresistentzia aldakorra erabiliz eta bigarrena– sarean MQTT protokoloaren bidez. Metodo horietako bakoitzak abantailak eta desabantailak ditu, geroago aztertuko direnak.

Ulertzen ez dutenentzat, “atalaseako hezetasuna” haizagailua piztu behar den hezetasun maila bat dela azalduko diet.

Hurrengo galdera da: erabiltzaileari haizagailua zuzenean pizteko eskubidea eman behar zaio? Hau da, hezetasun maila edozein dela ere, botoi bat sakatzean? Aukera hori emango dugu. Azken finean, haizagailu bat beharrezkoa izan daiteke hezetasun handia dagoenean ez ezik, gelatik kentzeko ere, adibidez, usain desatsegin bat, "kiratsa" deitzen dena.

Beraz, ulertzen dugu zer nahi dugun eta nola funtzionatuko duen pixka bat ere. Zerrenda ditzagun laburki gure aireztapena kontrolatzeko sistemaren funtzio guztiak:

  • atalasearen hezetasun maila ezartzea (bi aukera);
  • hezetasun maila neurtzea;
  • haizagailu automatikoa piztea;
  • haizagailuaren itzaltze automatikoa;
  • haizagailu eskuz aktibatzea (botoi bat sakatuz).

Beraz, plana argi dago. Beharrezkoa da aurreko funtzio guztiak gure programan ezartzea. “Plan” horretatik abiatuta jardungo dugu. Lehenik eta behin, marraztu dezagun gailuaren bloke-diagrama.

Gailuaren bloke-diagrama

Oro har, halako bi eskema izango ditugu. Lehena, atalasearen hezetasun maila erresistentzia aldakor batek ezartzen duen aukerari dagokio. Bigarren eskema atalasearen hezetasun maila MQTT protokoloaren bidez sarean ezartzen den aukerarako da.

Baina zirkuitu hauek elementu bakarragatik desberdinduko direnez - erresistentzia aldakorra "atalasea hezetasun maila ezarriz", bloke-diagrama bakarra marraztuko dugu. Jakina, GOSTren arabera bloke-diagrama desberdina da. Baina ez gara bisonte ingeniariengan zentratzen, belaunaldi gazteengan baizik. Beraz, ikusgarritasuna garrantzitsuagoa da.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Orduan, zer ikusten dugu irudian? Haizagailua erreleari konektatuta dago Relay1 kontrolatzailea ShIoTiny. Kontuan izan haizagailua tentsio handiko gailu bat dela. Hori dela eta, norbaitek berak egiten badu, kontuz ibili. Hau da, gutxienez, hatzak edo neurtzeko tresnak zirkuituan sartu baino lehen, itzali gutxienez haizagailua. Eta bigarren oharra. Zure zalea baino indartsuagoa bada 250W, gero konektatu zuzenean ShIoTiny ez du merezi - hasierakoaren bidez bakarrik.

Haizagailua konpondu genuen. Orain botoia "eskuz piztu" haizagailua. Sarrerara konektatuta dago Sarrera 1. Hemen ez dago ezer gehiago azaltzeko.

Tenperatura eta hezetasun sentsorea DHT-11 (Edo DHT-22 edo haien analogoak). Kontrolagailuan sarrera berezi bat dago bere konexiorako. ShIoTiny. Irudian ikus dezakezun bezala, sentsore hori konektatzea ere ez da arazorik.

Eta azkenik, erresistentzia aldakorra, hezetasun atalase maila ezartzen duena. Zehatzago esanda, erresistentzia aldakor eta konstantez osatutako zatitzailea. Ez dago bere konexioarekin arazorik, baina azalduko dizut ADC integratua dagoela ESP8266 1 Volt gehienez diseinatuta. Horregatik, 5 aldiz inguruko tentsio-banatzailea behar da.

Eta gogorarazten dizut berriro ere zatitzaile hau ez dela beharrezkoa atalasearen hezetasun maila MQTT protokoloa erabiliz sarean ezartzen bada.

Has gaitezen gailurako algoritmo bat sortzen ElDraw ShIoTiny editorean. Nola iritsi, editore honetara, aurreko artikuluetan edo argibideetan irakur daiteke, eta esteka artikuluaren hasieran dago.

Aukera bat, sinpleena

Has gaitezen gauza sinple batekin: erreleboa piztea Relay1 atalasearen hezetasun-maila denbora zehatz batean gainditzen denean.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ikusten duzun bezala, ezer konplikatua: lau nodo bakarrik, iruzkin nodoak zenbatu gabe. DHT11 - hau tenperatura eta hezetasun sentsorea bera da (horrekin ordezkatu daiteke DHT22).

Konstantea KONST — atalasearen hezetasun maila, ehunekotan.

Konparatzailea - bi zenbaki konparatzen dituen nodoa eta 1 ematen du baldintza jakin bat betetzen bada eta 0 baldintza betetzen ez bada.

Gure kasuan, baldintza hau izango da A>BNon A sentsoreak neurtzen duen hezetasun maila da, eta B — hezetasun beraren atalase-maila.

Neurtutako hezetasun-maila bezain laster (A) atalasearen hezetasun maila gaindituko du (B), bertan konparagailuaren irteeran A>B 1 agertuko da eta errelea piztuko da. Aitzitik, hezetasun maila normaltasunera itzuli bezain laster (hau da. A<=B), bertan konparagailuaren irteeran A>B 0 agertuko da eta errelea itzaliko da.

Dena argi? Oso eroso ez daudenentzat, irakurri berriro edo begiratu argibideetan unitateen funtzionamenduaren deskribapena.

Kontuan izan sentsorearen datuak DHT11 gutxi gorabehera 10 segundotan behin eguneratzen da. Hori dela eta, errelea ezin izango da piztu eta itzali 10 segundoan behin baino gehiagotan.

Dena ondo legoke, baina atalasearen hezetasun maila erresistentzia aldakorra erabiliz ezarri nahiko genuke. Ezin da ezer errazagoa izan!

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ordez dezagun nodo konstantea ADC nodo batekin. Azken finean, ADCra konektatu genuen erresistentzia aldakor batekin tentsio-banatzailea.

ADC sarrerako tentsioa 0tik 1era bitartekoa da. Baina sentsorearen irteerako hezetasuna 0tik %100era aldatzen da. Nola konparatzen ditugu? Sinplea da. ADC nodoa sartu ShIoTiny sarrerako tentsioa neurtzeaz gain, nola egin ere badaki eskala eta aldaketa.

Hau da, ADC1 nodoaren (ADC) irteerak balioa izango du X, formularen bidez kalkulatuta

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Non ShIoTiny: gela heze baten aireztapena (proiektu adibidea) — ADC sarrerako tentsioa (0tik 1Vra); k - barrutia (ADC barrutia) eta b-offset (ADC offset). Horrela, ezarriz gero k = 100 и b=0, gero aldatzean ShIoTiny: gela heze baten aireztapena (proiektu adibidea) 0 eta 1 arteko tartean, balioa X ADC nodoaren irteeran 0tik 100era bitarteko tartean aldatuko da. Hau da, 0tik 100era arteko hezetasun-aldaketen tartearen berdina.

Edo, besterik gabe, erresistentzia aldakorreko graduatzailea biratuz, atalasearen hezetasun maila 0tik 100era ezar dezakezu. Eragozpen bakarra pantaila gailurik ez dagoela da. Baina praktikan, erresistentzia aldakorreko motor baten 6 zati egiten badituzu (%0,%20,%40,%60,%80,%100), orduan nahikoa da atalasearen hezetasun-maila ezartzeko.

Nola ezartzen ditugu probabilitateak? k - barrutia (ADC barrutia) eta b-offset (ADC offset)? Bai, arbi lurrunetan baino errazagoa! Seinalatu saguaren erakuslea nodo batera ADC1 eta berehala ezarpenen leiho bat ikusiko duzu. Behar duzun guztia jar dezakezu bertan. Gure kasuan, irudikoaren moduko leiho bat izango da.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Beraz, lan irtenbiderik errazena dugu. Has gaitezen hobetzen.
Bide batez, irtenbide errazenak abantaila bat du - ez du Internetik behar. Erabat autonomoa da.

Bigarren aukera, konektatu botoia

Dena funtzionatzen du eta denak pozik daude. Baina zorte txarra, ezin dugu aireztapena indarrez piztu. Sarreran jada adostu dugu hori Sarrera 1 haizagailua indarrez piztu eta itzaliko duen botoi bat izango dugu konektatuta, hezetasun sentsorea edozein dela ere.
Gure programaren diagraman botoi hau prozesatzeko garaia da.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Botoiaren klik prozesatzeko blokea marra laranja batekin nabarmentzen da. Botoien sakatzean kontagailua da, zerora berrezartzen dena bere irteerako balioak bat gainditzen duenean (lerro berdea, nodoaren irteera CT).

Hemen dena lehen bezala funtzionatzen du: kontagailua CT sarrerara konektatuta dagoen botoi baten sakatzeak zenbatzen ditu Sarrera 1. Hau da, kontagailu honen irteerako balioa 1 handitzen da botoia sakatzean.

Balio hori biren berdina bihurtu bezain laster (hau da, 1 baino handiagoa), konparagailuaren irteeran berehala. A>B 1 agertuko da. Eta 1 honek kontagailua berrezarriko du CT zerora. Horrek esan nahi du konparatzailea, diagramako behekoa!

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

Beraz, haizagailua pizteko bi baldintza ditugu: hezetasun maila jakin bat gainditzea eta botoia behin sakatzea. Baldintzaren bat betetzen bada, haizagailua piztuko da. Eta funtzionatuko du botoia berriro sakatu arte И hezetasun maila ez da normaltasunera itzuliko.

Algoritmoa are gehiago zaildu dezakezu, noski, baina ez dugu hau egingo - nahi dutenei sormenerako tartea utziko diegu.

Hiru aukera, Internetera konektatu

Deskribatu dugun guztia nahiko gauzagarria da. Eta erakustaldiekin? Azken finean, edozein pimply hipster cracker hackerri barre egingo dio botoi bat biratu eta botoi bat sakatzen duen norbaitek telefono batetik kontrolatu beharrean! Heldulekua bihurritzea "ez dago modan". Baina atzamarra zure telefonoan arakatzea, hatza odolez igurtziz - hau da hipster-hacker-cracker baten desioen gailurra (inoiz ezin izan nituen guztiak bereizten - beraz, oker banuen, barka iezadazu).

Baina izan gaitezen leunak pertsona horiekin. Benetako abantailak daude Internet bidez kudeatzea. Lehenik eta behin, ikusgarritasuna da. Plataforma guztietarako aplikazio asko daude gure Carlson kontrolagailurako guztiz erabilgarri den kontrol-panel bat doikuntza pare batekin sortzeko aukera ematen dutenak. Bigarrenik, gelan hezetasun egoera urrunetik kontrolatzeko aukera da. Eta hirugarrenik, haizagailua zer egiten ari den ikus dezakezu, biraka edo ez, baita zein atalasearen hezetasun-maila ezartzen den ere. Eta gero haizagailua automatikoki edo eskuz piztu zen. Oro har, nahi duzun guztia.

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

Beraz, Internetera konektatzeko teknologia erabiliko dugu MQTT eta izen bereko protokoloa.
Teknologia hau aprobetxatzeko, behar dugu MQTT artekaria. Hau zerbitzari berezi bat da MQTT bezeroakAdibidez, SHIOTINY eta zure telefonoa.

Teknologiaren funtsa MQTT bezeroetako edozeinek datu arbitrarioak argitaratzen dizkiola MQTT artekariari (zerbitzariari) izen zehatz batekin (deitutakoa). Gaia terminologian MQTT). Beste bezero batzuek datu arbitrarioetara harpidetu dezakete euren izena erabiliz (Gaia) eta argitaratu berri diren datuak jaso. Hau da, datu-truke guztiek bezero-artekari-bezero printzipioari jarraitzen diote.

Я Ez dut egingo xehetasunetan zentratu. Interneten artikulu eta tutorial asko daude funtzionamenduari buruz. MQTT eta zer programa dauden kontrol panelak sortzeko. Erakutsi besterik ez dizut nola jaso eta argitara ditzakegun datuak erabiliz ShIoTiny.

Broker gisa erabili nuen www.cloudmqtt.com, baina printzipioa berdina da nonahi.

Beraz, izena eman zarela suposatuko dugu MQTT artekaria. Oro har, artekariak erabiltzaile-izena eta pasahitza (baimenerako) emango dizkizu (edo etortzea eskatuko dizu), baita konexiorako ataka ere. Entxufatzeko ShIoTiny к MQTT artekaria bi modutan posible - ohiko konexioa eta bidez TLS (SSL).

Parametro hauek guztiak barne ShIoTiny fitxan sartuta Sare, kapitulua MQTT Zerbitzarirako konexioa.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Zure bada MQTT artekaria ez du baimenik behar - ez sartu zure saio-saioa eta pasahitza (utzi eremu hauek hutsik).

Parametroa MQTT gai-aurrizkia aparteko azalpena eskatzen du.

MQTT parametroen aurrizkia gaiaren izenari erantsitako kate bat da (Gaia) MQTT broker bat argitaratzean eta harpidetzean. instalatzeko MQTT aurrizkia zure kontrolagailurako, sarrera eremuan sartu besterik ez duzu behar "MQTT Gai-aurrizkia"("MQTT gai-aurrizkia"). Aurrizkia beti barra batekin hasten da ("/")! Sarrerako eremuan barra barrarik sartzen ez baduzu, automatikoki gehituko da. Ezin duzu ikurrik erabili aurrizkian "#" и "+". Ez dago beste murrizketarik.

Adibidez, parametroa argitaratzen baduzu "egoera" (edo harpidetu) eta zure aurrizkia ""/shiotiny/", orduan parametro hau brokeran argitaratuko da " izenarekin/shiotiny/egoera" Aurrizkia hutsik baduzu, brokerko parametro guztiak barra batekin hasiko dira ("/"): "egoera" gisa argitaratuko da "/egoera'.

Beraz, izena eman zarela uste dugu MQTT artekaria eta saio-hasiera, pasahitza eta ataka jaso ditu. Ondoren, parametro hauek fitxan sartu dituzu Sare, kapitulua MQTT Zerbitzarirako konexioa kontrolatzailea ShIoTiny.

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

Has gaitezen funtsezko parametro guztien egoera argitaratzen: erreleboa Erreala1, eskuz aldatzeko egoerak, automatikoki aldatzeko egoerak eta azkenik atalasea eta egungo hezetasun mailak. Beno, bonus bat gelako tenperatura da. Nola egin, ikusi irudia.

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ikus dezakezunez, aurreko bertsioaren aldea nodoak baino ez dira "MQTT Argitalpena" Aurrizkia kontuan hartuta, parametro hauek argitaratzen dira:
ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

Ikusten duzuenez, sistemaren egoera osoa esku ahurrean dugu!

Baina ikusi ez ezik kontrolatu ere nahi dugu. Zer egin beharko nuke? Oso sinplea. Hezetasun-maila atalasea ezartzeari uko egingo diogu ADC eta erresistentzia aldakorra eta atalase-maila hori bera ezarriko dugu MQTT zuzenean zure telefonotik!

ShIoTiny: gela heze baten aireztapena (proiektu adibidea)

ADC nodoa zirkuitutik kendu eta hiru nodo berri sartzen ditugu bertan: FLASH denda, FLASH leheneratu и MQTT deskribatu.

Nodo funtzioa MQTT deskribatu bistakoa: parametro bat jasotzen du /gela/trigHset (atalasearen hezetasun maila) s MQTT artekaria. Baina zer egiten du hurrengo datuekin? Nodoari besterik ez dizkio ematen FLASH denda, eta horrek, aldi berean, datu hauek memoria ez-hegazkorrean gordetzen ditu izenpean trigH. Horren ostean, nodoa FLASH leheneratu memoria ez-hegazkorreko datuak irakurtzen ditu izenpean trigH eta dagoeneko badakigu zer gertatzen den.

Zergatik halako zailtasunak? Zergatik ezin dira berehala bidali konparagailuaren sarrerara jasotako datuak?

S. Holmes kamaradak esaten zuen bezala - oinarrizkoa da! Inork ez du bermatzen zure gailua piztu ondoren sartuko denik MQTT artekaria. Eta hezetasuna neurtu behar da. Eta haizagailua piztuta egon behar da. Baina atalasearen hezetasun mailari buruzko informaziorik gabe, hau ezinezkoa da! Hori dela eta, piztean, gure gailuak aurrez gordetako atalasearen hezetasun-maila berreskuratzen du memoria ez-hegazkorratik eta erabakiak hartzeko erabiltzen du. Eta konexioa ezartzen denean MQTT artekaria eta norbaitek balio berri bat argitaratuko du /gela/trigHset, orduan balio berri hau erabiliko da.

Orduan, nahi duzuna atera dezakezu. Adibidez, hezetasunaz gain, tenperaturaren kontabilitatea ere sartu. Edo gehitu argiztapen-kontrol "adimentsua" (oraindik bi errele eta bi sarrera ditugu erabili gabe). Guztia zure esku!

Ondorioa

Beraz, ShIoTiny-n oinarritutako kontrolagailu sinple baten ezarpenaren hainbat adibide ikusi genituen. Agian hau norbaitentzat erabilgarria izango da.

Beti bezala, iradokizunak, nahiak, galderak, akatsak, etab. - posta elektronikoz: [posta elektroniko bidez babestua]

Iturria: www.habr.com

Gehitu iruzkin berria