Dziś trochę na temat prostego i popularnego przekaźnika SONOFF z wbudowanym WiFi na układzie ESP8266.

Pisałem jakiś czas temu o bezprzewodowych przekaźnikach na ESp8266 do których kod był pisany w LUA na platformie NodeMCU. Wtedy trzeba było zbudować swój przekaźnik z elementów elektronicznych i jeszcze napisać swój niewielki skrypt w LUA. Dziś jest łatwiej bo za takie same pieniądze mamy gotowy układ i soft EasyESP, który znacznie ułatwia sterowanie i zarządzanie zdalnym urządzeniem. EasyESP zawiera w sobie już szereg sterowników urządzeń, łatwość konfiguracji i graficzny interfejs. To wszystko sprawiło, że EasyESP jest bardzo popularny. Otwarty kod zdeterminował mnie aby zintegrować Easy tak aby bez problemu wysyłał dane do nettemp i aby z nettemp można było sterować przekaźnikiem.

SONOFF

Ja swoje układy SONOFF zamówiłem w tym sklepie, przyszły po koło 2 tygodniach. W pudełku znajduje się układ z osłonami na złącza przykręcane i śrubki do nich.

 

Zasilanie

Układ SONOFF jest zasilany bezpośrednio z 230V

 

Co w środku

Układ składa się z zasilania, przekaźnika, guzika, diody informaującej o włączeniu przekaźnika oraz modułu WiFi ESP8266

Programowanie układu

Bardzo dobrym pomysłem projektantów było zostawienie pinów do programowania układu ESP8266 co bardzo mocno ułatwia zmianę oprogramowania. Do tego będzie potrzebny układ USB UART FTDI 232RL

Do programowania można użyć gotowych paczek EASYESP pod Nettemp, lub samemu skompilować i wgrać je z arduino ale nie współpracują one z Nettemp.

Pliki Easyesp dla arduino: https://github.com/letscontrolit/ESPEasy/tree/master

Ustawienia dla easyesp w Arduino

Gotowe paczki dla nettemp i instrukcja znajduje się na stronie wiki prowadzonej przez użytkowników nettemp.

Dodatkowe GPIO

SONOFF GPIO PINOUT

SONOFF schemat z forum nettemp.pl

Szkoda, że nie wszystkie wolne GPIO układu ESP zostały wyprowadzone na płytkę. Ja od początku miałem zamiar podłączyć wyświetlacz OLED ale niestety do tego brakuje GPIO. Jeśli chce zachować wszystkie dotychczasowe funkcjonalności tj. guzik i dioda muszę dorobić sobie samemu wyjścia pod GPIO5 (SCL) pin 24 i GPIO4 (SDA) pin 16. Czyli musiałem dolutować przewody do pierwszego pinu od góry na prawej ścianie układu, a dla GPIO4 do ostatniego pinu od lewej strony na dolnej ścianie. Bez cieniutkiego grotu się nie obejdzie ja zakupiłem na allegrosie u użytkownika hotair grot 0.2mm 900M T-I. Następnie te przewody wyprowadziłem na goldpiny przylutowane do wolnych nie używanych otworów. Takim sposobem mam wyprowadzoną szynę I2C. Jak ktoś się przyjrzał rozpisce wolnych GPIO to zauważy, że GPIO 14 jest wolne. Teraz mam możliwość podłączenia np. czujnika temperatury DS18b20 pod GPIO 14 lub podłączania innych czujników pod szynę I2C. Po prawidłowym przylutowaniu przewodów do procesora powinno pojawić się na nich 3.3V jeśli nie ma trzeba lutować dalej :) Po poprawnym połączeniu nowych przewodów lekko zalałem je klejem „kropelką” tak aby zaraz mi nie odpadły.

EasyESP

Poniżej screeny z konfiguracji EasyESP. Dodatkowa opcją jaka została włączona jest opcja RULES do której dopisałem kod, który odpowiada za zmianę stanu przekaźnika i diody po naciśnięciu przycisku. Poniżej widać na screenach, że po podłączeniu jakiegoś urządzenia na I2C można zeskanować szynę i sprawdzić czy wykrywane są jakieś adresy.

EasyESP EasyESP EasyESP EasyESP EasyESP

OLED

Wyświetlacz jaki podłączyłem do SONOFF to OLED SSD1306 na I2C. Wywierciłem i przeszlifowałem dodatkowo w obudowie otwory aby przeszły przewody pod wyświetlacz.

Filmik z działania

Na filmie widać, że cały czas aktualny stan przekaźnika jest aktualizowany w nettemp. I nettemp jest w stanie sterować przekaźnikiem.

Mam nadzieje, że wszystko jest w miarę jasne i że z powodzeniem zrealizujesz swój projekt. Jak by co proszę o komentarze.