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

Termometr Wi-Fi z ESP8266 i DS18B20 - alternatywne podejście programistyczne

kantacki 15 Sie 2024 18:31 2370 21
REKLAMA
  • #1 21192183
    kantacki
    Poziom 10  
    Posty: 8
    Cześć,

    Jestem programistą i napisałem program do obsługi cyfrowego termometru DS18B20 na ESP8266.
    Więcej szczegółów tutaj:
    https://kalamlacki.eu/esp8266_termo.php

    Pozdrawiam,
    Łukasz
  • REKLAMA
  • #2 21192338
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    To nic nowego. Takich programów istnieje mnóstwo.
  • REKLAMA
  • #3 21192380
    kantacki
    Poziom 10  
    Posty: 8
    >>21192338
    A co masz w sieci gdzieś program, który robi dokładnie to samo?
  • REKLAMA
  • #4 21192411
    robig
    Poziom 23  
    Posty: 458
    Pomógł: 59
    Ocena: 139
    Całe mnóstwo tego, od tutoriali know how po GitHuby, itd.
    Kolega się chyba z drzemki obudził po paru latach :)
  • #5 21192415
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    Może nie całkowicie to samo, ale chodzi o zastosowanie tych samych elementów.
    Przykłady: Link,Link.
  • REKLAMA
  • #6 21192502
    xury
    Specjalista automatyka domowa
    Posty: 7074
    Pomógł: 877
    Ocena: 1488
    W zasadzie pochwała się należy. Kilka uwag:
    Pierwsza i najważniejsza - rezygnacja ze stylu Arduino IDE na rzecz platformio. Spróbuj a zapomnisz o mega niewygodnym IDE Arduino i braku Intelisense.
    Co z kolei za tym idzie rozbicie na pliki cpp i h by nie "śmiecić" w jednym ino. Uwierz mi przyda się na później kiedy zaczniesz doceniać klasy
    Gdy to przebrniesz okaże się że pisanie dodawanie nowych funkcji to jest chwila nawet kiedy zupełnie zapomniesz kod po jakimś czasie. Piszę to bo sam to przechodziłem i uwierz lepiej nabierać dobrych nawyków od samego początku. Potem trudniej się oderwać.
    Pozbycie się Delay - Owszem sam czasem dla szybkiego efektu stosuję delay ale w kodzie tzw. produkcyjnym nie ma prawa się znaleźć. Staraj się napisać sam obsługę czasu marnotrawionego na czekanie w pętli delay. Może się kazać, że w tym czasie można coś zrobić pożytecznego. Watchdog też nie lubi tego wyrazu :)
  • #7 21192513
    c2h5oh
    Moderator
    Posty: 6665
    Pomógł: 502
    Ocena: 749
    Sztuczna inteligencja też mi napisała bardzo podobny program. Nawet adres IP jest taki sam.
    Jako, że mój termometr wisi na balkonie i jest doładowywany z ogniwa słonecznego oprócz temperatury dostaję jeszcze info o napięciu na akumulatorku.
  • #8 21192563
    kantacki
    Poziom 10  
    Posty: 8
    Zgadzam się, że to jest coś podobnego do tego, co ja mam, ale nie to samo. Np. w tym linku, co podałeś, nie ma konfiguracji, którą ma mój program i przepinania się z AP mode do klienta oraz opcji resetu ustawień z konsoli, w tym twoim jest tylko AP mode, z tego co widzę.

    Dodano po 23 [minuty]:

    >>21192513

    No nie, mój programik powstał przed erą chata GPT. Używam go we własnym projekcie do kontroli temperatury w domu od dobrych kilku lat.

    Dodano po 15 [minuty]:

    Tak wyglądała kontrola temperatur w styczniu u mnie w domu:
    Termometr Wi-Fi z ESP8266 i DS18B20 - alternatywne podejście programistyczne
    Czujnik sprawiał się świetnie.
  • #10 21194005
    kantacki
    Poziom 10  
    Posty: 8
    >>21193834
    Widzisz, jak oglądam filmiki o Tasmota na youtube.com, to widzę sterowanie urządzeniami Sonoff albo smart plugami wi-fi i nie widzę nigdzie prostego wystawienia temperatury po http, może słabo szukałem. Dla mnie Tasmota to taki kombajn, a mój programik jest do o wiele prostszego celu przeznaczony, nie ma tyle dokumentacji, porównałbym go do kosiarki. Jak masz gdzieś linka, jak w Tasmota zrobić wyprowadzenie temperatury po http, to chętnie poczytam lub obejrzę, co podeślesz.
  • #12 21360369
    kantacki
    Poziom 10  
    Posty: 8
    Witam,

    Skoro wspomniano Tasmote dla esp8266 i ds18b20 to postanowiłem że się tym pobawię. Wchodzę na stronę z releasami binarnymi, wgrywam przy pomocy esptoot.py firmware tasmota.bin i nic, sprzęt zimny. I tak powgrywałem po kolei firmware as sprzęt ożyje. I ożył dopiero przy wgraniu tasmota-4m.bin do mojego nodemcu. Nawet fajnie to wygląda, bardziej profesjonalnie niż u mnie, to na plus. Podpinałem ds18b20 do nodemcu i konfiguruje przez panel administracyjny i ok działa to, sczytuje z termometru co kilka sekund nową wartość i rest service Tasmoty pod

    http://192.168.4.1/cm?cmnd=Status%208

    daje w odpowiedzi takiego mniej więcej jsona:

    {
    "StatusSNS": {
    "Time": "2023-11-05T12:49:05",
    "DS18B20": {
    "Id": "3C530457A8AC",
    "Temperature": 23.7
    },
    "TempUnit": "C"
    }
    }

    czyli robi to co u mnie.

    Podstawową różnicą w porównaniu do mojego softu jest fakt że Tasmota próbkuje termometr co kilka sekund a na request z resta podaje zapisane dane. U mnie czytanie termometru odbywa się przy requeście resta czyli jeśli odpytujemy co 5 minut to tylko termometr jest próbkowany co 5 minut.
    Ma to duże znaczenie bo jeśli takie nodemcu z ds18b20 ma chodzić non stop to trzeba brać pod uwagę ilość cykli odczytu termometru ds18b20 która jest limitowana i po której termometr zwyczajnie przestaje działać.

    Jak miałem projekt który odczytuje ds18b20 co sekundę to taki gagatek pochodził 2 lata 24/7 i trzeba go było wymienić.

    Wiecie może jak w Tasmota zmienić częstotliwość próbkowania termometru? Tak aby np co minute mi tylko odpytywało termometr.

    Pozdrawiam,
    Łukasz
  • #13 21360505
    xury
    Specjalista automatyka domowa
    Posty: 7074
    Pomógł: 877
    Ocena: 1488
    kantacki napisał:
    Ma to duże znaczenie bo jeśli takie nodemcu z ds18b20 ma chodzić non stop to trzeba brać pod uwagę ilość cykli odczytu termometru ds18b20 która jest limitowana i po której termometr zwyczajnie przestaje działać.

    Dobrze, że moje DS18B20 o tym nie wiedzą, bo już dawno przestały by działać. :) Od 2018 roku co 10 sekund. Po prostu trafiłeś na złe sztuki, bo zdarzają się podrabiane.
  • #14 21360616
    roman106
    Poziom 28  
    Posty: 1330
    Pomógł: 96
    Ocena: 217
    Nie wiem czemu ludzie upierają się przy DS18B20. Ja do ESP8266 podłączyłem BME280 (znacznie dokładniejszy, kalibrowany fabrycznie z pomiarem ciśnienia) i mam odczyt temperatury z linku bezpośredniego Supla. Odczyt ustawiłem sobie co 5 minut, bo po co częściej mierzyć temperaturę na zewnątrz (czy w pokoju)?

    Temperatura jest wyświetlana na wyświetlacz TM1637, a jak mi się zechce, to mogę w przeglądarce przez https. A czasem odpalę sobie na ARGB LED Matrix 32x8 i mam duży wyświetlacz i kolorowo.
  • #15 21360656
    xury
    Specjalista automatyka domowa
    Posty: 7074
    Pomógł: 877
    Ocena: 1488
    roman106 napisał:
    Nie wiem czemu ludzie upierają się przy DS18B20. Ja do ESP8266 podłączyłem BME280 (znacznie dokładniejszy, kalibrowany fabrycznie z pomiarem ciśnienia)

    I dasz go na przewodzie powiedzmy 10 metrów. Dajesz go na zewnątrz? Na tej małej PCB bez zabezpieczeń przed warunkami zewnętrznymi?Jak długo bedzie poprawnie mierzył ciśnienie w tzw. harsh environment Ile ich dasz na jednej magistrali? Wszystko ma swoje wady i zalety.
  • #16 21360680
    roman106
    Poziom 28  
    Posty: 1330
    Pomógł: 96
    Ocena: 217
    Skąd założenie, że potrzebny mi przewód 10m? Na zewnętrznej ścianie mam gniazdko elektryczne, które używam do kosiarki. Jest tam wpięty zasilacz 5V (ładowarka do telefonu), do tego NodeMCU w szczelnej obudowie elektrycznej. Sam czujnik w kolejnej małej obudowie własnoręcznie skonstruowanej. Nie mam potrzeby umieszczania więcej niż jednego czujnika na magistrali, więc co mam kombinować? Działa? Działa tak jak zaplanowałem i nic więcej nie potrzebuję.

    Mam z 5 czujników BME280, bo cena taka, że szkoda było brać tylko jeden. Testowałem je i różnica w odczytach była... nie pamiętam... 0.1 stopnia? Mam też jeden DS18B20. I tu już musiałem ustawić offset na temperaturę oraz wilgotność, bo "oszukiwał". Temperatura -0.4 stopnia, a wilgotność - 10%.
  • #17 21360684
    Karaczan
    Poziom 42  
    Posty: 6702
    Pomógł: 867
    Ocena: 1110
    roman106 napisał:
    Mam też jeden DS18B20. I tu już musiałem ustawić offset na temperaturę oraz wilgotność, bo "oszukiwał". Temperatura -0.4 stopnia, a wilgotność - 10%.


    Chyba pomyliłeś czujniki ;)
    DS18B20 to tylko czujnik temperatury

    Może chodziło ci o DHT? Bo były/są nadal popularne.
    Np DHT11 rozrzut parametrów mają ogromny. DHT22 już lepiej, kilku używam to różnice są +-0.2°C i +-5% RH. Ale cenowo nie są dziś opłacalne. Kiedyś zdobyłem dużą paczkę w dobrej cenie, BMP były zdecydowanie droższe.
    Dziś jest na odwrót ;)
  • #18 21360851
    kantacki
    Poziom 10  
    Posty: 8
    Nie wiem, może jestem pechowcem, ale w moim projekcie od 2017 roku miałem dwa smart plugi Edimax SP-1101w, które po pięciu latach zaczęły piszczeć i przestały działać. Wymieniłem na TP-linki HS110, na razie działają. Tak samo po 6 latach przestały łączyć się do Wi-Fi nodemcu z DS18B20 i musiałem je powymieniać, może były za tanie z Alledrogo za 12 PLN.

    10 sekund to już jakiś konkretny interwał. Jak temperatura z DS18B20 jest odczytywana co sekundę, to po 2 latach było 31 milionów cykli odczytu. Termometr był oryginalny, bo z sampli Dallas-Maxim za darmo z Niemiec, 4 przyszły w 2004 roku.

    Jak ktoś chce zrobić stress testy tych termometrów, to można by to podpiąć do nodemcu i tak w kółko robić odczyty, tak żeby było 60 milionów cykli w jakimś krótszym czasie i jestem ciekaw, czy to przetrwają.
  • #19 21361028
    roman106
    Poziom 28  
    Posty: 1330
    Pomógł: 96
    Ocena: 217
    Karaczan napisał:
    Chyba pomyliłeś czujniki

    No tak. Mam czujnik temperatury i wilgotności dodawany do Sonoff TH10/16 AM2301, a w środku jest DHT22. W temacie jest pomiar temperatury w salonie, więc po co DS18B20?

    BME280 były swego czasu drogie, lecz teraz mają normalne ceny Oprócz temperatury mierzą wilgotność i ciśnienie.

    kantacki napisał:
    miałem dwa smart plugi Edimax SP-1101w, które po pięciu latach zaczęły piszczeć i przestały działać

    U mnie w zeszłym roku też zaczął piszczeć i przestał działać. Winowajcą okazał się spuchnięty kondensator. Po wymianie znowu działa.
  • #20 21363950
    ex-or
    Poziom 28  
    Posty: 785
    Pomógł: 147
    Ocena: 151
    >>21360616
    roman106 napisał:
    ... DS18B20. [...] BME280 (znacznie dokładniejszy, ...

    Lektura danych katalogowych bynajmniej nie potwierdza tej opinii. Zarówno liczby bezwzględne w przedziałach temperatur, jak uwagi do danych oraz ogólny opis BME280: "odczyty czujnika temperatury służą do kompensacji odczytów ciśnienia i wilgotności a także mogą być użyte do SZACOWANIA temperatury otoczenia" (przekład i podkreślenie moje).
  • #21 21364050
    Konto nie istnieje
    Poziom 1  
  • #22 21364240
    roman106
    Poziom 28  
    Posty: 1330
    Pomógł: 96
    Ocena: 217
    ex-or napisał:
    Lektura danych katalogowych bynajmniej nie potwierdza tej opinii

    Moje prywatne odczyty temperatur nie wysyłają danych do lokalnej stacji meteo, więc nie podlegają nawet corocznej kalibracji ;)
    Mam sporo różnych termometrów w domu (takie hobby) od zegarków z termometrem, po stacje pogodowe z czujnikami zewnętrznymi. Różnica w odczytach na tych gotowych urządzaniach potrafi wynosić ponad 1°, gdzie niektóre termometry kosztowały kilka €, więc nie ma co się dziwić. Zestaw 3 czujników ze stacji meteo też po "odstaniu" w tym samym miejscu pokazują różnicę. Pamiętam, że kiedyś rozbierałem te bezprzewodowe czujniki szukając jakiejś ewentualnej regulacji, ale nic takiego nie było.

    Jak wspomniałem, tych czujników BME280 mam niecałe 10szt (na 3.3 i 5V), testowałem kilka z nich (wszystkich mi się nie chciało) i wskazywały te same temperatury. I to mi wystarczy. Mam też ze 3 czujniki z Sonoff'a i tutaj po wgraniu Supli trzeba było offsetować wskazania, bo po prostu odstawały od moich wzorców. A na oryginalnym sofcie nie ma możliwości wprowadzenia offsetu.

    Zewnętrzny termometr w ogrodzie, ten samodzielnie zbudowany, pokazuje temperaturę bardzo zbliżoną do odczytu z internetu (lokalna stacja pogodowa). Nie może być dokładnie taka sama, bo znajduje się w innym miejscu.

    khoam napisał:
    Masz na myśli oryginalne za 25 PLN a sztukę, czy klony na ali za 3 PLN za sztukę?

    Nie uwierzysz, ale kosztowały po kilka € za sztukę i spełniają moje wymagania. Ich odczyty nie offsetowałem czyli końcowa temperatura jest taka jak oryginalny odczyt, czego nie mogę napisać o innych.

