ESP8266 aus dem Deep Sleep mit einem Taster wecken

Wie du einen ESP8266 aus dem Deep Sleep mithilfe von einem Taster erwecken kannst, erfährst du in diesem Beitrag.

Ich habe dir bereits im Beitrag NodeMCU – Deep Sleep des ESP8266 gezeigt, wie du einen ESP8266 in den Deep Sleep versetzt und nach einer Zeit x dieser wieder selbständig erwacht und einen Text auf der seriellen Schnittstelle ausgibt.

Wozu der deep sleep?

Der deep sleep am Mikrocontroller lohnt sich, wenn du dein Projekt an einer Batterie betreiben möchtest. Aber auch wenn du Messwerte nur alle X Minuten, Stunden etc. benötigst, dann kann der deep sleep dir nützlich sein.

Wenn ein Mikrocontroller in den deep sleep versetzt wird, dann spart dieser Strom und auch wird dieser nicht unnötig betrieben, somit lebt der Baustein deutlich länger.

Benötigte Ressourcen

Für den Nachbau dieses Beitrages benötigst du:

Aufbau der Schaltung

In diesem Beitrag verwende ich den Wemos D1 Mini V4 mit USB-Schnittstelle. Dieser Mikrocontroller verfügt über den „normalen“ ESP8266 Chip jedoch über eine USB-Typ-C Schnittstelle.

Der Taster in dieser Schaltung wird mit dem Pin RST des Mikrocontrollers verbunden sowie per 10 kOhm PULL Up Widerstand mit 3.3V VCC. Der andere Pin des Tasters wird mit GND verbunden.

Schaltung - ESP8266 mit Taster
Schaltung – ESP8266, mit Taster

Programmieren – ESP8266 per Taster aus dem deep sleep erwecken

Der nachfolgende Code dient dazu, den Mikrocontroller per Tastendruck aus dem deep sleep zu erwecken. Die Codezeile in der Funktion loop wird nie erreicht, da der Mikrocontroller bereits in der Funktion setup wieder in den Tiefschlaf versetzt wird.

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);
  //setzt den Timeout auf 2000 Millisekunden
  Serial.setTimeout(2000);

  //Warten darauf das die serielle Kommunikation aufgebaut wurde
  while (!Serial) {}

//Ausgeben der Textzeilen auf der seriellen Schnittstelle
  Serial.println("Juhu, hier bin ich wieder!");
  //zusätzlich noch einmal die Millisekunden seit dem Start
  Serial.print("läuft seit ");
  Serial.println(millis());
  //den Mikrocontroller in den deep sleep versetzen
  ESP.deepSleep(0);
}

void loop() {
  //diese Zeile wird nie erreicht!
  Serial.println("Hallo!");
}

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert