Ściemniacz oświetlenia sterowany po WiFi – Wireless Home Light Dimmer

Ściemniacz oświetlenia sterowany po WiFi – Wireless Home Light Dimmer

Witajcie,

Co prawda projekt ukazał się w Elektronice Praktycznej w ubiegłym roku, ale uznałem, że warto go tutaj opublikować – bo nie wszyscy mają dostęp do gazety, lub jej po prostu nie czytają :)

Zasada działania tego typu regulatorów polega na fazowej regulacji napięcia. Najogólniej pisząc – im więcej energii dostanie odbiornik – w tym przypadku żarówka – tym jaśniej będzie świecić. Zasadę ilustruje rys.1 Głównym elementem regulacyjnym jest triak, którego moment załączenia jest regulowany przez mikroprocesor.

 

Rys.1 Zasada regulacji fazowej oparta jest o sterowanie czasem otwarcia triaka w punkcie x. Im szybciej to nastąpi po przejściu napięcia sieci zasilającej przez zero, tym więcej energii dostanie odbiornik.

 

 

Rys.2 Schemat układu do bezprzewodowej regulacji natężenia oświetlenia  

 

Schemat ideowy układu regulatora przedstawiono na rys.2 Jak widać układ ściemniacza podzielono na cztery bloki, z których każdy omówię z osobna. A są to: zasilacz z detektorem zera sieci, mikrokontroler, elementy wykonawcze mocy oraz moduł komunikacji WiFi.

Zasilanie układu wykonano w oparciu o tradycyjny małogabarytowy transformator sieciowy. Zrobiono to z trzech powodów:

  • Pierwszy to galwaniczne odizolowanie części niskonapięciowej układu od napięcia sieci. Ma to szczególne znaczenie, ponieważ płytka PCB została zaprojektowana pod elementy smd. Aby po zmontowaniu układ działał prawidłowo należy zaprogramować mikroprocesor – do tego przewidziano pady na płytce do wlutowania przewodów do programatora. Jest to czynność jednorazowa. Gdyby nie było izolacji galwanicznej – to takie programowanie mogło grozić porażeniem prądem elektrycznym. Szczegóły programowania zostaną omówione w dalszej części.
  • Drugi to wymagana wydajność prądowa dla modułu WiFi. Podczas pracy chwilowy pobór prądu przez moduł może wynieść nawet 250mA, więc trudno byłoby uzyskać taką wydajność stosując prostsze rozwiązanie z zasilaczem beztransformatorowym opartym o kondensator ograniczający prąd.
  • Trzecim powodem jest chęć wykonania układu detekcji zera bez zbędnego tracenia energii elektrycznej. Najprościej byłoby zastosować transoptor z rezystorem ograniczającym jego prąd – ale taki układ ma jedną wielką wadę. Otóż energia wytracana w rezystorze emanuje w postaci ciepła – element bardzo niepożądany. Dodatkowo powoduje niepotrzebne zużywanie energii elektrycznej, – co w skali roku daje już kilka kilowatogodzin. Zakładając pracę takiego regulatora przez kilka lat – nie do przyjęcia, szczególnie w czasach, gdzie modny jest synonim ECO. Dlatego też zastosowano układ przejścia przez zero w dość nietypowym rozwiązaniu. Za mostkiem prostowniczym zastosowano diodę prostowniczą w roli separatora. Tranzystor T1 pracuje w roli klucza – przez większą część czasu jest zatkany, otwiera się tylko na chwilę przejścia napięcia sieci przez zero.

 

Pozostałe elementy za diodą D1 tworzą typową aplikację stabilizatora napięcia 3,3V. Na uwagę zasługuje tylko kondensator C3, który powinien mieć pojemność nie mniejszą niż 470µF.

Sercem układu sterowania jest popularny mikrokontroler firmy Atmel Atmega8. Jego głównym zadaniem jest odbieranie danych z modułu WiFi, wykrywanie momentu przejścia sieci zasilającej przez zero i odpowiednie sterowanie triakami. Jest to jego podstawowa aplikacja która chyba nie potrzebuje omawiania. Komunikacja z modułem WiFi oparta jest o transmisję UART pracującą z prędkością 115200 kb/s. Do wykrywania detekcji zera wykorzystano sprzętowe przerwanie zewnętrzne INT0. W obsłudze tego przerwania jest zerowany licznik Timera2, który to z kolei odpowiada za odliczanie odcinków 50µs. To zaś pozwala na regulację czasu włączenia triaka w 200 krokach co odpowiada regulacji od 0% do 100% mocy na wyjściu. Program mikrokontrolera został napisany w całości w języku C. Sprowadza się jak wcześniej wspomniano do wykrycia zera sieci zasilającej i wysterowaniu triaka w odpowiedniej chwili – zależnej od żądanej jasności świecenia żarówki. Te czynności wykonuje w obsłudze przerwań. W pętli głównej zaś mikroprocesor cały czas nasłuchuje czy nadleciały dane z aplikacji sterującej po UART’cie. Jeśli nadleciały, to zapisuje je do bufora odbiorczego i poddaje analizie. Ponieważ dane przesyłane są w postaci znaków ASCII jako komenda i dane przedzielone separatorem, więc zastosowano mechanizm tokenów i parsowania danych. Cały mechanizm oparty jest o tzn. callbacki. Może brzmi to groźnie, ale to tylko pozory. Aby się nie rozpisywać, odsyłam czytelnika do książki „Mikrokontrolery AVR, Język C, Podstawy programowania” autorstwa Mirosława Kardasia. Jest tam bardzo przystępnie i dokładnie wyjaśniony cały mechanizm z przykładami. Moim zdaniem jest najlepszą jak do tej pory pozycją na rynku dotyczącą wprowadzenia w świat programowania mikrokontrolerów AVR w języku C.

 

Oto wybrane fragmenty programu:

 

void analizuj_dane_rs232 (char *buf);

register_uart_str_rx_event_callback(analizuj_dane_rs232 );// rejestracja własnej funkcji do analizowania danych odebranych przez UART

 

while(1) // pętla gówna programu

{

UART_RX_STR_EVENT(uart_buf);

}// while

 

 

void analizuj_dane_rs232 (char *buf)

{

char *wsk;

wsk=strtok(buf,”?”);

                if(!strcmp(wsk,”out1″))

                               {

                               wsk=strtok(NULL,”?”);      // w zmiennej wsk jest teraz wartość zadana out1

                               pwm1=atoi(wsk);

                               }

                if(!strcmp(wsk,”out2″))

                               {

                               wsk=strtok(NULL,”?”);      // w zmiennej wsk jest teraz wartość zadana out2

                               pwm2=atoi(wsk);

                               }

                if(!strcmp(wsk,”AT+RST”)) {            // reset programowy do aktualizacji oprogramowania

                               cli();              // disable interrupts

                               wdt_enable( 0 );                  // set  watchdog

                               while(1);           // wait for RESET

                }

 

}

 

Jak widać w pętli głównej program oczekuje na dane przesyłane z aplikacji, które mają postać: out1?25 lub out2?55 – co po analizie oznacza – kanał OUT1 wyjście na 25% mocy, kanał OUT2 wyjście na 55% mocy. Separatorem jest znak zapytania? Spostrzegawczy czytelnicy zapewne zauważyli również komendę odpowiedzialną za uruchomienie watchdoga i reset mikroprocesora –  AT+RST. Otóż umożliwia ona zdalny reset a co za tym idzie – zdalną zmianę oprogramowania mikroprocesora Atmega8! I tu ujawnia się kolejny atut urządzenia – można je zaktualizować zdalnie – bez konieczności demontażu, podłączania programatora i wszystkimi uciążliwościami z tym związanymi. Pomocny w tej sytuacji  będzie program MKBootloader, Jest to aplikacja umożliwiająca komunikację z mikrokontrolerm w celu aktualizacji wsadu za pomocą trzech różnych interfejsów: RS232, Bluetooth oraz WiFi. Po szczegóły odsyłam na stronę firmy ATNEL.

