مؤقت الوكالة الدولية للطاقة أو "الوكالة الدولية للطاقة" لتكنولوجيا المعالجات الدقيقة. مراقب اردوينو أو إعادة الضبط التلقائي في حالة التجميد

13.05.2019
  • درس تعليمي

سنتحدث عن كيفية إبقاء Arduino في حالة عمل دائمة. تم تضمين آلية المراقبة في وحدات تحكم Atmega، ولكن لسوء الحظ، لا يتعامل كل محمل إقلاع Arduino مع هذه الوظيفة بشكل صحيح. دعونا نحاول معرفة هذه المشكلة.

إذن ما هي الوكالة الدولية للطاقة؟ بكلمات بسيطة، هذا مؤقت مدمج لفترة معينة (ما يصل إلى 8 ثوانٍ اعتمادًا على الشريحة)، والذي يمكن تشغيله برمجيًا. بمجرد وصول الموقت إلى الصفر، تقوم وحدة التحكم بإرسال صحيحإشارة إعادة الضبط (RESET) ويدخل الجهاز بأكمله صعباعادة التشغيل. الشيء الأكثر أهمية هو أنه يمكن أيضًا إعادة ضبط هذا المؤقت على حالته الأولية برمجيًا.

  • صحيحإشارة إعادة الضبط - مدة كافية لبدء التحميل الزائد على وحدة التحكم. في بعض الأحيان يكون هناك إغراء لتوصيل بعض المخرجات الرقمية لـ Arduino بمدخل RST وضبطه على 0 عندما تحتاج إلى إعادة التشغيل. وهذا أسلوب سيء لحل المشكلة، لأن... قد لا تكون هذه الإشارة طويلة بما فيه الكفاية، على الرغم من أنه من الممكن أن تعمل أيضًا في بعض الحالات.
  • صعبإعادة التشغيل هي إعادة تشغيل حقيقية تحدث عند الضغط على زر RESET. الحقيقة هي أن هناك أيضًا مفهوم إعادة التشغيل الناعم - وهو انتقال البرنامج إلى العنوان 0. من حيث المبدأ، يعد هذا أيضًا شيئًا مفيدًا، ولكن بمساعدته، من المستحيل زيادة تحميل وحدة تحكم Ethernet المجمدة أو شاشة LCD المخللة.
باختصار، إن جهاز المراقبة المدمج هو بالضبط ما تحتاجه دون أي دوائر إضافية أو لحام أو توصيلات.

وظائف المراقبة

لاستخدام وظائف Watchdog تحتاج إلى توصيل المكتبة القياسية بالمشروع:
#يشمل
الوظائف الثلاث التالية متاحة لنا الآن:

1. ابدأ مؤقت المراقبة:
wdt_enable(WDTO_8S); /* القيم المحتملة للثابت WDTO_15MS WDTO_30MS WDTO_60MS WDTO_120MS WDTO_250MS WDTO_500MS WDTO_1S WDTO_2S WDTO_4S WDTO_8S */
سيتم حساب المؤقت تمامًا كما هو محدد في الثابت. بعد هذا الوقت، ستحدث إعادة التشغيل.

2. إعادة ضبط مؤقت الوكالة الدولية للطاقة:
wdt_reset();
أعتقد أنه من الواضح سبب الحاجة إلى هذه الوظيفة - أثناء الاتصال بها، لن تتم إعادة ضبط وحدة التحكم. بمجرد تجميد النظام وتوقف استدعاء هذه الوظيفة، ستتم إعادة التشغيل بعد فترة محددة.

3. تعطيل الوكالة الدولية للطاقة:
wdt_disable();
تعطيل مؤقت المراقبة.

في الواقع، قد تكون هذه نهاية قصتنا عن الوكالة الدولية للطاقة... لكن الحقيقة هي أن كل هذا يعمل فقط في Arduino Uno، وفي Arduino Mega وMini وNano كل شيء يعمل عكس ذلك تمامًا، أي. لا يعمل على الإطلاق :)

لماذا لا تعمل الوكالة الدولية للطاقة على معظم لوحات الاردوينو الحديثة

والحقيقة هي أنه بعد إعادة التشغيل، والتي كانت ناجمة عن الوكالة الدولية للطاقة، فإن وحدات التحكم في أحدث الإصدارات تترك الوكالة الدولية للطاقة ممكّنة على الحد الأدنى للفترة، أي. 15 مللي ثانية. يعد هذا ضروريًا حتى يتعرف البرنامج بطريقة أو بأخرى على أن عملية إعادة التشغيل السابقة تمت بواسطة الوكالة الدولية للطاقة. لذلك، فإن الأولوية الأولى لمحمل التشغيل (أو برنامجك، إذا تم تشغيله أولاً) هي حفظ المعلومات التي تفيد بأن إعادة التشغيل كانت "غير متوقعة" وإيقاف تشغيل أداة المراقبة على الفور. إذا لم يتم ذلك، فسوف يدخل النظام في Bootloop، أي. سوف تكون مثقلة إلى الأبد.

كما تعلم، لدى Arduino محمل إقلاع خاص يعمل أولاً بعد إعادة تشغيل النظام. ولسوء الحظ، فإن أداة تحميل التشغيل القياسية لا تقوم بإعادة تعيين الوكالة الدولية للطاقة! وبالتالي، يدخل النظام في حالة تمهيد وحشية (حالة "القيادة المجنونة"، حيث يومض مؤشر LED الموجود على الطرف 13 بشكل جنوني).

كل شيء يبدو مثل هذا:


طرق حل المشكلة

إذا نظرت إلى مصادر أداة تحميل التشغيل القياسية (يتم تضمينها في تسليم النظام الأساسي)، فهناك رمز لتعطيل الوكالة الدولية للطاقة (!) يدعم. على الأقل في إصدار حزمة النظام الأساسي 1.5.2 (الأحدث في وقت كتابة هذا التقرير)، هذا هو الحال تمامًا.

