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

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

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

Sharpt IR distance sensor

تشمل أمثلة الاستخدام العملي وأفكار المشاريع لهذا النظام:

  • بناء نظام مساعدة ركن آلي لمنع تلف المصد.
  • إنشاء مستشعر مستوى ماء بسيط للخزانات أو الآبار.
  • تطوير موزع سوائل غير تلامسي.
  • تنفيذ نظام إنذار أمني أساسي عن طريق اكتشاف القرب.
  • إنشاء مؤشر مستوى الملء للقواديس أو الحاويات.
  • تصميم نظام لتجنّب الاصطدام للروبوتات الصغيرة أو مركبات التحكم عن بُعد

الأجهزة/المكونات

لإكمال هذا المشروع، ستحتاج إلى المكونات التالية:

  • لوحة Arduino Uno أو لوحة متوافقة
  • مستشعر مسافة بالأشعة تحت الحمراء من شارب (الموديل GP2Y0A41SK0F، يقيس من 4 إلى 30 cm)
  • شاشة LCD1602 مع وحدة I2C (لتسهيل التوصيل)
  • لوحة تجارب (اختياري، لبناء النماذج الأولية)
  • أسلاك التوصيل
  • كابل USB لتغذية وبرمجة أردوينو

دليل الأسلاك

Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602

توصيل حساس Sharp للأشعة تحت الحمراء وشاشة LCD1602 المزودة بوحدة I2C إلى لوحة Arduino أمر بسيط لأن وحدة I2C تقلل عدد الأسلاك المطلوبة للشاشة

يحتوي مستشعر Sharp للأشعة تحت الحمراء على ثلاثة أسلاك: الأحمر (5V)، الأسود (الأرضي)، والأصفر (الإخراج). وصل السلك الأحمر إلى دبوس 5V في الأردوينو، والسلك الأسود إلى أي دبوس GND على الأردوينو، والسلك الأصفر الخاص بالإخراج إلى الدبوس التماثلي A0 في الأردوينو (في الفيديو عند 03:55).

شاشة LCD1602 المزودة بوحدة I2C تحتوي على أربعة أسلاك: VCC، GND، SDA، و SCL. قم بتوصيل دبوس VCC بـ5V في الأردوينو، ودبوس GND بـGND في الأردوينو. يجب توصيل سلك SDA (خط البيانات التسلسلي) بالدبوس التناظري A4 في الأردوينو، وسلك SCL (خط نبضة الساعة التسلسلية) بالدبوس التناظري A5 في الأردوينو (في الفيديو عند 02:42).

شرح الكود

يستخدم كود الأردوينو المقدم مكتبتين رئيسيتين:Wire.hللاتصال عبر I2C وLiquidCrystal_I2C.hللتحكم في شاشة LCD، وSharpIR.hبالنسبة لمستشعر Sharp للأشعة تحت الحمراء. الأجزاء التي يمكن للمستخدم تكوينها في الشيفرة تتعلق أساسًا بتعريف المستشعر وتهيئة شاشة LCD.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

الخطLiquidCrystal_I2C lcd(0x27, 16, 2);يهيئ كائن شاشة الكريستال السائل (LCD). المعامل الأول،0x27(في الفيديو عند 03:26)، هو عنوان I2C الافتراضي لمعظم وحدات LCD عبر I2C المبنية على PCF8574. إذا لم تعمل شاشة LCD الخاصة بك، فقد تحتاج إلى إيجاد عنوانها الصحيح (البدائل الشائعة هي0x3F). المعامل الثاني،16، يحدد أن شاشة LCD الخاصة بك تحتوي على 16 حرفًا لكل سطر، والمعامل الثالث،2, يشير إلى أنه يحتوي على سطرين.

#include <SharpIR.h>

#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
 * GP2Y0A02YK0F --> "20150"
 GP2Y0A21YK --> "1080"
 GP2Y0A710K0F --> "100500"
  GP2YA41SK0F --> "430"
 */

SharpIR SharpIR(IR, model);

تقوم هذه الأسطر بإعداد مستشعر Sharp للأشعة تحت الحمراء.#define IR A0يحدد دبوس الأردوينو التماثلي الذي يُوصل به سلك خرج حساس Sharp للأشعة تحت الحمراء#define model 430(في الفيديو عند 04:27) هذا أمر بالغ الأهمية لأنه يحدد الطراز الدقيق لمستشعر Sharp للأشعة تحت الحمراء لديك. تستخدم المكتبة رقم الطراز هذا لتطبيق التحويل الرياضي الصحيح من خرج الجهد التناظري للمستشعر إلى مسافة بالسنتيمترات. يسرد كتلة التعليقات نماذج Sharp IR المختلفة والقيم الصحيحة المقابلة التي ينبغي استخدامها هنا. على سبيل المثال، إذا كنت تستخدم GP2Y0A21YK، فستغير430إلى1080.

void setup()
{
  lcd.begin();
  lcd.backlight();
}

في الـsetup()دالة،lcd.begin()يهيئ شاشة LCD، وlcd.backlight()يشغّل الإضاءة الخلفية الخاصة به، مما يجعل الشاشة مرئية.

void loop()
{
  lcd.clear();
  lcd.print("Robojax IR Test");
  lcd.setCursor (0,1); // go to start of 2nd line
  int dis=SharpIR.distance();// gets the distance in cm
  String distance = String(dis);
  distance ="Distance: "+distance+"cm";
  lcd.print(distance);
  delay(500);
}

داخل الـloop()دالة:

  • lcd.clear();يمسح أي نص سابق على الشاشة.
  • lcd.print("Robojax IR Test");يطبع رسالة ثابتة في السطر الأول.
  • lcd.setCursor (0,1);ينقل المؤشر إلى بداية السطر الثاني (0 هو العمود الأول، 1 هو السطر الثاني، لأن الأسطر مفهرسة ابتداءً من 0).
  • int dis=SharpIR.distance();ينادي الـdistance()دالة من مكتبة SharpIR لقراءة قيمة المستشعر وتحويلها إلى عدد صحيح يمثل المسافة بالسنتيمترات (في الفيديو عند 05:06). هذه هي الدالة الأساسية للحصول على القياس.
  • String distance = String(dis);يحوّل المسافة كعدد صحيح إلى سلسلة نصية، لأنك لا تستطيع دمج الأعداد الصحيحة مع السلاسل النصية مباشرةً عند الطباعة.
  • distance ="Distance: "+distance+"cm";يقوم بتنسيق السلسلة لتضمين «المسافة: » قبل القيمة و«cm» بعدها.
  • lcd.print(distance);يعرض سلسلة المسافة المنسقة على شاشة LCD.
  • delay(500);يُدخل توقفًا لمدة 500 مللي ثانية (في الفيديو عند 06:00). هذا التأخير مهم لدقة واستقرار مستشعر Sharp. يمكنك تعديل هذه القيمة: زيادتها قد تُحسّن الدقة لكنها تُبطئ التحديثات، بينما تقليلها سيُسرّع التحديثات لكنه قد يقلل الدقة.

مشروع حي/عرض توضيحي

بمجرد توصيل المكونات بأسلاك ورفع الشيفرة إلى لوحة Arduino الخاصة بك، سيبدأ النظام في قياس المسافات وعرضها. يُظهر المشروع قياسات دقيقة في النطاقات القريبة، على سبيل المثال عرض 12 سم عندما يكون الجسم على بعد 12 سم (في الفيديو عند 00:31) و10 سم عند 10 سم (في الفيديو عند 00:37).

مع ذلك، عندما يبتعد الجسم أكثر، خاصةً إلى ما بعد 15-20 سم، قد تقل الدقة. على سبيل المثال، عند 20 سم، قد يعرض الجهاز 21 سم (في الفيديو عند 07:06)، وعند 25 سم، قد يُظهر 28 أو 29 سم (في الفيديو عند 07:32). هذا السلوك مميز لهذه المستشعرات تحت الحمراء. يخرج مستشعر Sharp للأشعة تحت الحمراء جهدًا تماثليًا يتغير مع المسافة: فكلما زادت المسافة، انخفض الجهد الخارج (في الفيديو عند 07:56).

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

فصول

  • [00:06] مقدمة المشروع ونظرة عامة
  • [01:10] تفاصيل ومخطط الأرجل لمستشعر الأشعة تحت الحمراء Sharp
  • [02:09] توصيل أسلاك وحدة LCD عبر I2C
  • [02:58] شرح كود أردوينو
  • [06:36] عرض توضيحي لقياس المسافة
  • [07:47] خصائص المستشعر وحدود الدقة
  • [08:48] ملاحظات ختامية وموارد

الصور

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602
70-This is the Arduino code and video for a Sharp Infrared Sensor Module with LCD1602 and I2C.
اللغة: C++
تم النسخ!

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

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

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

ملفات📁

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

Fritzing File

ملفات أخرى