Hola a todos
como muchos vll. saben, la placa de desarrollo con ESP32 de Espressif admite el modo de sueño profundo. Desafortunadamente, esta función no se ha implementado bien, hay varias debilidades que deben ser consideradas. En primer lugar, el contenido de todas las variables se pierde en un sueño profundo, y la segunda vez el ESP32 comienza de nuevo después de una activación profunda del sueño en el bucle void setup(). También hay un problema aún peor: El despertar no funciona de forma fiable. Si el ESP ha dormido un par de veces, puede suceder que ya no se despierte. Sin estos escollos, el modo de sueño profundo sólo sería un de tres líneas. Sin embargo, dado que muchos clientes tienen problemas con esto, me gustaría proporcionar un boceto aquí y comentar brevemente sobre lo que importa.
Hardware:
- ESP32 Dev Board C
- LED rojo
- AZUL LED
El cableado:
Dev Board | LED rojo | AZUL LED |
22 | + | |
23 | + | |
Gnd | Gnd | Gnd |
Para los LED, se recomiendan resistencias, no son necesarias :)
El código:
#define uS_TO_S_FACTOR 1000000 hemos estado fuera del ejemplo #define TIME_TO_SLEEP 10 nomen est.... RTC_DATA_ATTR Int bootCount = 0; sólo valores en la memoria RTC
Permanecer por qué todos
Escribir variables en esta área de memoria Leds para comprobar si funciona: Int REBOOT_LED = 23; Azul Int BOOT_LED = 22; Rojo Vacío Configuración(){ cada despertar aquí pinMode(REBOOT_LED,Salida); cada inicio pinMode(BOOT_LED,Salida); en la primera salida Retraso(500); retardo no eliminar! Sólo con retraso en este punto se despierta de forma fiable Si(bootCount == 0) Si el contador de la memoria RTC se establece en cero { digitalWrite(BOOT_LED,Alto); bootCount = bootCount+1; }Más con cada despertar { digitalWrite(REBOOT_LED,Alto); } Retraso(1000); Los LED se iluminan 1 segundo digitalWrite(REBOOT_LED,Bajo); digitalWrite(BOOT_LED,Bajo); antes de salir de nuevo esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
establece el temporizador esp_deep_sleep_start(); ¡Buenas noches! } Vacío Bucle(){ en aras de la integridad }
5 comentarios
Bruno
Hallo,
der Source-Code des c‘t Projektes findet sich dort ( https://github.com/ct-Open-Source/ESP-Doorsensor ).
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
@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
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
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.