Triaki TR1 i TR2 stanowią elementy wykonawcze. Również w ich sterowaniu zastosowano izolację galwaniczną w postaci optotriaków MOC3021. Jest to typowa aplikacja i nie wymaga szczególnego omawiania.

Troszkę więcej miejsca poświęcę na omówienie modułu WiFi jaki zastosowano w projekcie. Na rynku obecnie jest dostępnych tak wiele modułów WiFi, że ciężko jest na coś się zdecydować. Do większości dostępna jest dokumentacja w języku angielskim lub chińskim J i ktoś nieobeznany w temacie ma niezły orzech do zgryzienia – co wybrać? Miło było by również mieć możliwość wsparcia technicznego ze strony producenta/dystrybutora w razie większych problem z uruchomieniem. Mając te aspekty na względzie zdecydowałem się na zastosowanie modułu ATNEL-WIFI232-T dystrybuowanego przez firmę ATNEL ze Szczecina (rys.3)

 Podstawowe informacje techniczne modułu ATNEL WIFI232-T:

  • wyprowadzenia w rastrze 2 mm ( 10 pinów )
  • zasilanie +3,3 V
  • wyprowadzenia GPIO/PWM
  • wyprowadzenia RX i TX do komunikacji UART (RS232)
  • funkcje alternatywne dla niektórych pinów
  • możliwość sterowania/konfiguracji za pomocą komend AT
  • gniazdo dla zewnętrznej anteny 2,4 GHz
  • częstotliwość pracy 2,4 GHz
  • obsługa standardów WIFI b/g/n
  • wsparcie dla funkcji WPS
  • obsługa zabezpieczeń WEP, WPA, WPA2 oraz szyfrowania AES
  • pin zarządzania poborem prądu
  • małe wymiary 22 mm x 13,5 mm x 6 mm
  • certyfikat FCC/CE

Rys.3 Moduł ATNEL-WIFI-232 ma wymiary 22/13,5/6mm

 

Jest to ultranowoczesny moduł WiFi małej mocy, przeznaczony do pracy w systemach wbudowanych i nie tylko. Podstawową zaletą modułu jest prostota komunikacji, którą udało się uzyskać dzięki innowacyjnemu pomysłowi na wykorzystanie tzw. trybu transparentnego. W odróżnieniu od szeregu konkurencyjnych produktów komunikację wykorzystującą protokołu TCP/UDP ale także http i inne można sprowadzić do jednego – prostej komunikacji RS232. Kolejne cechy stawiające moduł w pierwszym rzędzie wraz z najlepszymi to sprzętowe wsparcie nie tylko dla takich trybów pracy jak STA czy AP lecz także dla trybu mieszanego AP+STA. W każdej konfiguracji moduł umożliwia dostęp do podstawowych funkcji konfiguracyjnych za pomocą wbudowanej strony www i to strony w języku polskim. Dodatkowo moduł zaopatrzony jest w autorski firmware, który umożliwia np. pobieranie dokładnego czasu z NTP z dowolnej strefy czasowej, wybudzanie zewnętrznych urządzeń, np. komputerów PC za pomocą opcji WOL (Wake On LAN) czy  sprawdzanie adresu IP  zdalnego klienta, który ostatnio połączył się z modułem (tylko w trybie TCP). Dodatkowo firma ATNEL udostępniła gratis dla wygody i komfortu pracy z modułem specjalistyczne narzędzie konfiguracyjne w postaci programu “ATB WIFI Config” dzięki któremu nie musimy męczyć się z konfiguracją modułu za pomocą komend AT. Każdy, kto choć raz miał okazję używać komend AT przy konfiguracji np. modułów GSM – wie, jakie jest to uciążliwe. Zostanie to opisane w dalszej części artykułu. Dodatkowo, każdy klient może liczyć na wsparcie techniczne ze strony firmy i to praktycznie 24h/dobę. Wystarczy tylko wejść na forum firmowe http://forum.atnel.pl/portal.php aby przekonać się, że tak jest.

