Sistema de alimentação de animais de estimação usando WhatsApp (protocolo em ponte com MQTT)

Sistema de alimentação de animais de estimação usando WhatsApp (protocolo em ponte com MQTT)

Neste artigo estaremos criando um sistema de alimentação para animais de estimação que pode ser controlado pelo WhatsApp.

Componentes necessários
Ferramentas necessárias/bibliotecas necessárias

Máquina baseada em Linux
API WhatsApp baseada em Python
Baseado em MQTT
IDE Python
IDE do Arduino

Informações técnicas
O projeto completo conta com três tipos de comunicação e dispositivos. XMPP (WhatsApp, MQTT e Arduino Serial) também pode ser categorizado como comunicação M2M (comunicação máquina a máquina).

Os desafios técnicos eram criar um dispositivo que pudesse ser controlado com uma interface que estivesse prontamente disponível para todos. Portanto, usaremos o WhatsApp com MQTT para controlar o comedouro dos animais de estimação.

Diagrama de bloco

Figura 1 Sistema de alimentação de animais de estimação usando WhatsApp

A caixa de alimentação para animais de estimação é controlada por uma porta controlada por Atmega328 (Arduino UNO) e ESP. Arduino está recebendo comandos via MQTT usando ESP. Existe uma máquina baseada em Linux que executa a API do WhatsApp para ler mensagens do WhatsApp e enviá-las ao corretor MQTT. O ESP recebe comandos do corretor para controlar o servo conectado à porta do sistema de alimentação.

Diagrama de circuito

Conexão para servo
Como funciona o sistema
Quando uma mensagem é enviada do dono do animal para o sistema de alimentação do animal usando o WhatsApp, a mensagem vai primeiro para a máquina Linux, onde a mensagem é lida do WhatsApp usando API. A mensagem é verificada se algum comando estiver disponível para controlar o sistema. O comando é extraído e enviado ao sistema usando MQTT. A mensagem é recebida pelo ESP e enviada ao Arduino via Serial, e se a mensagem disser para abrir a porta do sistema de alimentação, o servo se move e a porta é aberta.

Entendendo o código-fonte
Como o projeto tem duas partes

  • Leia mensagens pelo WhatsApp e envie-as para MQTT: Inclui código para máquinas Linux e instalação da API do WhatsApp e implementação do MQTT.
  • Leia mensagens pelo MQTT e controle o servo motor: código Arduino para controlar o servo e ESP para comunicação pelo MQTT.

Vamos primeiro entender a comunicação com WhatsApp e MQTT.

Código para script Python
O script python é instalado com a API “Yowsup” do WhatsApp para ler e enviar mensagens do WhatsApp.

Existem dois arquivos neste script run.py e camada.py.

Compreendendo o arquivo Run.py
Chamaremos nossas bibliotecas no topo do arquivo

de yowsup.stacks importar YowStackBuilder
de yowsup.layers.auth importar AuthError
de yowsup.layers importar YowLayerEvent
de yowsup.layers.network importar YowNetworkLayer
de yowsup.env importar YowsupEnv

  • Também anexaremos o arquivo da camada no topo porque a classe principal “Ecocamada” existe dentro desse arquivo.

Da importação da camada EchoLayer

  • Podemos nomear qualquer arquivo de camada, mas devemos colocar o mesmo nome aqui.
  • Dentro de py, declararemos nossa variável principal para senha e eventos que queremos que ocorram.

credenciais = (“91xxxxxxxxxx”, “HkhWVW5/Wnr493HXK8NKl/htpno=”)

  • Agora passamos para a camada e construímos a pilha. Além disso, o loop que manterá a conexão ativa é chamado.

stack.setCredentials(credenciais)
stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_CO
NNECT)) #enviando o sinal de conexão
stack.loop #este é o programa mainloop

Compreendendo o arquivo layer.py
Este arquivo contém a biblioteca de protocolos para MQTT e pode receber mensagens do WhatsApp.

Entendendo como as mensagens são recebidas do WhatsApp
Este arquivo contém a classe que receberá todas as mensagens recebidas para este número, e que será uma entidade de retorno de chamada para que qualquer outro loop possa ser executado dentro do arquivo.

@ProtocolEntityCallback(“mensagem”)
def onMessage(self, messageProtocolEntity):
se for verdade:

Os dados da mensagem e o número de onde veio a mensagem podem ser obtidos abaixo.
incomming_message_data = mensagemProtocolEntity.getBody

Isso obterá o corpo da mensagem, que é a mensagem real. Ele será armazenado em uma variável string “incomming_message_data”
incomming_message_sender = mensagemProtocolEntity.getFrom

Esta linha irá armazenar o número de contato da mensagem recebida na variável string “incomming_message_sender”

Compreendendo as camadas MQTT para envio e recebimento
Em primeiro lugar, importaremos as bibliotecas necessárias para o MQTT.
importar paho.mqtt.client como mqtt
importar paho.mqtt.publish como publicar

agora iremos declarar uma variável chamada client com mqtt client.
cliente = mqtt.Cliente

Agora faremos dois retornos de chamada de função 1. Para receber mensagens, 2. Fazer algo na conexão bem-sucedida.
cliente.on_connect=on_connect
cliente.on_message=on_message

Finalmente, nos conectaremos ao broker MQTT em uma porta e iniciaremos o cliente dentro de um loop sem bloqueio
cliente.connect(“corretor.hivemq.com”, 1883, 60)
cliente.loop_start

Depois que a conexão for bem-sucedida, podemos enviar mensagens usando este
publicar.single(tópico, message_data, hostname=”broker.hivemq.com”)

Então, agora quando qualquer mensagem é recebida no WhatsApp, ela é armazenada em uma string, e então essa string é escaneada em busca de algumas palavras-chave que definem aquela mensagem como um comando para ligar/desligar o servo.
elif(“luzes acesas” em incomming_msg):
#Faça algo na partida

Agora, se a condição for atendida, enviamos o comando de controle para o corretor MQTT.
publicar.single(“ts/dog”, “feed”, hostname=”broker.hivemq.com”)

Quando alguma mensagem não reconhecida é recebida, a mensagem no WhatsApp é respondida que é inválida.

Código para Arduino
O Arduino é instalado com um código que recebe dados em série e controla o servo de acordo.

Primeiro adicionamos uma biblioteca “Servo” para controlar o servo facilmente
#include Tentão conectamos o servo de acordo com o diagrama do circuito e podemos controlar o servo enviando o ângulo para o objeto servo.

meuservo.attach(5); // anexa o servo no pino 9 ao objeto servo
meuservo.write(0);

Além disso, quando uma string específica for recebida como “feed” ele irá girar o Servo onde a porta estará aberta e ao receber “ok” irá fechar a porta.
if (rec == “alimentar”) {
meuservo.write(180);
}
if (rec == “ok”) {
meuservo.write(0);

}

Código para ESP
O ESP está conectado ao Arduino na porta serial e inscrito em um tópico MQTT para recebê-lo. Ele envia os dados recebidos no tópico MQTT para a porta serial e os dados da serial para o tópico MQTT.

Para saber mais sobre ESP e MQTT, consulte nossos artigos anteriores.

Conteúdo Relacionado

Como solucionar problemas comuns do ESP32-CAM
ESP32-CAM é um módulo de câmera compacto que combina...
Qual o papel dos sensores automotivos nos veículos modernos?
Uma rede de sensores é incorporada em todos os...
Como escolher um controlador de e-bike
O controlador do motor é um dos componentes mais...
Um guia para padrões USB de 1.0 a USB4
A evolução dos padrões USB foi fundamental para moldar...
Schurter aprimora série de seletores de tensão com revestimento prateado
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A interface serial PCI fornece conectividade confiável em ambientes extremos
A Sealevel Systems anuncia o lançamento da Interface Serial...
STMicroelectronics expande portfólio de conversão de energia com diodos Trench Schottky de 100 V
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
O que são Sistemas Globais de Navegação por Satélite (GNSS) e como são usados?
Determinar uma localização precisa é necessário em várias indústrias...
O conversor GaN de 50 W da STMicroelectronics permite projetos de energia de alta eficiência
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
Samsung e Red Hat farão parceria em software de memória de próxima geração
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
Primeiro MPU single-core com interface de câmera MIPI CSI-2 e áudio
O mercado embarcado tem uma necessidade de soluções de...
Respiro no transformador: função, significado, manutenção
Se você desempenhar o papel de um Ventilador transformadorInicialmente...
Compreendendo os isoladores de suporte em sistemas elétricos
Você provavelmente tem um Isolador de suporte Se você...
Explore Stay Insulator – segurança, instalação e manutenção
Você provavelmente já viu permanecer um isolante sente-se em...
Mais segurança e eficiência com o isolador de manilha
Você provavelmente já viu Isoladores de manilha entronizados em...
Descubra o poder dos relés de travamento para eficiência energética e muito mais
Você provavelmente já passou por situações em que o...
Retour au blog

Laisser un commentaire

Veuillez noter que les commentaires doivent être approuvés avant d'être publiés.