ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Główne tezy lub o czym jest ten artykuł

Kontynuujemy cykl artykułów o ShIoTiny — wizualnie programowalnym kontrolerze opartym na chipie ESP8266.

W tym artykule omówiono na przykładzie projektu zarządzania wentylacją w łazience lub innym pomieszczeniu o podwyższonej wilgotności, jak buduje się program dla ShIoTiny.

Poprzednie artykuły z serii.

ShIoTiny: mała automatyzacja, Internet rzeczy lub „na sześć miesięcy przed urlopem”
ShIoTiny: węzły, połączenia i zdarzenia, czyli cechy rysowania programów

Linki

Binarne oprogramowanie, schemat kontrolera i dokumentacja
Instrukcja i opis węzłów
Konfiguracja brokera MQTT cloudmqtt.com
Panel sterowania MQTT dashboard dla Androida

Wprowadzenie

Nie ma poznania bez doświadczenia. To prawda, potwierdzona przez czas i pokolenia. Dlatego nie ma nic lepszego do nauki praktycznych umiejętności niż próby zrobienia czegoś samodzielnie. I przykłady, które pokazują, co można robić, a czego nie warto próbować, będą tutaj jak najbardziej na miejscu. Cudze błędy oczywiście nie zapobiegną pojawieniu się własnych, ale mogą pomóc w ograniczeniu ich liczby.

Pytania i listy czytelników poprzednich artykułów skłoniły mnie do stworzenia małego projektu-przykładu zarządzania wentylacją, aby pokazać, jak działają węzły ShIoTiny.

Początkowy pomysł, na którym oparty jest kontroler ShIoTiny — stacja pompowo-nawadniająca — nie wszystkim będzie odpowiadać i nie każdy uzna ją za interesującą. Dlatego wziąłem ogólnie zrozumiałą i wielu przydatną system zarządzania wentylacją jako przykład.

Powiem, że pomysł projektu nie jest mój, a czerpałem go stąd i następnie dostosowałem do ShIoTiny.

Najpierw zrozum, czego chcesz

Proces doskonalenia jest nieskończony. I to właśnie ta cecha zrujnowała wiele dobrych pomysłów i projektów. Programista, zamiast wydać rzecz, która może nie jest idealna, ale działa — kontynuował jej doskonalenie. I udoskonalał ją, aż konkurenci go wyprzedzali, wydając rozwiązania, które może nie są idealne (a często wręcz biedne), ale działają.

Dlatego bardzo ważne jest, aby wiedzieć, gdzie postawić kropkę w projekcie. Innymi słowy, należy określić, co chcemy osiągnąć na końcu projektu z tego, co mamy na początku. W języku rosyjskim istnieje doskonałe krótkie i zwięzłe słowo „plan”, które umysłowo ograniczeni tłumacze i niedorozwinięci menedżerowie w ostatnim czasie z jakiegoś powodu zaczęli nazywać „mapą drogową”. Cóż, niech ich będzie.

Nasz plan będzie taki. Załóżmy, że mamy pomieszczenie, w którym wilgotność może czasami znacznie wzrastać. Na przykład takie jak łazienka lub kuchnia. Wilgotność to coś nieprzyjemnego, a sposób walki z nią jest stary jak świat: przewietrzyć pomieszczenie. Jest wiele sposobów wentylacji. Jednak zrezygnujemy z egzotycznych i staromodnych metod, takich jak czarnoskórzy z wachlarzami, i skupimy się na zwykłym wentylatorze. Wentylatory są tańsze, a ich znalezienie w naszych stronach jest prostsze.

Jednym słowem, chcemy sterować wentylatorem: włączać go i odpowiednio wyłączać. A dokładniej, chcemy, aby włączał się i wyłączał samodzielnie, gdy zajdzie taka potrzeba.

Pozostaje określić: w jakich warunkach wentylator powinien się włączać, a w jakich — wyłączać.

Tutaj wszystko jest oczywiste: jeśli wilgotność przekracza jakąś ustaloną wartość — wentylator się włącza i wydmuchuje powietrze; gdy wilgotność powraca do normy — wentylator się wyłącza.

Uważny czytelnik od razu zwróci uwagę na słowo „ustalonej”. Przez kogo ustalonej? Jak ustalonej?

