يمكن أن يكون الشروع في مشروع الروبوتات مثيرًا وتعليميًا ، خاصةً عندما تقوم ببناء شيء ملموس مثل روبوت متابع خط. إن استخدام Arduino ، أحد أكثر المتحكمين شعبية ، يجعل العملية متاحة حتى للمبتدئين. في هذا الدليل ، سنتخيلك عبر الخطوات لإنشاء روبوت بسيط يتبع الخط الذي يمكنه التنقل في مسار بشكل مستقل.
المواد التي ستحتاجها
- Arduino Uno - دماغ الروبوت الخاص بك.
- وحدة برنامج تشغيل المحرك (L298N) - للسيطرة على المحركات.
- محركات العاصمة مع عجلات - للحركة.
- هيكل - الإطار لعقد جميع المكونات.
- وحدة مستشعر الخط (على سبيل المثال ، QRE1113) - للكشف عن الخط.
- حزمة البطارية - مصدر الطاقة للروبوت.
- الأسلاك الطائر - للاتصالات.
- لوح - لاتصالات النماذج الأولية.
- البراغي والمكسرات والمسامير - لتجميع الهيكل.
الخطوة 1: تجميع الهيكل
يعمل الهيكل كأساس للروبوت الخاص بك. ابدأ بتوصيل محركات DC بالهيكل باستخدام البراغي والمكسرات. تأكد من أن المحركات ثابتة بشكل آمن لمنع أي حركة أثناء التشغيل. قم بتوصيل العجلات بأعمدة المحرك ووضع حزمة البطارية وأردوينو على الهيكل. تأكد من أن جميع المكونات تتناسب بشكل جيد وتسهل الوصول إلى الأسلاك.
الخطوة 2: توصيل المحركات
قم بتوصيل محركات DC بوحدة برنامج تشغيل المحرك (L298N). يعمل برنامج تشغيل المحرك كواجهة بين Arduino والمحركات ، مما يسمح لـ Arduino بالتحكم في سرعة المحرك والاتجاه دون أن يتم تحميله بشكل زائد.
// Connect motor A
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;
// Connect motor B
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;
void setup() {
// Motor A
pinMode(motorA_EN, OUTPUT);
pinMode(motorA_IN1, OUTPUT);
pinMode(motorA_IN2, OUTPUT);
// Motor B
pinMode(motorB_EN, OUTPUT);
pinMode(motorB_IN3, OUTPUT);
pinMode(motorB_IN4, OUTPUT);
}
الخطوة 3: توصيل مستشعر الخط
يكتشف مستشعر الخط التباين بين الخط والسطح. عادة ، تحتوي هذه المستشعرات على LEDs بالأشعة تحت الحمراء والوديدات الضوئية للكشف عن الأسطح العكسية. قم بتوصيل جهاز الاستشعار VCC و GND بـ Arduino’s 5V و GND على التوالي. سيتم توصيل دبابيس إخراج المستشعر بدبابيس Arduino الرقمية أو التناظرية بناءً على نوع المستشعر.
// Line sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;
void setup() {
pinMode(sensorLeft, INPUT);
pinMode(sensorRight, INPUT);
}
الخطوة 4: كتابة رمز Arduino
سوف يقرأ رمز Arduino قيم المستشعر والتحكم في المحركات وفقًا لذلك لمتابعة السطر. فيما يلي مثال بسيط على كيفية ظهور الكود:
// Define motor pins
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;
// Define sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;
// Threshold for line detection
const int threshold = 500;
void setup() {
// Initialize motor pins
pinMode(motorA_EN, OUTPUT);
pinMode(motorA_IN1, OUTPUT);
pinMode(motorA_IN2, OUTPUT);
pinMode(motorB_EN, OUTPUT);
pinMode(motorB_IN3, OUTPUT);
pinMode(motorB_IN4, OUTPUT);
// Initialize sensor pins
pinMode(sensorLeft, INPUT);
pinMode(sensorRight, INPUT);
// Start serial communication for debugging
Serial.begin(9600);
}
void loop() {
int leftSensor = analogRead(sensorLeft);
int rightSensor = analogRead(sensorRight);
Serial.print("Left: ");
Serial.print(leftSensor);
Serial.print(" | Right: ");
Serial.println(rightSensor);
if (leftSensor > threshold && rightSensor > threshold) {
// Move forward
moveForward();
}
else if (leftSensor < threshold && rightSensor > threshold) {
// Turn right
turnRight();
}
else if (leftSensor > threshold && rightSensor < threshold) {
// Turn left
turnLeft();
}
else {
// Stop
stopMovement();
}
}
void moveForward() {
digitalWrite(motorA_IN1, HIGH);
digitalWrite(motorA_IN2, LOW);
digitalWrite(motorB_IN3, HIGH);
digitalWrite(motorB_IN4, LOW);
analogWrite(motorA_EN, 200);
analogWrite(motorB_EN, 200);
}
void turnRight() {
digitalWrite(motorA_IN1, HIGH);
digitalWrite(motorA_IN2, LOW);
digitalWrite(motorB_IN3, LOW);
digitalWrite(motorB_IN4, LOW);
analogWrite(motorA_EN, 200);
analogWrite(motorB_EN, 0);
}
void turnLeft() {
digitalWrite(motorA_IN1, LOW);
digitalWrite(motorA_IN2, LOW);
digitalWrite(motorB_IN3, HIGH);
digitalWrite(motorB_IN4, LOW);
analogWrite(motorA_EN, 0);
analogWrite(motorB_EN, 200);
}
void stopMovement() {
digitalWrite(motorA_IN1, LOW);
digitalWrite(motorA_IN2, LOW);
digitalWrite(motorB_IN3, LOW);
digitalWrite(motorB_IN4, LOW);
analogWrite(motorA_EN, 0);
analogWrite(motorB_EN, 0);
}
الخطوة 5: تشغيل الروبوت
بمجرد إجراء جميع الاتصالات ، قم بتوصيل حزمة البطارية بأردوينو وسائق المحرك. تأكد من أن القطبية صحيحة لمنع أي ضرر للمكونات. إنها ممارسة جيدة لاختبار الاتصالات مع مقياس متعدد قبل التشغيل.
الاختبار والمعايرة
بعد تشغيله ، ضع روبوتك على سطح بخط واضح (على سبيل المثال ، شريط أسود على ورق أبيض). لاحظ كيف يتصرف ويقوم بإجراء التعديلات اللازمة. قد تحتاج إلى تعديل عتبة المستشعر أو ضبط السرعة عن طريق تغيير قيم PWM في الكود لتحقيق الأداء الأمثل.
نصائح للنجاح
- ضمان اتصالات مستقرة: الأسلاك السائبة يمكن أن تسبب سلوك متقطع. استخدم لوحًا للنماذج الأولية والنظر في اتصالات اللحام لإعداد دائم.
- استخدام أجهزة استشعار الجودة: يمكن لمستشعرات الخط الموثوقة تحسين أداء الروبوت بشكل كبير.
- معايرة أجهزة استشعارك: يمكن أن تؤثر الأسطح المختلفة وظروف الإضاءة على قراءات المستشعرات. معايرة عتباتك وفقًا لذلك.
- تحسين الكود: الرمز الفعال يضمن أوقات الاستجابة السريعة. تأكد من عدم وجود تأخيرات غير ضرورية في حلقتك.
التحسينات والمزيد من التعلم
بمجرد قيامك بنجاح ببناء روبوت أساسي يتبع الخط ، فكر في إضافة المزيد من الميزات لتعزيز قدراته:
- اكتشاف التقاطع: تمكين الروبوت الخاص بك لاتخاذ القرارات في الوصلات.
- التحكم في السرعة: تنفيذ تعديلات السرعة الديناميكية بناءً على إدخال المستشعر.
- السيطرة اللاسلكية: أضف وحدات Bluetooth أو Wi-Fi للتحكم في الروبوت عن بعد.
- تجنب العقبات: دمج أجهزة الاستشعار بالموجات فوق الصوتية للتنقل حول العقبات.
يعد بناء روبوت متابع خط مع Arduino وسيلة رائعة للغوص في عالم الروبوتات والأنظمة المضمنة. إنه يعلمك مفاهيم أساسية مثل تكامل المستشعرات ، والتحكم في المحركات ، وصنع القرار في الوقت الفعلي. مع الصبر والتجريب ، يمكنك توسيع هذا المشروع الأساسي إلى روبوت أكثر تعقيدًا وقدرًا. بناء سعيد!