logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?

p.kaczmarek2 01 Lis 2023 11:03 3069 11
  • [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Jakiś czas temu pokazywałem termostat z wyświetlaczem THR320D Sonoff i prezentowałem możliwości aplikacji eWeLink. Tym razem będę kontynuować omawianie tego produktu, ale tutaj skupię się na jego wnętrzu oraz na zmianie jego firmware na Tasmotę, tak aby go całkiem uwolnić od chmury i sparować z Home Assistant na naszych zasadach.

    Poprzedni temat:
    [ESP32] Termostat z wyświetlaczem i WiFi - Sonoff THR320D - aplikacja eWeLink

    Informacje o zakupie produktu są w poprzednim temacie, więc zaczynamy od wnętrza.
    Wnętrze THR320D
    Ten produkt wyróżnia się porządną budową. Nie ma łamliwych zaczepów. Odkręcamy śrubki:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Na pierwszy rzut oka nie jest tak źle, są jakieś zabezpieczenia na wejściu, jest nawet warystor, kondensator filtrujący, widać też przekaźnik, złącze do programowania oraz mały transformatorek z charakterystycznym kondensatorem Y, czyli w środku jest zasilacz flyback..
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    W środku nie ma żadnego modułu WiFi, ESP32 jest bezpośrednio na PCB, tuż obok widać pamięć flash:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    PCB można wyjąć, zobaczymy wtedy kontroler wyświetlacza oraz antenkę od WiFi:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Wyświetlacz obsługuje TM1621:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Widzimy tu też szczegóły sekcji zasilania oraz kontroler LP3667:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Uproszczony schemat takiej przetwornicy:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    W rogu widzę też przetwornicę step down generującą 3.3V dla ESP, można to poznać też po obecności dławika, swoją drogą ciekawe, że aż tyle kondensatorów ceramicznych tam dali:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Wspomniana już antenka WiFi:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    ESP:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Na zdjęciu wyżej widać też pady do programowania, ale są tylko 4...

    Zmiana firmware
    Zacząć trzeba od tego, że IO0 znajduje się na przycisku, więc lutujemy 4 przewody a nie 5. Standardowo konwerter USB na UART (RX i TX) oraz masa i zasilanie (3.3V). Aby wgrać wsad, najpierw wciskamy przycisk a potem podłączamy zasilanie programatora, tak aby IO0 był na stanie niskim w trakcie bootowania urządzenia.
    Potem można wgrać Tasmotę np. instalatorem online:
    Jak łatwo zainstalować Tasmotę - instalator online tasmota.github.io/install przez przeglądarkę WWW
    Sam jednak użyłem esptool:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Szablon THR320D jest dostępny w sieci:
    {"NAME":"Sonoff THR320D","GPIO":[32,0,0,0,226,9280,0,0,0,321,0,576,320,9184,9216,9312,0,0,9313,9248,0,1,0,3840,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
    

    Role GPIO:
    - GPIO00 - Button 1
    - GPIO04 - Relay 3
    - GPIO05 - TM1621 DAT
    - GPIO13 - Led_i 2
    - GPIO15 - LedLinki
    - GPIO16 - Led_i 1
    - GPIO17 - TM1621 CS
    - GPIO18 - TM1621 WR
    - GPIO19 - Relay_b 1
    - GPIO22 - Relay_b 2
    - GPIO23 - TM1621 RD
    - GPIO27 - Output Hi
    Aktywacja szablonu:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Potem jeszcze trzeba wybrać role dla GPIO czujników, bo mogą być różne czujniki, ja sprawdzałem tylko z DS18B20:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Rezultat:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Oczywiście wyświetlacz dalej działa, szablon uwzględnia jego działanie, chociaż teraz już nie wyświetla nic o wilgotności tak jak oryginalne firmware:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0? [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    A temperatura na zdjęciu jest wysoka, bo na próbę nagrzałem czujnik lampką:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Wygląda na to, że wszystko działa.

    Podsumowanie
    Już wspominałem o tym w poprzedniej części, ale bardzo zachwalam wszystkie produkty IoT które są w stanie działać zupełnie bez WiFi a możliwość odczytu bieżącej temperatury z tego wyświetlacza bez sięgania po telefon jest z pewnością krokiem w dobrym kierunku. Przycisk na obudowie też zwiększa nam możliwości "fizycznej" kontroli, co prawda harmonogramów tak nie zmienimy, ale to już nie jest aż tak istotne.
    Oczywiście wgranie Tasmoty to tylko pierwszy krok, trzeba jeszcze skonfigurować Home Assistant ale to już nie powinno być problemem. Samo automatyczne HASS Discovery z Tasmoty powinno dać radę.
    W jednym z kolejnych tematów planuję omówić też jak można wykorzystać nasz Sonoff THR320D już razem z HA, np. do sterowania ogrzewaniem, ale to kiedyś...
    Podsumowując - polecam ten produkt. Czy ktoś z czytających może już z niego korzysta?

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 20795121
    khoam
    Poziom 42  
    p.kaczmarek2 napisał:
    Oczywiście wyświetlacz dalej działa, szablon uwzględnia jego działanie, chociaż teraz już nie wyświetla nic o wilgotności tak jak oryginalne firmware:

    Można spróbować zainstalować firmware ESPHome zgodnie z szablonem:
    https://devices.esphome.io/devices/Sonoff-THR320D
    Wtedy powinien widnieć również pomiar wilgotności.
  • #3 20795155
    p.kaczmarek2
    Moderator Smart Home
    W tym konkretnym przypadku cały czas mam podłączoną sondę z DS18B20, więc raczej wilgotności to nie zmierzy, bardziej odnosiłem się do tego że oryginalne firmware wyświetlało placeholder wartości z myślnikami, a Tasmota nie wyświetla nic... natomiast czy Tasmota by sobie poradziła jakby tam był SI7021 a nie DS18B20 to nie sprawdzałem, ale pewnie też by dała radę. Sprawdzę to jak będę mieć okazję.
    Pomogłem? Kup mi kawę.
  • #4 21050030
    szczukot
    Poziom 14  
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?

    Na niektórych zdjęciach z netu, wyświetlane są inne dane.
    Czy to jakiś błąd czy faktycznie jest to możliwe ?
  • #5 21050124
    p.kaczmarek2
    Moderator Smart Home
    Twoje zdjęcie pokazuje nieco inny produkt, a mianowicie POWR316D, który swoją drogą też już omawiałem:
    [ESP32] Sonoff POWR316D miernik energii z wyświetlaczem - zmiana firmware
    Pomogłem? Kup mi kawę.
  • #6 21050562
    szczukot
    Poziom 14  
    No to wszystko jasne. Wielu sprzedawców je myli, daje zdjęcie od jednego a sprzedaje ten drugi ;)
  • #7 21193012
    HellG
    Poziom 2  
    Chciałbym podłączyć czujniki przez I2C do THR320D. Czy jest to możliwe? Czy jest jakieś zapasowe GPIO, którego mógłbym użyć lub czy muszę poświęcić np. jeden z przekaźników?
  • #8 21201178
    HellG
    Poziom 2  
    Witam,
    Poszperałem trochę głębiej i odkryłem, że PIN3 złącza czujnika ma pad pomiarowy oznaczony RX1 na tym zdjęciu https://obrazki.elektroda.pl/1409760600_1695907567.jpg (częściowo ukryty przez ESD2). Jest on podłączony blisko ESP32 do pól lutowniczych R16 i R25 (patrz https://obrazki.elektroda.pl/4154304600_1695907654.jpg ), które niestety nie są wypełnione. Przez R16 jest podłączony do GPIO26 (drugi port danych jest podłączony przez R14 do GPIO25). Czy masz jakiś pomysł, jakie wartości rezystorów tam wlutować? Myślę, że R16 powinien być raczej mały, a R25 wygląda jak rezystor pull up lub pull down i powinien być raczej wysoki. Nie mogę zmierzyć rezystancji podczas lutowania.
    Dzięki,
    HellG
  • #9 21201469
    p.kaczmarek2
    Moderator Smart Home
    Jaki czujnik chcesz podłączyć? Sugerowałbym dobranie rezystorów do posiadanego czujnika.

    Na przykład, oto jak powinno wyglądać połączenie DHT11:
    [ESP32] Jak zmienić firmware Sonoff THR320D? Wgrywamy Tasmotę. Gdzie jest GPIO0?
    Pomogłem? Kup mi kawę.
  • #10 21201532
    HellG
    Poziom 2  
    Chcę podłączyć kilka czujników przez I2C, dlatego potrzebuję dodatkowego GPIO.
  • #11 21201629
    p.kaczmarek2
    Moderator Smart Home
    Obie linie I2C będą wymagały rezystorów podciągających, oto losowa próbka z sieci:
    Schemat połączeń I2C z rezystorami podciągającymi 1K.

    @ElektrodaBot jakich wartości rezystorów podciągających należy użyć dla I2C?
    Pomogłem? Kup mi kawę.
  • #12 21201640
    ElektrodaBot
    AI od OpenAI ChatGPT4
    p.kaczmarek2 napisał:
    jakich wartości rezystora podciągającego należy użyć dla I2C?
    Bezpośrednia odpowiedź na pytanie użytkownika

    W przypadku komunikacji I2C typowe wartości rezystora podciągającego wynoszą od 1 kΩ do 10 kΩ. Najczęściej stosowane wartości mieszczą się w zakresie od 2,2 kΩ do 4,7 kΩ. Optymalna wartość zależy jednak od kilku czynników, w tym prędkości magistrali, pojemności magistrali, liczby urządzeń na magistrali i napięcia zasilania.

    Szczegółowa analiza problemu krok po kroku

    1. Prędkość autobusu :
    - Tryb standardowy (100 kHz) : 1,5 kΩ do 10 kΩ.
    - Tryb szybki (400 kHz) : 1,5kΩ do 4,7kΩ
    - Tryb szybki Plus (1 MHz) : 1kΩ do 2,2kΩ

    2. Pojemność magistrali :
    - Wyższa pojemność wymaga niższych wartości rezystora, aby zapewnić wystarczająco szybki wzrost sygnału. Typowa pojemność magistrali wynosi od 10pF do 400pF.

    3. Liczba urządzeń na magistrali :
    - Większa liczba urządzeń zwiększa całkowitą pojemność magistrali, co może wymagać niższych wartości rezystora.

    4. Napięcie zasilania :
    - Wyższe napięcia zasilania pozwalają na wyższe wartości rezystorów. Na przykład, system 5V może wykorzystywać wyższe wartości rezystorów w porównaniu do systemu 3.3V.

    Szczegóły i wyjaśnienia

    Obliczanie wartości rezystora podciągającego

    1. Minimalna wartość rezystora podciągającego :
    - Minimalną wartość można obliczyć za pomocą:
    $$ R_{\text{min}} = \frac{V_{\text{DD}} - V_{\text{OL\_max}}}{I_{\text{OL\_max}}} $$
    gdzie $ V_{\text{DD}} $ to napięcie zasilania, $ V_{\text{OL\_max}} $ to maksymalne napięcie wyjściowe niskiego poziomu (zwykle 0,4 V), a $ I_{\text{OL\_max}} $ to maksymalny prąd wyjściowy niskiego poziomu najsłabszego urządzenia na magistrali.

    2. Maksymalna wartość rezystora podciągającego :
    - Maksymalną wartość można obliczyć za pomocą:
    $$ R_{\text{max}} = \frac{t_r}{0.8473 \times C_b} $$
    gdzie $ t_r $ to maksymalny dozwolony czas narastania (np. 1000ns dla trybu standardowego, 300ns dla trybu szybkiego), a $ C_b $ to pojemność magistrali.

    Praktyczny przykład

    Załóżmy magistralę I2C w trybie szybkim (400 kHz) z całkowitą pojemnością magistrali wynoszącą 200 pF.. Używając maksymalnego czasu narastania dla trybu szybkiego (300 ns) określonego przez I2C:

    $$ R_{\text{max}} = \frac{300 \times 10^{-9}}{0,8473 \times 200 \times 10^{-12}} \około 1,77 \ \text{kΩ} $$

    Kawiatury i dodatkowe rozważania

    1. Zmiany temperatury : Wartości rezystorów mogą zmieniać się wraz z temperaturą, wpływając na czasy narastania.
    2. Przekształcenia poziomów napięcia : Podczas podłączania urządzeń o różnych poziomach napięcia należy zwrócić szczególną uwagę na rezystory podciągające.
    3. Długie linie magistrali : W przypadku bardzo długich magistral I2C konieczne może być zastosowanie aktywnych obwodów podciągających lub przedłużaczy magistrali I2C.
    4. Uwagi dotyczące zakłóceń elektromagnetycznych : Niższe wartości rezystorów mogą pomóc zmniejszyć podatność na zakłócenia elektromagnetyczne, ale zwiększają zużycie energii.
    5. Systemy z wieloma domenami zasilania : Należy zachować ostrożność, gdy magistrala I2C przecina domeny zasilania, aby uniknąć upływu prądu i potencjalnego uszkodzenia urządzeń.

    Wnioski

    W praktyce często najlepiej jest zacząć od standardowych wartości, takich jak 4,7 kΩ i dostosować je w oparciu o pomiary oscyloskopowe rzeczywistych czasów narastania w konkretnej konfiguracji sprzętowej. Takie empiryczne podejście może pomóc zoptymalizować wydajność magistrali I2C dla konkretnego zastosowania. Zawsze należy zweryfikować integralność sygnału za pomocą oscyloskopu, zwłaszcza w przypadku aplikacji o dużej prędkości, aby upewnić się, że wybrane rezystory podciągające zapewniają niezawodne działanie.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
REKLAMA