تصميم روبوت التحكم عن طريق الصوت

0

 بسم الله الرحمن الرحيم

بعد ان قمنا فى المشروع السابق بالتحكم بالروبوت بالصوت عن طريق البلوتوث يمكن الإطلاع عليها من هنا


سنفوم اليوم بتصميم مشروع التحكم بالروبوت عن طريق الصوت بدون بلوتوث 

اولا الهدف من المشروع :

الهدف من هذا المشروع هو التحكم باجهزة المنزل مثل المصباح الكهربائى عن طريق الأوامر الصوتية 
وسنتحكم فى هذا المشروع فى 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);
من ثم عمل مقارنات على الإشارة القادمة من الموديول 
فاذا كانت الإشارة هى للصوت الأول قم بجعل الروبوت يتحرك الى الأمام 
وهكذا الى اخر الكود 

لاى استفسارات اتركها فخانة التعليقات

لتحميل الكود اضغط هنا

تصميم : بلال حسان سعدى 


لا يوجد تعليقات

أضف تعليق