Moduł ATNEL WiFi ma wyprowadzone gniazdo do podłączenia zewnętrznej anteny. Jednak zamiast niej należy tak jak na rys.4. przylutować 3cm kawałek kynaru lub innego cienkiego drucika w izolacji. Z taką anteną moduł pracuj poprawnie, a siła odbieranego sygnału jest niewiele niższa niż przy zastosowaniu zewnętrznej anteny dedykowanej.

Rys.4 Prawidłowy przylutowany 3cm odcinek kynaru przy gnieździe antenowym

 

Do regulatora została zaprojektowana płytka drukowana pod elementy smd w rozmiarze 0805 w kształcie okręgu o średnicy 55mm. Ma to na celu jego łatwe umieszczenie w puszce przełącznika światła lub w puszce na ścianie. 

Montaż ściemniacza należy rozpocząć od przylutowania wszystkich elementów smd, zaczynając od mikroprocesora. Na koniec należy przylutować złącza ARK, podstawkę pod moduł WiFi i transformator sieciowy. Przed włożeniem modułu WiFi w podstawkę należy włączyć urządzenie i sprawdzić na pinach 1 i 2 czy jest prawidłowa wartość napięcia zasilającego sekcję niskonapięciową – 3,3V. Jeśli tak, to odłączamy zasilanie sieciowe, do specjalnie wyprowadzonych padów na płytce lutujemy przewody do programatora i ponownie uruchamiamy zasilanie. Rozmieszczenie elementów na PCB pokazano na rys. 5.

 

Rys.5 Rozmieszczenie elementów na płytce PCB o średnicy 55mm

Teraz należy zaprogramować mikroprocesor. Na początku musimy ustawić FuseBity. Osobiście korzystam z programu MKAVRCALCULATOR – prawdziwego kombajnu, który zdecydowanie ułatwia programowanie bitów konfiguracyjnych “Fuse bit” jak i zabezpieczających “Lock bit” w mikrokontrolerach AVR. Ma on też wiele innych ciekawych funkcji, których nie znajdziemy  gdzie indziej – zainteresowanych odsyłam na stronę firmy ATNEL. Tak więc musimy zaprogramować taktowanie naszej Atmegi z kwarca zewnętrznego 11.0592 MHz, ustawić rozmiar sekcji bootloadera na 256 słów [BOOTSZ=10] i zmienić adres wektora resetu aby program startował z sekcji bootloadera. Odpowiednie ustawienia pokazano na rys.6

Rys.6 Prawidłowe ustawienie Fusebitów mikrokontrolera Atmega8

 

 

Jeśli Fusebity już zaprogramowaliśmy, należy wgrać dołączony w materiałach dodatkowych program dimmer.hex. Tutaj mała uwaga – oprogramowanie współpracuje TYLKO z modułami dystrybuowanymi przez firmę Atnel – te same moduły innych firm mogą nie działać prawidłowo, a nawet ulec uszkodzeniu. Ma to związek, jak już było wspomniane na początku ze zmienionym firmwarem modułów.

Po prawidłowym zaprogramowaniu mikrokontrolera wyłączamy zasilanie, wkładamy w podstawkę moduł WiFi i ponownie włączamy zasilanie. Następnym krokiem jest konfiguracja modułu WiFi. Zrobimy to za pomocą naszego telefonu. Aplikację ATB WiFi Config należy pobrać ze sklepu Googla i zainstalować. Należy się również upewnić, że jesteśmy w zasięgu naszej domowej sieci WiFi oraz znać podstawowe dane dotyczące ustawień routera. Ponieważ moduły WiFi fabrycznie ustawione są w tryb AP, więc w pierwszej kolejności łączymy się naszym telefonem z modułem jak to pokazano na rys.7 Następnie uruchamiamy program ATBWIFIConfig, w którym ukaże się nam ekran główny jak na rys.8. Pierwsza czynność to odnalezienie naszego modułu WiFi – wciskamy klawisz CONNECT. Wyszukujemy i łączymy się z naszym modułem, a nstępnie odczytujemy jego konfigurację wciskając klawisz READ. Powinniśmy uzyskać odczyt taki jak na rys.9. Jak widać moduł pracuje w trybie AP. Zmieniamy jego tryb pracy na AP/STA, klikamy na klawisz WRITE i resetujemy moduł klawiszem RESTART WIFI. Po restarcie powinniśmy zobaczyć tryb pracy już jako AP/STA. Jeśli tak jest, to następnie klikamy na symbol radaru i wyszukujemy naszą domową
sieć WiFi. Po jej wybraniu moduł automatycznie rozpozna typ

