"Survit le sommeil profond, mais pas réinitialisé, le cycle de puissance ou le reflash."
N'utilisez pas cette bibliothèque si vous voulez simplement que les données de certaines variables survivent au sommeil profond. Marquez simplement les variables RTC_DATA_ATTR et vous êtes tous prêts. Il y a un tutoriel ici. Cette bibliothèque est pour vous uniquement si vous avez un code existant qui utilise EEPROM.h , et vous êtes d'accord pour avoir quelque chose d'écrit sur Eeprom qui ne survit pas à la réinitialisation, à la perte d'alimentation ou à un nouveau code.
Flash est soumis à l'usure d'être réécrit. Flash dans les propres modules d'ESPRESSIF est garanti à 100 000 écritures, les modules de flash SPI génériques sont généralement évalués de 10 000 à 100 000. Mais cela suppose généralement que la puce est à 20 ° C (68 ° F). À l'intérieur d'un module, il sera toujours plus chaud, et il y a beaucoup d'histoires d'horreur sur le filet de puces flash SPI qui durent des ordres de cycles de flash de magnitude moins que annoncés.
Le code Arduino ESP32 d'ESPRESSIF comprend une implémentation EEPROM Arduino qui écrit l'EEPROM pour flash comme blob dans leur stockage de valeurs de clé NVS. Ce que cela signifie effectivement, c'est que pour chaque changement de même un bit dans le "EEPROM", votre EEPROM entière est réécrite pour flasher, l'ancienne copie marquée est supprimée, et si la page Flash se remplit, une nouvelle page est marquée active et ainsi de suite. Cela peut conduire à plus de usure de flash que ce que l'on ne s'y attend, les détails exacts sont ici.
Si votre application conserve la batterie ESP32 mais la met en profondeur, elle utilise si peu de puissance qu'elle est efficacement en ce qui concerne la durée de vie de la batterie. Vous pouvez le faire se réveiller à nouveau après un certain temps expiré et / ou si un GPIO (bouton IE) est haut ou bas.
Cette bibliothèque imitera EEPROM dans RTC RAM, qui reste alimentée pendant le sommeil profond. Pour en savoir plus sur le sommeil profond, consultez ce tutoriel facile ou la documentation d'EspressIF si vous voulez tous les détails. Comme mentionné ci-dessus, utilisez cette bibliothèque uniquement si votre code existant utilise EEPROM. Le simple fait de faire survivre à certaines variables survivre est beaucoup plus facile, vérifiez le tutoriel.
Si vous appelez EEPROM.toNVS() , une copie de vos données EEPROM sera enregistrée sur la clé "EEPROM" dans NVS Flash, exactement comme lorsque vous utiliseriez l' EEPROM.h . Chaque fois que l'ESP32_RTC_EEPROM se réveille avec un RTC RTC vide (qui détecte par la présence d'un mot magique), il essaiera de voir s'il y a une copie enregistrée de la bonne taille. Si c'est le cas, cela est chargé. Vous pouvez également revenir manuellement à la dernière sauvegarde en appelant EEPROM.fromNVS() .
La fonction EEPROM.wasRestored() vous dira si le contenu a été automatiquement restauré à partir de NV dans ce cycle de démarrage.
Ajoutez cette bibliothèque à l'aide du gestionnaire de bibliothèque ou en clonage ce référentiel dans votre dossier de bibliothèque Arduino.
Remplacez #include <EEPROM.h> Dans votre code par #include <ESP32_RTC_EEPROM.h> .
Il n'y a pas de 3, vous avez terminé.
Cette bibliothèque réclamera toujours EEPROM_SIZE (définie au 2048, modification du fichier .h) octets du RAM du RTC (il a 8k). Vous pouvez définir un nombre inférieur lorsque vous appelez EEPROM.begin() , mais ce nombre limite uniquement ce que votre code peut lire / écrire (et combien est écrit à NVS Flash à chaque fois lors de la sauvegarde), pas la RAM RTC réelle utilisée.
Ne peut pas le répéter assez souvent: seulement utile en combinaison avec le sommeil profond de l'ESP, les données de ce faux EEPROM ne survivent pas à la puissance, à la réinitialisation ou à la reflas