আরডুইনো ওয়াচডগ: এটি কীভাবে কাজ করে

প্রহরী Arduino

এই নতুন নিবন্ধে আমরা দেখতে যাচ্ছি কি একটি রক্ষী কুকুর, এটি কিসের জন্য ব্যবহার করা যেতে পারে এবং কীভাবে এটি আপনার প্রকল্পগুলিতে ব্যবহার করবেন যাও Arduino. এই আকর্ষণীয় কিন্তু অজানা ফাংশন সম্পর্কে আপনার যা কিছু জানা দরকার। এবং হ্যাঁ, এর নাম অনুসারে (ওয়াচডগ), এটি কিছু সমস্যা ট্র্যাক করতে ব্যবহার করা যেতে পারে।

এখানে আমরা দেখব সবই তোমার জানা উচিত সংক্রান্ত…

একটি প্রহরী কি?

কম্পিউটিং এ, ক প্রহরী একটি তদারকি প্রক্রিয়া যা একটি সিস্টেম বা প্রোগ্রামের ক্রিয়াকলাপ নিরীক্ষণ করতে ব্যবহৃত হয়। এর প্রাথমিক কাজ হল অস্বাভাবিক পরিস্থিতি বা সিস্টেমের ব্যর্থতা, যেমন ক্র্যাশ বা জমাট বাঁধা, সনাক্ত করা এবং প্রতিক্রিয়া জানানো এবং ক্রমাগত অপারেশন বা সিস্টেম পুনরুদ্ধার নিশ্চিত করার জন্য সংশোধনমূলক পদক্ষেপ নেওয়া।

প্রহরী একটি টাইমারে কাজ করে যা একটি নির্দিষ্ট সময়ের ব্যবধানের জন্য কনফিগার করা হয়। যদি সিস্টেম বা প্রোগ্রামটি সেই সময়ের ব্যবধানের মধ্যে একটি নির্দিষ্ট ক্রিয়া সম্পাদন করে বা ওয়াচডগকে শক্তি না দেয় (অর্থাৎ, এটি পুনরায় চালু করে), ওয়াচডগ ধরে নেয় যে সিস্টেমটি একটি অবাঞ্ছিত অবস্থায় রয়েছে বা সঠিকভাবে প্রতিক্রিয়া দেওয়া বন্ধ করে দিয়েছে এবং একটি পূর্বনির্ধারিত পদক্ষেপ নেয়। এই ক্রিয়াটি বাস্তবায়নের দ্বারা পরিবর্তিত হতে পারে এবং এতে সিস্টেমটি পুনরায় বুট করা, ত্রুটির লগ তৈরি করা, অ্যালার্ম ট্রিগার করা বা সমস্যাটি সংশোধন করার জন্য নির্দিষ্ট পদক্ষেপ নেওয়া অন্তর্ভুক্ত থাকতে পারে।

ওয়াচডগ অপারেটিং সিস্টেম এবং সার্ভার থেকে ডিভাইস পর্যন্ত বিভিন্ন কম্পিউটার সিস্টেম এবং ডিভাইসে ব্যবহৃত হয় Arduino সহ এমবেডেড এবং সমালোচনামূলক রিয়েল-টাইম সিস্টেম. এর প্রাথমিক লক্ষ্য হ'ল স্বয়ংক্রিয়ভাবে সমস্যাগুলি সনাক্ত করে এবং প্রতিক্রিয়া জানিয়ে সিস্টেমের নির্ভরযোগ্যতা এবং প্রাপ্যতা উন্নত করা, যার ফলে ব্যর্থতার পরিস্থিতিতে ম্যানুয়াল হস্তক্ষেপের প্রয়োজনীয়তা হ্রাস করা।

আরডুইনো ওয়াচডগ কি?

arduino সম্পর্কে বই

Arduino এর ওয়াচডগ টাইমার অবশ্যই অ্যাপ্লিকেশনের প্রয়োজন অনুযায়ী সামঞ্জস্য করতে হবে। সে সময় নির্ণায়ক পাহরাদার একটি অভ্যন্তরীণ 128 kHz ঘড়ির উৎস ব্যবহার করে (ব্যবহৃত বোর্ড এবং MCU এর উপর নির্ভর করে পরিবর্তিত হতে পারে)। সক্রিয় করা হলে, এটি শূন্য থেকে ব্যবহারকারীর পূর্বনির্ধারিত মান পর্যন্ত গণনা শুরু করে। যদি ওয়াচডগ টাইমার এই মানটিতে পৌঁছালে রিসেট না হয়, তাহলে এটি মাইক্রোকন্ট্রোলারকে রিসেট করে।

