ESPTOP 10 Timer wach aus dem tiefen Schlaf mit Arduino IDE auf

ESPTOP 10 Timer wach aus dem tiefen Schlaf mit Arduino IDE auf
Vesp32 ist eine Mikrocontroller -basierte IoT -Plattform. Der Stromverbrauch ist eines der Hauptprobleme bei der Arbeit mit einem Mikrocontroller -Board. Wenn wir ESP32 mit einem DC -Versorgung mit Strom versorgen, müssen wir nicht mehr für den Stromverbrauch sind, aber mit Batterie -Backup -Projekten müssen wir langfristig die Gesamtleistung optimieren.

Hier werden wir diskutieren, wie wir ESP32 zum festgelegten Zeitpunkt im tiefen Schlafmodus festlegen können, um Strom zu sparen. Bevor wir lernen, wie man ESP32 aus dem tiefen Schlaf mit Timer aufwacht, verstehen wir das Konzept des tiefen Schlafes:

Was ist tiefer Schlaf in ESP32

ESP32 kann aufgrund seines integrierten WLAN- und Bluetooth-Moduls ein leistungshungriges Gerät sein. ESP32 zeichnet normalerweise 75 mA für nominelle Operationen, während es bis zu einem Anstieg sein kann 240 mA Beim Übertragen von Daten über WLAN. Wir können dies jedoch optimieren, indem wir den tiefen Schlafmodus aktivieren.

Im tiefen Schlafmodus werden ESP32 Digitale Peripheriegeräte, nicht verwendete RAM und CPUs ausgeschaltet. Nur folgende Liste der Teile bleibt operativ:

  • RTC -Controller
  • ULP Coprozessor
  • RTC schnell und langsamer Speicher
  • RTC -Peripheriegeräte

Wenn der tiefe Schlafmodus aktiviert ist, wird die Haupt -CPU heruntergefahren. ULP (UltralOWPower) -Koprozessor kann jedoch weiterhin Daten von Sensoren lesen und die CPU aufwecken.

Diese Anwendung von ESP32 ist nützlich, wenn wir zu einem bestimmten Zeitpunkt oder wenn ein externer Interrupt oder Ereignis stattfindet. Dies spart ESP32 -Strom, da seine CPU für den Rest der Zeit nach wie vor und nur dann eingeschaltet wird, wenn sie aufgerufen wird.

Zusammen mit der CPU ESP32 wird auch der Hauptspeicher geblitzt oder gelöscht, sodass alles, was in diesem Speicher gespeichert ist. Nur RTC -Speicher wird dort aufbewahrt. Daher speichert ESP32 WLAN- und Bluetooth -Daten im RTC -Speicher, bevor Sie in den Tiefschlafmodus gehen.

Sobald der tiefe Schlafmodus zurückgesetzt oder entfernt wurde, startet der ESP32 -Chip die Ausführung des Programms von Anfang an.

ESP32 kann mit verschiedenen Quellen aus dem tiefen Schlaf geweckt werden.

Wachquellen in ESP32 aufwachen

Es stehen mehrere Quellen zur Verfügung, um ESP32 aus dem Deep Sleep aufzuwachen:

  • Timer
  • Berühren Sie Stifte
  • Externes Aufwachen ext0
  • Externes Aufwachen ext1

In diesem Leitfaden werden wir abdecken Timer wach auf Quelle für ESP32.

So verwenden Sie Timer, um ESP32 aus dem tiefen Schlaf aufzuwachen

Der mit ESP32 gelieferte RTC -Controller enthält ein Timer -Modul, das das Gerät nach einer bestimmten Inaktivitätszeit aufwecken kann. Diese Funktion verfügt über große Anwendungen, bei denen wir Zeitstempel benötigen oder Anweisungen zu bestimmten Zeiten ausführen müssen, während wir einen optimalen Stromverbrauch beibehalten.

Der folgende Befehl kann den ESP32-Timer als Weckquelle konfigurieren. Es akzeptiert Zeit in Mikrosekunden als Argument.

esp_sleep_enable_timer_wakeup (TIME_IN_MICRO-S)

Beispielcode

Wenn Sie ESP32 -Board in Arduino IDE installiert haben, verfügt ESP32 mit einem tiefen Schlaf, den wir in diesem Tutorial verwenden werden. In Arduino IDE Deep Sleep Timer Wakeup -Beispiel kann geöffnet werden, indem Sie: Datei> Beispiele> ESP32> Tiefenschlaf> TimerWakeup

