-
Posts
3 -
Cadastrado em
-
Última visita
Reputação
1-
Arduino Como utilizar Modulo VR3 (voice recognition) com bluetooth?
Christian Branco respondeu ao tópico de Christian Branco em Microcontroladores
Vou dar uma olhada em ambas as possiveis soluções qualquer coisa comunico vcs perguntar pra algum professores meus também obrigado! -
Christian Branco alterou sua foto pessoal
-
Arduino Como utilizar Modulo VR3 (voice recognition) com bluetooth?
Christian Branco respondeu ao tópico de Christian Branco em Microcontroladores
@aphawk Tentei utilizar a opção de RX TX no para o módulo VR3, porém ele n está identificando e n funciona. No bluetooth funciona normal, porém acaba acontecendo algum tipo de conflito ao tentar usar os dois recursos em paralelo, não sei se é uma limitação do hardware ou se é algum problema no código. Código com RX e TX no bluetooth //PROJETO DE TCC #include <SoftwareSerial.h> #include "VoiceRecognitionV3.h" /** Connection Arduino VoiceRecognitionModule 52 -------> TX 53 -------> RX */ VR myVR(52,53); // 52:RX 53:TX, you can choose your favourite pins. uint8_t records[7]; // save record uint8_t buf[64]; // Leds indicadores de pais e filhos int Led_Arduino = 13; int Led_Ligar = 12; int Led_Desligar = 11; int Led_Lampada = 10; int Led_TV = 9; int Led_Portao = 8; unsigned long tempo_limite; unsigned long tempo_espera; // Variaveis para armazenar o estado do comando reconhecido boolean comando_Arduino = false; boolean comando_Ligar = false; boolean comando_Desligar = false; boolean comando_Lampada = false; boolean comando_TV = false; boolean comando_Portao = false; //COMANDO AVÔ #define Arduino (0) //COMANDOS PAIS #define Ligar (1) #define Desligar (2) //COMANDOS FILHOS #define Lampada (3) #define TV (4) #define Portao (5) 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(9600); Serial.println("COMANDOS PAIS E FILHOS"); // Declarar todos pinos como saída para os LEds pinMode(Led_Arduino, OUTPUT); pinMode(Led_Ligar, OUTPUT); pinMode(Led_Desligar, OUTPUT); pinMode(Led_Lampada, OUTPUT); pinMode(Led_TV, OUTPUT); pinMode(Led_Portao, 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); } //Carregar todos os comandos no VR3 if(myVR.load((uint8_t)Arduino) >= 0){ Serial.println("onRecord loaded"); } if(myVR.load((uint8_t)Desligar) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)Ligar) >= 0){ Serial.println("onRecord loaded"); } if(myVR.load((uint8_t)Lampada) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)TV) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)Portao) >= 0){ Serial.println("onRecord loaded"); } } void loop() { int ret; ret = myVR.recognize(buf, 50); if(ret>0){ switch(buf[1]){ // Verifica se o comando Arduino para iniciar o sistema foi reconhecido case Arduino: // Verifica se o sistema já está iniciado if(comando_Arduino==false){ if(comando_Arduino==false){// COMANDO CASO MODULO DE VOZ DESLIGADO UTILIZA BLUETOOTH char c=Serial.read(); if(c=='A'){digitalWrite(Led_Lampada,HIGH);}// LIga lampada BLuetooth if(c=='a'){digitalWrite(Led_Lampada,LOW);} if(c=='B'){digitalWrite(Led_TV,HIGH);}//Liga TV Bluetooth if(c=='b'){digitalWrite(Led_TV,LOW);} if(c=='C'){digitalWrite(Led_Portao,HIGH);}// Liga PORTAO bluetooth if(c=='c'){digitalWrite(Led_Portao,LOW);} } comando_Arduino=true;{ tempo_limite = millis(); Serial.println("Olá Mestre, o que você deseja?"); // Ola mestre, o que você deseja? (áudio) digitalWrite(Led_Arduino, HIGH); }} else{ Serial.println("Já estou esperando suas ordens!"); // Já estou esperando suas ordens (áudio) } break; case Ligar: if(comando_Arduino==true){ comando_Ligar = true; comando_Desligar = false; Serial.println("Qual equipamento deseja ligar?"); //Qual equipamento deseja acionar? áudio digitalWrite(Led_Ligar, HIGH); digitalWrite(Led_Desligar, LOW); // Pois não senhor, o que deseja ligar? } break; case Desligar: if(comando_Arduino==true){ comando_Ligar = false; comando_Desligar = true; Serial.println("Qual equipamento deseja desligar?"); //Qual equipamento deseja desligar? áudio digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, HIGH); // Pois não senhor, o que deseja ligar? } break; case Lampada: if(comando_Ligar==true){ if(digitalRead(Led_Lampada)==HIGH){ Serial.println("Lampada já está ligada"); //Senhor a lampada já está ligada } else{ Serial.println("Ligando lampada..."); //Será um prazer atender } digitalWrite(Led_Lampada, HIGH); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } if(comando_Desligar==true){ if(digitalRead(Led_Lampada)==LOW){ Serial.println("Lampada já está desligada"); //Senhor a lampada já está desligada } else{ Serial.println("Desligando lampada..."); //Será um prazer atender } digitalWrite(Led_Lampada, LOW); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } break; case TV: if(comando_Ligar==true){ if(digitalRead(Led_TV)==HIGH){ //Senhor a TV já está ligada } else{ //Será um prazer atender } digitalWrite(Led_TV, HIGH); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } if(comando_Desligar==true){ if(digitalRead(Led_TV)==LOW){ //Senhor a TV já está desligada } else{ //Será um prazer atender } digitalWrite(Led_TV, LOW); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } break; case Portao: if(comando_Ligar==true){ Serial.println("Abrir portao"); digitalWrite(Led_Portao, HIGH); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } if(comando_Desligar==true){ if(digitalRead(Led_Portao)==LOW){ //Senhor a TV já está desligada } else{ //Será um prazer atender } digitalWrite(Led_Portao, LOW); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } break; default: Serial.println("Record function undefined"); break; } /** voice recognized */ printVR(buf); } // Calcular tempo de espera sem resposta if(comando_Arduino==true){ tempo_espera = millis() - tempo_limite; if(tempo_espera > 8000){ Serial.println("Tempo esgotado!"); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Arduino, LOW); digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); } } } -
Arduino Como utilizar Modulo VR3 (voice recognition) com bluetooth?
Christian Branco postou um tópico em Microcontroladores
Olá boa tarde pessoal, estou desenvolvendo meu projeto de TCC, vai ser basicamente uma automação residencial controlada por voz e por bluetooth, programados no sentido de comando pai e comando filho por voz, e acionarem apenas os eletronicos por bluetooth, porém, me deparei com um problema que estou perdendo as esperanças já, não consigo conciliar o modulo de voz e o bluetooth para funcionarem simultâneamente, ele até compila e tal porém na hora de dar os comandos de voz ou bluetooth nenhum dos dois funciona. Placa Arduino MEGA 2560 Modulo de voz VR3 (Voice Recognition) Modulo Bluetooth HC-06 //AUTOMAÇÃO RESIDENCIAL VIA BLUETOOTH E CONTROLE DE VOZ TCC 2020 #include <SoftwareSerial.h> #include "VoiceRecognitionV3.h" /** Connection Arduino VoiceRecognitionModule 52 -------> TX 53 -------> RX */ VR myVR(52,53); // 52:RX 53:TX, you can choose your favourite pins. SoftwareSerial bt_serial(50,51);//RX e TX BLUETOOTH uint8_t records[7]; // save record uint8_t buf[64]; // Leds indicadores de pais e filhos int Led_Arduino = 13; int Led_Ligar = 12; int Led_Desligar = 11; int Led_Lampada = 10; int Led_TV = 9; int Led_Portao = 8; unsigned long tempo_limite; unsigned long tempo_espera; // Variaveis para armazenar o estado do comando reconhecido boolean comando_Arduino = false; boolean comando_Ligar = false; boolean comando_Desligar = false; boolean comando_Lampada = false; boolean comando_TV = false; boolean comando_Portao = false; //COMANDO AVÔ #define Arduino (0) //COMANDOS PAIS #define Ligar (1) #define Desligar (2) //COMANDOS FILHOS #define Lampada (3) #define TV (4) #define Portao (5) 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); bt_serial.begin(9600); Serial.begin(9600); Serial.println("COMANDOS PAIS E FILHOS"); // Declarar todos pinos como saída para os LEds pinMode(Led_Arduino, OUTPUT); pinMode(Led_Ligar, OUTPUT); pinMode(Led_Desligar, OUTPUT); pinMode(Led_Lampada, OUTPUT); pinMode(Led_TV, OUTPUT); pinMode(Led_Portao, 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); } //Carregar todos os comandos no VR3 if(myVR.load((uint8_t)Arduino) >= 0){ Serial.println("onRecord loaded"); } if(myVR.load((uint8_t)Desligar) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)Ligar) >= 0){ Serial.println("onRecord loaded"); } if(myVR.load((uint8_t)Lampada) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)TV) >= 0){ Serial.println("offRecord loaded"); } if(myVR.load((uint8_t)Portao) >= 0){ Serial.println("onRecord loaded"); } } void loop() { int ret; ret = myVR.recognize(buf, 50); if(ret>0){ switch(buf[1]){ // Verifica se o comando Arduino para iniciar o sistema foi reconhecido case Arduino: // Verifica se o sistema já está iniciado if(comando_Arduino==false){// COMANDO CASO MODULO DE VOZ DESLIGADO UTILIZA BLUETOOTH char c=bt_serial.read(); if(c=='A'){digitalWrite(Led_Lampada,HIGH);}// LIga lampada BLuetooth if(c=='a'){digitalWrite(Led_Lampada,LOW);} if(c=='B'){digitalWrite(Led_TV,HIGH);}//Liga TV Bluetooth if(c=='b'){digitalWrite(Led_TV,LOW);} if(c=='C'){digitalWrite(Led_Portao,HIGH);}// Liga PORTAO bluetooth if(c=='c'){digitalWrite(Led_Portao,LOW);} comando_Arduino = true; tempo_limite = millis(); Serial.println("Olá Mestre, o que você deseja?"); // Ola mestre, o que você deseja? (áudio) digitalWrite(Led_Arduino, HIGH); } else{ Serial.println("Já estou esperando suas ordens!"); // Já estou esperando suas ordens (áudio) } break; case Ligar: if(comando_Arduino==true){ comando_Ligar = true; comando_Desligar = false; Serial.println("Qual equipamento deseja ligar?"); //Qual equipamento deseja acionar? áudio digitalWrite(Led_Ligar, HIGH); digitalWrite(Led_Desligar, LOW); // Pois não senhor, o que deseja ligar? } break; case Desligar: if(comando_Arduino==true){ comando_Ligar = false; comando_Desligar = true; Serial.println("Qual equipamento deseja desligar?"); //Qual equipamento deseja desligar? áudio digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, HIGH); // Pois não senhor, o que deseja ligar? } break; case Lampada: if(comando_Ligar==true){ if(digitalRead(Led_Lampada)==HIGH){ Serial.println("Lampada já está ligada"); //Senhor a lampada já está ligada } else{ Serial.println("Ligando lampada..."); //Será um prazer atender } digitalWrite(Led_Lampada, HIGH); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } if(comando_Desligar==true){ if(digitalRead(Led_Lampada)==LOW){ Serial.println("Lampada já está desligada"); //Senhor a lampada já está desligada } else{ Serial.println("Desligando lampada..."); //Será um prazer atender } digitalWrite(Led_Lampada, LOW); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } break; case TV: if(comando_Ligar==true){ if(digitalRead(Led_TV)==HIGH){ //Senhor a TV já está ligada } else{ //Será um prazer atender } digitalWrite(Led_TV, HIGH); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } if(comando_Desligar==true){ if(digitalRead(Led_TV)==LOW){ //Senhor a TV já está desligada } else{ //Será um prazer atender } digitalWrite(Led_TV, LOW); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } break; case Portao: if(comando_Ligar==true){ Serial.println("Abrir portao"); digitalWrite(Led_Portao, HIGH); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } if(comando_Desligar==true){ if(digitalRead(Led_Portao)==LOW){ //Senhor a TV já está desligada } else{ //Será um prazer atender } digitalWrite(Led_Portao, LOW); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); digitalWrite(Led_Arduino, LOW); } break; default: Serial.println("Record function undefined"); break; } /** voice recognized */ printVR(buf); } // Calcular tempo de espera sem resposta if(comando_Arduino==true){ tempo_espera = millis() - tempo_limite; if(tempo_espera > 8000){ Serial.println("Tempo esgotado!"); comando_Arduino = false; comando_Ligar = false; comando_Desligar = false; digitalWrite(Led_Arduino, LOW); digitalWrite(Led_Ligar, LOW); digitalWrite(Led_Desligar, LOW); } } } Caso alguém souber de alguma coisa por favor me ajude não sei o que está ocasionando o conflito. Projeto TCC B1.txt
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais