📋 ملخص سريع
يشرح هذا الدليل للمبتدئين كيفية بناء روبوت لتتبع الخطوط باستخدام مستشعري الأشعة تحت الحمراء KY-033، ولوحة أردوينو أونو، ووحدة تحكم المحركات من Adafruit. ستصمم هيكلًا مخصصًا وتطبعه بتقنية الطباعة ثلاثية الأبعاد، وتوصل المستشعرات والمحركات، وتبرمج منطق التوجيه القائم على العتبات. يُعد هذا المشروع مثاليًا كأول مشروع لتتبع الخطوط قبل الانتقال إلى التحكم التناسبي التكاملي التفاضلي (PID).
هل تريد بناء أول روبوت ذاتي الحركة؟ في هذا الدرس التعليمي المناسب للمبتدئين، ستتعلم تصميم روبوت تتبع الخطوط بمستشعر KY-033 وطباعته ثلاثية الأبعاد وتجميعه وتوصيله وبرمجته بالكامل من الصفر. تحديدًا، باستخدام مستشعرَي 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 تعمل |
| لوحة محرك أردوينو الإصدار 3 | 1 | نعم | يقود محركات التيار المستمر ويوزع الطاقة | أكوام مباشرة على أونو |
| KY-033 مستشعر تتبع الخط | 2 | نعم | يكتشف الخط باستخدام انعكاس الأشعة تحت الحمراء | حساسية قابلة للتعديل عبر مقياس الجهد الموجود على متن الطائرة |
| محرك تيار مستمر مع علبة تروس | 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 لضمان ملاءمة جميع الأجزاء بشكل آمن مع الحفاظ على هيكل خفيف الوزن وصغير الحجم. في المجمل، يتضمن التصميم ثلاثة أجزاء رئيسية مطبوعة بتقنية ثلاثية الأبعاد:
- الهيكل: قاعدة متينة تحتوي على محركات التيار المستمر وأجهزة الاستشعار ولوحة Arduino والبطارية.
- حامل المستشعر: ضع المستشعرين KY-033 على الارتفاع والتباعد الصحيحين للكشف الدقيق عن الخط.
- حامل أردوينو: قم بتثبيت Arduino Uno وMotor Shield بشكل آمن على الهيكل مع إبقاء المنافذ في متناول البرمجة والأسلاك.
بالإضافة إلى ذلك، يمكنك تنزيل ملفات STL لجميع الأجزاء المطبوعة ثلاثية الأبعاد من Cults3D أو من خلالنا متجر أومارترونيكس. إذا كنت جديدًا في مجال الطباعة ثلاثية الأبعاد، فإن مقدمة في الطباعة ثلاثية الأبعاد يغطي دليل OmArTronics كل ما تحتاجه للبدء.
الخطوة الثانية: طباعة المكونات بتقنية الطباعة ثلاثية الأبعاد
بعد ذلك، بعد الانتهاء من التصميم، تمت طباعة المكونات ثلاثية الأبعاد باستخدام طابعة Creality Ender 3. يعمل PLA بشكل أفضل مع معظم التصميمات لأنه يطبع بسهولة ويوفر قوة هيكلية جيدة. يوفر نظام ABS بديلاً عندما تحتاج إلى مقاومة أعلى للحرارة. بعد الطباعة، علاوة على ذلك، قم بتنظيف أي مواد دعم، وقم بإزالة الحواف الخشنة، وتحقق من أن جميع فتحات المسامير وميزات التثبيت بالحجم الصحيح قبل الانتقال إلى التجميع.
الخطوة 3: تجميع الروبوت
بمجرد الانتهاء من تجهيز جميع الأجزاء المطبوعة والمشتراة، قم بتجميع خط KY-033 الذي يتبع الروبوت بالترتيب التالي.
3.1 تركيب المحركات والعجلات
- أولاً، قم بتثبيت محركي التيار المستمر بالهيكل باستخدام البراغي والإدخالات الملولبة. تأكد من أن كل محرك مثبت بإحكام ومحاذاته.
- بعد ذلك، قم بتثبيت العجلات على أعمدة المحرك وتأكد من أنها تدور بحرية دون اهتزاز.
- وأخيرًا، قم بتركيب عجلة الدعم في الجزء الخلفي من الهيكل لتحقيق التوازن.
3.2 تركيب الإلكترونيات
- أولاً، قم بتوصيل Arduino Uno بحامل Arduino وقم بتثبيته على الهيكل.
- ثم قم بتكديس Motor Shield Rev3 على Arduino Uno.
- قم بتركيب المستشعرين KY-033 في حامل المستشعر، ثم قم بتثبيت الحامل بالجانب السفلي الأمامي من الهيكل. يجب أن تشير أجهزة الاستشعار إلى الأسفل نحو الأرض.
- وأخيرًا، ضع البطارية بشكل آمن داخل الهيكل.
الخطوة 4: توصيل الإلكترونيات
قبل كل شيء، تعتبر الأسلاك المناسبة أمرًا بالغ الأهمية للتشغيل الموثوق لروبوت تتبع خط Arduino الخاص بك. يسرد الجدول أدناه كل الاتصالات اللازمة. ارجع إلى مخطط الأسلاك للحصول على مرجع مرئي.

