Difference between revisions of "Arduino Voice Recognition Module"

From Geeetech Wiki
Jump to: navigation, search
(Example 1)
Line 23: Line 23:
 
==Example 1==
 
==Example 1==
 
Here i will show you an example how to control RGB by voice.<br>
 
Here i will show you an example how to control RGB by voice.<br>
1. Recording
+
1. Recording <br>
We need to send serial command to this module. You may need a USB-TTL module to connect it with PC. Send command 0xaa11 to record. Please refer to the manual for more information.
+
We need to send serial command to this module. You may need a USB-TTL module to connect it with PC. Send command 0xaa11 to record. Please refer to the manual for more information.<br>
  
Please record the following voice instrctions in order :
+
Please record the following voice instrctions in order :<br>
  
1、WHITE
+
1、WHITE<br>
2、RED
+
2、RED<br>
3、GREEN
+
3、GREEN<br>
4、BLUE
+
4、BLUE<br>
5、OFF
+
5、OFF<br>
  
Then send command 0xAA21 to import group 1.
+
Then send command 0xAA21 to import group 1.<br>
  
 
2. Hardware connection
 
2. Hardware connection
Line 47: Line 47:
 
void setup()
 
void setup()
 
{
 
{
Serial.begin(9600);
+
    Serial.begin(9600);
pinMode(ledPin, OUTPUT); // sets the ledPin to be an output
+
    pinMode(ledPin, OUTPUT); // sets the ledPin to be an output
pinMode(redPin, OUTPUT); // sets the redPin to be an output
+
    pinMode(redPin, OUTPUT); // sets the redPin to be an output
pinMode(greenPin, OUTPUT); // sets the greenPin to be an output
+
    pinMode(greenPin, OUTPUT); // sets the greenPin to be an output
pinMode(bluePin, OUTPUT); // sets the bluePin to be an output
+
    pinMode(bluePin, OUTPUT); // sets the bluePin to be an output
delay(2000);
+
    delay(2000);
Serial.write(0xAA);
+
    Serial.write(0xAA);
Serial.write(0x37);
+
    Serial.write(0x37);
delay(1000);
+
    delay(1000);
Serial.write(0xAA);
+
    Serial.write(0xAA);
Serial.write(0x21);
+
    Serial.write(0x21);
 
}
 
}
  
Line 63: Line 63:
 
{
 
{
  
while(Serial.available())
+
    while(Serial.available())
{
+
    {
com = Serial.read();
+
        com = Serial.read();
switch(com)
+
        switch(com)
{
+
        {
case 0x11:
+
            case 0x11:
color(255,255,255); // turn RGB LED on -- white
+
                    color(255,255,255); // turn RGB LED on -- white
break;
+
                    break;
  
case 0x12:
+
            case 0x12:
color(255, 0, 0); // turn the RGB LED red
+
                    color(255, 0, 0); // turn the RGB LED red
break;
+
                    break;
  
case 0x13:
+
            case 0x13:
color(0,255, 0); // turn the RGB LED green
+
                    color(0,255, 0); // turn the RGB LED green
break;
+
                    break;
  
case 0x14:
+
            case 0x14:
color(0, 0, 255); // turn the RGB LED blue
+
                    color(0, 0, 255); // turn the RGB LED blue
break;
+
                    break;
  
case 0x15:
+
            case 0x15:
color(0,0,0); // turn the RGB LED off
+
                    color(0,0,0); // turn the RGB LED off
break;
+
            break;
  
}
+
        }
}
+
    }
  
 
}
 
}
Line 95: Line 95:
 
void color (unsigned char red, unsigned char green, unsigned char blue) // the color generating function
 
void color (unsigned char red, unsigned char green, unsigned char blue) // the color generating function
 
{
 
{
analogWrite(redPin, red*102/255);
+
    analogWrite(redPin, red*102/255);
analogWrite(bluePin, blue*173/255);
+
    analogWrite(bluePin, blue*173/255);
analogWrite(greenPin, green*173/255);
+
    analogWrite(greenPin, green*173/255);
 
}
 
}
  
 
Upload the code above to Arduino. Please disconnect TX and RX while uploading code because uploading would occupy serial interface.
 
Upload the code above to Arduino. Please disconnect TX and RX while uploading code because uploading would occupy serial interface.

Revision as of 02:24, 29 April 2014

Description

We all know that there is a kind of moule which can control the light on and off. You make a sound, the light turns on. Then after a while it turns off. This is not voice recognition. We may call it Sound Control. Voice recognition is something that knows exactly what you were saying.

We've beening thinking about a module which helps to control other devices by voice and it will not cost too much. Finally we designed this module. Well, what can this module do? It can recognize as much as 15 voice instruction, which is suitable for most cases involving voice control.


Parameters

1、Voltage:4.5-5.5V

2、Current:<40mA

3、Digital Interface: 5V TTL level UART interface

4、Analog Interface: 3.5mm mono-channel microphone connector + microphone pin interface

5、Size: 30mm x 47.5mm

This module can store 15 pieces of voice instruction. Those 15 pieces are divided into 3 groups, with 5 in one group. First we should record the voice instructions group by group. After that, we should import one group by serial command before it could recognize the 5 voice instructions within that group. If we need to implement instructions in other groups, we should import the group first. This module is speaker independent. If your friend speaks the voice instruction instead of you, it may not identify the instruction.


Example 1

Here i will show you an example how to control RGB by voice.
1. Recording
We need to send serial command to this module. You may need a USB-TTL module to connect it with PC. Send command 0xaa11 to record. Please refer to the manual for more information.

Please record the following voice instrctions in order :

1、WHITE
2、RED
3、GREEN
4、BLUE
5、OFF

Then send command 0xAA21 to import group 1.

2. Hardware connection

3. Code

int redPin = 11; // R petal on RGB LED module connected to digital pin 11 int greenPin = 9; // G petal on RGB LED module connected to digital pin 9 int bluePin = 10; // B petal on RGB LED module connected to digital pin 10 byte com = 0; //reply from voice recognition

void setup() {

   Serial.begin(9600);
   pinMode(ledPin, OUTPUT); // sets the ledPin to be an output
   pinMode(redPin, OUTPUT); // sets the redPin to be an output
   pinMode(greenPin, OUTPUT); // sets the greenPin to be an output
   pinMode(bluePin, OUTPUT); // sets the bluePin to be an output
   delay(2000);
   Serial.write(0xAA);
   Serial.write(0x37);
   delay(1000);
   Serial.write(0xAA);
   Serial.write(0x21);

}

void loop() // run over and over again {

   while(Serial.available())
   {
       com = Serial.read();
       switch(com)
       {
           case 0x11:
                    color(255,255,255); // turn RGB LED on -- white
                    break;
           case 0x12:
                    color(255, 0, 0); // turn the RGB LED red
                    break;
           case 0x13:
                    color(0,255, 0); // turn the RGB LED green
                    break;
           case 0x14:
                    color(0, 0, 255); // turn the RGB LED blue
                    break;
           case 0x15:
                    color(0,0,0); // turn the RGB LED off
           break;
       }
   }

}

void color (unsigned char red, unsigned char green, unsigned char blue) // the color generating function {

   analogWrite(redPin, red*102/255);
   analogWrite(bluePin, blue*173/255);
   analogWrite(greenPin, green*173/255);

}

Upload the code above to Arduino. Please disconnect TX and RX while uploading code because uploading would occupy serial interface.