Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Dodatkowy czujnik temperatury do stacji pogodowej z Lidla Auriol Z29536

jafal 07 Oct 2021 20:38 4998 15
  • Od jakiegoś czasu mam stację pogodową Auriol z Lidla. Może ona obsługiwać do trzech termometrów zewnętrznych, w zestawie był jeden taki czujnik. Udało mi się ustalić, że może pasować czujnik do stacji Hama czasem dostępny w sklepie Conrad ale cena nie była zbyt zachęcająca i nie miałem pewności, że to zadziała. Postanowiłem samemu wykonać taki czujnik.
    Pierwszym krokiem było ustalenie protokołu komunikacji używanego przez stację. Po przeszukaniu internetów znalazłem kilka stron opisujących dekodowanie sygnału z czujnika stacji pogodowej. Na przykład
    https://rayshobby.net/wordpress/reverse-engineer-wireless-temperature-humidity-rain-sensors-part-1/
    Można się też posłużyć odbiornikiem do RTL_SDR i programem rtl_433 który potrafi odebrać i zdekodować dość sporo różnych czujników.
    Lidlowski czujnik jest rozpoznawany przez ten soft jako TFA_pool. Używana jest modulacja PPM (modulacja położenia pulsu). Długość impulsu 460us, długość przerwy dla zera 1800us, dla jeden 4200us. Ramka danych jest poprzedzona sygnałem startowym (puls + przerwa 9600us) i zawiera 28bitów w formacie:
    /*
    AAAABBBB BBBBCCCC CCCCCCCC DDEF
    A: suma kontrolna - (sum nibles -1) mod 16
    B: numer czujnika (losowany po restarcie)
    C: temperatura (w dziesiątych stopnia)
    D: numer kanału (stacja odbiera kanały 1-3)
    E: stan baterii
    F: 1 jeżeli transmisja wymuszona przyciskiem
    */

    Ramka jest powtarzana 10 razy a transmisja odbywa się co 56 sekund.
    Wygrzebałem z szuflady mikrokontroler stm8s103 a dokładniej użyłem mini płytki rozwojowej za 0.6$ i nadajnik 433MHz który kosztuje jeszcze mniej.
    Dodatkowy czujnik temperatury do stacji pogodowej z Lidla Auriol Z29536 Dodatkowy czujnik temperatury do stacji pogodowej z Lidla Auriol Z29536
    Żeby zmniejszyć zużycie prądu z płytki wylutowałem stabilizator napięcia i rezystor led zasilania. Drugi LED na użyłem do sygnalizacji transmisji. Zasilanie z akumulatorka li-ion lub dwóch baterii. Do pomiaru temperatury jest używany termistor NTC 10K.
    Dodatkowy czujnik temperatury do stacji pogodowej z Lidla Auriol Z29536
    Program jest napisany w C, kompilowany za pomocą SDCC bazując na przykładach z https://lujji.github.io/blog/bare-metal-programming-stm8/
    Numer kanału jest ustawiany zworkami. Opcjonalnie podczas kompilacji można włączyć wysyłanie napięcia baterii na kanale 0 (nie odbieranym przez stację pogody) - można monitorować zużycie baterii ale ze świadomością, że będzie większa przez dodatkowe transmisje
    Dla celów debugowych można też skompilować kod z wypisywaniem danych na serial port.

    Procesor nie jest zbyt energooszczędny (mimo wprowadzania w tryb uśpienia), na akumulatorku 600mAh działa około 1miesiąca. Przeportuję kiedyś na attiny412 może będzie lepiej.
    W załączniku kod źródłowy i wersja skompilowana.

    Cool? Ranking DIY
    About Author
    jafal
    Level 11  
    Offline 
    jafal wrote 9 posts with rating 16. Been with us since 2005 year.
  • #2
    zgierzman
    Level 30  
    jafal wrote:
    Można się też posłużyć odbiornikiem do RTL_SDR i programem rtl_433 który potrafi odebrać i zdekodować dość sporo różnych czujników.


    RTL_433 wygląda na świetny kombajn, ale nie znalazłem żadnej sensownej kompilacji na Windows. Najnowsza jaką wygrzebałem była bodaj z 2018 albo 2017 roku, a w samodzielne kompilowanie nie chciało mi się bawić.
    Ponieważ RTL_433 nie rozpoznał mojego czujnika (choć nie wiem, czy nowsza wersja dałaby radę), to musiałem rozpykać protokół samodzielnie - od sposobu kodowania aż po znaczenie poszczególnych bitów...
  • #3
    krzbor
    Level 25  
    Robiłem własny nadajnik na Attiny - na 3 bateriach AAA działa kilka lat - ale uwaga - wszystkie moduły są zasilane z Attiny (zarówno nadajnik jak i DS18B20). U Ciebie jest termistor do pomiaru. Czy zwróciłeś uwagę, że dzielnik napięcia na tym termistorze konsumuje miesięcznie prawie 500mAh, a dzielnik z rezystorów 100k prawie 50mAh? Rozwiązać problem można prosto - zamiast VCC podawać napięcie z jednego z wyjść mikrokontrolera tylko na czas pomiaru. Być może będzie potrzebna kalibracja wyników - zasilanie z "nogi" procesora to nie to samo co z VCC, ale chyba warto, bo układ powinien pracować nawet jeden rok.
  • #4
    jafal
    Level 11  
    krzbor wrote:
    Robiłem własny nadajnik na Attiny - na 3 bateriach AAA działa kilka lat - ale uwaga - wszystkie moduły są zasilane z Attiny (zarówno nadajnik jak i DS18B20). U Ciebie jest termistor do pomiaru. Czy zwróciłeś uwagę, że dzielnik napięcia na tym termistorze konsumuje miesięcznie prawie 500mAh, a dzielnik z rezystorów 100k prawie 50mAh? Rozwiązać problem można prosto - zamiast VCC podawać napięcie z jednego z wyjść mikrokontrolera tylko na czas pomiaru. Być może będzie potrzebna kalibracja wyników - zasilanie z "nogi" procesora to nie to samo co z VCC, ale chyba warto, bo układ powinien pracować nawet jeden rok.


    W pierwszej wersji też zrobiłem zasilanie nadajnika sterowane z procesora ale nie wpływało to na zużycie prądu - wydaje się że wejścia DATA tego transmitera kluczuje zasilanie.
    Z moich wyliczeń wychodzi mi prąd płynący przez termistor (przy zasilaniu 3V) ok 15mA czyli ok 100mAh/miesiąc ale na początek spróbuje zasilić termistor z procesora i zobaczę jakie będą efekty.
  • #5
    krzbor
    Level 25  
    jafal wrote:
    Z moich wyliczeń wychodzi mi prąd płynący przez termistor (przy zasilaniu 3V) ok 15mA czyli ok 100mAh/miesiąc ale na początek spróbuje zasilić termistor z procesora i zobaczę jakie będą efekty.

    Akumulator Li-Ion, czyli 3,7V - 3,7V/20k = 0,185mA
    Policzmy: 0,185mA*3600*24*30=480mAh
  • #7
    krzbor
    Level 25  
    jafal wrote:
    krzbor wrote:
    Policzmy: 0,185mA*3600*24*30=480mAh


    Ale na pewno żeby dostać amperogodziny mnożymy przez liczbę sekund?

    Bardzo przepraszam za mój błąd. Oczywiście masz rację - powinno być:
    0,185*24*30=133,2mAh,
    a dla dzielnika 100k*2 powinno być 13,3mAh
    W każdym razie te ok 150mAh to i tak nie mało.
  • #9
    krzbor
    Level 25  
    Attiny jest bardzo oszczędny, ale z manuala STM8S103:
    Dodatkowy czujnik temperatury do stacji pogodowej z Lidla Auriol Z29536
    Jak widać powinno dać się uzyskać nawet 66uA w stanie czuwania. Niestety nie znam tego procesora, więc nie pomogę.
  • #10
    ryshard
    Level 15  
    Witam, sorry za trochę offtop, ale czy można by było użyć transmisji w innym celu. Mam podobną stację pogody z Lidla i Domoticza na RaspberryPi w domu. W Domoticzu mam pomiar temperatury na ESP8266. Dałoby się wrzucić kod do Raspberry i odbierać temperaturę przez podłączone radio do RPI z tego zewnętrznego czujnika z Lidl'a ?
  • #11
    jafal
    Level 11  
    krzbor wrote:
    powinno dać się uzyskać nawet 66uA w stanie czuwania.

    Próbowałem to zrobić ale wyłącznie MVR w czasie czuwania powodowało wyzerowanie RAMu/rejestrów i po wybudzeniu program startował od początku i ustawiał nowe id a stacja przestawał go odbierać. Trzeba by przechowywać id we flash-u i dodać jakiś przycisk do wymuszenia zmiany - teraz dzieje się to tak jak w originale przez odłączenie zasilania. STM8 jest skonfigurowany wg czwartego wiersza tabeli - powinien teraz pobierać 150uA

    ryshard wrote:
    Witam, sorry za trochę offtop, ale czy można by było użyć transmisji w innym celu. Mam podobną stację pogody z Lidla i Domoticza na RaspberryPi w domu. W Domoticzu mam pomiar temperatury na ESP8266. Dałoby się wrzucić kod do Raspberry i odbierać temperaturę przez podłączone radio do RPI z tego zewnętrznego czujnika z Lidl'a ?

    Próbowałem kiedyś odbierać czujnik Lidla na ESP8266 z z kodem bazującym na bibliotece rc-switch - działało ale zasięg był bardzo mały. Nie wiem czy wina biblioteki i filtrów w niej czy odbiornika na którym eksperymentowałem. Pewnie jedno i drugie. Jest przykład użycia na Raspberry rc-switch-pi-examples.
  • #12
    eurotips
    Level 39  
    Taki zewnętrzny nadajnik pracuje rok góra dwa i pada.
    Nie spotkałem tanich zamienników które mierzyłyby coś więcej niż temperaturę,
    jeśli dochodzi jeszcze wilgotność to drugi nadajnik jest zazwyczaj droższy niż nowa stacja.
    Zresztą tu też niewiele już brakuje do stworzenia własnej stacji i to chyba jest docelowo wskazane.
  • #13
    krzbor
    Level 25  
    jafal wrote:
    Próbowałem to zrobić ale wyłącznie MVR w czasie czuwania powodowało wyzerowanie RAMu/rejestrów i po wybudzeniu program startował od początku i ustawiał nowe id a stacja przestawał go odbierać. Trzeba by przechowywać id we flash-u i dodać jakiś przycisk do wymuszenia zmiany - teraz dzieje się to tak jak w originale przez odłączenie zasilania. STM8 jest skonfigurowany wg czwartego wiersza tabeli - powinien teraz pobierać 150uA
    Ten procesor ma chyba EEPROM. Zapamiętanie id w nim wydaje się dobrym pomysłem. Przy 66uA miesięcznie potrzeba 50mAh + prąd pracy podczas wybudzenia..
  • #14
    ryshard
    Level 15  
    eurotips wrote:
    Taki zewnętrzny nadajnik pracuje rok góra dwa i pada.
    Nie spotkałem tanich zamienników które mierzyłyby coś więcej niż temperaturę,
    jeśli dochodzi jeszcze wilgotność to drugi nadajnik jest zazwyczaj droższy niż nowa stacja.
    Zresztą tu też niewiele już brakuje do stworzenia własnej stacji i to chyba jest docelowo wskazane.


    Dodatkowy czujnik temperatury do stacji pogodowej z Lidla Auriol Z29536
    Mam takie coś co mierzy też i wilgotność, działa już od sprzed Covida :). Co prawda parę razy zamókł i trzeba było suszyć w izopropanolu, ale chodzi. Gorzej z odbiornikiem, strasznie żre baterie. Może przerobić na akumulator i ładować co jakiś czas. A tak na marginesie to ten "krótki zasięg" to mniej więcej ile metrów? Bo u mnie w prostej linii by było do 10, ale przez budynek.
  • #15
    jafal
    Level 11  
    eurotips wrote:
    Taki zewnętrzny nadajnik pracuje rok góra dwa i pada.

    U mnie oryginalny czujnik pracuje już 10 lat, mniej więcej raz w roku wymieniam baterie. Robiłem własny czujnik żeby dodatkowo mierzyć temperaturę w ogrodzie zimowy.

    ryshard wrote:
    A tak na marginesie to ten "krótki zasięg" to mniej więcej ile metrów? Bo u mnie w prostej linii by było do 10, ale przez budynek.

    Przez 10 metrów i pojedynczą ścianę to jeszcze działało ale zasięg był wyraźnie mniejszy niż oryginalnej stacji nie mówiąc już o odbiorze na donglu RTL. Dlatego podejrzewam słabe algorytmy filtrowania szumu w bibliotece rc-switch.
  • #16
    Andrzej Ch.
    Level 32  
    Miałem kilka czujników podobnego typu i zawsze po roku, góra dwóch pracy czujnika na zewnątrz padał moduł wilgotności, który można było bez problemu kupić na chińskim portalu i przelutować. Przeważnie są to "gołe" moduły DHT11 lub DHT22.