Przejdź do głównej zawartości

Sterownik IoT

Parę lat temu podczas remontu u rodziców postanowiłem usprawnić im parę rzeczy w mieszkaniu. Stworzyłem sterownik, który integrował ze sobą sterowanie oświetleniem i ogrzewaniem. Pomimo prostej obsługi nie przewidziałem tego, że moi rodzice będą bali się tego używać, myśleli że coś zepsują... niestety są na bakier z elektroniką.


Tak powstała druga wersja, która jest dla nich absolutnie bezobsługowa w kwestii ustawień czy sterowania ogrzewaniem.

Podstawowe cechy

  • komunikacja Wifi
  • integracja z Firebase
  • zdalny dostęp z dowolnego miejsca na świecie
  • Odtwarzanie komunikatów głosowych
  • sterowanie za pomocą asystenta Google
  • pilot radiowy 2,4GHz
  • sterowanie oświetleniem
  • sterowanie ogrzewaniem
  • dwupunktowy pomiar temperatury
  • detekcja otwartego okna
  • automatyczne aktualizowanie czasu z serwera NTP
  • łatwe dokładanie bezprzewodowych czujników, np. zalania
  • duży i czytelny wyświetlacz

Tym razem uwzględniłem obawy rodziców i w każdej chwili mam dostęp do wszystkich ustawień. Dla niecierpliwych filmik (polecam włączyć dźwięk) 😉

Główny moduł

Całe sterowanie oparłem o układ ESP12. Jest to układ o bardzo dużych zasobach z wbudowanym wifi. Niestety ma on bardzo mało wyprowadzeń, dlatego aby obsłużyć wszystkie dodatkowe elementy takie jak:
  • LCD ST7565
  • DS18B20
  • Enkoder
  • Trzy przyciski
  • Kilka wyjść
  • Moduł MP3 (JQ8400-FL)
  • RFM73

Wykorzystałem 16 bitowy ekspander na SPI MCP23S17. Wymagało to dostosowania kilku bibliotek np. LCD czy enkodera, aby zamiast pinów ESP używały MCP23S17. To było największym wyzwaniem dla mnie, aby zrealizować obsługę trzech układów SPI, gdzie dwa z nich były częściowo sterowane poprzez pierwszy czyli MCP23S17. Dodatkowo przydzielanie czasu na poszczególny element trzeba było odpowiednio rozdzielić, aby obsługa enkodera nie gubiła kroków.


Zdalny dostęp

Sterownik działa jako klient w sieci wifi, nie chciałem przekierowywać portów na routerze, ani stawiać dodatkowego VPNa. Wykorzystałam tutaj RealTime Database od Google czyli Firebase. Jest darmowe, względnie proste w obsłudze wprost z układu ESP, a dostęp do Firebase posiada każdy kto ma konto w Google.

Wykorzystanie tego mechanizmu daje nam bardzo duże możliwości. Możemy hostować tam własną stronę, która będzie naszym frontendem, możemy wykorzystać “cloud functions”, które są praktycznie zasobami node.js, jest to bardzo fajne, bo możemy mieć własny serwer node.js w chmurze. Mając cloud functions i bazę danych, możemy z łatwością podpiąć pod to inne usługi, np. asystenta Google, który pozwoli sterować urządzeniem naturalną mową a nie nagranymi wcześniej próbkami komend. Pod nasz system możemy podpiąć również IFTTT (if this then that) i jeszcze bardziej zautomatyzować obsługę urządzenia.

ESP co kilka sekund odczytuje bazę danych z Firebase i sprawdza czy stan jakiegoś elementu uległ zmianie, jeśli tak to znaczy, że zdalnie zmieniliśmy parametry pracy. W drugą stronę, jeśli to sterownik lokalnie zmieni jakąś wartość to od razu aktualizuje ją w Firebase.

Asystent Google i komunikaty głosowe

