ESP32 mit Batteriebetrieb

Der ESP32-Chip erfreut sich immer größerer Beliebtheit im Arduino-Umfeld. Als 32-bit-Prozessor ist er auch der leistungsfähigste Arduino mit sehr guter Unterstützung durch den chinesischen Hersteller Espressif, der auch die gesamte Unterstützung für Arduino auf GitHub veröffentlich hat. Zusätzlich kann der ESP32 natürlich per WiFi und Bluetooth kommunizieren, mit unserem „ECO Power“-Board sogar auch über LoRa-Funktechnik und erzielt dabei Reichweiten von 200 m bis 20 km. Dieser Artikel beschreibt unsere Erfahrung mit dem ESP32 im Batterie- und Akkubetrieb.


So einfach bekommt man ein ESP32-WROOM-Modul zum Laufen: Erst per Adapter das Modul programmieren, danach das Modul verbinden und schon läuft der Batteriebetrieb.

Stromverbrauch des ESP32-WROOM-Moduls

Einige ermittelte Stromverbrauchswerte des ESP32-Chips:

ESP32-ModusVerbrauch
Deepsleep7 µA
Lightsleep1 mA
Normal (240 MHz)50 mA
Reduzierter Takt (3 MHz)3,8 mA
WiFi-Betrieb80-180 mA

Diese Werte haben wir mit dem ESP32-WROOM-Modul gemessen, erreichen diese aber auch mit unserem „ECO Power“-Board bei Batteriebetrieb. Allerdings kommen die meisten ESP32-Boards nicht an diesen geringen Stromverbrauch heran. In der Regel brauchen ESP32-Boards trotz Deepsleep-Modus immer noch um die 20 mA, also mehr als das 2000-fache! Wesentliche Faktoren für den Stromverbrauch sind die auf der Platine zusätzlich vorhandenen Schaltungen, die Implementierung der USB-Stromversorgung sowie die Implementierung des Batterie- bzw. des Akkubetriebs. Mit regulären ESP32-Boards lässt sich der Stromverbrauch nicht weiter senken, also muss etwas eigenes entwickelt werden. Dies haben wir mit dem „ECO Power“-Board getan.

Vergleich: 32-bit-MCUs im Stromsparmodus

Diese Werte haben wir in der Praxis erreicht, was zeigt, dass der sehr leistungsfähige ESP32 äußerst stromsparend ist – natürlich mit Kompromissen, aber immerhin mit einer Standard-Arduino-Umgebung.

Wahl der richtigen Batterien bzw. Akkus

Der ESP32 läuft grundsätzlich mit ca. 2,55 bis 3,6 V, wie es beim ESP32-WROOM-Modul der Fall ist. Externe Erweiterungen wie beispielsweise ein Bildschirm oder andere Komponenten benötigen oft mindestens 3,3 V. Möchte man den ESP32 mit langer Batterie- bzw. Akkulaufzeit betrieben, gibt es einiges zu beachten. Um nicht in diese Fallen zu laufen, hier eine Übersicht.

1. ESP32-Betrieb über eine Powerbank

Das ist so ziemlich die schlechteste Variante. So eine Powerbank nutzt intern einen 3,7 V Lithium-Akku, transformiert diese Spannung dann mit Verlust auf 5 V, ein angeschlossener ESP32 nutzt dann einen LDO (Spannungsregler), der die 5 V auf 3,3 V herunterregelt. Hinsichtlich der Energieeffizienz ist dies eine Katastrophe; mehrfaches Umwandeln verbraucht permanent erheblich Strom (also ständig, auch wenn der ESP32 nur 7 µA anfordert). Zusätzlich schalten einige Powerbanks automatisch ab, da diese glauben, es sei aufgrund der geringen Stromaufnahme des ESP32 kein Verbraucher mehr angeschlossen.

2. ESP32-Betrieb über einen NiMH-Akku oder reguläre Batterien (2 x 1,5 V)

Ein direkter Betrieb über zwei NiMH-Akkus funktioniert nicht, da ein Akku nur ca. 1,2 V bringt, also 2,4 V bei zwei Batterien. Das ist zu wenig für die erforderlichen 2,55 V, welche der ESP32 mindestens benötigt. Drei NiMH-Akkus in Reihe geschaltet sind auch keine Option, da die maximale Spannung von 3,6 V für den ESP32 bei vollen Akkus überschritten wird.

Mit regulären Batterien (außer Lithium) funktioniert dies auch nicht lange, da die Mindestspannung des ESP32 von 2,55 Volt nach einer gewissen Betriebsdauer unterschritten wird und die Batterie aber noch bei 70% ihrer Gesamtkapazität ist. Zusätzlich benötigt der ESP32 bei WiFi kurzfristig auch schnell mal 400-mA-Impulse – da bricht die Batteriespannung von regulären Batterien zusammen und der ESP32 läuft in den Reset.

