اس ٹیوٹوریل میں، ہم سیکھیں گے کہ ESP32 ماجیول کو لائن ٹریکنگ ماجیول کے ساتھ استعمال کرتے ہوئے سفید سطح پر سیاہ لکیروں کا پتہ کیسے لگایا جائے۔ یہ صلاحیت ان ایپلیکیشنز کے لیے ضروری ہے جیسے روبوٹک کاریں جنہیں مقررہ راستے پر چلنے کی ضرورت ہوتی ہے۔ مزید برآں، ہم ایک بزر کو مربوط کریں گے جو لائن ٹریکنگ ماجیول کے سیاہ لکیر کا پتہ لگانے پر فعال ہوگا، جس سے ہمارے پروجیکٹ کے فیڈ بیک میکانزم میں اضافہ ہوگا۔ مزید وضاحت کے لیے، براہ کرم ویڈیو (ویڈیو میں 0:00 پر) دیکھیں۔
line_track
ہارڈویئر کی وضاحت
اس پروجیکٹ کے بنیادی اجزاء میں ESP32 ماجیول، ایک لائن ٹریکنگ ماجیول، اور ایک بزر شامل ہیں۔ ESP32 ماجیول ایک طاقتور مائیکروکنٹرولر ہے جس میں بلٹ ان وائی فائی اور بلوٹوتھ صلاحیتیں ہیں، جو 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);
}
}