Stell dir vor, du baust einen wetterfesten Außensensor, der einmal täglich die Temperatur misst und die Daten an deinen Server sendet. Oder du entwickelst einen Bewegungssensor für dein Smart-Home-System, der nur aktiviert wird, wenn jemand den Raum betritt. Vielleicht planst du auch eine batteriebetriebene Wildtierkamera, die nur bei Bewegungserkennung Bilder aufnimmt. In all diesen Fällen sorgt Deep-Sleep dafür, dass der Stromverbrauch minimiert wird und deine Sensoren monatelang ohne Batteriewechsel laufen können.
Mit Deep-Sleep kannst du deinen ESP besonders energieeffizient betreiben und die Batterielaufzeit erheblich verlängern. Aber Achtung: Nicht alle Boards sind gleich effizient im Deep-Sleep-Modus.
Zum Kapitel springen Was ist Deep Sleep?
Deep-Sleep ist ein Zustand des Boards, in dem es einen sehr geringen Stromverbrauch aufweist. Grund dafür ist, dass so gut wie alle Funktionen des Boards außer Betrieb sind. Besser gesagt: Alle Funktionen bis auf die RTC (Real-Time Clock).
Hier mal eine Übersicht, welche Funktionen des Boards im Deep-Sleep Modus betroffen sind:
Funktion | Zustand |
---|---|
WLAN | aus |
System clock | aus |
CPU | aus |
RTC | an |
Wir erkennen, dass der Deep-Sleep-Modus tatsächlich ein Standby-Modus ist, in dem nur begrenzte Funktionen verfügbar sind. Dieser Modus ist jedoch entscheidend, um den Stromverbrauch zu minimieren und die Batterielaufzeit zu verlängern.
Zum Kapitel springen Stromverbrauch im Deep-Sleep
Laut verschiedenen Angaben im Netz beträgt der Stromverbrauch während dem Deep-Sleep zwischen 10 und 20 µA. Das entspricht gerade einmal 0,01 - 0,02 mA. Das ist der Wahnsinn! Im Datenblatt ist der Deep-Sleep mit 20 µA angegeben, und damit kann der ESP, je nach Aufgabe, monatelang mit einer einzigen Batterie betrieben werden.
Mehr dazu findest du im Datenblatt des ESP8266 0a-esp8266ex_datasheet_en.pdf im Kapitel Table 3-4. Power Consumption by Power Modes.
Allerdings ist hier Vorsicht geboten. Der Deep-Sleep ist nicht in allen Fällen gleich effizient. In Verbindung mit Entwicklerboards wie zum Beispiel dem D1 Mini kann es zu einem erhöhten Stromverbrauch kommen. Damit ist der Deep-Sleep bei diesen Boards unter Umständen nicht wirklich brauchbar. Entwicklerboards haben zusätzliche Bauteile wie unter anderem den Serial-Konverter, der zusätzlich Strom verbraucht und so die Akkulaufzeit erheblich verringert. In der Messung sind das bei einem ESP8266 D1 Mini etwa 0,001A (1000 µA). Eine Messung des Stromverbrauchs war mir mit dem ESP01-S im Deep-Sleep nicht möglich.
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
Zum Kapitel springen Vergleich des Stromverbrauchs im Deep-Sleep
Gerät | Stromverbrauch im Deep-Sleep | Stromverbrauch in mA |
---|---|---|
ESP8266 (Datenblatt) | 20 µA | 0,02 mA |
ESP8266 D1 Mini | 1000 µA | 1,0 mA |
Zum Kapitel springen Beispielrechnung mit einem 300mAh Akku
Angenommen, wir verwenden einen 300mAh Akku. Um zu berechnen, wie lange der Akku hält, verwenden wir die folgende Formel: Batterielaufzeit (in Stunden) = Batteriekapazität (in mAh) / Stromverbrauch (in mA)
-
ESP8266 (Datenblatt):
Batterielaufzeit = 300mAh / 0,02mA = 15000 Stunden
Das sind etwa 625 Tage oder knapp 1,7 Jahre. -
ESP8266 D1 Mini:
Batterielaufzeit = 300mAh \ 0,02mA = 300 Stunden
Das sind etwa 12,5 Tage.
Diese einfache Rechnung zeigt, wie wichtig es ist, den Stromverbrauch genau zu kennen, um die Batterielaufzeit optimal zu nutzen. Natürlich sind diese Werte rein theoretisch und in der Praxis kann es definitiv zu anderen Werten kommen. Jedoch zeigt der Vergleich deutlich, dass Deep-Sleep nicht immer gleich effizient ist.
Zum Kapitel springen Möglichkeiten zum Aufwecken
Zum Aufwecken des ESP8266 während eines Deep-Sleeps gibt es zwei Möglichkeiten:
-
Aufwecken per Knopfdruck
Eine Möglichkeit, den ESP aus dem Schlaf zu holen, ist der Knopfdruck. Hierbei gibt es keine Zeitbeschränkung. Das Aufwecken per Knopfdruck könnte zum Beispiel für Fernbedienungen jeglicher Art verwendet werden. -
Automatisch nach Ablauf einer bestimmten Zeit
Der ESP kann auch für eine bestimmte Zeit in den Deep-Sleep versetzt werden. Die maximal mögliche Dauer beträgt hierbei 71 Minuten. Diese Methode eignet sich unter anderem für Sensoren, die regelmäßig einen Wert liefern oder abfragen sollen.Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
- Preis aufsteigend
- Preis absteigend
- Reduzierte zuerst
SONOFF MS01 IP55 Wasserdicht Smart Flora Boden Monitor Garten Pflanzenpflege Boden Gras Feuchtigkeit Tester Sensor DIY Blumen Garten Tester ¹ Preis: 14,99 € ¹ auf Lager ¹ Primeberjalan Touch-Sensor-Modul Chip zur Erkennung von PCB DIY mit LED-Streifen und Kabeln (weißes Licht), 10 Stück ¹ Preis: 29,29 € ¹ auf Lager ¹ PrimeDollaTek DIY 5PCS TTP223B Digital Touch Kapazitives Sensor Switch Modul für Arduino ¹ Preis: 4,99 € ¹ auf Lager ¹ PrimeIrfora Batterie IC-Karten sensor Schrankschublade Intelligentes Smart Lock DIY unsichtbares verstecktes digitales Schloss ohne perforiertes Loch ¹ Preis: 18,99 € ¹ auf Lager ¹ PrimeRUNCCI-YUN Bodenfeuchtigkeitssensor-Set, automatisches Bewässerungssystem mit Mini-Wasserpumpe für Arduino Garten-DIY-Kit ¹ Preis: -5% 8,99 € ¹ auf Lager ¹ PrimeAZDelivery 5 x HC-SR501 PIR Bewegungssensor Bewegungsmelde Modul kompatibel mit Arduino und Raspberry Pi inklusive E-Book! ¹ Preis: 13,99 € ¹ auf Lager ¹ PrimeANGEEK 5 Stück KY-037 New 4pin Voice Sound Detection Sensor Module Microphone Transmitter Smart Robot Car for arduino DIY Kit ¹ Preis: 6,99 € ¹ auf Lager ¹ Prime3,7V DIY Solar LED Board, Control Sensor Board Modul für Garten Nachtlicht Controller Infrarot, Solarlampe Platine Kit (5Pcs) ¹ Preis: 10,99 € ¹ auf Lager ¹ StandardversandDollaTek 5er Analog Ceramic Piezo Vibration Sensor Modul 3.3V / 5V für Arduino DIY Kit ¹ Preis: 6,99 € ¹ auf Lager ¹ PrimeAideepen 6 Stück Bodenfeuchtigkeitssensor, Hygrometer-Modul V1.2, kapazitiver korrosionsbeständiges Modul für Pflanzenbewässerung, DIY-Kits ¹ Preis: -20% 7,19 € ¹ auf Lager ¹ PrimeANGEEK 5Stk. 5V KY-008 650nm Laser Sensor Modul für Arduino Raspberry DIY ¹ Preis: 5,99 € ¹ auf Lager ¹ PrimeANGEEK 5 Stück TCRT5000 Infrared Reflectance Sensor Tracing lichtschranke Module kompatibe mit Arduino DIY ¹ Preis: 8,99 € ¹ auf Lager ¹ PrimeKEYESTUDIO ESP32 IoT Smart Farm Starter Kit for Arduino and Scratch Programming, DIY Sensor Kit ¹ Preis: 59,99 € ¹ auf Lager ¹ PrimeDuleutgnu Reversible Pailletten DIY Dekoration Wand sensorisches lustiges Spielzeug Entdeckung Lernen mit Reiseetui für Kinder 40 x 27 Zoll Regenbogenfarbe ¹ Preis: 23,88 € ¹ auf Lager ¹ StandardversandANGEEK TCS34725 Low Power IR Blocking Filter RGB Light Color Sensor Recognition DIY Kit Electronic PCB Board for Arduino ¹ Preis: 6,99 € ¹ auf Lager ¹ PrimeAZDelivery 5 x KY-018 LDR Lichtsensor mit Fotowiderstand Helligkeitssensor Diode kompatibel mit Arduino und Raspberry Pi inklusive eBook! ¹ Preis: 6,99 € ¹ auf Lager ¹ PrimeLichtsensor Sound Modul MP3 Sound Chip Modul, mit 8 MB Speicher Micro USB Lautsprecher, für DIY Festival Grußkarte Kreative Geschenke Modelle Bastelarbeiten ¹ Preis: -13% 13,99 € ¹ auf Lager ¹ PrimeElqubkan Touch-Sensor-Modul, DIY-Leiterplatte, PCB, Erkennungsschaltung, mit LED-Streifen und Kabeln, 10 Stück (Licht) ¹ Preis: 20,88 € ¹ auf Lager ¹ PrimeBerryBase CCS811 Luftqualitäts-Sensor mit Breakout Board ¹ Preis: 9,89 € ¹ auf Lager ¹ StandardversandS SIENOC 3D Drucker 1.75mm Filament Erkennungsmodul Filament Monitor Sensor mit Kabel DIY Zubehör (1) ¹ Preis: 7,00 € ¹ auf Lager ¹ PrimeHailege 5pcs Piezoelektrischer Sensor Analoges Keramik-Schwingungssensor-Modul Piezoelektrizität für Arduino DIY KIT ¹ Preis: 7,49 € ¹ auf Lager ¹ PrimeHailege 3pcs AM312 Mini Pyroelektrisches PIR Human Sensor Modul PIR Infrarot IR Sensor Körper Manuelle Bewegung Infrarot IR Detektor ¹ Preis: 7,99 € ¹ auf Lager ¹ PrimeHOSMART 1/2 Meile Drahtloser Bewegungsmelder auffahrt Alarm funkalarmanlage und Wetterfeste Sicherheit Bewegungsmelder ¹ Preis: 49,99 € ¹ auf Lager ¹ PrimeCitywalk Touch-Sensor-Modul, Leiterplatte, DIY, PCB, Sensing, Schaltkreis-Chip mit LED-Streifen und Kabeln (RGB), 10 Stück ¹ Preis: 16,85 € ¹ auf Lager ¹ StandardversandHailege 5pcs Hochempfindliche Sprachgeräuscherkennung Sensor Mikrofon Sound Sensor Modul 3,3V-5V Roboter Hubschrauber Flugzeug DIY Kit ¹ Preis: 6,99 € ¹ auf Lager ¹ PrimeMehr Ergebnisse für sensoren¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
Die Beschränkung auf 71 Minuten liegt an der Größe der Variable, die die Zeit im Deep-Sleep speichert. Der Wert wird in Mikrosekunden angegeben und die maximale Größe eines 32-Bit-Integers beträgt 4.294.967.295. Wenn man diesen Wert in Mikrosekunden umrechnet, erhält man etwa 71 Minuten.
Zum Kapitel springen Deep Sleep mit Aufwachen per Knopfdruck
Um den ESP auf unbestimmte Zeit in den Deep-Sleep zu schicken, wird lediglich eine Zeile Code benötigt.
ESP.deepSleep();
In einem Programm könnte das so aussehen:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(5000);
ESP.deepSleep();
}
Sobald der ESP mit Strom versorgt wird, leuchtet die blaue LED für 5 Sekunden. Nach Ablauf des delay(5000);
schicken wir den ESP auf unbestimmte Dauer in den Deep-Sleep-Modus. Zum Aufwecken muss der Pin RST
kurz mit GND
verbunden werden.
Sobald RST nicht mehr mit GND verbunden ist, startet der ESP und führt den gespeicherten Programmcode aus. Die Zeile ESP.deepSleep();
schickt den ESP anschließend wieder schlafen, bis wir ihn erneut aufwecken.
Fertig ist der ESP, der auf Knopfdruck startet, das Programm ausführt, und danach wieder pennen geht.
Zum Kapitel springen Deep Sleep mit Aufwachen per Zeit
Um den ESP für eine bestimmte Zeit in den Deep-Sleep zu schicken, wird die selbe Zeile Code benötigt, diesmal aber mit Zeitangabe. Die Angabe der Zeit erfolgt in Mikrosekunden.
ESP.deepSleep(5000000);
Diese Zeile schickt den ESP für 5 Sekunden in den Deep-Sleep. In der Funktion können auch mathematische Bezeichnungen verwendet werden. Folgende Zeile schickt den ESP ebenfalls für 5 Sekunden in den Deep-Sleep.
ESP.deepSleep(5e6);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW);
delay(5000);
ESP.deepSleep(5e6);
}
Auch hier gilt: Der ESP führt das Programm aus und wird anschließend in den Deep-Sleep geschickt, diesmal aber nur für 5 Sekunden. Leider geht das Aufwecken nicht ohne Weiteres automatisch.
Damit sich der ESP nach Ablauf der 5 Sekunden selbst wecken kann, muss eine dauerhafte Verbindung zwischen RST
und GPIO16
hergestellt werden. Erst diese Verbindung automatisiert den Vorgang des Weckens.
Sobald die Verbindung steht, haben wir einen ESP, der alle 5 Sekunden das gespeicherte Programm ausführt und sich anschließend selbst wieder in den Deep-Sleep versetzt. Übrigens: Der ESP kann auch bei der letzteren Methode jederzeit durch die Verbindung von RST und GND manuell oder per Knopfdruck aufgeweckt werden.