Witajcie,
Chciałem pokazać Wam swój sterownik nawodnienia, który zbudowałem w oparciu o ESP8266 ma klonie płytki WemosD1. Jest on spięty z automatyką domową za pomocą biblioteki MySensors [ref. 3].
W skrócie chodzi o to, by wszystkie urządzenia były zarządzane z jednej aplikacji (bez znaczenia, czy jest to klimatyzacja, wentylacja, pompa ciepła, rolety, zasłony, światło, woda, kamery, …) i jej się trzymam. Sterownik miał być i jest zamiennikiem sterownika Hunter, który nie miał integracji z automatyką domową (moduł WiFi trzeba dokupić a potem pozostawała kwestia integracji z moim obecnym system i wymaganiami).
Sterownik nawodnienia może być zapakowany w dwa modele obudowy Kradex: Z101 i ZD1006 - gotowe nawiercenia płytek pod obydwie obudowy.
Ten sterownik to taki trochę bardziej ubogi klon sterownika użytkownika @tmf (https://www.elektroda.pl/rtvforum/topic3667909.html), niemniej jego „ubogość” w moim przypadku jego super zaletą.
Na końcu wpisu dorzuciłem linki referencyjne do wpisów. Sam z nich korzystałem, jeśli kogoś temat interesuje to zaoszczędzi czasu.
Funkcjonalności.
Funkcjonalności jakie urządzenie posiada:
1. Zasilanie całego urządzenia za pomocą 24V AC (z przetwornicą LM2675 do poziomu 3.3V DC, które jest niezbędne do modułu WiFi ESP8266)
2. Sterowanie 3 zaworami 24V AC (za pomocą optoMOS, co daje separację galwaniczną)
3. Wyłączanie podlewania przez sensor opadu deszczu (odcięcie jednego bieguna zasilania zaworów za pomocą kontaktronu w sensorze deszczu)
4. Wykrywanie czy faktycznie przez zawory płynie prąd (za pomocą ACS711)
5. Interfejs użytkownika w postaci (3 podświetlane przyciski i 2 diody sygnalizacyjne).
6. Interfejs MySensors służący do wymiany informacji i komend z kontrolerem za pomocą sieci WiFi.
Szczegóły rozwiązania i poszczególnych funkcji.
Zasilanie.
Moduł zasilania oparłem o układ LM2675M-3.3, który jest popularnie używany. Podpatrzyłem go na forum w kilku projektach.
Celem modułu było zamiana prądu przemiennego 24V AC na 3.3V DC, który jest potrzebny do zasilania ESP8266. Urządzenie jest zasilane 24V AC, ponieważ taki prąd znamionowy ma być doprowadzony do elektrozaworów.
Moduł wykonałem jako skrzyżowanie informacji z DS oraz archiwalnych wątków, w których wypowiadał się użytkownik @-RoMan- oraz rad, które udzielił mi użytkownik @ArturAVS.
Moduł zasilania ma dwa zabezpieczenia. Pierwsze zabezpieczenie to bezpiecznik polimerowy 1A na ścieżce, która idzie do mostka prostowniczego, chodzi o to, żeby do przetwornicy nie puścić za dużo prądu.
Drugie zabezpieczenie do bezpiecznik topnikowy (cylindryczny) 1A, który zabezpiecza elektrozawory. Nie spodziewam się używać więcej niż jednego zaworu na raz, więc to zabezpieczenie jest więcej niż OK (prąd cewki mojego elektrozaworu przy starcie nie powinien przekraczać 0.5A, a w trakcie pracy 0.2A). Ewentualne dodatkowe zabezpieczenie to programowe zabraniające uruchomienia więcej niż jednego zaworu.
Sterowanie 3 zaworami 24V AC
Sterowanie odbywa się za pomocą przekaźników SSR optoMOS (Panasonic AQY212). Wykorzystałem je, bo technologia, w której są wykonane gwarantuje separację galwaniczną pomiędzy obwodem płytki i obwodem zaworów.
Sterowanie następuje z trzech pinów układu ESP8266. Piny te służą też podświetlaniu przycisków, zatem stan wysoki pinu powoduje oświetlenie diody w przekaźniku (i zamknięcie go, w konsekwencji uruchomienie zaworu) i oświetlenie diody w przycisku na obudowie. Fajny efekt.
Wyłączanie podlewania przez sensor opadu deszczu
To funkcja, którą skopiowałem ze sterownika Hunter. Czujnik opadu deszczu zawiera kontaktron (NC), który rozłącza obwód gdy pada deszcz. Bez wnikania w szczegóły dlaczego, ale pozostawiłem tę funkcję taką jaka jest. Przez przewód z kontaktronem w czujniku zalania płynie jeden biegun 24V AC zasilania zaworów. Jeśli włączone są spryskiwacze i jednocześnie jest opad deszczu, to następuje rozłączenie obwodu przez kontaktron i spryskiwacze się wyłączają. Generalnie funkcja działa, ale dziś bym jej nie zrobił - moja integracja z pogodą załatwia sprawę (jeśli przewidywany jest opad, to podlewanie danego dnia się nie odbędzie).
Wykrywanie czy faktycznie przez zawory płynie prąd (za pomocą ACS711)
Zgodnie z tym co powyżej, może się zdarzyć sytuacja, że jest zlecenie pryskania wodą, a jednocześnie następuje rozłączenie obwodu elektrozaworów przez czujnik opadu deszczu. Tę sytuację wykrywam za pomocą czujnika Halla (układ ACS711). Jest on wpięty w obwód elektrozaworów i dokonuje on pomiaru natężenia prądu w tym obwodzie, analogowy pomiar z tego czujnika przekazywany jest do ESP8266, a ten go za pomocą pinu z przetwornikiem ADC (pin A0).
Za pomocą tej funkcji wykrywam sytuację „RAIN STOP”, czyli zatrzymania podlewania z uwagi na opad deszczu (logicznie: JEŚLI elektrozawór jest otwarty ORAZ nie płynie przez niego prąd TO sygnalizuj RAIN STOP).
BARDZO WAŻNA UWAGA: korzystając z bibliotek WiFi na ESP8266 musicie wiedzieć, że pin A0 (a dokładniej ADC) jest wykorzystywany przez ESP w procesie monitoringu jakości sygnału WiFi. Odczyt wartości natężenia prądu z ACS należy wykonywać w interwałach – ja korzystam z 50ms i jest OK. Odczyt non-stop, bez interwału spowoduje zgubienie sygnału (i moduł już nie odzyska połączenia). Dla wnikliwych odsyłam do referencji (ref 4., ref 5.)
Poniżej wklejam krótki kod dla Framework Arduino dla inspiracji.
Interfejs użytkownika.
Interfejs realizowany jest przez 3 podświetlane przyciski i 2 diody sygnalizacyjne.
3 podświetlane przyciski służą do manualnego włączania/wyłączania zaworów, a fakt podświetlenia informuje że dany elektrozawór jest otwarty (czyli: dana sekcja jest nawadniania). Przyciskiem można wyłączyć sekcję jeśli akurat ona w danej chwili pracuje. Generalnie przyciski zostawiłem w razie, gdyby z jakiś przyczyn nie było połączenia z centralą automatyki (sam sterownik nie jest zbyt „inteligentny”, nie zna harmonogramów).
Z punktu widzenia urządzenia, przyciski są spięte z pinami wejściowymi ESP8266, każdy pin wejściowy jest podciągnięty do 3V3 rezystorem 10k (PULL UP). Naciśnięcie przycisku zwiera pin wejściowy z masą i ten sygnał jest interpretowany przez ESP.
Z uwagi na to, że przyciski połączone są z płytką za pomocą przewodów, istnieje ryzyko generowania przez nie zakłóceń (mogą one działać jak anteny). Z tego względu zastosowałem dodatkowo kondensatory 100nF na pinach wejściowych ESP8266.
Uruchomienie podlewania danej sekcji trwa tyle minut, ile zostało mu nakazane przez kontroler. Informacja o czasie podlewania sekcji przechowywana jest w EEPROM ESP8266, zatem ta informacja nie ginie przy braku połączenia z kontrolerem. Chodzi o zabezpieczenie przed sytuacją, że kontroler zleca podlewanie, połączenie z kontrolerem ginie, a woda leje się bez końca – i to jest element drobnej inteligencji samego urządzenia.
Są 2 diody sygnalizacyjne. Jedna (RX CMD) informuje o odebraniu komendy z przycisku lub z urządzenia zarządzającego automatyką, a druga informuje o zatrzymaniu podlewania z uwagi na informację z sensora deszczu („RAIN STOP”, pisałem o tym powyżej).
Interfejs MySensors
Urządzenie komunikuje się ze światem zewnętrznym po protokole TCP/IP na zaprogramowanym porcie (np. 5003). Interfejs komunikacyjny oparty jest o bibliotekę mySensors.
Na tę chwilę urządzenie „wystawia” interfejs dla 8 logicznych urządzeń (włącznik sekcji, długość podlewania każdej sekcji – x3 sekcje to 6 urządzeń), flaga „RAIN STOP” oraz natężenie prądu płynącego przez układ ACS711. Komunikacja jest oczywiście dwustronna.
Dzięki bardzo sprawnej i niezawodnej komunikacji cała logika podlewania rezyduje w kontrolerze systemu automatyki domowej. Sama część integracyjna jest bardzo ciekawa, ale też dość obszerna i odbiega od konstrukcji samego urządzenia.
Jako przykład poglądowy wrzucam poniżej screen-a jak nawadnianie wygląda z mojego kontrolera (domoticz). Dzięki temu, że wszystko jest w jednym miejscu można osiągnąć szybko ciekawe efekty (np. zapobieganie podlewania w przypadku zapowiadanych na dany dzień opadów, etc.).
Referencje:
1. Zasilanie LM2675: https://www.elektroda.pl/rtvforum/topic2311352.html
2. Sterownik nawodnienia użytkownika @tmf: https://www.elektroda.pl/rtvforum/topic3667909.html
3. MySensors: https://www.mysensors.org/
4. Problem analogRead() w bibliotece WiFi dla ESP8266 („analogRead forces WiFi to disconnect #1634”) https://github.com/esp8266/Arduino/issues/1634
5. Dokładna inwestygacja problemu analog read(), świetny materiał
https://github.com/krzychb/EspScopeA0/tree/master/Bravo#results
Chciałem pokazać Wam swój sterownik nawodnienia, który zbudowałem w oparciu o ESP8266 ma klonie płytki WemosD1. Jest on spięty z automatyką domową za pomocą biblioteki MySensors [ref. 3].
W skrócie chodzi o to, by wszystkie urządzenia były zarządzane z jednej aplikacji (bez znaczenia, czy jest to klimatyzacja, wentylacja, pompa ciepła, rolety, zasłony, światło, woda, kamery, …) i jej się trzymam. Sterownik miał być i jest zamiennikiem sterownika Hunter, który nie miał integracji z automatyką domową (moduł WiFi trzeba dokupić a potem pozostawała kwestia integracji z moim obecnym system i wymaganiami).
Sterownik nawodnienia może być zapakowany w dwa modele obudowy Kradex: Z101 i ZD1006 - gotowe nawiercenia płytek pod obydwie obudowy.
Ten sterownik to taki trochę bardziej ubogi klon sterownika użytkownika @tmf (https://www.elektroda.pl/rtvforum/topic3667909.html), niemniej jego „ubogość” w moim przypadku jego super zaletą.
Na końcu wpisu dorzuciłem linki referencyjne do wpisów. Sam z nich korzystałem, jeśli kogoś temat interesuje to zaoszczędzi czasu.
Funkcjonalności.
Funkcjonalności jakie urządzenie posiada:
1. Zasilanie całego urządzenia za pomocą 24V AC (z przetwornicą LM2675 do poziomu 3.3V DC, które jest niezbędne do modułu WiFi ESP8266)
2. Sterowanie 3 zaworami 24V AC (za pomocą optoMOS, co daje separację galwaniczną)
3. Wyłączanie podlewania przez sensor opadu deszczu (odcięcie jednego bieguna zasilania zaworów za pomocą kontaktronu w sensorze deszczu)
4. Wykrywanie czy faktycznie przez zawory płynie prąd (za pomocą ACS711)
5. Interfejs użytkownika w postaci (3 podświetlane przyciski i 2 diody sygnalizacyjne).
6. Interfejs MySensors służący do wymiany informacji i komend z kontrolerem za pomocą sieci WiFi.
Szczegóły rozwiązania i poszczególnych funkcji.
Zasilanie.
Moduł zasilania oparłem o układ LM2675M-3.3, który jest popularnie używany. Podpatrzyłem go na forum w kilku projektach.
Celem modułu było zamiana prądu przemiennego 24V AC na 3.3V DC, który jest potrzebny do zasilania ESP8266. Urządzenie jest zasilane 24V AC, ponieważ taki prąd znamionowy ma być doprowadzony do elektrozaworów.
Moduł wykonałem jako skrzyżowanie informacji z DS oraz archiwalnych wątków, w których wypowiadał się użytkownik @-RoMan- oraz rad, które udzielił mi użytkownik @ArturAVS.
Moduł zasilania ma dwa zabezpieczenia. Pierwsze zabezpieczenie to bezpiecznik polimerowy 1A na ścieżce, która idzie do mostka prostowniczego, chodzi o to, żeby do przetwornicy nie puścić za dużo prądu.
Drugie zabezpieczenie do bezpiecznik topnikowy (cylindryczny) 1A, który zabezpiecza elektrozawory. Nie spodziewam się używać więcej niż jednego zaworu na raz, więc to zabezpieczenie jest więcej niż OK (prąd cewki mojego elektrozaworu przy starcie nie powinien przekraczać 0.5A, a w trakcie pracy 0.2A). Ewentualne dodatkowe zabezpieczenie to programowe zabraniające uruchomienia więcej niż jednego zaworu.
Sterowanie 3 zaworami 24V AC
Sterowanie odbywa się za pomocą przekaźników SSR optoMOS (Panasonic AQY212). Wykorzystałem je, bo technologia, w której są wykonane gwarantuje separację galwaniczną pomiędzy obwodem płytki i obwodem zaworów.
Sterowanie następuje z trzech pinów układu ESP8266. Piny te służą też podświetlaniu przycisków, zatem stan wysoki pinu powoduje oświetlenie diody w przekaźniku (i zamknięcie go, w konsekwencji uruchomienie zaworu) i oświetlenie diody w przycisku na obudowie. Fajny efekt.
Wyłączanie podlewania przez sensor opadu deszczu
To funkcja, którą skopiowałem ze sterownika Hunter. Czujnik opadu deszczu zawiera kontaktron (NC), który rozłącza obwód gdy pada deszcz. Bez wnikania w szczegóły dlaczego, ale pozostawiłem tę funkcję taką jaka jest. Przez przewód z kontaktronem w czujniku zalania płynie jeden biegun 24V AC zasilania zaworów. Jeśli włączone są spryskiwacze i jednocześnie jest opad deszczu, to następuje rozłączenie obwodu przez kontaktron i spryskiwacze się wyłączają. Generalnie funkcja działa, ale dziś bym jej nie zrobił - moja integracja z pogodą załatwia sprawę (jeśli przewidywany jest opad, to podlewanie danego dnia się nie odbędzie).
Wykrywanie czy faktycznie przez zawory płynie prąd (za pomocą ACS711)
Zgodnie z tym co powyżej, może się zdarzyć sytuacja, że jest zlecenie pryskania wodą, a jednocześnie następuje rozłączenie obwodu elektrozaworów przez czujnik opadu deszczu. Tę sytuację wykrywam za pomocą czujnika Halla (układ ACS711). Jest on wpięty w obwód elektrozaworów i dokonuje on pomiaru natężenia prądu w tym obwodzie, analogowy pomiar z tego czujnika przekazywany jest do ESP8266, a ten go za pomocą pinu z przetwornikiem ADC (pin A0).
Za pomocą tej funkcji wykrywam sytuację „RAIN STOP”, czyli zatrzymania podlewania z uwagi na opad deszczu (logicznie: JEŚLI elektrozawór jest otwarty ORAZ nie płynie przez niego prąd TO sygnalizuj RAIN STOP).
BARDZO WAŻNA UWAGA: korzystając z bibliotek WiFi na ESP8266 musicie wiedzieć, że pin A0 (a dokładniej ADC) jest wykorzystywany przez ESP w procesie monitoringu jakości sygnału WiFi. Odczyt wartości natężenia prądu z ACS należy wykonywać w interwałach – ja korzystam z 50ms i jest OK. Odczyt non-stop, bez interwału spowoduje zgubienie sygnału (i moduł już nie odzyska połączenia). Dla wnikliwych odsyłam do referencji (ref 4., ref 5.)
Poniżej wklejam krótki kod dla Framework Arduino dla inspiracji.
Kod: C / C++
Interfejs użytkownika.
Interfejs realizowany jest przez 3 podświetlane przyciski i 2 diody sygnalizacyjne.
3 podświetlane przyciski służą do manualnego włączania/wyłączania zaworów, a fakt podświetlenia informuje że dany elektrozawór jest otwarty (czyli: dana sekcja jest nawadniania). Przyciskiem można wyłączyć sekcję jeśli akurat ona w danej chwili pracuje. Generalnie przyciski zostawiłem w razie, gdyby z jakiś przyczyn nie było połączenia z centralą automatyki (sam sterownik nie jest zbyt „inteligentny”, nie zna harmonogramów).
Z punktu widzenia urządzenia, przyciski są spięte z pinami wejściowymi ESP8266, każdy pin wejściowy jest podciągnięty do 3V3 rezystorem 10k (PULL UP). Naciśnięcie przycisku zwiera pin wejściowy z masą i ten sygnał jest interpretowany przez ESP.
Z uwagi na to, że przyciski połączone są z płytką za pomocą przewodów, istnieje ryzyko generowania przez nie zakłóceń (mogą one działać jak anteny). Z tego względu zastosowałem dodatkowo kondensatory 100nF na pinach wejściowych ESP8266.
Uruchomienie podlewania danej sekcji trwa tyle minut, ile zostało mu nakazane przez kontroler. Informacja o czasie podlewania sekcji przechowywana jest w EEPROM ESP8266, zatem ta informacja nie ginie przy braku połączenia z kontrolerem. Chodzi o zabezpieczenie przed sytuacją, że kontroler zleca podlewanie, połączenie z kontrolerem ginie, a woda leje się bez końca – i to jest element drobnej inteligencji samego urządzenia.
Są 2 diody sygnalizacyjne. Jedna (RX CMD) informuje o odebraniu komendy z przycisku lub z urządzenia zarządzającego automatyką, a druga informuje o zatrzymaniu podlewania z uwagi na informację z sensora deszczu („RAIN STOP”, pisałem o tym powyżej).
Interfejs MySensors
Urządzenie komunikuje się ze światem zewnętrznym po protokole TCP/IP na zaprogramowanym porcie (np. 5003). Interfejs komunikacyjny oparty jest o bibliotekę mySensors.
Na tę chwilę urządzenie „wystawia” interfejs dla 8 logicznych urządzeń (włącznik sekcji, długość podlewania każdej sekcji – x3 sekcje to 6 urządzeń), flaga „RAIN STOP” oraz natężenie prądu płynącego przez układ ACS711. Komunikacja jest oczywiście dwustronna.
Dzięki bardzo sprawnej i niezawodnej komunikacji cała logika podlewania rezyduje w kontrolerze systemu automatyki domowej. Sama część integracyjna jest bardzo ciekawa, ale też dość obszerna i odbiega od konstrukcji samego urządzenia.
Jako przykład poglądowy wrzucam poniżej screen-a jak nawadnianie wygląda z mojego kontrolera (domoticz). Dzięki temu, że wszystko jest w jednym miejscu można osiągnąć szybko ciekawe efekty (np. zapobieganie podlewania w przypadku zapowiadanych na dany dzień opadów, etc.).
Referencje:
1. Zasilanie LM2675: https://www.elektroda.pl/rtvforum/topic2311352.html
2. Sterownik nawodnienia użytkownika @tmf: https://www.elektroda.pl/rtvforum/topic3667909.html
3. MySensors: https://www.mysensors.org/
4. Problem analogRead() w bibliotece WiFi dla ESP8266 („analogRead forces WiFi to disconnect #1634”) https://github.com/esp8266/Arduino/issues/1634
5. Dokładna inwestygacja problemu analog read(), świetny materiał
https://github.com/krzychb/EspScopeA0/tree/master/Bravo#results
Fajne? Ranking DIY

