بسم الله الرحمن الرحيم
بعد ان قمنا المره السابقة بتصميم روبوت يتم التحكم به عن طريق البلوتوث عليه اضغط هنا
سنقوم اليوم بعمل تصميم روبوت سيارة يتم التحكم به عن طريق الصوت من خلال تطبيق من البلوتوث لكى نستطيع اضافة له العديد من الإضافات مما يجعله من الممكن استخدامه فى العديد من التطبيقات
اولا الأدوات :
arduino uno
h-bridge
hc-05
dc motors
h-bridge
استخدمت هذه الشريحة لكى يتم التحكم فى مواتير dc
ويمنع منعا باتا توصيل مواتير dc بطريقة مباشرة مع الأردوينو لتجنب حرق الأردوينو
dc motor
هو احد انواع المواتير التى تستخدم فى تحريك الروبوت والتى سيتم التحكم بها
HC-05 bluetooth
هذه شريحة البلوتوث الى سيتم استخدامها لنقل البيانات بين الهاتف و الأردوينو وهى تتميز بقدرتها على ارسال وإستلام البيانات على عكس نظيرتها HC-06 التى تستطيع ارسال البيانات فقط
الأردوينو فأى نوع كافى ووافى سنستخدم فى مشروعنا اردوينو اونو
والبطارية هى منفذ الطاقة الذى سيمد الأردوينو وشريحة h-bridge
بالطاقة
ثانيا التوصيلات :
كما تلاحظون التوصيلات ليست بالأمر المعقد ابدا كل ما عليكم اتباع الصور الأتيه
حيث قمت بتوصيل h bridge بمصدر جهد خارجى وقمت بتوصيل منافذ التحكم الى المنافذ الرقمية الخاصة بالأردوينو
وقمت بتوصيل شريحة البلوتوث واستخدمت مقاومتان لتقليل الجهد الداخل على منفذ rx
يجب توصيل منافذ en الى المنافذ الرقمية وتكون هذه المنافذ هى المسؤلة عن تشغيل المواتير
ونتجه الأن الى تركيب جسم الروبوت
اولا نحضر مثل هذا المجسم لا تهم المادة المصنعة لكن المهم هو ان تكون المادة وزنها خفيف
ونقوم بتوصيل المواتير بالعجلات كما هو موضح بالصورة
ونقوم بلصق المواتير كما هو موضح فى الصورة
فينتج لدينا هذا الشكل
كل ما عليكم وضع باقى التوصيلات على هذا المجسم وهذا الأمر
يقف على حسب مهارتكم
هذا التصميم مشابه للتصميم الذي موجود فى المشروع الأخر
ثالثا : الكود :
#include<SoftwareSerial.h>
SoftwareSerial bt(2,3); //rx tx
#define IN1 12//controll motor pins
#define IN2 11
#define IN3 10
#define IN4 9
#define ENA 8
#define ENB 7
char data ;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
digitalWrite(ENA, 1);
pinMode(ENB, 1);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
bt.begin(9600);
}
void loop() {
if(bt.available()>0){
data= bt.read();
switch(data){
case 'f':
forward();
break;
case 'b':
reverse();
break;
case 'r':
right();
break;
case 'l':
left();
break;
case 's':
stoprobot();
break;
}
}
}
void forward()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void reverse()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void left()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void right()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void stoprobot()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
فى البداية اضافة المكتبة الأساسية للعمل عن طريق
#include<SoftwareSerial.h>
ثم تعريف شريحة البلوتوث الى المكتبة عن طريق
SoftwareSerial bt(2,3); //rx tx
ثم تعريف منافذ الخاصه بالدرايفر عن طريق
#define IN1 12//controll motor pins
#define IN2 11
#define IN3 10
#define IN4 9
#define ENA 8
#define ENB 7
من ثم تعريف المنافذ كمخارج
ندخل الأن الى كود void loop
فى البداية التاكد من حالة شريحة البلوتوث اذا كانت متاحه ام لا
ثم اخذ القراءة من هذه الشريحة وجعله فى متغير
if(bt.available()>0){
data= bt.read();
من ثم عمل مقارنة البيانات اذا كانت البيانات تساوى f
قم باستدعاء داله التقدم الى الأمام وهكذا الى اخره
رابعا التطبيق :
التطبيق الذي قمت بتصميمه على الهاتف المحمول عند
يتحرك الريبوت الى الأمام forwardعند نطق بكلمة
يتحرك الريبوت الى الخلف back عند نطق بكلمة
يتحرك الريبوت الى اليمين rightعند نطق بكلمة
يتحرك الريبوت الى اليسار leftعند نطق بكلمة
لتحميل الكود والتطبيق اضغط هنا
جميل اوى اوى 💛💜 انا مرتضى 🥳
ردحذفشكرا يا مرتضى :)
حذف