এই টিউটোরিয়ালে, আমরা শিখব কীভাবে ESP32 মডিউলের সাথে একটি ইনফ্রারেড বাধা এড়ানো সেন্সর ব্যবহার করে বাধা শনাক্ত করা যায়। এই প্রকল্পটি প্রদর্শন করবে কীভাবে সেন্সরটি একটি বাধা শনাক্ত করলে একটি বুজার চালু করতে পারে। সেটআপটি সিরিয়াল মনিটরে শনাক্তকরণের অবস্থাও প্রদর্শন করবে, যা সেন্সরের কার্যকারিতা পর্যবেক্ষণের একটি স্পষ্ট এবং ইন্টারঅ্যাকটিভ উপায় প্রদান করবে।
আমরা SunFounder ESP32 IoT লার্নিং কিট নিয়ে কাজ করব, যার মধ্যে Wi-Fi এবং ব্লুটুথ ক্ষমতাসম্পন্ন ESP32 মাইক্রোকন্ট্রোলার অন্তর্ভুক্ত রয়েছে। ইনফ্রারেড সেন্সরটি ইনফ্রারেড আলো পাঠিয়ে কাজ করে, যা কাছের বাধা থেকে প্রতিফলিত হবে। যখন আলো ফিরে প্রতিফলিত হয়, সেন্সরটি একটি আউটপুট সংকেত ট্রিগার করবে যা আমরা আমাদের কোডে পড়ব। আমরা একটি বুজারও অন্তর্ভুক্ত করব যা একটি বাধা শনাক্ত হলে সক্রিয় হয়, একটি শ্রবণযোগ্য সতর্কতা প্রদান করে।
হার্ডওয়্যার ব্যাখ্যা
এই প্রকল্পের প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মডিউল, ইনফ্রারেড বাধা এড়ানো সেন্সর এবং একটি বুজার। ESP32 মডিউলটি কেন্দ্রীয় প্রসেসিং ইউনিট হিসাবে কাজ করে, সেন্সর ইনপুট পরিচালনা করে এবং আউটপুট নিয়ন্ত্রণ করে। এটি একটি লিথিয়াম ব্যাটারি ব্যবহার করে চালিত করা যেতে পারে, যা বিভিন্ন অ্যাপ্লিকেশনের জন্য এটি বহনযোগ্য এবং নমনীয় করে তোলে।
ইনফ্রারেড বাধা এড়ানো সেন্সরটিতে একটি ট্রান্সমিটার এবং একটি রিসিভার থাকে। ট্রান্সমিটার ইনফ্রারেড আলো নির্গত করে, যখন রিসিভার কাছের বস্তু থেকে প্রতিফলিত আলো সনাক্ত করে। যখন একটি বাধা উপস্থিত থাকে, সেন্সরের আউটপুট পিন কম হয়ে যায়, যা ESP32-কে পদক্ষেপ নেওয়ার সংকেত দেয়, যেমন বুজার চালু করা।
ডেটাশিট বিবরণ
প্রস্তুতকারক
SunFounder
পার্ট নম্বর
ইনফ্রারেড বাধা এড়ানো সেন্সর
অপারেটিং ভোল্টেজ
3.3 V - 5 V
আউটপুট টাইপ
ডিজিটাল (বাধা শনাক্ত হলে কম)
শনাক্তকরণ পরিসীমা
20 সেমি পর্যন্ত
প্রতিক্রিয়া সময়
10 ms এর কম
প্যাকেজ
মডিউল
পাওয়ার সাপ্লাই: অপারেশনের জন্য 3.3 V থেকে 5 V।
একটি বাধা শনাক্ত হলে আউটপুট সংকেত কম হয়ে যায়।
পটেনশিওমিটার দিয়ে সংবেদনশীলতা সামঞ্জস্যযোগ্য।
সাধারণ শনাক্তকরণ পরিসীমা 20 সেমি পর্যন্ত।
10 ms এর কম দ্রুত প্রতিক্রিয়া সময়।
ওয়্যারিং নির্দেশাবলী
ESP32-19-obstacle_voide-wiring
ইনফ্রারেড বাধা এড়ানো সেন্সরটি ESP32-তে ওয়্যার করতে, প্রথমে সেন্সরের VCC পিনটি ESP32-এর 5V পিনের সাথে সংযুক্ত করুন। এরপর, সেন্সরের GND পিনটি ESP32-এর একটি GND পিনের সাথে সংযুক্ত করুন। অবশেষে, সেন্সরের OUT পিনটি ESP32-এর GPIO পিন 14-এর সাথে সংযুক্ত করুন।
বুজারের জন্য, নেতিবাচক টার্মিনালটি GND-এর সাথে এবং ধনাত্মক টার্মিনালটি GPIO পিন 27-এর সাথে সংযুক্ত করুন। নিশ্চিত করুন যে সমস্ত সংযোগ নিরাপদ এবং সেন্সরটি সঠিকভাবে চালিত হচ্ছে। ওয়্যারিংটি সহজবোধ্য হওয়া উচিত, কারণ সেন্সর এবং বুজারের জন্য কেবল সাধারণ পাওয়ার এবং সংকেত সংযোগ প্রয়োজন।
কোড উদাহরণ ও ওয়াকথ্রু
কোডে, আমরা প্রথমে বাধা এড়ানো সেন্সরের সাথে সংযুক্ত পিনটি সংজ্ঞায়িত করি। এটি avoidPin শনাক্তকারী ব্যবহার করে 14-এ সেট করা হয়। আমরা সেন্সরের আউটপুট অবস্থা ধরে রাখতে একটি ভেরিয়েবল avoidState-ও ঘোষণা করি।
const int avoidPin = 14; // the number of the avoid module pin
int avoidState = 0;
সেটআপ ফাংশনে, আমরা সিরিয়াল যোগাযোগ শুরু করি এবং avoidPin-কে একটি ইনপুট হিসাবে সেট করি। এটি ESP32-কে সেন্সরের আউটপুট অবস্থা পড়তে অনুমতি দেয়।
লুপ ফাংশনের মধ্যে, আমরা ক্রমাগত digitalRead(avoidPin) ব্যবহার করে সেন্সরের আউটপুট পড়ি এবং ফলাফলটি avoidState-এ সংরক্ষণ করি। এই মানটি তারপর সিরিয়াল মনিটরে প্রিন্ট করা হয়, যা আমাদের দেখতে দেয় কখন একটি বাধা শনাক্ত হয় (আউটপুট 0 হবে) বা না (আউটপুট 1 হবে)।
সম্পূর্ণ কোডের জন্য, অনুগ্রহ করে নিবন্ধের নীচের লোডিং বিভাগটি দেখুন।
প্রদর্শন / কী আশা করবেন
যখন সেটআপ সম্পূর্ণ হয় এবং কোড আপলোড করা হয়, তখন আপনার সিরিয়াল মনিটরে একটি বাধা শনাক্ত হয়েছে কিনা তার উপর নির্ভর করে 0 বা 1 প্রদর্শিত হতে দেখা উচিত। যখন একটি বাধা শনাক্তকরণ পরিসীমার মধ্যে থাকে, আউটপুট 0 পড়বে এবং বুজার বাজবে। যদি বাধাটি সরানো হয়, আউটপুট 1 পড়বে এবং বুজার বন্ধ হয়ে যাবে। এই কার্যকারিতা ভিডিওতে প্রদর্শিত হয়েছে (ভিডিওতে 12:30-এ)।
সাধারণ সমস্যাগুলির মধ্যে ভুল ওয়্যারিং অন্তর্ভুক্ত থাকতে পারে, যা সেন্সরটি সঠিকভাবে কাজ না করার কারণ হতে পারে, বা সিরিয়াল মনিটরে ভুল বড রেট, যা ডেটা সঠিকভাবে প্রদর্শিত হতে বাধা দেয়। সমস্যার সম্মুখীন হলে এই দিকগুলি পরীক্ষা করতে ভুলবেন না।
ভিডিও টাইমস্ট্যাম্প
00:00 শুরু
1:57 প্রকল্প পরিচিতি
4:33 বাধা এড়ানো ওয়্যারিং
5:55 বাধা এড়ানোর জন্য Arduino কোড
7:36 Arduino IDE-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
ভাষা: C++
// set pin
const int avoidPin = 14; // the number of the avoid avoid module pin
// variable for storing the avoid status
int avoidState = 0;
void setup() {
Serial.begin(115200);
// initialize the avoid pin as an input
pinMode(avoidPin, INPUT);
}
void loop() {
// read the state of the avoid value
avoidState = digitalRead(avoidPin);
Serial.println(avoidState);
}