Programando ESP32: Guia Completo para Publicação MQTT

O ESP32 é um microcontrolador poderoso e versátil, amplamente utilizado em projetos de automação e Internet das Coisas (IoT). Uma das funcionalidades mais úteis desse dispositivo é a capacidade de se comunicar usando o protocolo MQTT (Message Queuing Telemetry TransportIntroduçã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.). Neste artigo, vamos explorar em profundidade como programar o ESP32 para publicar dados via MQTT, permitindo a transmissão eficiente de informações para outros dispositivos ou servidores.

O Que é MQTT e Por Que Usá-lo com o ESP32?🔗

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 e eficiente, projetado especificamente para dispositivos que possuem recursos limitados, como é o caso do ESP32. Ele funciona no modelo publish/subscribe, onde dispositivos podem publicar mensagens em tópicos específicos, enquanto outros assinam esses tópicos para receber as mensagens.

Vantagens do MQTT

Preparando o Ambiente de Desenvolvimento🔗

Antes de começar a programar, precisamos preparar nosso ambiente:

1. Instalar 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.: Se ainda não o fez, baixe e instale a versão mais recente do 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. ConfigurarInstalando 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. Suporte ao ESP32: 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., vá em Arquivo > Preferências, e adicione o seguinte URL aos 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.:

https://dl.espressif.com/dl/package_esp32_index.json

3. Instalar 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. Necessárias: 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., procure 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.

4. Biblioteca 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.: Precisamos desta biblioteca para utilizar o 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.. 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., procure 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-a.

Circuito Básico🔗

Para este projeto, não precisaremos de um circuito complexo. Apenas conecte o ESP32 ao computador via cabo USB. No entanto, para fins ilustrativos, vamos simular a leitura de um sensor de temperatura e umidadeExibindo 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. (como o DHT11 ou DHT22). Se tiver um desses sensores, você pode conectá-lo seguindo este esquema:

Programando o ESP32🔗

Importando as Bibliotecas Necessárias

Vamos começar importando 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. que usaremos em nosso código.

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

Definindo as Constantes e Variáveis

Defina as credenciais da sua rede Wi-Fi, o endereço do broker MQTT e outras configuraçõesInstalando 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..

// Configurações da rede Wi-Fi
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
// Configurações do MQTT
const char* mqtt_server = "test.mosquitto.org";
const int mqtt_port = 1883;
const char* mqtt_user = "";
const char* mqtt_password = "";
// Configurações do sensor DHT
#define DHTPIN 4      // Pino onde o sensor está conectado
#define DHTTYPE DHT22 // Tipo do sensor DHT11 ou DHT22
DHT dht(DHTPIN, DHTTYPE);

Configurando o Cliente Wi-Fi e MQTT

Crie instâncias dos clientes 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. e MQTT.

WiFiClient espClient;
PubSubClient client(espClient);

Função de Conexão ao Wi-Fi

Implemente uma função para 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_wifi()
{
  delay(10);
  Serial.println();
  Serial.print("Conectando-se à rede ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Wi-Fi conectado");
  Serial.print("Endereço IP: ");
  Serial.println(WiFi.localIP());
}

Função de Reconexão ao Broker MQTT

Se a conexão com o 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. for perdida, precisamos reconectá-la.

void reconnect()
{
  while (!client.connected())
  {
    Serial.print("Conectando ao broker MQTT...");
    String clientId = "ESP32Client-";
    clientId += String(random(0xffff), HEX);
    if (client.connect(clientId.c_str(), mqtt_user, mqtt_password))
    {
      Serial.println("Conectado");
    }
    else
    {
      Serial.print("Falha, rc=");
      Serial.print(client.state());
      Serial.println(" Tentando novamente em 5 segundos");
      delay(5000);
    }
  }
}

Configurando o Setup

Na função setup(), inicializamos a comunicação serial, conectamos ao Wi-Fi, configuramos o 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. e inicializamos o sensor DHT.

void setup()
{
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
  dht.begin();
}

Loop Principal

No loop(), certificamos que 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., lemos os dados do sensor e publicamos os valores.

void loop()
{
  if (!client.connected())
  {
    reconnect();
  }
  client.loop();
  // Leitura dos dados do sensor
  float temperatura = dht.readTemperature();
  float umidade = dht.readHumidity();
  // Verifica se a leitura falhou
  if (isnan(temperatura) || isnan(umidade))
  {
    Serial.println("Falha ao ler do sensor DHT");
    return;
  }
  // Exibe os valores no Serial Monitor
  Serial.print("Temperatura: ");
  Serial.print(temperatura);
  Serial.print(" °C | Umidade: ");
  Serial.print(umidade);
  Serial.println(" %");
  // Converte os valores para string
  char tempString[8];
  dtostrf(temperatura, 1, 2, tempString);
  char umidString[8];
  dtostrf(umidade, 1, 2, umidString);
  // Publica os valores nos tópicos MQTT
  client.publish("casa/sala/temperatura", tempString);
  client.publish("casa/sala/umidade", umidString);
  // Aguarda 10 segundos antes de ler novamente
  delay(10000);
}

Explicação Detalhada do Código🔗

Conexão Wi-Fi

A função setup_wifi() é responsável por 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.. Utilizamos WiFi.beginConfigurando 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.(ssid, password) para iniciar a conexão e, em seguida, aguardamos até que o status seja WL_CONNECTED.

Cliente MQTT

