Domoticz i ESP8266: Czujnik Wilgotności Gleby dla Twojego Inteligentnego Ogrodu
- Szczegóły
Witam wszystkich Majsterkowiczów!
Do napisania tego artykułu skłonił mnie temat konkursu “Elektryka prąd nie tyka” - jako, że jest to jedna z moich ulubionych sentencji - postanowiłem podzielić się z Wami moim projektem “inteligentnego domu”. Całość jest dość prosta do wykonania nawet przez początkujących elektroników hobbystów i jest nastawiona na tanie rozwiązania.
W tym roku postanowiłem, że projekt zostanie gruntownie przebudowany. Poprzednia konstrukcja oparta była o Arduino, a całością zarządzał Domoticz. Konstrukcja została oparta o chip ESP8266.
Aby nie tracić funkcjonalności w stosunku do pierwszej wersji ogrodnika, także i ta została wyposażona w możliwość integracji z Domoticzem. Z poziomu Domoticza mam zrobioną integrację z komunikatorem Telegram.
Jak widać niskim nakładem sił i środków można osiągnąć całkiem ciekawy efekt. Urządzenie właśnie przechodzi fazę testów.
Przeczytaj także: Poradnik: walka z wilgocią w mieszkaniu
Czym jest Inteligentny Dom?
Pojęcie “inteligentnego domu” jest bardzo szerokie i należałoby w tym miejscu określić co mój projekt ma do zaoferowania. Myślę, że prosta lista z wypisanymi funkcjami sprawdzi się tu najlepiej:
- Zdalne włączanie/wyłączanie urządzeń - manualne oraz programowalne
- Odczyt i rejestrowanie zużycia energii w domu
- Zdalny odczyt / rejestrowanie temperatury i wilgotności z różnych pomieszczeń w domu
- Możliwość tworzenia scenariuszy dla naszego domu - np. jeśli temperatura w danym pokoju spadnie poniżej 18 stopni to włącz urządzenie X itd.
- Centralny punkt wymiany danych w domu - aka dysk NAS - czyli możliwość udostępniania danych dla wszystkich urządzeń podłączonych do naszej sieci domowej + streaming muzyki, filmów itd.
- Sterowanie listwami RGB oświetlającymi pomieszczenia lub poszczególne punkty w domu
- Bezprzewodowe sygnalizowanie konieczności podlewania kwiatków
Oczywiście możliwości (i pomysłów) jest o wiele więcej, ale w związku z tym, że po pierwsze konkurs jest ograniczony czasowo a po drugie wpis byłby zdecydowanie za długi to ograniczyłem się do podstawowej funkcjonalności.
Jak to wszystko działa?
System składa się z kilku, dość prostych do wykonania, elementów (szczegółowy opis za chwilkę):
- Sterownik oparty o Arduino, a właściwie “gołe” arduino
- Przystawka do podłączenia cęgi Dietza do sterownika (część odpowiedzialna za odczyt zużycia energii)
- Raspberry Pi + Domoticz - mózg naszego inteligentnego domu
- Zdalne nody gromadzące dane typu temperatura, wilgotność itd, oparte o (bardzo!) tanie klony Arduino Pro Mini - koszt takiego Arduino to 7,5pln wraz z przesyłką z Chin (tak - nie ma się czego obawiać - paczki z Chin dochodzą :))
- Zestaw gniazdek sieciowych sterowanych bezprzewodowo używające pasmo 433MHz
Etap pierwszy - Sterownik Arduino
Dlaczego Arduino, a nie Raspberry Pi?
Raspberry Pi jest bardzo fajnym małym komputerkiem z systemem Linux, który dodatkowo posiada piny GPIO umożliwiające sterowanie wszelką elektroniką i początkowo był to mój plan aby użyć właśnie RPi jako sterownik. Jednak po testach okazało się, że użycie w tym celu Arduino jest znacznie lepszym rozwiązaniem. Wynikało to m.in. z faktu, że używam w tym projekcie taniego odbiornika 433MHz, którego jakość, delikatnie mówiąc, jest bardzo kiepska. Odbiornik ten generuje baaaardzo wiele szumów, które trafiały bezpośrednio do RPi znacząco obciążając i tak już obładowany procesor. Jednym z pomysłów na poradzenie sobie z szumami był filtr dolnoprzepustowy lub użycie mikropocka jako filtr i wysyłanie już czystego sygnału do RPi. Skoro już miałem używać mikroprocesora to postanowiłem ułatwić sobie życie (znacząco!) budując sterownik oparty o Arduino i wykorzystując jego zalety.
Przeczytaj także: Wakacje w Bodrum
Sterownik - budowa
Do budowy sterownika potrzebne będą następujące elementy:
- płytka uniwersalna lub płytka wytrawiona specjalnie na potrzeby projektu - ja w związku z brakiem narzędzi i odczynników zdecydowałem się na użycie płytki uniwersalnej. Tutaj mała uwaga - przy wyborze płytki sprawdźcie jakość wykonania samej płytki - ja użyłem taniej chińskiej płytki i w niektórych miejscach punkty lutownicze po prostu odpadały
- mikroprocesor ATMega328(p) wraz z gniazdem DIN26 (podstawka)
- kryształ (oscylator) 16MHz
- 2x kondensator ceramiczny 22pF
- 2x przycisk chwilowy
- 1x przełącznik
- 1x gniazdo 26pin - ja użyłem stare gniazdo od taśmy do dysków twardych - można np. wylutować ze starej płyty głównej
- 2x konektor żeński - jeden 8pin i drugi 6pin - ja użyłem konektora z taśmy ATA (dyski twarde, cd) i pociąłem na odpowiednie kawałki
- nadajniki odbiornik 433MHz
- nadajniko-odbiornik nrf24l01+
- dużo kabelków - np. odzyskanych z kabla sieciowego - skrętki - UTP 5
- opcjonalnie:
- gniazdo DC Jack lub inne gniazdo zasilania - ja użyłem gniazda z 2 śrubami
- wyświetlacz LCD od Nokii 3310, 5110
- regulator napięcia na 3.3V - można użyć regulatora wylutowanego ze starego napędu CD - AMS1117 lub diody Zenera 3v3… lub… 2 diod połączonych szeregowo (przy założeniu, że napięcie wejściowe wynosi 5V - z np. USB)
uff - myślę, że to wszystko :)
Schemat połączeniowy
Tutaj mała uwaga - musimy podjąć decyzję w jaki sposób zasilimy nasz układ. Ja wybrałem opcję zasilania układu sterownika bezpośrednio z portu USB Raspberry Pi. Jest to opcja bardzo wygodna jako iż sterownik jest i tak połączony z RPi poprzez port szeregowy. Nie polecam jednak zasilania sterownika z pinów GPIO - zdecydowanie lepiej i bezpieczniej jest użyć portu USB. Kolejna sprawa to napięcie na którym działa sam sterownik. Jako, że Raspberry Pi na pinach GPIO używa poziomu napięć 3.3V oraz nadajniko-odbiornik nrf24l01+ również pracuje na 3.3V to musimy obniżyć napięcie wejściowe 5V do odpowiedniego poziomu. Dokonać tego możemy na kilka sposobów. Ja na początku wybrałem regulator AMS1117 wylutowany ze starego napędu CD jednak po testach pod obciążeniem okazało się, że regulator został najprawdopodobniej uszkodzony podczas demontażu/montażu i nie dostarczał wystarczająco stablinego napięcia więc musiałem na szybko wymyślić inny sposób na zasilenie układu. Jako, że nie posiadałem na stanie żadnej diody Zenera na 3.3V to postanowiłem zastosować 2 diody połączone szeregowo na linii +5V co obniżyło napięcie do ok 3.5V i dodatkowo zabezpieczyło układ przed odwrotną polaryzacją. Należy zwrócić uwagę na wartość prądu jaką nasza dioda wytrzyma - w moim przypadku były to popularne diody 1n4148 które wytrzymują 200mA stałego obciążenia czyli zdecydowanie ponad to co potrzebujemy do tego projektu.
Wszystkie biblioteki należy pobrać i wgrać do katalogu Libraries w naszej instalacji Arduino IDE - domyślnie c:\Program Files\Arduino\Libraries a następnie zrestartować aplikację Arduino IDE.
Po restarcie możecie przeprowadzić próbę kompilacji oprogramowania sterownika. Jeśli wszystko zakończyło się poprawnie to następnym krokiem będzie wgranie aplikacji do ATmegi. Można tego dokonać na wiele sposobów.
Przeczytaj także: Poradnik pomiaru wilgotności
Etap drugi - Przystawka do monitorowania zużycia energii
Do wykonania przystawki potrzebne są:
- 2x rezystor 10kOhm
- 1x rezystor 18Ohm dla zasilania 3.3V lub 35Ohm dla zasilania 5V
- 1x kondensator 10uF
- kawałek płytki uniwersalnej
- opcjonalnie:
- przełącznik do wyboru rezystora obciążającego - 18 lub 35 Ohm
- gniazdo do podłączenia cęgi Dietza
- piny do kabelków użytych do podłączenia przystawki do sterownika
Oprogramowanie do obsługi przystawki zostało “wbudowane” w oprogramowanie sterownika Arduino.
Czujniki temperatury i wilgotności
Przy systemie nawadniania ciężko było by bez wykrywania deszczu, czy wilgotności gleby. Niedawno opisywałem sposób na zdany odbiór danych z DS18B20 przez Domoticza z wykorzystaniem ESP8266. Teraz czas na wykorzystanie modułu DHT22.
Chcesz w łatwy sposób wiedzieć jaką masz wilgotność oraz temperaturę w swoim mieszkaniu? Tym razem opiszę jak odczytać temperaturę, wilgotność oraz ciśnienie z wykorzystaniem modułu BME280, wszystko oczywiście sterowanie przez panel Domoticza z wykorzystaniem ESP8266. Jak zwykle szukam najprostszych rozwiązań.
Tym razem prezentujemy prosty sposób na monitorowanie temperatury po sieci LAN. Wykorzystujemy standardowo Arduino Uno oraz Ethernet Shield.
Arduino każdy zna, tak samo jak czujnik DTH11 oraz karty SD. Tym razem napotkałem się z potrzebą zapisywania temperatury oraz wilgotności w danym pomieszczeniu.
AHT10 to precyzyjny cyfrowy czujnik temperatury i wilgotności, który zapewnia nam dokładne odczyty parametrów środowiskowych z komunikacją I2C. Czujniki temperatury jak i ciśnienia już opisywałem między innymi BMP180.
Tym razem wpadł mi w łapki czujnik AHT10 dzięki któremu poznamy temperaturę oraz wilgotność w otoczeniu. SCD30 jest to moduł czujnika dla aplikacji HVAC i sprawdzania jakości powietrza w pomieszczeniach. Został wykonany w technologi CMOSens® dzięki zastosowaniu podczerwieni umożliwia bardzo dokładny pomiar dwutlenku węgla po konkurencyjnej cenie.
Etap trzeci - zdalne czujniki
Uważam, że jest to bardzo dobra cena i często koszt samych części użytych do budowy “gołego” arduino może być większy. Oprócz ProMini potrzebne będą jeszcze następujące elementy:
- płytka uniwersalna
- pojemnik na baterie - 3-4 baterie AA lub bateria 9V lub inna
- nadajnik 433MHz lub nadajniko-odbiornik nrf24l01+ - możemy przygotować dwie różne wersje o czym za chwilę
- czujnik temperatury i/lub wilgotności - ja akurat w użyłem czujnika temperatury Dallas DS18B20 ale można np. użyć DHT11 lub DHT22 itd.
- elementy potrzebne do podłączenia naszego czujnika - w przypadku czujnika Dallas DS18B20 będzie to rezystor 4.7kOhm
- piny żeńskie do podłączenia Arduino ProMini - dzięki temu będziemy mogli wyciągnąć arduino z płytki
- kabelki
- obudowa - można użyć gotowej obudowy kupionej w sklepie elektronicznym, użyć coś z odzysku lub wykonać obudowę samodzielnie
Jak wspomniałem wcześniej - możemy wykonać dwie wersje zdalnych czujników. W zaprezentowanej tutaj wersji użyłem nadajnika 433MHz, który dość dobrze sprawdza się jako nadajnik wysyłający dane periodycznie - czyli co np. 60 sekund. Minusem tego rozwiązania jest komunikacja jednokierunkowa czyli nasz zdalnych czujnik musi być skonfigurowany do wysyłania sygnału co jakiś czas. Dodatkowo nadajnik tego typu nie oczekuje potwierdzenia odebrania danych przez odbiornik a co za tym idzie nie wie czy transmisja się powiodła czy nie.
Rozwiązaniem tego problemu jest zastosowanie nadajniko-odbiorników nrf24l01+. Cena takiego elementu jest bardzo podobna do zestawu 433MHz a dzięki ich zastosowaniu zyskujemy komunikację dwukierunkowa - czyli możemy wysyłać komendy do naszych czujników, odbierać dane, itd. Jeśli temat będzie cieszył się powodzeniem na majsterkowo.pl to postaram się przygotować drugą część artykułu z taką właśnie wersją zdalnego czujnika.
Ważnym aspektem podczas projektowania zdalnego czujnika jest jego zużycie prądu. W związku z tym, że jest on zasilany bateryjnie to chcemy osiągnąć jak najniższy pobór prądu, żeby baterie starczyły na jak najdłużej. W przygotowanej przeze mnie wersji czujnika zużycie prądu wynosi około 0.2mA (tak - 200uA) w stanie uśpienia i ok 10-15mA w czasie pracy - czyli przez ok sekundę.
Etap czwarty - zdalnie sterowane gniazdka sieciowe
Tutaj sprawa jest prosta - większość tanich zestawów dostępnych na rynku używa tego samego protokołu. Wykorzystując ten fakt ludzie zgromadzeni wokół Arduino przygotowali ogólnodostępne biblioteki dzięki którym możemy sterować tymi gniazdkami za pomocą nadajnika 433MHz - na to musicie zwrócić uwagę podczas zakupu - aby pasmo było właśnie 433MHz.
Poniżej przedstawiam zdjęcia mojego zestawu - 5 gniazdek + pilot
Etap piąty - Raspberry Pi
Ta część jest najbardziej rozbudowana i szczegółowy opis zająłby za dużo miejsca w i tak już przydługawym artykule, dlatego postaram się skupić tylko na najważniejszych aspektach przygotowania Raspberry do współpracy ze sterownikiem Arduino oraz podstawową konfigurację Domoticz - mózgu naszego inteligentnego domu oraz usług NAS.
Raspberry Pi -> Sterownik Arduino
Jedną z ważnych decyzji, które musiałem podjąć podczas projektowania całego systemu była kwestia komunikacji RPi z Arduino. Po przejrzeniu kilku możliwych rozwiązań zdecydowałem się użyć portu szeregowego UART.
Użycie portu szeregowego daje nam kilka ciekawych możliwości - np. możemy dzięki niemu aktualizować firmware (oprogramowanie) naszego sterownika bez rozłączania całości, podłączania zewnętrznych programatorów lub wyciągania ATm...
tags: #domoticz #esp8266 #czujnik #wilgotności #gleby

