Slaap Timer ESP32

Hallo allemaal

Zoals veel mensen weten, ondersteunt het ESPR32-dev-bord de diepe slaapmodus. Helaas is deze functie niet goed geïmplementeerd, er zijn verschillende zwakke punten waarmee rekening moet worden gehouden. Ten eerste gaat de inhoud van alle variabelen verloren in een diepe slaap, ten tweede begint de ESP32 opnieuw in de lege setup () -lus na een diepe slaapwakker. Bovendien is er een nog erger probleem: de wake-up werkt niet betrouwbaar. Als de ESP een paar keer is gaan slapen, wordt deze mogelijk niet meer wakker. Zonder deze valkuilen zou de diepe slaapmodus slechts een drie-voering zijn. Omdat veel klanten hier echter problemen mee hebben, wil ik hier een schets geven en kort ingaan op wat belangrijk is.

Hardware:

  • ESP32 Dev Board C
  • LED rood
  • LED blauw

De bedrading:

Dev-bord LED rood LED blauw
22 +
23 +
GND GND GND

 

Serie weerstanden worden aanbevolen voor de LED's, ze zijn niet vereist :)

 

De code:

 

#define uS_TO_S_FACTOR 1000000  // we hebben uit het voorbeeld
#define TIME_TO_SLEEP  10 // nomen est ....

RTC_DATA_ATTR int bootCount = 0; // alleen waarden in het RTC-geheugen
// blijven
dat is waarom we allemaal
// Schrijf variabelen naar dit geheugengebied
// Leds om te controleren of het werkt: int REBOOT_LED = 23; // blauw int BOOT_LED = 22; // rood nietig instellen(){ // elke wakeup begint hier  pinMode(REBOOT_LED,UITGANG); // bij elke start  pinMode(BOOT_LED,UITGANG); // bij de eerste start  vertraging(500); // verwijder geen vertraging!  // Hij wordt op dit moment alleen met vertraging wakker    als(bootCount == 0) // Wanneer de teller in het RTC-geheugen op nul staat  {      digitalWrite(BOOT_LED,HOOG);      bootCount = bootCount+1;  }anders // bij elke wakeup  {      digitalWrite(REBOOT_LED,HOOG);  }    vertraging(1000); // LED's lichten 1 seconde op  digitalWrite(REBOOT_LED,LAAG);  digitalWrite(BOOT_LED,LAAG);  // voordat je weer uitgaat  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
// stelt de timer in  esp_deep_sleep_start(); // goede nacht! } nietig lus(){ // voor de volledigheid   }

 

Esp-32Grundlagen software

4 Kommentare

Peter N.

Peter N.

Ich habe diesen Aufbau getestet. Die Strommessung ergab folgende Werte:
Aufwachmodus 50mA mit zwei LEDs. Ohne 48mA. Der Schlafmodus hat erschreckende 9mA!
Dieser Wert ist einfach nicht für Batteriebetrieb geeignet.
Wenn ich den Wroom 32 Mini einsetze, komm ich auf 41mA aufgewacht und 1,6mA
im Sleepmodus. Das könnte man eventuell durch Entfernen der roten LED noch weiter senken.

Markus W

Markus W

@Piet
Ist hier nicht eher das Problem die Selbstentladung der Batterien und dass diese nach der Woche einfach nicht mehr die notwendige Spannung besitzen? Wie sind denn deine Werte an den Batterien gemessen?
Ich selbst bin gerade in der letzten Phase meine ePaper-Display-Projektes. Das betreibe ich mit einem 18650-Akku mit 3000mAh. Laut Logik und Theorie sollte ich damit Jahre hinkommen. Zumal ich den ESP32 nur 1x täglich aufwecke.

Piet

Piet

ich habe da ein ganz anderes Problem … Ich versorge den ESP32 mit zweimal 2200 mAh Batterien. Der Chip ist im deep sleep modus (hibernation state), wacht alle 2 Stunden auf misst die Feuchtigkeit (capacitive sensor), sendet sie via Bluetooth Low Energy und geht wieder schlafen. Funktioniert soweit gut.
In dieser Konfiguation sollte der Chip Monate (mal liest sogar von Jahre) laufen. Tatsächlich bringt er es gerade mal auf eine Woche.

Veit

Veit

puh 500ms ist aber schon recht lang wenn man einen quick-wakeup haben will …. in der ct gabs mal einen türsensor mit esp32 der sich immer schlafen gelegt hat, da war sicherlich keine 500ms pause drin. wäre vielleicht mal interessant ob die auch das problem hatten bzw wie sie es gelöst haben.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi