Marcio Cunha

Como ler sensores industriais com ESP32 via Modbus TCP

Aprenda a desenvolver firmware embarcado no ESP32 para ler CLPs e sensores industriais via Modbus TCP, integrando dados direto no Wi-Fi.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • O protocolo Modbus TCP encapsula comandos industriais em pacotes Ethernet, permitindo consultas diretas via Wi-Fi sem adaptadores seriais complexos.
  • O ESP32 atua como cliente Modbus para requisitar registros de temperatura, pressão e estado de máquinas diretamente de CLPs e medidores.
  • A gestão de conexões Wi-Fi instáveis exige rotinas robustas de reconexão automática e tratamento de exceções para evitar travamentos em campo.
  • A conversão correta de bytes em ponto flutuante garante que os valores brutos lidos da rede reflitam a realidade física do processo produtivo.
  • Sistemas supervisórios recebem esses fluxos de dados de forma nativa quando a telemetria local é estruturada em pacotes JSON leves.

Por que usar o ESP32 na automação industrial com Wi-Fi

A automação industrial tradicional sempre dependeu de cabos blindados caros, conversores pesados e infraestruturas rígidas para interligar máquinas. Na prática, isso significa que alterar a posição de um sensor ou adicionar um novo ponto de coleta exigia horas de passagem de cabos e paradas de linha. Hoje, microcontroladores potentes e de baixo custo mudam esse cenário radicalmente. O ESP32, um chip compacto com Wi-Fi e Bluetooth integrados, permite criar pontes sem fio confiáveis para coletar dados diretamente de CLPs, os computadores robustos que controlam as fábricas, e enviá-los para sistemas supervisórios que gerenciam a produção em tempo real.

Quando pensamos em redes industriais, a escolha do protocolo é o fator mais crítico para o sucesso do projeto. O Modbus TCP surge como a alternativa ideal porque ele pega o velho e consagrado protocolo Modbus de 1979 e o coloca dentro de pacotes de rede padrão IP. Em vez de exigir cabos seriais dedicados com conexões ponto a ponto, o ESP32 consegue conversar com qualquer CLP ou medidor inteligente ligado à mesma rede Wi-Fi da fábrica. Antes de avançarmos para o código, vale lembrar que estruturar uma rede sem fio industrial exige cuidados semelhantes aos aplicados na infraestrutura de servidores, como discutimos ao analisar como configurar QoS e fq_codel no roteador para evitar gargalos de pacotes e latência excessiva sob forte interferência eletromagnética.

Entendendo a arquitetura Modbus TCP na prática

O Modbus funciona sob uma lógica estrita de comando e resposta, baseada na relação entre cliente, que faz as perguntas, e servidor, que guarda as informações nas chamadas tabelas de registradores. No nosso cenário de firmware embarcado, o ESP32 assume o papel de cliente Modbus TCP, abrindo conexões de rede para requisitar o estado de chaves, temperaturas e rotações diretamente de um CLP industrial ou de instrumentos como os abordados no guia sobre como calibrar sensores industriais via Modbus no campo. Cada dado útil fica armazenado em endereços numéricos específicos, divididos entre entradas digitais, saídas e registradores de 16 bits.

Para programar o ESP32 nessa tarefa, utilizamos o ambiente de desenvolvimento Arduino IDE com bibliotecas dedicadas ao protocolo Modbus TCP. A grande vantagem dessa abordagem é que o desenvolvedor não precisa reinventar a roda construindo a pilha de rede do zero; a biblioteca gerencia o encapsulamento dos comandos nas portas TCP padrão, geralmente a porta 502. Na prática, o firmware envia uma requisição estruturada especificando o endereço IP do equipamento de destino, a função desejada, como a leitura de registradores de holding, e a quantidade exata de posições de memória que desejamos consultar em um único ciclo de leitura.

Desenvolvendo o firmware de leitura e conexão

O desenvolvimento do código embarcado exige atenção rigorosa à estabilidade da conexão sem fio, já que ambientes industriais possuem muitas barreiras físicas e fontes de ruído elétrico. O primeiro bloco lógico do nosso firmware deve conectar o ESP32 à rede Wi-Fi local e entrar em um loop de monitoramento contínuo. Se o sinal cair, o microcontrolador precisa tentar a reconexão de forma isolada, sem congelar o restante do programa ou deixar portas de rede abertas em estado inconsistente. Para quem deseja expandir a automação integrando serviços complementares de monitoramento remoto com acesso seguro, vale a pena conferir como criar um túnel seguro corporativo usando o RustDesk para gerenciar dispositivos na mesma rede fabril.

Abaixo temos um exemplo funcional de código em C++ utilizando a IDE do Arduino para configurar o ESP32 como cliente Modbus TCP e realizar a leitura periódica de registradores de um CLP:

#include <WiFi.h>#include <ModbusIP_ESP8266.h>// Configurações da rede Wi-Fi localconst char* ssid = "RedeFabrica";const char* password = "SenhaSegura123";// Endereço IP do CLP na rede industrialIPAddress remotePLC(192, 168, 1, 50);ModbusIP mb;void setup() {  Serial.begin(115200);  WiFi.begin(ssid, password);  while (WiFi.status() != WL_CONNECTED) {    delay(500);    Serial.print(".");  }  Serial.println("\nConectado ao Wi-Fi!");  // Inicializa o cliente Modbus TCP  mb.client();}// Loop principal de leitura dos sensores a cada 2 segundosvoid setupLoop() {  // Mantém a conexão Modbus ativa  if (!mb.isConnected(remotePLC)) {    mb.connect(remotePLC);  } else {    // Lê 2 registradores a partir do endereço 0000 do CLP    mb.readHreg(remotePLC, 0, [](Modbus::ResultCode event, uint16_T count, void* data) {      if (event == Modbus::EX_SUCCESS) {        uint16_t* regs = reinterpret_cast<uint16_t*>(data);        Serial.printf("Sensor Leitura 1: %d\n", regs[0]);        Serial.printf("Sensor Leitura 2: %d\n", regs[1]);      } else {        Serial.printf("Erro na leitura Modbus: %d\n", event);      }      return true;    });  }  delay(2000);}void loop() {  mb.task();  setupLoop();}

Tratamento de dados, conversões e envio ao supervisório

Ler os registradores brutos do CLP é apenas a metade do trabalho em um projeto de firmware embarcado. Os instrumentos industriais costumam retornar números inteiros de 16 bits que precisam ser traduzidos para grandezas físicas reais, como graus Celsius ou quilopascais, aplicando fatores de escala e conversões matemáticas. Além disso, muitos sensores de alta precisão dividem uma única leitura de ponto flutuante em dois registradores Modbus consecutivos, exigindo operações de manipulação de bits para recombinar as metades alta e baixa corretamente antes de exibir a informação final no monitor serial.

Uma vez que os dados estão limpos e convertidos, o ESP32 precisa entregues ao sistema supervisório ou a uma plataforma de nuvem em tempo real. A estratégia mais comum consiste em formatar essas leituras em mensagens leves no padrão JSON e publicá-las via protocolo MQTT, uma tecnologia de mensagens leve voltada para dispositivos restritos. Dessa forma, o painel de controle da fábrica atualiza seus gráficos instantaneamente sem sobrecarregar a rede Wi-Fi com tráfego desnecessário, garantindo uma operação industrial fluida, segura e altamente transparente.

Considerações finais sobre robustez e manutenção em campo

Implementar a leitura de sensores industriais com ESP32 e Modbus TCP via Wi-Fi exige um equilíbrio delicado entre hardware acessível e boas práticas de desenvolvimento de software embarcado. Embora as redes sem fio ofereçam uma flexibilidade fantástica para evitar passagens de cabos complexas, o projetista nunca deve ignorar a volatilidade do ambiente fabril, onde motores pesados geram picos eletromagnéticos e paredes espessas bloqueiam sinais. Garantir rotinas sólidas de tratamento de erros de rede, reinicializações automáticas e validação rigorosa dos pacotes Modbus recebidos é o que diferencia um protótipo caseiro de uma solução pronta para o chão de fábrica.

À medida que a adoção de dispositivos IoT industriais cresce, soluções baseadas em microcontroladores acessíveis continuam provando seu valor ao democratizar o acesso aos dados de processos produtivos antes confinados em sistemas proprietários caros. Com um código bem estruturado, fontes de alimentação robustas e uma estratégia clara de integração com o supervisório, o ESP32 se consolida como uma ferramenta indispensável para engenheiros e integradores que buscam modernizar plantas industriais com agilidade, baixo custo e excelente confiabilidade operacional.