Pół roku z jednego ogniwa – jak ujarzmiłem ESP32-C3 i DS18B20

By | Wrzesień 9, 2025

Od dawna chodziło mi po głowie zrobienie sensora, który po prostu działa. Wkładasz ogniwo LiPo, wrzucasz do ogrodu albo piwnicy i zapominasz o nim na kilka miesięcy. Żadnych kabli, żadnych kombinacji – tylko Bluetooth, Home Assistant i jeden malutki ESP32-C3.

Brzmi jak banał? No to posłuchajcie, ile pułapek kryje się w tak prostym pomyśle.

Pierwsze testy i zimny prysznic

W głowie miałem prosty obrazek: ESP32-C3 Mini, do tego DS18B20 na przewodzie i ramka BTHome v2 lecąca co minutę do Home Assistanta. Do tego pomiar napięcia baterii przez dzielnik i oczywiście deep sleep – czyli klasyka. Wyobrażałem sobie już, jak na dashboardzie rośnie piękny wykres temperatury i napięcia, a w rogu wisi napis „czas pracy: pół roku na jednej baterii”.

ESP32 C3 mini

Pierwsze uruchomienie wyglądało obiecująco. Kawa w kubku, serial monitor odpalony, dane lecą. Ale wtedy przyszło to, czego najbardziej się bałem – pierwsze pomiary prądu. Wkładam urządzenie pod Power Profiler Kit II, patrzę na wykres i… prawie się przewróciłem z krzesłem.

Wykres zuzycia energii podczas nadawania ramek z danymi widac wyraźnie trzykrotne nadanie wiadomości za pomocą BLE

Zamiast oczekiwanych mikroamperów w deep sleep, wykres pokazywał mi miliampery. I to nie jakieś pojedyncze piki, tylko stały pobór, który zjadał baterię w zastraszającym tempie. Moje wyobrażone pół roku pracy stopniało do… jednego tygodnia.

To był moment zimnego prysznica. Zamiast triumfalnie ogłaszać, że mam działający sensor, musiałem przyznać: coś tu bardzo nie gra. I zamiast zabawy z Home Assistantem czekała mnie długa seria eksperymentów – tropienie złodziei prądu po kolei, pin po pinie, element po elemencie.

Power profiler Kit v.II fantastyczne narzędzie do pomiarów prądu podczas pracy urządzeń.

Na szczęście właśnie w tym momencie zaczyna się najciekawsze – bo takie „porachunki” z własnym układem to trochę jak gra detektywistyczna. Masz ślady, masz poszlaki (dziwne schodki na wykresie), a Twoim zadaniem jest znaleźć sprawcę, który zjada cenne mikroampery.

Polowanie na złodziei prądu

Po pierwszym szoku wiedziałem jedno: jeśli chcę wycisnąć z baterii pół roku pracy, muszę znaleźć każdy zbędny mikroamper. To nie jest praca glamour – bardziej dłubanie z lupą i notatnikiem – ale satysfakcja, kiedy linia na wykresie wreszcie schodzi w dół, jest ogromna.

Na pierwszy ogień poszła czerwona dioda LED na płytce C3-mini. Winowajca oczywisty: świeci cały czas, niezależnie od tego, czy mikrokontroler śpi czy nie. Pobór? Kilka miliamperów – czyli więcej niż cały ESP32-C3 w deep sleep. Lutownica, dwa ruchy i… nagle wykres uspokoił się o całe rzędy wielkości.

Potem przyszło do DS18B20. Sam czujnik jest oszczędny, ale sposób jego zasilania robi różnicę. Podłączyłem go kolejno do GPIO8, GPIO9 i GPIO10, patrząc, jak reaguje Power Profiler. Na pierwszych dwóch liniach prąd wcale nie wracał do ciszy – w tle coś „ciągnęło”. Dopiero GPIO10 dało czysty efekt: baseline na poziomie ~200 µA i tylko wyraźny, krótki skok do ~400 µA podczas właściwej konwersji temperatury. Wtedy miałem pewność, że dobrze obrałem kierunek – zasilanie z GPIO i odcinanie po pomiarze.

Wykres zuzycia energi podczas testów podlączenia DS18B20 do różnych pinów procesora.