একটি মাইক্রোকন্ট্রোলার, বা MCU হল একটি ছোট ইলেকট্রনিক ডিভাইস যা একটি সেন্ট্রাল প্রসেসিং ইউনিট (CPU), মেমরি, ইনপুট/আউটপুট পেরিফেরাল, এবং কখনও কখনও একটি একক চিপে যোগাযোগ ইন্টারফেসকে একীভূত করে। এটি নির্দিষ্ট কাজগুলি নিয়ন্ত্রণ এবং কার্যকর করার জন্য ডিজাইন করা হয়েছে।

ওয়াচডগ টাইমার এটিমেগ 328 পি, যা বাস্তবায়িত হয় Arduino UNO, 10টি ভিন্ন সময় সেটিংস অফার করে, প্রতিটি নির্ধারণ করে কখন টাইমারটি ওভারফ্লো হবে এবং তাই একটি রিসেট হবে। বিভিন্ন সময়ের ব্যবধানগুলি নিম্নরূপ: 16 ms, 32 ms, 64 ms, 0.125 সেকেন্ড, 0.25 সেকেন্ড, 0.5 সেকেন্ড, 1 সেকেন্ড, 2 সেকেন্ড, 4 সেকেন্ড এবং 8 সেকেন্ড, যেমনটি আমরা টেবিলে পরে দেখব যা আমি অন্তর্ভুক্ত করেছি।

এটি এখনও আপনার কাছে পরিষ্কার না হলে আপনি ওয়াচডগ টাইমার দিয়ে কী করতে পারেন Arduino UNO, আমরা দেখব একটি উদাহরণ যাতে আপনি এটি গ্রাফিকভাবে বুঝতে পারেন। এই উদাহরণে, আমরা একটি সাধারণ LED ফ্ল্যাশিং (ব্লিঙ্ক) ব্যবহার করব। while() লুপে প্রবেশ করার আগে একটি নির্দিষ্ট সময়ের জন্য LED ফ্ল্যাশ করে। এই while() লুপটি ব্লকিং সিস্টেমের বিকল্প হিসেবে ব্যবহৃত হয়। যেহেতু while() লুপে থাকা অবস্থায় ওয়াচডগ টাইমার রিসেট করা হয় না, তাই এটি একটি সিস্টেম রিবুট করবে, এবং সিস্টেম ক্র্যাশ এবং রিবুট হওয়ার আগে LEDগুলি আবার ফ্ল্যাশ করা শুরু করবে। এই চক্র অব্যাহত থাকবে...

বিবেচনা এবং বৈশিষ্ট্য

ওয়াচডগ টাইমার এটি কোডের শুরুতে নিষ্ক্রিয় করা হয়. ওয়াচডগ সক্ষম করার আগে x সেকেন্ডের বিলম্ব অন্তর্ভুক্ত করা হয়েছে। আরডুইনো বুটলোডারকে নতুন কোড লোড হচ্ছে কিনা তা পরীক্ষা করতে এবং ফ্ল্যাশ মেমরিতে কোডটি বার্ন করার জন্য যথেষ্ট সময় দেওয়ার জন্য এই বিলম্ব অত্যন্ত গুরুত্বপূর্ণ। এই দিকটি একটি সতর্কতা হিসাবে প্রাসঙ্গিক। একটি পরিস্থিতির উদ্ভব হতে পারে যেখানে, ত্রুটিপূর্ণ কোডিং বা অনুপযুক্ত বিবেচনার কারণে, লিখিত কোডটি মাইক্রোকন্ট্রোলারকে খুব অল্প ব্যবধানে অসীমভাবে পুনরায় সেট করে। এটি Arduino বোর্ডের ক্ষতি করতে পারে এবং কোডগুলিকে সঠিকভাবে আপলোড হতে বাধা দিতে পারে। যদি এটি ঘটে, তাহলে আপনাকে লক করা Arduino-এ ISP হিসেবে অন্য 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 এ ওয়াচডগ ব্যবহারের উদাহরণ

Arduino IDE, ডেটা প্রকার, প্রোগ্রামিং

অবশেষে, আসুন দেখি কিভাবে ওয়াচডগ ব্যবহারিকভাবে 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_disable() Arduino কনফিগার করার সময় টাইমার নিষ্ক্রিয় করতে।
  • wdt_enable(সময়) টাইমারে একটি ব্যবধান বরাদ্দ করতে এবং এটি শুরু করতে, অনুরূপ সময় উল্লেখ করে যেমন আমি পূর্ববর্তী টেবিলে দেখিয়েছি।
  • wdt_reset() নির্ধারিত ব্যবধান পুনর্নবীকরণ করতে এবং যাতে প্রোগ্রামটি পুনরায় চালু না হয়।