ShioTiny: nedves helyiség szellőztetése (példaprojekt)

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Főbb pontok, vagy amiről ez a cikk szól

Folytatjuk az erről szóló cikksorozatot ShioTiny - vizuálisan programozható chip alapú vezérlő ESP8266.

Ez a cikk egy fürdőszobában vagy más magas páratartalmú helyiségben végzett szellőzésvezérlési projekt példáján bemutatja, hogyan épül fel egy program ShioTiny.

A sorozat korábbi cikkei.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”
ShioTiny: csomópontok, kapcsolatok és rajzprogramok eseményei vagy jellemzői

referenciák

Bináris firmware, vezérlő áramkör és dokumentáció
Útmutató és az alkatrészek leírása
Az MQTT broker cloudmqtt.com beállítása
MQTT irányítópult Androidra

Bevezetés

Tapasztalat nélkül nincs megértés. Ez egy idő és generációk által próbára tett igazság. Ezért semmi sem jobb a gyakorlati készségek elsajátításához, mint az, hogy saját kezűleg megpróbálunk valamit csinálni. És itt jól jönnek azok a példák, amelyek megmutatják, hogy mit lehet csinálni, és mit nem szabad megpróbálni. Mások hibái természetesen nem akadályozhatják meg a saját hibáid előfordulását, de ez utóbbiak számát csökkenthetik.

A korábbi cikkek olvasóinak kérdései és levelei arra késztettek, hogy készítsek egy kis projektet – egy példát a szellőztetés szabályozására, hogy bemutassam, hogyan működnek a ShioTiny csomópontok.

Az eredeti ötlet, amiből a vezérlő született ShioTiny - szivattyú- és öntözőállomás - nem mindenki számára alkalmas, és nem mindenkit érdekel. Ezért egy sokak számára érthető és hasznos szellőzésvezérlő rendszert vettem példaként.

Azt mondom, hogy a projekt ötlete nem az enyém, hanem innen kaptam majd alkalmazkodott ahhoz ShioTiny.

Először értse meg, mit akar

A fejlesztési folyamat végtelen. Ez az ingatlan pedig sok jó ötletet és projektet tett tönkre. A fejlesztő ahelyett, hogy kiadott volna valamit, ami nem volt ideális, de még mindig működik, tovább fejlesztette azt. És addig fejlesztette, amíg a versenytársak megkerülték, és működő megoldást adtak ki, bár nem ideális (és gyakran kifejezetten rossz), de működőképes.

Ezért nagyon fontos tudni, hol kell véget vetni a projektnek. Más szóval, meg kell határoznunk, hogy mit akarunk elérni a projekt végén abból, ami az elején van. Oroszul egy olyan dokumentumhoz, amelyet pontosan azzal a céllal állítottak össze, hogy leírja a valami létrehozásához vezető utat, van egy csodálatos rövid és tömör „terv” szó, amelyet a mentálisan visszamaradt fordítók és a hibás menedzserek a közelmúltban valamiért „útnak” kezdtek nevezni. térkép". Nos, Isten áldja őket.

A tervünk ilyen lesz. Tegyük fel, hogy van egy helyiség, ahol a páratartalom időnként jelentősen megemelkedhet. Például egy fürdőszoba vagy konyha. A páratartalom kellemetlen dolog, és a leküzdésének módja egyidős a világgal: szellőztesse ki a helyiséget. A szellőztetésnek jó néhány módja van. De talán felhagyunk az olyan egzotikus és régimódi módszerekkel, mint a feketék a rajongókkal, és ragaszkodunk a szokásos rajongókhoz. A ventilátorok olcsóbbak és könnyebben megtalálhatók a környékünkön.

Egyszóval irányítani akarjuk a ventilátort: ​​kapcsolja be, és ennek megfelelően kapcsolja ki. Pontosabban azt akarjuk, hogy szükség esetén be- és kikapcsoljon.

Továbbra is meg kell határozni: milyen körülmények között kell bekapcsolnia a ventilátort, és milyen körülmények között kell kikapcsolnia.

Itt minden nyilvánvaló: ha a páratartalom egy bizonyos határ felett van, a ventilátor bekapcsol és kiszívja a levegőt; A páratartalom normalizálódott - a ventilátor kikapcsol.

A figyelmes olvasónak azonnal megakad a szeme az „adva” szón. Ki adta? A megadottak szerint?

A páratartalom küszöbértékét többféleképpen is beállíthatja. Ezek közül kettőt fogunk megvizsgálni: az elsőt - változó ellenállással, a másodikat - a hálózaton keresztül az MQTT protokollon keresztül. Ezen módszerek mindegyikének vannak előnyei és hátrányai, amelyeket később tárgyalunk.

Aki nem érti, annak elmagyarázom, hogy a „küszöb páratartalom” az a páratartalom, amely felett a ventilátort be kell kapcsolni.

A következő kérdés: meg kell adni a felhasználónak a ventilátor közvetlen bekapcsolásának jogát? Vagyis a páratartalomtól függetlenül egy gombnyomásra? Biztosítunk egy ilyen lehetőséget. Végtére is, ventilátorra nemcsak magas páratartalom esetén lehet szükség, hanem például a kellemetlen szag eltávolítására is a helyiségből, amelyet „bűznek” neveznek.

Tehát megértjük, mit akarunk, és egy kicsit megértjük, hogyan fog működni. Röviden soroljuk fel szellőztető rendszerünk összes funkcióját:

  • a páratartalom küszöbértékének beállítása (két lehetőség);
  • páratartalom mérése;
  • ventilátor automatikus bekapcsolása;
  • ventilátor automatikus leállítása;
  • ventilátor kézi aktiválása (egy gomb megnyomásával).

Szóval a terv világos. A fenti funkciók mindegyikét megvalósítani szükséges programunkban. E „terv” alapján fogunk cselekedni. Először rajzoljuk meg az eszköz blokkdiagramját.

A készülék blokkvázlata

Általánosságban elmondható, hogy két ilyen rendszerünk lesz. Az első arra az opcióra vonatkozik, amelyben a páratartalom küszöbértékét egy változó ellenállás állítja be. A második séma arra az opcióra vonatkozik, amelyben a páratartalom küszöbszintjét a hálózaton keresztül az MQTT protokollon keresztül állítják be.

De mivel ezek az áramkörök csak egy elemben különböznek egymástól - a változó ellenállástól, amely „beállítja a küszöb páratartalmát”, csak egy blokkdiagramot rajzolunk. Természetesen a GOST szerinti blokkdiagram másképp néz ki. De nem a bölénymérnökökre koncentrálunk, hanem a fiatalabb generációra. Ezért a láthatóság fontosabb.

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Szóval mit látunk a képen? A ventilátor a reléhez van csatlakoztatva Relay1 vezérlő ShioTiny. Felhívjuk figyelmét, hogy a ventilátor nagyfeszültségű készülék. Ezért, ha valaki ezt saját maga csinálja, legyen óvatos. Vagyis, mielőtt az ujjait vagy a mérőműszereket az áramkörbe dugná, legalább kapcsolja ki a ventilátort. És a második megjegyzés. Ha a ventilátor erősebb, mint 250W, majd csatlakoztassa közvetlenül a ShioTiny nem éri meg - csak az indítón keresztül.

Rendbe hoztuk a ventilátort. Most nyomja meg a ventilátor „manuális bekapcsolása” gombot. A bemenethez csatlakozik Bemenet1. Itt már nincs mit magyarázni.

Hőmérséklet és páratartalom érzékelő DHT-11 (vagy DHT-22 vagy analógjaik). A vezérlőn egy speciális bemenet található a csatlakoztatáshoz. ShioTiny. Amint az ábrán látható, egy ilyen érzékelő csatlakoztatása sem jelent problémát.

És végül a változó ellenállás, amely meghatározza a páratartalom küszöbértékét. Pontosabban változó és állandó ellenállásokból álló osztó. A csatlakozásával nincs gond, de hadd magyarázzam el, hogy a beépített ADC igen ESP8266 maximum 1 V-ra tervezték. Ezért körülbelül 5-szörös feszültségosztóra van szükség.

És hadd emlékeztesselek még egyszer arra, hogy erre az elválasztóra nincs szükség, ha a páratartalom küszöbértékét a hálózaton keresztül az MQTT protokollal állítják be.

Kezdjük el egy algoritmus létrehozását az eszközhöz az ElDraw ShIoTiny szerkesztőben. A szerkesztőhöz való eljutás korábbi cikkeiben vagy az utasításokban olvasható, amelyek linkje a cikk elején található.

Első lehetőség, a legegyszerűbb

Kezdjük valami egyszerűvel: a relé bekapcsolásával Relay1 ha a páratartalom küszöbértékét egy meghatározott ideig túllépik.

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Mint látható, semmi bonyolult: csak négy csomópont, a megjegyzés csomópontokat nem számítva. DHT11 - ez maga a hőmérséklet és páratartalom érzékelő (cserélhető DHT22).

