"Sobrevive a un sueño profundo, pero no reiniciar, ciclismo o reflexión".
No use esta biblioteca si solo desea que los datos en algunas variables sobrevivan al sueño profundo. Simplemente marque las variables RTC_DATA_ATTR y está todo configurado. Hay un tutorial aquí. Esta biblioteca es solo para usted solo si tiene un código existente que usa EEPROM.h , y está de acuerdo con tener algo escrito para EEPROM, no sobrevivir al reinicio, pérdida de energía o flasheo nuevo.
Flash está sujeto al desgaste de ser reescrito. Flash en los propios módulos de Espressif está garantizado a 100.000 escrituras, los módulos de flash SPI genéricos generalmente se clasifican en cualquier lugar de 10.000 a 100.000. Pero esto generalmente supone que el chip está a 20 ° C (68 ° F). Dentro de un módulo, siempre será más caliente, y hay muchas historias de terror en la red de chips Flash SPI, órdenes de magnitud de magnitud menos que se anuncian.
El código Arduino ESP32 de ESPRESSIF incluye una implementación de EEPROM de Arduino que escribe el Eeprom para flashear como blob en su almacenamiento de valor clave NVS. Lo que esto significa efectivamente es que para cada cambio de incluso un bit en el "Eeprom", todo su EEPROM se reescribe para flashear, la copia antigua marcada eliminada y si la página Flash se llena, una nueva página está marcada activa y así sucesivamente. Esto puede conducir a más ropa flash de lo que cabría esperar, los detalles exactos están aquí.
Si su aplicación mantiene la batería ESP32, pero la pone en un sueño profundo, utiliza tan poca potencia que está efectivamente en lo que respecta a la duración de la batería. Puede que se despierte nuevamente después de que una cierta cantidad de tiempo haya expirado y/o si un GPIO (es decir, el botón) sube o baja.
Esta biblioteca emulará EEPROM en RTC RAM, que permanece alimentada durante el sueño profundo. Para obtener más información sobre el sueño profundo, consulte este tutorial fácil o la documentación de espressif si desea todos los detalles. Como se mencionó anteriormente, use esta biblioteca solo si su código existente usa EEPROM. Simplemente tener algunas variables sobrevivir al sueño profundo es mucho más fácil, consulte el tutorial.
Si llama a EEPROM.toNVS() , una copia de sus datos EEPROM se guardará en la clave "Eeprom" en NVS Flash, exactamente como cuando usa el EEPROM.h original. Cada vez que el ESP32_RTC_EEPROM se despierta con una RAM RTC vacía (que se detecta por la presencia de una palabra mágica), intentará ver si hay una copia guardada del tamaño correcto. Si es así, eso está cargado. También puede volver manualmente a la última salvación llamando EEPROM.fromNVS() .
La función EEPROM.wasRestored() le dirá si los contenidos fueron o no restaurados automáticos de NVS en este ciclo de arranque.
Agregue esta biblioteca usando el Administrador de la biblioteca o clonando este repositorio en la carpeta de la biblioteca Arduino.
Reemplace #include <EEPROM.h> en su código por #include <ESP32_RTC_EEPROM.h> .
No hay 3, ya terminaste.
Esta biblioteca siempre reclamará EEPROM_SIZE (establecido en 2048, cambio en el archivo .h) bytes de la RAM del RTC (tiene 8k). Puede establecer un número más bajo al llamar EEPROM.begin() , pero ese número solo limita lo que su código puede leer/escribir (y cuánto se escribe en NVS Flash cada vez al hacer una copia de seguridad), no la RMA RTC real utilizada.
No se puede repetirlo con la frecuencia suficiente: solo útil en combinación con el sueño profundo del ESP, los datos en este EEPROM FALSO no sobreviven al ciclo, restablecimiento o reflexión