کوڈ تلاش کریں

آرڈوینو کوڈ اور ویڈیو: آرڈوینو اسمارٹ کار کے لیے 4-چینل انفراریڈ رکاوٹ سینسر

آرڈوینو کوڈ اور ویڈیو: آرڈوینو اسمارٹ کار کے لیے 4-چینل انفراریڈ رکاوٹ سینسر

اس ٹیوٹوریل میں، ہم دریافت کریں گے کہ 4-چینل انفراریڈ رکاوٹ سے بچنے والے سینسر ماجیول کو اسمارٹ کار بنانے کے لیے کیسے استعمال کیا جائے۔ یہ ماجیول چار انفراریڈ سینسرز پر مشتمل ہے جو مختلف سمتوں میں رکاوٹوں کا پتہ لگا سکتے ہیں، جس سے آپ کی روبوٹک گاڑی اس کے مطابق ردعمل دے سکتی ہے۔ ہر سینسر قربت کے بارے میں فیڈ بیک فراہم کرتا ہے، جس سے آپ پائی جانے والی رکاوٹوں کی بنیاد پر پروگرام کے ردعمل ترتیب دے سکتے ہیں۔

جیسے ہی ہم اس پروجیکٹ میں آگے بڑھیں گے، ہم ہارڈویئر اجزاء، وائرنگ ہدایات، اور سینسرز کو مؤثر طریقے سے چلانے کے لیے ضروری کوڈ کا احاطہ کریں گے۔ آپ ویڈیو میں اضافی وضاحت حاصل کر سکتے ہیں (ویڈیو میں 00:00 پر)۔

ہارڈویئر کی وضاحت

اس پروجیکٹ کا مرکزی جزو 4-چینل انفراریڈ رکاوٹ سے بچنے والا ماجیول ہے، جو LM339 کواڈ ڈیفرینشل کمپیریٹر استعمال کرتا ہے۔ یہ آئی سی 2 سے 36 وولٹ کے درمیان کام کرنے کی صلاحیت رکھتا ہے، لیکن ہمارے معاملے میں، ہم Arduino کے ساتھ مطابقت کے لیے 5 وولٹ استعمال کریں گے۔ ماجیول کے ہر سینسر میں ایک الٹا اور غیر الٹا ان پٹ ہوتا ہے، جو اسے رکاوٹوں سے منعکس ہونے والی انفراریڈ روشنی کا موازنہ کرنے اور اس کے مطابق سگنل آؤٹ پٹ کرنے کی اجازت دیتا ہے۔

ماجیول کو پل-اپ ریزسٹرس کے ساتھ ڈیزائن کیا گیا ہے جو آؤٹ پٹ کو زیادہ رکھتے ہیں جب کوئی رکاوٹ نہ پائی جائے۔ جب کوئی چیز پائی جاتی ہے، آؤٹ پٹ کم ہو جاتا ہے، جو Arduino کو واضح سگنل فراہم کرتا ہے۔ مزید برآں، ماجیول میں ایل ای ڈی شامل ہیں جو اس بات کی نشاندہی کرتی ہیں کہ جب رکاوٹ پائی جائے، جس سے آپریشن کے دوران صارف کے فیڈ بیک میں اضافہ ہوتا ہے۔

ڈیٹاشیٹ تفصیلات

مینوفیکچررنامعلوم
پارٹ نمبر4-چینل انفراریڈ رکاوٹ سے بچاؤ
لاجک/آئی او وولٹیج5 V
سپلائی وولٹیج2–36 V
آؤٹ پٹ کرنٹ (فی چینل)10 ایم اے (عام)
پیک کرنٹ (فی چینل)20 ایم اے (زیادہ سے زیادہ)
پی ڈبلیو ایم فریکوئنسی رہنمائیناقابل اطلاق
ان پٹ لاجک تھریشولڈزکم < 0.8 V، زیادہ > 2.0 V
وولٹیج ڈراپ / RDS(on) / سیچوریشن0.2 V (عام)
تھرمل حدودآپریٹنگ درجہ حرارت: -40 سے 125 °C
پیکیجماجیول
نوٹس / مختلف شکلیں4 سینسرز شامل ہیں جن میں حساسیت کو ایڈجسٹ کیا جا سکتا ہے

  • فلوٹنگ ان پٹس سے بچنے کے لیے تمام اجزاء کے لیے مشترکہ گراؤنڈ استعمال کریں۔
  • زیادہ سے زیادہ پتہ لگانے کی حد کے لیے حساسیت پوٹینشیومیٹر کو ایڈجسٹ کریں۔
  • سینسرز کو نقصان پہنچانے سے بچنے کے لیے مناسب پاور سپلائی وولٹیج کو یقینی بنائیں۔
  • سینسرز سے غلط ریڈنگ کو روکنے کے لیے وائرنگ کنکشن چیک کریں۔
  • سینسرز کے لیے پاور سپلائی کو مستحکم کرنے کے لیے ڈیکپلنگ کیپسیٹرز استعمال کریں۔
  • مرکزی سسٹم میں ضم کرنے سے پہلے ہر سینسر کو انفرادی طور پر آزمائیں۔

وائرنگ ہدایات

4-چینل انفراریڈ رکاوٹ سے بچنے والے ماجیول کو Arduino سے وائر کرنے کے لیے، پاور اور گراؤنڈ کو جوڑ کر شروع کریں۔ سینسر ماجیول کے VCC پن کو Arduino پر 5V آؤٹ پٹ سے جوڑیں۔ پھر، ماجیول کے GND پن کو Arduino پر گراؤنڈ (GND) سے جوڑیں۔ یہ سینسرز کو چلانے کے لیے ضروری بجلی فراہم کرے گا۔

اگلا، سینسرز کے آؤٹ پٹ پنوں کو Arduino پر ڈیجیٹل ان پٹ پنوں سے جوڑیں۔ مثال کے طور پر، سامنے والے بائیں سینسر کا آؤٹ پٹ (جسے N1 کہا جاتا ہے) ڈیجیٹل پن 2 سے، سامنے والے دائیں سینسر (N2) کو پن 3 سے، پچھلے بائیں سینسر (N3) کو پن 4 سے، اور پچھلے دائیں سینسر (N4) کو پن 5 سے جوڑیں۔ مزید برآں، آپ بریک آؤٹ پٹ کو پن 8 سے، سامنے کی رکاوٹ کے اشارے کو پن 9 سے، اور پچھلی رکاوٹ کے اشارے کو پن 10 سے جوڑ سکتے ہیں۔ قابل اعتماد آپریشن کے لیے یقینی بنائیں کہ تمام کنکشن محفوظ ہیں۔

کوڈ مثالیں اور واک تھرو

Arduino کوڈ ہر سینسر پن کے لیے مستقل تعریف کرکے شروع ہوتا ہے تاکہ پروگرام میں آسانی سے حوالہ دیا جا سکے۔ مثال کے طور پر، FRONT_LEFT کو پن 2 کے طور پر بیان کیا گیا ہے، جس سے یہ واضح ہوتا ہے کہ کون سا سینسر کس پن سے مطابقت رکھتا ہے۔

#define FRONT_LEFT 2 // سامنے والے بائیں سینسر کے لیے پن 2
#define FRONT_RIGHT 3 // سامنے والے دائیں سینسر کے لیے پن 3
#define REAR_LEFT 4 // پچھلے بائیں سینسر کے لیے پن 4
#define REAR_RIGHT 5 // پچھلے دائیں سینسر کے لیے پن 5

setup() فنکشن میں، ہر سینسر پن کو pinMode() کا استعمال کرتے ہوئے ان پٹ کے طور پر ترتیب دیا جاتا ہے۔ یہ سیٹ اپ Arduino کو آپریشن کے دوران سینسرز کی حالت پڑھنے کی اجازت دیتا ہے۔

void setup() {
  Serial.begin(9600);
  pinMode(FRONT_LEFT, INPUT);
  pinMode(FRONT_RIGHT, INPUT);
  pinMode(REAR_LEFT, INPUT);
  pinMode(REAR_RIGHT, INPUT);
}

مرکزی لوپ میں، ہر سینسر کی حالت digitalRead() کا استعمال کرتے ہوئے پڑھی جاتی ہے۔ اگر کوئی رکاوٹ پائی جاتی ہے (کم سگنل سے ظاہر ہوتی ہے)، متعلقہ رکاوٹ ایل ای ڈی فعال ہو جاتی ہے، اور سیریل مانیٹر پر ایک پیغام پرنٹ کیا جاتا ہے۔

void loop() {
  int FR = digitalRead(FRONT_RIGHT);
  int FL = digitalRead(FRONT_LEFT);
  
  if( FR == LOW || FL == LOW) {
    digitalWrite(FRONT_OB,HIGH);
    Serial.println("سامنے کی رکاوٹ");
  } else {
    digitalWrite(FRONT_OB,LOW);
  }
}

یہ کوڈ ڈھانچہ آسان توسیع اور ترمیم کی اجازت دیتا ہے، جس سے آپ اپنی مخصوص ایپلیکیشن کی ضروریات کی بنیاد پر ردعمل تیار کر سکتے ہیں۔ مکمل کوڈ کے لیے، براہ کرم نیچے لوڈنگ سیکشن دیکھیں۔

مظاہرہ / کیا توقع کریں

