এই টিউটোরিয়ালে, আমরা শিখব কীভাবে ESP32 মডিউল এবং লাইন ট্র্যাকিং মডিউল ব্যবহার করে সাদা পৃষ্ঠের উপর কালো লাইন শনাক্ত করা যায়। এই ক্ষমতা রোবোটিক গাড়ির মতো অ্যাপ্লিকেশনের জন্য অপরিহার্য যেগুলিকে নির্ধারিত পথ অনুসরণ করতে হয়। অতিরিক্তভাবে, আমরা একটি বুজার সংযুক্ত করব যা লাইন ট্র্যাকিং মডিউল কালো লাইন শনাক্ত করলে সক্রিয় হয়, আমাদের প্রকল্পের প্রতিক্রিয়া প্রক্রিয়া উন্নত করে। আরও স্পষ্টতার জন্য, অনুগ্রহ করে ভিডিওটি দেখুন (ভিডিওতে 0:00 এ)।
line_track
হার্ডওয়্যার ব্যাখ্যা
এই প্রকল্পের প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মডিউল, একটি লাইন ট্র্যাকিং মডিউল এবং একটি বুজার। ESP32 মডিউল একটি শক্তিশালী মাইক্রোকন্ট্রোলার যাতে অন্তর্নির্মিত Wi-Fi এবং ব্লুটুথ ক্ষমতা রয়েছে, যা বিস্তৃত IoT অ্যাপ্লিকেশনের অনুমতি দেয়। লাইন ট্র্যাকিং মডিউল প্রতিফলিত ইনফ্রারেড আলোর তীব্রতার উপর ভিত্তি করে পৃষ্ঠের রঙের পার্থক্য শনাক্ত করতে একটি ইনফ্রারেড ইমিটার এবং ফটোরেসিস্টর ব্যবহার করে।
লাইন ট্র্যাকিং মডিউল ইনফ্রারেড আলো নির্গত করে কাজ করে যা এর নীচের পৃষ্ঠ থেকে প্রতিফলিত হয়। কালোর মতো গাঢ় পৃষ্ঠ বেশি আলো শোষণ করে, ফলে প্রতিফলিত তীব্রতা কম হয়, যখন সাদার মতো হালকা পৃষ্ঠ বেশি আলো প্রতিফলিত করে, উচ্চ তীব্রতা তৈরি করে। এই পার্থক্যটি একটি অপারেশনাল অ্যামপ্লিফায়ার দ্বারা প্রক্রিয়া করা হয় পৃষ্ঠের অবস্থা (কালো বা সাদা) নির্ধারণ করতে এবং একটি সংশ্লিষ্ট সংকেত আউটপুট করতে।
ডেটাশিট বিবরণ
প্রস্তুতকারক
SunFounder
পার্ট নম্বর
TCRT5000
লজিক/আইও ভোল্টেজ
3.3 V থেকে 5 V
আউটপুট কারেন্ট (প্রতি চ্যানেল)
20 mA
পিক কারেন্ট (প্রতি চ্যানেল)
50 mA
প্রতিক্রিয়া সময়
< 10 ms
শনাক্তকরণ পরিসীমা
1 cm থেকে 5 cm
প্যাকেজ
হেডার পিন সহ মডিউল
নোট / ভেরিয়েন্ট
লাইন ফলোয়িং রোবটে সাধারণত ব্যবহৃত হয়
সঠিক পাওয়ার সাপ্লাই নিশ্চিত করুন (3.3 V বা 5 V)।
সঠিক রিডিংয়ের জন্য সেন্সর পরিষ্কার রাখুন।
অনবোর্ড পটেনশিওমিটার ব্যবহার করে সংবেদনশীলতা সামঞ্জস্য করুন।
ফ্লোটিং ইনপুট এড়াতে সংযোগ পরীক্ষা করুন।
স্থিতিশীল রিডিংয়ের জন্য প্রয়োজন হলে পুল-আপ রেজিস্টর ব্যবহার করুন।
পরিবেষ্টিত ইনফ্রারেড উৎস থেকে হস্তক্ষেপ কমিয়ে দিন।
ওয়্যারিং নির্দেশাবলী
ESP32-20_line-tracking-wiring
লাইন ট্র্যাকিং মডিউলটি ESP32-তে ওয়্যার করতে, মডিউলের গ্রাউন্ড পিনটি ESP32-এর একটি গ্রাউন্ড পিনের সাথে সংযুক্ত করে শুরু করুন। তারপর, লাইন ট্র্যাকিং মডিউলের V+ পিনটি ESP32-তে 3.3 V বা 5 V-এর মতো উপযুক্ত পাওয়ার উৎসের সাথে সংযুক্ত করুন। সিগন্যাল পিনটি (যা S হিসাবে চিহ্নিত) ESP32-তে GPIO 14-এর সাথে সংযুক্ত করা উচিত। এগিয়ে যাওয়ার আগে এই সংযোগগুলি নিরাপদ কিনা তা নিশ্চিত করুন।
আপনি যদি একটি বুজার ব্যবহার করেন, তবে এর নেতিবাচক টার্মিনালটি গ্রাউন্ডের সাথে এবং ধনাত্মক টার্মিনালটি ESP32-তে GPIO 27-এর সাথে সংযুক্ত করুন। এই সেটআপটি বুজারকে সক্রিয় হতে দেয় যখন লাইন ট্র্যাকিং মডিউল একটি কালো লাইন শনাক্ত করে। কোডে নির্দিষ্ট পিনের সাথে মেলে তা নিশ্চিত করতে সমস্ত সংযোগ দুবার পরীক্ষা করতে ভুলবেন না।
ESP32-20_line-tracking-schemtaic
কোড উদাহরণ ও ওয়াকথ্রু
নীচে লাইন ট্র্যাকিং মডিউল সেট আপ করে এমন কোডের একটি মূল অংশ দেওয়া হল। ভেরিয়েবল linePin লাইন ট্র্যাকিং মডিউলের সাথে সংযুক্ত পিনটি উপস্থাপন করতে সংজ্ঞায়িত করা হয়েছে।
const int linePin = 14; // লাইন ট্র্যাক মডিউল পিনের সংখ্যা
এই লাইনটি linePin কে পিন 14 হিসাবে আরম্ভ করে, যা লাইন অবস্থা পড়তে ব্যবহৃত হবে। lineState ভেরিয়েবলটি সেন্সর থেকে ফলাফল ধারণ করবে।
setup() ফাংশনে, আমরা linePin এর জন্য পিন মোড ইনপুট হিসাবে কনফিগার করি।
এই লুপটি পরীক্ষা করে যে lineState HIGH (কালো নির্দেশ করে) নাকি LOW (সাদা নির্দেশ করে) এবং ফলাফলটি সিরিয়াল মনিটরে প্রিন্ট করে। সম্পূর্ণ কোডটি আপনার রেফারেন্সের জন্য নিবন্ধের নীচে লোড হয়।
প্রদর্শন / কী আশা করবেন
ওয়্যারিং সম্পূর্ণ হলে এবং কোড আপলোড করা হলে, আপনার পর্যবেক্ষণ করা উচিত যে ESP32 কালো পৃষ্ঠের উপর লাইন ট্র্যাকিং মডিউল থাকলে "Black" প্রিন্ট করছে এবং সাদা পৃষ্ঠের উপর থাকলে "White" প্রিন্ট করছে। অতিরিক্তভাবে, মডিউলটি কালো লাইন শনাক্ত করলে বুজারটি শব্দ করবে, একটি শ্রবণযোগ্য সতর্কতা প্রদান করে। পটেনশিওমিটার সেটিংস সম্পর্কে সতর্ক থাকুন, কারণ অতিরিক্ত সংবেদনশীল সেটিংস অস্থির আচরণের দিকে নিয়ে যেতে পারে (ভিডিওতে 10:00 এ)।
ভিডিও টাইমস্ট্যাম্প
00:00 শুরু
2:22 লাইন ট্র্যাকিং মডিউলের পরিচিতি
5:10 ডকুমেন্টেশন পৃষ্ঠা
9:20 ওয়্যারিং ব্যাখ্যা
10:49 আরডুইনো কোড ব্যাখ্যা
13:36 আরডুইনো আইডিইতে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
819-ESP32 Tutorial 20/55- Arduino code line tracking
ভাষা: C++
// Set pin number
const int linePin = 14; // The number of the line track module pin
// Variable for storing the line status
int lineState = 0;
void setup() {
Serial.begin(115200);
// Initialize the line track module pin as an input
pinMode(linePin, INPUT);
}
void loop() {
// Read the state of the line track module
lineState = digitalRead(linePin);
if (lineState == HIGH) {
Serial.println("Black");
delay(100);
}
else {
Serial.println("White");
delay(100);
}
}