Próg wilgotności można ustalić na kilka sposobów. Rozważymy dwa z nich: pierwszy — za pomocą regulowanego oporu, a drugi — przez sieć za pomocą protokołu MQTT. Każda z tych metod ma swoje zalety i wady, które zostaną omówione później.

Dla tych, którzy nie zrozumieli, wyjaśnię, że „próg wilgotności” to taki poziom wilgotności, przy przekroczeniu którego konieczne jest włączenie wentylatora.

Kolejne pytanie: czy dawać użytkownikowi możliwość włączenia wentylatora bezpośrednio? To znaczy niezależnie od poziomu wilgotności, po naciśnięciu przycisku? Taką możliwość przewidzieliśmy. Wentylator może być potrzebny nie tylko przy podwyższonej wilgotności, ale także do usunięcia z pomieszczenia na przykład nieprzyjemnego zapachu, zwanej powszechnie „smrodem”.

Tak więc zrozumieliśmy, czego chcemy i trochę, jak to będzie działać. Krótko wymieńmy wszystkie funkcje naszego systemu zarządzania wentylacją:

  • ustawienie progu poziomu wilgotności (dwie opcje);
  • pomiar poziomu wilgotności;
  • automatyczne włączanie wentylatora;
  • automatyczne wyłączanie wentylatora;
  • ręczne włączanie wentylatora (po naciśnięciu przycisku).

Zatem plan jest jasny. Musimy zrealizować wszystkie wyżej wymienione funkcje w naszym programie. Na podstawie tego „planu” będziemy działać. Na początek narysujemy schemat strukturalny urządzenia.

Schemat strukturalny urządzenia

W ogóle rzecz biorąc, będziemy mieć dwa takie schematy. Pierwszy — dla wariantu, w którym poziom wilgotności jest ustawiany za pomocą potencjometru. Drugi schemat — dla wariantu, w którym poziom wilgotności jest ustawiany przez sieć za pomocą protokołu MQTT.

Jednak ponieważ te schematy będą różniły się tylko jednym elementem — potencjometrem „ustawienie poziomu wilgotności”, narysujemy tylko jeden schemat strukturalny. Oczywiście, schemat strukturalny zgodny z normą wygląda inaczej. Ale nie kierujemy się tutaj inżynierami, a młodszym pokoleniem. Dlatego przejrzystość jest ważniejsza.

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Więc co widzimy na rysunku? Wentylator jest podłączony do przekaźnika Relay1 kontrolera ShIoTiny. Zauważam, że wentylator to urządzenie pracujące pod wysokim napięciem. Dlatego, jeśli ktoś samodzielnie zamierza to zrobić — należy zachować ostrożność. Czyli przynajmniej, zanim włożysz swoje palce lub przyrządy pomiarowe do schematu — odłącz wentylator od zasilania. I druga uwaga. Jeśli twój wentylator ma moc większą niż 250W, to nie podłączaj go bezpośrednio do ShIoTiny — tylko przez rozrusznik.

Rozwiązałem kwestię wentylatora. Teraz przycisk „ręczne włączenie” wentylatora. Jest podłączony do wejścia Input1. Tu nie ma nic więcej do wyjaśnienia.

Czujnik temperatury i wilgotności DHT-11 (lub DHT-22 lub ich odpowiedniki). Dla jego podłączenia przewidziano specjalne wejście na kontrolerze ShIoTiny. Jak widać na rysunku — podłączenie takiego czujnika też nie stanowi problemu.

I wreszcie, potencjometr, który ustawia poziom wilgotności. Dokładniej — dzielnik składający się z potencjometru i opornika stałego. Nie ma problemów z jego podłączeniem, ale wyjaśnię, że wbudowany ADC na ESP8266 jest zaprojektowany maksymalnie na 1V. Dlatego potrzebny jest dzielnik napięcia o wartości około 5 razy.

I jeszcze raz przypomnę, że ten dzielnik nie jest potrzebny, jeśli poziom wilgotności ustawia się za pomocą protokołu MQTT.

Zacznijmy tworzyć algorytm działania urządzenia w edytorze ElDraw ShIoTiny. Jak się do niego dostać, możesz przeczytać w wcześniejszych artykułach lub w instrukcji, do której link znajduje się na początku artykułu.

Opcja pierwsza, najprostsza

Zacznijmy od prostego: włączenia przekaźnika Relay1 przy przekroczeniu progowego poziomu wilgotności przez określony czas.

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Jak widzimy, nic skomplikowanego: zaledwie cztery węzły, nie licząc węzłów-komentarzy. DHT11 — to czujnik temperatury i wilgotności (można wymienić na DHT22).

