📋 ملخص سريع
قم ببناء سيارة روبوت يتم التحكم فيها عن طريق البلوتوث من الصفر باستخدام Arduino Uno ووحدة Bluetooth HC-05 وAdafruit Motor Shield. يغطي هذا البرنامج التعليمي المناسب للمبتدئين تجميع الهيكل وأسلاك المحرك وإعداد اتصال Bluetooth وتطبيق الهاتف الذكي MIT App Inventor المخصص للتحكم في الاتجاه اللاسلكي.
هل سبق لك أن أردت بناء سيارة روبوت يمكنك قيادتها من هاتفك؟ في هذا البرنامج التعليمي خطوة بخطوة لسيارة الروبوت Arduino Bluetooth، ستبني سيارة تعمل بكامل طاقتها سيارة روبوت يتم التحكم فيها عن طريق البلوتوث باستخدام أردوينو أونوو وحدة البلوتوث HC-05و درع المحرك Adafruit Motor Shield V1.2. إنه مشروع رائع إذا كنت قد بدأت للتو في استخدام Arduino وتريد شيئًا يمكنك استخدامه بالفعل.
يرشدك هذا البرنامج التعليمي خلال عملية البناء الكاملة. ستقوم بتجميع هيكل الدفع الرباعي، وتوصيل المحركات ووحدة البلوتوث، وتحميل كود Arduino، وإنشاء تطبيق تحكم Android مخصص باستخدام MIT App Inventor. في النهاية، سيكون لديك سيارة روبوت لاسلكية تستجيب لأوامر الأمام والخلف واليسار واليمين والتوقف من هاتفك الذكي. إذا كنت جديدًا على Arduino، ففكر في البدء باستخدامنا دليل أساسيات برمجة الأردوينو أولاً.
ما ستتعلمه
في نهاية هذا البرنامج التعليمي لاردوينو السيارة الروبوتية HC-05، ستعرف كيفية القيام بما يلي:
- قم ببناء هيكل سيارة روبوتية ذات دفع رباعي باستخدام زجاج شبكي وحوامل مطبوعة ثلاثية الأبعاد
- افهم كيف يتحكم Adafruit Motor Shield في أربعة محركات تعمل بالتيار المستمر في وقت واحد
- قم بتوصيل وحدة Bluetooth HC-05 إلى Arduino للاتصال التسلسلي اللاسلكي
- اكتب كود Arduino الذي يفسر أوامر Bluetooth ذات الحرف الواحد ويشغل المحركات وفقًا لذلك
- أنشئ تطبيقًا بسيطًا للتحكم في Android باستخدام MIT App Inventor باستخدام أزرار الاتجاهات
- اختبار وضبط واستكشاف الأخطاء وإصلاحها للسيارة الروبوتية النهائية التي يتم التحكم فيها عن طريق البلوتوث
كيف تعمل السيارة الروبوتية التي تعمل بتقنية البلوتوث
قبل الانتقال إلى البناء، إليك نظرة سريعة على كيفية عمل الأجزاء معًا. هناك أربع قطع رئيسية: هاتف Android، ووحدة Bluetooth HC-05، وArduino Uno، وAdafruit Motor Shield مع أربعة محركات DC.
إن هاتف أندرويد يدير تطبيقًا مخصصًا تم إنشاؤه باستخدام MIT App Inventor. عندما تضغط على زر اتجاه (للأمام أو للخلف أو لليسار أو لليمين)، يرسل التطبيق أمرًا بحرف واحد (F أو B أو L أو R أو S للإيقاف) عبر البلوتوث.
إن وحدة البلوتوث HC-05 يتلقى هذا الأمر لاسلكيًا ويمرره إلى Arduino من خلال الاتصال التسلسلي على الأطراف 0 (RX) و 1 (TX). بمعنى آخر، يعمل HC-05 كجسر تسلسلي لاسلكي بين الهاتف وArduino. لمعرفة المزيد حول كيفية عمل وحدتي HC-05 وHC-06، راجع موقعنا استكمال البرنامج التعليمي HC-05/HC-06 Arduino Bluetooth.
إن أردوينو أونو يقرأ الحرف الوارد من المخزن المؤقت التسلسلي. اعتمادًا على الأمر المستلم، يقوم بعد ذلك باستدعاء وظيفة الحركة المناسبة (للأمام، أو للخلف، أو TurnLeft، أو TurnRight، أو Stop).
إن درع المحرك Adafruit Motor Shield V1.2 يقع أعلى Arduino ويحرك أربعة محركات DC من خلال أطراف الإخراج M1 و M2 و M3 و M4. يستخدم الدرع مكتبة AFMotor للتحكم في اتجاه المحرك (للأمام، للخلف، للتحرير) والسرعة (0–255). في هذا المشروع، تتصل محركات الجانب الأيسر بـ M1 وM2، وتتصل محركات الجانب الأيمن بـ M3 وM4. من أجل الدوران، يتحرك أحد الجانبين للأمام بينما يعمل الجانب الآخر للخلف، مما يخلق دورانًا على شكل دبابة. لإلقاء نظرة أعمق على مبادئ قيادة السيارات، راجع موقعنا دورة تعليم قيادة المحرك L298N باستخدام الاردوينو.
المكونات المطلوبة (فاتورة المواد)
فيما يلي قائمة المواد الكاملة لمشروع Arduino للسيارة التي يتم التحكم فيها عن طريق البلوتوث. تتوفر معظم المكونات على نطاق واسع عبر الإنترنت أو في مجموعات أدوات بدء تشغيل الأجهزة الإلكترونية.
| المكوّن | الكمية | هل هذا مطلوب؟ | الغرض | الملاحظات |
|---|---|---|---|---|
| أردوينو أونو | 1 | مطلوب | متحكم رئيسي | تعمل أي لوحة متوافقة مع Uno |
| درع المحرك Adafruit Motor Shield V1.2 | 1 | مطلوب | يشغل أربعة محركات تعمل بالتيار المستمر | مداخن مباشرة على رأس اردوينو |
| وحدة البلوتوث HC-05 | 1 | مطلوب | الاتصال التسلسلي اللاسلكي مع الهاتف | يعمل HC-06 أيضًا (التابع فقط) |
| محركات التيار المستمر مع علب التروس | 4 | مطلوب | قيادة العجلات الأربع | عادة محركات ذات تروس 3-6 فولت |
| العجلات | 4 | مطلوب | نعلق على مهاوي المحرك | تطابق مع حجم عمود علبة التروس الخاصة بك |
| ورقة زجاج شبكي | 1 | مطلوب | هيكل السيارة الروبوتية / لوحة القاعدة | قطع إلى الحجم المطلوب؛ الاكريليك أو الأعمال المماثلة |
| حوامل محرك مطبوعة ثلاثية الأبعاد | 4 | اختياري | تأمين المحركات إلى الهيكل | يمكن استبداله بأقواس معدنية على شكل حرف L |
| حامل اردوينو مطبوع ثلاثي الأبعاد | 1 | اختياري | جبل اردوينو على الهيكل | الشريط على الوجهين أو المواجهات تعمل أيضًا |
| حزمة البطارية (4×AA أو ما شابه ذلك) | 1 | مطلوب | محركات القوى واردوينو | يوصى باستخدام حزمة 6 فولت؛ استخدم بطاريات جديدة |
| أسلاك التوصيل | العديد من | مطلوب | قم بتوصيل HC-05 بالاردوينو | نوع الدبوس إلى المقبس لدبابيس رأس HC-05 |
| مسامير، صواميل، مواجهات | متنوع | مطلوب | التجميع الميكانيكي | حجم M3 شائع |
| الهاتف الذكي | 1 | مطلوب | يقوم بتشغيل تطبيق التحكم MIT App Inventor | يجب أن يدعم تقنية البلوتوث الكلاسيكية |

الخطوة 1: بناء الهيكل
الهيكل هو أساس سيارتك الروبوتية التي يتم التحكم فيها عن طريق البلوتوث، لذلك يجب أن يكون قويًا بما يكفي لتجميع كل شيء معًا. في هذا المشروع، نستخدم لوح زجاجي مسطح (أكريليك) كلوحة أساسية. نظرًا لأن زجاج البليكسي خفيف الوزن وسهل القطع، فهو يعمل بشكل جيد لهذا النوع من البناء بينما يظل صلبًا بدرجة كافية لدعم المحركات والإلكترونيات.
قطع لوحة القاعدة
للبدء، قم بقياس ورقة زجاج شبكي وقطعها إلى الأبعاد المطلوبة. يبلغ الحجم النموذجي حوالي 20 سم × 15 سم، على الرغم من أنه يمكنك ضبط ذلك وفقًا لحجم المحركات وحزمة البطارية لديك. للحصول على أفضل النتائج، استخدم منشارًا أو قاطعة أكريليك للحصول على حواف نظيفة.
تحضير حوامل المحرك
بعد ذلك، يتم تصميم حوامل المحرك والطباعة ثلاثية الأبعاد التي تثبت محركات التيار المستمر بشكل آمن على الهيكل. إذا لم يكن لديك طابعة ثلاثية الأبعاد، يمكنك استخدام أقواس معدنية على شكل حرف L أو حتى الغراء الساخن كحل مؤقت. يجب أن تمسك الحوامل بجسم المحرك بقوة بحيث تشير أعمدة علبة التروس إلى الخارج من خلال حواف الهيكل.
قم بإعداد حامل الاردوينو
تصميم وطباعة ثلاثية الأبعاد لحامل لتركيب Arduino Uno على الهيكل. يحافظ الحامل على أمان Arduino أثناء الحركة ويمنع الأسلاك الفضفاضة. بدلًا من ذلك، استخدم مواضع التثبيت باستخدام براغي M3 من خلال فتحات تثبيت Arduino، أو قم ببساطة بتوصيل اللوحة بشريط رغوي مزدوج الجوانب.
الخطوة 2: تركيب المحركات
مع إعداد الهيكل، قم بتوصيل محركات التيار المستمر الأربعة بلوحة القاعدة.
نعلق المحركات على الجبال
أولاً، استخدم البراغي والصواميل لتثبيت كل محرك DC في حامله المطبوع ثلاثي الأبعاد (أو الحامل على شكل حرف L). تأكد من أن أعمدة المحرك تشير إلى الخارج وأن جميع المحركات الأربعة موجهة بنفس الطريقة، لأن هذا يؤثر على ما إذا كانت العجلات تدور في الاتجاه المتوقع.
قم بتركيب مجموعات المحركات على الهيكل
ثم قم بتوصيل حوامل المحرك بهيكل زجاجي باستخدام البراغي والصواميل. على وجه التحديد، ضع محركين على كل جانب من الهيكل، بعيدًا عن بعضهما البعض قدر الإمكان لتحقيق الاستقرار. تأكد من أن العجلات يمكن أن تدور بحرية دون الاحتكاك بلوحة القاعدة أو بعضها البعض.
الخطوة 3: تركيب الأردوينو ودرع المحرك
الآن قم بتأمين Arduino Uno و Adafruit Motor Shield على الهيكل.
تأمين حامل اردوينو
قم بتوصيل حامل Arduino المطبوع ثلاثي الأبعاد (أو المواجهات) في منتصف الهيكل أو خلفه. اترك أيضًا مساحة كافية في المقدمة أو الجوانب لحزمة البطارية.
ضع اردوينو والدرع
بعد ذلك، قم بتثبيت Arduino Uno في الحامل وقم بتثبيته بالمسامير. بعد ذلك، ضع Adafruit Motor Shield أعلى Arduino، واضغط عليه لأسفل برفق حتى تتم محاذاة جميع دبابيس الرأس بشكل صحيح ومستقرة بالكامل. ونتيجة لذلك، يجب أن يظل الدرع مستويًا دون محاذاة أي دبابيس بشكل خاطئ.
الخطوة 4: توصيل المكونات
ربما تكون عملية توصيل الأسلاك هي الخطوة التي تحدث فيها معظم الأخطاء، لذا خذ وقتك هنا. ستجد أدناه توصيلات المحرك وأسلاك Bluetooth HC-05 ووصلات الطاقة. استخدم مخطط الأسلاك أدناه كمرجع.