اتصالات المحرك (عبر Motor Shield)
| محرك | طرف حماية المحرك | اردوينو دبوس (عبر الدرع) | وظيفة |
|---|---|---|---|
| محرك DC الأيسر | قناة الإخراج | DIR_L = الدبوس 12، PWM_L = الدبوس 3 | اتجاه وسرعة المحرك الأيسر |
| محرك DC الصحيح | إخراج القناة ب | DIR_R = الدبوس 13، PWM_R = الدبوس 11 | اتجاه وسرعة المحرك الصحيح |
KY-033 اتصالات الاستشعار
| جهاز استشعار KY-033 | دبوس الاستشعار | دبوس أردوينو | وظيفة |
|---|---|---|---|
| الاستشعار الأيسر | S (إشارة) | دبوس رقمي 2 | يقرأ كشف الخط الأيسر (عالية/منخفضة) |
| الاستشعار الأيسر | VCC | 5 فولت | مزود الطاقة |
| الاستشعار الأيسر | أرضي | أرضي | أرضي |
| الاستشعار الصحيح | S (إشارة) | دبوس رقمي 4 | يقرأ كشف الخط الصحيح (عالية/منخفضة) |
| الاستشعار الصحيح | VCC | 5 فولت | مزود الطاقة |
| الاستشعار الصحيح | أرضي | أرضي | أرضي |
اتصالات الطاقة والبطارية
| اتصال | من | ل | ملحوظات |
|---|---|---|---|
| البطارية إيجابية | بطارية + | 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("Sensor Left: ");
Serial.print(left);
Serial.print(" | Sensor Right: ");
Serial.println(right);
خلال كل دورة، يقوم الكود بطباعة قراءات المستشعر على الشاشة التسلسلية في كل دورة. في الواقع، هذا مفيد للغاية أثناء الاختبار. بعد ذلك، افتح Arduino Serial Monitor (Tools > Serial Monitor) لمشاهدة القيم المباشرة. من المفترض أن ترى القيمتين 0 و1 متناوبتين أثناء تحريك المستشعرات فوق الخط والخلفية. إذا أظهر كلا المستشعرين دائمًا نفس القيمة، فتحقق من ارتفاع الأسلاك والمستشعر.
6.5 قراءة مستشعر الحلقة الرئيسية
int left = digitalRead(sensorLeft); int right = digitalRead(sensorRight);
بعد ذلك، في بداية كل دورة حلقة، يقرأ 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 إعداد مسار الاختبار
First, start with a simple straight line of white tape, about 1 to 2 meters long. Once the robot follows a straight line reliably, then add gentle curves. Avoid sharp 90-degree turns at first — this basic approach handles smooth curves but can struggle with very tight angles.
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 ملم تقريبًا فوق السطح. إذا تم تركيبه على مستوى عالٍ جدًا، فلن يتمكن المستشعر من تمييز الخط من الخلفية. منخفض جدًا وقد يؤدي المستشعر إلى كشط السطح أو إعطاء قراءات غير متناسقة. قم بالاختبار عن طريق التحقق يدويًا من إخراج الشاشة التسلسلية على ارتفاعات مختلفة.
وهذا يعني عادةً أن كلا المستشعرين يقرأان القراءة المنخفضة (لم يتم اكتشاف أي خط) بشكل مستمر. لإصلاح ذلك، تأكد من أن المستشعرات في الارتفاع الصحيح، وأنك قمت بضبط حساسية مقياس الجهد، وأن الخط ذو لون فاتح على خلفية داكنة. تحقق أيضًا من صحة أسلاك المستشعر.
A 7.4V LiPo battery (2S) is recommended for consistent power. Similarly, a 9V alkaline battery works for short tests but drains quickly. Therefore, avoid batteries below 7V as the Arduino voltage regulator needs at least 7V input through the barrel jack or VIN pin for stable operation.
وبطبيعة الحال، فإن الهيكل والحوامل المطبوعة ثلاثية الأبعاد تجعل البناء نظيفًا وقابلاً للتكرار. وبدلاً من ذلك، إذا لم يكن لديك طابعة ثلاثية الأبعاد، يمكنك استخدام منصة بسيطة من الأكريليك أو الورق المقوى أو الخشب كهيكل وتثبيت المكونات باستخدام البراغي أو الغراء الساخن أو روابط الكابلات. ومع ذلك، تظل الإلكترونيات والرموز كما هي.
بشكل عام، تأتي أكبر التحسينات من ضبط سرعات المحرك، وضبط تباعد المستشعر، وضمان ارتفاع ثابت للمستشعر. ومع ذلك، للحصول على متابعة سطرية أكثر سلاسة ودقة، قم بالترقية إلى مستشعر TCS34725 RGB مع التحكم PID، والذي سيتم تناوله في البرنامج التعليمي التالي في هذه السلسلة.
باختصار، التحكم PID (التناسبي التكاملي المشتق) هو خوارزمية تحسب قيم التصحيح السلس بدلاً من قرارات التشغيل/الإيقاف البسيطة. ونتيجة لذلك، فإنه ينتج تتبعًا أكثر سلاسة للخطوط، خاصة على المسارات المعقدة ذات المنحنيات الضيقة. لهذا السبب، يستخدم هذا البرنامج التعليمي للمبتدئين عمدا منطق عتبة بسيط لإبقاء الكود سهل الفهم. ال برنامج تعليمي للمتابعة المتقدمة على OmArTronics يضيف التحكم PID لتحسين الأداء بشكل كبير.
نعم. على سبيل المثال، إضافة المزيد من أجهزة الاستشعار KY-033 (3 أو 5 أجهزة استشعار على التوالي) يمنح Arduino مزيدًا من المعلومات حول موضع الروبوت بالنسبة إلى الخط، مما يتيح توجيهًا متناسبًا أكثر دقة. مما لا شك فيه أن هذا مسار ترقية شائع ومشروع متوسط جيد بعد إكمال هذا البناء.
الموارد والتنزيلات
- مستودع GitHub: الكود الكامل لمشروع أردوينو هذا
- ملفات STL للطباعة ثلاثية الأبعاد: قم بالتنزيل من موقع Cults3D | متجر أومارترونيكس
- شرح فيديو على يوتيوب: شاهد فيديو البناء والاختبار
المشاريع القادمة الموصى بها
والآن بعد أن قمت ببناء أول روبوت لتتبع الخطوط، إليك بعض الدروس التعليمية من OmArTronics لمواصلة التعلم:
- روبوت تتبع الخط مزود بمستشعر RGB من نوع TCS34725 ووحدة تحكم PID — الترقية المباشرة لهذا المشروع مع تتبع أكثر سلاسة ودقة
- سيارة روبوت يتم التحكم بها عبر البلوتوث باستخدام أردوينو و HC-05 — بناء روبوت متنقل يتم التحكم فيه بواسطة الهاتف
- سيارة روبوتية لتجنب العوائق مزودة بلوحة أردوينو ومستشعر فوق صوتي — إضافة نظام تجنب العوائق ذاتيًا
- أوم أوبي آرم: روبوت متنقل مزود بذراع روبوتية مدمجة — مشروع روبوت متنقل أكثر تطوراً مزود بذراع روبوتية
- دليل التحكم في محرك سيرفو أردوينو — تعلم أساسيات محركات السيرفو للروبوتات
- محرك L298N مع أردوينو — فهم التحكم في محركات التيار المستمر بشكل متعمق
خاتمة
تهانينا! لقد قمت ببناء روبوت KY-033 كامل لتتبع الخطوط باستخدام أردوينو من الصفر. خلال هذه العملية، تعلمت أيضًا كيفية اكتشاف مستشعرات الأشعة تحت الحمراء لتباين الخطوط، وكيفية تشغيل محركين كهربائيين يعملان بالتيار المستمر باستخدام أردوينو ولوحة التحكم بالمحركات مع توجيه تفاضلي، وكيف يمكن لمنطق العتبة البسيط أن يجعل الروبوت يتبع مسارًا بشكل مستقل. كما اكتسبت خبرة عملية في التصميم ثلاثي الأبعاد، والتجميع الميكانيكي، والتوصيلات الكهربائية، وبرمجة أردوينو - جميعها مهارات أساسية لمشاريع روبوتية أكثر تقدمًا.
يُعدّ هذا الأسلوب للمبتدئين مناسبًا للمنحنيات اللطيفة والمسارات البسيطة. عندما تكون مستعدًا للمنعطفات الحادة، وبالتالي المسارات المعقدة، والسلوك الأكثر سلاسة، تابع مع شرح استخدام مستشعر TCS34725 RGB ووحدة التحكم PID, وهو مشروع مبني مباشرة على هذا المشروع. وقبل كل شيء، نتمنى لكم بناءً موفقاً!
قم بتنزيل ملفات الطباعة ثلاثية الأبعاد (STL)
جميع ملفات STL القابلة للطباعة ثلاثية الأبعاد لهذا المشروع متاحة للتنزيل. يمكنك الحصول عليها من متجرنا أو تصفحها على موقع Cults3D.
- متجر أومارترونيكس: قم بتنزيل ملف المشروع من OmArTronics — احصل على حزمة المشروع الكاملة بما في ذلك ملفات STL ومخططات الأسلاك وشفرة المصدر التي يتم تسليمها إلى بريدك الإلكتروني.
- Cults3D: شاهد على موقع Cults3D — تصفح وقم بتنزيل ملفات النماذج ثلاثية الأبعاد على موقع Cults3D.
رأي واحد حول “Building a Line Following Robot with KY-033 Sensors for Beginners”