Jarvis – Controlando o seu Arduino por Comandos de Voz

Jarvis – Controlando o seu Arduino por Comandos de Voz

O uso de assistente de voz se tornou algo bem comum nos últimos anos. O assistente virtual mais conhecido e mais antigo é a Siri, que está disponível em vários dispositivos comercializados pela Apple. Com o passar dos anos surgiram outros assistentes virtuais, tais como o Google Now (para Android), Alexa (Amazon), Google Assistente (evolução do Google Now) e vários outros. Dentre estas várias opções de assistentes virtuais, temos o DJ JARVIS, uma ferramenta computacional que além de ser capaz de interagir com as pessoas e executar tarefas do nosso cotidiano, pode ser integrado ao Arduino, permitindo infinitas possibilidades, principalmente na automação residencial e robótica.

img00_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

O DJ.JARVIS.AM ou simplesmente Jarvis, é um programa de computador que tem como papel ser um assistente de voz. O Jarvis pode ser instalado e executado em dispositivos com Windows, e além disso, reconhece os comandos de voz em português do Brasil. Um dos diferenciais do Jarvis em relação aos demais assistentes virtuais, é o fato de não precisar estar conectado à internet para que os comandos sejam reconhecidos. Desta forma, as respostas e ações do Jarvis são executadas em menor tempo.

Após o programa ser instalado no computador, é necessário o uso de um microfone para que os comandos possam ser enviados ao Jarvis. Ao receber o comando de voz, ele irá interpretar e executar a ação correspondida de acordo com as configurações predefinidas ou que você definiu manualmente após a instalação. Além disso, você pode criar comandos e respostas para deixar o Jarvis muito mais interativo.

Para conhecer todos os detalhes do Jarvis, recomendo que acesse o site oficial e faça o download da versão free para que você possa fazer testes com a ferramenta. Lembrando que o Jarvis está disponível também na versão PRO:

Site Oficial do Jarvis

Download Jarvis

Tutoriais de Instalação e Configuração

Conforme dito antes, até a data desta publicação (12/2018) o Jarvis pode ser instalado e executado apenas em dispositivos com Windows. A equipe de desenvolvedores do Jarvis permanece trabalhando no desenvolvimento da ferramenta para dispositivos móveis.

Além de ser capaz de interagir com as pessoas e executar tarefas do nosso cotidiano, o Jarvis pode ser integrado com qualquer plataforma embarcada / microcontrolada que possua comunicação serial. Desta forma, podemos interagir o Jarvis com o Arduino, Raspberry Pi, ESP8266 e ESP32, por exemplo. Com isto, temos infinitas possibilidades de projetos, principalmente na área de automação residencial e robótica.

Para esta postagem o foco será o uso do Jarvis com o Arduino.

No diagrama abaixo você pode ver um esquema básico de funcionamento do Jarvis junto ao computador e ao Arduino:

img01_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Para demonstrar a integração entre o Jarvis e o Arduino, optei por utilizar um módulo relé com uma lâmpada e uma TV com controle remoto.

Com o módulo relé conectado ao Arduino e a uma lâmpada, vai ser possível enviar os comandos aos Jarvis para que a lâmpada acenda ou apague. Para controlar a TV, vai ser necessário clonar as teclas do controle remoto através do Arduino para em seguida inserir os códigos das teclas no código final que será carregado na placa, e fazer o controle da TV através dos comandos de voz que serão enviados ao Jarvis.

Para fazer o acionamento do módulo relé, vou utilizar dois comandos no Jarvis:

Acender lâmpada
Apagar lâmpada

A resposta do Jarvis para estes comandos serão respectivamente:

Lâmpada está acesa
Lâmpada está apagada

Os caracteres enviados ao Arduino pela serial serão respectivamente:

A / B

Para controle da TV, vou utilizar os seguintes comandos:

Acender lâmpada
Apagar lâmpada
Ligar a Televisão e Desligar a Televisão
Acessar entradas
Pra esquerda e Voltar
Pra direita e Avançar
Pra cima
Pra baixo
Quero assistir este, Abrir e OK
Pausar
Continuar reprodução
Aumentar o som
Abaixar o som
Sair

Não especifiquei nenhuma resposta para estes comandos, contudo, se você quiser poderá adicionar as respostas.

Os caracteres enviados ao Arduino pela serial serão respectivamente:

C / D / E / F / G / H / I / J / K / L / M / N

Agora conecte o seu Arduino ao computador através do cabo USB para que a porta serial COM do mesmo possa ser configurada e registrada no Jarvis.

Considerando que você já tenha o Jarvis instalado e configurado em seu computador, execute o programa e aguarde o carregamento da interface.

OBS: o Jarvis que está instalado em meu computador é a versão PRO e está com o tema Dark Edition.

Com o Jarvis aberto, acesse a opção de “Comandos” para que o menu de opções seja aberto.

Clique na opção “Controles de automação”:

img02_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Na janela que for aberta, clique em “Comandos Arduino”:

img03_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Nesta janela, em “Portas seriais” selecione a porta COM em que seu Arduino está conectado e clique em “Salvar porta”. Em “Baud rate” selecione 9600 e clique em “Setar Baud Rate”:

OBS: a porta COM1 é nativa do Windows e não corresponde ao Arduino.

img04_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Na parte de “COMANDOS” deve ser inserido em cada linha o comando (frase), em “RESPOSTAS” deve ser inserido em cada linha a resposta correspondente ao comando e em “ENVIAR” deve ser inserido o caractere que será enviado via serial para o Arduino. Anteriormente eu já havia mencionado os comandos, respostas e caracteres que seriam configurados no Jarvis para que fossem direcionados ao Arduino.

Para criar o comando, basta colocar o cursor na linha 1, digitar a frase e pressionar enter para que o cursor vá para a segunda linha. Use este mesmo procedimento para inserir as respostas e os caracteres a serem enviados ao Arduino.

Após preenchimento das informações, minhas configurações ficaram conforme a imagem abaixo:

img05_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_wifi_sem_fio_serial

Clique em “Salvar” para efetivar as modificações.

OBS: veja que nas linhas 3, 5, 6 e 9 coloquei mais de um comando e os separei por uma barra vertical. Desta forma, qualquer um destes comandos que eu falar, ele vai dar a mesma resposta (se existir resposta configurada) e vai enviar ao Arduino o caractere definido. Na resposta de um comando você também pode inserir mais de uma resposta, respeitando o uso da barra vertical para separá-los. Além disso, como também deixei em branco a resposta para o último comando (Sair), tive que pressionar enter para que fosse criado a linha 15 e fiz o mesmo procedimento para a resposta e para o enviar. Isto evita que o Jarvis fique acusando que há problemas com a porta COM em que o Arduino está conectado.

Agora será necessário informar ao Jarvis que há novos comandos disponíveis. Para isto, aproxime-se do microfone e diga “Atualizar comandos”. Aguarde o Jarvis responder “Todos os comandos foram atualizados”.

Terminado esta configuração, basta fechar a janela de comandos e deixar o Jarvis aberto.

Para prosseguir você vai precisar dos seguintes itens:

01 – Arduino com Cabo USB
01 – Módulo Relé 5V 1 Canal
01 – Fotorreceptor / Receptor IR VS1838B
01 – Led Emissor Infravermelho (IR)
01 – Resistor de 220Ω
01 – Protoboard
03 – Cabos Jumper macho-macho
03 – Cabos Jumper macho-fêmea
01 – TV com controle remoto
01 – Lâmpada
01 – Receptáculo (boquilha)
01 – Cabo paralelo de 1,5mm ou 2,5mm
01 – Tomada (Rede alternada de 127V)

Inicialmente vai ser necessário fazer a captura dos códigos infravermelho das teclas do controle remoto da TV.

Para captura de códigos IR e envio deles para o dispositivo a ser controlado através do Arduino, é necessário baixar e instalar a biblioteca IRremote:

Download IRremote

Se você não sabe como instalar bibliotecas na IDE do Arduino, basta clicar no link abaixo, seguir os passos, importar a biblioteca e retornar para continuar:

Arduino – Importando bibliotecas para a ID

Monte o seguinte esquema de ligação para clonar as teclas do controle remoto:

img06_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Conecte o Arduino ao computador através do cabo USB e em seguida abra a IDE e acesse o menu Arquivos > Exemplos > IRremote > IRrecvDump:

img07_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Este código disponível na biblioteca IRremote é que será utilizado para capturar as teclas do controle remoto. Carregue o código no Arduino.

Abra o monitor serial da IDE do Arduino, aponte o controle remoto para o fotorreceptor IR e aperte cada uma das teclas que deseja capturar o código IR:

img08_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

1) No monitor serial é mostrado o protocolo para o sinal clonado e no meu caso o protocolo é o NEC. Em seguida é mostrado o código hexadecimal (HEX). O ideal é que pressione o mesmo botão mais de uma vez para confirmar que o código capturado está correto. Anote os códigos (HEX) que você clonar, pois você irá precisar deles a seguir.

2) Utilizei uma TV LG e o controle dela é bem simples de ser clonado e utiliza o protocolo NEC que é bem comum. Dependendo da marca da TV (ou outro dispositivo que queira clonar as teclas do controle remoto) pode ser um pouco mais complicado devido ao protocolo utilizado, comprimento do sinal e vários outros fatores.

Anote os códigos que você capturou e registre em uma planilha. Ao fim das capturas de tecla que fiz, minha tabela de códigos hexadecimais ficou desta forma:

img09_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Monte o seguinte esquema de ligação:

ATENÇÃO: MUITO CUIDADO AO EXECUTAR PRÁTICAS QUE ENVOLVAM TENSÃO / CORRENTE ALTERNADA! FAÇA TODAS AS LIGAÇÕES COM O CIRCUITO COMPLETAMENTE DESLIGADO E ANTES DE FAZER OS TESTES VERIFIQUE CADA UMA DAS LIGAÇÕES PARA ELIMINAR A POSSIBILIDADE DE CURTO ENTRE FASE / NEUTRO OU FASE / FASE.

img10_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Veja na imagem abaixo que deixei o LED Emissor IR apontado para o Receptor IR da TV:

img11_jarvis_controlando_o_seu_arduino_por_comandos_de_voz_esp8266_nodemcu_esp32_assistente_virtual_automacao_residencial_serial_wifi_sem_fio

Conecte o Arduino ao computador novamente, leia os comentários em cada linha do código para que você possa compreender o funcionamento e em seguida faça o carregamento no Arduino:

OBS: antes de carregar o código abaixo no Arduino, substitua os códigos hexadecimais (após o 0x) pelos códigos que você capturou.

Terminado o carregamento do código no Arduino, basta falar no microfone os comandos de voz (os que foram registrados no Jarvis) e se tudo estiver OK, o Jarvis irá responder cada comando com a resposta que você configurou e irá enviar ao Arduino pela serial o caractere correspondente. No código carregado no Arduino, há condições de tratamento para cada caractere recebido e uma ação corresponde a ser executada. Lembre-se de manter o monitor serial da IDE do Arduino fechado enquanto estiver utilizando o Jarvis para controlar a placa, pois caso mantenha o monitor aberto, o Jarvis não irá conseguir enviar os comandos e ele vai informar que há um problema de conexão com a porta COM.

No vídeo abaixo você pode ver o resultado final desta integração do Arduino com o Jarvis:

Nas próximas postagens relacionadas a integração entre o Jarvis e plataformas embarcadas, serão adicionadas novas funcionalidades.

Agora que você já integrou o Jarvis ao Arduino e conseguiu controlar a placa através de comandos de voz, basta começar a implementar novos projetos junto a esta excelente ferramenta.

Gostou desta postagem? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.

Jarvis – Controlando o seu Arduino por Comandos de Voz
124 votos / Média de avaliação: 5 / Pontuação: 99.84%


Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação pela Faculdade Presidente Antônio Carlos, fundador e CEO da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *