Como programar uma máquina de café baseada em IoT

Como programar uma máquina de café baseada em IoT

Ansioso por uma xícara de café da manhã (ou da tarde) pronta? É possível garantir que a xícara ideal na hora ideal esteja pronta e esperando por você. Isso se deve a um sistema automatizado que utiliza a Internet das coisas (IoT).

Neste tutorial, desenvolveremos um Máquina de café baseada em IoT que opera em um horário definido sem interação humana. Ele também enviará notificações – como quando o copo estiver pronto para você – por meio de um painel na área de trabalho.

O servidor Network Time Protocol (NTP) rastreará o tempo real, usando “horas:minutos:segundos”, que ele retransmite ao sistema. O sistema também será pré-programado para um tempo definido (desejado). Quando o horário real e o desejado coincidem, o sistema envia um comando “ON” para a máquina de café por meio de um chip WiFi.

Isso alerta a máquina de café para fazer sua mágica, que será “DESLIGADA” automaticamente após um tempo predefinido para economizar energia. Uma notificação será enviada para sua área de trabalho informando que “Seu café foi feito”Quando estiver pronto.

Abrange o básico de como você pode saborear um café pronto, com a possibilidade de alterar o horário desejado de acordo com sua preferência. Agora, vamos revisar os componentes necessários e a tecnologia por trás do sistema.

Componentes
Aqui está o que você precisa para começar…

Dependências:

  • Sistema operacional: Windows/Linux/MacOSx
  • Linguagens de programação: Phyton 2.7
  • Meio de comunicação: Wi-fi

Tecnologia:

  • Protocolo MQTT: transporte de telemetria de fila de mensagens ou MQTT é um protocolo leve para transmissão de mensagens via Internet. Funciona como uma arquitetura cliente-servidor. O servidor é chamado de “corretor” e os clientes são “clientes”.
  • Servidor NTP: usado para sincronizar os relógios do sistema dos dispositivos conectados à Internet com o tempo universal coordenado (UTC).
  • Módulo Wi-Fi – ESP8266: do tamanho de um pequeno chip, este módulo pode se conectar a qualquer roteador WiFi e fornecer Internet para dispositivos que não estão conectados de outra forma. Usaremos isso para conectar a placa IoT a um corretor na Internet.

Diagrama de bloco

– A máquina de café está ligada a um circuito de relé que a liga/desliga.

– O relé é controlado pela placa IoT (o controlador Atmega 328P)

– A placa está conectada à Internet através do módulo ESP integrado.

– A placa “se comunica” com o corretor MQTT (HiveMQ) online e recebe e envia mensagens baseadas em MQTT.

– Um desktop de computador usa script Python para enviar e receber mensagens no MQTT para o corretor, que está conectado à máquina de café.

Como funciona?
Uma máquina baseada em Linux/Windows executa o script Python. O script é executado em um loop principal onde compara o tempo real, que está armazenado em uma string, com um tempo desejado. O horário desejado é escrito no script e armazenado em uma string usando uma condição “If”.

Quando o tempo real corresponde à sequência de tempo desejada, uma chamada de função envia um sinal “ON” para a máquina de café – que está conectada à Internet – através do MQTT. Ao receber o comando “ON”, liga automaticamente o relé “ON” para fazer o café.

Um período de tempo também é definido no sistema, após o qual a máquina de café será “DESLIGADA”.

O circuito

O código
Este projeto está dividido em duas partes:

1. O dispositivo controlado (a máquina de café)
2. O sistema de computador principal, que armazena o tempo desejado do café e sinaliza para ligar/desligar a máquina.

O código da placa IoT
Este código é escrito e compilado no Arduino IDE. Também tem duas partes. Uma é para controlar o dispositivo e utiliza um microcontrolador ATmega328. O outro é para comunicação via Internet e utiliza o módulo ESP8266.

Código de controle do microcontrolador
O microcontrolador está programado para receber strings na porta receptor/transmissor assíncrono universal (UART) do módulo ESP. Se o comando da string for “ON” ou “OFF”, ele muda o GPIO para HIGH ou LOW, respectivamente.

if(comando == “máquina/ligada”){
digitalWrite(coffee_machine_connected_pin,ALTO);
Serial.print(“a máquina de café está ligada”);
}

A placa também envia a resposta através do UART para o ESP. Ambos são programados para que qualquer mensagem enviada na serial seja publicada no broker MQTT.

Código do módulo ESP
O ESP está programado para se conectar ao WiFi usando uma biblioteca gerenciadora de WiFi, que cria um ponto de acesso quando necessário. Depois, através de uma página HTML, é possível configurar o ESP com SSID e PASS.

wifiManager.autoConnect(“AutoConnectAP”);

Qualquer mensagem recebida pelo ESP na serial será publicada no corretor MQTT. Além disso, tudo o que o ESP receber do corretor MQTT será enviado para a porta serial.

O código é como uma estrutura de adaptador de rede.

if (Serial.disponível ) {
String recivedData = Serial.readString ;
temp_str = dados recebidos;
char temp(temp_str.length + 2);
temp_str.toCharArray(temp, temp_str.length + 1);
cliente.publish(topicPublish, temp);
}

O código para enviar dados recebidos do corretor para o serial.

for (int i = 0; i < comprimento; i++) {

data_r_in_string = String(data_r_in_string + (char)carga útil(i));
//Serial.print((char)carga útil(i));
}
Serial.print(data_r_in_string);

O script Python
Primeiramente é necessário criar um arquivo chamado “timings.py” no qual todas as variáveis ​​são declaradas para que seja fácil alterar o tempo desejado para o café.

#tempos = hh:mm:ss
café_da-manhã = “08:00:00”
café_da-tarde = “12:00:00”
café_da-noite = “17:06:10”

O script chamado “system.py” importa todos os tempos do arquivo “timing.py”.

da importação de tempo *

Depois, é importante importar as bibliotecas necessárias para comunicação com o broker MQTT.

importar paho.mqtt.client como mqtt
importar paho.mqtt.publish como publicar

Em seguida, atribua duas variáveis ​​com tópicos MQTT — uma para enviar mensagens e outra para receber mensagens.

subscription_topic = “ts/café/relatório”
publicar_topic = “ts/café/máquina”

Agora, declare uma variável chamada “cliente” com o “cliente mqtt”.

cliente = mqtt.Cliente

Faça dois retornos de chamada de função:

1. Para receber mensagens
2. Para fazer algo baseado em uma conexão bem-sucedida

cliente.on_connect=on_connect
cliente.on_message=on_message

Por fim, conecte o broker MQTT em uma porta e inicie 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 isto:

publicar.single(tópico, message_data, hostname=”broker.hivemq.com”)

Agora é possível criar o loop, que incluirá a hora atual em uma variável string.

hora_atual = hora.strftime(“%H:%M:%S”)

Dentro do loop, compare a hora atual do sistema com todas as variáveis ​​anteriores.

if(café_damanhã == horário_atual):
imprimir café da manhã
send_signals(“máquina/ligada”)
Máquina = “LIGADA”

Quando a condição é atendida, é enviado um sinal que “LIGA” a máquina. Após a máquina de café ser ligada, ela deve ser desligada após um tempo específico. Para isso, é necessário outro loop que só inicia após a máquina ser ligada.

while(Máquina==”ON”):
if(segundo > tempo_para_qual_máquina_estará_ligada_s):
send_signals(“máquina/desligada”)
Máquina = “DESLIGADA”
segundo = 0
imprima “A máquina está desligada”

É assim que funciona o sistema para programar uma máquina de café baseada em IoT.

Bloga geri dön

Yorum bırakın

Yorumların yayınlanmadan önce onaylanması gerekmektedir.