Ahmed Yassin
Published © GPL3+

Voice Controlled Robot using your Smart Phone

Now you can control your Robot using voice commands like move forward the robot moves forward, move back and so on.

IntermediateFull instructions provided3 hours7,947
Voice Controlled Robot using your Smart Phone

Things used in this project

Hardware components

1Sheeld
1Sheeld
×1
1Sheeld
1Sheeld
×1
Arduino UNO
Arduino UNO
×1
SparkFun Rover 5
×1
SparkFun rover 5 motor driver board
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Story

Read more

Schematics

motor driver

Code

Arduino code

Arduino
#define CUSTOM_SETTINGS
#define INCLUDE_VOICE_RECOGNIZER_SHIELD
#define INCLUDE_TERMINAL_SHIELD

/* motor driver pins */
#define DIRECTIONA 4
#define MOTORA 5
#define DIRECTIONB 7
#define MOTORB 6


/* Include 1Sheeld library. */
#include <OneSheeld.h>

/* Voice commands set by the user. */
const char moveCommand[] = "move forward";
const char leftCommand[] = "left";
const char rightCommand[] = "right";
const char backCommand[] = "move back";
const char stopCommand[] = "stop";

/* go forward function */
void forward()
{
      digitalWrite(DIRECTIONA,0);
      digitalWrite(DIRECTIONB,1);
      analogWrite(MOTORA,200);
      analogWrite(MOTORB,200);
}//end of forward function

/* go back function*/
void back()
{
      digitalWrite(DIRECTIONA,1);
      digitalWrite(DIRECTIONB,0);
      analogWrite(MOTORA,200);
      analogWrite(MOTORB,200);
}//end of back function

/* turn left function */
void left()
{
      digitalWrite(DIRECTIONA,0);
      digitalWrite(DIRECTIONB,0);
      analogWrite(MOTORA,200);
      analogWrite(MOTORB,200);
}//end of left function

/* turn right function*/
void right()
{
      digitalWrite(DIRECTIONA,1);
      digitalWrite(DIRECTIONB,1);
      analogWrite(MOTORA,200);
      analogWrite(MOTORB,200);
}//end of void right function

/* stop function */
void stop()
{
      digitalWrite(DIRECTIONA,1);
      digitalWrite(DIRECTIONB,1);
      analogWrite(MOTORA,0);
      analogWrite(MOTORB,0);
}//end of stop function

void setup() {

  /* Start Communication. */
  OneSheeld.begin();
  /* Error Commands handiling. */
  VoiceRecognition.setOnError(error);
  
  VoiceRecognition.start();
  
  /* motors pins */
  pinMode(MOTORA, OUTPUT);
  pinMode(DIRECTIONA, OUTPUT);
  pinMode(MOTORB, OUTPUT);
  pinMode(DIRECTIONB, OUTPUT);

}//end of setup function

void loop() {

   /* Check if new command received. */
  if(VoiceRecognition.isNewCommandReceived())
  {
    /* Compare the forward command. */
    if(!strcmp(moveCommand,VoiceRecognition.getLastCommand()))
    {
      /* go forward. */
      forward();
    }//end of if
    /* compare turn left command. */
    else if (!strcmp(leftCommand,VoiceRecognition.getLastCommand()))
    {
      /* turn left. */
      left();
    }//end of else if
    /* Compare the turn right command. */
    else if (!strcmp(rightCommand,VoiceRecognition.getLastCommand()))
    {
      /* turn right. */
      right();
    }//end of else if 
    /* Compare the move back command. */
    else if (!strcmp(backCommand,VoiceRecognition.getLastCommand()))
    {
      /* go back */
      back();
    }//end of else if
    /* Compare the stop command. */
    else if (!strcmp(stopCommand,VoiceRecognition.getLastCommand()))
    {
      /* go back */
      stop();
    }//end of else if
  }//end of main if 
  
}//end of loop function

/* Error checking function. */
void error(byte errorData)
{
  /* Switch on error and print it on the terminal. */
  switch(errorData)
  {
    case NETWORK_TIMEOUT_ERROR: Terminal.println("Network timeout");break;
    case NETWORK_ERROR: Terminal.println("Network Error");break;
    case AUDIO_ERROR: Terminal.println("Audio error");break;
    case SERVER_ERROR: Terminal.println("No Server");break;
    case SPEECH_TIMEOUT_ERROR: Terminal.println("Speech timeout");break;
    case NO_MATCH_ERROR: Terminal.println("No match");break;
    case RECOGNIZER_BUSY_ERROR: Terminal.println("Busy");break;
  }//end of switch 
}//end of error function

Credits

Ahmed Yassin

Ahmed Yassin

2 projects • 35 followers
student at Electronics & Communication Department, faculty of engineering, Zagazig University

Comments