ESP8266 Deep Sleep Tutorial

ESP8266 Deep Sleep Tutorial


17.09.2020  |  Tutorial, ESP8266 Projekte

Dank dem ESP8266 Deep Sleep ist es ganz einfach möglich, den ESP ohne festes Netzteil zu betreiben und dennoch nicht alle paar Tage den Akku aufladen zu müssen. So kannst du den NodeMCU ESP8266 beispielsweise als Sensor in deinem Smart Home System betreiben und musst die Batterien nur alle paar Monate wechseln! In Verbindung mit einem Raspberry Pi ergeben sich dabei unglaublich viele Möglichkeiten für ein Low Budget Smarthome! Da der Deep Sleep die Netzwerkschnittstelle und sogar die CPU stoppt, ist ein extrem niedriger Stromverbrauch möglich. Sogar die LED, die den Systembetrieb signalisiert wird ausgeschaltet.

Der ESP8266 Deep Sleep erhöht die Akkulaufzeit!
Falls du noch keine Erfahrung mit dem ESP8266 hast, empfehle ich dir, mein Einführungstutorial zum ESP8266 zu lesen. Dort erkläre ich die Grundlagen, wie zum Beispiel die Installation und Konfiguration der Arduino IDE und den Flashvorgang, damit du eigene Programme für den ESP8266 schreiben kannst.

Zum NodeMCU ESP8266 Einführungstutorial 

Voraussetzungen zum Nachbauen

Für dieses Tutorial brauchst du natürlich einen ESP8266 und am besten auch ein paar Elektro-Bauteile, wie Jumper und einen Button. Den ESP8266, sowie ein geeignetes Starterset findest du hier:
-26%

Elektro Starter-Set

ESP8266 Deep Sleep Timer

Der ESP8266 kann seinen Deep Sleep zum Beispiel in regelmäßigen Abständen beenden, eine Aktion ausführen und dann wieder den Deep Sleep starten. Das eignet sich zum Beispiel ideal für Temperatur-Sensoren. Dann kann alle 30 Minuten die Temperatur gemessen und an einen Server gemeldet werden und der ESP8266 legt sich danach gleich wieder schlafen, um Strom zu sparen. Die Schaltung dazu ist sehr einfach gehalten - es müssen nur zwei Pins direkt verbunden werden. Der Pin D0 sendet nämlich nach Ablauf der festgelegten Zeit ein Signal aus, das den RST-Pin betätigt und den ESP8266 so aufweckt:
ESP8266 Deep Sleep Timer Schaltung
  Der Code dafür ist denkbar einfach. Das Programm gibt einmal "Looping..." auf der seriellen Ausgabe aus und startet anschließend für 5 Sekunden den Deep Sleep - danach wiederholt sich das ganze:
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial);
  Serial.println("Waking up...");
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Looping...");
  startDeepSleep();
}

void startDeepSleep(){
  Serial.println("Going to deep sleep...");
  ESP.deepSleep(5 * 1000000);
  yield();
}
Auf der seriellen Ausgabe solltest du etwa folgenden Text sehen:

Deep Sleep mit Knopfdruck beenden

In manchen Situationen kann es aber auch sinnvoll sein, den ESP8266 nicht nach einer festen Zeit aus dem Deep Sleep aufzuwecken, sondern beispielsweise auf einen Knopfdruck zu reagieren. So könntest du ganz leicht einen Smart Button programmieren, der per Akku betrieben werden kann und immer eine bestimmte Aktion ausführt, sobald der Knopf gedrückt wird. Die Schaltung dafür ist ebenfalls wirklich simpel - der Button verbindet lediglich den GND-Pin mit dem RST-Pin. Liegt am RST-Pin ein niedriges Signal an, so startet der ESP8266 durch einen Reset neu und beendet somit den Deep Sleep.
ESP8266 Deep Sleep Button Interrupt Schaltung
Der Code ist fast gleich mit dem Code aus dem Beispiel mit dem Timer. Jedoch sind die Texte für die Ausgabe etwas angepasst worden und die Zeit, die an "ESP.deepSleep()" übergeben wird, lautet 0. Dadurch fällt der ESP8266 in einen unendlichen Deep Sleep, der nur über den Knopfdruck wieder beendet wird. Wird der Knopf nicht gedrückt, bleibt der ESP also im Stromsparmodus.
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial);
  Serial.println("Button pushed...Waking up...");
}

void loop() {
  // put your main code here, to run repeatedly:
  startDeepSleep();
}

void startDeepSleep(){
  Serial.println("Going to deep sleep...");
  ESP.deepSleep(0);
}
Nach mehrmaligem Drücken der Knopfes solltest du auf der seriellen Ausgabe also in etwa den folgenden Text sehen:
Serielle Ausgabe nach mehrmaligem Knopfdrücken.
Ich hoffe, dass dir mein kleines Tutorial für den ESP8266 Deep Sleep ein wenig weiterhelfen konnte und du ein paar Ideen für stromsparende Projekte mit dem ESP8266 bekommen hast.

Über den Autor


Sascha

Hallo, ich bin Sascha, der Gründer von Smarthome Blogger.

Mit einer Leidenschaft für Technologie und einem Hintergrund als Software Engineer habe ich 2016 Smarthome Blogger gegründet. Mein Ziel war es schon immer, innovative Lösungen zu entdecken, die unser Leben einfacher und intelligenter gestalten können. In meinem beruflichen Leben arbeite ich täglich mit Software und Technik, aber auch in meiner Freizeit bin ich stets auf der Suche nach neuen technischen Spielereien und Möglichkeiten, mein Zuhause zu automatisieren und zu verbessern.

Auf Smarthome Blogger teile ich mein Wissen, meine Erfahrungen und meine Begeisterung für alles rund um das Thema Smarthome.



Dieser Beitrag hat dir gefallen?

Dann abonniere doch unseren Newsletter!