Állandó CONST — küszöb páratartalom, százalékban.

Összehasonlító - olyan csomópont, amely két számot hasonlít össze, és 1-et ad ki, ha egy adott feltétel teljesül, és 0-t, ha a feltétel nem teljesül.

A mi esetünkben ez a feltétel lesz A>BAhol A az érzékelő által mért páratartalom, és B — azonos páratartalom küszöbértéke.

Amint a mért páratartalom (A) meghaladja a páratartalom küszöbértékét (B), ott a komparátor kimenetén A>B 1 jelenik meg, és a relé bekapcsol. Ezzel szemben, amint a páratartalom normalizálódik (pl. A<=B), ott a komparátor kimenetén A>B 0 jelenik meg, és a relé kikapcsol.

Minden tiszta? Aki nem túl kényelmes, olvassa el újra, vagy nézze meg az egységek működésének leírását az útmutatóban.

Vegye figyelembe, hogy az érzékelőtől származó adatok DHT11 körülbelül 10 másodpercenként frissül. Ezért a relé nem tud gyakrabban be- és kikapcsolni, mint 10 másodpercenként.

Minden rendben lenne, de szeretnénk a páratartalom küszöbértékét változó ellenállással beállítani. Mi sem lehetne könnyebb!

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Cseréljük le az állandó csomópontot egy ADC csomópontra. Végül is az ADC-re kötöttünk egy változó ellenállású feszültségosztót.

Az ADC bemenet feszültsége 0 és 1 volt között változik. De a páratartalom az érzékelő kimenetén 0 és 100% között változik. Hogyan hasonlítsuk össze őket? Ez egyszerű. ADC csomópont be ShioTiny nem csak a bemeneti feszültséget méri, hanem tudja, hogyan kell lépték és eltolódás.

Vagyis az ADC1 csomópont (ADC) kimenetének értéke lesz Xképlettel számolva

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Ahol ShioTiny: nedves helyiség szellőztetése (példaprojekt) — feszültség az ADC bemeneten (0 és 1 V között); k - tartomány (ADC tartomány) és b-eltolás (ADC offset). Így, ha beállítja k = 100 и b = 0, majd váltáskor ShioTiny: nedves helyiség szellőztetése (példaprojekt) 0 és 1 közötti tartományban, érték X az ADC csomópont kimenetén a 0 és 100 közötti tartományban változik. Vagyis számszerűen megegyezik a páratartalom változásának 0 és 100% közötti tartományával.

Vagy egyszerűen a változtatható ellenállású csúszka elforgatásával beállíthatja a páratartalom küszöbértékét 0 és 100 között. Az egyetlen kellemetlenség, hogy nincsenek megjelenítő eszközök. De a gyakorlatban, ha 6 felosztást készít egy változó ellenállású motorból (0%, 20%, 40%, 60%, 80%, 100%) - akkor ez elegendő a páratartalom küszöbértékének beállításához.

Hogyan állítsunk be esélyeket? k - tartomány (ADC tartomány) és b-offset (ADC offset)? Igen, könnyebb, mint a párolt fehérrépa! Mutasson az egérmutatóval egy csomópontra ADC1 és azonnal megjelenik egy beállítási ablak. Mindent bele lehet rakni, ami kell. A mi esetünkben ez egy olyan ablak lesz, mint az ábrán.

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Tehát megvan a legegyszerűbb működő megoldás. Kezdjük el javítani.
Mellesleg, a legegyszerűbb megoldásnak van egy előnye - nincs szükség internetre. Teljesen autonóm.

Második lehetőség, csatlakoztassa a gombot

Minden működik és mindenki boldog. De balszerencse, nem tudjuk erőszakkal bekapcsolni a szellőztetést. Ebben már a bejáratnál megegyeztünk Bemenet1 lesz rá csatlakoztatva egy gomb, ami a páraérzékelőtől függetlenül erőteljesen be- és kikapcsolja a ventilátort.
Ideje feldolgozni ezt a gombot a programdiagramunkban.

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

A gombkattintás feldolgozó blokkja narancssárga vonallal van kiemelve. Ez a gombnyomások számlálója, amely nullára áll vissza, ha a kimenetén az érték meghaladja az egyet (zöld vonal, csomópont kimenet CT).

