Sterowanie oświetleniem przez wifi – prototyp (druga faza)

Kilka miesięcy temu prezentowałem efekty moich prób kontrolowania oświetlenia przez internet (link). Teraz nadszedł czas na zbudowanie urządzenia, które będzie sterowało prawdziwym oświetleniem wykorzystywanym w codziennym życiu. Założenia nie uległy zmianie, układ ma umożliwiać sterowanie 4 lampkami sufitowymi z możliwością płynnej regulacji każdej z osobna. Oprócz tego układ ma pobierać jak najmniej energii, oraz być niezauważalny podczas zwykłego użytkowania, czyli włącznik naścienny ma działać bez większej zmiany.

Aby zrealizować te cele postanowiłem wykorzystać jako sterownik układ ESP8266 (nodeMCU v3), zapewnia on małe zużycie energii oraz łączność przez Wi-Fi. Dużym plusem jest także wystarczająca ilość portów we/wy, dzięki czemu nie musiałem stosować dodatkowych układów peryferyjnych rozszerzających ilość portów.

Schemat sterownika

Do sterowania żarówkami LED wykorzystałem układ scalony ULN2003 (7x darlington – mniejsza wersja popularnego ULN2803). Wykorzystałem tylko 4 kanały, ale rozwiązanie wydaje się być prostsze, a układy leżały mi i się kurzyły.

Projektując sterownik wiedziałem, że nie będzie to ostateczna wersja części elektronicznej, więc postanowiłem wyprowadzić na zewnątrz obudowy możliwie jak najwięcej portów, tak abym mógł podczas testów dopinać zewnętrzne układy.

Poniżej przedstawiam schemat sterownika:

Jak można zaobserwować jest on najprostszy jak się tylko dało, składa się z trzech bloków: zasilania, kontrolera, oraz sterownika żarówek LED. Złącze X1 służy do podłączenia zasilania, do X2 podłączamy po jednej z elektrod z żarówek (drugą elektrodę żarówki podłączmy do napięcia +12V). Złącza X3 to pozostałe piny do późniejszego wykorzystania, natomiast X4 to wyprowadzenie napięcia zasilania +3,3V Wyprowadzenia JP1-JP8 służą do podłączenia diod LED na przednim panelu urządzenia.

Obwód drukowany

Ponieważ zdecydowałem się na zastosowanie obudowy Z100 montowanej na szynie DIN to kształt mojego obwodu drukowanego był sztywno określony.

Przy tak prostym układzie nie było problemów z umieszczeniem wszelkiego na na jednej warstwie, jednak nie obyło się bez dwóch mostków.

Ponieważ podczas projektowania układu zapomniałem o wyprowadzeniu napięcia 3,3V to musiałem jakoś dorobić te wyjście. Na szczęście zostało jeszcze trochę wolnego miejsca przy krawędzie płytki, więc wyfrezowałem kawałek laminatu tworząc oddziele pole miedzi i wywierciłem otwory na dodatkowe złącza. Resztę podłączyłem przewodem i problem rozwiązany. Powyżej prezentowany schemat oraz obwód drukowany zawierają już naniesioną poprawkę.

Poniżej kilka zdjęć z budowy układu.

Panel przedni

Do celów kontrolnych stworzyłem prosty panel przedni zbudowany z kilku diod LED, rezystorów, oraz przycisku.

Przycisk S1 służy do załączania kontrolek tylko w tedy kiedy chcemy, przez większość czasu nikt nie patrzy na urządzenie, więc po co ma się świecić,

Całość została zmontowana w „pająku”.

A na froncie panelu nakleiłem etykietkę opisującą funkcję poszczególnych diod.

Obsługa włącznika naściennego

Podczas początkowych testów opisywanych wcześniej, zmianę stanu włącznika wykrywałem poprzez obecność lub brak fazy podawanej przez obwód włącznika. Jednak tym razem zdecydowałem się na małą modyfikację instalacji elektrycznej i wydzieliłem włącznik tak, że układ może go widzieć jako zwykły przełącznik bistabilny.

Przy pierwszym podejściu postanowiłem spróbować podłączyć go do kontrolera tak samo jak zwykły przycisk, wraz z rezystorem podciągającym wewnątrz mikrokontrolera.

Jednak takie rozwiązanie było bardzo podatne na zakłócenia, kiedy ktoś w domu załączał urządzenie zasilane z tej samej fazy co moje oświetlenie to w pokoju miałem dyskotekę. Przy tej długości linii nie można się posługiwać się niskimi napięciami, są zbyt zbliżone do zwykłych zakłóceń. Tak więc po kilku dniach budzenia się w środku nocy z zapalonym światłem bo ktoś szedł do łazienki, postanowiłem wymyślić coś lepszego.