اتصالات المحرك
| المحرك | محطة الدرع | الموقف على السيارة |
|---|---|---|
| المحرك 1 | M1 | الجانب الأيسر (الأمامي أو الخلفي) |
| المحرك 2 | M2 | الجانب الأيسر (الأمامي أو الخلفي) |
| المحرك 3 | M3 | الجانب الأيمن (الأمامي أو الخلفي) |
| المحرك 4 | M4 | الجانب الأيمن (الأمامي أو الخلفي) |
أولاً، قم بتوصيل المحركين الموجودين على الجانب الأيسر بالطرفين M1 وM2، ثم قم بتوصيل المحركين الموجودين على الجانب الأيمن بالطرفين M3 وM4. يحتوي كل محرك على سلكين، لذا أدخلهما في أطراف البراغي الموجودة على الدرع وقم بإحكام ربطهما بشكل آمن.
اتصالات وحدة بلوتوث HC-05
| دبوس HC-05 | دبوس الأردوينو | الملاحظات |
|---|---|---|
| VCC | 5V | يعمل على تشغيل وحدة HC-05 |
| GND | GND | أرضية مشتركة |
| TXD | آر إكس (دبوس 0) | ينقل HC-05 البيانات إلى Arduino |
| RXD | تكساس (دبوس 1) | اردوينو ينقل البيانات إلى HC-05 |
هام: تسلسل الأجهزة (دبابيس 0/1) وتعارضات التحميل
تحذير: في هذا المشروع، يتم توصيل HC-05 بمنفذي Arduino 0 (RX) و1 (TX). هذه هي نفس المسامير التي يستخدمها اتصال USB التسلسلي لتحميل الرسومات واتصالات المراقبة التسلسلية. هذا يعني لك يجب فصل وحدة HC-05 (على الأقل أسلاك RX/TX) في كل مرة تقوم فيها بتحميل كود جديد إلى Arduino. إذا ظل HC-05 متصلاً أثناء التحميل، فسوف يفشل التحميل لأن وحدة Bluetooth تتداخل مع بيانات USB التسلسلية. بعد التحميل، أعد توصيل HC-05 وأعد ضبط Arduino. وأيضًا، لن تتمكن من استخدام Serial Monitor لتصحيح الأخطاء أثناء توصيل HC-05 بالدبابيس 0/1. إذا كنت بحاجة إلى Bluetooth وSerial Monitor في وقت واحد، فاستخدم مكتبة SoftwareSerial على منافذ مختلفة (على سبيل المثال، المنافذ 2 و3). لمزيد من التفاصيل حول الأسلاك واستخدام وحدة HC-05، راجع موقعنا HC-05/HC-06 دروس البلوتوث للاردوينو.
اتصالات الطاقة
بعد ذلك، قم بتوصيل الأطراف الموجبة والسالبة لحزمة البطارية بأطراف إدخال الطاقة الموجودة على Adafruit Motor Shield. ونتيجة لذلك، يقوم الدرع بتمرير الطاقة إلى المحركات ويمكنه أيضًا تشغيل Arduino من خلال المنظم الموجود على اللوحة. تأكد أيضًا من أن التوصيلات الأرضية بين حزمة البطارية والدرع والاردوينو كلها شائعة. استخدم بطاريات جديدة (يوصى بـ 6 فولت) للحصول على أداء محرك موثوق.
الخطوة 5: تشغيل السيارة التي تعمل بتقنية البلوتوث
بالنسبة لمشروع السيارة الروبوتية هذا، تعد حزمة بطارية 4xAA (إجمالي 6 فولت) مصدر طاقة عمليًا وبأسعار معقولة. للبدء، قم بتوصيل حزمة البطارية بأطراف الطاقة الخارجية الموجودة على Adafruit Motor Shield. من هناك، يقوم الدرع بتوزيع الطاقة على المحركات ويمكنه إمداد Arduino من خلال وصلة الطاقة الخاصة به. تأكد أيضًا من إمكانية الوصول إلى مفتاح الطاقة (في حالة استخدامه) حتى تتمكن من تشغيل السيارة وإيقاف تشغيلها بسهولة. ومع ذلك، تجنب استخدام بطاريات كتلة 9 فولت لأنها لا توفر تيارًا كافيًا لأربعة محركات تعمل بالتيار المستمر تحت الحمل. وبدلاً من ذلك، إذا كنت تريد وقت تشغيل أطول أو عزم دوران أعلى، ففكر في حزمة Li-ion القابلة لإعادة الشحن مع منظم الجهد.
الخطوة 6: برمجة الأردوينو للتحكم بالبلوتوث
يتلقى رسم Arduino أدناه أوامر ذات حرف واحد من وحدة Bluetooth HC-05 ثم يقوم بتشغيل محركات التيار المستمر الأربعة وفقًا لذلك. يشكل هذا الرمز عقل السيارة الآلية التي يتم التحكم فيها عن طريق البلوتوث. للحصول على مقدمة أوسع للتحكم في محركات التيار المستمر باستخدام Arduino، راجع البرنامج التعليمي الخاص بنا التحكم في محرك التيار المستمر باستخدام برنامج التشغيل L298N و Arduino Motor Shield.
مهم: افصل وحدة HC-05 عن الأطراف 0 و1 قبل تحميل هذا المخطط. أعد الاتصال بعد اكتمال التحميل، ثم أعد ضبط Arduino.
/**
* Author: Omar Draidrya
* Date: 2024/07/03
* Bluetooth-controlled 4WD robot car using Adafruit Motor Shield V1.2 and HC-05.
* Receives single-character commands (F/B/L/R/S) via serial from the HC-05
* Bluetooth module and drives four DC motors on terminals M1-M4 accordingly.
*/
#include <AFMotor.h>
AF_DCMotor motor1(1); // Create motor #1 using M1 connector
AF_DCMotor motor2(2); // Create motor #2 using M2 connector
AF_DCMotor motor3(3); // Create motor #3 using M3 connector
AF_DCMotor motor4(4); // Create motor #4 using M4 connector
char command;
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
motor1.setSpeed(255); // Set initial motor speeds
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
}
void loop() {
if (Serial.available() > 0) {
command = Serial.read(); // Read the incoming command
if (command == 'F') {
forward();
} else if (command == 'B') {
backward();
} else if (command == 'L') {
turnLeft();
} else if (command == 'R') {
turnRight();
} else if (command == 'S') {
stop();
}
}
}
void forward() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
}
void backward() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
}
void turnLeft() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
}
void turnRight() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
}
void stop() {
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
}
شرح الكود: مكتبة AFMotor وإعداد المحرك
يتضمن الكود المكتبة، وهي مكتبة Adafruit Motor Shield. في الأساس، توفر هذه المكتبة واجهة بسيطة للتحكم في محركات التيار المستمر المتصلة بالدرع. بعد ذلك يتم إنشاء أربعة كائنات حركية: موتور1(1) من خلال موتور 4(4)، المقابلة للمحطات M1 إلى M4 على الدرع. في setup()، تتم تهيئة الاتصال التسلسلي عند 9600 باود (مطابقة معدل الباود الافتراضي HC-05)، وتم ضبط جميع المحركات الأربعة على السرعة الكاملة (255 من 255).
شرح الكود: رسم الخرائط الحركية (M1 إلى M4)
المحركان 1 و2 (M1، M2) هما المحركان على الجانب الأيسر، والمحركات 3 و4 (M3، M4) هما المحركان على الجانب الأيمن. هذا التعيين مهم لأن منطق الانعطاف يعتمد على قيادة الجانبين الأيسر والأيمن بشكل مستقل. إذا انعطفت سيارتك في الاتجاه الخاطئ أو تحركت للخلف عندما تتوقع الأمام، فيمكنك تبديل توصيلات المحرك في أطراف الدرع أو تبديل ثوابت FORWARD/BACKWARD في الكود.
شرح الكود: بروتوكول أوامر البلوتوث
بروتوكول الأوامر واضح ومباشر: يرسل التطبيق حرف ASCII واحد، ويقرأه Arduino من المخزن المؤقت التسلسلي في حلقة(). الأوامر الخمسة هي F (للأمام)، B (للخلف)، L (الاتجاه لليسار)، R (الاتجاه لليمين)، وS (التوقف). يعد هذا البروتوكول البسيط المكون من حرف واحد سريعًا وموثوقًا للتحكم في الوقت الفعلي.
شرح الكود: وظائف الحركة
إلى الأمام() يدير جميع المحركات الأربعة في الاتجاه الأمامي، وبالتالي تسير السيارة للأمام بشكل مستقيم. إلى الوراء () يدير جميع المحركات الأربعة في الخلف. انعطف لليسار() يدير المحركات اليسرى (M1، M2) إلى الخلف والمحركات اليمنى (M3، M4) إلى الأمام، مما يخلق انعطافًا يسارًا على شكل دبابة. انعطف يمينا() يفعل العكس: المحركات اليسرى للأمام، والمحركات اليمنى للخلف. قف() يستدعي إطلاق سراح على جميع المحركات، مما يؤدي إلى قطع الطاقة والسماح للسيارة بالتوقف.
كيفية تغيير السرعة
بشكل افتراضي، يتم ضبط سرعة المحرك setup() استخدام motor1.setSpeed(255). تتراوح القيمة من 0 (متوقف) إلى 255 (السرعة الكاملة). لإبطاء السيارة، ما عليك سوى تقليل هذه القيمة. على سبيل المثال، 150 يعطي سرعة 60% تقريبًا. علاوة على ذلك، يمكنك ضبط سرعات مختلفة للانعطاف مقابل القيادة المستقيمة عن طريق الاتصال سيت سبيد () داخل وظائف الحركة.
كيفية اختبار الكود بأمان
في الاختبار الأول، قم بإسناد السيارة لأعلى بحيث تكون العجلات بعيدة عن الأرض. على سبيل المثال، استخدم صندوقًا أو مجموعة من الكتب. بهذه الطريقة يمكنك التحقق من كل اتجاه دون أن تخرج السيارة عن الطاولة. ثم قم بالاتصال عبر البلوتوث، وأرسل كل أمر من التطبيق، وتأكد من دوران العجلات الأربع في الاتجاه المتوقع. بعد ذلك، ضع السيارة على الأرض واختبرها على سرعة منخفضة عن طريق تقليل السرعة سيت سبيد () إلى حوالي 120.
الخطوة 7: تطوير تطبيق أندرويد للتحكم بالبلوتوث
بالنسبة لتطبيق الهاتف، سنستخدم MIT App Inventor. يتصل بوحدة HC-05 عبر البلوتوث ويرسل أوامر الاتجاه إلى Arduino. تطبيق MIT App Inventor مجاني ويعمل في متصفحك، لذلك لا تحتاج إلى كتابة أي Java أو Kotlin. لفهم أساسيات برمجة Arduino التي يتواصل معها التطبيق، راجع موقعنا أساسيات برمجة الأردوينو الدليل.
التسجيل وإنشاء المشروع
- انتقل إلى MIT App Inventor (ai2.appinventor.mit.edu) وقم بتسجيل الدخول باستخدام حساب Google الخاص بك.
- انقر فوق "بدء مشروع جديد" وقم بتسميته "RobotCarControl".
تصميم واجهة المستخدم
في طريقة العرض "المصمم"، ستحتاج إلى إضافة المكونات التالية إلى شاشة التطبيق الخاص بك:
- ListPicker - اضبط النص على "تحديد جهاز Bluetooth". يتيح ذلك للمستخدم اختيار جهاز Bluetooth المقترن للاتصال به.
- التسمية (التسمية 1) – إضافة مكون التسمية لعرض حالة الاتصال. ستقوم الكتل بتعيين هذه التسمية على "متصل" أو "غير متصل" اعتمادًا على نتيجة اتصال Bluetooth. تتم الإشارة إلى هذه التسمية باسم
التسمية1في رمز الكتلة أدناه، لذا تأكد من إضافته إلى الواجهة الخاصة بك. - عميل بلوتوث - اسحب هذا من لوحة الاتصال. وهو مكون غير مرئي يتعامل مع اتصالات Bluetooth.
- أربعة أزرار - إضافة أزرار تسمى ButtonForward، ButtonBackward، ButtonLeft، و ButtonRight. قم بتعيين النص والألوان الخاصة بهم للإشارة بوضوح إلى الاتجاهات.
برمجة الكتل
قم بالتبديل إلى عرض الكتل وأضف المنطق التالي. تتعامل هذه الكتل مع اختيار جهاز Bluetooth، والاتصال، وإرسال أوامر الحركة عند الضغط على الأزرار وتحريرها.
عندما ListPicker1.BeforePicking
اضبط ListPicker1.Elements على BluetoothClient1.AddressesAndNames
عندما ListPicker1.AfterPicking
إذا كان استدعاء BluetoothClient1.Connect عنوان ListPicker1.Selection
ثم قم بتعيين Label1.Text إلى "متصل"
وإلا قم بتعيين Label1.Text إلى "غير متصل"
عند ButtonForward.TouchDown
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "F"
عند ButtonBackward.TouchDown
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "B"
عندما ButtonLeft.TouchDown
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "L"
عندما ButtonRight.TouchDown
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "R"
عند ButtonForward.TouchUp
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "S"
عند ButtonBackward.TouchUp
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "S"
عندما ButtonLeft.TouchUp
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "S"
عند ButtonRight.TouchUp
إذا كان BluetoothClient1.IsConnected
استدعاء BluetoothClient1.SendText النص "S"

فهم منطق الكتلة
منتقي القائمة.قبل الانتقاء: في الأساس، عندما ينقر المستخدم على ListPicker، فإنه يقوم بملء القائمة بجميع عناوين وأسماء أجهزة Bluetooth المقترنة من عميل BluetoothClient1.AddressesAndNames.
ListPicker.AfterPicking: بمجرد قيام المستخدم بتحديد جهاز، يحاول التطبيق الاتصال باستخدامه BluetoothClient1.Connect مع العنوان المحدد. إذا نجحت، التسمية 1.Text تم ضبطه على "متصل"؛ وإلا فإنه يظهر "غير متصل". ولهذا السبب يجب أن يكون مكون Label1 موجودًا في الواجهة الخاصة بك.
أحداث اللمس: عندما يضغط المستخدم (يلمس) زر الاتجاه، يرسل التطبيق حرف الأمر المقابل (F أو B أو L أو R) عبر BluetoothClient1.SendText، ولكن فقط إذا كان اتصال Bluetooth نشطًا.
أحداث اللمس: عندما يقوم المستخدم بتحرير (رفع إصبعه من) أي زر اتجاه، يرسل التطبيق "S" (توقف). ونتيجة لذلك، يتحرك الروبوت فقط أثناء الضغط على الزر ويتوقف فورًا عند تحريره، مما يمنحك تحكمًا دقيقًا في الوقت الفعلي.
الخطوة 8: توصيل الروبوت واختباره
في هذه المرحلة، يتم تجميع الأجهزة، ويتم تحميل الكود، ويكون التطبيق على هاتفك. الوقت لوضع كل ذلك معا.
قم بإقران HC-05
أولاً، قم بتشغيل Bluetooth على هاتفك الذكي الذي يعمل بنظام Android وانتقل إلى إعدادات Bluetooth. ثم ابحث عن أجهزة جديدة. عند هذه النقطة، سيظهر HC-05 باسم "HC-05" في القائمة. قم بإقرانه باستخدام رمز PIN الافتراضي 1234 (أو 0000 في بعض الوحدات). وبعد ذلك، لن تحتاج إلا إلى الاقتران مرة واحدة لأن الهاتف سيتذكر الجهاز.
الاتصال والقيادة
بعد ذلك، افتح تطبيق RobotCarControl على هاتفك. اضغط على منتقي القائمة "تحديد جهاز Bluetooth" واختر HC-05 من القائمة. إذا نجح الأمر، فيجب أن يعرض Label1 "متصل". الآن اضغط على أزرار الاتجاهات لقيادة السيارة. يجب أن يتحرك الروبوت للأمام، للخلف، للانعطاف يسارًا، يمينًا، ويتوقف عند تحرير الأزرار.
كيفية اختبار وضبط السيارة الروبوتية
بمجرد الانتهاء من البناء، ربما ستحتاج إلى إجراء بعض الضبط قبل أن تسير السيارة بالطريقة التي تريدها. فيما يلي بعض النصائح العملية لمساعدتك في القيام بذلك بشكل صحيح.
- اختبار اتجاه واحد في وقت واحد. ابدأ بإرسال الأمر F فقط للتأكد من دوران العجلات الأربع للأمام. بعد ذلك، قم باختبار B وL وR بشكل فردي.
- تحقق من اتجاه المحرك الأيسر/الأيمن. إذا انحرفت السيارة إلى جانب واحد أثناء القيادة للأمام، فقد يتم توصيل زوج محرك واحد بالعكس. قم بتبديل السلكين عند طرف المحرك المتأثر على الدرع.
- تقليل السرعة خلال الاختبارات الأولى. مجموعة
السرعة المحددة(120)بدلاً من 255. وهذا يمنحك المزيد من وقت رد الفعل ويمنع حدوث أعطال أثناء الاختبار الداخلي. - إصلاح اتجاه الدوران الخاطئ. وبالمثل، إذا كان "يسار" يدير السيارة إلى اليمين، فقم بتبديل تعيينات المحرك الأيسر والأيمن في الكود (قم بتغيير منطق M1/M2 إلى M3/M4 والعكس صحيح)، أو قم بتبديل أسلاك المحرك فعليًا.
- تحسين الاستجابة. إذا شعرت أن السيارة بطيئة أو متأخرة، فتأكد من أن معدل الباود HC-05 يطابق معدل الباود التسلسلي لـ Arduino (9600). تأكد أيضًا من أن البطاريات جديدة، لأن الجهد المنخفض يسبب استجابة بطيئة للمحرك.
استكشاف المشكلات الشائعة وإصلاحها
إذا كانت السيارة الروبوتية التي يتم التحكم فيها عن طريق البلوتوث لا تعمل كما هو متوقع، فتحقق من المشكلات أدناه أولاً. في معظم الحالات، تكون المشكلة عبارة عن خطأ بسيط في توصيل الأسلاك أو عدم تطابق التكوين.
أزواج HC-05 لكن السيارة لا تتحرك
تم إنشاء اتصال Bluetooth، لكن المحركات لا تستجيب. على وجه الخصوص، تأكد من توصيل طرف HC-05 TXD بـ Arduino RX (pin 0) و RXD إلى Arduino TX (pin 1). تحقق أيضًا من أن معدل البث بالباود في كود Arduino الخاص بك يتطابق مع HC-05 الافتراضي (9600). تأكد أيضًا من تثبيت درع المحرك بشكل صحيح على Arduino ومن توصيل حزمة البطارية وتشغيلها.
فشل تحميل Arduino (تعارض RX/TX)
إذا حصلت على أخطاء في التحميل مثل "avrdude: stk500_getsync(): not in sync"، فمن المحتمل أن يكون HC-05 متصلاً بالطرفين 0 و1. لإصلاح ذلك، افصل أسلاك HC-05 RX وTX، وقم بتحميل المخطط، ثم أعد توصيلهما. هذه هي المشكلة الأكثر شيوعًا عند استخدام الأجهزة التسلسلية مع وحدة Bluetooth.
يتحرك الروبوت في الاتجاه الخاطئ
على سبيل المثال، إذا كانت السيارة للأمام تدفع السيارة للخلف، قم بتبديل السلكين لجميع المحركات الأربعة عند أطراف درع المحرك. وبالمثل، إذا انعطفت السيارة عكس الاتجاه المتوقع، قم بتبديل توصيلات المحرك من الجانب الأيسر والأيمن أو اضبط الكود.
جانب واحد من السيارة لا يتحرك
أولاً، تحقق من الأسلاك على الجانب غير العامل. تأكد من إدخال أسلاك المحرك بإحكام في أطراف البراغي وأن البراغي الطرفية مشدودة. يمكنك أيضًا اختبار المحركات بشكل فردي عن طريق تشغيل المحرك 1 أو المحرك 3 فقط في الكود. في حالة تلف أحد الأطراف الموجودة على الدرع، حاول استخدام طرف M مختلف.
يتصل التطبيق ولكن الأزرار لا تفعل شيئًا
أولاً، تأكد من أن التطبيق يرسل الأحرف الصحيحة (F، B، L، R، S). في MIT App Inventor، تأكد من ربط مكون BluetoothClient بشكل صحيح في الكتل وأن SendText يستخدم الأحرف الكبيرة الدقيقة التي يتوقعها كود Arduino. وأخيرًا، تأكد من أن Label1 يعرض "متصل" بعد الاقتران.
المحركات ضعيفة أو غير متناسقة
في معظم الحالات، تشير المحركات الضعيفة إلى وجود مشكلة في الطاقة. كخطوة أولى، استبدل البطاريات بأخرى جديدة أو قم بالتبديل إلى مجموعة بطاريات ذات سعة أعلى. نظرًا لأن أربعة محركات تعمل بالتيار المستمر تحت الحمل تسحب تيارًا كبيرًا، فإن البطاريات المستنفدة لا يمكنها توفير ما يكفي من التيار. في الوقت نفسه، تحقق من جميع توصيلات الطاقة للتأكد من عدم وجود أسلاك مفككة.
يستمر الروبوت في التحرك بعد تحرير الزر
إذا حدث ذلك، فهذا يعني أن أمر الإيقاف (S) لا يتم إرساله أو استلامه عندما ترفع إصبعك. في التطبيق، تأكد من أن كل زر يحتوي على كتلة TouchDown (لإرسال أمر الحركة) وكتلة TouchUp (لإرسال "S"). بدون هذه الكتل، لن يتلقى Arduino أبدًا أمر الإيقاف.
طاقة البطارية غير كافية
إذا تمت إعادة ضبط Arduino عند بدء تشغيل المحركات أو تصرفت السيارة بشكل غير منتظم، فلن تتمكن حزمة البطارية من توفير التيار الكافي. بدلاً من ذلك، استخدم حزمة مصنفة لإخراج مستمر لا يقل عن 2 أمبير. على سبيل المثال، تعمل بطاريات NiMH AA القابلة لإعادة الشحن أو حزمة 2S Li-ion المزودة بنظام BMS بشكل جيد للسيارات الآلية ذات الأربعة محركات.
الأسئلة الشائعة (FAQ)
نعم. يعمل HC-06 كوحدة بلوتوث تابعة فقط، وهو بالضبط ما يحتاجه هذا المشروع. معدل الأسلاك والباود هو نفسه. والفرق الوحيد هو أن HC-06 لا يمكنه بدء الاتصالات، ولكن بما أن الهاتف يبدأ دائمًا، فهذا لا يهم. انظر لدينا مقارنة HC-05 مقابل HC-06 للحصول على التفاصيل.
يستخدم هذا البرنامج التعليمي تطبيقًا مخصصًا تم إنشاؤه باستخدام MIT App Inventor، والذي يمنحك التحكم الكامل في الواجهة وتعيين الأوامر. وبدلاً من ذلك، يمكنك استخدام تطبيقات Bluetooth التسلسلية العامة من متجر Google Play، ولكنك ستحتاج إلى كتابة أحرف الأوامر (F، B، L، R، S) يدويًا بدلاً من الضغط على الأزرار.
ليس مباشرة. يستخدم HC-05 تقنية Bluetooth Classic (SPP)، والتي لا يدعمها iOS لتطبيقات الطرف الثالث. للتحكم في السيارة من جهاز iPhone، ستحتاج إلى استبدال HC-05 بوحدة BLE (Bluetooth منخفضة الطاقة) مثل HM-10 أو استخدام ESP32 مع دعم BLE، وتعديل التطبيق وفقًا لذلك.
هذه دائمًا تقريبًا مشكلة تتعلق بالطاقة. عندما تبدأ جميع المحركات الأربعة في وقت واحد، يمكن أن يؤدي ارتفاع التيار إلى انخفاض جهد الإمداد إلى ما دون الحد الأدنى لاردوينو، مما يؤدي إلى إعادة التعيين. استخدم حزمة بطارية ذات سعة تيار أعلى، وتأكد من أن قوة المحرك وطاقة Arduino يشتركان في أرضية مشتركة ولكن من الأفضل أن تأتي من مصدر يمكنه التعامل مع الحمل.
نعم، ولكن مكتبة التعليمات البرمجية مختلفة. يستخدم درع V2 Adafruit_MotorShield مكتبة (تعتمد على I2C) بدلاً من AFMotor.h. يتشابه تخطيط الأسلاك وطرف المحرك، لكنك ستحتاج إلى إعادة كتابة أجزاء تهيئة المحرك والتحكم في الكود لاستخدام واجهة برمجة تطبيقات مكتبة V2.
أسئلة الأجهزة والمكتبة
يبلغ مدى نموذج HC-05 حوالي 10 أمتار (30 قدمًا) في الهواء الطلق. يمكن أن تؤدي الجدران والتداخل من أجهزة توجيه Wi-Fi وأجهزة Bluetooth الأخرى إلى تقليل هذا النطاق. بالنسبة لمعظم مشاريع سيارات الروبوت الداخلية، فإن 10 أمتار أكثر من كافية.
يمكنك إضافة شريط تمرير في MIT App Inventor يرسل قيمة السرعة (على سبيل المثال، من 0 إلى 255) كأمر منفصل. في كود Arduino، اقرأ هذه القيمة واتصل بها motorX.setSpeed(القيمة) لجميع المحركات الأربعة. استخدم بادئة أمر مختلفة (مثل "V" متبوعة بالرقم) للتمييز بين أوامر السرعة وأوامر الاتجاه.
نعم. بالنسبة للسيارة ذات الدفع الثنائي، قم بتوصيل المحركين بـ M1 وM3 (أو أي طرفين، واحد لكل جانب). قم بإزالة الكائنات الحركية غير المستخدمة من الكود أو اتركها محددة ولكن غير متصلة. يبقى منطق الدوران والقيادة كما هو.
إذا دارت السيارة في دوائر أثناء إصدار أمر للأمام، فسيتم توصيل أحد جانبي المحركات في الاتجاه المعاكس. قم بتبديل السلكين للمحركات الموجودة على الجانب الذي يدور بطريقة خاطئة عند أطراف لولب الدرع.
نعم. أنت بحاجة إلى مكتبة Adafruit Motor Shield (AFMotor.h). في Arduino IDE، انتقل إلى Sketch > Include Library > Manage Libraries، وابحث عن "Adafruit Motor Shield Library"، وقم بتثبيته. هذه المكتبة مطلوبة ل AF_DCMotor الفئة المستخدمة في الكود.
الموارد والمشاريع القادمة
الآن وبعد الانتهاء من البناء الأساسي، إليك بعض البرامج التعليمية ذات الصلة بـ OmArTronics إذا كنت تريد الاستمرار:
- HC-05/HC-06 برنامج تعليمي كامل لوحدة بلوتوث Arduino - تعمق في الاتصال التسلسلي عبر Bluetooth، والتحكم في مصابيح LED، والتحكم في المصابيح المستندة إلى التتابع باستخدام تطبيق MIT App Inventor.
- بالإضافة إلى ذلك، برنامج تشغيل المحرك L298N مع Arduino: دليل التحكم في محرك التيار المستمر - فهم قيادة محرك H-bridge، والتحكم في سرعة PWM، ومنطق الاتجاه لمحركات التيار المستمر.
- بناء سيارة روبوت لتجنب العقبات باستخدام الأردوينو - إضافة أجهزة استشعار بالموجات فوق الصوتية ونظام ملاحة مستقل إلى منصة سيارة روبوتية مماثلة.
- سيارة روبوت متطورة ذاتية التحكم وبلوتوث مع Arduino Mega - قم بالارتقاء إلى Arduino Mega باستخدام أجهزة استشعار متعددة بالموجات فوق الصوتية وأوضاع تحكم مستقلة وبلوتوث.
- بناء روبوت يتبع الخط باستخدام مستشعرات KY-033 - بناء روبوت يتتبع الخطوط بشكل مستقل باستخدام أجهزة استشعار تعمل بالأشعة تحت الحمراء.
- روبوت يتبع الخط مع مستشعر TCS34725 RGB - الترقية إلى مستشعر الألوان RGB مع التحكم PID لتتبع الخط بشكل أكثر سلاسة.
- دليل التحكم المؤازر الأردوينو: SG90، و PWM، و PCA9685 – تعلم أساسيات محرك سيرفو لإضافة التوجيه أو حامل المستشعر إلى الروبوت الخاص بك.
- أساسيات برمجة الأردوينو: الدليل الكامل للمبتدئين - إذا كنت جديدًا على Arduino، فابدأ هنا لتتعلم IDE وهيكل المخطط والمفاهيم الأساسية.
إذا كنت تريد المضي قدمًا، فيمكنك إضافة ميزة تجنب العوائق باستخدام مستشعر بالموجات فوق الصوتية، أو تركيب كاميرا لقيادة FPV، أو التبديل إلى ESP32 للتحكم في Wi-Fi ونطاق أفضل.
الخاتمة
في هذا البرنامج التعليمي، قمت ببناء سيارة روبوت كاملة يتم التحكم فيها عن طريق البلوتوث باستخدام Arduino وHC-05 وAdafruit Motor Shield من الألف إلى الياء. لقد قمت بتجميع هيكل للدفع الرباعي، وقمت بتوصيل أربعة محركات تعمل بالتيار المستمر من خلال Adafruit Motor Shield، وقمت بتوصيل HC-05 للاتصال اللاسلكي عبر Bluetooth، وكتبت كود Arduino لتفسير أوامر الحركة، وأنشأت تطبيقًا مخصصًا للتحكم في Android باستخدام MIT App Inventor.
وعلى طول الطريق، اكتسبت خبرة عملية في التحكم في المحركات، والاتصالات اللاسلكية، وتطوير التطبيقات الأساسية. من هنا، يمكنك توسيع السيارة من خلال تجنب العوائق بشكل مستقل، أو إضافة التحكم في السرعة عبر التطبيق، أو الترقية إلى منصة Arduino Mega الأكثر قوة مع أجهزة استشعار إضافية. تحقق من البرنامج التعليمي المتقدم لسيارة روبوت ذاتية القيادة أو مشروع سيارة روبوت لتجنب العوائق لبناء الخاص بك المقبل.
إذا واجهت أي مشاكل أو لديك أسئلة، قم بإسقاط تعليق أدناه. يمكنك أيضًا التحقق من منتجاتنا الأخرى دروس اردوينو لمزيد من المشاريع لمحاولة.
رأي واحد حول “Building a Bluetooth-Controlled Robot Car with Arduino, HC-05, and Adafruit Motor Shield”