Stała CONST — progowy poziom wilgotności, w procentach.

Komparator — węzeł porównujący dwie liczby i generujący na wyjściu 1, jeśli dane warunki są spełnione i 0, jeśli warunki nie są spełnione.

W naszym przypadku takim warunkiem będzie A>B, gdzie A — zmierzony przez czujnik poziom wilgotności, a B — progowy poziom tej samej wilgotności.

Gdy tylko zmierzony poziom wilgotności (A) przekroczy progowy poziom wilgotności (B), na wyjściu komparatora A>B pojawi się 1 i przekaźnik zostanie włączony. I odwrotnie, gdy poziom wilgotności wróci do normy (to znaczy A<=B), na wyjściu komparatora A>B pojawi się 0 i przekaźnik zostanie wyłączony.

Czy wszystko jasne? Kto nie jest do końca pewien — przeczytaj jeszcze raz lub zajrzyj do opisu działania węzłów w instrukcji.

Zauważam, że dane z czujnika DHT11 aktualizowane są mniej więcej co 10 sekund. Dlatego przekaźnik nie może włączać się i wyłączać częściej niż raz na 10 sekund.

Inaczej mówiąc, chcielibyśmy ustawić progowy poziom wilgotności za pomocą potencjometru. Nic prostszego!

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Po prostu wymienimy węzeł-const na węzeł ADC. To do ADC podłączyliśmy dzielnik napięcia z potencjometrem.

Napięcie na wejściu ADC zmienia się od 0 do 1 V. A wilgotność na wyjściu czujnika zmienia się od 0 do 100%. Jak więc je porównujemy? To proste. Węzeł ADC w ShIoTiny nie tylko mierzy napięcie na wejściu, ale także potrafi je skalować i przesuwać..

To znaczy, na wyjściu węzła ADC1 (A/C) otrzymamy wartość X, obliczoną według wzoru

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

, gdzie ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład) — napięcie na wejściu ADC (od 0 do 1 V); k — zakres (zakres ADC) i b-przesunięcie (offset ADC). W ten sposób, jeśli ustalimy k=100 i b=0, to przy zmianie ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład) w zakresie od 0 do 1, wartość X na wyjściu węzła ADC będzie zmieniać się w zakresie od 0 do 100. To znaczy, liczbowo równą zakresowi zmian wilgotności od 0 do 100%.

Prosto mówiąc, obracając silnik zmiennego oporu, można ustawić próg wilgotności od 0 do 100. Jedynym niedogodnością jest to, że nie ma żadnych urządzeń wyświetlających. Ale w praktyce, jeśli w silniku zmiennego oporu zrobić 6 podziałów (0%, 20%, 40%, 60%, 80%, 100%) — to wystarczy, żeby ustawić próg wilgotności.

Jak ustawić współczynniki k — zakres (zakres ADC) i b- przesunięcie (offset ADC)? To proste jak bułka z masłem! Wskaźnikiem myszy kliknij w węzeł ADC1 i od razu pojawi się okno ustawień. W nim możesz ustawić wszystko, co potrzebujesz. W naszym przypadku będzie to takie okno, jak na rysunku.

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Tak, mamy najprostsze działające rozwiązanie. Zaczniemy je udoskonalać.
Przy okazji, najprostsze rozwiązanie ma jedną zaletę — nie potrzebuje internetu. Jest całkowicie autonomiczne.

Druga opcja, podłączamy przycisk

Wszystko działa, wszyscy są zadowoleni. Ale jest problem, nie możemy włączyć wentylacji wymuszonej. Już umówiliśmy się, że do wejścia Input1 będzie podłączony przycisk, który będzie włączał i wyłączał wentylator wymuszony, nie zwracając uwagi na czujnik wilgotności.
Nadszedł czas na przetworzenie tego przycisku w naszej schemacie-programie.

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Blok przetwarzania naciśnięcia przycisku wyróżniony jest pomarańczową linią. To licznik naciśnięć przycisku, który resetuje się do zera, gdy wartość na jego wyjściu przekroczy jedynkę (zielona linia, wyjście węzła CT).

Wszystko działa tu tak samo jak wcześniej: licznik CT liczy naciśnięcia przycisku, podłączonego do wejścia Input1. To znaczy, że wartość na wyjściu tego licznika zwiększa się o 1 przy każdym naciśnięciu przycisku.