Kolejna sprawa to dzielnik napięcia VBAT. Na kartce wyglądało pięknie – dwa rezystory 220k i 100k, pobór znikomy. Ale wykres nie kłamał: baseline był cały czas podniesiony. Wystarczyło podpiąć jeden z rezystorów do GPIO zamiast do masy i nagle mogłem „włączać” dzielnik tylko na chwilę. Widać to było jak na dłoni – garb na wykresie w czasie pomiaru, a potem znów płaska linia spoczynkowa.

No i wreszcie BLE. Tutaj Power Profiler pokazał serię charakterystycznych „zębów”: kilka miliamperów na ułamek sekundy, ilekroć ESP nadawało reklamę. Jeśli pozwoliłbym mu słać ramki co sekundę – wykres wyglądałby jak grzebień, a bateria topniałaby w oczach. Dlatego u mnie to tylko trzy krótkie zęby po wybudzeniu, potem radio jest wyłączane i baseline znów wraca do ciszy.

Takie pomiary były bezlitosne, ale też dawały jasny feedback: każda zmiana, każdy trik z GPIO od razu odciskał ślad na wykresie. Dzięki temu krok po kroku udało się uciszyć złodziei prądu i doprowadzić sensor do poziomu, o jakim na początku tylko marzyłem.

Efekt końcowy

Po kilku iteracjach, kilkunastu pomiarach i jednej wylutowanej diodzie udało się zejść do 0,401 mA średniego poboru. To już nie kosmetyczna poprawka, tylko realna różnica, którą widać w każdym cyklu pracy.

Policzmy: ogniwo LiPo 2500 mAh, z czego realnie ~1875 mAh użyteczne. To daje 4675 godzin pracy. W praktyce – 194 dni, czyli prawie pół roku działania na jednym ładowaniu.

I to wszystko na zwykłym DevKitM-1, bez żadnej customowej płytki. Już na tym etapie można powiedzieć, że projekt osiągnął poziom sensora, który realnie można wrzucić do ogrodu albo piwnicy i zapomnieć o nim na wiele miesięcy.

Ale to nie jest ostatnie słowo. W głowie mam już kolejne kroki: lepsze zasilanie procesora i eliminacja stockowego stabilizatora na płytce na rzecz czegoś bardziej energooszczędnego. Być może uda się urwać kolejne mikroampery – a wtedy pół roku stanie się tylko przystankiem w drodze do jeszcze dłuższego czasu pracy. Czas pokaże, w którą stronę pójdę dalej, ale jedno jest pewne – to dopiero początek zabawy.

Podsumowanie

Z prostego pomysłu „zrobię sobie czujnik na ESP32-C3” wyszedł projekt, który nauczył mnie więcej niż niejeden kurs online. Okazało się, że deep sleep to dopiero początek, a prawdziwa oszczędność energii kryje się w szczegółach: wylutowanej diodzie, sprytnie odciętym dzielniku, dobranym pinie zasilającym DS18B20 czy kontrolowanym nadawaniu BLE.

Gotowy czujnik zintegrowany z homeassistantem.

Najfajniejsze w tym wszystkim jest to, że efekt końcowy nie wygląda jak eksperyment w garażu, tylko jak coś, co spokojnie mogłoby trafić do seryjnej produkcji: sensor, który działa prawie pół roku na jednym ładowaniu, integruje się z Home Assistantem bez żadnych kombinacji i jest całkowicie bezobsługowy.

To też świetny przykład na to, że każdy mikroamper ma znaczenie. Wystarczyło parę świadomych decyzji i wykres z Power Profiler Kit II zamienił się z „grzebienia zużycia” w spokojną linię z krótkimi, kontrolowanymi pikami.

Czy to koniec historii? Raczej nie. Teraz czas na własne PCB w SMD, a w planach majaczy już wymiana stockowego stabilizatora na coś bardziej dopasowanego do pracy bateryjnej. Jeśli uda się urwać kolejne mikroampery, może z pół roku zrobi się rok. A wtedy ten mały sensor będzie już nie tylko hobbystycznym projektem, ale pełnoprawnym kawałkiem domowej infrastruktury IoT.

R.