3. ESP32-Betrieb über Lithium-Batterien

Egal ob zwei 1,5-V-Lithium-Batterien in Reihe oder eine CR123-3-V-Lithium-Batterie, mit Lithium-Batterien funktioniert alles hervorragend. Diese halten nämlich ziemlich konstant eine Spannung von 3 V, bei unter 2,7 V sind dann auch über 90% der Kapazität einer Lithium-Batterie verbraucht, bei 2,55 V ist sie dann praktisch leer. Auch den kurzfristigen großen Strombedarf bei WiFi-Betrieb liefern Lithium-Batterien ohne Probleme. So ist beispielsweise mit einer Varta CR123 (3 V, 1700 mAh) sogar ein Standby-Betrieb von über 5 Jahren möglich, natürlich abhängig davon, wie oft der ESP32 aufwacht und etwas tun muss, bzw. wie lange und wie häufig WiFi oder Bluetooth verwendet wird.

Da Lithium-Batterien eine sehr geringe Selbstentladung haben und auch bei -20 °C Kälte auch noch gut funktionieren, sind diese zu bevorzugen.

4. ESP32-Betrieb über LiFePO4-Akkus

Moderne LiFePO4-Akkus funktionieren ebenfalls hervorragend, liefern allerdings bei gleicher Baugröße ca. 70% weniger Energie als eine Lithium-Batterie. Dafür können LiFePO4-Akkus aber wieder aufgeladen werden bzw. mit einem geladenen Akku ausgetauscht werden. LiFePO4-Akkus liefern auch unproblematisch hohe Leistungen für den WiFi-Betrieb, haben dabei aber nicht den Nachteil wie LiPo-Akkus, welche sich bei falscher Nutzung oder Qualitätsmängeln entflammen können.

Für den kurzfristigen Betrieb, also Wochen und Monate, sind LiFePO4-Akkus gut geeignet. Es ist jedoch dringend zu beachten, dass ein spezielles Ladegerät benötigt wird, welches für LiFePO4-3-V-Akkus geeignet ist.

5. ESP32-Betrieb über LiPo- oder Lithium-Akkus

LiPo- oder Lithium-Akkus funktionieren natürlich, da diese genügend Leistung für den ESP32 liefern. Allerdings ist die Spannung, je nach Ladezustand, mit 3,7 bis 4,2 V viel zu groß für den ESP32. Daher muss diese heruntergeregelt werden. Das bringt den Nachteil mit sich, dass ein Großteil der Energie permanent zum Herunterregeln der Spannung auf 3,3 V verbraucht wird. Einfache LDO-Regler benötigen für den Standby ca. 2000 mal mehr Strom als der ESP32 im Deepsleep-Modus, und das durchgängig jede Sekunde, 24 Stunden pro Tag, 365 Tage. Selbst bessere Regler benötigen immer noch viel Strom.

Selbstverständlich funktionieren LiPo-Akkus für den Betrieb von einem Tag bzw. wenigen Tagen, aber über Wochen und Jahre ist dies so gut wie unmöglich.

Zusammenfassung

Beim Batterie-/Akkubetrieb mit einer Standbydauer von Wochen und Jahren ist die Lithium-Batterie die erste Wahl.

Stromvergleich ESP32-Boards im Deepsleep-Modus:

BoardStromverbrauchKommentar
ECO Power7 µAper Lithium-Batterie oder LiFePO4-Akku
ESP32 DevKitC11 mAper USB-Stromversorgung

Die Uhrzeit im Deepsleep-Modus beim ESP32

Im Deepsleep-Modus schaltet der ESP32 die CPU und den dazu gehörigen Quarz ab. Ein interner Oszillator sorgt dafür, dass die Uhrzeit trotzdem weiterläuft. Dieser interne Oszillator ist aber sehr ungenau und temperaturabhängig, sodass sich im permanenten Deepsleep-Modus schnell eine Abweichung von 20 % und mehr einstellt. Damit stimmt die Uhr nach wenigen Tagen überhaupt nicht mehr. Hinzu kommt, dass bei einem Batteriewechsel oder einem Reset bzw. WatchDog die Uhrzeit auf 0 zurückgesetzt wird. Für einen langfristigen Batterie- bzw. Akkubetrieb ist das schon recht problematisch; diese Einschränkung existiert praktisch bei allen ESP32-Boards.

Unser „ECO Power“-Board löst das Problem, indem zusätzlich eine hochgenaue RTC-Uhr (DS3231) verbaut ist, welche nach dem Deepsleep einfach die richtige Uhrzeit setzt. Zusätzlich werden alle DS3231-RTCs einzeln während der „ECO Power“-Produktion gegen eine Atomuhr kalibriert. Die DS3231 ist auch temperaturkompensiert (TCXO), sodass diese unabhängig vom Wetter über viele Jahre hinweg die genaue Uhrzeit liefert.

Verweise