"ينجو نومًا عميقًا ، ولكن لا يعيد ضبط أو دراجة نقل طاقة أو إنعاش".
لا تستخدم هذه المكتبة إذا كنت تريد فقط البيانات في بعض المتغيرات للبقاء على قيد الحياة في النوم العميق. ما عليك سوى وضع علامة على المتغيرات RTC_DATA_ATTR وأنت تم تعيينك جميعًا. هناك برنامج تعليمي هنا. هذه المكتبة هي لك فقط إذا كان لديك رمز موجود يستخدم EEPROM.h ، وكنت بخير مع أي شيء مكتوب إلى EEPROM لا ينجو من إعادة تعيين أو فقدان الطاقة أو رمز جديد.
الفلاش يخضع لارتداء من إعادة كتابة. يتم ضمان فلاش في وحدات Espressif الخاصة إلى 100.000 كتابة ، يتم تصنيف وحدات فلاش SPI العامة بشكل عام من 10.000 إلى 100.000. ولكن هذا يفترض عمومًا أن الرقاقة عند 20 درجة مئوية (68 درجة فهرنهايت). داخل الوحدة ، ستكون دائمًا أكثر سخونة ، وهناك الكثير من قصص الرعب على شبكة رقائق فلاش SPI الدائمة التي تدوم دورات فلاش أقل من المعلن عنها.
يتضمن رمز Arduino من ESP32 من ESPRUSIF تطبيق Arduino EEPROM الذي يكتب EEPROM ليومض كـ blob في تخزين قيمة مفاتيح NVS. ما يعنيه هذا بشكل فعال هو أنه بالنسبة لكل تغيير حتى واحد فقط في "Eeprom" ، تتم إعادة كتابة EEPROM بأكملها إلى وميض ، والنسخة القديمة المحذوفة ، وإذا كانت صفحة الفلاش تملأ ، يتم تمييز صفحة جديدة نشطة وما إلى ذلك. يمكن أن يؤدي ذلك إلى ارتداء فلاش أكثر مما يتوقعه المرء ، والتفاصيل الدقيقة موجودة هنا.
إذا كان تطبيقك يحتفظ ببطارية ESP32 ولكنه يضعها في نوم عميق ، فهو يستخدم القليل من الطاقة ، فإنه يتم إيقاف تشغيله بشكل فعال فيما يتعلق بعمر البطارية. يمكنك الاستيقاظ مرة أخرى بعد انتهاء فترة زمنية معينة و/أو إذا كان GPIO (زر IE) مرتفعًا أو منخفضًا.
ستحاكي هذه المكتبة EEPROM في RTC RAM ، والتي تبقى مدعومة أثناء النوم العميق. لمعرفة المزيد حول النوم العميق ، تحقق من هذا البرنامج التعليمي السهل ، أو وثائق Espressif إذا كنت تريد كل التفاصيل. كما هو مذكور أعلاه ، استخدم هذه المكتبة فقط إذا كان الكود الحالي الخاص بك يستخدم EEPROM. ببساطة بعض المتغيرات البقاء على قيد الحياة من النوم العميق أمر أسهل ، تحقق من البرنامج التعليمي.
إذا قمت بالاتصال EEPROM.toNVS() ، فسيتم حفظ نسخة من بيانات EEPROM الخاصة بك على المفتاح "eEprom" في NVS Flash ، تمامًا مثلما يمكنك استخدام EEPROM.h الأصلي. كلما استيقظت ESP32_RTC_EPERROM باستخدام RTC RAM فارغ (الذي يتم اكتشافه من خلال وجود كلمة سحرية) ، سيحاول معرفة ما إذا كانت هناك نسخة محفوظة من الحجم الصحيح. إذا كان الأمر كذلك ، يتم تحميل ذلك. يمكنك أيضًا العودة يدويًا إلى آخر حفظ عن طريق استدعاء EEPROM.fromNVS() .
ستخبرك الدالة EEPROM.wasRestored() ما إذا كانت المحتويات قد تم استعادة المحتويات التلقائية من NVS في دورة التمهيد هذه أم لا.
أضف هذه المكتبة باستخدام مدير المكتبة أو عن طريق استنساخ هذا المستودع في مجلد مكتبة Arduino.
استبدل #include <EEPROM.h> في الكود الخاص بك بواسطة #include <ESP32_RTC_EEPROM.h> .
لا يوجد 3 ، لقد انتهيت.
ستطالب هذه المكتبة دائمًا بـ EEPROM_SIZE (تم تعيينها في 2048 ، تغيير في ملف .H) من RTC's RAM (يحتوي على 8K). يمكنك تعيين رقم أقل عند استدعاء EEPROM.begin() ، ولكن هذا الرقم يحد فقط من ما يمكن أن يقرأه الرمز/الكتابة (وكم يتم كتابة NVS Flash في كل مرة عند النسخ الاحتياطي) ، وليس RTC RAM الفعلي المستخدم.
لا يمكن تكرارها في كثير من الأحيان: مفيدة فقط مع النوم العميق لـ ESP ، لا تنجو البيانات في EEPROM المزيفة