ESP8266 Deep Sleep Tutorial

Kategorien:
ESP8266 ProjekteTutorial
Teile diesen Beitrag

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.

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.

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:

Amazon Prime5,99 €
Stand: 27. November 2020 12:45 Uhr
Auf Amazon ansehen
N/A
Stand: 27. November 2020 6:18 Uhr
Auf Amazon ansehen

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

Die Schaltung für den ESP8266 Deep Sleep mit Timer.

 

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:

Die Ausgabe des Deep Sleep Skripts mit Timer.

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 neu und beendet somit den Deep Sleep.

ESP8266 Deep Sleep Button Interrupt Schaltung

Der Button verbindet den GND-Pin mit dem RST-Pin und beendet so den Deep Sleep.

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.

Teile diesen Beitrag
Vorheriger Beitrag
ESP32 Tutorial – Eine Einführung
Nächster Beitrag
ESP8266 DHT22 Temperatur-Sensor bauen
Menü