Itt minden olyan egyszerűen működik, mint korábban: a számláló CT számolja a bemenethez csatlakoztatott gomb megnyomásait Bemenet1. Ez azt jelenti, hogy a számláló kimenetén lévő érték minden gombnyomással 1-gyel nő.

Amint ez az érték egyenlő kettővel (vagyis nagyobb, mint 1), azonnal a komparátor kimenetén A>B Megjelenik az 1. Ez az 1 pedig nullázza a számlálót CT nullára. Ez a komparátort jelenti, az alsót a diagramon!

Így a gombunknak két állapota van - 0 és 1. Ha több állapotra lenne szükségünk (3 vagy 4 vagy még több), akkor csak az állandót kell módosítanunk. CONST egyik értékről a másikra.

Tehát két feltételünk van a ventilátor bekapcsolásához: egy adott páratartalom túllépése és a gomb egyszeri megnyomása. Ha bármelyik feltétel teljesül, a ventilátor bekapcsol. És ez addig működik, amíg újra meg nem nyomják a gombot И a páratartalom nem tér vissza a normál értékre.

Természetesen még tovább bonyolíthatja az algoritmust, de mi ezt nem tesszük – teret hagyunk a kreativitásnak a vágyóknak.

Harmadik lehetőség: csatlakozzon az internethez

Minden, amit leírtunk, teljesen működőképes. Mi a helyzet a bemutatókkal? Végtére is, minden pattanásos csípő cracker hacker kinevet valakit, aki elforgatja a gombot és megnyom egy gombot, nem pedig okostelefonról irányít! A fogantyú elcsavarása „nem divatos”. De ujjal mászni az okostelefonon, véresre dörzsölni az ujját - ez a csípő-hacker-cracker vágyainak csúcsa (soha nem tudtam mindegyiket megkülönböztetni - szóval, ha tévedtem, bocsáss meg).

De legyünk engedékenyek ezekkel az egyénekkel szemben. Az interneten keresztüli kezelésnek valódi előnyei vannak. Először is, ez a láthatóság. Rengeteg olyan alkalmazás létezik minden platformra, amelyek segítségével néhány finomítással egy teljesen használható vezérlőpanelt készíthetünk Carlson vezérlőnknek. Másodszor, ez egy lehetőség a helyiség páratartalmának távoli megfigyelésére. Harmadszor pedig nem csak azt láthatja, hogy mit csinál a ventilátor – forog-e vagy sem, hanem azt is, hogy milyen küszöb páratartalom van beállítva. Aztán a ventilátor automatikusan vagy manuálisan bekapcsolt. Általában mindent, amit akarsz.

Természetesen nagy megtiszteltetés néhány rajongó számára, hogy ennyi figyelmet kap. De ez csak egy példa.

Tehát az internethez való csatlakozáshoz technológiát fogunk használni MQTT és az azonos nevű protokollt.
Ahhoz, hogy kihasználjuk ezt a technológiát, szükségünk van MQTT bróker. Ez egy speciális szerver, amely szolgál MQTT kliensek, Például ShioTIny és az okostelefonod.

A technológia lényege MQTT abból áll, hogy bármely ügyfél tetszőleges adatot tesz közzé az MQTT brókernek (szervernek) meghatározott néven (ún. téma a terminológiában MQTT). Más ügyfelek tetszőleges adatokra iratkozhatnak fel nevük használatával (téma), és újonnan közzétett adatokat kapnak. Vagyis minden adatcsere az ügyfél-bróker-ügyfél elvet követi.

Я Nem fogok összpontosítson a részletekre. Az interneten rengeteg cikk és oktatóanyag található a működéséről. MQTT és milyen programok vannak a vezérlőpanelek létrehozásához. Csak megmutatom, hogyan tudunk adatokat fogadni és közzétenni ShioTiny.

Brókerként használtam www.cloudmqtt.com, de az elv mindenhol ugyanaz.

Tehát feltételezzük, hogy regisztrált MQTT bróker. Általában a bróker megadja (vagy megköveteli, hogy jöjjön létre) egy felhasználónevet és jelszót (az engedélyezéshez), valamint egy portot a csatlakozáshoz. Bedugózni ShioTiny к MQTT bróker kétféleképpen lehetséges - normál kapcsolaton és keresztül TLS (SSL).

Mindezek a paraméterek be ShioTiny beírva a lapra hálózatépítés, fejezet MQTT Csatlakozás a szerverhez.

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Ha a MQTT bróker nem igényel engedélyt - ne adja meg bejelentkezési nevét és jelszavát (ezeket a mezőket hagyja üresen).

