كود أردوينو ومرسل فيديو ومستشعر ليزر
في هذا الدرس سنتعلّم كيفية استخدام مرسل ومستقبل ليزر لاكتشاف شعاع ليزر وتشغيل صفارة أو تنفيذ إجراء آخر. يمكن استخدام هذا الإعداد في تطبيقات متنوعة، بما في ذلك الأتمتة والروبوتات. بنهاية الدرس ستفهم كيفية توصيل المكونات وكتابة كود أردوينو لجعل كل شيء يعمل بسلاسة.


خلال البرنامج التعليمي، سنناقش المكونات الرئيسية المشاركة في هذا المشروع، بما في ذلك كيفية توصيلها بشكل صحيح وكيف يعمل الكود. شاهد الفيديو للحصول على شرح تفصيلي (في الفيديو عند 02:00).
شرح الأجهزة
تتضمن المكونات الرئيسية في هذا المشروع مرسِل ليزر ومستقبِل ليزر ومنبِّه كهربائي. يصدر مرسِل الليزر شعاعًا ضوئيًا، بينما يكتشف المستقبل هذا الشعاع. عندما ينقطع الشعاع، يرسل المستقبل إشارة إلى الأردوينو، الذي يمكنه بعد ذلك تفعيل المنبّه أو تنفيذ إجراء آخر.
تعمل وحدة الإرسال بجهد 5 فولت وتحتوي على مقاومة لتحديد التيار. يمكن توصيل وحدة الاستقبال بسلك خارجي لمرونة في موضعها. تعمل الصفارة أيضاً بجهد 5 فولت ولها دبّوسان: واحد للموجب وواحد للأرضي.
تفاصيل ورقة البيانات
| المصنّع | غير معروف |
|---|---|
| رقم القطعة | وحدة إرسال/استقبال ليزر |
| جهد التشغيل | 5 فولت |
| الاستهلاك الحالي | 5 mA نموذجي |
| نوع الإخراج | إشارة رقمية |
| مدى الكشف | يختلف حسب البيئة |
| الحجم | المرسل: 14.8 mm × 18.8 mm، المستقبل: 15.4 mm × 23.4 mm |
- تأكد من توفير جهد مناسب لمنع التلف.
- استخدم أسلاكًا قصيرة لتقليل فقدان الإشارة.
- حافظ على محاذاة جهاز الاستقبال مع جهاز الإرسال لضمان اكتشاف موثوق به.
- اختبر الإعداد في ظروف إضاءة مختلفة.
- كن حذراً من الانعكاسات التي قد تؤدي إلى اكتشافات خاطئة.
تعليمات الأسلاك

