Tutorial ESP32 46/55 - Monitoramento Remoto de Temperatura usando HiveMQ MQTT | Kit ESP32 da SunFounder

Tutorial ESP32 46/55 - Monitoramento Remoto de Temperatura usando HiveMQ MQTT | Kit ESP32 da SunFounder

Neste tutorial, criaremos um sistema de monitoramento de temperatura remoto usando o ESP32 e o protocolo MQTT. Este projeto nos permite publicar dados de temperatura em um broker MQTT e controlar um LED remotamente usando uma interface web. Ao pressionar um botão, podemos enviar leituras de temperatura para a nuvem, e também podemos receber comandos para ligar ou desligar o LED.

esp32-47-mqt-1

O ESP32 é um microcontrolador poderoso que possui Wi-Fi e Bluetooth integrados, tornando-o ideal para aplicações de Internet das Coisas (IoT). Nesta configuração, usaremos um termômetro NTC para medir a temperatura, um botão pressionado para acionar as leituras e um LED para indicar o status. Os dados serão enviados para o HiveMQ, um popular broker MQTT, onde podem ser acessados remotamente (no vídeo em 00:45).

esp32-47-mqt-2

Hardware Explicado

Para este projeto, utilizaremos os seguintes componentes:

  • Microcontrolador ESP32:Esta placa serve como a unidade central de processamento, gerenciando conexões Wi-Fi e comunicações MQTT.
  • Termistor NTC:Este sensor de temperatura varia sua resistência com base na temperatura. Ele fornece um sinal analógico que o ESP32 pode ler para determinar a temperatura atual.
  • LED:Este diodo emissor de luz será usado para indicar o status com base em comandos recebidos via MQTT.
  • Botão de Pressionar:Este botão fará com que o ESP32 leia a temperatura e a publique no broker MQTT.

Detalhes da Ficha Técnica

Fabricante SunFounder
Número da peça ESP32
Tensão de lógica/IO 3,3 V
Tensão de alimentação 5 V (via USB)
Corrente de saída (por canal) 12 mA máximo
Orientação sobre frequência PWM Até 40 kHz
Limiar de lógica de entrada 0,3 V (baixo), 2,4 V (alto)
Limites térmicos -40 a 85 °C
Pacote ESP32-WROOM-32

  • Garanta níveis de tensão adequados para evitar danos.
  • Use resistores de pull-up para o botão de pressão para garantir leituras estáveis.
  • Capacitores de desacoplamento podem ajudar a estabilizar a fonte de alimentação.
  • Tenha cuidado com a fiação do termistor para evitar leituras incorretas.
  • Verifique os detalhes do seu broker MQTT para uma conexão bem-sucedida.

Instruções de fiação

esp32-47-mqtt-wiring

Para conectar os componentes, comece ligando o termistor NTC. Conecte um pino do termistor ao supply de 3,3 V no ESP32. O outro pino conecta-se ao pino 36 no ESP32 e deve também ser conectado a um resistor de 10 kΩ, que por sua vez está ligado ao terra. Isso cria um divisor de tensão que permite que o ESP32 leia a resistência do termistor.

Em seguida, conecte o LED. O pino mais longo (ânodo) do LED se conecta ao pino 4 no ESP32 através de um resistor de 220 Ω, enquanto o pino mais curto (cátodo) se conecta ao terra. Para o botão, conecte um lado a 3.3 V e o outro lado ao pino 14 no ESP32. Além disso, conecte um resistor de 10 kΩ do pino do botão ao terra para garantir um estado LOW estável quando o botão não estiver pressionado.

Instale a biblioteca necessária

OPubSubClienta biblioteca é usada aqui, você pode instalá-la a partir doGerente de Biblioteca.

esp32-47-biblioteca-mqtt

Exemplos de Código e Tutorial

Na configuração, inicializamos a comunicação serial, estabelecemos a conexão Wi-Fi e configuramos o servidor MQTT. Aqui está um trecho do código de configuração:

void setup() {
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

Esta parte do código estabelece a conexão com a rede Wi-Fi e configura o servidor MQTT. Os modos dos pinos para o botão e o LED também são configurados aqui.

A função loop verifica continuamente o estado do botão e publica dados de temperatura quando pressionado. Aqui está um trecho focado do loop:

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  if (digitalRead(buttonPin)) {
    long now = millis();
    if (now - lastMsg > 5000) {
      lastMsg = now;
      char tempString[8];
      dtostrf(thermistor(), 1, 2, tempString);
      client.publish("SF/TEMP", tempString);
    }
  }
}

Nesse loop, verificamos se o ESP32 está conectado ao broker MQTT. Se o botão for pressionado, ele lê a temperatura do termistor e a publica no tópico "SF/TEMP" a cada 5 segundos.

Demonstração / O que Esperar

Quando o projeto estiver configurado e em funcionamento, pressionar o botão publicará a temperatura atual no broker MQTT. Você pode monitorar esses dados de qualquer cliente MQTT. Além disso, você pode enviar mensagens para controlar o LED; enviar "on" o acenderá, enquanto "off" o desligará. Fique atento ao comportamento esperado no vídeo às 15:30, onde as leituras de temperatura são exibidas após cada pressionar do botão.

Marcas de Tempo do Vídeo

  • 00:00 Início
  • 2:05 Introdução ao projeto
  • 7:06 Serviço HiveMQ gratuito
  • 7:56 Fiação explicada
  • 11:11 Código Arduino explicado
  • 18:46 Selecionando placa ESP32 e porta COM no Arduino IDE
  • 20:30 Demonstração do broker HiveMQ Free

Imagens

esp32-47-mqt-1
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-library
esp32-47-mqtt-wiring
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT
Idioma: C++
Copiado!

Arquivos📁

Nenhum arquivo disponível.