Paraméter MQTT téma előtag külön magyarázatot igényel.

Az MQTT paraméterek előtagja a téma nevéhez fűzött karakterlánc (téma) az MQTT bróker közzététele és előfizetése esetén. telepíteni MQTT előtag a vezérlőhöz csak be kell írnia a beviteli mezőbe "MQTT téma előtag"("MQTT téma előtag"). Az előtag mindig perjellel kezdődik ("/")! Ha nem ír be perjelet a beviteli mezőbe, az automatikusan hozzáadódik. Az előtagban nem használhat szimbólumokat "#" и "+". Nincs más korlátozás.

Például ha közzéteszi a "" paramétertállapot" (vagy iratkozzon fel rá), és az előtagja a következőre van állítva/shiotiny/", akkor ez a paraméter a brókernél "" néven lesz közzétéve/shiotiny/status" Ha üres az előtag, akkor a bróker összes paramétere perjellel kezdődik ("/"): "állapot"" néven lesz közzétéve/állapot".

Tehát úgy gondoljuk, hogy regisztrált MQTT bróker és kapott egy bejelentkezési nevet, jelszót és portot. Ezután megadta ezeket a paramétereket a fülön hálózatépítés, fejezet MQTT Csatlakozás a szerverhez vezérlő ShioTiny.

Feltételezzük, hogy az előtag a "/szoba/".

Kezdjük az összes kulcsparaméter állapotának közzétételével: relé Reallay1, kézi kapcsolási állapotok, automatikus kapcsolási állapotok és végül a küszöbérték és az aktuális páratartalom. Nos, bónusz a szoba hőmérséklete. Hogyan kell ezt megtenni, lásd az ábrát.

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Mint látható, az előző verzióhoz képest csak a csomópontok különböznek.MQTT közzététel" Az előtag figyelembevételével a következő paraméterek kerülnek közzétételre:
ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Amint látja, a rendszer teljes állapota a tenyerünkben van!

De nemcsak látni akarunk, hanem irányítani is. Mit kellene tennem? Nagyon egyszerű. Nem fogjuk megtagadni a páratartalom küszöbértékének beállítását ADC és egy változó ellenállást, és ennek megfelelően fogjuk beállítani ezt a küszöb páratartalmat MQTT közvetlenül az okostelefonról!

ShioTiny: nedves helyiség szellőztetése (példaprojekt)

Eltávolítjuk az ADC csomópontot az áramkörből, és három új csomópontot adunk hozzá: FLASH áruház, FLASH visszaállítás и MQTT írja le.

Csomópont funkció MQTT írja le nyilvánvaló: paramétert kap /room/trigHset (páratartalom küszöbértéke) s MQTT bróker. De mit kezd ez ezután az adatokkal? Csak odaadja őket a csomópontnak FLASH áruház, amely viszont ezeket az adatokat a nem felejtő memóriában tárolja a név alatt trigH. Ezt követően a csomópont FLASH visszaállítás név alatt beolvassa az adatokat a nem felejtő memóriából trigH és már tudjuk, mi történik ezután.

Miért ilyen nehézségek? Miért nem lehet a kapott adatokat azonnal elküldeni az összehasonlító bemenetére?

Ahogy S. Holmes elvtárs szokta mondani: ez elemi! Senki sem garantálja, hogy a készülék bekapcsolása után csatlakozni fog MQTT bróker. És meg kell mérni a páratartalmat. És a ventilátort be kell kapcsolni. De a küszöb páratartalomra vonatkozó információk nélkül ez lehetetlen! Ezért a készülékünk bekapcsolt állapotban lekéri a nem felejtő memóriából a korábban eltárolt küszöb páratartalmat, és ezt használja a döntések meghozatalához. És amikor a kapcsolat létrejön MQTT bróker és valaki új értéket fog közzétenni /room/trigHset, akkor ez az új érték kerül felhasználásra.

Aztán kitalálhat, amit akar. Például a páratartalom mellett vezesse be a hőmérséklet-elszámolást is. Vagy adjunk hozzá „okos” világításvezérlést (még mindig van két relénk és két bemenetünk kihasználatlanul). Minden a te kezedben!

Következtetés

Így több példát is megvizsgáltunk egy lényegében egyszerű, ShioTiny alapú vezérlő megvalósítására. Talán ez hasznos lesz valakinek.

Mint mindig, javaslatok, kívánságok, kérdések, elírások stb. - e-mailben: [e-mail védett]

Forrás: will.com

Hozzászólás