الإعلانات
هل تعلم أن Arduino يمكنه تخزين البيانات عند إيقاف تشغيله؟ ليس الرسم المخزن في ذاكرة فلاش. أنا أتحدث عن البيانات المتغيرة في EEPROM. انضم إلي حيث أريكم كيفية القراءة والكتابة ، وما يمكن أن تفعله لمشاريعك.
إذا كنت جديدًا على Arduino ، فتأكد من مراجعة موقعنا دليل المبتدئين الشروع في العمل مع Arduino: دليل المبتدئينArduino هي منصة نماذج إلكترونية مفتوحة المصدر تعتمد على أجهزة وبرامج مرنة وسهلة الاستخدام. إنه مخصص للفنانين والمصممين والهواة وأي شخص مهتم بإنشاء كائنات أو بيئات تفاعلية. قراءة المزيد .
ما هي EEPROM؟
EEPROM لتقف على كهربائيا للمسح برمجة ذاكرة القراءة فقط. إنه نوع من الذاكرة غير المتطايرة. لا تقلق إذا لم تفهم ما يعنيه أي من ذلك. يقوم ببساطة بتخزين البيانات حتى مع إزالة الطاقة (على عكس الرامات "الذاكرة العشوائية في الهواتف والحواسيب دليل سريع وقذر لذاكرة الوصول العشوائي: ما تحتاج إلى معرفتهتعد ذاكرة الوصول العشوائي مكونًا مهمًا لكل جهاز كمبيوتر ، ولكنها قد تكون مربكة. نقوم بتقسيمها بعبارات سهلة الفهم ستفهمها. قراءة المزيد الذي يحتاج للكهرباء للاحتفاظ بأي بيانات).
تم دمج EEPROM في عدد لا يحصى من المعالجات ، مثل مصفوفة البوابة القابلة للبرمجة الميدانية (FPGA) المستخدمة في
مصفوفة الخالق مصفوفة الخالق لمراجعة التوت بيThe Matrix Creator هو سكين الجيش السويسري لجهاز Pi الخاص بك ، مع 15 مستشعرًا ومجموعة من بروتوكولات الاتصالات وحلقة من مصابيح LED RGB ومجموعة ميكروفون وغيرها! قراءة المزيد بي هات. يتوفر لدى جميع Arduinos EEPROM ، ولكن تختلف السعة حسب الموديل. تأكد من إلقاء نظرة على موقعنا دليل الشراء دليل شراء Arduino: أي مجلس يجب أن تحصل عليه؟هناك العديد من الأنواع المختلفة من لوحات Arduino الموجودة هناك ، فسوف يتم الصفح عليك بسبب الخلط. ما الذي يجب أن تشتريه لمشروعك؟ دعنا نساعد ، مع دليل شراء Arduino هذا! قراءة المزيد لمزيد من التفاصيل على كل لوحة.كيف يعمل؟
يتم مسح EEPROM كهربائيًا وبرمجته باستخدام نفق فاولر-نوردهايم. لست بحاجة إلى معرفة التفاصيل التقنية لتتمكن من استخدامها. الفرضية الأساسية هي أن الكهرباء تستخدم لتغيير البيانات الثنائية (ما هو ثنائي ما هو ثنائي؟ [شرح التكنولوجيا]بالنظر إلى أن الثنائي أساسي للغاية لوجود أجهزة الكمبيوتر ، يبدو من الغريب أننا لم نتطرق إلى الموضوع من قبل - لذلك اعتقدت اليوم أنني سأقدم نظرة عامة موجزة عن ما هو ثنائي ... قراءة المزيد ). يمكن قراءتها ومحوها وإعادة كتابتها إلكترونياً.
لحسن الحظ ، فإن لغة اردوينو يجعل من السهل تغيير البيانات ، كل ذلك دون الحاجة إلى شهادة في علوم الكمبيوتر.
متوسط العمر المتوقع
في حين أنه من السهل استخدام EEPROM في Arduino ، إلا أن لها حياة محدودة. تم تحديد EEPROM للتعامل مع 100000 دورة قراءة / مسح. هذا يعني أنه يمكنك كتابة البيانات ثم مسحها / إعادة كتابتها 100000 مرة قبل أن تصبح EEPROM غير مستقرة. في الواقع، اتميل (يمكن لمصنعي أشباه الموصلات من نوع Arduino "Chip") التعامل مع عدد أكبر أو أقل من الدورات ، اعتمادًا على تحمل كل معالج.
بمجرد كتابة الموقع ومحوه عدة مرات ، قد يصبح غير موثوق به. قد لا تقوم بإرجاع البيانات الصحيحة ، أو إرجاع القيمة من بت مجاور.
قد يبدو هذا كثيرًا من عمليات الكتابة ، ولكن قد يكون من السهل الوصول إلى هذا الحد إذا كانت القراءة والكتابة برمجياً (في عقدة، فمثلا). قراءة البيانات لا تحط من السيليكون ، الكتابة فقط. يمكنك قراءة البيانات من EEPROM بقدر ما تريد دون خوف!
من المهم ملاحظة أن هذا الحد ينطبق على كل موقع ذاكرة. قد يحتوي Arduino على 1000 موقع ذاكرة أو أكثر متوفر في EEPROM ، لذلك إذا كتبت عدة مرات إلى موقع واحد ، فذلك هو المكان الوحيد الذي تأثر وليس أي موقع آخر. في وقت لاحق سأناقش ارتداء التسوية، والتي يمكن أن تقلل من تآكل EEPROM من خلال توزيع البيانات بالتساوي - شيء SSDs كيفية تقدير العمر المتبقي من SSD الخاص بكجميع محركات الأقراص ذات الحالة الثابتة لها عمر محدود بسبب دورات الكتابة (على الرغم من أن هذا العمر أطول بكثير مما قد تعتقد). إليك كيفية تقدير مدى قربك من النهاية. قراءة المزيد الاستفادة من.
ما فائدة ذلك؟
EEPROM مفيد بشكل لا يصدق لمشاريع Arduino الخاصة بك. كما يتذكر البيانات حتى عند إزالة الطاقة ، يمكنك تخزين حالة Arduino. ربما يمكنك بناء برج الليزر بيو بيو! كيفية بناء برج ليزر مع اردوينوهل مللت؟ قد يبني كذلك برج ليزر. قراءة المزيد يتذكر موقفها أو مقدار "الذخيرة" المتبقية. يمكنك استخدامه ل تحكم في أجهزتك أجهزة التحكم من Arduino: بداية أتمتة المنزلفي المرة الماضية ، عرضت عليك عدة طرق لجعل خطاب مشاريع Arduino الخاص بك يتم التحكم فيه عبر SiriProxy ، OS X's عناصر مدمجة قابلة للتحدث ، وبعض النصوص التلقائية ، أو حتى أجهزة مخصصة للتعرف على الصوت رقاقة. أنا... قراءة المزيد ، وتسجيل عدد المرات التي تم تنشيط جهازك.
EEPROM هو الأنسب لأشياء مثل الإعدادات أو درجات عالية. إذا كنت ترغب في كتابة البيانات المعقدة بانتظام ، فكر في درع إيثرنت امنح مشروع Arduino الخاص بك خادم الويب الصغير الخاص به ، مع درع إيثرنتمنذ فترة ، عرضت عليك كيفية إعداد نظام تحكم في الإنترنت لـ Arduino - ولكن كان يجب أن يبقى متصلاً بجهاز كمبيوتر من خلال USB من أجل الحفاظ على اتصال الإنترنت ... قراءة المزيد (مع فتحة SD مدمجة) أو أ فطيرة التوت Raspberry Pi: البرنامج التعليمي غير الرسميسواء كنت مالك Pi الحالي وتريد معرفة المزيد أو مالك محتمل لهذا الجهاز بحجم بطاقة الائتمان ، فهذا ليس دليلاً تريد تفويته. قراءة المزيد .
اقرا و اكتب
الآن بعد أن خرجت النظرية من الطريق ، فلنلقِ نظرة على كيفية قراءة وكتابة بعض البيانات! أولاً ، قم بتضمين المكتبة (يأتي هذا مع Arduino IDE):
#تتضمن
الآن اكتب بعض البيانات:
EEPROM.write (0 ، 12) ؛
هذا يكتب الرقم 12 إلى موقع EEPROM 0. تستغرق كل عملية كتابة 3.3 مللي ثانية (الآنسة، 1000 مللي ثانية = 1 ثانية). لاحظ كيف لا يمكنك كتابة الحروف (حرف) ، يسمح فقط بالأرقام من صفر إلى 255. هذا هو السبب في أن EEPROM مثالية للإعدادات أو الدرجات العالية ، ولكنها ليست جيدة جدًا لأسماء اللاعبين أو الكلمات. من الممكن تخزين النص باستخدام هذه الطريقة (يمكنك تعيين كل حرف من الأبجدية إلى رقم) ، ولكن ستحتاج إلى مواقع ذاكرة متعددة - موقع واحد لكل حرف.
إليك كيفية قراءة هذه البيانات:
قراءة (0) ؛
الصفر هو العنوان الذي كتبته من قبل. إذا لم تكن قد كتبت إلى عنوان من قبل ، فستعرض القيمة القصوى (255).
تتوفر بعض الطرق المفيدة أكثر قليلاً. لنفترض أنك تريد تخزين علامة أو سلسلة عشرية:
EEPROM.put (2، "12.67") ؛
يؤدي هذا إلى كتابة البيانات في مواقع متعددة - وهو أمر سيكون من السهل أن تكتبه بنفسك ، ولكن ليس مفيدًا. ستظل بحاجة إلى تتبع عدد المواقع التي كتب إليها هذا ، لذلك لا تستبدل بياناتك عن طريق الخطأ! يجب عليك استخدام احصل على طريقة لاسترداد هذه البيانات مرة أخرى:
تعويم 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 (العنوان ، فال) ؛
هذه الطريقة لها نفس توقيع كتابة الطريقة ، على الرغم من أنها قد تقلل بشكل كبير من عدد الكتابة المطلوبة!
إذا كنت بحاجة إلى كتابة الكثير من البيانات ، وكنت قلقًا بشأن ارتداء السليكون ، يمكنك تتبع عدد عمليات الكتابة التي تقوم بها ، على الرغم من أن هذا يستخدم المزيد من البيانات. هنا تنفيذ تقريبي في كود مزيف:
عنوان var = 0. var writeCount = 0 if (writeCount> 75،000) writeCount = 0 address + = 1 EEPROM.write (العنوان ، البيانات)
ستحتاج إلى تخزين العنوان و writeCount في EEPROM (وسيتعين كتابة writeCount عبر مواقع العناوين). في معظم الوقت ، لن يكون هذا المستوى من الحماية ضروريًا. Arduinos رخيصة جدًا أيضًا ، لذلك قد تجد أنه من الأسهل شراء نسخة احتياطية!
يجب أن تعرف الآن ما يكفي للقيام ببعض المشاريع الرائعة. أخبرنا إذا قمت بعمل شيء رائع! هل يمكنك التعرف على جميع الأجهزة الموجودة في الصور؟ ترك لنا تعليق أدناه!
جو خريج في علوم الكمبيوتر من جامعة لينكولن بالمملكة المتحدة. إنه مطور برامج محترف ، وعندما لا يطير بطائرات بدون طيار أو يكتب موسيقى ، يمكن العثور عليه غالبًا وهو يلتقط الصور أو ينتج مقاطع فيديو.