Rys.7                        

 

Rys.8              

 

Rys.9                         

 

 

Rys.10

 

 

zabezpieczeń – nam pozostaje wpisać hasło dostępu do sieci – rys.10 zielona obwódka. Ponownie zapisujemy klawiszem  WRITE i resetujemy moduł klawiszem RESTART WIFI. Wyłączamy program. Następnie przełączamy się w telefonie na połączenie WiFi z naszą siecią domową i ponownie uruchamiamy program. Jeśli wszystko zrobiliśmy prawidłowo, to moduł powinien dostać adres IP z puli adresów przyznawanych przez nasz router (rys.10 czerwona obwódka). Ostatnią czynnością jest ustawienie w zakładce NET Protocol params typu połączeń na UDP SERVER. Oczywiście jest to opis podstawowej konfiguracji po której moduł zacznie działać w  naszym urządzeniu. Po bardziej zaawansowane funkcje i ustawienia odsyłam czytelników do również darmowego programu ATBWiFiConfig w wersji na PC – do pobrania ze strony firmy ATNEL.

Ostatni raz naciskamy WRITE i RESTART. Moduł po restarcie jest gotowy do pracy. Jeśli ktokolwiek będzie miał problemy z konfiguracją, to zapraszam na stronę firmy ATNEL, gdzie znajdziemy odnośniki do video-poradników związanych z tym zagadnieniem.

Aplikacja na telefon – WHLD.apk (Wireless Home Light Dimmer rys.11)  została napisana w środowisku Basic4Android. Szczerze przyznam, że nie spodziewałem się, że okaże się to tak proste. Bardzo pomocne okazały się video-poradniki opublikowane przez firmę ATNEL i dostępne w serwisie youtube. Zachęcam wszystkich sceptyków do oglądnięcia, bo okazuje się, że nie taki diabeł straszny jak go malują. Wystarczy napisać, że do wysyłania danych po UDP używamy tylko dwóch poleceń:

 

Packet.Initialize(data, ipadress, 8899)

            UDPSocket1.Send(Packet)

 

Zmienna data to nasze dane do wysłania, ipadress to adres urządzenia docelowego, 8899 to numer portu. Dodam od siebie, że działający szkielet aplikacji powstał w przeciągu dosłownie kilku godzin – a nigdy wcześniej nie programowałem w B4A!

 

Rys.11 Okno główne aplikacji dimmera

 

Po uruchomieniu aplikacji naciskamy symbol kluczy w lewym dolnym rogu, a następnie symbol lupy aby wyszukać nasz moduł WiFi. Jest to operacja jednorazowa, ponieważ aplikacja zapamiętuje wprowadzone dane. Na ekranie głównym do dyspozycji mamy dwa suwaki odpowiedzialne za regulację oświetlenia odpowiednio dla kanału1 i kanału2  w zakresie 0-100%. Każdorazowo po uruchomieniu aplikacja odczytuje aktualną pozycję suwaków, więc nawet po wyłączeniu i ponownym włączeniu telefonu na ekranie pojawi nam się ostatnia ustawiona pozycja. Pod każdym suwakiem widoczne są również klawisze ON i OFF. Służą one do pełnego włączenia/wyłączenia oświetlenia na odpowiednich kanałach – ale odbywa się to płynnie, co sprawia wrażenie elegancji i podnosi walory użytkowe całego urządzenia. Aplikacja jest do pobrania ze sklepu Googla.

