Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya

p.kaczmarek2 09 Jul 2021 14:01 1671 3
  • Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Witajcie moi drodzy.
    Opiszę tutaj krok po kroku proces wymiany modułu WiFi z urządzenia smart. Wymiany tej dokonujemy najczęściej wtedy, gdy chcemy usunąć ze środka moduł WiFi którego nie jesteśmy w stanie programować i zastąpić go czymś popularniejszym, np. modułem opartym na ESP. Pozwala to nam docelowo użyć wybranego firmware open source (np. Tasmoty) i poszerzyć w ten sposób możliwości naszego urządzenia, jak również uniezależnić je od serwerów producenta.
    Opisany tutaj proces nazywa się potocznie "ESP8266 brain transplant" i pod tym hasłem znajdziecie w sieci informacje na jego temat.
    UWAGA: Do procesu przyda się hot air i może to niektórych odstraszyć, choć ja sam uważam, że to jest dość proste, mi się udało za pierwszym razem a dużego doświadczenia z gorącym powietrzem nie mam.

    Plan działania
    Przygoda zaczyna się gdy kupimy urządzenie Smart które w środku niestety nie ma ESP, ma np. WB2S czy tam XR3, a mimo to chcemy wgrać mu Tasmotę lub podobny wsad ESP. Wtedy musimy wykonać następujące kroki:
    1. porównać pinout modułu ze środka i sprawdzić czy dany ESP (np. ESP12F) może go zastąpić
    2. jeśli pinout się zgadza, wylutować moduł ze środka
    3. zaprogramować moduł ESP (luzem, ew. po wlutowaniu)
    4. wlutować moduł ESP na miejsce modułu
    5. dokonać ewentualnych korekt układu (dolutowanie rezystorów niezbędnych dla ESP, ew. przeniesienie funkcji na inne piny)
    6. konfiguracja ESP z nowym firmware (tutaj zrobię to na przykładzie Tasmoty)
    UWAGA: Opis procesu postaram się zrobić tak, by był uniwersalny, więc nawet jeśli macie inne urządzenie niż ja w temacie to informacje zawarte tu powinny być pomocne.

    Zakup czujnika otwarcia drzwi
    Czujnik znalazłem w internecie pod hasłem "Smart Wifi Door Window Sensor Burglar Security Alarm For Alexa Google Tuya" za niecałe 10$, czyli 40 zł:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    W momencie zakupu nie wiedziałem, że siedzi tam XR809/XR3 a nie ESP.
    Czujnikowi temu poświęciłem osobny temat:
    Czujnik otwarcia drzwi/okna WiFi - test, wnętrze, integracja z resztą urządzeń
    Udało mi się również dla niego zrobić własny firmware kompatybilny z Home Assistant, ale ten temat opisuje proces wymiany modułu, a nie tworzenia firmware, więc założymy, że tego firmware nie mamy (bądź z jakiegoś powodu chcemy konkretnie wgrać mu ESP):
    Własny otwarty firmware dla XR809 kompatybilny z Tasmota HTTP/Home Assistant
    Po otwarciu tego czujnika zorientowałem się, że w środku jest XR3:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Informacje o XR3:
    https://developer.tuya.com/en/docs/iot/xr3-datasheet?id=K98s9168qi49g
    Wyprowadzenia XR3 przypominają mi ESP12F. Jest kandydat do podmianki.

    XR3 vs ESP12F
    Mamy już urządzenie smart z modułem XR3/XR809 i mamy jego potencjalny zamiennik, ESP12F. Warto jeszcze porównać dokładnie ich wyprowadzenia, czy role pinów się zgadzają.
    Porównanie:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    W XR3 mamy dodatkowy pin GND, który zewrze nam GPIO9 do masy. W XR3 mamy NC (niepodłączony, not connect) pin, w ESP12F jest tam RST. Lokalizacja TXD/RXD jest nieco inna ale to nie problem. Dodatkowo ESP12F pewnie będzie potrzebować dolutowania rezystorów których XR nie wymagał:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Będziemy bootować z SPI Flash, więc już widać gdzie trzeba będzie dolutować rezystory dla tego ESP12F...
    Jeśli zamienimy nieznany moduł w urządzeniu Smart na ESP i ten ESP się nie włącza to nie warto się zrażać, tylko trzeba sprawdzić w nocie katalogowej czy wszystkie wymagania są spełnione.

    Zakup ESP12F
    ESP12F jest bardzo popularny w Internecie i można go kupić w wielu sklepach. Swojego ESP12F kupowałem chyba tutaj:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Z tego co wiem to w obrocie są i oryginalne takie moduły, i ich podróbki, ale na ten moment nie wiem czy mają jakąś znaczącą różnicę do tego zastosowania z tematu.

    Wylut modułu XR3
    Najpierw musimy wylutować niepożądany moduł WiFi z urządzenia. W tym przypadku będzie to XR3/XR809, chociaż często też zdarzają się WB3S, WB2S i inne (TYWE2S, TYWE3S nie musimy wylutowywać, gdyż one bazują na ESP).
    Raczej nie da się tego łatwo zrobić zwykłą lutownicą, chociaż słyszałem o metodach robienia z nagrzanego drutu kształtu pasującego do pinów... ale nie komplikujmy.
    Do odlutowanie użyłem taniego hot air z dość słabą regulacją temperatury i dość dużej ilości topnika. Wybrałem końcówkę o małej średnicy i stopniowo nagrzewałem po kolei rzędy padów.
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Bardzo ważne jest, by w trakcie odlutowywania nie używać siły. Moduł ma "pływać", nie może być tak że my go ciągniemy do góry, bo wtedy pewnie prędzej oderwiemy pady i będzie problem z przylutowaniem zamiennika.
    Oczywiście ważne jest też, by nie przegrać modułu, ale moje subiektywne wrażenie jest takie, że o wiele łatwiej uszkodzić pady niż coś przegrzać.
    Wylutowane:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Płytka bez modułu, dość niecodzienny widok. Wszystkie pady całe:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Na tym etapie polecam Wam prześledzić wszystkie ścieżki i zrobić dobrej jakości zdjęcia, bo potem jak się wlutuje moduł ESP na miejsce to już będzie ciężko.

    Porównanie obu modułów
    Skorzystamy z okazji i porównamy oba moduły wizualnie. Nie widziałem jeszcze XR3 od spodu. Oba mają podpisane pady. Na pierwszy rzut oka wyprowadzenia są zgodne.
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya

    Programowanie ESP12F luzem
    Teraz mamy dwie możliwości. Możemy:
    - albo od razu wlutować moduł z ESP do naszego urządzenia Smart, a potem go programować (potem podpiąć się z UART)
    - albo zaprogramować ESP najpierw, a potem wlutować do urządzenia Smart
    Wybrałem tą drugą opcję, gdyż chciałem mieć pewność, że wszystko działa przed wlutowaniem modułu do płytki.
    Programowanie ESP opisywałem już kilkukrotnie, m. in. tutaj:
    - https://www.elektroda.pl/rtvforum/topic3749207.html
    - https://www.elektroda.pl/rtvforum/topic3736876.html
    - https://www.elektroda.pl/rtvforum/topic3760371.html
    Tym razem użyłem nieco innego konwertera USB-UART:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Z niego wykorzystałem tylko RX, TX, +3.3V i GND. Resztę połączeń zrobiłem sam:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    To samo zdjęcie ale z naniesionymi rolami pinów:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Do wgrania wsadu po stronie komputera użyłem esptool.py które zainstalowałem wraz ze wsparciem ESP8266 dla Arduino IDE. Poniżej przykład użycia, najpierw komenda chip_id do sprawdzenia czy ESP jest widziany, a potem już programowanie.
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Progr:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Następnie odłączyłem zasilanie i podpiąłem GPIO0 do VCC by ESP uruchomił się już nie w trybie programowania, lecz zwykłej pracy i utworzył punkt dostepu Tasmoty potwierdzający to, że wszystko działa:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Czyli ESP na pewno działa, pora go wlutować.

    Pierwsze uruchomienie po zamianie XR809 na ESP12F
    Przed wlutowaniem oczyściłem pady i posmarowałem topnikiem oraz pobieliłem. Próbowałem najpierw wlutować moduł gorącym powietrzem, ale ostatecznie jednak po prostu każdy jego lut poprawiłem ręcznie lutownicą grotową.
    Niestety sieć się nie pojawiała. Musiałem sprawdzić każdy pin multimetrem. Moje podejrzenia się potwierdziły. Trzeba było dodać rezystor 10k pull up dla EN i GPIO0 oraz pull down dla GPIO15. Dodatkowo musiałem usunąć diodę z GPIO15 (niefortunnie akurat tam ją dali i ta dioda wymuszała wysoki stan na tym pinie i uruchamiała bootowanie ESP z karty SD...).
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Tyle starczyło, by ESP ożył.

    Uruchamiamy diodę LED z pokładu i przycisk
    Diodę LED z pokładu przeniosłem na wybrany przez siebie pin, dodałem po prostu zworkę.
    Przycisk był na pinie GPIO13.
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Tyle starczyło by sterować diodą LED przez WWW:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya

    Sposób na czujnik czyli Tasmota i pin digital input
    Obsługa czujnika magnetycznego otwarcia/zamknięcia drzwi sprowadza się do wykonania odczytu z pinu w trybie digital input. Z pozoru powinno być łatwo, ale mamy tu dwa małe problemy do pokonania.
    Po pierwsze, Tasmota nie posiada trybu "Digital input" dla pinu, mamy tylko Switch lub Button a dodatkowo stan ich nie jest pokazywany na GUI Tasmoty. Da się to rozwiązać poprzez dodanie dodatkowego pinu udającego Relay i nadanie mu tego samego numeru co nasz Switch. Ten pin w rzeczywistości nie będzie nigdzie podłączony, ale wtedy GUI Tasmoty będzie wyświetlać ten niby-Relay i w ten sposób nam pokaże stan Switcha (bo Switch i Relay o tym samym indeksie są automatycznie połączone w Tasmocie).
    Czyli taka konfiguracja:

    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Po drugie, to jednak nie wszystko. W przypadku tego czujnika drzwi XR809 trzeba wykonać jeszcze poprawkę na PCB, inaczej Switch będzie mieć ciągle stan wysoki.
    Krótka analiza układu pokazuje, że czujnik magnetyczny ma rezystor pull up (do zasilania) 10k oraz pull down (do masy) 3M. GPIO jest podłączone do pull down. W stanie "otwartym" jest tam 2.2V a w stanie "zamkniętym" 3.3V. Czyli ciągle stan wysoki.
    Moim zdaniem w XR3 to działało dlatego, że XR3 może pracować na napięciach do 5.5V, a ESP z kolei tylko na 3.3V.
    Trzeba więc zamienić ten rezystor pull down na jakieś 10k, albo po prostu zamienić albo dolutować do niego drugi tak by rezystancja wypadkowa była w tej okolicy.
    Szkic/schemat sytuacji:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Dolutowany 10k:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Po tej operacji poziomy logiczne są w normie. Od razu wykrywana jest zmiana stanu:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Pierwsze ON/OFF to przycisk tymczasowo przypisany do diody LED, a drugie ON/OFF to stan drzwi (czujnik magnetyczny).



    Dodawanie do Home Assistant
    Warto jeszcze pokazać co możemy zrobić z tak przygotowanym czujnikiem drzwi w praktyce.
    Dodamy go do Home Assistant, który u mnie chodzi na moim własnym małym domowym serwerze.
    Wszystko szczegółowo opisałem tutaj:
    https://www.elektroda.pl/rtvforum/topic3777098.html
    Czujnik drzwi dodamy poprzez MQTT. Konfiguracja MQTT (ale np. Wasze hasło z pewnością będzie inne):
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Czujnik od razu jest wykrywany, choć nie wiem czemu jako "Nieznane urządzenie":
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Można wejść w informacje o tym urządzeniu. Tu widać mały problem - Home Assistant wykrywa tylko jeden relay (jeden stan) z dwóch, zaraz to naprawimy.
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Power 2 nie jest widoczny, ale w MQTT jest (okno poniżej dostępne jest pod przyciskiem "MQTT INFO"):
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Czyli MQTT przesyła niezbędne informacje do HA, po stronie HA tylko musimy coś poprawić.
    Z pomocą przychodzi dokumentacja Tasmoty:
    https://tasmota.github.io/docs/Home-Assistant/
    Akapit "Multiple switches" mówi jak musimy zmodyfikować konfigurację:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Mój zmodyfikowany configuration.yaml (dodałem to co w czerwonej ramce):
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Ważne jest, by pamiętać o ustawieniu nazwy urządzenia. Tutaj to tasmota_7C4541. Nazwa ta dostępna jest dla nas od początku, nawet otwarty access point Tasmoty ją zawiera, warto ją sobie zanotować.
    Code: xml
    Log in, to see the code

    W ten sposób od razu mam na panelu oba relay z Tasmoty (zarówno ten który rzeczywiście jest diodą LED oraz ten który odczytuje tylko stan drzwi):
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Można wejść w ich ustawienia:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    Zmienić im nazwę na coś sensownego:
    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya
    I przede wszystkim można je wykorzystać w automatyzacjach.

    Home Assistant - automatyzacja stanu drzwi
    Na tym etapie mamy wszystko gotowe do wykonywania automatyzacji. Opisywałem je kilka razy, więc odsyłam do powiązanych tematów:
    - Tutorial Home Assistant - konfiguracja, WiFi, MQTT, Zigbee, Tasmota
    - Sterownik przekaźników kompatybilny z Home Assistant/Tasmota HTTP + obudowa
    Bez problemu możemy teraz wyzwalać zdarzenia w momencie np. otwarcia drzwi i zapalać wtedy automatycznie światło w pokoju bądź wysyłać powiadomienie. A Home Assistant zapewnia nam kompatybilność z naprawdę duża ilością sprzętu różnych producentów.

    Co jeszcze trzeba by zrobić?
    Zasadniczo zostało jeszcze zrobić jedno, by moduł był 100% przekształcony na ESP. Brakuje jeszcze odczytu stanu baterii, który wykonywany był na XR3 przez wejście ADC. Można by spróbować przeportować tą funkcjonalność do Tasmoty, ale na ten moment tu się zatrzymam i tymczasowo polecę po prostu odłączenie/odcięcie odpowiedniej ścieżki.

    Podsumowanie
    Zamiana modułu XR3 na ESP12F udała się bez większych problemów. Co prawda trzeba było dolutować kilka rezystorów, ale po sprawdzeniu noty katalogowej ESP powinno być jasne gdzie się je dodaje i w jakim celu.
    Musiałem również przenieść diodę LED z GPIO15, bo tam akurat wadziła (wymuszała stan wysoki na tym pinie a to blokowało uruchomienie ESP).
    Operacja zwana w społeczeństwach ESP jako "esp brain transplant" wcale nie jest taka trudna, choć trzeba mieć te gorące powietrze by w miarę wygodnie odlutować moduł.
    Oczywiście nie tylko XR3/XR809 można tak wymienić. Jest wiele innych modułów o zgodnych wyprowadzeniach, trzeba tylko poszukać. Co więcej, też moduły Zigbee mają podobne wyprowadzenia więc zamiana urządzenia z Zigbee na ESP też jest możliwa.
    Zostaje jeszcze aspekt ekonomiczny całej wymiany. W przypadku wielu urządzeń się to zdecydowanie nie opłaca. Nie oznacza jednak, że jest tak zawsze. Droższe urządzenia smart mogą nie mieć w środku ESP oraz nie posiadać identycznych odpowiedników z ESP. Na przykład w kolejce do przeróbki mam filtr powietrza Alfawise P2 Hepa, wkrótce będę do niego zaglądać i jeśli nie będzie tam ESP to pewnie dokonam przeróbki.
    Czy przerabialiście jakieś urządzenia Smart tak by korzystały z modułu z ESP i jakie macie z tym doświadczenia?

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    p.kaczmarek2
    Level 25  
    Offline 
  • TermopastyTermopasty
  • #2
    tomciu1
    Level 9  
    A ja mam pytanie jaki jest cel takiej , przeróbki. Ciekawy artykuł ale nie interesowałem się nigdy urządzeniami Smart do domu. Co jest lepszego w tym ESP od fabrycznego układu? Na co dodatkowo pozwala inny firmware?
  • TermopastyTermopasty
  • #3
    p.kaczmarek2
    Level 25  
    Wgranie firmware open source (np. Tasmoty) daje nam większą kontrolę nad urządzeniem i pozwala łączyć ze sobą produkty różnych producentów które normalnie nie byłyby kompatybilne (i byśmy byli skazani na robienie naszego smart home na sprzęcie od jednego dostawcy), zwłaszcza w połączeniu z rozwiązaniami takimi jak Home Assistant. Dodatkowym plusem jest uniezależnienie się od serwerów producenta (co jak w przyszłości będzie awaria jego serwerów? Chociaż do tego mamy też Tuya-local) i od zbierania informacji przez jego (niektórzy dbają o prywatność w sieci i przeszkadza im to że producent ma wszystkie logi kiedy włączają światło)
  • #4
    khoam
    Level 40  
    Są już dostępne układy ESP32-C3F, w których wyprowadzenia pinów są zgodne z ESP12-F. Przy tego rodzaju przeróbkach może więc warto się pokusić od razu do migracji do ESP32-C3. Bonusem byłoby BLE, wydajniejszy procesor, więcej pamięci: Link

    Wymiana modułu WiFi na ESP12F (ESP8266) w urządzeniu smart/tuya