ESP8266 Deep Sleep Tutorial

ESP8266 Apr. 13, 2020
https://my.makesmart.net/topic/62/tutorial-der-einstieg-mit-deep-sleep

Es ist soweit! Die ersten Projekte mit dem ESP werden langsam langweilig… Als nächstes ist Deep-Sleep dran! Ich nämlich brauche ein möglichst stromsparenden Betrieb, da mein Projekt später mit einer Batterie laufen soll - und das möglichst lange.

Der Betrieb mit einer Deep-Sleep-Funktion eignet sich dafür bestens.


Was ist Deep-Sleep?

Deep-Sleep ist ein Zustand des Boards, welches einen sehr geringen Stromverbraucht misst. Grund dafür ist, dass so gut wie alle Funktionen des Boards außer Betrieb sind.

Besser gesagt: Alle Funktionen bis auf RTC.

Hier mal eine Übersicht, welche Funktionen von Deep-Sleep betroffen sind:

FunktionZustand
WLANaus
System clockaus
CPUaus
RTCan

Laut verschiedenen Angaben im Netz beträgt der Stromverbrauch während dem Deep-Sleep zwischen 10 und 20 uA. Das entspricht 0,01 - 0,02 mA. Das ist der Wahnsinn!

Ob 10uA oder 20 uA, … mit Deep-Sleep kann der ESP, je nach Aufgabe, monatelang mit einer einzigen Batterie betrieben werden.


Wie wird der ESP wieder aufgeweckt?

Zum Aufwecken des ESPs sind mir zwei Möglichkeiten bekannt:

1. 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.

2. 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.


Tutorial

1. Deep-Sleep mit 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.

ESP8266-01S Pinout

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. 👍


2. Deep-Sleep mit Zeit

Um den ESP auf 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 uS.

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.

… obacht - jetzt wird’s fummlig:

Quelle: https://arduinodiy.wordpress.com/2020/01/18/very-deepsleep-and-energy-saving-on-esp8266/


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.


Viel Spaß bei euren Projekten,

cooper

Community

Die makesmart Community ist der Ort, an dem du deine Ideen mitteilen und deine Erfahrungen austauschen kannst.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließe als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Du hast dich erfolgreich angemeldet.
Erfolg! Dein Konto ist vollständig aktiviert, du hast jetzt Zugang zu allen Inhalten.