لحل المشكلة، قرأت حتى صفحات الدليل الخاصة بالمنصة نفسها (:) ويبدو أن هذه المشكلة موصوفة هناك وتم تقديم رمز من شأنه أن يجعل الجميع سعداء:

Uint8_t mcusr_mirror __attribute__ ((القسم ("".noinit"))); void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3"))); باطلة get_mcusr(void)( mcusr_mirror = MCUSR; MCUSR = 0; wdt_disable(); )
يصف هذا وظيفة get_mcusr() التي يجب استدعاؤها فورًا بعد إعادة التعيين. ويتم تحقيق ذلك بواسطة الماكرو "__attribute__((section(".init3")))). لقد حاولت كتابة هذه الوظيفة في جميع الأقسام الممكنة - نعم، إنها تعمل بالفعل قبل وظيفة setup() من الرسم، ولكن لسوء الحظ، بعد أكثر من 15 مللي ثانية (الحد الأدنى لثابت المراقبة) بعد إعادة التعيين...

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

التحقق من وظائف المراقبة

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

اختبار الوكالة الدولية للطاقة

#يشمل إعداد باطل () ( wdt_disable ()؛ // خط عديم الفائدة لا يصل إليه التنفيذ أثناء bootloop Serial.begin (9600)؛ Serial.println ("Setup ...")؛ Serial.println ("انتظر 5 ثوانٍ ..") ; تأخير (5000)؛ // تأخير للسماح بإعادة تحميل ملفات الجهاز في حالة Bootloop wdt_enable (WDTO_8S)؛ // بالنسبة للاختبارات، لا يوصى بتعيين القيمة على أقل من 8 ثوانٍ؛ حلقة باطلة())(// كل ثانية يومض مؤشر LED ونكتب قيمة العداد إلى Serial if(!(millis()%1000))( timer++; Serial.println(timer); digitalWrite(13, digitalRead(13) ==1?


بعد إعادة التشغيل (أو توصيل الشاشة بالمنفذ)، سيومض مؤشر LED المدمج، للإشارة إلى بدء تشغيل أداة تحميل التشغيل. بعد ذلك، في قسم الإعداد، يتم تشغيل جهاز المراقبة بمؤقت لمدة 8 ثوانٍ. بعد ذلك، سيقوم مؤشر LED بالعد التنازلي هذه المرة ويجب أن تتم إعادة التشغيل.

ثم يبدأ الجزء الأكثر إثارة للاهتمام - إذا حدثت إعادة التشغيل وتكرر كل شيء بنفس التسلسل، فهذا يعني أن لديك Arduino بين يديك، حيث يقوم أداة تحميل التشغيل بمعالجة الوكالة الدولية للطاقة بشكل صحيح. إذا بدأ مؤشر LED الموجود على السن 13 في الوميض إلى ما لا نهاية بعد إعادة التشغيل، فإن أداة تحميل التشغيل لا تدعم الوكالة الدولية للطاقة. حتى زر إعادة الضبط لن يساعد هنا. بالنسبة للبرامج الثابتة اللاحقة، تحتاج إلى فصل اللوحة عن مصدر الطاقة، وبعد تشغيلها، يكون لديك وقت لفلاشها قبل إعادة التشغيل الأولى.

لقد اختبرت 4 أنواع من اللوحات ولم يعمل إلا أداة تحميل التشغيل في Arduino Uno كما ينبغي:

النتائج على الشاشة

الوكالة الدولية للطاقة غير مدعومة من قبل أداة تحميل التشغيل:

يتم دعم Watchdog بواسطة أداة تحميل التشغيل:


ما هي أسهل طريقة لفلاش محمل الإقلاع الجديد؟

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

في هذه المقالة لن أصف كل تعقيدات إنشاء مبرمج يعتمد على الأردوينو، لأن... هذا الموضوع تماما . لقد استخدمت Arduino Uno كمبرمج. كما تعلمون، يتم وميض البرامج الثابتة من خلال موصل ICSP منفصل، وهو موجود في جميع اللوحات تقريبا. في حالة البرنامج الثابت Arduino Pro Mini، الذي لا يحتوي على ICSP، يتم الاتصال مباشرة بالأطراف.

اتصال لمحمل البرامج الثابتة




أين يمكنني الحصول على أداة تحميل التشغيل التي تدعم الوكالة الدولية للطاقة؟

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

يوصى باستخدام أدوات تحميل التشغيل من حزمة optiboot. من حيث المبدأ، يتم تضمين أدوات تحميل التشغيل هذه في تثبيت منصة Arduino نفسها، ولكن من الأفضل تنزيل وتثبيت أحدث إصدار من optiboot من هنا. يتكون التثبيت من خطوتين (ربما يمكن القيام بذلك بطريقة أخرى):

  1. تتم إعادة كتابة المجلد bootloaders\optiboot إلى C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot
  2. يتم إلحاق ملف boards.txt بالملف C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt
بطبيعة الحال، قد يكون مجلد تثبيت منصة Arduino مختلفًا.

بعد ذلك، يتم إعادة تحميل بيئة التطوير وفي قائمة الخدمة/اللوحة، يمكنك رؤية اللوحات الجديدة المميزة بـ . لسوء الحظ، عند اختيار هذه اللوحات، تحدث بعض أخطاء التجميع الغريبة وتظهر جميع أنواع الشذوذات الأخرى... لذلك نجعل الأمر أكثر بساطة. افتح الملف C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt في أي محرر نصوص وقم بتغيير الأسطر التالية:

لاردوينو نانو:
Menu.cpu.nano.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

لاردوينو ميني:
Menu.cpu.mini.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

المشكلة التالية هي أن أداة تحميل التشغيل optiboot للوحة Arduino Mega غير موجودة في الطبيعة، لأن... تتمتع Mega بذاكرة أكبر وتستخدم بروتوكولًا مختلفًا. لذلك، نستخدم أداة تحميل التشغيل القياسية ولكن المعدلة، والتي نقوم بتنزيلها من هنا. أعد تسمية الملف إلى stk500boot_v2_mega2560_2.hex واكتبه في المجلد C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\stk500v2.

لا تنزعج من أن ملف البرنامج الثابت المعدل لـ Mega أصغر مرتين من الملف القياسي - يبدو أن هذا هو ما ينبغي أن يكون عليه الأمر.

عملية البرامج الثابتة

بعد كل التغييرات، يمكنك وميض أدوات تحميل التشغيل عن طريق تحديد اللوحات العادية في قائمة اللوحات (وليس!). في هذه الحالة، سيتم وميض تلك الملفات السداسية التي حددناها في ملف board.txt.
قد لا تبدأ عملية البرنامج الثابت وقد يظهر خطأ:
لحل هذه المشكلة، افتح مخطط المبرمج وفي قسم الإعداد، حدد سرعة مختلفة للمنفذ التسلسلي.
أثناء التحميل على Arduino Mega، قد يظهر خطأ يجب تجاهله:
avrdude: خطأ في التحقق، أول عدم تطابق عند البايت 0x3e000 0x0d != 0xff avrdude: خطأ في التحقق؛ عدم تطابق المحتوى

التلاعب النهائي

تتمتع أدوات تحميل optiboot بميزة أخرى - فهي تزيد من سرعة تحميل الرسومات، لذلك عند استخدام اللوحات مع optiboot تحتاج إلى إجراء التغييرات المناسبة على ملف boards.txt:

لاردوينو نانو:
Menu.cpu.nano.atmega328.upload.speed=115200
لاردوينو ميني:
Menu.cpu.mini.atmega328.upload.speed=115200

ومن الأفضل أن تتذكر سرعة المنفذ السابق أيضًا، لأن... يجب استخدامه على اللوحات ذات أدوات تحميل التشغيل القياسية. إذا لم يتم إجراء مثل هذه التغييرات، فإن عملية تحميل الرسومات ستؤدي إلى حدوث خطأ مثل هذا:
avrdude: stk500_getsync(): غير متزامن: resp=0x00

الروابط والأدب

حزمة optiboot
محمل إقلاع البرامج الثابتة
كيفية تفليش البوت لودر في الاردوينو برو ميني

العلامات:

  • اردوينو
  • الوكالة الدولية للطاقة
اضف اشارة

ما هي الوكالة الدولية للطاقة أو الموقت الوكالة الدولية للطاقة؟

مؤقت جهاز المراقبة (مؤقت جهاز المراقبة, إنجليزيمؤقت جهاز المراقبة- أشعل. "المراقبة") - دائرة تحكم يتم تنفيذها بواسطة الأجهزةتجميدأنظمة. يمثلمؤقت، والتي يتم إعادة ضبطها بشكل دوري بواسطة النظام الذي يتم التحكم فيه. إذا لم تتم إعادة التعيين خلال فترة زمنية معينة، فستحدث إعادة تعيين إجبارية.أنظمة. في بعض الحالات، يمكن لمؤقت المراقبة إرسال إشارة إلى النظام لإعادة التشغيل (إعادة تشغيل "ناعمة")، بينما في حالات أخرى، يتم إجراء إعادة التشغيل في الأجهزة (عن طريق تقصير سلك إشارة RST أو ما شابه ذلك).

أقترح خيارًا للجهاز يقوم بإعادة تشغيل الكمبيوتر تلقائيًا عندما يتجمد.

يعتمد على لوحة Arduino المعروفة مع الحد الأدنى من المكونات الإلكترونية الخارجية. نقوم بتوصيل الترانزستور باللوحة حسب الشكل أدناه. نقوم بتوصيل مجمع الترانزستور بدلاً من زر "إعادة الضبط" الخاص بالكمبيوتر باللوحة الأم، بجهة الاتصال التيلامتصل بـ GND.




وهنا الرسم البياني بأكمله:

يعمل الجهاز على النحو التالي: يتم تشغيل البرنامج النصي على الكمبيوتر، والذي يرسل البيانات بشكل دوري إلى منفذ الكمبيوتر. يتصل Arduino بـ USB ويستمع إلى هذا المنفذ. إذا لم تكن هناك بيانات خلال 30 ثانية، يفتح Arduino ترانزستورًا يربط Reset بالأرضي، وبالتالي محاكاة الضغط على زر إعادة الضبط.
بعد إعادة التعيين، يتوقف Arduino مؤقتًا لمدة دقيقتين، في انتظار تحميل جميع البرامج، ثم يبدأ في الاستماع إلى المنفذ مرة أخرى.

يجب إضافة البرنامج النصي وعمال المناجم إلى بدء التشغيل، ويجب تكوين BIOS لتشغيل الكمبيوتر تلقائيًا.





يتطلب تصنيع الجهاز الحد الأدنى من المهارات في العمل باستخدام مكواة اللحام وبرمجة Arduino.

يمكنك أيضًا استخدام أي ترانزستور قناة H بخصائص مماثلة. ولكن تأكد من تطابق pinout. على سبيل المثال، استخدمت 9013، هناك اتصال مقلوب



اشتريت مكونات التجميع على Aliexpress:

الأسلاك لتجميع اللوح http://ali.pub/22k78b

اردوينو UNO (يناسب تمامًا) http://ali.pub/22k7dd

رسم اردوينو

إنت ليدبين = 13؛
إنت ريسيتبين = 12؛
إنت فال = 0؛
عدد صحيح = 0؛
الإعداد باطل()
{
Serial.begin(9600);
pinMode(LedPin,OUTPUT);

// ابدأ بالتوقف المؤقت لمدة دقيقتين
تأخير (120000)؛
}

حلقة فارغة()
{
العد++؛

إذا (Serial.available () > 0)
{
فال = Serial.read();
إذا (فال == "H")
{
الكتابة الرقمية (LedPin، LOW)؛
الكتابة الرقمية(ResetPin,LOW);
العد = 0؛
}
آخر
( العد ++ ;
}
}

إذا (العد > 10)
{
الكتابة الرقمية (LedPin، HIGH)؛
الكتابة الرقمية (ResetPin، HIGH)؛
}
}

البرنامج النصي لإرسال البيانات إلى المنفذ:

(Get-Date).ToString("dd.MM.yyyy HH:mm") | خارج الملف ج:\Users\miner\Desktop\reboot.txt -append

بينما($صحيح)(
بدء النوم -3
$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.open()
$port.WriteLine("H")
$port.Close()
}

مباشرة بعد التشغيل، يكتب البرنامج النصي التاريخ والوقت الحاليين إلى ملف reboot.txt. من هذا الملف يمكنك الحكم على عدد ووقت عمليات إعادة التشغيل. يجب تحرير مسار الملف ورقم المنفذ وفقًا لبيانات النظام لديك. تتم كتابة الكود في مفكرة عادية ويتم حفظه بامتداد *ps1.



لأن في نظام التشغيل Windows، تعمل سياسة الأمان على تعطيل تنفيذ البرامج النصية عن طريق النقر المزدوج ومن بدء التشغيل نقوم بعمل خدعة بآذاننا ونطلق قذيفة من ملف دفعي بالمحتوى التالي:

إضافة وحدة WiFi ومؤقت WatchDog خارجي

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

مزايا وحدة التحكم التي تعمل مع الإنترنت:

  • مزامنة الساعات مع خادم الوقت
  • التحول التلقائي إلى التوقيت الشتوي/الصيفي
  • سوف تتعرف على إصدار إصدار البرنامج الثابت الجديد
  • عرض بيانات وحدة التحكم الخاصة بك من جهازك المحمول
  • الاتصال بالموقع log2.com.ua

ذبابة صغيرة في المرهم هي كل امتيازات النسخة المدفوعة من البرنامج الثابت MEGA CtrlM، وهي ليست باهظة الثمن - 4.95 دولار فقط! بالإضافة إلى ذلك، تدعم هذه البرامج الثابتة 8 أجهزة استشعار لدرجة الحرارة، و8 مخرجات وبرمجة يمكن التحكم فيها، أي تحديد الظروف الخاصة بك.

لشراء البرامج الثابتة، يرجى الاتصال بي على info@site. البرامج الثابتة المدفوعة ستجعل جهازك أكثر مرونة، وفي الوقت نفسه، ستساهم في مواصلة تطوير المشروع.

مزيد من التفاصيل حول كل نقطة.

مزامنة الوقت وانتقال التوقيت الصيفي/الشتوي

هنا، بشكل عام، كل شيء واضح. لا يمكن لوحدة الساعة DS1307 أن تتباهى بدقتها. على سبيل المثال، لمدة نصف عام، تأخرت ساعتي بأكثر من ساعتين. وقد لا يتم تفريغ البطارية في الوقت المناسب. بالطبع، ستسعد أيضًا بالتغيير التلقائي للساعات إلى التوقيت الشتوي أو الصيفي - مرتين في السنة، مشكلة واحدة أقل. لكننا نحتاج إلى ساعة - للتسجيل الصحيح، لإرسال البيانات إلى الخادم، للتدفئة وفقًا لجدول زمني! بالنسبة لتلك البلدان التي لا يوجد فيها تغيير في الساعة، يمكن تعطيل هذا الخيار، مع ترك المزامنة فقط.

الافراج عن البرامج الثابتة الجديدة

ما الذي يمكن أن يكون أكثر سعادة من الأخبار التي تفيد بإصلاح الأخطاء القديمة وإضافة ميزات جديدة إلى جهازك. يمكننا القول أن جهازك يبدأ حياة ثانية!

عرض البيانات من جهاز محمول.

هنا يمكنك الاسترخاء عمومًا :) مستلقيًا على الأريكة، انتقل إلى صفحة الويب الخاصة بوحدة التحكم الخاصة بك وانظر إلى قيم المستشعر الحالية. لكي نكون منصفين، يجب القول أن الصفحة في بعض الأحيان لا يتم تحميلها في المرة الأولى وليس هناك ما يمكنك فعله حيال ذلك. سأحل هذه المشكلة في المستقبل عن طريق كتابة تطبيق منفصل لنظام Android. لمنع وحدة التحكم الخاصة بك من تغيير عنوان IP الخاص بها، في إعدادات جهاز التوجيه، قم بتعيين IP ثابت لها عن طريق عنوان MAC. بالمناسبة، إذا كان IP الخاص بوحدة التحكم الخاصة بك هو 192.168.0.106، فلعرض قراءات المستشعر في سطر المتصفح بهاتفك أو جهازك اللوحي أو الكمبيوتر، يلزمك إدخال http://192.168.0.106/d459 كقاعدة عامة، لا يتعين عليك إدخال http://، فقط 192.168 يكفي 0.106/d459

مراقبة الويب المحلية. يمكنك أيضًا تشغيل المخرجات أو إيقاف تشغيلها.

الاتصال بالموقع log2.com.ua

إذا كنت ترغب في مراقبة نظامك أثناء الاستلقاء على الأريكة، على سبيل المثال، في تركيا أو في أي مكان آخر خارج بلدك، فيمكنك توصيله بالشاشة العالمية عبر الإنترنت على log2.com.ua هذا الموقع خاص بي. يحتوي على واجهة بسيطة للغاية ولكنه يقوم بعمله.


جهاز مراقبة عالمي على الإنترنت يراقب النظام الشمسي.

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


تقوم الشاشة العالمية عبر الإنترنت بمراقبة نظام التدفئة.

لتوصيل وحدة التحكم بالشبكة، أستخدم وحدة WiFi ESP8266-01. لتوصيله، ستحتاج إلى زوج من المقاومات ومحول إشارة منطقي. من الأفضل طلبه على الفور باستخدام وحدة ESP8266. كل ذلك معًا سيكلفك حوالي 150 غريفنا.

يمكنك توصيل ESP8266 بدون محول إشارة منطقي، ولكن لا ينصح بذلك بشدة!


مخطط اتصال لـ ESP8266-01. سنحتاج إلى مقاومتين إضافيتين بقوة 4.7K وواحدة بقدرة 470R


استخدام الدبابيس الموجودة على لوحة Arduino MEGA لتوصيل وحدة WiFi وجهاز توقيت WatchDog خارجي

ومع ذلك، للاختبار يمكنك الحصول على طاقة 3.3 فولت لوحدة ESP8266 مباشرة من لوحة Arduino. إنه يقع بالقرب من دبوس RESET. ولكن، من أجل تشغيل أكثر استقرارا، يوصى بإزالة مصدر طاقة منفصل من 5 فولت وخفضه إلى 3.3 فولت باستخدام الدائرة المصغرة AMS1117 المتدرجة.


دائرة لتقليل 5 فولت إلى 3.3 فولت لتشغيل وحدة WiFi ESP8266


توصيل مؤقت WatchDog خارجي

لا أحد في مأمن من الأخطاء، بما في ذلك أنا. في بعض الأحيان، مع إصدار برامج ثابتة جديدة وإضافة ميزات جديدة، قد تواجه مشكلات جديدة في شكل تجميد وحدة التحكم. لا تخافوا جدا. أقوم باختبار البرامج الثابتة قبل إصدارها، ولكن لا يزال بإمكاني التغاضي عن شيء ما أو التغاضي عنه. ولم يتم إلغاء العامل البشري. مؤقت المراقبة الداخلي، الذي من المفترض أن يحرس وحدة التحكم الخاصة بنا ويعيد تشغيلها في حالة تجميدها، لا يعمل دائمًا! المشكلة هنا ليست في الوكالة الدولية للطاقة نفسها، ولكن في الكود الخاص بي، قد تتجمد وحدة التحكم في قسم يقوم بإعادة تعيين الوكالة الدولية للطاقة بشكل منتظم ولن نقوم بإعادة التشغيل أبدًا. لهذا السبب، قررت إضافة هيئة مراقبة خارجية أخرى، والتي لديها فترة إعادة تشغيل طويلة إلى حد ما من 140 إلى 300 ثانية، ويتم إعادة ضبط هذا المؤقت فقط في البرنامج الرئيسي، لذلك، إذا توقفنا عن أداء أي وظيفة، فستعمل مراقبتنا الخارجية!


تم التقاط مخطط مؤقت WatchDog خارجي على شريحة 555

إذا لم يكن لديك الوقت الكافي للتلاعب باللوحة، فيمكنك شراء مجموعة تجميع جاهزة تقريبًا مني - لوحة دوائر مطبوعة ومجموعة من مكونات الراديو. بعد تجميعه، ستتلقى مؤقت WatchDog ولوحة لتوصيل وحدة WiFi. تحديد السعر 150 غريفنا.


WathcDog + لوحة واي فاي. لم يتم تضمين وحدة واي فاي!


WathcDog + لوحة WiFi، زاوية أخرى

ليس سراً أن أي تقنية رقمية ستتجمد عاجلاً أم آجلاً. هذه دائمًا مفاجأة للمطور وهي دائمًا مصدر إزعاج للمستخدم. إنه يحدث دائمًا في الوقت الخطأ، وللأسف، لا يمكن التنبؤ به بأي شكل من الأشكال. ولا يهم ما إذا كان "وميض شجرة عيد الميلاد" محلي الصنع على شريحة متحكم واحدة أو خادمًا معقدًا يعمل على شبكة مزدحمة - سيكون من الأفضل عدم حدوث عمليات التجميد هذه. وهناك أنظمة يكون تجميدها مكلفًا للغاية.
تم تصميم الجهاز، المسمى "المراقبة"، لمراقبة حقيقة تجميد النظام الذي يتحكم فيه، وإذا تم اكتشاف التجميد، يجبر النظام على إعادة التشغيل.