Rodzice swoje lata już mają i pamięć nie ta, dlatego dołożyłem system komunikatów głosowych. Pilot, który będzie zawsze pod ręką tuż obok pilota od TV, będzie (czeka na obudowę) jasno opisany i wystarczy nacisnąć jeden przycisk a sterownik powie jaka jest temperatura w mieszkaniu, jaka jest na zewnątrz, czy ogrzewanie aktualnie pracuje albo ile razy dzisiaj było włączane. Pomyślałem, że fajnym dodatkiem będzie wgranie również instrukcji obsługi, gdzie sterownik powie do czego służą poszczególne przyciski.

Ze sterownikiem można rozmawiać w sposób naturalny z wykorzystaniem asystenta Google, nie musimy być nawet w pobliżu sterownika, mówimy do telefonu czy komputera znajdując się w dowolnym miejscu na świecie. Sam Google asystent nie steruje bezpośrednio urządzeniem, z wykorzystaniem mechanizmu Dialogflow, który bazuje na machine learning zmienia parametry pracy w Firebase, a urządzenie docelowe pobiera je i wykonuje. Zależności między komponentami pokazałem na poniższej grafice.

Moduł radiowy 2,4GHz

W sterowniku znajduje się RFM73, jest to niewielki układ radiowy wykorzystany tutaj jako pilot, we wcześniejszej wersji tradycyjny pilot na podczerwień kiepsko się sprawdzał, nie zawsze było się w polu widzenia odbiornika.

Dodatkowe czujniki

Posiadając na pokładzie układ RFM73 możemy dowolnie rozbudować system o dodatkowe czujniki, np. czujnik zalania w łazience, czujnik oświetlenia czy dodatkowe czujniki temperatury. Dokładanie dodatkowych czujników nie wiąże się z przeprogramowaniem głównego sterownika, ponieważ wszystkie reguły obsługi możemy umieścić w Firebase, a sterownik je pobierze.



Komentarze

  1. Prosiłbym o kontakt w sprawie sterownika do rolet potrzebowałbym pomocy

    OdpowiedzUsuń
  2. W sumie to jest taka możliwość żeby wykonać taki zestaw do sterowania rolet odpłatnie jak ty to widzisz?

    OdpowiedzUsuń
    Odpowiedzi
    1. Proszę napisz na mojego maila dkradke@gmail.com czego oczekiwałbyś od takiego sterownika, jaką funkcjonalność chciałbyś mieć, a na pewno coś doradzę i zaproponuje:) Jakiś czas temu wykonałem dla siebie taki sterownik rolet, przymierzam się do zrobienia drugiej wersji. https://forbot.pl/forum/topic/13115-sterownik-rolet-do-automatyki-domowej/

      Usuń
  3. Sterownik wygląda obłędnie :)
    Jest szansa na opublikowanie kodu?
    Szczególnie interesująca wydaje się dla mnie obsługa Firebase i Asystenta Google.
    Świetny blog!

    OdpowiedzUsuń

Prześlij komentarz

Popularne posty z tego bloga

Smart Domofon

W tym artykule chciałem pokazać możliwość przerobienia zwykłego i praktycznie dowolnego domofonu na "smart" . Nie ma znaczenia jaki producent oraz czy jest on cyfrowy czy może analogowy. Odpowiednie przerobienie to kwestia analizy płytki PCB posiadanej słuchawki. Jedne słuchawki są bardzo wygodne do przeróbek, a niektóre wymagają więcej pracy.

Tablica Manipulacyjna

W przeróżnych pudełkach zawsze walają się u mnie jakieś przełączniki, pokrętła i innego rodzaju elementy. Córka (3 lata) od zawsze lubiła pstrykać wszelkimi guzikami. Wychodząc z mieszkania to ona zawsze przywołuje windę i wybiera piętro.

Kontroler czujników obecności - EspHome

Prezentowany moduł powstał z potrzeby obsługi wszystkich przewodowych czujników ruchu oraz czujników otwarcia. Sterownik jest zbudowany w oparciu o ESP32 LoLin. Dodatkowo obsługuje on domofon oraz dzwonek do drzwi. Całość jest oprogramowans z wykorzystaniem EspHome z pełną integracją z Home Assistant.