مشروع:روبوت يتم التحكم في الصوت باستخدام تطبيق Arduino والتعرف على الصوت

مرحباً بالجميع ، أتمنى أن تكون بخير وبصحة جيدة. اليوم سنبدأ المشاريع المتعلقة بالروبوتات باستخدام Arduino. لقد نشرنا بالفعل مشاريع الروبوتات مثل روبوت تتبع الخط ، وروبوت تجنب العقبات ، والذراع الروبوتية واختيار ووضع الذراع الآلية باستخدام Arduino. اليوم ، سنتحدث عن التحكم الصوتي في الروبوت باستخدام تطبيق Arduino و android. الروبوت الذي يتم التحكم فيه بالصوت هو روبوت متحرك يتم التحكم فيه بواسطة بعض الأوامر الصوتية المحددة. تطبيق الهاتف المحمول قادر على تحديد خمسة أوامر وهي "Stop" و "Forward" و "Back" و "Left" و "Right". في مشروع الأنظمة المضمنة هذا ، نصنع سيارة روبوتية رباعية الدفع يمكننا التحكم فيها باستخدام الصوت من خلال تطبيق الهاتف المحمول. يستمع التطبيق ويرسل التعليمات إلى Arduino باستخدام Bluetooth ثم يقوم Arduino بتنفيذ العملية المحددة. تطبيق التعرف على الصوت ليس دقيقًا بنسبة 100٪. التطبيق حساس للضوضاء المحيطة. في بعض الأحيان يسيء تفسير الأوامر الصوتية المعطاة للروبوت. ولكن يمكنك تصميم التطبيق الخاص بك والذي يمكن أن يتجاهل ما يحيط به ويستقبل صوتك فقط. 


رسم تخطيطي لدائرة الروبوت التي يتم التحكم فيها بالصوت باستخدام 


كود الروبوت الصوتي باستخدام Arduino

#include<AFMotor.h>

AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR12_1KHZ);
AF_DCMotor motor4(4, MOTOR12_1KHZ);

int tx=1;
int rx=0;
char inSerial[15];
char command;

void setup()
{
Serial.begin(9600); //Set the baud rate to your Bluetooth module.
}

void loop(){

int i=0;
int m=0;
delay(500);
if (Serial.available() > 0) {
while (Serial.available() > 0) {
inSerial[i]=Serial.read();
i++;
}
inSerial[i]='\0';
Check_Protocol(inSerial);
}
}

void Check_Protocol(char inStr[]){
int i=0;
int m=0;
Serial.println(inStr);


if(!strcmp(inStr,"*forward#")){
forward();
delay(1200);
Stop();
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}

if(!strcmp(inStr,"*back#")){
back();
delay(1200);
Stop();
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}

if(!strcmp(inStr,"*left#")){
left();
delay(350);
Stop();
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}
if(!strcmp(inStr,"*right#")){
right();
delay(350);
Stop();
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}

if(!strcmp(inStr,"*stop#")){
Stop();
for(m=0;m<11;m++){
inStr[m]=0;}
i=0;}

else{
for(m=0;m<11;m++){
inStr[m]=0;
}
i=0;

}}

void forward()
{
motor1.setSpeed(255);
motor1.run(FORWARD);
motor2.setSpeed(255);
motor2.run(FORWARD);
motor3.setSpeed(255);
motor3.run(FORWARD);
motor4.setSpeed(255);
motor4.run(FORWARD);
}

void back()
{
motor1.setSpeed(255);
motor1.run(BACKWARD);
motor2.setSpeed(255);
motor2.run(BACKWARD);
motor3.setSpeed(255);
motor3.run(BACKWARD);
motor4.setSpeed(255);
motor4.run(BACKWARD);
}

void left()
{
motor1.setSpeed(255);
motor1.run(FORWARD);
motor2.setSpeed(255);
motor2.run(FORWARD);
motor3.setSpeed(0);
motor3.run(RELEASE);
motor4.setSpeed(0);
motor4.run(RELEASE);



}

void right()
{
motor1.setSpeed(0);
motor1.run(RELEASE);
motor2.setSpeed(0);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(FORWARD);
motor4.setSpeed(255);
motor4.run(FORWARD);


}

void Stop()
{
motor1.setSpeed(0);
motor1.run(RELEASE);
motor2.setSpeed(0);
motor2.run(RELEASE);
motor3.setSpeed(0);
motor3.run(RELEASE);
motor4.setSpeed(0);
motor4.run(RELEASE);
}

 

إرسال تعليق

أحدث أقدم