Obwód włącznika zasila diodę transoptora, a oświetlany fototranzystor zwiera pin mikrokontrolera do masy. Taki układ jest dużo mniej podatny na zakłócenia.

I taki układ okazał się dopiero odporny na zakłócenia, choć kilka razy światło się samo zgasiło lub zapaliło, ale jest to tak rzadki przypadek, że ciężko jest coś zaobserwować.

Dodatkowe czujniki

Jako, że mam już pracujący całodobowo układ to dlaczego nie dać mu więcej do roboty. Dodatkowo do sterownika dopiąłem trzy czujniki temperatury DS18B20, które wykonują pomiary temperatur na zewnątrz z północy i południa, oraz na strychu gdzie znajduje się sam sterownik.

Zasilanie

Źródłem energii dla sterownika jest mały zasilacz montowany na szynę DIN o mocy 15W. W przyszłości planuję wszystko zamknąć w ładnej obudowie małej rozdzielni elektrycznej, ale to dopiero po wykonaniu ostatecznej elektroniki, na chwilę obecną jest mały pajączek.

Zabezpieczenie nad prądowe B6 dałem dodatkowo bardziej jako wyłącznik napięcia sieciowego podczas wykonywanych prac.

Oprogramowanie

Cały program dla ESP8266 napisałem w Arduino IDE z dogranymi potrzebnymi wtyczkami. Tak jak wcześniej do komunikacji ze światem zastosowałem protokół MQTT. Sam program wymaga jeszcze trochę pracy ze względu na zdarzające się przycięcia i opóźnienia w działaniu oświetlenia, na chwilę obecną program niestety nie wykorzystuje przerwań i to może być powodem problemów. Kiedy utknie z pomiarem temperatur to nie może równocześnie obsługiwać światła.

Oprogramowanie realizuje takie funkcje jak:

  • łączność z Wi-Fi
  • programowanie przez OTA (over-the-air update)
  • odbieranie wiadomości przez MQTT
  • płynne sterowanie oświetleniem
  • pomiar temperatur
  • wysyłanie wyników pomiarów przez MQTT

Zdalna kontrola

Obecność sterownika nie miała by sensu bez odpowiedniego panelu sterowania. W tym celu wykorzystałem platformę NODE-RED, która zarządza także innymi urządzeniami w domu, zapisuje wyniki pomiarów, oraz zdarzenia awaryjne w bazie MySQL.

Jak na razie rozwiązanie sprawdza się bardzo dobrze, jedynym minusem jest pobieranie dużej ilości pamięci RAM, co dosyć mocno obciąża serwer.

Szerzej panel opiszę być może w osobnym artykule.

Sytuacje awaryjne

Pisząc oprogramowanie wybrałem takie rozwiązania dzięki którym działanie oświetlenia jest odporne na awarię sieci Wi-Fi. Dzięki temu nawet podczas awarii internetu cały sterownik może spełniać swoją podstawową funkcję, czyli załączanie i wyłączanie oświetlenia.

Dodatkowo układ zgłasza się co 10s prostym komunikatem przez protokół MQTT, kiedy panel sterowniczy nie otrzyma żadnego zgłoszenia przez 30s, to wysyła do użytkownika wiadomość mailową o problemie.

Coś więcej niż tylko świecenie

Jako, że miałem już możliwość dowolnego sterowania oświetleniem, to postanowiłem dodać do tego jakąś dobrą funkcjonalność. Postanowiłem załączać powoli światło równocześnie z budzikiem, a wyłączenie światła w tym przypadku może odbyć się tylko z naściennego włącznika światła. A więc rano dzwoni budzik i robi się coraz jaśniej, co tylko ułatwia mi poranne wstawanie. Aż byłem zaskoczony skutecznością tego rozwiązania.

Dokumentacja

Cały projekt dostępny jest na moim githubie pod adresem https://github.com/PawelJanik/WiFi-Controller-main-light . W miarę regularnie robię commity, więc można na bieżąco śledzić moją pracę nad rozwojem projektu.

Podsumowanie

Na chwilę obecną urządzenie spełnia wszystkie początkowe założenia. Pozostawię jeszcze układ na miesiąc lub dwa aby dalej mógł się testować, lub aż wymyślę jeszcze coś dodatkowego. Prawdziwą próbą dla pracującej elektroniki będzie jednak lato, ponieważ sterownik znajduje się na strychu gdzie latem jest bardzo gorąco i już wcześniej spaliły mi się tam dwa zasilacze stosowane w oryginalnej wersji oświetlenia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.