Monitoramento Remoto: ESP32 e MQTT para Sensores IoT

O ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! é uma poderosa ferramenta para projetos de Internet das CoisasIntegração do ESP32 com Plataformas de Automação Residencial (ex: Home Assistant)Integração do ESP32 com Plataformas de Automação Residencial (ex: Home Assistant)Aprenda a integrar o ESP32 com Home Assistant de forma prática e segura, configurando Wi-Fi, MQTT, sensores e atuadores para uma casa inteligente. (IoT). Com seu suporte integrado a Wi-Fi e BluetoothControle de Dispositivos com ESP32 via BluetoothControle de Dispositivos com ESP32 via BluetoothDescubra como controlar dispositivos com ESP32 via Bluetooth em projetos IoT. Aprenda a configurar circuitos e programar funcionalidades de automação., ele permite a conexão de dispositivos ao redor do mundo. Neste artigo, vamos explorar como implementar o monitoramentoSegurança e Autenticação em APPsSegurança e Autenticação em APPsDescubra estratégias essenciais para implementar HTTPS, autenticação JWT e segurança robusta em APPs conectados ao ESP32 para IoT. remoto de sensores usando o ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! e o protocolo MQTTIntrodução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Introdução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Aprenda os fundamentos do MQTT para ESP32, explorando conceitos, benefícios e exemplos práticos para projetos robustos em IoT e automação., permitindo a coleta e análise de dados em tempo realExibindo Dados de Sensores em Tempo Real no NavegadorExibindo Dados de Sensores em Tempo Real no NavegadorAprenda a configurar o ESP32 para monitorar sensores em tempo real via navegador, integrando Wi-Fi e AJAX para visualização dinâmica..

Por Que Usar o ESP32 e MQTT para Monitoramento Remoto?🔗

O monitoramento remoto de sensores é essencial em diversas aplicações, desde a automação residencial até a indústria 4.0. O ESP32, com seu baixo custo e alto desempenho, é ideal para essas tarefas. Já o MQTT é um protocolo de comunicação🌧 Alerta de Enchentes com Sensores de Nível de Rios🌧 Alerta de Enchentes com Sensores de Nível de RiosTutorial sobre sistema IoT com ESP32 e sensores de nível. Descubra a implementação, comunicação robusta e alertas para enchentes em comunidades ribeirinhas. leve, perfeito para dispositivos com recursos limitados e com necessidade de comunicação eficiente e em tempo real.

Componentes Necessários🔗

Para seguir este projeto, você vai precisar dos seguintes componentes📜 Quadro Digital com Tela E-Ink de 32 Polegadas📜 Quadro Digital com Tela E-Ink de 32 PolegadasDescubra como combinar eficiência energética, tecnologia E-Ink e ESP32 para criar quadros digitais, dashboards interativos e arte generativa com soluções IoT.:

Conectando o Sensor ao ESP32🔗

Esquema de Ligação

O sensor DHT11Exibindo Dados no Monitor Serial com ESP32Exibindo Dados no Monitor Serial com ESP32Aprenda a configurar e exibir dados no Monitor Serial com ESP32, utilizando exemplos práticos e técnicas de depuração para otimizar seus projetos IoT./DHT22 é fácil de usar e fornece leituras de temperatura e umidade. Vamos conectar o sensor ao ESP32 conforme o esquema abaixo:

Nota: Alguns sensores DHT possuem quatro pinos. Neste caso, geralmente o quarto pino não é utilizado ou é outro GND.

Configurando o Ambiente de Desenvolvimento🔗

Antes de começarmos a programar, certifique-se de que o Arduino IDEInstalando o Arduino IDE para ESP32 no WindowsInstalando o Arduino IDE para ESP32 no WindowsEste tutorial passo a passo ensina como instalar o Arduino IDE e configurar o ESP32 no Windows, garantindo um ambiente ideal para IoT. está configurado para o ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia!. Se não estiver, siga os passos abaixo:

