بسم الله الرحمن الرحيم
بعد ان قمنا فى المشروع السابق بالتحكم بالروبوت بالصوت عن طريق البلوتوث يمكن الإطلاع عليها من هنا
سنفوم اليوم بتصميم مشروع التحكم بالروبوت عن طريق الصوت بدون بلوتوث
اولا الهدف من المشروع :
الهدف من هذا المشروع هو التحكم باجهزة المنزل مثل المصباح الكهربائى عن طريق الأوامر الصوتية
وسنتحكم فى هذا المشروع فى 4 اجهزة تعمل على 220 فولت متردد
اولا الأدوات :
voice recognition module
arduino uno
h-bridge
dc motor
voice recognition module
هذا الموديول هو المسئول عن تفسير الصوت البشرى وعمل مقارنة له عن طريق اصوات مسجله فعلا فى الذاكرة الخاصه به
arduino uno
المتحكم الدقيق الذى سنستخدمه فى هذا المشروع والذى الغرض منه معالجة البيانات
h-bridge
استخدمت هذه الشريحة لكى يتم التحكم فى مواتير dc
ويمنع منعا باتا توصيل مواتير dc بطريقة مباشرة مع الأردوينو لتجنب حرق الأردوينو
dc motor
هو احد انواع المواتير التى تستخدم فى تحريك الروبوت والتى سيتم التحكم بها
والبطارية هى منفذ الطاقة الذى سيمد الأردوينو وشريحة h-bridge
بالطاقة
ثانيا التوصيلات :
ما تلاحظون التوصيلات ليست بالأمر المعقد ابدا كل ما عليكم اتباع الصور الأتيه
حيث قمت بتوصيل h bridge بمصدر جهد خارجى وقمت بتوصيل منافذ التحكم الى المنافذ الرقمية الخاصة بالأردوينو
وقمت بتوصيل شريحة مسجل الأصوات الى الأردوينو كما هو موضح فى الأعلى
يجب توصيل منافذ en الى المنافذ الرقمية وتكون هذه المنافذ هى المسؤلة عن تشغيل المواتير
ونتجه الأن الى تركيب جسم الروبوت
اولا نحضر مثل هذا المجسم لا تهم المادة المصنعة لكن المهم هو ان تكون المادة وزنها خفيف
ونقوم بتوصيل المواتير بالعجلات كما هو موضح بالصورة
ونقوم بلصق المواتير كما هو موضح فى الصورة
فينتج لدينا هذا الشكل
كل ما عليكم وضع باقى التوصيلات على هذا المجسم وهذا الأمر يقف على حسب مهارتكم
ثالثا إضافة الأصوات:
سنستخدم فى اضافة شريحة usb to ttl device
فى البداية يجب توصيل voice recantation مع usb to ttl بهذه الطريقة لتحميل الأصوات الى الكمبيوتر ثم توصيل الجانب الأخر من usb to ttl الى الكمبيوتر
ثم الدخول الى manage لمعرفة المنفذ الذى سيتم توصيل به usb to ttl فى الكمبيوتر
ثم تحميل برنامج stud.com الذى سنستخدمه لرفع الأصوات الى الشريحة
ويمكن تحميله من الموقع الرسمى من هنا
كما ترون الواجهه الرئيسية للبرنامج فى البداية يجب تغيير
من char الى hex التان يوجدان فى المربع الأسود
ثم اتباع الخطوات التاليه :
فى المربع الأول يجب تغيير المنفذ الى المنفذ الخاص ب usb to ttl الذي حصلنا عليه من manage
ثم تحديد سرعه الإتصال من المربع الثانى والتى ستكون من 9600
ثم تغيير
char format الى hex format كما هو موضح فى المربع الثالث
اولا : aa36
ثم اضغط على زر send
ثانيا : aa11
ثم اضغط على زر send ثم قم بتحدث واتباع الذى سيعرض امامك
يجب تسجيل الأصوات بترتيب
forward
back
right
left
stop
وان اختلف الترتيب سيحدث خلل فى التنفيذ
ثالثا : aa21
ثم اضغط على زر send يقوم هذا الأمر بتحميل الأصوات التى قمت بتسجيلها على الموديول الخاص بنا
بعد الإنتهاء من هذه العملية قم بتفكيك الموديول من usb to ttl
ملحوظة : يتحمل هذا الموديول حوالى 15 صوت فقط ولكن البرنامج سيبلغك عند امتلاء السعة التخزينية الخاصه بالموديول
رابعا الكود :
#include <SoftwareSerial.h>
SoftwareSerial voice(2,3);
#define IN1 9//controll motor pins
#define IN2 8
#define IN3 7
#define IN4 6
#define ENA 10
#define ENB 5
byte com = 0;
void setup() {
// for voice recognithion module
voice.begin(9600);
voice.write(0xAA);
voice.write(0x37);
delay(1000);
voice.write(0xAA);
voice.write(0x21);
//end of voice reconithation module
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);
}
void loop() {
while(voice.available()) {
com = voice.read();
switch(com) {
case 0x11:
forward();
break;
case 0x12:
reverse();
break;
case 0x13:
right();
break;
case 0x14:
left();
break;
case 0x15:
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);
}
اولا اضافة مكتبة بروتوكول UART عن طريق
#include <SoftwareSerial.h>
ثم تعريف المنافذ الخاصه ب الموديول عن طريق
SoftwareSerial voice(8,9);
ثم كتابة الأكواد الأساسية التى الغرض منها تهيئة الموديول عن طريق
voice.begin(9600);
voice.write(0xAA);
voice.write(0x37);
delay(1000);
voice.write(0xAA);
voice.write(0x21);
من ثم القيام ببعض التعريفات الخاصه بالدرايفر
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);
من ثم عمل مقارنات على الإشارة القادمة من الموديول
فاذا كانت الإشارة هى للصوت الأول قم بجعل الروبوت يتحرك الى الأمام
وهكذا الى اخر الكود
لاى استفسارات اتركها فخانة التعليقات
لتحميل الكود اضغط هنا
لا يوجد تعليقات
أضف تعليق