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
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.
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.