Na koniec chciałbym napisać, że w ramach doskonalenia pisania aplikacji na system Android powstaje kolejna wersja do obsługi dimmera. Na dzień oddania artykułu do druku dostępne jest sterowanie tylko jednym modułem. W założeniach ma być dodana obsługa wielu modułów tak, aby w jednej aplikacji można było sterować oświetleniem w całym domu. Zachęcam jednak czytelników do własnych eksperymentów z programowaniem. Na stronie producenta B4A można pobrać wersję 30 dniową bez ograniczeń i samodzielnie spróbować napisać aplikację – zapewniam, że jest to dość proste!

Jednocześnie chciałbym serdecznie podziękować panu Mirosławowi Kardasiowi za wsparcie techniczne oraz poświęcony czas podczas pisania aplikacji dimmerka.

 

A tutaj jest krótki filmik z działania: https://www.youtube.com/watch?v=bA9Yx6iRPUM

 

Grzegorz Burzyński, sp5ein@gmail.com

Wykaz elementów:

Rezystory (smd, obudowa 0805):

R1, R4: 10kΩ

R2: 1kΩ

R3: 4,7kΩ

R5, R7: 220Ω

R6, R8: 560Ω

Kondensatory:

C1, C2, C6: 100nF, smd 0805

C5, C8: 22pF, smd 0805

C7: 10nF, smd 0805

C3: 470µF/10V przewlekany, niski profil

C4: 220µF/6,3V przewlekany, niski profil

Półprzewodniki:

U1: LM1117 3,3V (obudowa SOT223)

U2: Atmega8 (obudowa TQFP32)

B1: mostek prostowniczy smd

D1: dioda prostownicza (obudowa SMA)

T1: BC847

OK1, OK2: MOC3021 (smd)

TR1, TR2: Z0103MN (obudowa SOT223)

Inne:

Transformator sieciowy zalewany TEZ1.5/D/6V

Q1: rezonator kwarcowy 11.0592 MHz, niski profil

Mod_WiFi: Moduł ATNEL-WIFI-232

X1, X2, X3: złącza ARK2

 

Pliki załączone do artykułu:

Ocena: 4.71/5 (głosów: 14)

Podobne posty

3 komentarzy do “Ściemniacz oświetlenia sterowany po WiFi – Wireless Home Light Dimmer

  • Bardzo fajny projekt od siebie dodam :
    – projekt można wykonać jeszcze taniej używając ESP8266 za 17zł mamy (“atmege” i “moduł “wifi” razem), co za tym idzie możemy jeszcze zmniejszyć projekt,
    – zamiast transformatora można zastosować “lżejszą” przetwornice HiLink lub inną,

    Jestem ciekaw jak jest z zasięgiem jak układ włoży się do puszki w ścianie ; )

    Odpowiedz
  • Dzięki za komentarz :)
    Jeśli zamiast transformatora zastosujemy przetwornicę, to stracimy informację o detekcji “zera” sieci :)
    Co do ESP8266 – układ fajny i tani, ale do modułu ATNEL WiFi jest super aplikacja do konfiguracji, czego brakuje w ESP.
    A zasięg z modułem jest w całym mieszkaniu w blokowisku, gdzie sieci WiFi jest ponad 20 :) – przetestowane!

    Odpowiedz
  • Już dawno widziałem ten projekt. Świetny jest! Do ESP też już są takie apki konfiguracji, ale fajniejsze jest to, że można go wykorzystywać jako główny UC, nie trzeba dopinać atmegi, co zmniejsza koszty i to sporo. Cena ATBwifi jest straszna niestety. Gdyby zastosować to w kilku gniazdkach przebitka zrobi się bardzo duża.
    Projekt opublikowany rok temu, tworzony pewnie z półtora roku temu, przez ten czas się wiele zmieniło w kwestii modułów z WiFi.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?