الملخص
يقدم هذا المشروع سيارة روبوت تعليمية. يعتمد الروبوت على منصة Arduino ويقوم بمتابعة كائن معين والتوقف على مسافة 5 سم. يقدم هذا المشروع مقدمة عملية للتقنيات المبتكرة، مما يعزز الإبداع والذكاء لدى المتعلمين الصغار ويوجههم نحو التخصصات التقنية المستقبلية.
المقدمة
اليوم، تتقدم التكنولوجيا بسرعة كبيرة، ويصبح تعلم الروبوتات والبرمجة أمرًا بالغ الأهمية، خاصة للشباب الذين يرغبون في التحضير لمهن المستقبل. يقدم هذا المشروع سيارة روبوت تعليمية، مصممة لمساعدة الطلاب على التعلم بسهولة. يستخدم الروبوت أردوينو وأجهزة استشعار لمتابعة كائن معين والتوقف على مسافة 5 سم. من خلال هذا المشروع، يمكن للمتعلمين الصغار استكشاف المفاهيم الأساسية مثل استخدام أجهزة الاستشعار والتحكم في المحركات، مع تطوير إبداعهم. سيساعدهم ذلك في التحضير لمجالات مهمة مثل الروبوتات والذكاء الاصطناعي.
المواد المستخدمة
أردوينو: لوحة أردوينو UNO هي لوحة إلكترونية لتطوير النماذج السريعة حيث يمكن توصيل أجهزة الاستشعار (المداخل) والمحركات (المخارج). تتكون من عدة مكونات إلكترونية، وأهمها المتحكم الدقيق الذي يتيح تخزين وتنفيذ برنامج حاسوبي.
مستشعر الموجات فوق الصوتية (HC-SR04): يقيس هذا المستشعر المسافات بين الكائن المتحرك والعوائق التي تواجهه.
محرك العجلات:
هيكل السيارة الروبوتية:
مكونات إضافية (أسلاك، بطارية، إلخ):
التمثيل النصي لدائرة التوصيل:
- أردوينو UNO:
- دبوس 9 → متصل بـ Trig مستشعر الموجات فوق الصوتية (HC-SR04).
- دبوس 10 → متصل بـ Echo مستشعر الموجات فوق الصوتية.
- دبابيس 3، 4، 5، 6 → متصلة بوحدة التحكم بالمحرك (L298N) للتحكم في المحركين.
- مستشعر الموجات فوق الصوتية (HC-SR04):
- VCC → متصل بـ 5V من الأردوينو.
- GND → متصل بـ GND الأردوينو.
- Trig → دبوس 9 من الأردوينو.
- Echo → دبوس 10 من الأردوينو.
- وحدة التحكم بالمحرك (L298N):
- IN1، IN2، IN3، IN4 → متصلة بدبابيس 3، 4، 5، 6 من الأردوينو للتحكم بالمحركات.
- VCC → متصل بمصدر طاقة خارجي (بطارية).
- GND → متصل بـ GND الأردوينو والبطارية.
- المحركات (محركان للعجلات): كل محرك متصل بمخارج وحدة التحكم بالمحرك (L298N).
- مصدر الطاقة:
- البطارية الخارجية تغذي وحدة التحكم بالمحرك.
- يمكن تغذية الأردوينو بالبطارية أو عبر USB.
الترميز:
// إعلان عن دبابيس
const int trigPin = 9;
const int echoPin = 10;
const int motorPin1 = 3; // المحرك الأول
const int motorPin2 = 4; // المحرك الثاني
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
Serial.begin(9600); // لفتح شاشة المراقبة التسلسلية
}
void loop() {
// إرسال إشارة
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// قراءة مدة الإشارة العائدة
duration = pulseIn(echoPin, HIGH);
// حساب المسافة
distance = duration * 0.034 / 2;
// عرض المسافة
Serial.print("المسافة: ");
Serial.println(distance);
// التحكم بالمحركات بناءً على المسافة
if (distance < 5) {
// إذا كانت المسافة أقل من 5 سم، توقف المحركات
Serial.println("المسافة < 5 سم: إيقاف المحركات");
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
} else if (distance >= 5 && distance < 10) {
// إذا كانت المسافة بين 5 و 10 سم، تحرك المحركات
Serial.println("المسافة بين 5 و 10 سم: المحركات تعمل");
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
} else if (distance >= 10) {
// إذا كانت المسافة أكبر من أو تساوي 10 سم، توقف المحركات
Serial.println("المسافة >= 10 سم: إيقاف المحركات");
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
}
delay(100); // تأخير قصير للاستقرار
}