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.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 32 comentários para esta postagem
  1. Edson António às 05:54

    Artigo muito bem estruturado e muito bem explicado. Com certeza vai nos ajudar muito nessa nova fase com o sistema JARVIS.

    Muitíssimo obrigado por partilhar seu conhecimento.
    Comentário vindo de Angola – África.

    • Euler Oliveira Autor às 14:54

      Olá Matheus.

      Agradeço pelo comentário e reconhecimento!

  2. Thiago Gomes às 03:03

    Olá Euler.
    Me surgiu uma dúvida. Se eu quiser apenas fazer o processo com a lampada posso seguir os mesmos passos desta publicação e não colocar os da TV?

  3. Weslei sullivan Masculino de souza às 22:40

    Otimas explicações, parabens tem me ajudado muito….seria possivel explicar um projeto de ligar varios microfones e caixas no jarvis para todos os comodos da casa. Duvida de muitas pessoas e nao existe explicacao sobre o assunto

    • Euler Oliveira Autor às 09:16

      Olá Weslei.

      Agradeço pelo comentário!

      Infelizmente por alguns motivos não pretendo mais escrever artigos sobre o Jarvis.

  4. MARCIO às 17:03

    OLÁ ÓTIMO ARTIGO PARABÉNS AMIGO ME AJUDOU MUITO ,
    MINHA DUVIDA COMO FAÇO PARA COLOCAR O ACIONAMENTO PARA 8 RELES NESTE MESMO SKETCH ?

    • Euler Oliveira Autor às 17:43

      Olá Ricardo.

      Agradeço pelo comentário!

      Show de bola!

      Vlw!!!

    • Euler Oliveira Autor às 16:42

      Olá Paulo.

      Agradeço pelo comentário!

      Sim, funciona.

  5. Vithor às 19:54

    Olá Euler, eu tenho uma duvida. Eu usei seu código e ele funcionou perfeitamente com o Jarvis. Porem, assim que eu adiciono mais módulos relê na programação e mais comandos a comunicação entre o Jarvis e o Arduino deixa de funcionar. Sendo que o código compila e funciona pelo serial. O quê poderia ser? Estou precisando de ajuda urgentemente, pois tenho um trabalho para apresentar.

    • Euler Oliveira Autor às 13:01

      Olá Vithor.

      Agradeço pelo comentário!

      Verificou se os comandos seriais foram definidos corretamente para cada relé? Não está deixando espaço após o comando serial configurado no Jarvis?

  6. Carlos às 23:45

    Já tenho um arquivo gravado no arduíno controlando as luzes de minha casa através do Jarvis. Pra mim agregar esse programa ai do Controle de tv e só pô em baixo do meu programa

    • Euler Oliveira Autor às 08:19

      Olá Carlos.

      Agradeço pelo comentário!

      Não é só adicionar ao seu código, pois você deve clonar as teclas do seu controle remoto e fazer a substituição no código. Lembrando que este código da postagem é para controle de dispositivos com protocolo NEC.

  7. SALUSTIANO às 09:18

    Bom dia mestre!
    Desde já agradeço a sua dedicação aos colegas de automação e fico feliz em saber que existem pessoas comprometidas em difundir as tecnologias e mesmo tempo compartilhar com todos.

    • Euler Oliveira Autor às 10:06

      Olá Salustiano.

      Agradeço pelo comentário e reconhecimento!

      Vlw!!!

  8. Rosiberto às 10:10

    Olá Euler,

    Essa versão do JARVIS que você usou é a versão PRO, correto?
    Por que na versão free não existe essa opção de automação.

    • Euler Oliveira Autor às 10:36

      Olá Rosiberto.

      Conforme informado no texto, a versão do Jarvis que foi utilizada é a PRO.

  9. Fábio Antonio de oliveira às 14:33

    Boa tarde Euler vc não tem um código do arduino de 10 reles ligar e desligar e dois reles pulsar para portão com explicação igual essa bem feita que li toda ela foi otima, pago por ela por favor.

  10. Bronco Bill às 11:42

    Boa tarde. Tenho uma dúvida. Vi em outros vídeos em que eles usam além destes procedimentos um arquivo .bat para fazer funcionar os comandos. Isso é necessário?

    • Euler Oliveira Autor às 16:04

      Olá Bronco.

      Senão me engano, o pessoal usava .BAT para poder fazer com que o Jarvis enviasse comandos através da internet.

      Como o programa atualmente tem a opção de tarefas remotas, esta solução do .BAT caiu em desuso, já que se tornou simples o envio de requisições HTTP.

  11. Daniel Amorim às 16:25

    Muito legal da sua parte detalhar a integração do JARVIS com o ARQUIVO. Estava procurando isso mesmo. Parabéns pela iniciativa! !

  12. Odair de Oliveira às 16:25

    Euler Oliveira ! Posso compartilhar o link do seu trabalho no meu canal É um Canal pequeno…
    más graças a Deus esta crescendo. Tenho um publico bem participativo que mantenho contato por email. Em troca visita e cadastre-se para dar aquela força. Obrigado!

    • Euler Oliveira Autor às 19:40

      Olá Odair.

      Fique à vontade para compartilhar! Já acessei seu canal e fiz minha inscrição.

      Fica ligado aqui no blog, pois a próxima postagem sobre o Jarvis vai ser bem interessante!