Gdy ta wartość stanie się równa dwóm (to znaczy więcej niż 1), natychmiast na wyjściu komparatora A>B pojawi się 1. A ta 1 zresetuje licznik CT do zera. Mowa tu o komparatorze, dolnym na schemacie!

W ten sposób mamy dwa stany naszego przycisku — 0 i 1. Gdybyśmy potrzebowali więcej stanów (3 lub 4 lub jeszcze więcej) — wystarczy zmienić stałą CONST z jedynki na inną wartość.

Tak, mamy dwa warunki włączenia wentylatora: przekroczenie ustalonego poziomu wilgotności i pojedyncze naciśnięcie przycisku. Przy spełnieniu któregokolwiek z warunków wentylator włączy się. I będzie działać, dopóki ponownie nie zostanie naciśnięty przycisk I lub poziom wilgotności nie wróci do normy.

Można oczywiście jeszcze bardziej skomplikować algorytm, ale tego nie zrobimy — zostawimy pole dla twórczości chętnym.

Trzecią opcję, łączymy się z internetem

Wszystko, co opisaliśmy — jest całkowicie operacyjne. A co z modą? Przecież każdy nastolatek-hacker z wysypką zaśmieje się z tego, kto kręci pokrętłem i naciska przycisk, zamiast zarządzać z telefonu! Kręcenie pokrętłem — to 'niemodne'. A oto przesuwanie palcem po smartfonie, wycierając ten palec do krwi — to szczyt pragnienia hipo-hackerów (nigdy nie mogłem ich wszystkich odróżnić — więc jeśli się pomyliłem, przepraszam).

Ale będziemy pobłażliwi wobec tych osobników. Zarządzanie przez internet ma też swoje prawdziwe zalety. Po pierwsze, to przejrzystość. Istnieje mnóstwo aplikacji na wszystkie platformy, które pozwalają za pomocą kilku kliknięć stworzyć całkiem użyteczną panel kontrolny naszego kontrolera-karla. Po drugie, to możliwość zdalnego monitorowania stanu wilgotności w pomieszczeniu. I po trzecie, można widzieć nie tylko to, co robi wentylator — kręci się czy nie, ale również to, jaki poziom wilgotności został ustawiony. I to — wentylator włączył się automatycznie czy ręcznie. Generalnie wszystko, co sobie życzysz.

Oczywiście, dla jakiegoś wentylatora to za dużo zachodu — tyle uwagi. Ale to tylko przykład.

Zatem do połączenia z internetem wykorzystamy technologię MQTT oraz protokół o tej samej nazwie.
Aby skorzystać z tej technologii, potrzebujemy MQTT-brokera. To specjalny serwer, który obsługuje MQTT-klientów, na przykład ShIoTIny i Twój smartfon.

Sedno technologii MQTT polega na tym, że każdy z klientów publikuje na MQTT-brokerze (serwerze) dowolne dane pod określoną nazwą (nazywaną temat w terminologii MQTT). Inne klienci mogą subskrybować dowolne dane po ich nazwie (temat) i otrzymywać nowo opublikowane dane. W ten sposób cały wymiana danych odbywa się na zasadzie klient-broker-klient.

Ja nie będę zatrzymywał się na szczegółach. W internecie jest mnóstwo artykułów i materiałów edukacyjnych na temat tego, jak działa MQTT i jakie są programy do tworzenia paneli kontrolnych. Po prostu pokażę, jak możemy odbierać i publikować dane za pomocą ShIoTiny.

Jako broker użyłem www.cloudmqtt.com, ale zasada jest wszędzie taka sama.

Załóżmy zatem, że zarejestrowałeś się na MQTT-brokerzeOgólnie rzecz biorąc, broker wyda Ci (lub poprosi o wymyślenie) nazwę użytkownika i hasło (do autoryzacji), a także port do połączenia. Połącz ShIoTiny do z brokerem MQTT na dwa sposoby — zwykłe połączenie i przez TLS (SSL).

Wszystkie te parametry ShIoTiny wprowadza się na zakładce Networking, w sekcji Połączenie MQTT z serwerem.

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Jeśli Twój MQTT-brokera nie wymaga autoryzacji — nie wprowadzaj loginu i hasła (pozostaw te pola puste).

Parametr Prefiks tematu MQTT wymaga osobnego wyjaśnienia.