1. Abra o Arduino IDEInstalando o Arduino IDE para ESP32 no WindowsInstalando o Arduino IDE para ESP32 no WindowsEste tutorial passo a passo ensina como instalar o Arduino IDE e configurar o ESP32 no Windows, garantindo um ambiente ideal para IoT..

2. Vá em Arquivo > Preferências.

3. No campo URLs Adicionais para Gerenciadores de PlacasInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns., adicione:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

4. Clique em OK.

5. Vá em Ferramentas > Placa > Gerenciador de PlacasInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns..

6. Pesquise por ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! e instale o pacote ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! by Espressif Systems.

Instalando Bibliotecas Necessárias

Vamos precisar das seguintes bibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP.:

Para instalarInstalando o Arduino IDE para ESP32 no macOSInstalando o Arduino IDE para ESP32 no macOSAprenda passo a passo a instalar e configurar o Arduino IDE no macOS para programar o ESP32. Siga dicas essenciais para solucionar problemas comuns.:

1. Vá em Sketch > Incluir Biblioteca > Gerenciar BibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP..

2. Pesquise por DHT sensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código. library e instale a biblioteca de Adafruit.

3. Pesquise por Adafruit Unified SensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código. e instale.

4. Pesquise por PubSubClientIntegração do ESP32 com Plataformas de Automação Residencial (ex: Home Assistant)Integração do ESP32 com Plataformas de Automação Residencial (ex: Home Assistant)Aprenda a integrar o ESP32 com Home Assistant de forma prática e segura, configurando Wi-Fi, MQTT, sensores e atuadores para uma casa inteligente. e instale.

Escrevendo o Código para o ESP32🔗

Vamos escrever um código que lê os dados do sensor e publica esses dados em um broker MQTTConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT..

Configurando Credenciais Wi-Fi e MQTT

Primeiro, vamos definir as credenciais da rede Wi-Fi e do broker MQTTConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT.:

#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
#define DHTPIN 4     // Pino onde o DHT está conectado
#define DHTTYPE DHT22   // Defina DHT11 ou DHT22
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
const char* mqtt_server = "ENDERECO_DO_MQTT_BROKER";
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(DHTPIN, DHTTYPE);

Configurando a Conexão Wi-Fi

No setup(), vamos conectar o ESP32 à rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade.:

void setup()
{
  Serial.begin(115200);
  delay(10);
  dht.begin();
  WiFi.begin(ssid, password);
  Serial.println();
  Serial.print("Conectando-se a ");
  Serial.println(ssid);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("WiFi conectado");
  Serial.println("Endereço IP: ");
  Serial.println(WiFi.localIP());
  client.setServer(mqtt_server, 1883);
}

Função para Reconectar ao MQTT

Caso a conexão com o brokerIntrodução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Introdução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Aprenda os fundamentos do MQTT para ESP32, explorando conceitos, benefícios e exemplos práticos para projetos robustos em IoT e automação. seja perdida, precisamos reconectar:

void reconnect()
{
  while (!client.connected())
  {
    Serial.print("Tentando conexão MQTT...");
    // Cria um ID de cliente aleatório
    String clientId = "ESP32Client-";
    clientId += String(random(0xffff), HEX);
    if (client.connect(clientId.c_str()))
    {
      Serial.println("Conectado");
    }
    else
    {
      Serial.print("Falha, rc=");
      Serial.print(client.state());
      Serial.println(" Tentando novamente em 5 segundos");
      delay(5000);
    }
  }
}

Loop Principal

No loop(), vamos ler os dados do sensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código. e publicar via MQTT:

void loop()
{
  if (!client.connected())
  {
    reconnect();
  }
  client.loop();
  float temperatura = dht.readTemperature();
  float umidade = dht.readHumidity();
  // Verifica se houve falha na leitura do sensor
  if (isnan(temperatura) || isnan(umidade))
  {
    Serial.println("Falha na leitura do sensor DHT!");
    return;
  }
  // Converte os valores para string
  char tempString[8];
  dtostrf(temperatura, 1, 2, tempString);
  char umidString[8];
  dtostrf(umidade, 1, 2, umidString);
  // Publica os dados no broker MQTT
  client.publish("casa/sala/temperatura", tempString);
  client.publish("casa/sala/umidade", umidString);
  Serial.print("Temperatura: ");
  Serial.print(temperatura);
  Serial.println(" *C");
  Serial.print("Umidade: ");
  Serial.print(umidade);
  Serial.println(" %");
  // Aguarda 10 segundos antes da próxima leitura
  delay(10000);
}