Ein neues Fenster öffnet sich mit der folgenden Skizze:

#define US_TO_S_FACTOR 1000000ULL
#define time_to_sleep 5
Rtc_data_attr int bootcount = 0;
void print_wakeup_reason ()
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause ();
Switch (Wakeup_reason)

Fall ESP_SLEEP_WAKEUPP_EXT0: SERIAL.println ("Wakeup Reason External Signal mit RTC_IO"); brechen;
Fall ESP_SLEEP_WAKEUPP_EXT1: Serie.println ("Wakeup -Grund externes Signal mit RTC_CNTL"); brechen;
Fall ESP_SLEEP_WAKEUP_TIMER: Serial.println ("Wachausbau durch Timer"); brechen;
Fall ESP_SLEEP_WAKEUP_TOUCHPAD: Serial.println ("Wakeup durch Touchpad"); brechen;
Fall ESP_SLEEP_WAKEUP_ULP: Serial.println ("Wakeup durch ULP -Programm verursacht"); brechen;
Standard: Seriell.printf ("Deep Sleep hat nicht aufwachen: %d \ n", wakeup_reason); brechen;


void setup ()
Serie.Beginnen Sie (115200);
Verzögerung (1000);
++Bootcount;
Serie.println ("Bootnummer:" + String (BootCount));
print_wakeup_reason ();
esp_sleep_enable_timer_wakeup (time_to_sleep * us_to_s_factor);
Serie.println ("Setup ESP32 zum Schlafen für jede" String (TIME_TO_SLAEP) +
"Sekunden");
Serie.println ("Jetzt schlafen gehen");
Serie.spülen();
esp_deep_sleep_start ();
Serie.println ("Dies wird niemals gedruckt");

void Loop ()

Definieren Sie tiefen Schlaf: Code beginnt mit der Beschreibung der Zeit, für die ESP32 im Schlafmodus verabschiedet wird. Dies kann je nach der erforderlichen Zeit geändert werden. Hier wird die Zeit von Mikrosekunden in Sekunden umgewandelt, sodass wir 5 Sekunden lang für ESP32 Deep Sleep Mode festgelegt haben. Es wird nach allen 5 Sekunden aufwachen.

RTC -Datenerinnerungen: Als nächstes verwenden Rtc_data_attr Wir speichern Daten zum RTC -Speicher. Dieses Beispiel enthält die Bootcount Variable, die im RTC -Speicher gespeichert ist und die Anzahl der ESP32 zählt, wacht nach jedem tiefen Schlaf auf.

Der RTC -Speicher wird nicht geblitzt, wenn sich ESP32 im tiefen Schlafmodus befindet. 8 KB SRAM ist im ESP32 RTC -Teil enthalten, auch als RTC Fast Memory bekannt.

ESP32 Weck Grund: Als nächstes verwenden die print_wakeup_reason () Funktion Wir haben die Weckursache aus dem tiefen Schlaf gedruckt.

In aufstellen() Teil Baud -Rate wird für die serielle Kommunikation und die definiert ++Bootcount Die Variable wird jedes Mal um 1 erhöht, wenn ESP32 aus dem tiefen Schlaf aufwacht. Die Gesamtzahl wird auf dem Serienmonitor gedruckt.

Endlich die Funktion verwenden esp_deep_sleep_start ()), Der ESP32 wird in den Schlafmodus gestellt.

Hochladen Code auf ESP32 mit Arduino IDE auf ESP32.

Ausgang
Nach dem Ausgang kann am seriellen Monitor der Arduino -IDE beobachtet werden. Hier können wir sehen, dass nach jeder 5 Sek. ESP32 aus dem tiefen Schlaf und der Bootnummer jedes Mal erhöht wird, wenn es aufwacht.

Notiz: Wenn wir die EN -Taste ESP32 gedrückt haben, setzt die Startzahl auf 0 zurück.

Abschluss

Hier in diesem Tutorial haben wir ESP32 so konfiguriert, dass sie mit einem Timer -Programm aus dem Tiefenschlaf aufwachen. Wir haben einfach eine Nachricht gedruckt, sobald der ESP32 aufwacht; Mit diesem Artikel kann man jedoch jede Aufgabe ausführen, sobald der ESP32 aus dem tiefen Schlaf aufwacht.