Comando de voz
Assistindo uma cena do filme O Homem de Ferro, impressiona ver a interação do protagonista Tony Stark rodeado de tecnologias que tornam a vida do herói mais prática e fácil. Ter a ajuda de um super computador dentro da sua residência (J.A.R.V.I.S) que faz uso de uma "ultra" inteligencia artificial e responde fielmente aos comandos de voz do patrão, nos arremete a pensar: quando teremos uma tecnologia assim à nossa disposição? Na verdade estamos distantes da ficção, com certeza, mas existe sim no mercado um nicho voltado à domótica que faz a vida de hoje ser melhor em praticidade domiciliar comparada com a de ontem.
fonte: iconfinder.com
Domótica
Um termo não muito recente, a domótica é proveniente dos anos 80, e pretendia controlar alguns sistemas domésticos como iluminação, segurança, climatização, entre outras.O que nos dias atuais ainda se busca de maneira ainda mais segura, propondo também conforto e comodidade.
Para que tudo dentro de uma residência funcione de maneira correta necessita-se de uma central confiável, onde rotinas e tarefas possam ser programadas e ocorrendo assim a automatização que vem a deixar o homem "livre" para tarefas mais complexas, deixando as mais repetitivas para um sistema eletrônico/ mecânico (mecatrônico).
Com a aceleração dos avanços tecnológicos que vivemos, diversos componentes que são encontrados no mercado da eletrônica e programação podem auxiliar engenheiros, técnicos ou hobbista na elaboração de sistemas de automação, seja a nível industrial ou mesmo residencial.
fonte: www.futurisima.com
Controlando Arduino por comando de voz
Existe no mercado um módulo para reconhecimento de voz para Arduino que em breve estarei postando como usá-lo, mas hoje vou usar o comando via bluetooth e um aplicativo encontrado para dispositivos Android no Google Play Store AMR_VOICE (desculpem os usuários do iOS, não sei se o aplicativo está disponível para dispositivos da Apple).
fonte: https://play.google.com/store/apps/details?id=robotspace.simplelabs.amr_voice&hl=pt_BR
Projeto
Para essa demonstração de como usar o comando de voz via Android, juntamente com Bluetooth e Arduino é necessário que tenha em mãos os componentes que deixo como sugestão:
- Leds de cores variadas ( vou usar cinco para simular acionamentos diferentes identificados por cores diferentes);
- Resistores para acioamento dos Leds (220ohms)
- Resistores para divisor de tensão 1.5k e 2.2k
- Arduino Uno (ou similar);
- Módulo bluetooth HC-06;
- Protoboard;
- cabos jumpers.
fonte: próprio autor
Esquema elétrico
Para a ligação do circuito e integração entre Android, Arduino e o Bluetooth, é necessário seguir o esquema abaixo. Um item que deve ser sempre observado é que o nível de sinal utilizado pelo módulo bluetooth em alguns casos trabalham com 3V por isso, para garantir a integridade do componente se faz um divisor de tensão com dois resistores ligados ao pino Rx do bluetooth.
fonte: próprio autor
fonte: próprio autor
fonte: próprio autor
Sempre lembrando que a distribuição dos componentes sobre a protoboard está como sugestão, podendo se alterada conforme a necessidade do usuário.
Código fonte
Abaixo segue o código comentado para o microcontrolador.
/** Código final Comando de voz **/
/**Elaborado por Tony Emerson Marim em 04/10/2016**/
/** mecatronizei@gmail.com **/
/** Controle de componentes por comando de voz **/
/*Arduino+bluetooth+Android*/
String voice;
int
led1 = 2, //Conectar LED 1 ao Pino 2
led2 = 3, //Conectar LED 2 ao Pino 3
led3 = 4, //Conectar LED 3 ao Pino 4
led4 = 5, //Conectar LED 4 ao Pino 5
led5 = 6; //Conectar LED 5 ao Pino 6
void ligartudo(){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
}
void desligartudo(){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
void setup() { //Saídas
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop() {
while (Serial.available()){
delay(10);
char c = Serial.read();
if (c == '#') {break;}
voice += c;
}
if (voice.length() > 0) {
Serial.println(voice);
if(voice == "*Ligar tudo")
{
ligartudo();
} //Desliga todos os pinos (Chamada de função)
else if(voice == "*Desligar tudo")
{
desligartudo();
} //Liga todos os pinos (Chamada de função)
else if(voice == "*vermelho liga") {digitalWrite(led1, HIGH);}
else if(voice == "*Verde liga") {digitalWrite(led2, HIGH);}
else if(voice == "*Amarelo liga") {digitalWrite(led3, HIGH);}
else if(voice == "*Branco liga") {digitalWrite(led4, HIGH);}
else if(voice == "*Azul liga") {digitalWrite(led5, HIGH);}
else if(voice == "*vermelho desliga") {digitalWrite(led1, LOW);}
else if(voice == "*Verde desliga") {digitalWrite(led2, LOW);}
else if(voice == "*Amarelo desliga") {digitalWrite(led3, LOW);}
else if(voice == "*Branco desliga") {digitalWrite(led4, LOW);}
else if(voice == "*Azul desliga") {digitalWrite(led5, LOW);}
voice="";}} //Reseta a variável
Por meio de comando de voz, o sistema passa a obedecer os comandos determinados pelo usuário.
Para alterar qualquer função e adequar conforme a necessidade do usuário, o comando que vai ser entendido pelo aplicativo está em "*<<comando>>", e é case sensitive, ou seja , a descrição do comando deve estar exatamente igual a fala do usuário inclusive conforme for exposto no aplicativo.
Logo abaixo segue um vídeo explicativo e demonstrando o funcionamento do circuito.
Seja qual for o uso, se for elaborado um esquema de potência bem dimensionado, é possível que iluminação, abertura de janelas, cortinas, portões e diversos outros dispositivos sejam acionados por esse sistema. Nesse LINK encontra-se o projeto completo, caso necessite.
No próximo post estarei elaborando o acionamento de uma lâmpada via comando de voz.
Bons estudos!
Boa noite; Cara eu fiz seu circuito ai e não funcionou utilizei tudo do jeito que vc postou e não consegui ligar ou desligar os leds, com a exceção de que utilizei um Modulo HC - 05, mas a pinagem é a mesma o sketchs baixe não digite; Tem como explicar?
ResponderExcluirPra mim aconteceu o mesmo erro, tenta tirar os * dos caracteres, o meu funcionou sem eles.
ExcluirOlá. Boa noite.
ResponderExcluirGostaria de saber sobre o aplicativo. por que o que foi colocado no tutorial não está mais disponível. Gostaria de saber qual outro eu poderia usar para a mesma função.
Fico grato pela atenção.
Att: Paulo Vieira