W poprzednim wpisie opisałem pierwszą wersję sensora BTHome opartego na ESP32-C3 oraz pierwsze pomiary jego poboru energii. Teraz przyszedł czas na głębszą analizę i optymalizację, by urządzenie mogło działać jak najdłużej na zasilaniu bateryjnym.
W poprzednim artykule wspominałem, że po serii usprawnień udało się zejść do 0,401 mA średniego poboru prądu, co przekładało się na około 194 dni pracy na jednym ładowaniu ogniwa LiPo 2500 mAh (przy założeniu, że realnie dostępne jest ok. 1875 mAh).
Od tamtego czasu udało się jednak osiągnąć jeszcze lepszy wynik — obecnie średni pobór prądu wynosi zaledwie 0,162 mA.
Przeliczając to na czas działania:
-
1875 mAh / 0,162 mA = 11 574 godzin pracy
-
czyli około 482 dni działania na jednym ładowaniu
To oznacza, że czas pracy wzrósł ponad dwukrotnie względem poprzedniej wersji — z około pół roku do niemal półtora roku działania na tym samym ogniwie.
⚡ Metodyka pomiarów
Do pomiarów użyłem Power Profiler Kit, co pozwoliło mi śledzić przebieg poboru prądu w czasie z rozdzielczością pojedynczych milisekund.
Każdy pomiar obejmował pełny cykl pracy sensora:
– wybudzenie z deep sleep
– odczyt temperatury z DS18B20 (10-bit oraz domyślna rozdzielczość)
– odczyt napięcia baterii przez ADC
– transmisja danych przez BLE (BTHome)
– powrót do deep sleep
📊 Wyniki pomiarów
Poniżej przedstawiam wykresy z poszczególnych etapów pracy układu:
🧊 Odczyt DS18B20 — 10 bit
🌡️ Odczyt DS18B20 — domyślna rozdzielczość
Jak widać na powyższych wykresach okazało się, że próba wymuszenia niższej rozdzielczości pomiaru na czujniku DS18B20 — np. 9 bit lub 10 bit — wbrew oczekiwaniom nie skraca czasu cyklu, a wręcz go wydłuża. Analiza wykresów poboru prądu ujawniła, że komunikacja z czujnikiem w tych trybach trwa zauważalnie dłużej niż przy domyślnej (12-bitowej) rozdzielczości. W efekcie układ ESP32-C3 pozostaje aktywny dłużej, co przekłada się na większy całkowity pobór energii. To pokazuje, że pozornie „oszczędniejsza” konfiguracja nie zawsze prowadzi do realnych zysków energetycznych — w tym przypadku optymalnym wyborem okazała się właśnie domyślna rozdzielczość czujnika.
🔋 Odczyt napięcia baterii
📡 Nadawanie danych BTHome
🛠️ Wprowadzone optymalizacje
Na podstawie powyższych danych wykonałem kilka kroków:
– skrócenie czasu aktywnego działania ESP32-C3 (szybsze przechodzenie w deep sleep)
– wyłączanie obwodów radiowych tuż po starcie (Wi-Fi/BLE domyślnie aktywne po boot)
– zmniejszenie liczby próbek i konwersji ADC do niezbędnego minimum
– wyłączenie nieużywanych peryferiów
Największy wpływ na ograniczenie zużycia energii miała jednak modyfikacja sprzętowa, polegająca na usunięciu fabrycznego stabilizatora liniowego z płytki. Ten oryginalnie zamontowany układ charakteryzował się stosunkowo wysokim prądem spoczynkowym (około 60uA), czyli ilością prądu pobieranego nawet wtedy, gdy mikrokontroler pozostaje w trybie uśpienia i praktycznie nie wykonuje żadnych operacji. W przypadku urządzeń zasilanych bateryjnie taki niepotrzebny, stały pobór prądu potrafi znacząco skrócić czas pracy na jednym ładowaniu.
Po wylutowaniu stabilizatora podłączyłem zasilanie bezpośrednio z precyzyjnego zasilacza laboratoryjnego, co pozwoliło na dokładniejsze pomiary oraz całkowite wyeliminowanie strat generowanych przez oryginalny stabilizator. Dzięki temu mogłem ocenić rzeczywiste minimalne zapotrzebowanie energetyczne samego mikrokontrolera ESP32-C3.
Docelowo planuję przylutować TPS7A0331PDBVR, czyli wysokiej jakości stabilizator napięcia o ultra-niskim prądzie spoczynkowym wynoszącym około 250 nanoamperów. Tak niewielka wartość oznacza, że stabilizator praktycznie nie obciąża baterii podczas uśpienia układu, co czyni go idealnym rozwiązaniem dla energooszczędnych urządzeń zasilanych bateryjnie, takich jak czujniki IoT działające w trybie okresowego wybudzania.
Analiza przebiegów poboru prądu pozwoliła precyzyjnie zidentyfikować etapy pracy sensora, które najbardziej obciążały źródło zasilania, i stopniowo je zoptymalizować. Okazało się, że nawet drobne zmiany w kodzie czy konfiguracji peryferiów przekładają się na zauważalne oszczędności energii, a dzięki modyfikacjom sprzętowym udało się osiągnąć ponad dwukrotne wydłużenie czasu pracy na baterii.
W kolejnym etapie planuję przejść od prototypu do wersji docelowej — zaprojektować własną płytkę PCB z uwzględnieniem wszystkich dotychczasowych usprawnień energetycznych oraz przygotować obudowę do druku 3D w dwóch wariantach: przeznaczoną do użytku wewnętrznego oraz wersję outdoor, odporną na warunki atmosferyczne.
📍Ten wpis jest częścią serii o budowie i optymalizacji sensora BTHome opartego na ESP32-C3.
Poprzedni wpis: [link do części 1]
R.