Zapraszam na prezentację przeróbki kontrolera ESP8266 Relay V2.3 LC Technology tak, aby działał lokalnie z oprogramowaniem Tasmota. Będzie to dość nietypowa przeróbka, bo z niezrozumiałych przyczyn producent postanowił zaprząc do sterowania przekaźnikiem dodatkowy mikrokontroler. Czy ESP8266 jest w stanie wysterować przekaźnik bez dodatkowego mikrokontrolera? Sprawdźmy!
Omawiane tu urządzenie zostało nadesłane przez czytelnika, jest to dokładnie ten sam egzemplarz, co w temacie o Tasmocie:
https://www.elektroda.pl/rtvforum/topic3760371.html#21922314
Czytelnik miał problem ze zmianą firmware. Po podłączeniu UART ESP nie odpowiadał na komunikację. Sprzęt został do mnie wysłany, bym obadał sytuację. Szybko rzuciła mi się w oczy tajemnicza para zworek.
Pod modułem z ESP8266 jest dodatkowy mikrokontroler, który komunikuje się z ESP przez UART. Tylko po co? Na stronie Blakadder można znaleźć szczegóły protokołu, wydaje się on dość prosty:
https://templates.blakadder.com/LC-ESP8266.html
Tylko po co tak komplikować? Przecież Tasmota może sterować bezpośrednio pinami GPIO od ESP. Z tego powodu zdecydowałem się na inną przeróbkę niż u pana Blakadder, ale o tym za chwilę.
Najpierw - kopia oryginalnego wsadu. Po zdjęciu zworek, które łączą linie UART od ESP z MCU, od razu esptool poprawnie rusza.
https://github.com/openshwprojects/FlashDumps/commit/ce13ed9575049e19c7a8c4a6f36283318770bfd4
Krótko przeanalizowałem zgrany wsad. Oto kilka odkrytych ze środka informacji:
- wsad ma 2 MB, ale to zdublowany 1:1 obraz 1 MB (zgodne sumy MD5)
- w środku jest fabryczne oprogramowanie komend AT od Ai-Thinker / Espressif (Non-OS SDK 3.0 z 2020 r.)
- domyślna prędkość UART to 115200 baud (bootloader v1.7 nadaje na 74880 baud)
- moduł stawia sieć SoftAP "AI-THINKER_XXXXXX" (IP 192.168.4.1) oraz obsługuje SmartConfig (ESPTOUCH/AIRKISS)
- fabrycznie ESP8266 robi tylko za mostek Wi-Fi do UART, przesyłając ramki hex do drugiego MCU
Mój pomysł polegał na tym, by usunąć mikrokontroler i podpiąć piny ESP do przekaźnika, przycisku i LED, tak jak w temacie
ESP8266 i Tasmota - sterowanie przekaźnikiem WiFi krok po kroku. Mikrokontroler można wylutować gorącym powietrzem, ale warto nałożyć na piny topnik.
Na tyle znam swój hot air, że nie zabezpieczałem zacisków śrubowych ani pobliskich elementów taśmą. Odpowiednia dysza, dobra moc i element schodzi szybko, płytka nie puchnie a inne elementy się nie palą.
Potem trzeba zrobić zworki. ESP8266-01 ma tylko złącze 2x4, tam jest zasilanie, masa, UART oraz kilka GPIO, w tym GPIO0 do programowania. Z tymi pinami trzeba ostrożnie, nie można np. zewrzeć GPIO0 do masy w momencie bootowania, bo moduł wejdzie w tryb flashowania zamiast normalnie wystartować.
Tak wyszło podłączenie przekaźnika. Cała płytka wymaga zasilania 12V DC – to napięcie zasila bezpośrednio cewkę przekaźnika Songle, a na pokładzie znajduje się stabilizator 7805 oraz osobny LDO 3.3V na potrzeby ESP8266. Sam ESP z logiką 3.3V nie może sterować cewką bezpośrednio, dlatego sygnał sterujący z pinu ESP doprowadziłem pojedynczą żyłą wyciągniętą ze skrętki Ethernet od spodu płytki do rezystora bazy R5 (4.7 kΩ, oznaczenie 472). Rezystor ogranicza prąd pinu ESP i wprowadza tranzystor Q1 w stan nasycenia, łącząc cewkę przekaźnika do masy. Równolegle do cewki znajduje się dioda D3 wygaszająca szpilki napięciowe przy jej wyłączaniu.
W podobny sposób uwolniłem przycisk i LED. Przycisk zwiera do masy, w sam raz można go użyć do GPIO0, tak jak się robi w urządzeniach IoT, by jego wciśnięcie przy podaniu zasilania włączało tryb programowania.
Na koniec zabezpieczyłem bardziej wrażliwe punkty soldermaską utwardzalną za pomocą lampy UV:
Finalny test - sterowanie przekaźnikiem działa, zarówno z panelu Tasmoty, jak i przyciskiem. Tasmota widzi też zmiany stanu wywołane przyciskiem:
Ustawienia:
Podsumowując, to była przeróbka modułu przekaźnika tak, aby mógł współpracować z otwartym oprogramowaniem Tasmota. Można by to zrobić bez lutowania i kombinować z wysyłaniem pakietów UART z poziomu oprogramowania tak, aby mikrokontroler poprawnie je interpretował i wykonywał rozkazane operacje, ale uznałem, że to bez sensu, jak i tak mam sprzęt i chęci do lutowania. Potencjalnie na skutek tej operacji straciliśmy jeden z dwóch przycisków, bo go nie podłączyłem do GPIO, ale nie widzę i tak jego zastosowania i nie uważam tego za stratę, tym bardziej, że... na stronie Blakadder skrypt Tasmoty nawet nie wspiera odczytu stanu przekaźnika z MCU, więc i tak byłby bezużyteczny - po co nam przycisk, który nie da feedbacku do interfejsu Home Assistant? Z tego powodu przeróbkę uważam za udaną, choć i tak dalej nie wiem po co zasadniczo ten MCU tam jest - może to jakaś pozostałość po wersjach 2 i 4 kanałowych, gdzie już zaczyna brakować całkiem pinów w przypadku użycia ESP8266-01? Ale znowu - nikt nie powiedział, że trzeba użyć ESP8266-01, można użyć TYWE3S i podobnych modułów, gdzie więcej GPIO jest wyprowadzone. Ciekawe
Fajne? Ranking DIY Pomogłem? Kup mi kawę.