📋 ملخص سريع
في هذا البرنامج التعليمي، سوف تتعلم كيفية بناء روبوت يتبع الخطوط باستخدام جهازي استشعار للأشعة تحت الحمراء KY-033، وArduino Uno، وAdafruit Motor Shield. ستقوم أيضًا بطباعة هيكل مخصص ثلاثي الأبعاد، وتوصيل كل شيء، وكتابة منطق التوجيه القائم على العتبة. ولهذا السبب، فهو مشروع قوي يتبع الخط الأول قبل الانتقال إلى التحكم PID.
في هذا الخط KY-033 الذي يتبع البرنامج التعليمي للروبوت Arduino، ستقوم بتصميم وطباعة ثلاثية الأبعاد وتجميع وتوصيل وبرمجة روبوت يتبع الخط من البداية. يستخدم الروبوت جهازي استشعار لتتبع الخطوط بالأشعة تحت الحمراء KY-033 وArduino Uno مع درع محرك لتتبع خط أبيض على سطح مظلم. ولهذا السبب، يعد هذا مشروعًا رائعًا إذا كنت ترغب في استخدام الروبوتات وأجهزة الاستشعار وبرمجة Arduino.

على وجه الخصوص، يركز هذا المشروع على إعداد المستشعر KY-033 ويغطي التصميم ثلاثي الأبعاد والتجميع الميكانيكي والأسلاك وبرمجة التحكم. بحلول نهاية هذا المشروع، سيكون لديك روبوت فعال لتتبع الخطوط من Arduino وخبرة كافية للتعامل مع التصميمات الأكثر تقدمًا.
الخطوة التالية: بمجرد الانتهاء من بناء المبتدئين هذا، تابع مع خط متقدم يتبع البرنامج التعليمي للروبوت باستخدام مستشعر TCS34725 RGB والتحكم PID للحصول على دقة أفضل وتتبع أكثر سلاسة على المسارات المعقدة.
ما ستتعلمه
من خلال إكمال هذا البرنامج التعليمي لمتابع الخط KY-033، سوف تتعلم:
- أولاً، كيف تقوم مستشعرات الأشعة تحت الحمراء KY-033 باكتشاف خط على الأرض ومن ثم إخراج الإشارات الرقمية إلى Arduino
- ثانيًا، كيف يعمل Arduino Uno وMotor Shield Rev3 معًا لتشغيل محركين يعملان بالتيار المستمر
- ثالثًا، كيف يستخدم الروبوت قراءات المستشعر اليسرى واليمنى ليقرر ما إذا كان سيتجه بشكل مستقيم أو يسارًا أو يمينًا أو يبحث عن الخط
- كيفية تصميم هيكل الروبوت وحاملات المكونات والطباعة ثلاثية الأبعاد وتجميعه
- كيفية توصيل جميع الأجهزة الإلكترونية بما في ذلك المحركات وأجهزة الاستشعار والبطارية
- كيفية التحميل ومن ثم فهم الكود التالي لسطر Arduino الكامل
- كيفية اختبار الروبوت وضبطه للحصول على خط ثابت وموثوق
كيف يعمل الروبوت
قبل أن نبدأ في البناء، من المفيد أن نفهم كيف يعمل هذا الخط الذي يتبع مشروع الروبوت Arduino على مستوى عالٍ. في الأساس، يستخدم الروبوت التوجيه التفاضلي والكشف عن خط الأشعة تحت الحمراء.
اردوينو أونو (الدماغ)
إن أردوينو أونو هو وحدة التحكم الدقيقة التي تقرأ مدخلات المستشعر، وتقوم بتشغيل منطق القرار، وترسل إشارات التحكم في المحرك. إذا كنت جديدًا على Arduino، فإن البرنامج التعليمي لأساسيات برمجة الأردوينو سيكون موقع OmArTronics أيضًا مكانًا جيدًا للبدء.
اردوينو موتور شيلد Rev3 (سائق المحرك)
يقع Motor Shield أعلى Arduino Uno ويتعامل مع الطاقة اللازمة لتشغيل محركي التيار المستمر. نظرًا لأنه يتعامل مع الطاقة بشكل منفصل، فإنه يتيح لـ Arduino التحكم في اتجاه كل محرك وسرعته بشكل مستقل من خلال دبابيس الاتجاه وإشارات PWM (تعديل عرض النبض). لمزيد من التفاصيل حول مفاهيم القيادة الآلية، راجع أيضًا دليل تشغيل المحرك L298N على OmArTronics.
مستشعران لتتبع الخط KY-033 (العيون)
تحتوي كل وحدة استشعار KY-033 على مصباح LED بالأشعة تحت الحمراء وصمام ثنائي ضوئي. يضيء مصباح LED IR الضوء إلى الأسفل على السطح. يعكس السطح الأبيض أو ذو اللون الفاتح المزيد من ضوء الأشعة تحت الحمراء إلى المستشعر، بينما يمتصه السطح الداكن. يقوم المستشعر بإخراج رقم عالي (1) عندما يكتشف سطحًا عاكسًا (خفيفًا) ورقمًا منخفضًا (0) عندما يكتشف سطحًا غير عاكس (داكن). نظرًا لأن هذا المشروع يتبع خطًا أبيض على خلفية داكنة، فإن المستشعرات تقرأ "عالية" عندما تكون فوق الخط.
منطق التوجيه
يمتلك الروبوت عجلتين مستقلتين، واحدة على كل جانب، بالإضافة إلى عجلة سلبية في الخلف. من خلال تغيير سرعة واتجاه المحركين الأيسر والأيمن بناءً على قراءتي المستشعرين، يوجه الروبوت نفسه على طول الخط:
- كلا المستشعرين على الخط (عالٍ، عالي): ونتيجة لذلك، يتحرك الروبوت للأمام بشكل مستقيم.
- المستشعر الأيسر على الخط، المستشعر الأيمن مغلق (مرتفع، منخفض): نظرًا لأن الروبوت قد انحرف إلى اليمين، فإنه يستدير إلى اليسار للتصحيح.
- المستشعر الأيمن على الخط، المستشعر الأيسر مغلق (منخفض، مرتفع): نظرًا لأن الروبوت قد انحرف إلى اليسار، فإنه يتحول إلى اليمين للتصحيح.
- كلا المستشعرين خارج الخط (منخفض، منخفض): يتم فقدان الخط، فيدور الروبوت في مكانه للبحث عن الخط.
من الناحية العملية، يعمل هذا الأسلوب بشكل جيد مع المنحنيات اللطيفة والقطاعات المستقيمة. ومع ذلك، من أجل المنعطفات الأكثر حدة والتحكم الأكثر سلاسة، فإن إصدار TCS34725 + PID هي خطوة تالية جيدة.
قائمة المواد
فيما يلي القائمة الكاملة للمكونات لهذا الخط KY-033 الذي يتبع الروبوت. في الواقع، معظم هذه الأجزاء هي مكونات شائعة لمجموعة أدوات Arduino.
| المكوّن | الكمية | مطلوب | الغرض | الملاحظات |
|---|---|---|---|---|
| أردوينو أونو | 1 | نعم | متحكم لمنطق التحكم | تعمل أي لوحة متوافقة مع Uno |
| درع المحرك Arduino Motor Shield Rev3 | 1 | نعم | يقود محركات التيار المستمر ويوزع الطاقة | أكوام مباشرة على أونو |
| KY-033 مستشعر تتبع الخط | 2 | نعم | يكتشف الخط باستخدام انعكاس الأشعة تحت الحمراء | حساسية قابلة للتعديل عبر مقياس الجهد الموجود على متن الطائرة |
| محرك DC مع علبة التروس | 2 | نعم | يقود العجلات اليسرى واليمنى | محرك تروس هواية قياسي 3-6 فولت |
| العجلات | 2 | نعم | توفير التنقل | يجب أن تناسب رمح المحرك |
| دعم عجلة العجلات | 1 | نعم | نقطة التوازن الخلفية | عجلة كروية أو عجلة دوارة صغيرة |
| هيكل مطبوع ثلاثي الأبعاد | 1 | نعم | الجسم الرئيسي يضم جميع المكونات | ملفات STL متاحة على Cults3D و متجر أومارترونيكس |
| حامل مستشعر مطبوع ثلاثي الأبعاد | 1 | نعم | مواقف أجهزة الاستشعار KY-033 في الارتفاع الصحيح | مصممة لهذا المشروع |
| حامل اردوينو مطبوع ثلاثي الأبعاد | 1 | نعم | يتصاعد اردوينو والدرع بشكل آمن | مصممة لهذا المشروع |
| أسلاك التوصيل | العديد من | نعم | قم بتوصيل المستشعرات والمحركات بالاردوينو | يوصى باستخدام نوع الدبوس إلى المقبس |
| مسامير وإدراج مترابطة | العديد من | نعم | تأمين المحركات وحاملي الهيكل | مسامير M3 نموذجية |
| البطارية (7.4 فولت ليبو أو 9 فولت) | 1 | نعم | يعمل على تشغيل الاردوينو والمحركات | يوصى بـ 7.4V LiPo للحصول على طاقة ثابتة |
| مفتاح الطاقة | 1 | اختياري | سهولة التحكم في التشغيل/الإيقاف | مفتاح تبديل مضمّن على سلك البطارية |
الخطوة 1: تصميم الروبوت في Autodesk Inventor
أولاً، قمنا بتصميم هيكل الروبوت وحاملات المكونات في Autodesk Inventor بحيث تتلاءم جميع الأجزاء معًا بشكل آمن في تصميم مضغوط. بشكل عام، يتكون التصميم من ثلاثة أجزاء مطبوعة بتقنية ثلاثية الأبعاد:
- الهيكل: القاعدة الرئيسية التي تحتوي على محركات التيار المستمر وأجهزة الاستشعار ولوحة الأردوينو والبطارية.
- حامل الاستشعار: قم بوضع المستشعرين KY-033 على الارتفاع والتباعد الصحيحين، بحيث يكون اكتشاف الخط دقيقًا.
- حامل اردوينو: يتم تركيب Arduino Uno وMotor Shield على الهيكل مع منافذ يمكن الوصول إليها للبرمجة والأسلاك.
يمكنك تنزيل ملفات STL لجميع الأجزاء المطبوعة ثلاثية الأبعاد من Cults3D أو من لدينا متجر أومارترونيكس. إذا كنت جديدًا في مجال الطباعة ثلاثية الأبعاد، فإن مقدمة للطباعة ثلاثية الأبعاد يعد الدليل على OmArTronics نقطة انطلاق جيدة.
الخطوة 2: الطباعة ثلاثية الأبعاد للمكونات
بمجرد الانتهاء من التصميم، قمنا بطباعة المكونات ثلاثية الأبعاد على Creality Ender 3. بشكل عام، يعمل PLA بشكل جيد مع هذا التصميم لأنه يطبع بسهولة وقوي بما يكفي للقيام بهذه المهمة. ومع ذلك، يعتبر ABS بديلاً إذا كنت بحاجة إلى مقاومة أعلى للحرارة. بمجرد الانتهاء من الطباعة، قم بتنظيف أي مواد دعم، وقم بإزالة الحواف الخشنة، وتأكد أيضًا من أن جميع فتحات المسامير وميزات التثبيت بالحجم الصحيح قبل البدء في التجميع.
الخطوة 3: تجميع الروبوت
بمجرد الانتهاء من تجهيز جميع الأجزاء المطبوعة والمشتراة، قم بتجميع خط KY-033 الذي يتبع الروبوت بهذا الترتيب.
3.1 تركيب المحركات والعجلات
- أولاً، قم بتثبيت محركي التيار المستمر بالهيكل باستخدام البراغي والإدخالات الملولبة. تأكد أيضًا من تثبيت كل محرك بثبات ومحاذاته.
- ثم اضغط على العجلات على أعمدة المحرك وتأكد من أنها تدور بحرية دون التذبذب.
- بعد ذلك، قم بتركيب عجلة الدعم في الجزء الخلفي من الهيكل لتحقيق التوازن.
3.2 تركيب الإلكترونيات
- أولاً، قم بتوصيل Arduino Uno بحامل Arduino وقم بتثبيته على الهيكل.
- ثم قم بتكديس Motor Shield Rev3 على Arduino Uno.
- بعد ذلك، قم بتركيب المستشعرين KY-033 في حامل المستشعر، ثم قم بتثبيت الحامل بالجانب السفلي الأمامي من الهيكل. ونظرًا لأن أجهزة الاستشعار تحتاج إلى رؤية السطح، فيجب أن تشير إلى الأسفل نحو الأرض.
- وأخيرًا، ضع البطارية بشكل آمن داخل الهيكل.
الخطوة 4: توصيل الإلكترونيات
في هذه المرحلة، الأسلاك المناسبة لها أهمية كبيرة. يسرد الجدول أدناه كل الاتصالات المطلوبة. استخدم أيضًا مخطط الأسلاك كمرجع مرئي.