لتوصيل مرسل الليزر، صِل دبوس الأرضي الخاص به إلى GND على الأردوينو، والدبوس الموجب إلى 5V على الأردوينو. الدبوس الأوسط للمرسل غير مستخدم. بالنسبة لمستقبل الليزر، صِل دبوس الأرضي إلى GND، والدبوس الموجب إلى 5V، ودبوس الخرج إلى دبوس الأردوينو2. سيقوم دبوس الخرج هذا بقراءة الإشارة من مستقبل الليزر.
بعد ذلك، قم بتوصيل الجرس: يجب توصيل الدبوس الأطول (الموجب) بدبوس الأردوينو8، بينما يتصل الدبوس الأقصر (الأرضي) بـ GND. تأكد من إحكام جميع الوصلات لتجنب حدوث مشكلات متقطعة أثناء التشغيل.
أمثلة على الكود وشرح تفصيلي
يبدأ كود الأردوينو بتعريف دبابيس مستشعر الليزر والمكوّن المسؤول عن الإخراج الصوتي (المنبّه) باستخدام المعرفاتDETECTوACTIONيقوم الكود بتهيئة الاتصال التسلسلي لأغراض التصحيح ويضبط أوضاع الدبابيس فيsetup()دالة.
#define DETECT 2 // pin 2 for sensor
#define ACTION 8 // pin 8 for action to do something
void setup() {
Serial.begin(9600);
pinMode(DETECT, INPUT); // define detect input pin
pinMode(ACTION, OUTPUT); // define ACTION output pin
}يُظهر هذا المقتطف كيفية تكوين الأطراف للدخل والخرج، وهو أمر بالغ الأهمية لعمل الإعداد. ذلكSerial.begin(9600)يتيح الأمر التواصل مع المراقب التسلسلي، مما يمكّننا من رؤية رسائل التصحيح.
في الـloop()الدالة، يتحقق الكود باستمرار من حالة حساس الليزر. إذا تم اكتشاف شعاع الليزر، فإنه يُشغّل المنبّه ويطبع "تم الكشف!" على نافذة المراقبة التسلسلية.
void loop() {
int detected = digitalRead(DETECT); // read Laser sensor
if(detected == HIGH) {
digitalWrite(ACTION, HIGH); // set the buzzer ON
Serial.println("Detected!");
} else {
digitalWrite(ACTION, LOW); // Set the buzzer OFF
Serial.println("No laser");
}
delay(200); // wait 200 milliseconds
}يوضح هذا المقتطف المنطق الأساسي للبرنامج. المتغيرdetectedيخزن ناتج الـdigitalRead()دالة تتحقق مما إذا كان شعاع الليزر موجودًا. اعتمادًا على الحالة، يتم تشغيل المنبّه الصوتي أو إيقافه.
عرض توضيحي / ما الذي تتوقعه
عند توصيل الإعداد بشكل صحيح وتحميل الكود، ينبغي أن يعمل النظام كما هو متوقع. سيعرض المراقب التسلسلي عبارة تم الكشف! عندما يصيب شعاع الليزر المستقبِل، وستصدر الصفارة صوتًا. إذا انقطع الشعاع أو لم يُكتشف، سيعرض المراقب التسلسلي عبارة لا يوجد ليزر وستتوقف الصفارة.
من الضروري التأكد من محاذاة شعاع الليزر بشكل صحيح مع المستقبل لضمان تشغيل موثوق. كن حذراً من الانعكاسات المحتملة التي قد تؤدي إلى نتائج إيجابية كاذبة، كما نوقش في الفيديو (عند 08:00).
طوابع زمنية للفيديو
- 00:00- مقدمة
- 02:00- شرح الأجهزة
- 04:30- تعليمات الأسلاك
- 06:15- شرح الكود
- 08:00- عرض توضيحي
++
/*
* Laser Sensor module for Arduino
* Turns ON a buzzer or you can control a motor or servo or any other action.
* Watch the video https://youtu.be/h_y1y6eUvIY
* *
Laser Sensor module for Arduino
Written by Ahmad Shamshiri for Robojax.com
on Feb 02, 2018 at 18:24 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.
* 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/>.
/*
/*
*/
// Laser Sensor code for Robojax.com
#define DETECT 2 // pin 2 for sensor
#define ACTION 8 // pin 8 for action to do something
void setup() {
Serial.begin(9600);
Serial.println("Robojax.com Laser Module Test");
pinMode(DETECT, INPUT);//define detect input pin
pinMode(ACTION, OUTPUT);//define ACTION output pin
// Laser sensor code for Robojax.com
}
void loop() {
// Laser Sensor code for Robojax.com
int detected = digitalRead(DETECT);// read Laser sensor
if( detected == HIGH)
{
digitalWrite(ACTION,HIGH);// set the buzzer ON
Serial.println("Detected!");
}else{
digitalWrite(ACTION,LOW); // Set the buzzer OFF
Serial.println("No laser");
// Laser Sensor code for Robojax.com
}
delay(200);
}
الأشياء التي قد تحتاجها
-
أمازون
الموارد والمراجع
لا توجد موارد حتى الآن.
ملفات📁
لا توجد ملفات متاحة.