Código Completo

Segue o código completo para copiar e colar no Arduino IDEInstalando o Arduino IDE para ESP32 no WindowsInstalando o Arduino IDE para ESP32 no WindowsEste tutorial passo a passo ensina como instalar o Arduino IDE e configurar o ESP32 no Windows, garantindo um ambiente ideal para IoT.:

#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
#define DHTPIN 4     // Pino onde o DHT está conectado
#define DHTTYPE DHT22   // Defina DHT11 ou DHT22
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
const char* mqtt_server = "ENDERECO_DO_MQTT_BROKER";
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
  Serial.begin(115200);
  delay(10);
  dht.begin();
  WiFi.begin(ssid, password);
  Serial.println();
  Serial.print("Conectando-se a ");
  Serial.println(ssid);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("WiFi conectado");
  Serial.println("Endereço IP: ");
  Serial.println(WiFi.localIP());
  client.setServer(mqtt_server, 1883);
}
void reconnect()
{
  while (!client.connected())
  {
    Serial.print("Tentando conexão MQTT...");
    String clientId = "ESP32Client-";
    clientId += String(random(0xffff), HEX);
    if (client.connect(clientId.c_str()))
    {
      Serial.println("Conectado");
    }
    else
    {
      Serial.print("Falha, rc=");
      Serial.print(client.state());
      Serial.println(" Tentando novamente em 5 segundos");
      delay(5000);
    }
  }
}
void loop()
{
  if (!client.connected())
  {
    reconnect();
  }
  client.loop();
  float temperatura = dht.readTemperature();
  float umidade = dht.readHumidity();
  if (isnan(temperatura) || isnan(umidade))
  {
    Serial.println("Falha na leitura do sensor DHT!");
    return;
  }
  char tempString[8];
  dtostrf(temperatura, 1, 2, tempString);
  char umidString[8];
  dtostrf(umidade, 1, 2, umidString);
  client.publish("casa/sala/temperatura", tempString);
  client.publish("casa/sala/umidade", umidString);
  Serial.print("Temperatura: ");
  Serial.print(temperatura);
  Serial.println(" *C");
  Serial.print("Umidade: ");
  Serial.print(umidade);
  Serial.println(" %");
  delay(10000);
}

Explicação do Código🔗

Vamos analisar as partes-chave do códigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis! para entender seu funcionamento.

Incluindo Bibliotecas

Utilizamos as bibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP. WiFi.hConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização. para conexão Wi-FiConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização., PubSubClient.hExemplos de Código e BibliotecasExemplos de Código e BibliotecasDescubra exemplos práticos e bibliotecas essenciais para utilizar o ESP32 em projetos de IoT, automação, Wi-Fi, OTA, MQTT e BLE. para MQTTIntrodução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Introdução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Aprenda os fundamentos do MQTT para ESP32, explorando conceitos, benefícios e exemplos práticos para projetos robustos em IoT e automação. e DHT.h para o sensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código.:

#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"

Definindo Constantes e Variáveis

Definimos o pino do sensor, o tipo do DHT, as credenciais Wi-FiTestando e Solucionando Problemas no Sistema de Alarme com ESP32Testando e Solucionando Problemas no Sistema de Alarme com ESP32Confira nosso guia prático de testes e diagnósticos para sistemas de alarme com ESP32, solucionando falhas e otimizando seu projeto com dicas essenciais. e o endereço do broker MQTT:

#define DHTPIN 4
#define DHTTYPE DHT22
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
const char* mqtt_server = "ENDERECO_DO_MQTT_BROKER";