اتصالات المحرك (عبر Motor Shield)
| المحرك | طرف توصيل درع المحرك | اردوينو دبوس (عبر الدرع) | وظيفة |
|---|---|---|---|
| محرك DC الأيسر | قناة الإخراج | DIR_L = الدبوس 12، PWM_L = الدبوس 3 | اتجاه وسرعة المحرك الأيسر |
| محرك DC الصحيح | إخراج القناة ب | DIR_R = الدبوس 13، PWM_R = الدبوس 11 | اتجاه وسرعة المحرك الصحيح |
KY-033 اتصالات الاستشعار
| جهاز استشعار KY-033 | دبوس الاستشعار | دبوس الأردوينو | وظيفة |
|---|---|---|---|
| الاستشعار الأيسر | S (إشارة) | دبوس رقمي 2 | يقرأ كشف الخط الأيسر (عالية/منخفضة) |
| الاستشعار الأيسر | VCC | 5V | مزود الطاقة |
| الاستشعار الأيسر | GND | GND | أرضي |
| الاستشعار الصحيح | S (إشارة) | دبوس رقمي 4 | يقرأ كشف الخط الصحيح (عالية/منخفضة) |
| الاستشعار الصحيح | VCC | 5V | مزود الطاقة |
| الاستشعار الصحيح | GND | GND | أرضي |
اتصالات الطاقة والبطارية
| الاتصال | من | To | الملاحظات |
|---|---|---|---|
| البطارية إيجابية | بطارية + | Motor Shield VIN (أو مقبس برميل Arduino) | يوفر الطاقة لاردوينو والمحركات |
| البطارية سلبية | البطارية - | درع المحرك GND | أرضية مشتركة |
| مفتاح الطاقة (اختياري) | مضمنة على البطارية + سلك | — | تبديل التبديل لسهولة التشغيل/الإيقاف |
تلميح الطاقة: تعمل بطارية LiPo بقوة 7.4 فولت بشكل أفضل لأنها توفر جهدًا ثابتًا لكل من Arduino والمحركات. ستعمل البطارية القلوية بقدرة 9 فولت لإجراء اختبارات قصيرة، ولكنها تستنزف بسرعة تحت حمل المحرك وقد تتسبب في سلوك غير متناسق. تحقق أيضًا من القطبية جيدًا قبل توصيل البطارية.
الخطوة 5: فهم كشف الخط KY-033
ومع ذلك، قبل كتابة أي كود، دعونا نلقي نظرة على كيفية اكتشاف إعداد مستشعر Arduino KY-033 للخط.
في الأساس، تحتوي كل وحدة KY-033 على باعث للأشعة تحت الحمراء وجهاز استقبال. يرتد ضوء الأشعة تحت الحمراء عن السطح الموجود أسفل المستشعر. السطح ذو اللون الفاتح (الأبيض) ينعكس بقوة، بينما السطح الداكن يمتص معظم الضوء. ثم تقوم دائرة المقارنة الموجودة على متن الطائرة بتحويل ذلك إلى مخرج رقمي:
- عالية (1): يوجد المستشعر فوق سطح عاكس (أبيض/خفيف). في هذا المشروع، هذا يعني أن المستشعر على الخط.
- منخفض (0): يوجد المستشعر فوق سطح غير عاكس (مظلم). وهذا يعني أن المستشعر خارج الخط.
مهم: يستخدم هذا المشروع أ خط أبيض على خلفية داكنة. يتبع منطق الكود وتفسير المستشعر خلال هذا البرنامج التعليمي هذا الإعداد. ومع ذلك، إذا كنت تريد اتباع خط داكن على خلفية فاتحة بدلاً من ذلك، فستحتاج إلى عكس المنطق في الكود (تبديل الشروط العالية والمنخفضة).
تحتوي كل وحدة KY-033 أيضًا على مقياس جهد صغير لضبط حساسية الكشف. على وجه الخصوص، يكون هذا مفيدًا عند ضبط المستشعر بحيث يميز بشكل موثوق بين الخط والخلفية عند ارتفاع تشغيل الروبوت الخاص بك.
الخطوة 6: برمجة الروبوت الذي يتبع الخط
مستودع GitHub: التعليمات البرمجية والملفات الكاملة
يوجد أدناه مخطط Arduino الكامل لخط KY-033 الذي يتبع الروبوت، متبوعًا بشرح مفصل لكل قسم. إذا كنت جديدًا على كود Arduino، قم بمراجعة أساسيات برمجة الأردوينو البرنامج التعليمي أولا.

رسم أردوينو تخطيطي كامل
/**
* Author: Omar Draidrya
* Date: 2024/12/06
* Line-Following Robot with KY-033.
*/
// Motor control pins
#define DIR_L 12 // Left motor direction
#define DIR_R 13 // Right motor direction
#define PWM_L 3 // Left motor speed (PWM)
#define PWM_R 11 // Right motor speed (PWM)
// Sensor pins
int sensorLeft = 2; // Left sensor
int sensorRight = 4; // Right sensor
void setup() {
// Configure motor pins as outputs
pinMode(DIR_L, OUTPUT);
pinMode(DIR_R, OUTPUT);
pinMode(PWM_L, OUTPUT);
pinMode(PWM_R, OUTPUT);
// Configure sensor pins as inputs
pinMode(sensorLeft, INPUT);
pinMode(sensorRight, INPUT);
// Serial communication for debugging
Serial.begin(9600);
}
void loop() {
// Read sensor values
int left = digitalRead(sensorLeft);
int right = digitalRead(sensorRight);
// Output sensor data (debugging)
Serial.print("Sensor Left: ");
Serial.print(left);
Serial.print(" | Sensor Right: ");
Serial.println(right);
// Control logic
if (left == 1 && right == 1) {
// Drive straight
controlMotors(HIGH, HIGH, 105, 105);
} else if (left == 1 && right == 0) {
// Turn left
controlMotors(HIGH, LOW, 105, 85);
} else if (left == 0 && right == 1) {
// Turn right
controlMotors(LOW, HIGH, 85, 105);
} else {
// Line lost – stop motors
// Rotate in place to find the line
controlMotors(HIGH, LOW, 70, 70); // Left motor forward, right motor backward
// delay(500); // Brief rotation
// controlMotors(LOW, LOW, 0, 0);
}
}
// Function to control motors
void controlMotors(int directionL, int directionR, int speedL, int speedR) {
digitalWrite(DIR_L, directionL);
digitalWrite(DIR_R, directionR);
analogWrite(PWM_L, speedL);
analogWrite(PWM_R, speedR);
}
يوجد أدناه تفصيل تفصيلي للكود حتى تتمكن من فهم كيفية عمل كل جزء من الروبوت الذي يتبع الخط المعتمد على المستشعر KY-033.
6.1 إعداد دبوس المحرك
#define DIR_L 12 // اتجاه المحرك الأيسر #define DIR_R 13 // اتجاه المحرك الأيمن #define PWM_L 3 // سرعة المحرك الأيسر (PWM) #define PWM_R 11 // سرعة المحرك اليمنى (PWM)
تتحكم هذه المسامير الأربعة في المحركين من خلال Motor Shield. دير_L و DIR_R اضبط اتجاه دوران المحركين الأيسر والأيمن على التوالي (عالٍ = للأمام، منخفض = للخلف على هذا الدرع). PWM_L و PWM_R التحكم في سرعة كل محرك باستخدام تعديل عرض النبضة، حيث تتراوح القيم من 0 (متوقف) إلى 255 (السرعة الكاملة).
6.2 إعداد دبوس الاستشعار
int SensorLeft = 2; // المستشعر الأيسر int SensorRight = 4; // المستشعر الصحيح
يتصل المستشعران KY-033 بالدبابيس الرقمية 2 و4. وبعبارة أخرى، يقوم كل مستشعر بإخراج HIGH (1) عندما يكتشف الخط الأبيض ومنخفض (0) عندما يكتشف الخلفية المظلمة.
6.3 وظيفة الإعداد ().
void setup() {
pinMode(DIR_L, OUTPUT);
pinMode(DIR_R, OUTPUT);
pinMode(PWM_L, OUTPUT);
pinMode(PWM_R, OUTPUT);
pinMode(sensorLeft, INPUT);
pinMode(sensorRight, INPUT);
Serial.begin(9600);
}
تعمل وظيفة الإعداد مرة واحدة عند بدء تشغيل Arduino. ثم يقوم بعد ذلك بتكوين جميع دبابيس التحكم في المحرك الأربعة كمخرجات وكلا دبابيس المستشعر كمدخلات. بالإضافة إلى ذلك، فإنه يقوم بتهيئة الاتصال التسلسلي عند 9600 باود بحيث يمكنك عرض قراءات المستشعر في Arduino Serial Monitor لتصحيح الأخطاء.
6.4 إخراج التصحيح التسلسلي
Serial.print("المستشعر الأيسر:");
Serial.print(left);
Serial.print(" | المستشعر الأيمن: ");
Serial.println(يمين);
يقوم الكود بطباعة قراءات المستشعر على الشاشة التسلسلية في كل دورة حلقة. وهذا مفيد حقًا أثناء الاختبار. لذلك، افتح Arduino Serial Monitor (Tools > Serial Monitor) لمشاهدة القيم المباشرة. ونتيجة لذلك، يجب أن ترى قيم 0 و1 متناوبة أثناء تحريك المستشعرات فوق الخط والخلفية. إذا أظهر كلا المستشعرين دائمًا نفس القيمة، فتحقق من ارتفاع الأسلاك والمستشعر.
6.5 قراءة مستشعر الحلقة الرئيسية
int اليسار = قراءة رقمية(مستشعر اليسار); إلى اليمين = قراءة رقمية(مستشعر لليمين);
في بداية كل دورة حلقة، يقرأ Arduino الحالة الرقمية الحالية لكلا المستشعرين KY-033. المتغير غادر يحمل القراءة من المستشعر الأيسر (دبوس 2) و يمين يحمل القراءة من المستشعر الأيمن (دبوس 4). بمعنى آخر، تكون هذه القيم إما 1 (على السطر) أو 0 (خارج السطر).
6.6 منطق القرار
if (left == 1 && right == 1) {
controlMotors(HIGH, HIGH, 105, 105);
} else if (left == 1 && right == 0) {
controlMotors(HIGH, LOW, 105, 85);
} else if (left == 0 && right == 1) {
controlMotors(LOW, HIGH, 85, 105);
} else {
controlMotors(HIGH, LOW, 70, 70);
}
هذا هو منطق التوجيه الأساسي. واستنادًا إلى المجموعات الأربع الممكنة لقراءتي المستشعر، يقرر الروبوت ما يجب فعله:
- كلا المستشعرين مرتفعين (1، 1)، يقودان بشكل مستقيم: نظرًا لأن كلا المستشعرين على الخط، فإن كلا المحركين يعملان للأمام بنفس السرعة (105)، لذلك يتحرك الروبوت للأمام بشكل مستقيم.
- اليسار عالي، اليمين منخفض (1، 0)، انعطف يسارًا: لا يزال المستشعر الأيسر على الخط ولكن المستشعر الأيمن قد تحرك بعيدًا، لذا انجرف الروبوت إلى اليمين. لذلك يتحرك المحرك الأيسر للأمام (105) بينما يتحرك المحرك الأيمن للخلف بسرعة أقل (85)، مما يوجه الروبوت إلى اليسار.
- اليسار منخفض، اليمين مرتفع (0، 1)، انعطف يمينًا: هذه هي الحالة المعاكسة: المستشعر الأيمن على الخط لكن المستشعر الأيسر انحرف. وبالمثل، يتحرك المحرك الأيمن إلى الأمام (105) بينما يتحرك المحرك الأيسر إلى الخلف (85)، فيصحح إلى اليمين.
- كلا المستشعرين منخفض (0، 0)، الخط مفقود، ابحث: نظرًا لعدم اكتشاف أي من المستشعرين للخط، يدور الروبوت في مكانه (المحرك الأيسر للأمام، المحرك الأيمن للخلف بسرعة 70) للبحث عن الخط. بمجرد أن يلتقط المستشعر الخط مرة أخرى، يتم استئناف التوجيه العادي.
6.7 وظيفة controlMotors()
void controlMotors(int directionL, int directionR, int speedL, int speedR) {
digitalWrite(DIR_L, directionL);
digitalWrite(DIR_R, directionR);
analogWrite(PWM_L, speedL);
analogWrite(PWM_R, speedR);
}
تعمل هذه الوظيفة المساعدة على تبسيط التحكم في المحركات عبر الكود. يستغرق الأمر أربع معلمات: الاتجاه (مرتفع أو منخفض) والسرعة (0-255) لكل محرك. ويكتب الاتجاه إلى دير_L و DIR_R دبابيس والسرعة إلى PWM_L و PWM_R دبابيس. نظرًا لأن كل أمر حركة في منطق القرار يستدعي هذه الوظيفة الفردية، يظل الكود نظيفًا وسهل التعديل.
الخطوة 7: كيفية اختبار الروبوت وضبطه
في هذه المرحلة، بعد تجميع كل شيء وتوصيله وبرمجته، حان الوقت لاختبار خط الروبوت KY-033 الخاص بك. شريط لاصق أبيض بعرض 50 مم على سطح داكن (مثل سطح الطاولة الداكن أو لوحة الملصقات الداكنة) يعمل بشكل جيد كمسار اختبار.
7.1 إعداد مسار الاختبار
ابدأ بخط مستقيم بسيط من الشريط الأبيض، بطول حوالي 1 إلى 2 متر. بمجرد أن يتبع الروبوت خطًا مستقيمًا بشكل موثوق، قم بإضافة منحنيات لطيفة. تجنب المنعطفات الحادة بزاوية 90 درجة في البداية. على الرغم من أن هذا الأسلوب يتعامل مع المنحنيات الناعمة، إلا أنه قد يواجه صعوبة في التعامل مع الزوايا الضيقة جدًا.
7.2 موضع المستشعر وارتفاعه
ومن الناحية المثالية، ينبغي تركيب أجهزة الاستشعار KY-033 على ارتفاع يتراوح بين 5 إلى 15 ملم فوق سطح الأرض وتباعدها بشكل أوسع قليلاً من عرض الخط. على سبيل المثال، إذا كانت أجهزة الاستشعار عالية جدًا، فقد لا تميز الخط عن الخلفية. وبالمثل، إذا كانت قريبة جدًا من بعضها البعض، فقد لا يدور الروبوت بسرعة كافية على المنحنيات.
7.3 الاختبار الأول: فحص المراقبة التسلسلية
قبل تشغيل الروبوت على المسار، قم بتوصيله بالكمبيوتر عبر USB. ثم افتح Arduino Serial Monitor وحرك الروبوت يدويًا فوق الخط. ثم تحقق من أن كل مستشعر يُظهر درجة عالية (1) عند وجوده فوق الشريط الأبيض ومنخفض (0) عند وجوده فوق السطح الداكن. ومع ذلك، إذا رأيت قراءات معكوسة أو غير متناسقة، فاضبط مقياس الجهد الموجود على اللوحة KY-033 أو تحقق من الأسلاك الخاصة بك.
7.4 أول تشغيل على المسار
بعد ذلك، ضع الروبوت على المسار مع وضع كلا المستشعرين في المنتصف فوق الخط الأبيض. ثم قم بتشغيله وشاهد ما يحدث. إذا كان كل شيء على ما يرام، فيجب على الروبوت أن يتحرك للأمام على طول الخط، ويصحح بلطف إلى اليسار واليمين بينما تكتشف المستشعرات الحواف.
7.5 ضبط سرعات المحرك
على سبيل المثال، إذا تحرك الروبوت بسرعة كبيرة وتجاوز المنعطفات، فقم بتقليل قيم السرعة في الكود (القيمتان 105 و85 في استدعاءات controlMotors). من ناحية أخرى، إذا تحرك ببطء شديد وتوقف، قم بزيادة عددها. بشكل عام، التغييرات الصغيرة من 5 إلى 10 وحدات في المرة الواحدة تعمل بشكل أفضل. كما يمكن ضبط سرعة الخط المستقيم وسرعة الدوران بشكل مستقل.
7.6 ضبط سلوك البحث
عندما يفقد كلا المستشعرين الخط، يدور الروبوت في مكانه بسرعة 70. إذا كان يدور بقوة كبيرة ويتجاوز الخط، فقم بخفض هذه القيمة. من ناحية أخرى، إذا كان يدور ببطء شديد ولم يتمكن من العثور على الخط، فقم بزيادته. بالإضافة إلى ذلك، يمكنك إلغاء تعليق أسطر التأخير والتوقف في الكود لإضافة توقف مؤقت قصير بعد التدوير، مما يساعد في بعض المسارات.
7.7 تحسين نعومة الدوران
لمزيد من تحسين التعامل، حاول تقليل فرق السرعة بين المحركين أثناء التصحيح (على سبيل المثال، استخدم 100 و90 بدلاً من 105 و85). تؤدي الاختلافات الأصغر إلى إنتاج منعطفات ألطف، والتي تعمل بشكل جيد على المنحنيات العريضة، بينما تنتج الاختلافات الأكبر تصحيحات أكثر وضوحًا، وهي أفضل للمسارات الأكثر إحكامًا.
استكشاف الأخطاء وإصلاحها
إذا كان الروبوت الذي يتبع الخط الخاص بك لا يعمل كما هو متوقع، فتحقق من المشكلات الشائعة التالية أدناه.
مشاكل الاستشعار والكشف
| مشكلة | السبب المحتمل | حل |
|---|---|---|
| يدور الروبوت في مكانه بشكل مستمر | يقرأ كلا المستشعرين دائمًا LOW (لم يتم اكتشاف الخط) | تحقق من ارتفاع المستشعر (يجب أن يكون 5-15 ملم فوق سطح الأرض). اضبط مقياس الجهد KY-033. تأكد من أن الخط أبيض/فاتح اللون على خلفية داكنة. |
| لا يكتشف الروبوت الخط على الإطلاق | أسلاك المستشعر غير صحيحة أو أن المستشعر معيب | تحقق من توصيل أسلاك الإشارة بالطرفين 2 و4. تحقق من توصيلات VCC وGND. اختبر كل مستشعر على حدة باستخدام جهاز Serial Monitor. |
| يعطي كلا المستشعرين دائمًا نفس القراءة | أجهزة الاستشعار قريبة جدًا من بعضها البعض أو مرتفعة جدًا عن سطح الأرض | ضع المستشعرات على مسافة أوسع قليلاً من عرض الخط. قم بخفض حامل المستشعر بالقرب من الأرض. |
| يتبع الروبوت بشكل سيء المنحنيات | فرق سرعة المحرك أثناء المنعطفات صغير جدًا أو كبير جدًا | اضبط قيم السرعة في ظروف الدوران. جرب مجموعات مختلفة من السرعات الأمامية والخلفية. |
| المحركات سريعة جدًا أو بطيئة جدًا | لا يتم ضبط قيم سرعة PWM لمحركاتك وجهد البطارية | قم بزيادة أو تقليل قيم السرعة (105، 85، 70) بزيادات صغيرة قدرها 5-10. |
قضايا المحرك والطاقة
| مشكلة | السبب المحتمل | حل |
|---|---|---|
| سلوك غير مستقر أو حركات غير منتظمة | ارتفاع المستشعر غير متناسق أو السطح غير متساوٍ | تأكد من أن أجهزة الاستشعار مستوية وعلى ارتفاع ثابت. استخدم سطحًا مستوًا للاختبار. تحقق من وجود أسلاك فضفاضة. |
| الروبوت لا يتحرك على الإطلاق | البطارية فارغة، أو توصيلات الطاقة غير صحيحة، أو أن Motor Shield غير مثبت بشكل صحيح | تحقق من جهد البطارية. تحقق من أن Motor Shield مثبت بالكامل على Arduino. تحقق من اتصالات محطة المحرك. |
| محرك واحد يعمل ولكن الآخر لا يعمل | مشكلة الأسلاك على قناة محرك واحدة | تحقق من التوصيلات الطرفية للمحرك على Motor Shield. قم بتبديل المحركات لتحديد ما إذا كانت المشكلة هي المحرك أم قناة الدرع. |
| يتحرك الروبوت إلى الخلف بدلاً من الأمام | يتم عكس أسلاك المحرك | قم بتبديل السلكين على طرف المحرك المتأثر، أو قم بتغيير قيمة الاتجاه (عالية/منخفضة) في الكود. |
لا تزال تواجه مشاكل؟
ومع ذلك، إذا لم ينجح أي من الحلول المذكورة أعلاه، فافتح Arduino Serial Monitor وتحقق من قيم المستشعر الأولية أثناء تحريك الروبوت يدويًا فوق الخط. يكشف هذا عادةً عن أخطاء في الأسلاك أو مشكلات تتعلق بالحساسية والتي قد يكون من الصعب اكتشافها. يمكنك أيضًا زيارة مستودع GitHub للحصول على آخر تحديثات التعليمات البرمجية والملاحظات الإضافية.
الأسئلة الشائعة (FAQ)
KY-033 عبارة عن وحدة استشعار رقمية لتتبع خط الأشعة تحت الحمراء. يحتوي على مصباح LED يعمل بالأشعة تحت الحمراء ينبعث منه ضوء الأشعة تحت الحمراء وصمام ثنائي ضوئي يكتشف الضوء المنعكس. عند وضعه فوق سطح فاتح اللون، ينعكس ضوء الأشعة تحت الحمراء للخلف ويخرج المستشعر إشارة عالية (1). يمتص السطح الداكن الضوء، لذلك يصدر المستشعر مستوى منخفض (0). يسمح لك مقياس الجهد الموجود على متن الطائرة بضبط حساسية الكشف.
نعم، يعمل KY-033 على كلا الإعدادين. يستهدف الكود الموجود في هذا البرنامج التعليمي خطًا أبيض على خلفية داكنة (عالٍ = على السطر). لتتبع خط أسود على خلفية بيضاء، تحتاج إلى عكس المنطق في الكود: قم بتبديل الشروط بحيث يعني LOW "على الخط" و HIGH يعني "خارج الخط".
يستخدم هذا المشروع لوحة Arduino Uno، وهي لوحة Arduino الأكثر شيوعًا للمبتدئين. أي لوحة متوافقة مع Uno ستعمل. إذا كنت جديدا على اردوينو، راجع ما هو الأردوينو؟ نظرة عامة على OmArTronics.
نعم، يمكنك استخدام محركات أخرى مثل وحدة L298N أو Adafruit Motor Shield. ستحتاج إلى تحديث تعريفات الدبوس وربما منطق التحكم في المحرك في الكود لمطابقة برنامج التشغيل الجديد.
يعمل عرض الخط الذي يتراوح من 30 إلى 50 ملم بشكل جيد مع هذا الإعداد ثنائي المستشعر. يجب أن يكون الخط عريضًا بدرجة كافية بحيث يمكن لكلا المستشعرين الجلوس عليه أثناء المقاطع المستقيمة ولكنه ضيق بدرجة كافية بحيث يتحرك مستشعر واحد فقط بعيدًا عن الخط أثناء المنعطفات. يعد الشريط اللاصق الأبيض بعرض 50 مم نقطة انطلاق جيدة.
قم بتركيب أجهزة الاستشعار على ارتفاع حوالي 5 إلى 15 ملم فوق السطح. إذا تم تركيبه على مستوى عالٍ جدًا، فلن يتمكن المستشعر من تمييز الخط من الخلفية. منخفض جدًا وقد يؤدي المستشعر إلى كشط السطح أو إعطاء قراءات غير متناسقة. قم بالاختبار عن طريق التحقق يدويًا من إخراج الشاشة التسلسلية على ارتفاعات مختلفة.
يعني هذا عادةً أن كلا المستشعرين يقرأان قراءة منخفضة (لم يتم اكتشاف أي خط) طوال الوقت. لإصلاح ذلك، تأكد من أن المستشعرات في الارتفاع الصحيح، وأنك قمت بضبط حساسية مقياس الجهد، وأن الخط ذو لون فاتح على خلفية داكنة. تحقق أيضًا من صحة أسلاك المستشعر.
يوصى باستخدام بطارية LiPo بقدرة 7.4 فولت (2S) للحصول على طاقة متسقة. تعمل البطارية القلوية بقوة 9 فولت لإجراء اختبارات قصيرة ولكنها تستنزف بسرعة. تجنب البطاريات الأقل من 7 فولت لأن منظم جهد Arduino يحتاج إلى إدخال 7 فولت على الأقل من خلال المقبس الأسطواني أو دبوس VIN للتشغيل المستقر.
يجعل الهيكل والحوامل المطبوعة ثلاثية الأبعاد التصميم نظيفًا وقابلاً للتكرار، لكنك لا تحتاج إلى طابعة ثلاثية الأبعاد. يمكنك استخدام منصة بسيطة من الأكريليك أو الورق المقوى أو الخشب كهيكل وتركيب المكونات باستخدام البراغي أو الغراء الساخن أو روابط الكابلات. تظل الإلكترونيات والرمز كما هي.
تأتي أكبر التحسينات من ضبط سرعات المحرك وضبط تباعد المستشعر والحفاظ على ثبات ارتفاع المستشعر. لمتابعة الخطوط بشكل أكثر سلاسة ودقة، قم بالترقية إلى مستشعر TCS34725 RGB مع التحكم PID، والذي سيتم تناوله في البرنامج التعليمي التالي في هذه السلسلة.
التحكم PID (المشتق المتناسب والتكاملي) عبارة عن خوارزمية تحسب قيم التصحيح السلس بدلاً من قرارات التشغيل/الإيقاف البسيطة. إنه ينتج تتبعًا للخطوط أكثر سلاسة، خاصة على المسارات المعقدة ذات المنحنيات الضيقة. يستخدم هذا البرنامج التعليمي للمبتدئين منطق عتبة بسيطًا لإبقاء الكود سهل الفهم. ال برنامج تعليمي للمتابعة المتقدمة على OmArTronics يضيف التحكم PID لتحسين الأداء بشكل كبير.
نعم. على سبيل المثال، إضافة المزيد من أجهزة الاستشعار KY-033 (3 أو 5 أجهزة استشعار متتالية) يمنح Arduino المزيد من المعلومات حول موضع الروبوت بالنسبة إلى الخط، مما يسمح بتوجيه تناسبي أكثر دقة. إنها ترقية شائعة ومشروع متوسط جيد بعد إكمال هذا البناء.
الموارد والتنزيلات
- مستودع جيثب: كود اردوينو الكامل لهذا المشروع
- ملفات STL للطباعة ثلاثية الأبعاد: تحميل من Cults3D | متجر أومارترونيكس
- شرح فيديو يوتيوب: شاهد فيديو البناء والاختبار
المشاريع القادمة الموصى بها
الآن بعد أن قمت ببناء الخط الأول للروبوت التالي، إليك بعض البرامج التعليمية لـ OmArTronics للاستمرار:
- روبوت يتبع الخط مع مستشعر TCS34725 RGB والتحكم PID، الترقية المباشرة لهذا المشروع من خلال تتبع أكثر سلاسة ودقة
- سيارة روبوت يتم التحكم فيها عن طريق البلوتوث مع Arduino وHC-05حيث يمكنك بناء روبوت متنقل يتم التحكم فيه عن طريق الهاتف
- سيارة روبوت لتجنب العوائق مع اردوينو ومستشعر الموجات فوق الصوتية، مما يضيف تجنب العوائق بشكل مستقل
- OmObiArm: روبوت متحرك بذراع روبوتية مدمجة، مشروع روبوت متنقل أكثر تقدمًا بذراع آلية
- دليل التحكم في سيرفو اردوينو، يغطي أساسيات المحركات المؤازرة للروبوتات
- محرك L298N مع اردوينو، يغطي التحكم في محرك التيار المستمر بعمق
الخاتمة
لديك الآن خط KY-033 يعمل بعد الروبوت مع Arduino، تم تصميمه من الصفر. على طول الطريق، تعلمت كيف تكتشف أجهزة استشعار الأشعة تحت الحمراء تباين الخطوط، وكيف يقوم Arduino ودرع المحرك بتشغيل محركين يعملان بالتيار المستمر مع توجيه تفاضلي، وكيف يمكن لمنطق العتبة البسيط أن يجعل الروبوت يتبع المسار بمفرده. علاوة على ذلك، ستحصل أيضًا على خبرة عملية في التصميم ثلاثي الأبعاد، والتجميع الميكانيكي، والأسلاك، وبرمجة Arduino، وكلها ستنتقل أيضًا إلى أعمال الروبوتات الأكثر تقدمًا.
يعمل هذا الأسلوب المبتدئ بشكل جيد مع المنحنيات اللطيفة والمسارات البسيطة. عندما تكون مستعدًا للانعطافات الأكثر حدة، استمر في المسارات المعقدة والسلوك الأكثر سلاسة برنامج تعليمي لمستشعر TCS34725 RGB والتحكم PID، والذي يعتمد مباشرة على هذا المشروع. لذا، بناء سعيد!
تنزيل ملفات الطباعة ثلاثية الأبعاد (STL)
جميع ملفات STL القابلة للطباعة ثلاثية الأبعاد لهذا المشروع متاحة للتنزيل. يمكنك الحصول عليها من متجرنا أو تصفحها على Cults3D:
- متجر OmArTronics: قم بتنزيل ملفات المشروع من OmArTronics. احصل على حزمة المشروع الكاملة مع ملفات STL ومخططات الأسلاك وكود المصدر التي يتم تسليمها إلى بريدك الإلكتروني.
- الطوائف3D: عرض على Cults3D. تصفح وتنزيل ملفات النماذج ثلاثية الأبعاد على Cults3D.
رأي واحد حول “Building a Line Following Robot with KY-033 Sensors for Beginners”