Prefiks parametrów MQTT — to ciąg dodawany do nazwy tematu (temat) przy publikacji i subskrypcji na brokerze MQTT. Aby ustawić prefiks MQTT dla swojego kontrolera, wystarczy go wpisać w polu „Prefiks tematu MQTT» («Prefiks tematu MQTT”). Prefiks zawsze zaczyna się od ukośnika («/»)! Jeśli nie wpiszesz ukośnika w polu, zostanie on dodany automatycznie. W prefiksie nie można używać znaków «#» i «+». Nie ma innych ograniczeń.

Na przykład, jeśli publikujesz parametr „status” (lub się na niego subskrybujesz), a Twój prefiks to „/shiotiny/”, to na brokerze ten parametr zostanie opublikowany jako „/shiotiny/status”. Jeśli masz ustawiony pusty prefiks, wszystkie parametry na brokerze będą zaczynały się od ukośnika («/»): «status” będzie publikowane jako „/status».

Zakładając, że zarejestrowałeś się na MQTT-brokerze i otrzymałeś login, hasło i port. Następnie wpisałeś te parametry na zakładce Networking, w sekcji Połączenie MQTT z serwerem kontrolera ShIoTiny.

Zakładamy, że prefiks został ustawiony na wartość „/room/».

Zacznijmy od tego, że opublikujemy stan wszystkich kluczowych parametrów: przekaźnik Realay1, stan ręcznego włączenia, stan automatycznego włączenia oraz, w końcu, próg i bieżący poziom wilgotności. A na koniec bonus — temperatura w pomieszczeniu. Jak to zrobić, zobacz na rysunku.

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Jak widzimy, różnica od poprzedniej wersji — to tylko węzły „Publikowanie MQTT”. Z uwzględnieniem prefiksu publikowane są następujące parametry:
ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Jak widzimy, stan całego systemu jest u nas na widoku!

Ale chcemy nie tylko widzieć, ale i zarządzać. Co robić? Bardzo prosto. Zrezygnujemy z ustawiania progu wilgotności za pomocą ADC i potencjometru i będziemy ustalać ten próg bezpośrednio z telefonu! MQTT Usuwamy węzeł ADC z schematu i wstawiamy tam trzy nowe węzły:

ShIoTiny: wentylacja pomieszczeń wilgotnych (projekt-przykład)

Przechowywanie FLASH Odtwarzanie FLASH, Opisz MQTT i Funkcja węzła.

jest oczywista: otrzymuje parametr Funkcja węzła (próg wilgotności) z /room/trigHset brokera MQTT . Ale co on robi z danymi dalej? Po prostu oddaje je węzłowi. Odtwarzanie FLASH, który z kolei przechowuje te dane w pamięci nieulotnej pod nazwą trigH. Po tym węzeł Opisz MQTT odczytuje z pamięci nieulotnej dane pod nazwą trigH a co się dalej wydarzy, już wiemy.

Po co takie komplikacje? Dlaczego nie można od razu przekazać uzyskanych danych do komparatora?

Jak mawiał towarzysz S. Holmes — to elementarne! Nikt nie gwarantuje, że po włączeniu twojego urządzenia, połączy się z z brokerem MQTT. A trzeba też mierzyć wilgotność. I trzeba włączyć wentylator. Ale bez informacji o progowym poziomie wilgotności to niemożliwe! Dlatego nasze urządzenie przy włączeniu wyciąga wcześniej zapamiętany progowy poziom wilgotności z pamięci nieulotnej i wykorzystuje go do podejmowania decyzji. A dopiero gdy nawiąże połączenie z brokerem MQTT i ktoś opublikuje nową wartość /room/trigHset, wtedy zostanie wykorzystana ta nowa wartość.

Dalej możesz wymyślać wszystko, co chcesz. Na przykład, oprócz wilgotności wprowadzić też pomiar temperatury. Lub dodać 'inteligentne' sterowanie oświetleniem (mamy jeszcze dwa nieużywane przekaźniki i dwa wejścia). Wszystko jest w twoich rękach!

Podsumowanie

Oto zbadaliśmy kilka przykładów realizacji najprostszej w istocie kontrolera opartego na ShIoTiny. Może komuś to się przyda.

Jak zawsze, sugestie, życzenia, pytania, błędy drukarskie i inne — na maila: shiotiny@yandex.ru

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster