quinta-feira, 6 de outubro de 2016

Acionamentos por comando de voz (Android + Arduino + Bluetooth)

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! 



3 comentários:

  1. 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?

    ResponderExcluir
    Respostas
    1. Pra mim aconteceu o mesmo erro, tenta tirar os * dos caracteres, o meu funcionou sem eles.

      Excluir
  2. Olá. Boa noite.

    Gostaria 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

    ResponderExcluir