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:
- einen Microcontroller mit ESP8266 Chip*,
- USB Datenkabel
- einen Taster für die Printmontage*,
- einen 10 kOhm Widerstand*,
- ein 400 Pin Breadboard*,
- diverse Breadboardkabel*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
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.
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!"); }