التحكم بالأجهزة المنزلية عن طريق الصوت

1

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

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

ان كنت نعم فهذه فرصتك لتحقيق حلمك 

وان كانت لا فهذه فرصه رائع لتطوير مهارتك و توسيع علمك 

ويعد هذا المشروع من احد مشاريع الأتمته 

يعد مجال الأتمته (Automation) من احد اهم المجالات التى توجد فى القرن 21 


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

الهدف من هذا المشروع هو التحكم باجهزة المنزل مثل المصباح الكهربائى عن طريق الأوامر الصوتية 
وسنتحكم فى هذا المشروع فى 4 اجهزة تعمل على 220 فولت متردد

ثانيا الأدوات :


voice recognition module
arduino uno
relay module 4x4
usb to ttl driver 

voice recognition module
هذا الموديول هو المسئول عن تفسير الصوت البشرى وعمل مقارنة له عن طريق اصوات مسجله فعلا فى الذاكرة الخاصه به 


arduino uno
المتحكم الدقيق الذى سنستخدمه فى هذا المشروع والذى الغرض منه معالجة البيانات

relay module 4x4
يتكون من 4 ريلايهات مدمجة على شريحة pcb ويعمل كل ملف منهم على 5 فولت مستمر 
ويتحمل فى حدود 250 فولت متردد
و 10 امبير



usb to ttl driver 
الوسيط الذى سنستخدمه لتحميل الأصوات التى سنصدرها للتحكم بالأجهزة 
وهو يعتمد على بروتوكول uart




ثالثا إضافة الأصوات:

فى البداية يجب توصيل 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 ثم قم بتحدث واتباع الذى سيعرض امامك 
ثالثا : aa21
ثم اضغط على زر send يقوم هذا الأمر بتحميل الأصوات التى قمت بتسجيلها على الموديول الخاص بنا
بعد الإنتهاء من هذه العملية قم بتفكيك الموديول من usb to ttl
ملحوظة : يتحمل هذا الموديول حوالى 15 صوت فقط ولكن البرنامج سيبلغك عند امتلاء السعة التخزينية الخاصه بالموديول

رابعا التوصيلات :













كما تلاحظون التوصيلات فى الأعلى يحتوى relay module على 6 منافذ هم :
vcc : 5v
IN4 : 2
IN3 : 3
IN2 : 4
IN1 : 5
GND : GND 
ويحتوى voice recognition على 4 منافذ هم
tx : 8
rx : 9
vcc : 5v
gnd : gnd

ثالثا الكود : 



#include <SoftwareSerial.h>

SoftwareSerial voice(8,9);
//RELAY PIN
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 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);

digitalWrite(IN1,0);
digitalWrite(IN2,0);
digitalWrite(IN3,0);
digitalWrite(IN4,0);
}

void loop() {

  while(voice.available()) {

  com = voice.read();

  switch(com) {

      case 0x11:   //command 1 is for TURN ON THE FIRST DEVICE

          digitalWrite(IN1,1);

      break;

      case 0x12:  //command 2 is for TURN OFF THE FIRST DEVICE

           digitalWrite(IN1,0);

      break;

      case 0x13:  //command 3 is  TURN ON THE SECONDE DEVICE

            digitalWrite(IN2,1);

      break;

      case 0x14:  //command 4 is for  TURN OFF THE SECONDE DEVICE
      
            digitalWrite(IN2,0); 

      break;

      case 0x15:  //command 5 is for  TURN ON THE THIRD DEVICE
      
            digitalWrite(IN3,1);

      break;
      case 0x16:  //command 5 is for  TURN OFF THE THIRD DEVICE
      
            digitalWrite(IN3,0);

      break;
      case 0x17:  //command 5 is for  TURN ON THE FOURTH DEVICE
      
            digitalWrite(IN4,1);

      break;
      case 0x18:  //command 5 is for  TURN OFF THE FOURTH DEVICE
   
            digitalWrite(IN4,0);

      break;

            }
      }
}

الهدف من هذا الكود هو : 

اولا اضافة مكتبة بروتوكول UART عن طريق  

#include <SoftwareSerial.h>

ثم تعريف المنافذ الخاصه ب الموديول عن طريق

SoftwareSerial voice(8,9);

تعريف المنافذ الخاصه بالريلاى عن طريق 

#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
وتعريف متغير نستلم فيه البيانات القادمه من الموديول 

byte com = 0;

وتعريف هذه المنافذ كخرج 
ثم كتابة الأكواد الأساسية التى الغرض منها تهيئة الموديول  عن طريق
voice.begin(9600);
voice.write(0xAA);
voice.write(0x37);
delay(1000);
voice.write(0xAA);
voice.write(0x21);

بعد ذلك عمل مقارنات بالقراءة القادمة من الموديول والتى على حسب هذه القراءة ستقوم الأردوينو بأداء معين
لأى استفسار اتركه فى التعليقات 

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

تصميم وبرمجة : بلال حسان سعدى

التعليقات