Interface entre Arduino e WhatsApp

O Twilio é uma plataforma com intuito de facilitar desenvolvedores a criarem soluções integradas com voz, mensagens de texto, vídeo, notificações e facilidades de comunicação em geral. O mesmo conta com uma API (Application Programming Interface) capaz de enviar mensagens bidirecionais do app Whatsapp de maneira autônoma.

Aplicação

 

Neste post iremos controlar um led através de mensagens enviadas pelo Whatsapp com intuito de simular uma situação onde todo ambiente poderá ser controlado por mensagens enviadas pelo app. Por meio de uma interface criada em Python os dados serão tratados e um Arduino se responsabilizará por receber os comandos e controlar o status do LED.

Materiais e montagem

 

Para conclusão de todo o projeto será necessário termos em mãos os seguintes materiais:

 

  • Arduino 
  • LED
  • Jumpers MM
  • Protoboard

 

Segue abaixo o esquema para montagem do protótipo:

Configurando o Twilio

 

Antes de mais nada é necessário inscrever-se no Twilio. Para isso clique aqui. Após o registro, faremos o login e seremos direcionado a dashboard da plataforma. Para configuração do acesso é necessário seguir este simples tutorial. Uma vez configurado não será mais necessário fazê-lo novamente. Após a conclusão clique na opção “Sendbox” no menu lateral esquerdo.

 

Abaixo um fluxograma ilustra como funcionará a execução dos processos. 

O Whatsapp envia uma mensagem para o Twilio, através de um webhook a interface recebe o texto da mensagem, envia o comando para o Arduino e retorna um feedback para o Twilio que por sua vez encaminha o mesmo em forma de mensagem para o usuário do Whatsapp. 

 

Programação

 

Levando em consideração que o Python e o Pip estejam instalados em sua máquina, é necessário baixarmos a biblioteca do Twilio, Flask e a Pyserial. Para isso execute os comandos abaixo, caso tenha problemas com o método de instalação do Twilio consulte a biblioteca aqui.

 

 

Feito isso crie o arquivo whats.py, on.py e off.py. O whats.py receberá o algoritmo que fará a interface entre o app e o Arduino, o aquivo on.py será responsavel por acender o led e por fim o off.py se responsabilizará por apagar o led.

 

Copie o código abaixo e cole-o dentro do arquivo whats.py. O mesmo é responsável por criar um servidor local na porta 5000, criar uma rota chamada led, receber mensagens através do método POST, fazer a verificação da mensagem recebida, retornar uma mensagem de feedback e executar o algoritmo que define o status do led.

 

Em seguida preencha o arquivos on.py com o seguinte algoritmo.

 

E para o arquivo off.py.

 

Ao conectar o Arduino na USB verifique se o mesmo estará alocado na porta COM3 caso seja outra porta é necessário fazer a alteração no parâmetro da variável “ser”. Feito isso abra a IDE do Arduino e compile o algoritmo abaixo.

 

O mesmo é responsável por ler as informações que chegam na Serial e acionar o led de acordo com os comandos recebidos. Para fazer download de todos algoritmos basta clicar aqui.

 

Para finalizar faça download do ngrok, necessário para criar uma URL no servidor localhost. Para fazer download basta clicar aqui, descompacte o arquivo executável e adicione-o à pasta do projeto. Após o procedimento execute o arquivo whats.py em seguida execute o ngrok e efetue o seguinte comando:

 

 

 

Se tudo ocorrer bem, você visualizará informações parecidas com a imagem abaixo.

Copie o link que contém o https e cole-o no input do “Sendbox” dentro da plataforma do Twilio, complete o link com “/led” em seguida clique em save. Certifique-se que o campo foi preenchido corretamente.

 

Conclusão

 

Se todos os procedimentos foram executados de maneira adequada, basta enviar uma mensagem para o número do Twilio salvo no smartphone e ele lhe responderá com as seguintes mensagens.

Sinta-se a vontade para fazer alterações no algoritmo, adicionando novas funcionalidades. A plataforma Twilio oferece uma vasta gama de ferramentas, aproveite para fazer uso das demais. Abaixo o vídeo demonstra a solução final do projeto executado com maestria.

 

 

 

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Allef Anderson Silva
Engenheiro Mecatrônico pela Universidade de Franca, ex-engenheiro de projetos na empresa Nexdrones, atualmente trabalha na Supervisão de Tecnologias de Apoio a Aprendizagem como Gestor de FabLab na empresa SESI. Ministra cursos, treinamentos e palestras sobre IoT, Sistemas Embarcados e Indústria 4.0. Participação em congressos nacionais e internacionais tais como: SCE 2017 e CONIC, com papers publicado pela Procedia Computer Science e Elsevier disponíveis na Science Direct. Tem como hobby desenvolver projetos que facilitem o cotidiano e publicar artigos como colaborador do portal Embarcados.

22
Deixe um comentário

avatar
 
9 Comment threads
13 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
12 Comment authors
Allef Anderson SilvaEduardoAkyraMárcioLuiz gustavo Silva da penha Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Eduardo
Visitante
Eduardo

Só é possível com Arduino nano?

Allef Anderson Silva
Visitante
Allef Anderson

Bom dia! É possível utilizar qualquer Arduino.

Luiz gustavo Silva da penha
Visitante
Luiz Gustavo

Parabéns ! Muito útil!!

Allef Anderson Silva
Visitante
Allef Anderson

Vlw Luiz. Muito obrigado!

Ronaldo Paroski
Visitante
Ronaldo Paroski

Boa noite, nunca programei em python, consigo fazer? Qual IDE sugere para fazer o codigo em python?

Allef Anderson Silva
Visitante
Allef Anderson

Ola Ronaldo. Claro que consegue, basta procurar outros tutoriais aqui no embarcados mesmo para se ambientar com o Python. Para programação do mesmo é possível usar qualquer editor de código. Eu utilizo o Sublime, mas também é possível programar direto do prompt de comando.

Ricardo de Oliveira
Visitante
Ricardo de Oliveira

Executei aqui com total sucesso! Obrigado por compartilhar essa informação de qualidade e utilidade. Abraço!

Allef Anderson Silva
Visitante
Allef Anderson

Que show! Muito obrigado Ricardo.

Rodrigo Paschoal
Visitante
Rodrigo

Boa tarde Allef, fiz todos os procedimentos.. todos os passos.. não deu erro em nada.. mas agora estou na tela do whats com uma mensagem que diz que estou conectado, que para sair posso dar um "stop".. então quando digito o OLA não acontece nada.. a msg do whatsapp é enviada mas não obtenho retorno, pode me ajudar?

Allef Anderson Silva
Visitante
Allef Anderson

Bom dia Rodrigo. Ja te respondi via email. Pode me contatar que vou lhe ajudar!

Guilherme Alvarenga Dos Santos
Visitante
Guilherme Santos

Parabéns pelo projeto!! Fantástica essa integração entre o Python e o Arduino, as possibilidades são realmente infinitas!! Show demais!!

Allef Anderson Silva
Visitante
Allef Anderson

Muito obrigado pelo apoio Guilherme. Pretendo escrever mais sobre outras possíveis utilidades desta ferramenta!

Olavio Sales
Visitante
Olavio Sales

Muito massa!

Allef Anderson Silva
Visitante
Allef

Vlw amigo!

Ricardo
Visitante
Ricardo

Então basicamente você precisa de um computador para acender um led...

Allef Anderson Silva
Visitante
Allef

Meu caro Ricardo. Isso é apenas a ponta de um iceberg, se a caso usar qualquer linuxboard, vc executa o algoritmo em python e não faz uso do computador. Aproveitei para mostrar as funcionalidades que um computador também pode ter. O legal é que existem N maneiras de acender um Led.
Qualquer duvida estou a disposição!

Márcio
Visitante
Márcio

Ricardo, esta é uma demonstração de como fazer uma integração do ambiente WhatsApp (totalmente humano) com um sistema automatizado. Ele está acendendo um led, mas poderia fazer o pedido de um serviço, avisar um problema, responder uma pesquisa, efetuar uma compra, fazer um check-in/out, controlar uma instalação elétrica, liberar um acesso ou muitas outras funções dependendo da sua necessidade.
Parabéns Allef pelo tutorial!
Certamente os visitantes aqui devem, ao contrário do Ricardo, ver muito mais que um led acendendo....

Allef Anderson Silva
Visitante
Allef Anderson

Muito obrigado Márcio. Você esta perfeitamente correto e entendeu qual a mensagem eu quis transmitir. Obrigado pelo apoio e em breve escreverei mais sobre este sistema!

Márcio Oliani
Visitante
Márcio Oliani

Boa noite! Jovem e Eng. Allef
Meus sinceros agradecimentos e parabéns pelo projeto e suas descrições.
Tenho um projeto para ser desenvolvido, mas preciso me focar e concentrar.
Gostaria de poder ter seus auxílios e quem sabe aprender mais.
Desde já agradeço pela atenção e obrigado.

Allef Anderson Silva
Visitante
Allef

Ola Márcio. Seria um prazer ajuda-lo. Segue meu email: [email protected]

Akyra
Visitante
Akyra

Não consigo obter resposta, depois de mandar mensagem no WhatsApp

Allef Anderson Silva
Visitante
Allef Anderson

Creio que a configuração nao tenha sido feita corretamente. Caso queira podemos marcar uma video chamada para tentarmos resolver!