Sleep-Modi ermöglichen energiesparenderen Betrieb des ESP32

Von Jeremy Cook

Der ESP32 ist ein unglaublicher Baustein. Er kann nicht nur Informationen mit Hunderten Megaherz verarbeiten sowie über WiFi und Bluetooth kommunizieren, sondern darüber hinaus mithilfe seiner GPIO-Pins auch vielfältige Aufgaben erledigen. Allerdings bedeutet die hohe Leistung auch einen hohen … Stromverbrauch.

Gerechterweise ist allerdings zu sagen, dass der Stromverbrauch des ESP32 im Vergleich zu ähnlichen Bausteinen vor einem Jahrzehnt tatsächlich äußerst gering ist. Aber für moderne IoT-Anwendungen – insbesondere mit Batteriebetrieb – sind jedoch auch die wenigen Hundert Milliampere bei voller Leistung schon viel zu viel.

Die gute Nachricht ist, dass der ESP32 auch ein System von Energiespar- und Tiefschlafmodi bereitstellt. Bei sorgfältigem Einsatz lässt sich der Stromappetit des ESPs zügeln – oder zumindest auf kurze Aktivitätszeiten beschränken.

Schlafmodi

Der Tiefschlafmodus und andere Energiesparmodi des ESP32 sind in der nachfolgenden Tabelle anhand des Datenblatts zusammengestellt:

Body Image 1 ESP32 Power Consumption Can Be Reduced With Sleep Modes

Bildschirmabbildung des Datenblatts

Der ESP32 bietet fünf Energiesparmodi: ESP32-Modem-Sleep, Light-Sleep, Deep-Sleep, Hibernation und Power off. Modem-Sleep und Deep-Sleep besitzen mehrere Untermodi mit verschiedenen Stromverbrauchsraten auf der Basis aktiver Verarbeitungsfähigkeiten. Hibernation deaktiviert fast alle Funktionen des Chips außer einer Echtzeituhr (RTC) zum Aufwecken nach einer festgelegten Zeit. Der Wechsel in den Power-off-Modus erfolgt, wenn der CHIP_PU-Pin auf Low gesetzt wird. Die Wiederaufnahme der Verarbeitung ist in diesem Fall nur mit Interaktion von außen möglich.

