كود البحث

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

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

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

Sharpt IR distance sensor

في هذا المشروع، سنستخدم مستشعر Sharp IR الذي يبعث ضوءًا من الأشعة تحت الحمراء ويقيس المسافة إلى جسم اعتمادًا على الضوء المنعكس. عندما يُكتشف جسم ضمن النطاق، ستُفعّل الصفارة، مما يوفر طريقة بسيطة وفعالة لعرض قدرات وحدة Sharp IR. تأكد من مشاهدة الفيديو للحصول على دليل مرئي حول الإعداد والكود (في الفيديو عند 00:00).

شرح الأجهزة

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

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

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

المصنّعحاد
رقم القطعةGP2Y0A21YK0F
جهد المنطق/الإدخال/الإخراج5 فولت
جهد التغذية4.5 - 5.5 فولت
جهد الخرج0.4 - 2.5 فولت
نطاق القياس10 - 80 سم
زمن الاستجابة50 ميلي ثانية
تيار الإخراج20 مللي أمبير
حزمةوحدة
ملاحظات / متغيراتمتوفر بمسافات متعددة

  • تأكد من توفّر مصدر طاقة مناسب (4.5 - 5.5 فولت) لتجنب التلف.
  • استخدم مقاومًا للحد من التيار إذا لزم الأمر.
  • احرص على إبقاء المستشعر نظيفًا لضمان قراءات دقيقة.
  • انتبه لتداخل الإضاءة المحيطة.
  • يجب تأمين الأسلاك لمنع الاتصالات المتقطعة.

تعليمات الأسلاك

Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor

لتوصيل وحدة قياس المسافة بالأشعة تحت الحمراء من Sharp، قم بتوصيل دبوس الأرضي (GND) في الوحدة بدبوس GND على لوحة Arduino. ثم قم بتوصيل دبوس VCC في الوحدة بدبوس 5V على لوحة Arduino. يجب توصيل دبوس إخراج الإشارة من وحدة Sharp IR بالدبوس 2 على لوحة Arduino، والذي سيقرأ بيانات المسافة.

بالنسبة للمزمّر، وصل الدبوس الأطول (الموجب) إلى الدبوس رقم 8 على لوحة الأردوينو، والدبوس الأقصر (السالب) إلى الطرف الأرضي (GND). تأكد من أن جميع الوصلات محكمة وأن المكونات مزودة بالطاقة بشكل صحيح لضمان عملها بشكل سليم.

أمثلة على الشيفرة وشرح خطوة بخطوة

فيما يلي مقتطف موجز من كود Arduino حيث نعرّف الدبابيس ونقوم بإعداد المستشعر. المعرّفIRيُعرَّف بأنه الدبوس التناظري المستخدم لإشارة المستشعر.

#define IR A0 // define signal pin
SharpIR SharpIR(IR, model); // Initialize SharpIR with the defined pin

يقوم هذا الكود بتهيئة مستشعر Sharp للأشعة تحت الحمراء على الدبوس التناظري المحدد. المعرفmodelيحدد نوع المستشعر المستخدم، والذي في هذه الحالة تم ضبطه على 1080 لطراز GP2Y0A21YK0F.

في دالة الإعداد، نبدأ الاتصال التسلسلي لمراقبة قراءات المسافة:

void setup() {
    Serial.begin(9600); // Initialize serial communication
    Serial.println("Robojax Sharp IR  "); // Print message to serial monitor
}

تقوم دالة setup بتهيئة الاتصال التسلسلي بسرعة 9600 باود، مما يسمح للأردوينو بإرسال بيانات المسافة إلى مراقب السيريال للاطلاع عليها.

داخل دالة الحلقة، نقرأ المسافة من المستشعر ونطبعها:

void loop() {
    int dis = SharpIR.distance(); // Read the distance
    Serial.print("Mean distance: "); // Print distance to serial monitor
    Serial.println(dis); // Output the distance measurement
}

يوضح هذا المقتطف كيفية قراءة المسافة بشكلٍ مستمر وطباعتها على نافذة المراقبة التسلسلية. المتغيرdisيحتفظ بقيمة المسافة المقاسة بواسطة مستشعر الأشعة تحت الحمراء من شارب.

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

عند اكتمال الإعداد، يمكنك توقع أن تصدر الصفارة صوتًا كلما تم اكتشاف جسم ضمن النطاق المحدد لمستشعر Sharp للأشعة تحت الحمراء. ستعرض نافذة المراقبة التسلسلية المسافة المتوسطة إلى جانب المسافة المقاسة بالسنتيمترات. إذا لم يكن هناك أي أجسام ضمن النطاق، فستشير النافذة إلى ذلك أيضًا (في الفيديو عند 02:30).

من الأخطاء الشائعة التأكد من محاذاة المستشعر بشكل صحيح وأنه لا توجد عوائق تعترض إشارة الأشعة تحت الحمراء. كما تأكد من أن مصدر الطاقة مستقر لتجنب قراءات متقلبة.

الطوابع الزمنية للفيديو

  • 00:00- مقدمة عن المشروع
  • 02:30- عرض وظيفة المستشعر
  • 03:45- شرح الأسلاك
  • 05:00- استعراض الكود

الصور

Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
69-This is the Arduino code and video for a Sharp Infrared Sensor Module
اللغة: C++
/*
 * Sharp IR (infrared) distance measurement module for Arduino
 * Measures the distance in cm.

 * Original library: https://github.com/guillaume-rico/SharpIR

 * Watch video instruction for this code: https://youtu.be/GL8dkw1NbMc
 *
 * Full explanation of this code and wiring diagram is available at
 * my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62

 * Written by Ahmad Shamshiri on Feb 03, 2018 at 07:34
 * in Ajax, Ontario, Canada. www.robojax.com
 *

 * Get this code and other Arduino codes from Robojax.com
 Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
 all in one place. 

 If you found this tutorial helpful, please support me so I can continue creating
 content like this. 

 or make a donation using PayPal http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/




 */
  // Sharp IR code for Robojax.com
#include <SharpIR.h>

#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:  1080 for GP2Y0A21Y
//                                            20150 for GP2Y0A02Y
//                                            430 for GP2Y0A41SK
/*
2 to 15 cm GP2Y0A51SK0F	use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series	use 430
10 to 80 cm GP2Y0A21YK0F	use 1080
10 to 150 cm GP2Y0A60SZLF	use 10150
20 to 150 cm GP2Y0A02YK0F	use 20150
100 to 550 cm GP2Y0A710K0F	use 100550

 */

SharpIR SharpIR(IR, model);
void setup() {
    // Sharp IR code for Robojax.com
 Serial.begin(9600);
 Serial.println("Robojax Sharp IR  ");
}

void loop() {
    // Sharp IR code for Robojax.com
    delay(500);

  unsigned long startTime=millis();  // takes the time before the loop on the library begins

  int dis=SharpIR.distance();  // this returns the distance to the object you're measuring

  // Sharp IR code for Robojax.com

  Serial.print("Mean distance: ");  // returns it to the serial monitor
  Serial.println(dis);
  //Serial.println(analogRead(A0));
  unsigned long endTime=millis()-startTime;  // the following gives you the time taken to get the measurement
 Serial.print("Time taken (ms): ");
 Serial.println(endTime);
     // Sharp IR code for Robojax.com

}

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

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

ملفات📁

مكتبات أردوينو (ملف مضغوط)

Fritzing File