Criamos 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. com 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. client(espClient);, onde espClient é o cliente Wi-Fi. Configuramos 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. com client.setServer(mqtt_server, mqtt_port);.

Reconexão ao Broker MQTT

A função reconnect() tenta reconectar 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. em caso de perda de conexão. Ela gera um ID de cliente único para cada tentativa e utiliza client.connect(clientId.c_str(), mqtt_user, mqtt_password) para estabelecer a conexão.

Leitura do Sensor e Publicação dos Dados

No loop principalHospedando 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., lemos os valores de temperatura e umidade usando dht.readTemperature() e dht.readHumidity(). Em seguida, verificamos se a leitura foi bem-sucedida. Convertimos os valores para strings e usamos client.publish(tópico, mensagem) para publicar nos tópicos 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. desejados.

Testando a Publicação dos Dados🔗

Para verificar se os dados estão sendo publicados corretamente, podemos utilizar 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., como o MQTT Explorer ou o MQTT.fx. Siga os passos abaixo:

1. Instale 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.: Baixe e instale um cliente de sua preferência.

2. Conecte 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.: Use o mesmo broker especificado 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! (por exemplo, test.mosquitto.org).

3. Assine os Tópicos: Inscreva-se nos tópicos casa/sala/temperatura🦠 Analisador de Qualidade da Água Portátil🦠 Analisador de Qualidade da Água PortátilConfira o tutorial completo que integra sensores IoT e ESP32 para monitorar pH, turbidez, condutividade e temperatura em tempo real com relatórios PDF. e casa/sala/umidade🌡 Monitor de Estufa com Controle Climático🌡 Monitor de Estufa com Controle ClimáticoOtimize sua estufa com controle inteligente de microclima. Use ESP32 e sensores industriais para maximizar a produtividade e sustentabilidade agrícola..

4. Monitore as Mensagens: Você deverá ver os valores de temperatura🦠 Analisador de Qualidade da Água Portátil🦠 Analisador de Qualidade da Água PortátilConfira o tutorial completo que integra sensores IoT e ESP32 para monitorar pH, turbidez, condutividade e temperatura em tempo real com relatórios PDF. e umidade sendo atualizados a cada 10 segundos.

Personalizando os Tópicos e Mensagens🔗

Os tópicos que escolhemos (casa/sala/temperatura🦠 Analisador de Qualidade da Água Portátil🦠 Analisador de Qualidade da Água PortátilConfira o tutorial completo que integra sensores IoT e ESP32 para monitorar pH, turbidez, condutividade e temperatura em tempo real com relatórios PDF. e casa/sala/umidade🌡 Monitor de Estufa com Controle Climático🌡 Monitor de Estufa com Controle ClimáticoOtimize sua estufa com controle inteligente de microclima. Use ESP32 e sensores industriais para maximizar a produtividade e sustentabilidade agrícola.) são exemplos. Você pode personalizá-los de acordo com a estrutura do seu projeto.

Estrutura de Tópicos

Uma boa prática é utilizar uma estrutura hierárquica nos tópicos, facilitando a organização e o gerenciamento dosSeguranç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. dados. Por exemplo:

  • projeto/local/dispositivo/medida

Exemplo:

Lidando com Erros e Exceções🔗

É importante implementar mecanismos para lidar com possíveis erros, como falhas na leitura 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. ou perda de conexão com o broker.

Verificação de Leitura

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!, verificamos se os valores retornados pelo sensor são números válidos:

if (isnan(temperatura) || isnan(umidade))
{
  Serial.println("Falha ao ler do sensor DHT");
  return;
}

Se a leitura falhar, podemos tentar ler novamente ou enviar uma mensagem de erro através do 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..

Reconexão Automática

Utilizamos a função reconnect() para garantir que o ESP32 tente se reconectar 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. caso a conexão seja perdida.

Segurança na Comunicação MQTT🔗

Embora, neste exemplo, não tenhamos utilizado 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. ou criptografia, é fundamental considerar aspectos de segurança em projetos reais.

Autenticação

Configure um usuário e senha para o 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 passe essas credenciais na função client.connect().

if (client.connect(clientId.c_str(), mqtt_user, mqtt_password))
{
  // Conectado com autenticação
}

Criptografia TLS

Para adicionar uma camada extra de segurança, utilize um broker que suporte TLS/SSL e configure o ESP32 para se conectar usando criptografia. Isso envolve certificados e configuraçõesInstalando 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. adicionais.

Expandindo o Projeto🔗

Uma vez que você tenha aprendido a publicar dados via 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., pode expandir o projeto de várias maneiras:

Dicas e Boas Práticas🔗

Conclusão🔗

Programar o ESP32 para publicar dados via MQTT é uma habilidade poderosa que permite a criação de soluções avançadas em IoT e automaçã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.. Compreendendo os conceitos básicos e aplicando as práticas demonstradas neste artigo, você estará apto a desenvolver projetos robustos e eficientes.

Lembre-se de sempre considerar os aspectos de segurança, especialmente em aplicações📞 Interfone IP com Vídeo Chamada📞 Interfone IP com Vídeo ChamadaDescubra como integrar interfone IP com vídeo chamada utilizando ESP32 para segurança residencial e corporativa, com streaming e criptografia avançada. que envolvem dados sensíveis ou controles críticos. Explore as diversas possibilidades que o MQTT oferece e continue expandindo seus conhecimentos para criar sistemas cada vez mais complexos e integrados.

Desejamos sucesso em seus projetos e que este guia tenha sido útil em sua jornada com 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 MQTT!

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