Witajcie moi drodzy.
Dzisiaj nieco krótszy temat. Przedstawię tu wymianę modułu WiFi opartego na RTL8710AF na moduł WB2S (BK7231T). Pacjentem będzie najprostszy przekaźnik sterowany przez WiFi. Motywacją wymiany jest brak możliwości samodzielnego programowania układu Realteka, co uniemożliwia mi też sparowanie go z moim Home Assistant. Z kolei dla WB2S (BK7231T) istnieje mój projekt otwartego firmware, który ciągle rozwijam. więc powinno być łatwo. To też kolejny powód by wymienić - potrzebuję więcej urządzeń z układami Beken by testować swój firmware, a akurat otrzymałem od jednego z forumowiczów kilka WB2S, więc są jak znalazł (kolega wymieniał je na TYWE2S). Przy okazji pokażę też pokrótce konfigurację OpenBK7231T oraz procedurę aktualizacji jego firmware przez WiFi (OTA).
Użyty przekaźnik NF-101
Użyty przekaźnik Tuya opisałem tutaj:
https://www.elektroda.pl/rtvforum/topic3815120.html
Moduł z Realtek już z niego wcześniej usunąłem.
Co nowego z OpenBK7231T?
OpenBK7231T/OpenBeken to mój otwarty wsad dla urządzeń IOT opartych na BK7231T i BK7231N. Ostatnimi czasy wspiera on również trzecią platformę, XR809.
OpenBeken pozwala sparować urządzenie z Home Assistant poprzez MQTT i uwolnić je od serwerów producenta.
OpenBeken wspiera już aktualizację wsadu przez sieć (OTA), podstawowe funkcjonalności takie jak przekaźniki, diody LED, PWM (też w trybie RGBCW z interfejsem jasności, kolorów i temperatury barw), oraz od niedawna niektóre peryferia, w tym podstawę TuyaMCU, interfejs I2C (TC74 i MCP23017) oraz pomiar energii elektrycznej, napięcia i prądu poprzez BL0942.
Szczegóły:
https://github.com/openshwprojects/OpenBK7231T_App
https://www.elektroda.pl/rtvforum/topic3866123.html
https://www.elektroda.pl/rtvforum/topic3850712.html
Tutorial HA:
https://www.elektroda.pl/rtvforum/topic3777098.html
Żarówka RGBCW w OpenBK:
https://www.elektroda.pl/rtvforum/topic3880540.html
Porównanie wyprowadzeń modułów
Przede wszystkim należy porównać wyprowadzenia pinów pomiędzy modułami, które chcemy zamienić.
Poniżej wyprowadzenia T102_V1.1:
WR2 ma podobny rozkład (też zrealizowany na RTL8710BN):
Dodatkowo, pinout zgodny jest z TYWE2S (który już opiera się na ESP):
Ale mnie interesuje WB2S - czy też pasuje?
Wygląda na to, że tak. Pora sprawdzić w praktyce.
Zamiana Realteka na WB2S
WB2S miałem już zaprogramowany moim OpenBK7231T poprzez BKwriter1.60 zgodnie z tematem:
https://www.elektroda.pl/rtvforum/topic3875654.html
Poniżej tematy o bliźniaczym BK7231N:
https://www.elektroda.pl/rtvforum/topic3880540.html
https://www.elektroda.pl/rtvforum/topic3874289.html
WB2S miałem w wersji "DIY" w postaci takiej "rzeźby":
(na powyższym zdjęciu układ to moduł WB2S, stabilizator napięcia TC1264-3.3V by móc zasilać WB2S, przycisk od zasilania - wymontowany z CRT telewizora - by móc wykonać "power cycle"/reboot po którym da sie programować i tylko połączenia. Zero rezystorów, itp)
Jeden konwerter USB UART służy do programowania poprzez BKwriter1.60. Drugi do nasłuchiwanie logów. Nie jest to mi już potrzebne w najnowszych wersjach OpenBeken, gdyż mamy już funkcjonalny panel logów z filtrowaniem wedle źródła logu (osobno zdarzenia dotyczące MQTT, osobno i2C, itp itd) i pauzą logowania, oraz mamy możliwość aktualizacji wsadu przez OTA (czyli programowanie przez WiFi).
Pora się pozbyć tych konwerterów USB-UART.
Uwolniony moduł przeczyściłem plecionką:
Przymiarka do płytki po usunięciu już modułu Realteka:
Lutujemy:
Gotowe:
Konfiguracja OpenBK7231T
Już ten proces opisywałem, wiec teraz krótko. Obk tworzy otwarty access point po pierwszym uruchomieniu. Aby do niego się podłączyć, polecam ustawić nasze IP na sztywno na jakieś w stylu 192.168.4.15, bo czasem DHCP nie chce jeszcze działać:
IP w trybie open access point to 192.168.4.1:
W config ustawiamy piny (gdzie jest przekaźnik, gdzie przycisk, gdzie dioda statusu WiFi):
Podobnie, w zakładce WiFi od Config, ustawiamy namiary na nasze WiFi:
Potem, jak się moduł zrestartuje, to się już pojawi w naszej sieci WiFi i otwarty access point zniknie:
Ale jeszcze trzeba skonfigurować MQTT od Home Assistant. Analogicznie, Config->MQTT:
Trzeba też dodać urządzenia do configuration.yaml z Home Assistant. Nie musimy pisać configa sami. Mamy w Config opcję "Generate HA Config", która tworzymy nam całość:
Wklejamy (uwaga - 'switch' występuje raz dla wielu przekaźników w konfiguracji HA):
Można zmienić nazwę urządzenia (wyświetlaną) na coś przyjaźniejszego:
W HA walidujemy i restartujemy:
Po restarcie nasz przekaźnik już jest w HA.
Stan Home Assistant śledzi stan przekaźnika (gdy zmienimy jego stan przyciskiem), oraz przekaźnik reaguje też oczywiście na przełączanie przez HA. Komunikacja działa w obie strony.
Aktualizacja firmware OpenBK7231T/OpenBK7231N przez WiFi
Korzystając z okazji, chciałbym pokazać jak zaktualizować moje oprogramowanie włącznika przez WiFi.
Są dwie opcje.
Poprzez Config->OTA - tu podajemy adres URL nowego pliku z firmware:
Możemy być na postawionym lokalnie serwerze HTTP.
Albo poprzez Config->App->OTA (przez wizualną nakładkę JS na API mojego firmware):
Tu przeciągamy plik nowego firmware, klikamy "Start" i po chwili urządzenie się zaktualizuje. OTA gotowe.
Jaki plik używany do aktualizacji? Inny plik niż do wgrywania przez UART. Do OTA służy plik RBL:
Sukces aktualizacji możemy sprawdzić w stopce OpenBK - tam wyświetlana jest data kompilacji firmware.
Tryb recovery OpenBK7231T/OpenBK7231N
Drugą rzeczą którą chciałem w tym temacie dodatkowo przedstawić jest tryb odzyskiwania urządzenia z OpenBK. Uruchamiamy go poprzez trzykrotne wykonanie cyklu włączenia i wyłączenia zasilania, mniej więcej z odstępami co 5 sekund. Jeśli po 3 razach urządzenie nie zanotuje wykonania pełnego uruchomienia (rozruch i około kilkanaście sekund pracy), to zamiast łączyć się z naszym WiFi, utworzy znów otwarty punkt dostępu, co pozwoli nam je ponownie skonfigurować. Dodatkowo uruchomi się w trybie bezpiecznym, w którym ignorowane są tekstowe komendy z pliku konfiguracyjnego (z systemu plików LittleFS).
Wiem, że taki mechanizm teoretycznie pozwala komuś o złych zamiarach np. ukraść nam żarówkę i ją sparować z jego WiFi, ale zdaniem większości użytkowników ten mechanizm jest niezbędny, tym bardziej w przypadku żarówek, które nie mają żadnych fizycznych przycisków, a dostęp do środka jest znacznie utrudniony.
Oczywiście, jeśli nic nie pozmieniamy w trybie AP (w trybie "bezpiecznym") a urządzenie dokona już pełnego rozruchu, to przy następnym uruchomieniu już wróci do zwykłego trybu pracy (czyli sytuacja, że przypadkowe odłączenia energii elektrycznej popsują nam na stałe urządzenie nie jest możliwa).
OTA przy pierwszym programowaniu
Trzecią dodatkową rzeczą o jakiej chciałem wspomnieć, jest możliwość wgrania wsadu na BK7231T całkowicie zdalnie. Mam tu na myśli też pierwsze wgranie, czyli konwersję z firmware Tuya na moje. Jest to sposób analogiczny do tuya-convert, ale nie dla ESP, tylko dla Beken.
Narzędzie nazywa się tuya-cloudcutter i opiszę je wkrótce:
https://github.com/tuya-cloudcutter/tuya-cloudcutter
Podsumowanie
Produkty IoT korzystają z różnych modułów z WiFi. Nie jest to tylko ESP8266, ale czasem też układy Realteka, czy tam Beken. Na szczęście moduły te mają z reguły zgodne ze sobą wyprowadzenia, co pozwala w razie potrzeby zamienić jeden na drugi bez większych problemów.
Normalnie pewnie użytkownik próbowałby wsadzić tutaj ESP, ale tak jak pisałem - zajmuję się tworzeniem wsadu na Beken, dlatego preferuję WB2S.
Czy WB2S można kupić? Z tym może być problem. Widziałem jego oferty sprzedaży po 1.8$, ale tylko po 1000 sztuk... tylko, że zasadniczo równie dobrze można tutaj użyć ESP i kroki wymiany są podobne (dodatkowo pewnie trzeba będzie dolutować rezystory), więc myślę, że każdy znajdzie coś dla siebie...
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