Configurando o Setup

No setup(), inicializamos a comunicação serial, o sensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código. DHT e conectamos ao Wi-Fi:

void setup()
{
  Serial.begin(115200);
  dht.begin();
  WiFi.begin(ssid, password);
  // Código de conexão Wi-Fi...
}

Configuramos também o servidor MQTTConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT.:

client.setServer(mqtt_server, 1883);

Loop Principal

No loop(), verificamos se estamos conectados ao broker MQTTConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT. e, caso não estejamos, chamamos reconnect(). Em seguida, lemos os dados do sensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código. e publicamos:

void loop()
{
  if (!client.connected())
  {
    reconnect();
  }
  client.loop();
  float temperatura = dht.readTemperature();
  float umidade = dht.readHumidity();
  // Verificação e publicação dos dados...
}

Função de Reconexão

A função reconnect() tenta conectar ao broker MQTTConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT.. Se não conseguir, aguarda 5 segundos e tenta novamente:

void reconnect()
{
  while (!client.connected())
  {
    // Tenta conectar...
  }
}

Configurando o Broker MQTT🔗

Para receber os dados publicados pelo ESP32, precisamos de um broker MQTTConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT.. Existem várias opções:

Usando o Mosquitto Localmente

Se optar por um brokerIntrodução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Introdução ao MQTT: Conceitos Básicos e Benefícios para o ESP32Aprenda os fundamentos do MQTT para ESP32, explorando conceitos, benefícios e exemplos práticos para projetos robustos em IoT e automação. local, siga os passos:

1. Instale o MosquittoConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT. no seu computador.

2. Inicie o serviço do MosquittoConfigurando um Broker MQTT para Comunicação com o ESP32Configurando um Broker MQTT para Comunicação com o ESP32Aprenda a configurar o broker MQTT e conectar seu ESP32 com segurança e eficiência para desenvolver robustas aplicações IoT..

3. Use o endereço IP do computador como mqtt_server no códigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis!.

Testando a Publicação de Dados

Para verificar se os dados estão sendo publicados, podemos usar um cliente MQTTBibliotecas e Funções de ComunicaçãoBibliotecas e Funções de ComunicaçãoDescubra como utilizar bibliotecas e funções de comunicação no ESP32 para criar projetos IoT robustos e eficientes. Veja exemplos práticos e dicas.:

Assine os tópicos:

Você deverá ver as leituras do sensorProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código. sendo atualizadas a cada 10 segundos.

Aplicações Práticas🔗

Com o monitoramentoSegurança e Autenticação em APPsSegurança e Autenticação em APPsDescubra estratégias essenciais para implementar HTTPS, autenticação JWT e segurança robusta em APPs conectados ao ESP32 para IoT. remoto configurado, as possibilidades são inúmeras:

Expandindo o Projeto🔗

Este projeto pode ser expandido de várias formas:

Considerações Finais🔗

O uso do ESP32 combinado com o MQTT oferece uma solução robusta para monitoramentoSegurança e Autenticação em APPsSegurança e Autenticação em APPsDescubra estratégias essenciais para implementar HTTPS, autenticação JWT e segurança robusta em APPs conectados ao ESP32 para IoT. remoto de sensores. Com este conhecimento, você pode criar sistemas eficientes de coleta de dados, acessíveis de qualquer lugar. Lembre-se de sempre considerar aspectos de segurança, como autenticação e criptografia, ao implementar soluções em ambientes reais.

Dicas e Resolução de Problemas🔗

Segurança no Monitoramento Remoto🔗

Embora não tenhamos aprofundado neste artigo, é vital considerar a segurança ao enviar dados pela rede. O MQTT suporta autenticaçãoSegurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Proteja a conexão Wi-Fi do ESP32 com dicas de criptografia, senhas fortes e monitoramento, garantindo segurança e integridade dos dados. com usuário e senha, além de criptografia TLS. Em projetos comerciais ou que lidem com informações sensíveis, implemente essas camadas adicionais de segurança para proteger seus dados e dispositivos.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados