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.

pip install twilio
pip install flask
pip install pyserial

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.

from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse
import os

app = Flask(__name__)

@app.route("/led", methods=['POST'])
def sms_reply():
    
    msg = request.form.get('Body')

    resp = MessagingResponse()
    if(msg == "Acender"):
    	resp.message("Led ON")
    	os.system("python on.py")

    if(msg == "Apagar"):
    	resp.message("Led Off")
    	os.system("python off.py")

    if(msg != "Acender" and msg != "Apagar"):
    	resp.message("Digite Acender para LED ON\nE Apagar para LED OFF")
    return str(resp)

if __name__ == "__main__":
    app.run(debug=True)

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

#on.py
import serial
import time

ser = serial.Serial('COM3', 9600)

def led_on_off():
   
        print("LED is on...")
        time.sleep(0.1) 
        ser.write(b'H') 
        
time.sleep(2) # Aguarde para que se inicialize a conexão com a serial.

led_on_off()

E para o arquivo off.py.

#off.py
import serial
import time

ser = serial.Serial('COM3', 9600)

def led_on_off():
   
        print("LED is off...")
        time.sleep(0.1)
        ser.write(b'L')
        
led_on_off()

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.

const int ledPin = 12; 
int incomingByte;      

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
  }
}

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:

ngrok http 5000

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.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
39 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Ulysses
Ulysses
12/06/2022 10:55

Parabéns, excelente matéria! Amigo daria fazer isto pela ide arduino sem usar python?

Péricles
Péricles
28/01/2022 17:25

Boa tarde. Gostaria de tirar umas duvidas. Pode passar o watsapp:?

Jeferson Ezequiel Gomes
Jeferson Ezequiel Gomes
15/09/2021 15:58

Tenho um projeto onde preciso coletar a informação da temperatura atual pelo Arduino e enviar para o WhatsApp , essa plataforma seria indicada para o meu projeto ?

Dunian Coutinho Sampa
Dunian Coutinho Sampa
15/07/2020 23:02

Olá,
É possível enviar mensagens para Twilio sem conectar o Arduino na porta serial do computador?

EDISON LUIS ROMANELLI DA SILVA JUNIOR
EDISON LUIS ROMANELLI DA SILVA JUNIOR
04/06/2020 01:23

Toda vez que ligo o computador, tenho que rodar o ngrok pra ele gerar uma nova URL, entrar no twilio e informar essa nova URL… Existe algum outro jeito de criar uma URL fixa? Vi alguma coisa na internet sobre um tal de “serveo”, como alternativa ao ngrok.

Allef
Allef
Reply to  EDISON LUIS ROMANELLI DA SILVA JUNIOR
05/06/2020 15:31

É possível instalar ele em algum server na nuvem e ele fica rodando diretamente

Bianca Santos Martins
Bianca Santos Martins
02/02/2020 13:30

Olá, gostaria de saber se voce tem algum projeto nesse seguimento de whats app com Twilio porem trabalhado com um teclado membrana e enviando mensagens de acordo com o numero apertado no mesmo.
Att.

Allef
Allef
Reply to  Bianca Santos Martins
05/06/2020 15:30

Neste seguimento eu ainda não vi nada. Mas é possível ser desenvolvido com as mesmas ferramentas demonstradas neste post

Wilton Moreira Ferraz Junior
Wilton Moreira Ferraz Junior
31/01/2020 10:50

Bom dia Allef

Seria possível fazer um projeto no qual se apertasse um botão no arduino e fosse enviada uma mensagem para o WhatsApp?

Desde já grato pela atenção

Bianca Santos Martins
Bianca Santos Martins
Reply to  Wilton Moreira Ferraz Junior
02/02/2020 13:30

gostaria de saber também

EDISON LUIS ROMANELLI DA SILVA JUNIOR
EDISON LUIS ROMANELLI DA SILVA JUNIOR
Reply to  Wilton Moreira Ferraz Junior
03/06/2020 22:23

Também fiquei na dúvida se isso é possível!

Allef
Allef
Reply to  Wilton Moreira Ferraz Junior
05/06/2020 15:29

Claro! É bem possível. Vcs teriam interesse caso eu escreve sobre isso?

EDISON LUIS ROMANELLI DA SILVA JUNIOR
EDISON LUIS ROMANELLI DA SILVA JUNIOR
Reply to  Allef
05/06/2020 17:38

Sim!!

Ulysses
Ulysses
Reply to  Allef
12/06/2022 10:58

com certeza!!!!

Eduardo
Eduardo
10/10/2019 19:19

Só é possível com Arduino nano?

Allef Anderson
Allef Anderson
Reply to  Eduardo
14/10/2019 08:36

Bom dia! É possível utilizar qualquer Arduino.

Eduardo
Eduardo
Reply to  Allef Anderson
17/10/2019 20:19

Boa Noite!
Na parte que pede para executar o arquivo whats.py e em seguida ngrok, o whats.py pode ser em qualquer IDE python?

Allef Anderson
Allef Anderson
Reply to  Eduardo
18/10/2019 10:40

Eu executei no sublime e também executei no terminal de comandos

Luiz Gustavo
Luiz Gustavo
03/10/2019 08:00

Parabéns ! Muito útil!!

Allef Anderson
Allef Anderson
Reply to  Luiz Gustavo
03/10/2019 16:52

Vlw Luiz. Muito obrigado!

Ronaldo Paroski
Ronaldo Paroski
02/10/2019 19:54

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

Allef Anderson
Allef Anderson
Reply to  Ronaldo Paroski
03/10/2019 08:35

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.

Ulysses.fisica
Ulysses.fisica
Reply to  Allef Anderson
12/06/2022 15:24

Olá Allef. Parabéns!!!! Excelente matéria. Da para executar usando a IDE do próprio arruino e não usando Python? Outra coisa. Se desejar desvincular o pc do arruino, como fazer para ele funcionar sem estar conectado ao pc?

Home » Arduino » Interface entre Arduino e WhatsApp

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: