इस नए लेख में हम यह देखने जा रहे हैं कि क्या प्रहरी, इसका उपयोग किस लिए किया जा सकता है, और इसे अपनी परियोजनाओं में कैसे उपयोग किया जाए Arduino. इस दिलचस्प लेकिन अज्ञात फ़ंक्शन के बारे में आपको जो कुछ जानने की ज़रूरत है। और हाँ, जैसा कि इसके नाम से पता चलता है (वॉचडॉग), इसका उपयोग कुछ समस्याओं का पता लगाने के लिए किया जा सकता है।
यहां हम देखेंगे तुम्हें सिर्फ ज्ञान की आवश्यकता है के बारे में…
प्रहरी क्या है?
कंप्यूटिंग में, a निगरानी यह एक पर्यवेक्षी तंत्र है जिसका उपयोग किसी सिस्टम या प्रोग्राम के प्रदर्शन की निगरानी के लिए किया जाता है। इसका मुख्य कार्य सिस्टम में असामान्य स्थितियों या विफलताओं, जैसे क्रैश या फ़्रीज़ का पता लगाना और प्रतिक्रिया देना है, और संचालन की निरंतरता या सिस्टम की पुनर्प्राप्ति की गारंटी के लिए सुधारात्मक उपाय करना है।
प्रहरी टाइमर पर काम करता है जो एक विशिष्ट समय अंतराल के लिए कॉन्फ़िगर किया गया है। यदि सिस्टम या प्रोग्राम उस समय अंतराल के भीतर कोई विशिष्ट कार्रवाई नहीं करता है या वॉचडॉग को शक्ति नहीं देता है (यानी, इसे पुनरारंभ करें), तो वॉचडॉग मानता है कि सिस्टम अवांछित स्थिति में है या उसने सही ढंग से प्रतिक्रिया देना बंद कर दिया है और पूर्व निर्धारित कार्रवाई करता है। यह क्रिया कार्यान्वयन के अनुसार भिन्न हो सकती है और इसमें सिस्टम को रिबूट करना, त्रुटि लॉग उत्पन्न करना, अलार्म ट्रिगर करना या समस्या को ठीक करने के लिए विशिष्ट कदम उठाना शामिल हो सकता है।
वॉचडॉग का उपयोग ऑपरेटिंग सिस्टम और सर्वर से लेकर विभिन्न प्रकार के कंप्यूटर सिस्टम और उपकरणों में किया जाता है Arduino सहित एम्बेडेड और महत्वपूर्ण रीयल-टाइम सिस्टम. इसका प्राथमिक लक्ष्य समस्याओं का स्वचालित रूप से पता लगाकर और उन पर प्रतिक्रिया देकर सिस्टम की विश्वसनीयता और उपलब्धता में सुधार करना है, जिससे विफलता की स्थिति में मैन्युअल हस्तक्षेप की आवश्यकता कम हो जाती है।
Arduino वॉचडॉग क्या है?
Arduino वॉचडॉग टाइमर को एप्लिकेशन की आवश्यकताओं के अनुसार सेट किया जाना चाहिए। वह निगरानी घड़ी आंतरिक 128 kHz क्लॉक स्रोत का उपयोग करता है (प्रयुक्त बोर्ड और MCU के आधार पर भिन्न हो सकता है)। सक्रिय होने पर, यह शून्य से उपयोगकर्ता द्वारा पूर्व निर्धारित मान तक गिनती शुरू कर देता है। यदि वॉचडॉग टाइमर इस मान तक पहुंचने पर रीसेट नहीं होता है, तो यह माइक्रोकंट्रोलर को रीसेट कर देता है।
निगरानी घड़ी एटीमेगा३२८पी, जिसे क्रियान्वित किया गया है Arduino UNO, 10 अलग-अलग समय सेटिंग्स प्रदान करता है, प्रत्येक यह निर्धारित करता है कि टाइमर कब ओवरफ्लो होगा और इसलिए रीसेट का कारण बनेगा। अलग-अलग समय अंतराल निम्नलिखित हैं: 16 एमएस, 32 एमएस, 64 एमएस, 0.125 सेकंड, 0.25 सेकंड, 0.5 सेकंड, 1 सेकंड, 2 सेकंड, 4 सेकंड और 8 सेकंड, जैसा कि हम बाद में मेरे द्वारा शामिल की गई तालिका में देखेंगे।
यदि यह अभी भी आपके लिए स्पष्ट नहीं है कि आप वॉचडॉग टाइमर के साथ क्या कर सकते हैं Arduino UNO, हम देखेंगे एक उदाहरण ताकि आप इसे ग्राफिक रूप से समझ सकें। इस उदाहरण में, हम एलईडी की एक साधारण ब्लिंक का उपयोग करेंगे। while() लूप में प्रवेश करने से पहले एलईडी एक निर्धारित अवधि के लिए झपकती हैं। इस while() लूप का उपयोग लॉक्ड सिस्टम के विकल्प के रूप में किया जाता है। चूंकि वॉचडॉग टाइमर while() लूप में रीसेट नहीं होता है, इसलिए यह सिस्टम रीबूट का कारण बनेगा, और सिस्टम क्रैश होने और रीबूट होने से पहले एलईडी फिर से ब्लिंक करना शुरू कर देंगे। ये सिलसिला जारी रहेगा...
विचार और विशेषताएं
निगरानी घड़ी कोड की शुरुआत में अक्षम है. वॉचडॉग को सक्षम करने से पहले x सेकंड का विलंब शामिल किया गया है। यह देरी Arduino बूटलोडर को यह जांचने की अनुमति देने के लिए महत्वपूर्ण है कि क्या नया कोड लोड किया जा रहा है और फ्लैश मेमोरी में कोड लिखने के लिए पर्याप्त समय दिया गया है। एहतियात के तौर पर यह पहलू प्रासंगिक है. ऐसी स्थिति उत्पन्न हो सकती है जहां दोषपूर्ण कोडिंग या अनुचित विचारों के कारण, लिखित कोड माइक्रोकंट्रोलर को बहुत कम अंतराल पर अनंत बार रीसेट कर देता है। यह Arduino बोर्ड को नुकसान पहुंचा सकता है और कोड को उस पर ठीक से अपलोड होने से रोक सकता है। यदि ऐसा होता है, तो लॉक किए गए Arduino पर ISP के रूप में किसी अन्य 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 में वॉचडॉग का उपयोग करने का उदाहरण
अंत में, हम यह देखने जा रहे हैं कि 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... }
जैसा कि Arduino के लिए इस स्केच उदाहरण में देखा जा सकता है, वहाँ हैं तीन कार्य वॉचडॉग के प्रबंधन के लिए उल्लेखनीय प्रोग्रामिंग भाषा, और ये हैं:
- wdt_अक्षम() Arduino को कॉन्फ़िगर करते समय टाइमर को अक्षम करने के लिए।
- wdt_enable(समय) टाइमर को एक अंतराल निर्दिष्ट करने और संबंधित समय निर्दिष्ट करते हुए इसे शुरू करने के लिए जैसा कि मैंने ऊपर तालिका में दिखाया है।
- wdt_reset() निर्दिष्ट अंतराल को नवीनीकृत करने के लिए और प्रोग्राम पुनरारंभ नहीं होता है।