كود البحث

كود أردوينو وفيديو: مستشعر عقبات بالأشعة تحت الحمراء بأربع قنوات لسيارة ذكية بالأردوينو

كود أردوينو وفيديو: مستشعر عقبات بالأشعة تحت الحمراء بأربع قنوات لسيارة ذكية بالأردوينو

في هذا البرنامج التعليمي، سنستكشف كيفية استخدام وحدة استشعار تجنّب العقبات بالأشعة تحت الحمراء رباعية القنوات لإنشاء سيارة ذكية. تتكون هذه الوحدة من أربعة حسّاسات بالأشعة تحت الحمراء يمكنها اكتشاف العقبات في اتجاهات مختلفة، مما يسمح لمركبتك الروبوتية بالاستجابة وفقًا لذلك. يوفّر كل حسّاس معلومات عن القرب، مما يمكّنك من برمجة ردود فعل بناءً على العقبات المكتشفة.

مع تقدمنا في هذا المشروع سنغطي مكونات الأجهزة وتعليمات التوصيل والكود اللازم لتشغيل أجهزة الاستشعار بفعالية. يمكنك العثور على توضيحات إضافية في الفيديو (عند 00:00).

شرح الأجهزة

المكون الرئيسي في هذا المشروع هو وحدة تجنب العقبات بالأشعة تحت الحمراء ذات 4 قنوات، والتي تستخدم المقارن التفاضلي الرباعي LM339. هذه الدائرة المتكاملة قادرة على العمل بين 2 و36 فولت، لكن في حالتنا سنستخدم 5 فولت للتوافق مع الأردوينو. يحتوي كل مستشعر في الوحدة على مدخل معكوس ومدخل غير معكوس، مما يتيح له مقارنة ضوءَ الأشعة تحت الحمراء المنعكس عن العقبات وإخراج إشارة وفقًا لذلك.

تم تصميم الوحدة بمقاومات سحب للأعلى تحافظ على الخرج مرتفعًا عندما لا يتم اكتشاف أي عائق. عند اكتشاف جسم، يصبح الخرج منخفضًا، مما يوفر إشارة واضحة للأردوينو. بالإضافة إلى ذلك، تحتوي الوحدة على مصابيح LED تشير إلى وجود عائق، مما يعزز التغذية الراجعة للمستخدم أثناء التشغيل.

تفاصيل ورقة البيانات

المصنّعغير معروف
رقم القطعةنظام تجنّب العوائق بالأشعة تحت الحمراء 4 قنوات
جهد المنطق/الإدخال والإخراج5 فولت
جهد التغذية2-36 فولت
تيار الخرج (لكل قناة)10 mA (نموذجي)
التيار الأقصى (لكل قناة)20 mA (كحد أقصى)
إرشادات تردد PWMغير قابل للتطبيق
عتبات منطقية للإدخالمنطقياً منخفض < 0.8 فولت، منطقياً مرتفع > 2.0 فولت
هبوط الجهد / Rالمصرف-المصدر أثناء التشغيل / التشبع0.2 فولت (نموذجي)
الحدود الحراريةدرجة حرارة التشغيل: -40 إلى 125 °C
حزمةوحدة
ملاحظات / متغيراتيتضمن 4 مستشعرات بحساسية قابلة للتعديل

  • استخدم مرجعًا أرضيًا مشتركًا لجميع المكونات لتجنب المداخل العائمة.
  • اضبط البوتنشيومتر الخاص بالحساسية للحصول على نطاق كشف أمثل.
  • تأكد من أن جهد مصدر الطاقة مناسب لتجنب تلف المستشعرات.
  • تحقق من توصيلات الأسلاك لمنع القراءات الخاطئة من المستشعرات.
  • استخدم مكثفات فك الارتباط لتثبيت مصدر التغذية للمستشعرات
  • اختبر كل مستشعر على حدة قبل دمجه في النظام الرئيسي.

تعليمات التوصيل الكهربائي

لتوصيل وحدة تجنُّب العقبات بالأشعة تحت الحمراء ذات الأربع قنوات بالأردوينو، ابدأ بتوصيل الطاقة والأرضي. قم بتوصيل دبوس VCC في وحدة المستشعر بمخرج 5V على الأردوينو. ثم قم بتوصيل دبوس GND في الوحدة بالأرضي (GND) على الأردوينو. سيزود ذلك المستشعرات بالطاقة اللازمة لتعمل.

بعد ذلك، قم بتوصيل دبابيس خرج المستشعرات بدبابيس الإدخال الرقمية على لوحة الأردوينو. على سبيل المثال، قم بتوصيل خرج المستشعر الأمامي الأيسر (الموسوم بـN1) إلى الدبوس الرقمي 2، المستشعر الأمامي الأيمن (N2) إلى الدبوس 3، المستشعر الخلفي الأيسر (N3) إلى الدبوس 4، والمستشعر الخلفي الأيمن (N4) إلى الطرف 5. بالإضافة إلى ذلك، يمكنك توصيل خرج الفرامل بالطرف 8، ومؤشر العائق الأمامي بالطرف 9، ومؤشر العائق الخلفي بالطرف 10. تأكد من أن جميع الاتصالات ثابتة لضمان تشغيل موثوق.

أمثلة على الكود وشرح خطوة بخطوة

يبدأ كود أردوينو بتعريف ثوابت لكل دبوس مستشعر لتسهيل الرجوع إليها في جميع أنحاء البرنامج. على سبيل المثال،FRONT_LEFTتم تعريفه على أنه الدبوس 2، مما يوضح أي مستشعر يتوافق مع أي دبوس.

#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

في الـsetup()في الدالة، يتم تكوين كل دبوس من دبابيس المستشعر كمدخل باستخدامpinMode()يتيح هذا الإعداد للآردوينو قراءة حالات المستشعرات أثناء التشغيل.

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

في الحلقة الرئيسية، يتم قراءة حالة كل مستشعر باستخدامdigitalRead()إذا تم اكتشاف عائق (مشيرًا إلى ذلك بإشارة LOW)، يُفعّل مصباح LED المقابل للعائق، وتُطبع رسالة على المراقب التسلسلي.

void loop() {
  int FR = digitalRead(FRONT_RIGHT);
  int FL = digitalRead(FRONT_LEFT);
  
  if( FR == LOW || FL == LOW) {
    digitalWrite(FRONT_OB,HIGH);
    Serial.println("Front obstacle");
  } else {
    digitalWrite(FRONT_OB,LOW);
  }
}

تسمح بنية الكود هذه بالتوسيع والتعديل بسهولة، مما يتيح لك تخصيص الردود بناءً على احتياجات تطبيقك المحددة. للاطّلاع على الكود الكامل، يرجى الرجوع إلى قسم التحميل أدناه.

العرض التوضيحي / ما الذي تتوقعه

بمجرد توصيل كل شيء ورفع الكود، يجب أن تتوقع أن تضيء مصابيح LED على الوحدة كلما اكتشف أي من الحساسات عقبة. كما ستعرض نافذة المراقبة التسلسلية رسائل تشير إلى وجود عقبات في الأمام أو في الخلف. إذا كانت الحساسات موضوعة بشكل صحيح، ستتفاعل السيارة الذكية بالتوقف أو تغيير الاتجاه كما هو مبرمج (في الفيديو عند 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);
}

الأشياء التي قد تحتاجها

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

لا توجد ملفات متاحة.