Podsumowanie tematu

✨ Dyskusja dotyczy autorskiego oprogramowania do obsługi termometru cyfrowego DS18B20 na platformie ESP8266 z wykorzystaniem alternatywnego podejścia programistycznego, m.in. rezygnacji z Arduino IDE na rzecz PlatformIO oraz eliminacji funkcji delay dla lepszej efektywności. Poruszono porównania z popularnym firmware Tasmota, który oferuje rozbudowane funkcje, w tym obsługę DS18B20 i udostępnianie danych temperatury w formacie JSON przez HTTP. Autor podkreśla prostotę i specyficzne funkcje swojego programu, takie jak automatyczne przełączanie między trybem AP a klientem Wi-Fi oraz reset ustawień z konsoli. W dyskusji pojawiły się także uwagi dotyczące trwałości i jakości czujników DS18B20, porównania z innymi sensorami, takimi jak BME280 i DHT22, oraz kwestie kalibracji i dokładności pomiarów. Wspomniano o praktycznych aspektach użytkowania, takich jak zasilanie z ogniwa słonecznego, długość przewodów, oraz stabilność działania urządzeń Wi-Fi (NodeMCU, smart plugi Edimax i TP-Link). Dyskusja zawiera także linki do tutoriali i przykładów implementacji oraz sugestie dotyczące alternatywnych języków programowania, np. Rust.
Wygenerowane przez model językowy.
REKLAMA