في هذه المقالة الجديدة سنرى ما أ كلب الحراسةوما يمكن استخدامه من أجله وكيفية استخدامه في مشاريعك اردوينو. كل ما تحتاج لمعرفته حول هذه الوظيفة المثيرة للاهتمام وغير المعروفة. ونعم، كما يوحي اسمها (المراقبة)، يمكن استخدامه لتتبع بعض المشاكل.
هنا سوف نرى كل شيئ ترغب بمعرفته متعلق…
ما هي الوكالة الدولية للطاقة؟
في الحوسبة ، أ الوكالة الدولية للطاقة هي آلية إشرافية تستخدم لمراقبة عمل النظام أو البرنامج. وتتمثل وظيفته الأساسية في اكتشاف المواقف غير الطبيعية أو فشل النظام والاستجابة لها، مثل الأعطال أو التجميد، واتخاذ الإجراءات التصحيحية لضمان استمرار التشغيل أو استعادة النظام.
الحارس يعمل على جهاز توقيت والتي تم تكوينها لفترة زمنية محددة. إذا لم يقم النظام أو البرنامج بتنفيذ إجراء معين أو تشغيل هيئة المراقبة (أي إعادة تشغيلها) خلال تلك الفترة الزمنية، تفترض هيئة المراقبة أن النظام في حالة غير مرغوب فيها أو توقف عن الاستجابة بشكل صحيح وتتخذ الإجراء الافتراضي. قد يختلف هذا الإجراء باختلاف التنفيذ وقد يتضمن إعادة تشغيل النظام، أو إنشاء سجلات الأخطاء، أو تشغيل الإنذارات، أو اتخاذ خطوات محددة لتصحيح المشكلة.
يتم استخدام الوكالة الدولية للطاقة على مجموعة متنوعة من أنظمة وأجهزة الكمبيوتر، بدءًا من أنظمة التشغيل والخوادم وحتى الأجهزة أنظمة الوقت الحقيقي المدمجة والحرجة، بما في ذلك Arduino. هدفها الأساسي هو تحسين موثوقية النظام وتوافره من خلال اكتشاف المشكلات والاستجابة لها تلقائيًا، وبالتالي تقليل الحاجة إلى التدخل اليدوي في حالات الفشل.
ما هو مراقب اردوينو؟
يجب ضبط مؤقت المراقبة الخاص بـ Arduino وفقًا لاحتياجات التطبيق. هو مؤقت جهاز المراقبة يستخدم مصدر ساعة داخلي بتردد 128 كيلو هرتز (قد يختلف حسب اللوحة ووحدة MCU المستخدمة). عند تفعيله، يبدأ العد من الصفر إلى قيمة محددة مسبقًا بواسطة المستخدم. إذا لم تتم إعادة تعيين مؤقت Watchdog عندما يصل إلى هذه القيمة، فإنه يعيد ضبط وحدة التحكم الدقيقة.
الموقت الوكالة الدولية للطاقة ATmega328P، والذي يتم تنفيذه في Arduino UNO، يوفر 10 إعدادات زمنية مختلفة، يحدد كل منها متى سيتجاوز المؤقت وبالتالي يتسبب في إعادة التعيين. الفواصل الزمنية المختلفة هي كما يلي: 16 مللي ثانية، 32 مللي ثانية، 64 مللي ثانية، 0.125 ثانية، 0.25 ثانية، 0.5 ثانية، 1 ثانية، 2 ثانية، 4 ثوان و 8 ثوان، كما سنرى لاحقا في الجدول الذي أدرجه.
إذا كان لا يزال من غير الواضح لك ما يمكنك فعله باستخدام Watchdog Timer Arduino UNO، سوف نرى مثال حتى تتمكن من فهم ذلك بيانيا. في هذا المثال، سوف نستخدم وميض LED بسيط (وميض). تومض مصابيح LED لفترة محددة قبل الدخول إلى حلقة while(). تُستخدم حلقة while() هذه كبديل لنظام الحظر. نظرًا لعدم إعادة ضبط مؤقت Watchdog أثناء وجوده في حلقة while()، فسيؤدي ذلك إلى إعادة تشغيل النظام، وستبدأ مصابيح LED في الوميض مرة أخرى قبل تعطل النظام وإعادة تشغيله. وستستمر هذه الدورة...
الاعتبارات والميزات
الموقت الوكالة الدولية للطاقة تم تعطيله في بداية الكود. يتم تضمين تأخير قدره x ثانية قبل تمكين Watchdog. يعد هذا التأخير أمرًا بالغ الأهمية للسماح لبرنامج تحميل التشغيل Arduino بالتحقق من تحميل الكود الجديد وإتاحة الوقت الكافي لنسخ الكود على ذاكرة فلاش. وهذا الجانب مناسب كإجراء احترازي. قد ينشأ موقف حيث، بسبب الترميز الخاطئ أو الاعتبارات غير الصحيحة، يقوم الكود المكتوب بإعادة ضبط وحدة التحكم الدقيقة على فترات زمنية قصيرة جدًا بلا حدود. قد يؤدي ذلك إلى إتلاف لوحة Arduino ومنع تحميل الرموز عليها بشكل صحيح. إذا حدث هذا، فستحتاج إلى نسخ أداة تحميل التشغيل باستخدام Arduino آخر كمزود خدمة إنترنت على Arduino المقفل...
عندما نستخدم مراقب الاردوينو، فمن الضروري استخدامه سجلات بت لتحديد سلوك الشريحة. تم تفصيل السجلات ذات الصلة ومعناها في ورقة بيانات المتحكم الدقيق الموجودة على لوحة Arduino. ومع ذلك، فإن بيئة تطوير Arduino المتكاملة (IDE) تأتي مع بعض الوظائف ووحدات الماكرو المصممة لتبسيط هذه العملية، والتي يمكن استيرادها عن طريق تضمين المكتبة #يشمل لاستخدام الوكالة الدولية للطاقة من شريحة AVR.
بهذه الطريقة، يمكننا تكوين الوكالة الدولية للطاقة تفعيله باستخدام وظيفة wdt_enable(). تحدد وسيطة هذه الوظيفة الوقت قبل إعادة ضبط اللوحة إذا لم تتم إعادة ضبط المؤقت. أما بالنسبة للقيم التي يمكنك تكوينها في الكود، فأنا أدرجها هنا:
الوقت قبل أن يتم تشغيل الوكالة الدولية للطاقة | وسيطة wtd_enable() |
مللي 15 | WDTO_15MS |
مللي 30 | WDTO_30MS |
مللي 60 | WDTO_60MS |
مللي 120 | WDTO_120MS |
مللي 250 | WDTO_250MS |
مللي 500 | WDTO_500MS |
1 ق | WDTO_1S |
2 ق | WDTO_2S |
4 ق | WDTO_4S |
8 ق | WDTO_8S |
مثال على استخدام الوكالة الدولية للطاقة في اردوينو
وأخيرا، دعونا نرى كيف يتم استخدام الوكالة الدولية للطاقة عمليا مع مثال في Arduino IDE. كما نرى، الأمر بسيط جدًا، يمكنك العثور على أكواد مصدر مختلفة مثل هذه على الإنترنت، لتتمكن من ممارسة الأكواد الخاصة بك وتعديلها وإنشائها لاستخدام الوكالة الدولية للطاقة في مشاريعك. دعنا نرى مثالنا:
#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h) void setup() { wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos } void loop() { wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio //Aquí iría el código de tu programa... }
كما يمكن أن نرى في هذا المثال من رسم تخطيطي لاردوينو، هناك ثلاث وظائف من أبرز لغات البرمجة لإدارة المراقبة، وهي:
- wdt_disable() لتعطيل المؤقت أثناء تكوين Arduino.
- wdt_enable(مرة) لتخصيص فاصل زمني للمؤقت وتشغيله، مع تحديد الوقت المقابل كما بينت في الجدول السابق.
- wdt_reset() لتجديد الفاصل الزمني المخصص وحتى لا يتم إعادة تشغيل البرنامج.