أولاً، سأكتب فقرة قصيرة لـ "المبتدئين" حتى يكون من الواضح ما أتحدث عنه هنا. ثم ستكون هناك فقرة للأشخاص الأكثر استعدادًا، والذين، بعد أن قرأوا هذا الحد، لا يزالون لا يريدون إغلاق علامة التبويب "المراجعة" :)
مؤقت الوكالة الدولية للطاقة في حد ذاته عبارة عن دائرة صغيرة وبسيطة إلى حد ما. طالما أنها تتلقى بشكل دوري إشارات من الجهاز الذي يتم التحكم فيه ("نعم، نعم"، "كل شيء على ما يرام"، "أنا هنا"، "أنا أعمل")، يتصرف الكلب بهدوء ولا يتدخل بأي شكل من الأشكال. . بمجرد توقف الإشارات، ينتظر الكلب الوقت المخصص (عادة بضع ثوان)، وإذا لم تصل أي إشارات، فإنه يعتبر أن الجهاز متجمد ويرسل له إشارة إعادة ضبط، ويعيد تشغيله. ومن الواضح أن نظامًا شرطيًا معينًا مزودًا بمثل هذه الوحدة سيكون أكثر استقرارًا مقارنة بنظام مماثل بدون رقيب: لا أحد في مأمن من التجميد، لكن الأول سيخرج من هذا التجميد بنفسه، بينما الثاني سيخرج من هذا التجميد. الانتظار والوقوف خاملا حتى التدخل البشري.
لا يهتم كلب الحراسة على الإطلاق بحجم وأهمية النظام الذي يتحكم فيه. يمكن أن تكون شريحة متحكم دقيقة رخيصة الثمن ذات ثمانية أرجل، أو شريحة برتقالية توتية، أو جهاز توجيه، أو كمبيوتر مكتبي منزلي، أو خادمًا كبيرًا ومتطورًا. إنها تحتاج فقط إلى تلقي إشارات حول نشاط النظام، وبالتالي يتفاعل النظام، وفقًا لذلك، مع دافع "إعادة الضبط".
نهاية الفقرة.
لماذا توجد هيئة مراقبة خارجية إذا كان أي متحكم حديث يحتوي على وحدة تحكم مدمجة؟ لسببين رئيسيين. أولاً، هناك حالات تجميد لا يمكن تتبعها من داخل بلورة واحدة: يقاطع المؤقت البث المباشر، وتتم إعادة تعيين الوكالة بانتظام، ويعمل البرنامج، على سبيل المثال، في حلقة لا نهاية لها. أو أنه ينتظر دفعة في إحدى ساقيه لا يمكن أن تأتي بسبب حادث ما. ليس كثيرًا... إن حارس الأجهزة الخارجية ليس مرتبطًا بأي حال من الأحوال بالعمليات الداخلية: طالما لديه القوة، فسوف يراقب.
ثانيا، اردوينو... يجب الاعتراف بأن حصة مشاريع المتحكمات الدقيقة DIY التي ينفذها الجمهور باستخدام Arduino تحتل مكانة كبيرة. وللأسف، لا يستطيع أتباع Arduino الاستفادة من متعة مؤقت المراقبة المدمج في Atmega. مشكلة . باختصار: تعمل الوكالة الدولية للطاقة بشكل صحيح فقط على بعض أجهزة Unos، بينما تصل بقية وحدات Arduino إلى طريق مسدود عند محاولة استخدام مؤقت الوكالة الدولية للطاقة. الحل الوحيد هو تفليش محمل الإقلاع بمبرمج خارجي. ومن المؤكد أن مثل هذه "الجراحة" تخيف المبتدئين. وليس كل شخص لديه اردوينو ثانٍ في متناول اليد لتحويله إلى مبرمج لإحياء الأول، الذي دخل في دورة ميتة بسبب استخدام الوكالة الرقابية المدمجة. من المرجح أن تخيفه كل هذه التلاعبات بالمبتدئ.
تسمح المراقبة الخارجية، باستخدام اردوينو في مشاريعك، بالحصول على جميع روائع الأنظمة المستقرة بشكل كامل، دون الحاجة إلى إزعاج مشاكل مؤقت المراقبة الداخلي.

الآن، في الواقع، إلى الوحدة نفسها.

إنه مشابه في الحجم لـ Arduino Pro Mini:

لا يوجد شيء مثير للاهتمام على الجانب الخلفي: فقط المسارات التي تربط ثلاث فتحات بدبابيس الوحدة. نعم، ليس تدفقًا مغسولًا عالي الجودة:

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

باختصار وإيجاز حول الغرض من دبابيس الرقاقة

يجب أن يتلقى طرف ST نبضات قوية من الجهاز الذي يتم التحكم فيه، مما يشير إلى عمله السليم.

يتم إنشاء نبض إعادة التعيين عند أطراف RST و/RST. الفرق بين أطراف RST و/RST هو فقط قطبية نبض إعادة التعيين. يجب أخذ الإشارة من طرف RST في حالة إعادة تشغيل الجهاز المتحكم فيه كجهاز منطقي بصفر عادي على سطر إعادة الضبط. من ناحية أخرى، فإن إشارة /RST مخصصة للأجهزة التي يتم إعادة ضبطها على مستوى منخفض على خط إعادة الضبط. يتم إعادة تشغيل معظم وحدات التحكم الدقيقة الحديثة (بما في ذلك وحدات التحكم الدقيقة Atmel، التي تم بناء Arduino على أساسها) بدون نبضات، أي. الإشارة المناسبة لهم هي /RST.

يختار طرف TOL مدى قبول ظروف جهد الإمداد.
- عند الضغط على TOL على الأرض، يعتبر ممر انحراف الجهد بنسبة خمسة بالمائة مقبولاً. أولئك. ستأتي إشارة إعادة التشغيل عندما ينخفض ​​الجهد إلى 4.75 فولت.
- عند توصيل TOL بخط الإمداد، يتسع ممر جهد الإمداد إلى 10%. أولئك. سيتم إعادة تشغيل الجهاز عندما ينخفض ​​جهد الإمداد إلى 4.5 فولت.

يحدد طرف TD الحد الأقصى لوقت التحكم الذي سيتم بعده تشغيل مؤقت المراقبة:
- عند الضغط على TD على الأرض، تكون المهلة 150 مللي ثانية (من مثال إلى آخر، ستكون القاعدة 62.5 مللي ثانية - 250 مللي ثانية)؛
- عندما يكون TD معلقًا في الهواء، تكون المهلة 600 مللي ثانية (من مثال إلى آخر 250 مللي ثانية - 1000 مللي ثانية)؛
- عندما يكون TD متصلاً بالطاقة، تكون المهلة 1200 مللي ثانية (من مثيل إلى مثيل 500 مللي ثانية - 2000 مللي ثانية). لن توفر هذه الدائرة الدقيقة سرعات مصراع أطول من ثانيتين، حتى من الناحية النظرية.


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


كما يمكننا أن نرى من الرسم البياني، يتم إخراج خطوط الشريحة ST وRST و/RST بنفس الاسم وإلى منافذ الوحدة.
زودتنا الشركة المصنعة بالشريحة الأكثر ولاءً وراحة: أوسع نطاق من جهد الإمداد (من 4.5 إلى 5 فولت) وأقصى مهلة ممكنة للمراقبة (1.2 ثانية).

أصبح الآن الرسم التخطيطي لتوصيل الوحدة بأردوينو الشرطي واضحًا:
- يتم توصيل خطوط Vcc و Gnd الموجودة على الوحدة بخطين يحملان نفس الاسم على الاردوينو؛
- يتم توصيل خط /RST الموجود على الوحدة بمنفذ RST الموجود على Arduino
- خط ST متصل بأي دبوس مجاني، ويفضل أن يكون بدون جهاز PWM، - على سبيل المثال، بالنسبة لي هو الدبوس 2.

لنرسم مخططًا بسيطًا لاختبار الوحدة. أنا (من أجل الوضوح فقط) أقوم بوميض مؤشر LED المدمج برمجيًا أثناء التهيئة. لم تكن هناك حاجة للقيام بذلك؛ سوف يومض مؤشر LED بدوننا. ولكن بهذه الطريقة يكون الأمر أكثر وضوحًا وقابلية للفهم بالنسبة للمبتدئين.
إعداد الفراغ () (pinMode (13، OUTPUT)؛ // استخدم pinMode LED الداخلي (2، OUTPUT)؛ // من هذا الدبوس سوف تتلقى الوكالة الدولية للطاقة إشارات digitalWrite (13، HIGH)؛ تأخير (50)؛ // باختصار يومض مؤشر LED في كل مرة تقوم فيها بإعادة تشغيل الكتابة الرقمية (13، LOW) ؛ حلقة فارغة () (digitalWrite (2، HIGH)؛ تأخير (2)؛ // تشكيل كتابة رقمية قصيرة الحافة (2، LOW)؛ تأخير (1150)؛ // أطول مهلة ) مع قيمة تأخير تبلغ 1150 مللي ثانية (في حالتي الخاصة) أو أقل، يدور اردوينو الخاص بنا بهدوء في دورة العمل، ولا شيء يتداخل معه. يومض مؤشر LED في البداية، ولا يضيء - لا توجد عمليات إعادة تشغيل. بمجرد زيادة هذا التأخير إلى 1200 مللي ثانية على الأقل (أو إدخال تأخير كبير في إجراء الإعداد)، سنرى أن مؤشر LED سيبدأ في الوميض بشكل دوري: يصبح الوقت بالغ الأهمية للكلب ويعيد تشغيل اردوينو.
في الظروف الحقيقية لرسم العمل، يكفي إضافة السطر digitalWrite(2,HIGH); تأخير (1)؛ الكتابة الرقمية (2، LOW)؛ في نهاية الحلقة الرئيسية، بحيث تشعر وحدة المراقبة المتصلة بالدبوس 2 بالهدوء.
عندما يتم تهيئة Arduino، تكون جميع المسامير مشوهة، لذلك لا يهتم الكلب على الإطلاق بالمستوى المنطقي الذي يعلق فيه الجهاز: لقد بدأ الموقت، وبالتالي، ستأتي دفعة إعادة التشغيل حتمًا.

الاستنتاجات.
1. هل جهاز توقيت الوكالة الدولية للطاقة ضروري من حيث المبدأ؟ إذا كان التجميد في الجهاز الذي تقوم بتصميمه يمكن أن يؤدي إلى عواقب سلبية، فنعم. مع ذلك، من الواضح أن النظام سيكون أكثر استقرارًا من دونه.

2. هل تعتبر هيئة الرقابة الخارجية حلاً سحريًا؟ بالطبع لا. إنه أكثر كفاءة من الداخلي الموجود في العديد من وحدات التحكم الدقيقة، ولكنه ليس حلاً سحريًا. لتحقيق أقصى قدر من الكفاءة في تشغيله، من المهم توصيله بالمكان الصحيح في نظامك. من الأفضل عدم توصيله بالخطوط التي يتم إنشاء الإشارات عليها في الأجهزة (PWM، منافذ الأجهزة المختلفة ذات الومضات)، وكذلك الإشارات من مولد ساعة خارجي أو داخلي. حسنًا، من غير المجدي على الإطلاق توصيله بالخطوط التي تعمل كمدخل - وبهذه الطريقة لن نتحكم في وحدة التحكم الدقيقة الخاصة بنا، بل في شيء آخر.

3. هل هناك أي عيوب لهذا الحارس؟ العيب الرئيسي لمؤقت المراقبة الخارجي، بشكل عام، هو الحاجة إلى تخصيص دبوس واحد على جهازك لتشغيله. على الرغم من أنه من الناحية العملية، يمكن تجنب ذلك في كثير من الأحيان: إذا كان وحدة التحكم الدقيقة الخاصة بك تكتب أو ترسم شيئًا ما على الشاشة باستمرار، وترسل شيئًا ما إلى المنافذ باستمرار، وتولد بعض نبضات التحكم للأجهزة الخارجية - قم بتوصيل كلب حراسة بهذه الخطوط - فهو التردد و دورة عمل النبضات غير مبالية تمامًا، طالما أن هناك حركة مستمرة.
من المحتمل أن يكون العيب الرئيسي لتطبيق المؤقت هذا هو مهلة التحكم القصيرة إلى حد ما. هناك أوقات ترغب فيها في الحصول على احتياطي لمدة 3-5 ثوانٍ على الأقل.

4. هل يجب أن أشتري هذه الوكالة بالذات؟ حسنًا، سيقرر الجميع بأنفسهم. يمكنك بالتأكيد الحصول على كلب حراسة بأقل من 3 دولارات. من الأسهل على أي شخص شراء الشريحة التي تمت مناقشتها أعلاه فقط واستخدام LUT لإنشاء مثل هذه الوحدة بنفسه. بالنسبة للبعض، من الأسهل أن تأخذ الأسطوري وتصنع مؤقتًا رقابيًا فضفاضًا: الإيجابيات رخيصة الثمن ويمكن الوصول إليها، والسلبيات أكثر ضجة ومكثفات إلكتروليتية محددة للوقت، مما يعني أنه على مر السنين يتم ضمان تعويم جميع المعلمات. من الأسهل على أي شخص أن يقوم بعمل طلقة واحدة باستخدام جهاز توقيت باستخدام أشباه الموصلات. هنا الجميع يقرر لنفسه.
هنا، مقابل أموال ميسورة التكلفة، نحصل على جهاز جاهز بالكامل ويعمل بمعلمات موحدة.
لذلك سيقوم الجميع بتقييم مدى معقولية الشراء بأنفسهم.

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

لم يقدم أحد أو يرعى أي شيء؛ لقد تم شراء كل شيء بأموالنا الخاصة.

محدث: بينما كنت أكتب المراجعة، قام البائع برفع السعر بشكل غير متوقع. أُووبس. دعونا نعتبر هذا هجومًا مؤقتًا للجشع. لديه بشكل دوري خصم على هذا المنتج. حسنًا، لا شيء يمنعك من البحث عن هذا المنتج لدى بائع آخر.

أخطط لشراء +92 اضافة الى المفضلة اعجبني الاستعراض +86 +164

أقترح خيارًا للجهاز يقوم بإعادة تشغيل الكمبيوتر تلقائيًا عندما يتجمد.

يعتمد على لوحة Arduino المعروفة مع الحد الأدنى من المكونات الإلكترونية الخارجية. نقوم بتوصيل الترانزستور باللوحة حسب الشكل أدناه. نقوم بتوصيل مجمع الترانزستور بدلاً من زر "إعادة الضبط" الخاص بالكمبيوتر باللوحة الأم، بجهة الاتصال غير المتصلة بـ GND.

وهنا الرسم البياني بأكمله:

يعمل الجهاز على النحو التالي: يتم تشغيل البرنامج النصي على الكمبيوتر، والذي يرسل البيانات بشكل دوري إلى منفذ الكمبيوتر. يتصل Arduino بـ USB ويستمع إلى هذا المنفذ. إذا لم تكن هناك بيانات خلال 30 ثانية، يفتح Arduino ترانزستورًا يربط Reset بالأرضي، وبالتالي محاكاة الضغط على زر إعادة الضبط.
بعد إعادة التعيين، يتوقف Arduino مؤقتًا لمدة دقيقتين، في انتظار تحميل جميع البرامج، ثم يبدأ في الاستماع إلى المنفذ مرة أخرى.

يجب إضافة البرنامج النصي وعمال المناجم إلى بدء التشغيل، ويجب تكوين BIOS لتشغيل الكمبيوتر تلقائيًا.

يتطلب تصنيع الجهاز الحد الأدنى من المهارات في العمل باستخدام مكواة اللحام وبرمجة Arduino.

يمكنك أيضًا استخدام أي ترانزستور قناة H بخصائص مماثلة. ولكن تأكد من تطابق pinout. على سبيل المثال، استخدمت 9013، هناك اتصال مقلوب

اشتريت مكونات التجميع على Aliexpress:

الأسلاك لتجميع اللوح http://ali.pub/22k78b

اردوينو UNO (يناسب تمامًا) http://ali.pub/22k7dd

رسم اردوينو

إنت ليدبين = 13؛
إنت ريسيتبين = 12؛
إنت فال = 0؛
عدد صحيح = 0؛
الإعداد باطل()
{
Serial.begin(9600);
pinMode(LedPin,OUTPUT);

// ابدأ بالتوقف المؤقت لمدة دقيقتين
تأخير (120000)؛
}

حلقة فارغة()
{
العد++؛

إذا (Serial.available () > 0)
{
فال = Serial.read();
إذا (فال == 'H')
{
الكتابة الرقمية (LedPin، LOW)؛
الكتابة الرقمية(ResetPin,LOW);
العد = 0؛
}
آخر
( العد ++ ;
}
}

تأخير (1000)؛

إذا (العد > 10)
{
الكتابة الرقمية (LedPin، HIGH)؛
الكتابة الرقمية (ResetPin، HIGH)؛
}
}

البرنامج النصي لإرسال البيانات إلى المنفذ:

(الحصول على التاريخ).ToString('dd.MM.yyyy HH:mm') | خارج الملف ج:\Users\miner\Desktop\reboot.txt -append

بينما($صحيح)(
بدء النوم -3
$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.open()
$port.WriteLine("H")
$port.Close()
}

مباشرة بعد التشغيل، يكتب البرنامج النصي التاريخ والوقت الحاليين إلى ملف reboot.txt. من هذا الملف يمكنك الحكم على عدد ووقت عمليات إعادة التشغيل. يجب تحرير مسار الملف ورقم المنفذ وفقًا لبيانات النظام لديك. تتم كتابة الكود في مفكرة عادية ويتم حفظه بامتداد *ps1.

لأن في نظام التشغيل Windows، تعمل سياسة الأمان على تعطيل تنفيذ البرامج النصية عن طريق النقر المزدوج ومن بدء التشغيل نقوم بخدعة بآذاننا ونطلق الصدفة من الملف الدفعي بالمحتوى التالي.