For this tutorial, you’ll need:
Watch this full video:
Download the library before you start
Led Control Example Code:
#include <SoftwareSerial.h> #include "VoiceRecognitionV3.h" VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins. uint8_t records[7]; // save record uint8_t buf[64]; int led = 13; #define onRecord (0) #define offRecord (1) #define play (2) #define playtime 500 /** @brief Print signature, if the character is invisible, print hexible value instead. @param buf --> command length len --> number of parameters */ void printSignature(uint8_t *buf, int len) { int i; for(i=0; i<len; i++){ if(buf[i]>0x19 && buf[i]<0x7F){ Serial.write(buf[i]); } else{ Serial.print("["); Serial.print(buf[i], HEX); Serial.print("]"); } } } /** @brief Print signature, if the character is invisible, print hexible value instead. @param buf --> VR module return value when voice is recognized. buf[0] --> Group mode(FF: None Group, 0x8n: User, 0x0n:System buf[1] --> number of record which is recognized. buf[2] --> Recognizer index(position) value of the recognized record. buf[3] --> Signature length buf[4]~buf[n] --> Signature */ void printVR(uint8_t *buf) { Serial.println("VR Index\tGroup\tRecordNum\tSignature"); Serial.print(buf[2], DEC); Serial.print("\t\t"); if(buf[0] == 0xFF){ Serial.print("NONE"); } else if(buf[0]&0x80){ Serial.print("UG "); Serial.print(buf[0]&(~0x80), DEC); } else{ Serial.print("SG "); Serial.print(buf[0], DEC); } Serial.print("\t"); Serial.print(buf[1], DEC); Serial.print("\t\t"); if(buf[3]>0){ printSignature(buf+4, buf[3]); } else{ Serial.print("NONE"); } Serial.println("\r\n"); } void setup() { /** initialize */ myVR.begin(9600); Serial.begin(115200); Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample"); pinMode(led, OUTPUT); if(myVR.clear() == 0){ Serial.println("Recognizer cleared."); }else{ Serial.println("Not find VoiceRecognitionModule."); Serial.println("Please check connection and restart Arduino."); while(1); } if(myVR.load((uint8_t)onRecord) >= 0){ Serial.println("onRecord loaded"); } if(myVR.load((uint8_t)offRecord) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)play) >= 0){ Serial.println("play loaded"); } } void loop() { int ret; ret = myVR.recognize(buf, 50); if(ret>0){ switch(buf[1]){ case onRecord: /** turn on LED */ digitalWrite(led, HIGH); Serial.println("LED ON"); delay(1000); break; case offRecord: /** turn off LED*/ digitalWrite(led, LOW); Serial.println("LED OFF"); delay(1000); break; case play: digitalWrite(led, HIGH); delay(playtime); digitalWrite(led, LOW); delay(playtime); digitalWrite(led, HIGH); delay(playtime); digitalWrite(led, LOW); delay(playtime); digitalWrite(led, HIGH); delay(playtime); digitalWrite(led, LOW); delay(playtime); digitalWrite(led, HIGH); delay(playtime); digitalWrite(led, LOW); delay(playtime); default: Serial.println("Record function undefined"); break; } /** voice recognized */ printVR(buf); } }
Talking With Arduino Code:
#include <SoftwareSerial.h> #include "VoiceRecognitionV3.h" VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins. uint8_t records[7]; // save record uint8_t buf[64]; int led = 13; #define Hello (0) #define Kifik (1) #define Hamdellah (2) #define ChouFikeTa3mle (3) #define Bye (4) #define playtime 500 /** @brief Print signature, if the character is invisible, print hexible value instead. @param buf --> command length len --> number of parameters */ void printSignature(uint8_t *buf, int len) { int i; for(i=0; i<len; i++){ if(buf[i]>0x19 && buf[i]<0x7F){ Serial.write(buf[i]); } else{ Serial.print("["); Serial.print(buf[i], HEX); Serial.print("]"); } } } /** @brief Print signature, if the character is invisible, print hexible value instead. @param buf --> VR module return value when voice is recognized. buf[0] --> Group mode(FF: None Group, 0x8n: User, 0x0n:System buf[1] --> number of record which is recognized. buf[2] --> Recognizer index(position) value of the recognized record. buf[3] --> Signature length buf[4]~buf[n] --> Signature */ void printVR(uint8_t *buf) { Serial.println("VR Index\tGroup\tRecordNum\tSignature"); Serial.print(buf[2], DEC); Serial.print("\t\t"); if(buf[0] == 0xFF){ Serial.print("NONE"); } else if(buf[0]&0x80){ Serial.print("UG "); Serial.print(buf[0]&(~0x80), DEC); } else{ Serial.print("SG "); Serial.print(buf[0], DEC); } Serial.print("\t"); Serial.print(buf[1], DEC); Serial.print("\t\t"); if(buf[3]>0){ printSignature(buf+4, buf[3]); } else{ Serial.print("NONE"); } Serial.println("\r\n"); } void setup() { /** initialize */ myVR.begin(9600); Serial.begin(115200); Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample"); pinMode(led, OUTPUT); if(myVR.clear() == 0){ Serial.println("Recognizer cleared."); }else{ Serial.println("Not find VoiceRecognitionModule."); Serial.println("Please check connection and restart Arduino."); while(1); } if(myVR.load((uint8_t)Hello) >= 0){ // Serial.println("You: Hello"); } if(myVR.load((uint8_t)Kifik) >= 0){ // Serial.println("You: Kifik?"); } if(myVR.load((uint8_t)Hamdellah) >= 0){ // Serial.println("You: Hamdellah"); } if(myVR.load((uint8_t)ChouFikeTa3mle) >= 0){ // Serial.println("You: Chou Fike Ta3mle?"); } if(myVR.load((uint8_t)Bye) >= 0){ // Serial.println("You: Bye"); } } void loop() { int ret; ret = myVR.recognize(buf, 50); if(ret>0){ switch(buf[1]){ case Hello: Serial.println(""); Serial.println("You: Hello"); Serial.println("Arduino: Ahlan"); Serial.println(""); break; case Kifik: Serial.println(""); Serial.println("You: Kifik?"); Serial.println("Arduino: Mniha w inta?"); Serial.println(""); break; case Hamdellah: Serial.println(""); Serial.println("You: Hamdellah"); Serial.println("Arduino: Good!"); Serial.println(""); break; case ChouFikeTa3mle: Serial.println(""); Serial.println("You: Chou Fike Ta3mle?"); Serial.println("You: Natretak T2ele"); Serial.println(""); break; case Bye: Serial.println(""); Serial.println("You: Bye"); Serial.println("Arduino: Allah ma3ak, ntebih 3al tari2 inta w rayi7, Iza lta2et bel 3askar l 3esmene ma tghayir tari2ak, 3am bi la2to s3edin"); Serial.println(""); break; default: Serial.println("Record function undefined"); break; } /** voice recognized */ // printVR(buf); } }