আলট্রাসনিক/সোনার সেন্সর হ্যাকঃ এক পিনেই করুন ইন্টারফেসিং (HC-SR04)

3
1721
আলট্রাসনিক/সোনার সেন্সর হ্যাকঃ এক পিনেই করুন ইন্টারফেসিং (HC-SR04)
আলট্রাসনিক/সোনার সেন্সর হ্যাকঃ এক পিনেই করুন ইন্টারফেসিং (HC-SR04)

ইলেকট্রনিক্স ও ইলেকট্রিক্যালের গুরুত্বপূর্ণ বিষয় হচ্ছে সেন্সর। আধুনিক গাড়ি, উড়োজাহাজ থেকে শুরু করে কোয়াড কপ্টার, ড্রোন, রিমোট চালিত খেলনা গাড়ি, রোবট সবকিছু তেই সেন্সর পরিলক্ষিত হয়। আজকে আমরা তেমনি খুব জনপ্রিয় একটি সেন্সরকে হ্যাক করবার পদ্ধতি জানবো।

সেন্সর কি?

সেন্সর হচ্ছে এমন একধরণের বিশেষ যন্ত্র, যা আশেপাশের পরিবেশের নির্দিষ্ট কোনও তথ্য/উপাত্ত সংগ্রহ বা “সেন্স” করতে পারে। বিভিন্ন ধরনের সেন্সর বিভিন্ন রকমের তথ্য সংগ্রহ করে। যেমন, থারমিস্টর তাপমাত্রা সম্পর্কিত তথ্য সংগ্রহ করতে পারে, ফ্লেম সেন্সর আগুনের উপস্থিতি বুঝতে পারে, দূরত্ব নির্ণয় করতে পারে ডিসট্যান্ট মেজারিং সেন্সর। ইত্যাদি ছাড়াও প্রক্সিমিটি সেন্সর, স্মোক সেন্সর, গ্যাস সেন্সর প্রভৃতি বহুল ভাবে জনপ্রিয়।

সেন্সর কিভাবে কাজ করে?

সেন্সর পরিবেশের বিভিন্ন তথ্য বা উপাত্ত গ্রহণ করে সেগুলোকে বৈদ্যুতিক সিগনালে পরিবর্তন করে। আমরা সেই সিগনাল দ্বারা কোন ডিভাইস কে অন-অফ করতে পারি। আবার প্রয়োজনে তাকে মাইক্রোকন্ট্রোলার ও ডিসপ্লের সাথে সংযুক্ত করে তথ্যটিকে দৃশ্যমান করতে পারি। প্রয়োজনে এই উপাত্ত গুলোকে স্থায়ী ভাবে সেভ করেও রাখা যায়।

ডিস্ট্যান্ট মেজারিং সেন্সরঃ

বস্তুর দূরত্ব মাপার জন্য বিভিন্ন সেন্সর ব্যবহার করা হয়। তবে প্রায় নিখুঁত রিডিং ও সহজলভ্যতার কারণে বেশিরভাগ হবিস্টই আলট্রাসনিক সেন্সর ব্যবহার করেন। যদিও ডপলার এফেক্ট ব্যবহার করে এমন সেন্সর দিয়েও ডিস্ট্যান্ট মেজারিং করা যায় কিন্তু তা অনেক দামী। আমাদের ব্যবহৃত সেন্সরটিকে আলট্রাসনিক সেন্সর, ডিস্ট্যান্ট মেজারিং সেন্সর, সোনার সেন্সর ইত্যাদি নামেও ডাকা হয়। এদের মধ্যে বাংলাদেশে সবচেয়ে সহজলভ্য HC-SR04 সেন্সর। তবে এই সেন্সর মাইক্রোকন্ট্রোলারের সাথে ইন্টারফেস করার জন্য ২টি পিন লাগে। মাত্র ১টি পিন দিয়েই ইন্টারফেস করা যায় এরকম সেন্সরও পাওয়া যায়, তবে সেগুলোর দাম অত্যন্ত বেশি এবং আমি যতদূর জানি, বাংলাদেশে সহজলভ্য নয়।

তবে, চিন্তার কোনও কারণ নেই, একটু মাথা খাটিয়ে HC-SR04 এর মাত্র ১টি পিন দিয়েই মাইক্রোকন্ট্রোলারের সাথে ইন্টারফেস করা যায়! সেটিই আজকে আমরা দেখবো। যদিও এই টিউটোরিয়ালে আরডুইনো বোর্ড ব্যবহার করা হয়েছে, তবে এই টেকনিক অন্যান্য মাইক্রোকন্ট্রোলার প্লাটফর্মেও কাজ করবে।

সেন্সরের কেন ১টি পিন ব্যবহার করছি?

এখন আপনার মনে হতে পারে কেন আমরা ২টি পিনের বদলে ১টি পিন ব্যবহার করছি। এখানে উদাহরণ হিসেবে ডিজিটাল মেজারিং টেপ প্রজেক্টের কথা বলা যায়। যেখানে, মাটি থেকে সিলিং এর উচ্চতা মাপবেন। ডিজিটাল মেজারিং টেপ লম্বালম্বি করে সিলিং এর দিকে তাক করলে এলসিডিতে সিলিং এর উচ্চতা প্রিন্ট হবে। এমন ধরনের প্রজেক্ট গুলোতে এলসিডি ডিসপ্লে ছাড়াও আরো অনেক সেন্সর ব্যবহার করতে হয়। তখন দেখা যায় মাইক্রোকন্ট্রোলারের পিনের স্বল্পতা। আবার অন্য বেশি পিন সংবলিত মাইক্রোকন্ট্রোলারের দাম ও হয় অনেক। সেসব ক্ষেত্রে এই পদ্ধতিটি কাজে আসবে। অর্থাৎ, প্রজেক্ট সম্পূর্ণ করার জন্য মাইক্রোকন্ট্রোলারে যখন পিন অবশিষ্ট থাকে না তখন এটি বেশ কার্যকরী।

কিভাবে ১টি পিন দিয়ে কাজ সারা হয়?

আমরা জানি, HC-SRO4 সেন্সরের ট্রিগার পিনে ইনপুট দিয়ে সাউন্ড পালস সেন্ড করতে হয়। এবং ইকো পিনে রিসিভ করতে হয়। তবে, যখন একটা পিন কাজ করে, তখন বিপরীত পিন টা ফ্রোজেন বা অকার্যকর থাকে। অর্থাৎ, যখন ইকো পিনে সিগনাল আসে তখন ট্রিগ পিন অকার্যকর থাকে। আবার, ট্রিগার পিনে সিগনাল দেয়ার সময় ইকো পিন অকার্যকর থাকে।

তাই, আমরা ইকো আর ট্রিগার পিন শর্ট করে দিয়ে ট্রিগার পিনে যা ইনপুট দেয়ার কথা সেই সিগনাল শর্ট করা ইকো আর ট্রিগার পিনে দিয়ে যদি তার পরপরই আরডুইনোর উক্ত পিনটি ইনপুট পিন হিসেবে কোডে ডিক্লেয়ার করে দেই, তাহলে ইকো পিনের সিগনাল উক্ত পিনে রিসিভ করতে পারবো, তাহলে ১টা পিন দিয়েই ট্রিগার ও ইকো পিনের কাজ হয়ে যাবে।

উল্লেখ্য যে, এই টেকনিক আরডুইনোর যেকোনো মডেলে কাজ করে।

উপযুক্ত সার্কিট ডিজাইনঃ

এরজন্য প্রথমে উপযুক্ত ভাবে সার্কিট টিকে ডিজাইন করতে হবে। যার ফলে আরডুইনোর সাথে সেন্সর সঠিক ভাবে সংযুক্ত থাকে। আমরা নিচের ডায়াগ্রাম অনুযায়ী সংযোগ দেবো-