Dank der Energiesparmodi lässt sich die Stromaufnahme des ESP32 auf Werte zwischen 68 mA und 5 µA (entsprechend 0,068 A und 0,000005 A) drosseln, ohne Berücksichtigung von Power off. Dieser Vorteil wird allerdings dadurch erkauft, dass jeder Modus auch die Nützlichkeit des ESP32 einschränkt, wie nachstehend angegeben:

  • Modem-Sleep: Drahtloskommunikation deaktiviert
  • Light-sleep: CPU pausiert, jedoch Beibehaltung der Speicherzustände.
  • Deep-Sleep: Stromversorgung des ESP32-Arbeitsspeichers ausgeschaltet. Ein begrenzter Speicherbereich für die Echtzeituhr (Real-Time-Clock, RTC) wird beibehalten und kann zum Reaktivieren genutzt werden. In zwei der drei ist der Deep-Sleep-Submodi ist der ULP-Prozessor (Ultra-Low Power) aktiv, der die Ausführung einfacher Ausgaben und die Überwachung der Eingänge ermöglicht.
  • Hibernation: Lässt nur die RTC und eine eingeschränkte Anzahl der GPIOs zum Reaktivieren aktiv. Kein Speicher wird beibehalten.
  • Power off: Erneutes Einschalten nur von außen möglich. Ein Stromverbrauch von 1 µA ist in den meisten Situationen vernachlässigbar.
  • Ohne Berücksichtigung von Spannungseffekten könnte ein kleiner Akku mit 3,7 V, 850 mA einen ESP32 im Modus Modem-Sleep ungefähr 12,5 Stunden versorgen. Im Modus Light-Sleep wären über 1.000 Betriebsstunden möglich. Im mittleren Deep-Sleep-Modus wären 8.500 Stunden (rund ein Jahr) möglich. Der Hibernation-Zustand würde theoretisch fast 20 Jahre reichen. Selbstverständlich muss sich der Baustein unmittelbar wieder reaktivieren lassen, um nützlich zu sein. Aber mit sorgfältiger Planung erreicht ein ESP32-Setup eine extrem lange Nutzungszeit mit einer Akkuladung.

    Deep-Sleep-Unterschiede von ESP32-Entwicklungsplatinen

    Body Image 2 ESP32 Power Consumption Can Be Reduced With Sleep Modes

    Bildschirmabbildung des Datenblatts

    Bei der Betrachtung des Stromverbrauchs, ist ein ESP32-Chip oder -Modul nur ein Teil des elektronischen Gesamtbilds. Für Versuchszwecke werden Sie wahrscheinlich eine Experimentierplatine verwenden. Für ausgereiftere Elektronikdesigns ist eine Anordnung verbundener Teile zum Ausführen eines IoT-Geräts erforderlich. Mit sorgfältiger Programmierung lässt sich die Verwendung eines ESP32 sehr energieeffizient realisieren. Allerdings erfordern auch die umgebenden Elektronikbauteile eine sorgfältige Überlegung.

    Zur Veranschaulichung dieses Aspekts habe ich eine Experimentierplatine Adafruit HUZZAH32 ESP32 an eine Spannungsversorgung und ein Strommessgerät angeschlossen, zusammen mit dem einer DFRobot-Platine DFR0478 ESP32. Beide wurden in diesem Posting zur Realisierung einer Uhr mit dem Composite-Video des ESP32 vorgestellt und verhielten in diesem eher als Nischenprojekt zu bezeichnenden Anwendungsfall unterschiedlich. Vielleicht wäre die Energieeffizienz auch ein Unterscheidungsmerkmal zwischen den beiden.

    Um dies zu testen, verwendete ich eine modifizierte ESP32-Arduino-Beispielskizze „TimerWakeUp“, die in den Sleep-Modus wechselt, aufwacht, die auf der Platine befindliche LED-Beleuchtung einschaltet und danach wieder in den Sleep-Modus wechselt und den Vorgang zyklisch wiederholt. Jede Platine wurde mit 5,3 V versorgt, die auf die für den ESP32 benötigte Spannung von ~3,3 V umgewandelt werden musste. Die Verbrauchswerte sind nachfolgend dargestellt:

    HUZZAH32:   Sleep = 6,6 mA    Wake = 43,2 mA Wake + LED = 44,6 mA 
     DFR0478:  Sleep = 0,02 mA     Wake = 39,7 mA Wake + LED = 40,0 mA

    Fairerweise muss gesagt werden, dass die Strommessung am Akkuanschluss vielleicht eine bessere Simulation der tatsächlichen IoT-Nutzung gewesen sein könnte. Dennoch zeigt dieses Szenario offensichtlich, dass das DFR0478 FireBeetle Board im Sleep-Modus weitaus effizienter ist als sein Gegenspieler.

    Der HUZZAH32 verbraucht im Deep-Sleep-Modus 7000 µA (7 mA) Batteriestrom, was ungefähr der Messung in meinem Experiment entspricht. Andreas Spiess maß für den DFR0478 im Deep-Sleep-Modus einen Stromverbrauch von 53 µA (0,053 mA) an der Batterie. Dies ist erheblich mehr, als ich beim DFR0478 gemessen habe. Er verwendet in seinem Bericht allerdings einen anderen Spannungseingang und eine frühere Version der Platine (2.0 gegenüber 4.0 der in meinem Test verwendeten). Diese Werte bewegen sich auch an der Messgrenze meines Multimeters, was Einfluss auf dessen Genauigkeit haben könnte. Als letztes Caveat verwendet das getestete FireBeetle ein ESP32-Modul WROOM-32D, das HUZZAH32 dagegen ein WROOM-32E.

    Aus dem oben Gesagten geht hervor, dass sich die beiden getesteten Platinen um Größenordnungen unterscheiden. Dies ist eine gute Illustration dafür, dass die unterstützende Beschaltung eines ESP32 eine drastische Auswirkung auf den Stromverbrauch haben kann.

    Stromversorgung des ESP32 durch Sleep-Modi gezähmt

    Der ESP32 ist ein unglaublich leistungsstarker Baustein, der zum Betrieb aber auch relativ viel Strom benötigen kann. Mit sorgfältiger Programmierung ist es aber möglich, den Baustein über Wochen, Monate oder noch länger mit Batteriestrom zu betreiben. Der Schlüssel dazu liegt in der Kenntnis der Vor- und Nachteile von energieeffizienten Designs und den Funktionen, die ohne nennenswerte Leistungseinbußen weggelassen werden können.

    Neue Beiträge

    Leider ergab Ihre Suche kein Ergebnis

    Aktuelles über Elektronikkomponenten­

    Wir haben unsere Datenschutzbestimmungen aktualisiert. Bitte nehmen Sie sich einen Moment Zeit, diese Änderungen zu überprüfen. Mit einem Klick auf "Ich stimme zu", stimmen Sie den Datenschutz- und Nutzungsbedingungen von Arrow Electronics zu.

    Wir verwenden Cookies, um den Anwendernutzen zu vergrößern und unsere Webseite zu optimieren. Mehr über Cookies und wie man sie abschaltet finden Sie hier. Cookies und tracking Technologien können für Marketingzwecke verwendet werden.
    Durch Klicken von „RICHTLINIEN AKZEPTIEREN“ stimmen Sie der Verwendung von Cookies auf Ihrem Endgerät und der Verwendung von tracking Technologien zu. Klicken Sie auf „MEHR INFORMATIONEN“ unten für mehr Informationen und Anleitungen wie man Cookies und tracking Technologien abschaltet. Das Akzeptieren von Cookies und tracking Technologien ist zwar freiwillig, das Blockieren kann aber eine korrekte Ausführung unserer Website verhindern, und bestimmte Werbung könnte für Sie weniger relevant sein.
    Ihr Datenschutz ist uns wichtig. Lesen Sie mehr über unsere Datenschutzrichtlinien hier.