كيفية استخدام Arduino EEPROM لحفظ البيانات بين دورات الطاقة

كيفية استخدام Arduino EEPROM لحفظ البيانات بين دورات الطاقة

هل تعلم أن Arduino يمكنه تخزين البيانات عند إيقاف تشغيله؟ ليس الرسم المخزن في ذاكرة فلاش. أنا أتحدث عن البيانات المتغيرة في EEPROM. انضم إليّ حيث أوضح لك كيف تقرأها وتكتبها ، وما يمكن أن تفعله لمشاريعك.





إذا كنت جديدًا في Arduino ، فتأكد من إطلاعك على دليل المبتدئين .





ما هو إيبروم؟

يرمز EEPROM كهربائيا للمسح برمجة ذاكرة القراءة فقط . إنه نوع من الذاكرة غير المتطايرة. لا تقلق إذا لم تفهم معنى أي من ذلك. إنه يخزن البيانات ببساطة حتى مع إزالة الطاقة (على عكس الرامات 'الذاكرة العشوائية في الهواتف والحواسيب الذي يحتاج للكهرباء للاحتفاظ بأي بيانات).





تم دمج EEPROM في عدد لا يحصى من المعالجات ، مثل مصفوفة البوابة القابلة للبرمجة الميدانية (FPGA) المستخدمة في Matrix Creator Pi HAT. تتوفر EEPROM في جميع Arduinos ، لكن السعة تختلف حسب الطراز. تأكد من إلقاء نظرة على دليل الشراء الخاص بنا لمزيد من التفاصيل حول كل لوحة.

كيف يعمل؟

يتم مسح EEPROM كهربائيًا وبرمجته باستخدام نفق فاولر نوردهايم . لا تحتاج إلى معرفة التفاصيل الفنية لتتمكن من استخدامها. الفرضية الأساسية هي أن الكهرباء تستخدم لتغيير البيانات الثنائية (ما هو ثنائي). يمكن قراءتها ومسحها وإعادة كتابتها إلكترونيًا.



لحسن الحظ ، فإن لغة اردوينو يجعل من السهل تغيير البيانات ، كل ذلك دون الحاجة إلى شهادة في علوم الكمبيوتر.

متوسط ​​العمر المتوقع

في حين أنه من السهل استخدام EEPROM في Arduino ، إلا أنه يتمتع بحياة محدودة. تم تحديد EEPROM للتعامل مع 100000 دورة قراءة / مسح. هذا يعني أنه يمكنك كتابة البيانات ثم مسحها / إعادة كتابتها 100000 مرة قبل أن تصبح ذاكرة EEPROM غير مستقرة. في الواقع، اتميل (الشركات المصنعة لأشباه الموصلات Arduino 'Chip') قد تتعامل مع عدد أعلى أو أقل من الدورات ، اعتمادًا على التفاوتات لكل معالج.





بمجرد كتابة الموقع ومحوه عدة مرات ، يمكن أن يبدأ في أن يصبح غير موثوق به. قد لا يقوم بإرجاع البيانات الصحيحة ، أو إرجاع القيمة من بت مجاور.

قد يبدو هذا كالكثير من عمليات الكتابة ، ولكن قد يكون من السهل الوصول إلى هذا الحد إذا كانت القراءة والكتابة برمجيًا (في حلقة ، على سبيل المثال). قراءة البيانات لا تحط من السيليكون ، فقط الكتابة تفعل . يمكنك قراءة البيانات من EEPROM بقدر ما تريد دون خوف!





من المهم ملاحظة أن هذا الحد ينطبق على كل موقع ذاكرة. قد يحتوي Arduino الخاص بك على 1000 موقع أو أكثر من مواقع الذاكرة المتوفرة في EEPROM ، لذلك إذا كتبت عدة مرات إلى موقع واحد ، فسيكون هذا الموقع متأثرًا فقط ، وليس أيًا من المواقع الأخرى. سأناقش لاحقًا ارتداء التسوية ، والتي يمكن أن تقلل من تآكل EEPROM عن طريق توزيع البيانات بالتساوي - وهو شيء تستخدمه محركات أقراص الحالة الصلبة.

ما هو مفيد؟

يعد EEPROM مفيدًا بشكل لا يصدق لمشاريع Arduino الخاصة بك. نظرًا لأنه يتذكر البيانات حتى عند إزالة الطاقة ، يمكنك تخزين حالة Arduino. ربما يمكنك بناء برج ليزر يتذكر موقعه أو مقدار 'الذخيرة' المتبقية. يمكنك استخدامه للتحكم في أجهزتك وتسجيل عدد المرات التي تم فيها تنشيط جهازك.

إن EEPROM هو الأنسب لأشياء مثل الإعدادات أو الدرجات العالية. إذا كنت ترغب في كتابة بيانات معقدة بانتظام ، فربما تفكر في استخدام درع إيثرنت (مع فتحة SD مدمجة) أو Raspberry Pi.

اقرا و اكتب

الآن بعد أن خرجت النظرية عن الطريق ، دعنا نلقي نظرة على كيفية قراءة وكتابة بعض البيانات! أولاً ، قم بتضمين المكتبة (يأتي هذا مع Arduino IDE):

#include

اكتب الآن بعض البيانات:

EEPROM.write(0, 12);

هذا يكتب الرقم 12 إلى موقع EEPROM 0 . تستغرق كل عملية كتابة 3.3 مللي ثانية ( تصلب متعدد ، 1000 مللي ثانية = 1 ثانية). لاحظ كيف لا يمكنك كتابة الحروف ( شار ) ، فقط الأرقام من صفر إلى 255 مسموح بها. هذا هو السبب في أن EEPROM مثالي للإعدادات أو الدرجات العالية ، ولكنه ليس جيدًا لأسماء اللاعبين أو كلماتهم. من الممكن تخزين النص باستخدام هذه الطريقة (يمكنك تعيين كل حرف من الحروف الأبجدية إلى رقم) ، ومع ذلك ستحتاج إلى مواقع ذاكرة متعددة - موقع واحد لكل حرف.

إليك كيف تقرأ تلك البيانات:

كيفية مقارنة ملفين في برنامج notepad ++
EEPROM.read(0);

الصفر هو العنوان الذي كتبته سابقًا. إذا لم تكن قد كتبت إلى عنوان من قبل ، فسيتم إرجاع القيمة القصوى ( 255 ).

هناك بعض الطرق المفيدة أكثر قليلا المتاحة. لنفترض أنك تريد تخزين منزلة عشرية أو سلسلة:

EEPROM.put(2,'12.67');

يؤدي هذا إلى كتابة البيانات إلى مواقع متعددة - وهو أمر يسهل كتابته بنفسك ، ولكن ليس أقل من ذلك. ستظل بحاجة إلى تتبع عدد المواقع التي تمت الكتابة إليها ، حتى لا تقوم بالكتابة فوق بياناتك عن طريق الخطأ! يجب عليك استخدام ملف احصل على طريقة لاسترداد هذه البيانات مرة أخرى:

float f = 0.00f;
EEPROM.get(2, f);

يتم تخزين القيمة من get في عدد عشري F عامل. لاحظ كيف تتم تهيئة هذا مع 0.00f كقيمة. ال F يتيح للمجمع معرفة أنك قد ترغب في تخزين عدد كبير في هذا المتغير ، لذلك يقوم بإعداد بعض التكوينات الإضافية أثناء التجميع.

ال وثائق EEPROM على ال موقع اردوينو الكثير من الأمثلة.

ارتداء التسوية

تسوية التآكل هي تقنية تستخدم لتقليل التآكل وزيادة عمر EEPROM. إذا كنت تعمل فقط في مشروع صغير ، فلا داعي للقلق بشأن هذا الأمر.

أبسط شيء يمكنك القيام به للحفاظ على حياة EEPROM هو قصر كتاباتك على موقع معين. يمكنك القيام بذلك عن طريق قراءة العنوان أولاً ، وإذا كانت القيمة التي تريد كتابتها موجودة بالفعل ، فلا داعي لكتابتها مرة أخرى (تذكر أن قراءة البيانات لا تسبب أي ضرر). إليك كيف ستفعل ذلك:

int safeWrite(int data, address) {
if(EEPROM.read(address) != data) {
EEPROM.write(address, data);
}
}

هذا جزء بسيط من الكود ، لكنه يعمل فقط مع الأعداد الصحيحة! بدلاً من إعادة اختراع العجلة ، استخدم الوظيفة المضمنة في مكتبة Arduino EEPROM:

EEPROM.update(address, val);

هذه الطريقة لها نفس التوقيع تمامًا مثل اكتب على الرغم من أنها قد تقلل بشكل كبير من عدد عمليات الكتابة المطلوبة!

إذا كنت بحاجة إلى كتابة الكثير من البيانات ، وكنت قلقًا بشأن نفاد السيليكون ، فيمكنك تتبع عدد الكتابات التي تكتبها ، على الرغم من أن هذا يستخدم المزيد من البيانات. إليك تنفيذ تقريبي في كود مزيف :

var address = 0
var writeCount = 0
if(writeCount > 75,000)
writeCount = 0
address += 1
EEPROM.write(address, data)

ستحتاج إلى تخزين العنوان و writeCount في EEPROM (وسيتعين تقسيم writeCount عبر مواقع العناوين). في معظم الأوقات ، لن يكون هذا المستوى من الحماية ضروريًا. Arduinos رخيصة جدًا أيضًا ، لذلك قد تجد أنه من الأسهل شراء نسخة احتياطية!

يجب أن تعرف الآن ما يكفي للقيام ببعض المشاريع الرائعة. دعنا نعرف إذا قمت بعمل شيء رائع! هل يمكنك التعرف على جميع الأجهزة الموجودة في الصور؟ ترك لنا تعليق أدناه!

يشارك يشارك سقسقة بريد الالكتروني 5 نصائح لزيادة كفاءة أجهزة VirtualBox Linux الخاصة بك

هل سئمت من الأداء الضعيف الذي تقدمه الأجهزة الافتراضية؟ إليك ما يجب عليك فعله لتعزيز أداء VirtualBox الخاص بك.

اقرأ التالي
مواضيع ذات صلة
  • افعلها بنفسك
  • اردوينو
  • إلكترونيات
نبذة عن الكاتب جو كوبيرن(تم نشر 136 مقالاً)

تخرج جو في علوم الكمبيوتر من جامعة لينكولن بالمملكة المتحدة. إنه مطور برامج محترف ، وعندما لا يطير بطائرات بدون طيار أو يكتب الموسيقى ، يمكن العثور عليه في كثير من الأحيان يلتقط الصور أو ينتج مقاطع فيديو.

المزيد من Joe Coburn

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك