मालवेअर हे अनाहूत किंवा धोकादायक प्रोग्राम आहेत जे...
![व्हायरस आणि मालवेअर काढून टाकण्यासाठी सर्वोत्तम उपयुक्तता](https://i2.wp.com/webhelper.info/images/danger.jpg)
वॉचडॉग म्हणजे काय किंवा वॉचडॉग टाइमर?
वॉचडॉग टाइमर (वॉचडॉग टाइमर, इंग्रजीवॉचडॉग टाइमर- प्रकाश. "वॉचडॉग") - हार्डवेअर लागू केलेले नियंत्रण सर्किट ओव्हरअतिशीतप्रणाली प्रतिनिधित्व करतोटाइमर, जे नियमितपणे नियंत्रित प्रणालीद्वारे रीसेट केले जाते. ठराविक कालावधीत रीसेट न झाल्यास, सक्तीने रीसेट केले जाते.प्रणाली काही प्रकरणांमध्ये, वॉचडॉग टाइमर सिस्टमला रीबूट करण्यासाठी सिग्नल देऊ शकतो ("सॉफ्ट" रीबूट), तर इतरांमध्ये, रीबूट हार्डवेअरमध्ये केले जाते (RST सिग्नल वायर किंवा तत्सम शॉर्ट करून).
मी एक साधन पर्याय प्रस्तावित करतो जो संगणक गोठल्यावर स्वयंचलितपणे रीबूट करतो.
हे सुप्रसिद्ध Arduino बोर्डवर आधारित आहे ज्यामध्ये किमान बाह्य संख्या आहे इलेक्ट्रॉनिक घटक. आम्ही खालील आकृतीनुसार ट्रान्झिस्टरला बोर्डशी जोडतो. आम्ही संगणकाच्या "रीसेट" बटणाऐवजी ट्रान्झिस्टर कलेक्टर कनेक्ट करतो मदरबोर्ड, संपर्क करण्यासाठी कीनाही GND शी जोडलेले.
येथे संपूर्ण आकृती आहे:
डिव्हाइस कार्यरत आहे खालील प्रकारे: संगणकावर एक स्क्रिप्ट लॉन्च केली जाते जी वेळोवेळी संगणक पोर्टवर डेटा पाठवते. Arduino USB शी कनेक्ट होते आणि हे पोर्ट ऐकते. 30 सेकंदांच्या आत कोणताही डेटा नसल्यास, Arduino एक ट्रान्झिस्टर उघडतो जो रीसेटला जमिनीवर जोडतो, त्याद्वारे रीसेट बटण दाबून अनुकरण करतो.
रीसेट केल्यानंतर, Arduino 2 मिनिटांसाठी थांबतो, सर्व प्रोग्राम्स लोड होण्याची वाट पाहत असतो आणि नंतर पुन्हा पोर्ट ऐकण्यास सुरुवात करतो.
स्क्रिप्ट आणि मिनर्स स्टार्टअपमध्ये जोडले जाणे आवश्यक आहे आणि BIOS वर सेट करणे आवश्यक आहे स्वयंचलित स्विचिंग चालूसंगणक.
यंत्राच्या निर्मितीसाठी सोल्डरिंग लोहासोबत काम करणे आणि Arduino प्रोग्रामिंग करणे यासाठी किमान कौशल्ये आवश्यक आहेत.
तुम्ही कोणताही एन वापरू शकता चॅनेल ट्रान्झिस्टरसमान वैशिष्ट्यांसह. पण पिनआउट जुळत असल्याची खात्री करा. उदाहरणार्थ, मी 9013 वापरले, तेथे एक उलटे कनेक्शन आहे
मी Aliexpress वर असेंब्लीसाठी घटक विकत घेतले:
साठी वायर्स ब्रेडबोर्ड असेंब्ली http://ali.pub/22k78b
Arduino UNO (नक्की बसते) http://ali.pub/22k7dd
अर्डिनो स्केच
int LedPin = 13;
int ResetPin = 12;
int val = 0;
int count = 0;
निरर्थक सेटअप()
{
Serial.begin(9600);
पिनमोड (लेडपिन, आउटपुट);
// 2 मिनिटे विराम द्या
विलंब(120000);
}
शून्य पळवाट()
{
संख्या ++ ;
जर (Serial.available() > 0)
{
val = Serial.read();
जर (val == "H")
{
डिजिटलराइट (लेडपिन, लो);
digitalWrite(ResetPin,LOW);
संख्या = 0;
}
इतर
(गणना++ ;
}
}
जर (गणना > 10)
{
डिजिटलराइट (लेडपिन, उच्च);
digitalWrite(ResetPin,HIGH);
}
}
स्क्रिप्ट पोर्टवर डेटा पाठवत आहे:
(Get-date).ToString("dd.MM.yyyy HH:mm") | आउट-फाइल c:\Users\miner\Desktop\reboot.txt -append
असताना($TRUE)(
स्टार्ट-स्लीप -s 3
$port= new-object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.open()
$port.WriteLine("H")
$port.Close()
}
लॉन्च झाल्यानंतर लगेच, स्क्रिप्ट फाइल reboot.txt वर लिहिते चालू दिनांकआणि वेळ. या फाइलवरून तुम्ही रीबूटची संख्या आणि वेळ ठरवू शकता. फाइल पथ आणि पोर्ट क्रमांक तुमच्या सिस्टम डेटानुसार संपादित करणे आवश्यक आहे. कोड मध्ये लिहिले आहे नियमित नोटपॅडआणि *ps1 एक्स्टेंशनसह सेव्ह केले आहे.
कारण व्ही विंडोज धोरणसुरक्षा, स्क्रिप्ट्सची अंमलबजावणी अक्षम केली आहे डबल क्लिक कराआणि ऑटोलोड वरून आम्ही आमच्या कानात एक फेंट बनवतो आणि खालील सामग्रीसह बॅच फाइलमधून एक शेल लॉन्च करतो:
आपण Arduino नेहमी आत कसे ठेवायचे याबद्दल बोलू कार्यरत स्थितीत. वॉचडॉग यंत्रणा Atmega कंट्रोलर्समध्ये तयार केली आहे, परंतु, दुर्दैवाने, प्रत्येक Arduino बूटलोडर हे कार्य योग्यरित्या हाताळत नाही. चला ही समस्या शोधण्याचा प्रयत्न करूया.
मग वॉचडॉग म्हणजे काय? सोप्या शब्दात- हा अंगभूत टाइमर आहे ठराविक वेळ(चिपवर अवलंबून 8 सेकंदांपर्यंत), जे प्रोग्रामॅटिकरित्या लॉन्च केले जाऊ शकते. टाइमर शून्यावर पोहोचताच, कंट्रोलर पाठवतो योग्यरीसेट सिग्नल (RESET) आणि संपूर्ण डिव्हाइस आत जाते कठीणरीबूट सर्वात महत्वाची गोष्ट म्हणजे हा टाइमर रीसेट केला जाऊ शकतो प्रारंभिक अवस्थाप्रोग्रामेटिक देखील.
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 वर हे सर्व अगदी उलट कार्य करते, म्हणजे. अजिबात चालत नाही :)
तुम्हाला माहिती आहेच, Arduino मध्ये एक विशेष बूटलोडर आहे जो सिस्टम रीबूट झाल्यानंतर प्रथम चालतो. आणि, दुर्दैवाने, मानक बूटलोडर वॉचडॉग रीसेट करत नाही! अशा प्रकारे, सिस्टम क्रूर बूटलूपमध्ये जाते (“वेडा नेतृत्व” स्थिती, ज्यामध्ये पिन 13 वरील एलईडी वेड्यासारखे चमकते).
हे सर्व असे काहीतरी दिसते:
समस्येचे निराकरण करण्यासाठी, मी स्वतः प्लॅटफॉर्मची मॅन पृष्ठे देखील वाचली (:) आणि असे दिसते की या समस्येचे तेथे वर्णन केले आहे आणि कोड देखील दिलेला आहे ज्यामुळे प्रत्येकाला आनंद होईल:
Uint8_t mcusr_mirror __विशेषता__ ((विभाग (."noinit"))); void get_mcusr(void) __विशेषता__((नग्न)) __विशेषता__((विभाग(".init3"))); void get_mcusr(void)( mcusr_mirror = MCUSR; MCUSR = 0; wdt_disable(); )
हे get_mcusr() फंक्शनचे वर्णन करते जे रीसेट केल्यानंतर लगेच कॉल केले जावे. हे मॅक्रो "__विशेषता__((विभाग(".init3")))" द्वारे साध्य केले जाते. मी हे फंक्शन शक्य असलेल्या सर्व विभागांमध्ये लिहिण्याचा प्रयत्न केला - होय, हे स्केचमधून सेटअप() फंक्शनच्या आधी चालते, परंतु, दुर्दैवाने, रीसेट केल्यानंतर 15ms (किमान वॉचडॉग स्थिरांक) पेक्षा खूप नंतर...
थोडक्यात, समस्येवर सोपा उपाय शोधण्यासाठी मी इंटरनेटवर कितीही प्रयत्न केले तरीही काहीही सापडले नाही. मला वॉचडॉगला कामावर आणण्याचा एकच मार्ग सापडला - बूटलोडरला रीफ्लॅश करण्यासाठी... आता आपण तेच करणार आहोत.
वॉचडॉग चाचणी
#समाविष्ट करा
मग सर्वात मनोरंजक भाग सुरू होतो - जर रीबूट झाला असेल आणि सर्वकाही त्याच क्रमाने पुनरावृत्ती होत असेल तर तुमच्या हातात एक Arduino आहे, ज्यामध्ये बूटलोडर वॉचडॉगवर योग्यरित्या प्रक्रिया करतो. जर, रीबूट केल्यानंतर, पिन 13 वरील एलईडी अविरतपणे लुकलुकणे सुरू केले, तर बूटलोडर वॉचडॉगला समर्थन देत नाही. रीसेट बटण देखील येथे मदत करणार नाही. त्यानंतरच्या फर्मवेअरसाठी, तुम्हाला वीज पुरवठ्यापासून बोर्ड डिस्कनेक्ट करणे आवश्यक आहे आणि ते चालू केल्यानंतर, प्रथम रीबूट करण्यापूर्वी फ्लॅश करण्यासाठी वेळ आहे.
मी 4 प्रकारचे बोर्ड तपासले आणि फक्त Arduino Uno मधील बूटलोडरने जसे पाहिजे तसे काम केले:
मॉनिटरवर परिणाम
वॉचडॉग बूटलोडरद्वारे समर्थित नाही:![]() |
वॉचडॉग बूटलोडरद्वारे समर्थित आहे:![]() |
या लेखात मी Arduino-आधारित प्रोग्रामर तयार करण्याच्या सर्व गुंतागुंतीचे वर्णन करणार नाही, कारण... हा विषय खूप आहे . मी प्रोग्रामर म्हणून Arduino Uno वापरले. तुम्हाला माहिती आहेच, फर्मवेअर वेगळ्या ICSP कनेक्टरद्वारे फ्लॅश केले जाते, जे जवळजवळ सर्व बोर्डांवर आढळते. Arduino Pro Mini फर्मवेअरच्या बाबतीत, ज्यामध्ये ICSP नाही, कनेक्शन थेट पिनशी केले जाते.
फर्मवेअर बूटलोडरसाठी कनेक्शन
ऑप्टीबूट पॅकेजमधून बूटलोडर्स वापरण्याची शिफारस केली जाते. तत्वतः, हे बूटलोडर्स Arduino प्लॅटफॉर्मच्या स्थापनेत समाविष्ट केले जातात, परंतु ते डाउनलोड करणे आणि स्थापित करणे चांगले आहे. नवीनतम आवृत्तीयेथून optiboot. इंस्टॉलेशनमध्ये दोन चरणांचा समावेश आहे (कदाचित हे वेगळ्या प्रकारे केले जाऊ शकते):
पुढे, विकास वातावरण रीलोड केले जाते आणि सेवा/बोर्ड मेनूमध्ये तुम्ही चिन्हांकित केलेले नवीन बोर्ड पाहू शकता. दुर्दैवाने, हे फलक निवडताना, काही विचित्र संकलन त्रुटी आढळतात आणि इतर सर्व प्रकारच्या विचित्रता दिसून येतात... म्हणून आम्ही ते आणखी सोपे बनवतो. कोणत्याही मध्ये उघडा मजकूर संपादकफाइल C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt आणि खालील ओळी बदला:
Arduino Nano साठी:
menu.cpu.nano.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
Arduino Mini साठी:
menu.cpu.mini.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
पुढील समस्या म्हणजे optiboot बूटलोडर साठी अर्डिनो बोर्डमेगा निसर्गात अस्तित्वात नाही, कारण मेगा मध्ये अधिक स्मृतीआणि वेगळा प्रोटोकॉल वापरला जातो. म्हणून, आम्ही एक मानक परंतु सुधारित बूटलोडर वापरतो, जो आम्ही येथून डाउनलोड करतो. फाईलचे नाव बदलून stk500boot_v2_mega2560_2.hex करा आणि C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\stk500v2 फोल्डरमध्ये लिहा.
घाबरू नका की फाइल सुधारित फर्मवेअरमेगासाठी ते मानकापेक्षा 2 पट कमी आहे - हे कसे असावे असे दिसते.
Arduino Nano साठी:
menu.cpu.nano.atmega328.upload.speed=115200
Arduino Mini साठी:
menu.cpu.mini.atmega328.upload.speed=115200
मागील पोर्ट गती देखील लक्षात ठेवणे चांगले आहे, कारण... ते मानक बूटलोडरसह बोर्डवर वापरले जाणे आवश्यक आहे. असे बदल न केल्यास, स्केचेस अपलोड करण्याच्या प्रक्रियेत खालीलप्रमाणे त्रुटी निर्माण होईल:
avrdude: stk500_getsync(): समक्रमित नाही: resp=0x00
टॅग्ज:
या व्यतिरिक्त वायफाय मॉड्यूलआणि बाह्य वॉचडॉग टाइमर
मी तुम्हाला कळवू इच्छितो की माझ्या सूचनांनुसार तुम्ही स्वत: एकत्र केलेला कंट्रोलर इंटरनेटशी कनेक्ट केला जाऊ शकतो!
इंटरनेटवर काम करणाऱ्या कंट्रोलरचे फायदे:
मलम मध्ये एक लहान माशी सर्व विशेषाधिकार आहे सशुल्क आवृत्ती MEGA CtrlM फर्मवेअर, जे इतके महाग नाही - फक्त $4.95! याशिवाय, हे फर्मवेअर 8 तापमान सेन्सर, 8 नियंत्रित आउटपुट आणि प्रोग्रामिंगला समर्थन देते, म्हणजे तुमच्या स्वतःच्या परिस्थिती सेट करणे.
फर्मवेअर खरेदी करण्यासाठी, कृपया माझ्याशी info@site वर संपर्क साधा सशुल्क फर्मवेअरतुमचे डिव्हाइस अधिक लवचिक बनवेल आणि त्याच वेळी तुम्ही यात योगदान देता पुढील विकासप्रकल्प
प्रत्येक बिंदूबद्दल थोडे अधिक तपशील.
वेळ सिंक्रोनाइझेशन आणि उन्हाळा/हिवाळा वेळ संक्रमणयेथे, सर्वसाधारणपणे, सर्वकाही स्पष्ट आहे. DS1307 घड्याळ मॉड्यूल त्याच्या अचूकतेचा अभिमान बाळगू शकत नाही. उदाहरणार्थ, अर्ध्या वर्षात, माझे घड्याळ 2 तासांपेक्षा जास्त मागे पडले आहे. आणि बॅटरी वेळेत डिस्चार्ज होऊ शकत नाही. अर्थात, ते तुम्हाला आनंदी करेल आणि स्वयंचलित भाषांतरहिवाळा किंवा उन्हाळ्यासाठी तास - वर्षातून दोनदा, एक कमी समस्या. परंतु आम्हाला घड्याळ आवश्यक आहे - योग्य लॉगिंगसाठी, सर्व्हरवर डेटा पाठवण्यासाठी, वेळापत्रकानुसार गरम करण्यासाठी! ज्या देशांमध्ये घड्याळात बदल होत नाहीत, त्यांच्यासाठी हा पर्याय केवळ सिंक्रोनाइझेशन सोडून अक्षम केला जाऊ शकतो.
बाहेर पडा नवीन फर्मवेअरजुन्या बगचे निराकरण झाले आहे आणि तुमच्या डिव्हाइसमध्ये नवीन वैशिष्ट्ये जोडली गेली आहेत या बातमीपेक्षा आनंदाची गोष्ट काय असू शकते. आम्ही असे म्हणू शकतो की आपले डिव्हाइस दुसरे जीवन सुरू करत आहे!
मोबाइल डिव्हाइसवरून डेटा पहा.येथे आपण सामान्यतः आराम करू शकता :) पलंगावर झोपून, आपल्या कंट्रोलरच्या वेब पृष्ठावर जा आणि वर्तमान सेन्सर मूल्ये पहा. प्रामाणिकपणे, असे म्हटले पाहिजे की पृष्ठ कधीकधी प्रथमच लोड होत नाही आणि आपण त्याबद्दल काहीही करू शकत नाही. भविष्यात मी लिहून हा प्रश्न सोडवणार आहे स्वतंत्र अर्ज Android साठी. तुमचा कंट्रोलर आयपी ॲड्रेस बदलत नाही याची खात्री करण्यासाठी, राउटर सेटिंग्जमध्ये, त्यावर स्थिर आयपी नियुक्त करा मॅक पत्ता. तसे, जर तुमच्या कंट्रोलरचा IP 192.168.0.106 असेल, तर तुमच्या फोन, टॅब्लेट किंवा कॉम्प्युटरच्या ब्राउझर लाइनमधील सेन्सर रीडिंग पाहण्यासाठी तुम्हाला नियमानुसार http://192.168.0.106/d459 एंटर करणे आवश्यक आहे. http:// प्रविष्ट करण्याची गरज नाही, फक्त 0.106/d459 192.168 पुरेसे आहे
स्थानिक वेब मॉनिटर. तुम्ही आउटपुट चालू किंवा बंद देखील करू शकता.
log2.com.ua साइटशी कनेक्ट करत आहेजर तुम्हाला पलंगावर झोपताना तुमच्या सिस्टमचे निरीक्षण करायचे असेल, उदाहरणार्थ, तुर्कीमध्ये किंवा तुमच्या देशाबाहेर कुठेतरी, तर तुम्ही ते ग्लोबलशी कनेक्ट करू शकता. ऑनलाइन मॉनिटर log2.com.ua साइटवर ही साइट माझी आहे. हा एक अतिशय सोपा इंटरफेस आहे परंतु त्याचे कार्य करतो.
ग्लोबल ऑनलाइन मॉनिटर सौर यंत्रणेचे निरीक्षण करते.
आपल्याला हे समजून घेणे आवश्यक आहे की यानंतर, विशेषतः यासाठी कंट्रोलर वापरणे आवश्यक नाही सौर यंत्रणा! तो, एक नियंत्रक आणि निरीक्षक म्हणून, तुमची हीटिंग सिस्टम, ग्रीनहाऊस, कॉटेज इत्यादींचा सामना करेल... म्हणजेच, त्याच्या अनुप्रयोगाची व्याप्ती लक्षणीयरीत्या विस्तारत आहे.
ग्लोबल ऑनलाइन मॉनिटर हीटिंग सिस्टमचे निरीक्षण करते.
कंट्रोलरला नेटवर्कशी कनेक्ट करण्यासाठी, मी ESP8266-01 WiFi मॉड्यूल वापरतो. ते कनेक्ट करण्यासाठी तुम्हाला प्रतिरोधकांची जोडी आणि लॉजिक सिग्नल कन्व्हर्टरची आवश्यकता असेल. ESP8266 मॉड्यूलसह त्वरित ऑर्डर करणे चांगले आहे. सर्व मिळून तुम्हाला सुमारे 150 UAH खर्च येईल.
तुम्ही लॉजिक सिग्नल कन्व्हर्टरशिवाय ESP8266 कनेक्ट करू शकता, परंतु याची जोरदार शिफारस केलेली नाही!
ESP8266-01 साठी कनेक्शन आकृती. आम्हाला आणखी 2 4.7K प्रतिरोधक आणि एक 470R लागेल
बोर्डवर पिन वापरणे Arduino MEGAवायफाय मॉड्यूल आणि बाह्य वॉचडॉग टाइमर कनेक्ट करण्यासाठी
आणि तरीही, चाचणीसाठी तुम्ही ESP8266 मॉड्यूलसाठी थेट Arduino बोर्डवरून 3.3V पॉवर घेऊ शकता. हे RESET पिन जवळ स्थित आहे. पण, अधिकसाठी स्थिर ऑपरेशन, 5V वरून वेगळा वीजपुरवठा काढून टाकण्याची आणि AMS1117 स्टेप-डाउन मायक्रोक्रिकेट वापरून 3.3V पर्यंत कमी करण्याची शिफारस केली जाते.
ESP8266 WiFi मॉड्यूलला पॉवर करण्यासाठी 5V ते 3.3V कमी करण्यासाठी सर्किट
माझ्यासह कोणीही चुकांपासून मुक्त नाही. काहीवेळा, नवीन फर्मवेअरच्या प्रकाशनासह आणि नवीन वैशिष्ट्यांच्या जोडणीसह, आपल्याला कंट्रोलर फ्रीझिंगच्या स्वरूपात नवीन समस्या येऊ शकतात. असे घाबरू नका. मी फर्मवेअर रिलीझ करण्यापूर्वी चाचणी करतो, परंतु तरीही मी काहीतरी दुर्लक्ष करू शकतो किंवा काहीतरी सोडू शकतो. मानवी घटक रद्द केला गेला नाही. अंतर्गत वॉचडॉग टाइमर, जो आमच्या कंट्रोलरचे रक्षण करतो आणि तो गोठल्यास तो रीबूट करतो, नेहमी कार्य करत नाही! येथे समस्या वॉचडॉगमध्ये नाही, परंतु माझ्या कोडमध्ये कंट्रोलर गोठवू शकतो जो वॉचडॉग नियमितपणे रीसेट करेल आणि आम्ही कधीही रीबूट करणार नाही, ज्यामध्ये एक आहे 140 ते 300 सेकंदांपर्यंत बराच मोठा रीबूट अंतराल, आणि हा टाइमर फक्त येथे रीसेट केला जातो मुख्य कार्यक्रम. म्हणून, कोणतेही कार्य करताना आपण फ्रीज केले तर आपला बाह्य वॉचडॉग कार्य करेल!
घेतलेल्या 555 चिपवर बाह्य वॉचडॉग टाइमरची योजना
जर तुमच्याकडे बोर्डवर टिंकर करण्यासाठी वेळ नसेल, तर तुम्ही माझ्याकडून जवळजवळ सर्व काही खरेदी करू शकता तयार संचअसेंब्लीसाठी - छापील सर्कीट बोर्डआणि रेडिओ घटकांचा संच. ते गोळा केल्यानंतर, तुम्हाला वॉचडॉग टायमर आणि बोर्ड मिळेल वायफाय कनेक्शन modluya सेट किंमत 150 UAH.
WathcDog + WiFi बोर्ड. वायफाय मॉड्यूल समाविष्ट नाही!
WathcDog + WiFi बोर्ड, दुसरा कोन
कोणतेही डिजिटल तंत्रज्ञान, लवकर किंवा नंतर, गोठते हे रहस्य नाही. विकासकासाठी हे नेहमीच आश्चर्यचकित करणारे असते आणि वापरकर्त्यासाठी नेहमीच त्रासदायक असते. हे नेहमीच चुकीच्या वेळी असते आणि अरेरे, याचा कोणत्याही प्रकारे अंदाज लावला जात नाही. आणि हे एका मायक्रोकंट्रोलर चिपवर होममेड “ख्रिसमस ट्री फ्लॅशर” किंवा व्यस्त नेटवर्कवर चालणारे जटिल सर्व्हर असले तरीही काही फरक पडत नाही - हे फ्रीझ झाले नाही तर चांगले होईल. आणि अशा प्रणाली आहेत ज्यांचे फ्रीझिंग खूप, खूप महाग आहे.
"वॉचडॉग" नावाचे यंत्र, ते नियंत्रित करत असलेली सिस्टीम गोठलेली आहे यावर लक्ष ठेवण्यासाठी डिझाइन केलेले आहे आणि, फ्रीझ आढळल्यास, सिस्टमला रीबूट करण्यास भाग पाडते.
प्रथम, मी "नवीन" साठी एक छोटा परिच्छेद लिहीन जेणेकरुन मी येथे कशाबद्दल बोलत आहे हे स्पष्ट होईल. मग अधिक तयार केलेल्यांसाठी एक परिच्छेद असेल, ज्यांनी आतापर्यंत वाचले आहे, तरीही पुनरावलोकन टॅब बंद करू इच्छित नाही :)
वॉचडॉग टाइमर स्वतः एक लहान आणि बऱ्यापैकी साधे सर्किट आहे. जोपर्यंत तिला वेळोवेळी नियंत्रित उपकरणाकडून सिग्नल मिळतात (“होय, होय,” “सर्व काही ठीक आहे,” “मी येथे आहे,” “मी काम करत आहे”), कुत्रा शांतपणे वागतो आणि कोणत्याही प्रकारे हस्तक्षेप करत नाही. . सिग्नल येणे थांबताच, कुत्रा वाटप केलेल्या वेळेची (सामान्यत: काही सेकंद) वाट पाहतो आणि सिग्नल न आल्यास, तो डिव्हाइस गोठवलेला आहे असे समजतो आणि तो रीबूट करून त्याला रीसेट सिग्नल पाठवतो. हे उघड आहे की अशा मॉड्यूलसह सुसज्ज विशिष्ट सशर्त प्रणाली वॉचडॉगशिवाय समान प्रणालीच्या तुलनेत अधिक स्थिर असेल: कोणीही फ्रीझपासून मुक्त नाही, परंतु पहिली या फ्रीझमधून स्वतःच बाहेर पडेल, तर दुसरी मानवी हस्तक्षेप होईपर्यंत प्रतीक्षा करा आणि निष्क्रिय उभे रहा.
संरक्षक कुत्रा तो नियंत्रित करत असलेल्या प्रणालीचा आकार आणि महत्त्व याची अजिबात काळजी घेत नाही. ती आठ पायांची मायक्रोकंट्रोलर चिप, “रास्पबेरी” किंवा “ऑरेंज”, राउटर किंवा घर असू शकते डेस्कटॉप संगणक, आणि एक मोठा, अत्याधुनिक सर्व्हर. तिला फक्त सिस्टमच्या क्रियाकलापांबद्दल सिग्नल प्राप्त करणे आवश्यक आहे आणि त्यामुळे सिस्टम, त्यानुसार, तिच्या "रीसेट" आवेगवर प्रतिक्रिया देईल.
परिच्छेदाचा शेवट.
कोणत्याही आधुनिक मायक्रोकंट्रोलरमध्ये अंगभूत असल्यास बाह्य वॉचडॉग का? दोन मुख्य कारणांमुळे. प्रथम, असे फ्रीझ आहेत जे एका क्रिस्टलच्या आतून शोधले जाऊ शकत नाहीत: टाइमर थेट व्यत्यय आणतो, वॉचडॉग नियमितपणे रीसेट करतो आणि प्रोग्राम, उदाहरणार्थ, चालतो. अंतहीन पळवाट. किंवा तो एखाद्या पायावर आवेगाची वाट पाहत आहे जो एखाद्या प्रकारच्या अपघातामुळे येऊ शकत नाही. जास्त नाही... बाह्य हार्डवेअर वॉचमन कोणत्याही प्रकारे आतील प्रक्रियेशी जोडलेला नाही: जोपर्यंत त्याच्याकडे शक्ती आहे तोपर्यंत तो पाळत ठेवेल.
दुसरे म्हणजे, Arduino... हे मान्य केलेच पाहिजे की Arduino वापरून लोकांद्वारे लागू केलेल्या DIY मायक्रोकंट्रोलर प्रकल्पांचा वाटा महत्त्वपूर्ण स्थान व्यापतो. आणि Arduino अनुयायी, अरेरे, Atmega मध्ये तयार केलेल्या वॉचडॉग टाइमरच्या आनंदाचा लाभ घेऊ शकत नाहीत. समस्या . थोडक्यात: वॉचडॉग फक्त काही युनोवर योग्यरित्या कार्य करते, वॉचडॉग टाइमर वापरण्याचा प्रयत्न करताना उर्वरित Arduinos डेडलॉक केलेले असतात. बाह्य प्रोग्रामरसह बूटलोडर फ्लॅश करणे हा एकमेव उपाय आहे. आणि अशी "शस्त्रक्रिया" नवशिक्यांना नक्कीच घाबरवते. आणि अंगभूत वॉचडॉगच्या वापरामुळे मृत चक्रात गेलेल्या पहिल्याला पुनरुज्जीवित करण्यासाठी प्रोग्रामरमध्ये बदलण्यासाठी प्रत्येकाकडे दुसरा Arduino नाही. नवशिक्याचे हे सर्व हाताळणी बहुधा त्याला घाबरवतील.
अंतर्गत वॉचडॉग टाइमरच्या समस्यांचा त्रास न करता, बाह्य वॉचडॉग, तुमच्या प्रकल्पांमध्ये arduino वापरून, स्थिर प्रणालीचे सर्व आनंद पूर्णपणे प्राप्त करण्यास परवानगी देतो.
आता, प्रत्यक्षात, मॉड्यूलवरच.
हे Arduino आकारात तुलना करता येते प्रो मिनी:
सह उलट बाजूकाही मनोरंजक नाही: मॉड्यूल पिनला फक्त तीन मार्ग जोडणारे ट्रॅक. होय, खूप उच्च-गुणवत्तेचा धुतलेला प्रवाह नाही:
मॉड्यूल डॅलस DS1232 चिपच्या आधारे तयार केले गेले आहे.
ज्यांना अधिकृत साहित्य वाचण्याची सवय आहे त्यांच्यासाठी ते येथे आहे.
चिप एकाच वेळी तीन कार्ये प्रदान करते: पॉवर मॉनिटरिंग, एक वॉचडॉग टाइमर आणि योग्य रिसेट पल्स तयार करणे (आवश्यक कडा, मोठेपणा आणि कालावधी), अगदी संपर्क बाऊन्ससह हात बटणरीबूट
चिप पिनच्या उद्देशाबद्दल थोडक्यात आणि थोडक्यात
एसटी पिनला नियंत्रित उपकरणातून स्ट्रोब पल्स मिळायला हवे, जे त्याचे निरोगी कार्य दर्शवते.
आरएसटी आणि /आरएसटी पिनवर रीसेट पल्स तयार होते. आरएसटी आणि /आरएसटी पिनमधील फरक केवळ रिसेट पल्सची ध्रुवीयता आहे. रिसेट लाइनवर सामान्य शून्यासह तार्किक म्हणून नियंत्रित डिव्हाइस रीबूट केल्यास RST पिनवरून सिग्नल घेणे आवश्यक आहे. /RST सिग्नल, त्याउलट, रीबूट केलेल्या उपकरणांसाठी आहे कमी पातळीरीसेट लाइनवर. बहुतेक आधुनिक मायक्रोकंट्रोलर (Atmel मायक्रोकंट्रोलर्ससह, ज्याच्या आधारावर Arduino तयार केले आहे) शून्य डाळीने रीबूट केले जातात, म्हणजे. त्यांच्यासाठी योग्य सिग्नल /RST आहे.
TOL पिन पुरवठा व्होल्टेज परिस्थितीची स्वीकार्यता निवडते.
- जेव्हा TOL जमिनीवर दाबले जाते, तेव्हा पाच टक्के व्होल्टेज विचलन कॉरिडॉर स्वीकार्य मानले जाते. त्या. जेव्हा व्होल्टेज 4.75V पर्यंत खाली येईल तेव्हा रीबूट सिग्नल येईल.
- जेव्हा TOL पुरवठा लाईनशी जोडलेले असते, तेव्हा पुरवठा व्होल्टेज कॉरिडॉर 10% पर्यंत विस्तारतो. त्या. जेव्हा पुरवठा व्होल्टेज 4.5V पर्यंत कमी होईल तेव्हा डिव्हाइस रीबूट होईल.
टीडी पिन जास्तीत जास्त नियंत्रण वेळ निवडतो ज्यानंतर वॉचडॉग टाइमर कार्य करेल:
- जेव्हा TD जमिनीवर दाबले जाते, तेव्हा कालबाह्य 150ms असते (उदाहरणार्थ, आदर्श 62.5ms - 250ms असेल);
- TD हवेत लटकत असताना, कालबाह्य 600ms आहे (उदाहरणार्थ 250ms - 1000ms);
- जेव्हा TD पॉवरशी कनेक्ट केलेले असते, तेव्हा कालबाह्य 1200ms असते (उदाहरणार्थ 500ms - 2000ms). हे मायक्रोसर्कीट दोन सेकंदांपेक्षा जास्त काळ शटर गती प्रदान करणार नाही, अगदी सैद्धांतिकदृष्ट्या.
जसे आपण आकृतीवरून पाहू शकतो, चिप लाईन्स ST, RST आणि /RST समान नावाप्रमाणे आणि मॉड्यूल पिनसाठी आउटपुट आहेत.
निर्मात्याने आम्हाला चिपचा सर्वात विश्वासू आणि आरामदायक समावेश प्रदान केला: पुरवठा व्होल्टेजची विस्तृत श्रेणी (4.5 ते 5V पर्यंत) आणि जास्तीत जास्त संभाव्य वॉचडॉग टाइमआउट (1.2 सेकंद).
आता मॉड्यूलला आमच्या सशर्त Arduino शी जोडण्यासाठीचे आकृती स्पष्ट होते:
- मॉड्यूलवरील Vcc आणि Gnd रेषा arduino वर एकाच नावाच्या दोन ओळींशी जोडलेल्या आहेत;
- मॉड्यूलवरील /RST लाइन Arduino वरील RST पिनशी जोडलेली आहे
- ST लाईन कोणत्याही फ्री पिनशी जोडलेली असते, शक्यतो हार्डवेअर PWM शिवाय, - उदाहरणार्थ, माझ्यासाठी ती पिन 2 आहे.
मॉड्यूलची चाचणी घेण्यासाठी एक साधे स्केच स्केच करूया. मी (केवळ स्पष्टतेसाठी) इनिशिएलायझेशन दरम्यान बिल्ट-इन एलईडी प्रोग्रामॅटिकपणे फ्लॅश करतो. हे करण्याची गरज नव्हती आमच्याशिवाय एलईडी चमकेल. परंतु अशा प्रकारे हे नवशिक्यांसाठी अधिक स्पष्ट आणि अधिक समजण्यायोग्य आहे.
void setup() ( pinMode(13, OUTPUT); // अंतर्गत LED pinMode(2, OUTPUT) वापरा प्रत्येक रीबूट डिजिटलराइटवर एलईडी ब्लिंक करा(13, कमी); / प्रदीर्घ कालबाह्य ) 1150 मिलीसेकंद (माझ्या विशिष्ट बाबतीत) किंवा त्यापेक्षा कमी विलंब मूल्यासह, आमचे arduino शांतपणे कार्य चक्रात फिरते, त्यात काहीही व्यत्यय आणत नाही. LED, प्रथम लुकलुकणारा, उजळत नाही - तेथे कोणतेही रीबूट नाहीत. आम्ही हा विलंब कमीतकमी 1200 मिलीसेकंदांपर्यंत वाढवताच (किंवा सेटअप प्रक्रियेमध्ये लक्षणीय विलंब होऊ शकतो), आम्ही पाहू की LED चक्रीयपणे फ्लॅश होण्यास सुरुवात होईल: वेळ कुत्र्यासाठी गंभीर बनतो आणि तो arduino रीबूट करतो.
कार्यरत स्केचच्या वास्तविक परिस्थितीत, डिजिटल राइट (2, उच्च) ओळ जोडणे पुरेसे आहे; विलंब(1); डिजिटलराइट(2,LOW); मुख्य लूपच्या अगदी शेवटी, जेणेकरून पिन 2 शी जोडलेले वॉचडॉग मॉड्यूल शांत वाटेल.
जेव्हा Arduino आरंभ केला जातो, तेव्हा सर्व पिन विकृत होतात, म्हणून कुत्र्याला कोणती काळजी नसते तार्किक पातळीडिव्हाइस गोठवले आहे: टाइमर सुरू झाला आहे आणि म्हणून, रीबूट आवेग अपरिहार्यपणे येईल.
निष्कर्ष.
1. वॉचडॉग टाइमर तत्त्वतः आवश्यक आहे का? आपण डिझाइन करत असलेल्या डिव्हाइसमध्ये गोठल्यास नकारात्मक परिणाम होऊ शकतात, तर होय. त्यासह, सिस्टम त्याशिवाय स्पष्टपणे अधिक स्थिर होईल.
2. बाह्य पहारेकरी हा रामबाण उपाय आहे का? नक्कीच नाही. हे अनेक मायक्रोकंट्रोलर्समध्ये आढळणाऱ्या अंतर्गतपेक्षा अधिक कार्यक्षम आहे, परंतु ते रामबाण उपाय नाही. सिद्धीसाठी कमाल कार्यक्षमतात्याचे कार्य, ते कनेक्ट करणे महत्वाचे आहे योग्य जागातुमची प्रणाली. हार्डवेअर (पीडब्लूएम, स्ट्रोबसह विविध हार्डवेअर पोर्ट) मध्ये सिग्नल तयार केलेल्या ओळींशी तसेच बाह्य किंवा अंतर्गत सिग्नलशी कनेक्ट न करणे चांगले आहे. घड्याळ जनरेटर. बरं, इनपुट म्हणून काम करणाऱ्या ओळींशी ते जोडणे पूर्णपणे निरर्थक आहे - अशा प्रकारे आम्ही आमच्या मायक्रोकंट्रोलरवर नव्हे तर दुसरे काहीतरी नियंत्रित करू.
3. या चौकीदाराचे काही तोटे आहेत का? बाह्य वॉचडॉग टाइमरचा मुख्य गैरसोय आहे सामान्य केस, त्याच्या ऑपरेशनसाठी आपल्या डिव्हाइसवर एक पिन वाटप करणे आवश्यक आहे. जरी सराव मध्ये, हे बऱ्याचदा टाळले जाऊ शकते: जर तुमचा मायक्रोकंट्रोलर सतत डिस्प्लेवर काहीतरी लिहित किंवा काढत असेल, सतत पोर्टवर काहीतरी पाठवत असेल, काही प्रकारचे कंट्रोल पल्स व्युत्पन्न करत असेल. बाह्य उपकरणे- गार्ड डॉगला या ओळींशी जोडा - जोपर्यंत त्याची सतत हालचाल असते तोपर्यंत तो डाळींच्या वारंवारता आणि कर्तव्य चक्राबद्दल पूर्णपणे उदासीन असतो.
या विशिष्ट टाइमर अंमलबजावणीचा मुख्य गैरसोय कदाचित त्याऐवजी लहान नियंत्रण कालबाह्य आहे. असे काही वेळा आहेत जेव्हा आपण किमान 3-5 सेकंद राखीव ठेवू इच्छिता.
4. मी हा विशिष्ट वॉचडॉग विकत घ्यावा का? बरं, प्रत्येकजण स्वत: साठी निर्णय घेईल. तुम्ही निश्चितपणे $3 पेक्षा कमी किमतीत रक्षक कुत्रा मिळवू शकता. वर चर्चा केलेली फक्त चिप विकत घेणे आणि स्वतः असे मॉड्यूल बनवण्यासाठी LUT वापरणे एखाद्यासाठी सोपे आहे. काहींसाठी, पौराणिक एक घेणे आणि एक सैल वॉचडॉग बनवणे सोपे आहे: साधक - स्वस्त आणि प्रवेशयोग्य, बाधक - अधिक गोंधळ आणि वेळ घेणारे इलेक्ट्रोलाइटिक कॅपेसिटर, म्हणजे वर्षानुवर्षे सर्व पॅरामीटर्स फ्लोट होण्याची हमी दिली जाते. एखाद्याला सेमीकंडक्टर वापरून टायमरसह एक-शॉट बनवणे सोपे आहे. येथे प्रत्येकजण स्वत: साठी निर्णय घेतो.
येथे, अतिशय वाजवी पैशासाठी, आम्हाला पूर्णपणे तयार आणि मिळते कार्यरत उपकरणप्रमाणित पॅरामीटर्ससह.
म्हणून प्रत्येकजण स्वतःच खरेदीच्या वाजवीपणाचे मूल्यांकन करेल.
माझे कार्य अशा उपकरणांबद्दल बोलणे, त्यांच्या ऑपरेशनची तत्त्वे आणि कदाचित एखाद्याला स्वतंत्रपणे नवीन मनोरंजक घरगुती उत्पादने तयार करण्यासाठी सर्जनशील प्रेरणा देणे हे होते.
कोणीही काही दिले नाही किंवा प्रायोजित केले नाही; सर्व काही आपल्या पैशाने विकत घेतले गेले.
UPD: मी पुनरावलोकन लिहित असताना, विक्रेत्याने अनपेक्षितपणे किंमत वाढवली. अरेरे. हा लोभाचा तात्पुरता हल्ला मानू. त्याला या उत्पादनावर वेळोवेळी सूट आहे. बरं, हे उत्पादन इतर विक्रेत्याकडून शोधण्यापासून तुम्हाला काहीही प्रतिबंधित करत नाही.
मी +92 खरेदी करण्याचा विचार करत आहे आवडींमध्ये जोडा मला पुनरावलोकन आवडले +86 +164