- المكونات المطلوبة:
- مخطط الرسم البياني:
- 8051 متحكم:
- وحدة بلوتوث HC-05:
- L293D Motor Driver IC:
- عمل الروبوت الذي يتحكم فيه هاتف Android:
- شرح الكود:
في هذا المشروع ، سنقوم ببناء روبوت يتم التحكم فيه بواسطة هاتف Android باستخدام متحكمات 8051 ووحدة Bluetooth. تم تصميم الروبوت باستخدام محركات DC وسيتم التحكم في اتجاه محركات التيار المستمر عن طريق الأوامر الواردة من تطبيق android. يتم إرسال حالة الروبوت مرة أخرى إلى تطبيق Android. سيساعد هذا المشروع أيضًا في ربط وحدة HC-05 Bluetooth بوحدة التحكم الدقيقة 8051. لقد استخدمنا بالفعل وحدة Bluetooth للتحكم في الأجهزة المنزلية باستخدام 8051.
المكونات المطلوبة:
- متحكم 8051 (AT89S52)
- وحدة بلوتوث HC-05
- سائق محرك L293D
- هيكل الروبوت
- دي سي موتورز (2)
- عجلات (2)
- عجلة الخروع
- أسلاك توصيل
- تطبيق بلوتوث محطة أندرويد
مخطط الرسم البياني:
8051 متحكم:
8051 microcontroller عبارة عن متحكم 8 بت يحتوي على 128 بايت من ذاكرة الوصول العشوائي (RAM) ، و 4 K بايت على ذاكرة القراءة فقط ، وجهازي توقيت ، ومنفذ تسلسلي واحد وأربعة منافذ 8 بت. 8052 متحكم هو امتداد للميكروكونترولر 8051. في هذا المشروع ، نستخدم متحكم AT89S52. يوضح الجدول أدناه مقارنة 8051 من أفراد الأسرة.
خاصية |
8051 |
8052 |
ROM (بالبايت) |
4K |
8 كيلو |
ذاكرة الوصول العشوائي (بايت) |
128 |
256 |
الموقتات |
2 |
3 |
دبابيس I / O |
32 |
32 |
منفذ تسلسلي |
1 |
1 |
مصادر المقاطعة |
6 |
8 |
وحدة بلوتوث HC-05:
HC-05 عبارة عن وحدة بلوتوث تسلسلية. يمكن تكوينه باستخدام أوامر AT. يمكن أن تعمل في ثلاثة تكوينات مختلفة (Master ، Slave ، Loop back). في مشروعنا سنستخدمه كعبيد. تتضمن ميزات وحدة HC-05 ،
- حساسية نموذجية -80 ديسيبل.
- معدل الباود الافتراضي: 9600 بت في الثانية ، 8 بتات بيانات ، 1 بت توقف ، بدون تماثل.
- رمز PIN للإقران التلقائي: رمز PIN الافتراضي "1234"
- لديها 6 دبابيس.
- تُستخدم دبابيس Vcc و Gnd لتشغيل HC-05.
- تُستخدم دبابيس Tx و Rx للتواصل مع المتحكم الدقيق.
- تمكين دبوس لتنشيط وحدة HC-05. عندما تكون منخفضة ، يتم تعطيل الوحدة
- مؤشر حالة أعمال دبوس الدولة. عندما لا يتم إقرانه / توصيله بأي جهاز Bluetooth آخر ، يومض LED باستمرار. عندما يتم توصيله / إقرانه بأي جهاز Bluetooth آخر ، يومض مؤشر LED مع تأخير مستمر لمدة ثانيتين.
L293D Motor Driver IC:
L293D هو محرك IC مزدوج الجسر H. يعمل هذا كمضخم حالي ، حيث يعمل خرج L293D على تشغيل محركات التيار المستمر. يحتوي على دائرتين يحملان في ثناياه عوامل جسر H. في الوضع الشائع للتشغيل ، يمكنه تشغيل محركي تيار مستمر في وقت واحد في كلا الاتجاهين. يوضح الجدول أدناه وصف دبوس L293D IC. فيما يلي بعض المشاريع التي تستخدم L293D Motor Driver.
دبوس الوصف
رقم الدبوس |
اسم |
وظيفة |
1 |
تمكين 1،2 |
تمكين دبوس للمحرك 1 |
2 |
المدخلات 1 |
المدخل 1 للمحرك 1 |
3 |
الإخراج 1 |
الناتج 1 للمحرك 1 |
4 |
Gnd |
الأرض (0 فولت) |
5 |
Gnd |
الأرض (0 فولت) |
6 |
الإخراج 2 |
الناتج 2 للمحرك 1 |
7 |
المدخلات 2 |
الإدخال 2 للمحرك 1 |
8 |
Vcc 2 |
جهد إمداد المحركات (5 فولت) |
9 |
تمكين 3،4 |
تمكين دبوس للمحرك 1 |
10 |
المدخلات 3 |
المدخل 1 للمحرك 2 |
11 |
الإخراج 4 |
الناتج 1 للمحرك 2 |
12 |
Gnd |
الأرض (0 فولت) |
13 |
Gnd |
الأرض (0 فولت) |
14 |
الإخراج 4 |
الناتج 2 للمحرك 2 |
15 |
المدخلات 4 |
المدخلات 2 للمحرك 2 |
16 |
Vcc 1 |
جهد الإمداد (5 فولت) |
عمل الروبوت الذي يتحكم فيه هاتف Android:
في هذا الروبوت الذي يتم التحكم فيه بواسطة الهاتف الذكي ، يرسل مستخدم تطبيق android البيانات إلى متحكم 8051 من خلال وحدة HC-05. تتم مقارنة البيانات المستلمة في متحكم 8051 ويتم اتخاذ القرار وفقًا لذلك. يوضح الجدول أدناه اتجاه المحركات وحالة الروبوت للأحرف المستلمة المختلفة.
تلقى الطابع |
المحرك 1 |
المحرك 2 |
حالة الروبوت |
F |
إلى الأمام |
إلى الأمام |
يتحرك إلى الأمام |
ب |
الى الوراء |
الى الوراء |
يتحرك للخلف |
ص |
إلى الأمام |
الى الوراء |
يتحرك لليمين |
ل |
الى الوراء |
إلى الأمام |
تحرك الى اليسار |
س |
إيقاف |
إيقاف |
توقفت |
و بلوتوث محطة التطبيق يسمح لنا لمضاهاة المحطة بلوتوث. يدعم هذا التطبيق الاتصال ثنائي الاتجاه وهذا التطبيق متوافق مع معظم الأجهزة.
توضح الخطوات أدناه كيفية تثبيت هذا التطبيق واستخدامه.
1. قم بتنزيل وتثبيت تطبيق Bluetooth Terminal على هاتف Android الخاص بك. يمكن تنزيل التطبيق من الرابط أدناه.
play.google.com/store/apps/details؟id=ptah.apps.bluetoothterminal
2. بعد تثبيت التطبيق ، افتح التطبيق وقم بتشغيل Bluetooth.
3. حدد الجهاز وانقر على خيار الاتصال. بعد الاتصال الناجح ، يمكننا البدء في إرسال البيانات إلى وحدة HC-05.
تحقق من شرح الكود أدناه لمعرفة كيفية إرسال الشخصية واستلامها بواسطة متحكم 8051 لتدوير المحركات المطلوبة.
شرح الكود:
يتم تقديم برنامج C الكامل والفيديو التوضيحي لهذا المشروع في نهاية هذا المشروع. يتم تقسيم الكود إلى أجزاء صغيرة ذات معنى وموضح أدناه.
بالنسبة للتفاعل L293D مع متحكمات 8051 ، يتعين علينا تحديد المسامير التي يتصل بها L293D بمتحكم 8051. يتم توصيل دبوس In1 للمحرك 1 بـ P2.0 ، دبوس In2 للمحرك 1 متصل بـ P2.1 ، دبوس In1 للمحرك 2 متصل بـ P2.2 ، دبوس In2 للمحرك 2 متصل بـ P2.3
sbit m1f = P2 ^ 0 ؛ // in1 pin of motor1 sbit m1b = P2 ^ 1 ؛ // in2 pin of motor1 sbit m2f = P2 ^ 2 ؛ // in1 pin of motor2 sbit m2b = P2 ^ 3 ؛ // in2 دبوس المحرك 2
بعد ذلك علينا تحديد بعض الوظائف التي يتم استخدامها في البرنامج. يتم استخدام وظيفة التأخير لإنشاء تأخير زمني محدد. تُستخدم وظيفة Txdata لنقل البيانات عبر المنفذ التسلسلي. تُستخدم وظيفة Rxdata لتلقي البيانات من المنفذ التسلسلي.
تأخير باطل (غير موقع int) ؛ // وظيفة لإنشاء تأخير شار rxdata (باطل) ؛ // وظيفة لتلقي حرف من خلال المنفذ التسلسلي لـ 8051 void txdata (حرف غير موقّع) ؛ // وظيفة لإرسال حرف عبر المنفذ التسلسلي 8051
في هذا الجزء من الكود ، سنقوم بتكوين متحكم 8051 للاتصال التسلسلي. يتم تحميل سجل TMOD بـ 0x20 للمؤقت 1 ، الوضع 2 (إعادة التحميل التلقائي). يتم تحميل سجل SCON بـ 0x50 لـ 8 بتات بيانات و 1 بت توقف وتمكين استقبال. يتم تحميل سجل TH1 بـ 0xfd لمعدل باود يبلغ 9600 بت في الثانية. يتم استخدام TR1 = 1 لبدء الموقت.
TMOD = 0x20 ؛ SCON = 0x50 ؛ TH1 = 0xfd ؛ TR1 = 1 ؛ في هذا الجزء من الكود ، يتم تخزين الحرف الذي تم إرجاعه لوظيفة rxdata في المتغير 's' لمزيد من الاستخدام.
s = rxdata () ؛ // تلقي البيانات التسلسلية من وحدة البلوتوث hc-05
في هذا الجزء من الكود ، يتعين علينا مقارنة الحرف المستلم بالأحرف المعينة مسبقًا لاتجاهات مختلفة. إذا كان الحرف الذي تم استلامه هو "f" ، فيجب أن يتحرك الروبوت في الاتجاه الأمامي. يتم تحقيق ذلك عن طريق جعل دبابيس m1f و m2f عالية و m1b و m2b منخفضة. بمجرد الانتهاء من ذلك ، يتعين علينا بعد ذلك إرسال حالة الروبوت إلى تطبيق android. يتم ذلك بمساعدة وظيفة txdata . يتم تكرار نفس العملية للأحرف المختلفة المستلمة ويتم اتخاذ القرار وفقًا لذلك يوضح الجدول 1 قيمًا مختلفة لـ m1f و m1b و m2f و m2b لاتجاهات مختلفة من حركة الروبوت.
إذا (s == 'f') // حرك كلا المحركين في الاتجاه الأمامي {m1f = 1 ؛ تأخير (1) ؛ m1b = 0 ؛ تأخير (1) ؛ m2f = 1 ؛ تأخير (1) ؛ m2b = 0 ؛ تأخير (1) ؛ لـ (i = 0؛ msg1! = '\ 0'؛ i ++) // أرسل حالة الروبوت إلى تطبيق android عبر البلوتوث {txdata (msg1) ؛ }}
م 1 و |
m1b |
m2f |
م 2 ب |
دوران المحرك 1 |
دوران المحرك 2 |
حالة الروبوت |
1 |
0 |
1 |
0 |
إلى الأمام |
إلى الأمام |
تحرك للأمام |
0 |
1 |
0 |
1 |
يعكس |
يعكس |
العودة الى الوراء |
1 |
0 |
0 |
1 |
إلى الأمام |
يعكس |
التحرك الصحيح |
0 |
1 |
1 |
0 |
يعكس |
إلى الأمام |
تتحرك إلى اليسار |
0 |
0 |
0 |
0 |
توقفت |
توقفت |
توقفت |
هذا يمكنك تدوير سيارة الروبوت في أي اتجاه عن طريق التحكم في المحركات الأربعة باستخدام متحكم 8051. يمكن أيضًا التحكم في هذا الروبوت باستخدام DTMF مع 8051 ، إذا لم يكن لديك هاتف android.
تحقق أيضًا من جميع مشاريع الروبوتات هنا.