ایک بار جب سب کچھ وائرڈ ہو جائے اور کوڈ اپ لوڈ ہو جائے، تو آپ توقع کریں کہ ماجیول پر موجود ایل ای ڈیز روشن ہوں جب بھی کسی سینسر کے ذریعے کوئی رکاوٹ کا پتہ چلے۔ سیریل مانیٹر بھی پیغامات دکھائے گا جو سامنے یا پیچھے رکاوٹوں کی موجودگی کی نشاندہی کریں گے۔ اگر سینسر صحیح طریقے سے پوزیشن میں ہوں، تو سمارٹ کار پروگرام کے مطابق رک کر یا سمت بدل کر ردعمل دے گی (ویڈیو میں 02:30 پر)۔

عام غلطیوں میں غلط وائرنگ شامل ہے، جو فلوٹنگ ان پٹس یا غلط ریڈنگز کا باعث بن سکتی ہے۔ یقینی بنائیں کہ سینسر مناسب طریقے سے کیلیبریٹ ہیں اور پوٹینشیومیٹر مطلوبہ حساسیت کے لیے ایڈجسٹ کیا گیا ہے۔ ہر سینسر کو الگ سے جانچنا مکمل انضمام سے پہلے مسائل کی نشاندہی کرنے میں مدد کر سکتا ہے۔

ویڈیو ٹائم اسٹیمپس

  • 00:00 – پروجیکٹ کا تعارف
  • 01:30 – ہارڈویئر کی وضاحت
  • 02:30 – کوڈ واک تھرو
  • 03:45 – وائرنگ ہدایات
  • 04:50 – لائیو مظاہرہ

تصاویر

4 channel infrared sensor module-6
4 channel infrared sensor module-6
4 channel infrared sensor module-1
4 channel infrared sensor module-1
4 channel infrared sensor module-3
4 channel infrared sensor module-3
4 channel infrared sensor module-
4 channel infrared sensor module-4
4 channel infrared sensor module-
4 channel infrared sensor module-5
60-This is the Arduino code for a 4-channel infrared obstacle sensor.
زبان: C++
++
/*
 * This is the Arduino code for 4-channel Infrared Obstacle Sensors for a smart car.
 * Watch YouTube video: https://youtu.be/6Qs4iFYm_lg
 * 
 * Written by Ahmad Nejrabi for Robojax.com
 * on January 15, 2018 at 21:04 in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.

 */
/*
4-Channel Infrared Obstacle Avoidance kit
Written by Ahmad Nejrabi for Robojax.com
on January 15, 2018 at 21:04 in Ajax, Ontario, Canada

What it does?
This module has 4 IR (infrared) sensors that sense obstacles and based on the position of the
obstacle, you can program your Arduino to take action. If you are using it for a smart car, you can
change the direction of the car, apply the brake, or stop it.
 */
  // 4 Infrared Obstacle code for Robojax.com
#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor
#define BREAK 8 // pin 8 to apply break or turn LED ON
#define FRONT_OB 9 // pin 9 when obstacle is at front
#define REAR_OB 10 // pin 10 when obstacle is at rear

void setup() {
  Serial.begin(9600);
  pinMode(FRONT_LEFT, INPUT);//define front-left input pin
  pinMode(FRONT_RIGHT, INPUT);//define front-right input pin
  // 4 Infrared Obstacle code for Robojax.com
  pinMode(REAR_LEFT, INPUT);//define rear-left input pin
  pinMode(REAR_RIGHT, INPUT);//define rear-right input pin 
  pinMode(BREAK, OUTPUT);// define pin for break
  pinMode(FRONT_OB,OUTPUT);// define front obstacle detection  pin
  pinMode(REAR_OB,OUTPUT);// define rear obstacle detection  pin
}

void loop() {
    // 4 Infrared Obstacle code for Robojax.com
  int FR = digitalRead(FRONT_RIGHT);// read FRONT_LEFT sensor
  int FL = digitalRead(FRONT_LEFT);// read FRONT_RIGHT sensor
  int RR = digitalRead(REAR_RIGHT);// read REAR_RIGHT sensor
  int RL = digitalRead(REAR_LEFT);// read REAR_LEFT sensor   

  if( FR == LOW || FL == LOW)
  {
    digitalWrite(FRONT_OB,HIGH);
    Serial.println("Front obstacle");
  }else{
    digitalWrite(FRONT_OB,LOW); 
    
  }


  if( RR == LOW || RL == LOW )
  {
    digitalWrite(REAR_OB,HIGH);
    Serial.println("Rear obstacle");
  }else{
    digitalWrite(REAR_OB,LOW); 
   
  } 

  delay(200);
}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

وسائل اور حوالہ جات

ابھی تک کوئی وسائل نہیں۔

فائلیں📁

فریٹزنگ فائل

دیگر فائلیں