আলট্রাসনিক সেন্সর এর ১টি পিন ব্যবহারের পদ্ধতি
আলট্রাসনিক সেন্সর এর ১টি পিন ব্যবহারের পদ্ধতি

আরডুইনোর এই সার্কিট টিতে-

  • সেন্সরের ভিসিসি (VCC) ৫ ভোল্টে যাবে,
  • গ্রাউন্ড যাবে আরডুইনোর গ্রাউন্ডে,
  • Trigger ও echo পিন শর্ট করা থাকবে, এবং
  • সেখান থেকে একটা তার ডিজিটাল পিন ১২তে যাবে।

মাইক্রোকন্ট্রোলার কোডিংঃ

এবার নিচের কোডটি আরডুইনো বোর্ডে আপলোড করি –

int signal= 9;
long dis,dur;

void setup() 
{
Serial.begin (9600);
}
void loop() 
{
delayMicroseconds (2);
pinMode(signal,OUTPUT);
digitalWrite (signal,HIGH);
delayMicroseconds (10);
digitalWrite (signal,LOW);
pinMode (signal,INPUT);
dur= pulseIn (signal,HIGH);
dis= dur/58.2;
if (dis >= 4 && dis<= 100){
Serial.println (dis);}
delay (100);
}

কোড আপলোড হলে সেন্সরের সামনে ১০০ সেন্টিমিটারের মধ্যে কোনও বস্তু থাকলে সিরিয়াল মনিটরে দূরত্ব প্রিন্ট হবে (সেন্টিমিটারে)

কোড এক্সপ্লেনেশনঃ

int signal= 9;
long dis,dur;

signal ও dis,dur নামের ৩টি ভেরিয়েবল ডিক্লেয়ার করা হলো। dis অর্থ distance ও dur=duration.

void setup() {
Serial.begin (9600);
}

সিরিয়াল পোর্ট চালু করা হলো।

void loop() {
delayMicroseconds (2);
pinMode(signal,OUTPUT);

সিগনাল (ডিজিটাল পিন ১২) পিনকে আউটপুট হিসেবে ডিক্লেয়ার করা হলো

digitalWrite (signal,HIGH);
delayMicroseconds (10);
digitalWrite (signal,LOW);

ট্রিগ পিনের সিগনাল পাঠানো হলো

pinMode (signal,INPUT);

ইকো পিনে যে সিগনাল আসবে সেটা রিসিভ করার জন্য সিগনাল পিনকে ইনপুট হিসেবে ডিক্লেয়ার করা হলো।

dur= pulseIn (signal,HIGH);
dis= dur/58.2;

সিগনাল পিনে ইকো পিনের সিগনাল আসা শুরু হলে সেটাকে রিসিভ করে কিছু হিসেব করে সেন্টিমিটারে রুপান্তর করা।

if (dis >= 4 && dis<= 100)
{
Serial.println (dis);}
delay (100);
}

যদি সামনে থাকা বস্তুর দূরত্ব ৪ সেন্টিমিটারের বেশি এবং ১০০ সেন্টিমিটারের কম হয় তাহলে সিরিয়াল মনিটরে  প্রাপ্ত দূরত্বটিকে সেন্টিমিটারে দেখাবে।

এভাবেই আমরা HC-SR04 সেন্সরকে মাত্র ১টি পিন দিয়েই আরডুইনোর সাথে ইন্টারফেস করে মাইক্রোকন্ট্রোলারের আরেকটি পিন বাঁচাতে পারি! 😀

3 মন্তব্য

  1. আমার সিরিয়াল মনিটরে কেবল ৩০০০+ মান দেখাচ্ছে এবং তা এলোমেলোভাবে হচ্ছে।এখন কি করা যেতে পারে

উত্তর প্রদান

আপনার মন্তব্য লিখুন
আপনার নাম লিখুন