Marcio Cunha

Como automatizar medidores de energia com ESP32 e Modbus RTU

Aprenda a integrar hardware IoT usando o protocolo industrial Modbus RTU e microcontroladores ESP32 para realizar o monitoramento energético em tempo real de forma eficiente.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • A comunicação Modbus RTU utiliza par trançado RS-485 para interligar múltiplos dispositivos em ambientes industriais ruidosos.
  • O ESP32 atua como cliente ou mestre, requisitando registros de tensão, corrente e consumo diretamente dos medidores.
  • Tradução e tratamento de bytes crus em variáveis flutuantes exigem atenção ao formato de registradores de 32 bits.
  • A integração de sistemas de hardware requer cuidado redobrado com isolamento galvânico para evitar queima de portas seriais.
  • Dados coletados em tempo real podem ser enviados via Wi-Fi para plataformas locais ou servidores em nuvem.

Por que monitorar energia com ESP32 e protocolo industrial

O monitoramento energético em tempo real deixou de ser exclusividade de grandes indústrias e passou a interessar residências avançadas, comércios e pequenas fábricas. Para viabilizar essa leitura sem gastar milhares de reais em CLPs proprietários, utilizamos placas de baixo custo como o ESP32, um microcontrolador robusto com Wi-Fi e Bluetooth integrados. Na prática, isso significa que podemos recolher dados precisos de consumo diretamente de medidores comerciais e enviá-los para um sistema central na rede local.

Para conversar com medidores de energia modernos, adotamos o protocolo Modbus RTU, uma linguagem industrial padrão baseada em requisições de mestre para escravo. Os medidores funcionam como escravos aguardando perguntas, enquanto o ESP32 assume o papel de mestre, solicitando periodicamente valores como tensão, corrente e potência ativa. Quando estruturamos essa coleta, podemos inclusive correlacionar gargalos de hardware e consumo elétrico de forma semelhante ao que fazemos ao analisar a saúde de sistemas ou ao monitorar logs em clusters Kubernetes para otimizar custos operacionais.

Entendendo a rede física RS-485 e o isolamento necessário

O protocolo Modbus RTU roda fisicamente sobre uma linha serial RS-485, que utiliza cabos de par trançado e diferenciação de tensão para resistir a interferências eletromagnéticas. Como motores, inversores de frequência e geradores geram muito ruído elétrico em instalações reais, ligar a serial do microcontrolador diretamente ao medidor é um convite ao desastre. Precisamos utilizar conversores dedicados, como o chip MAX485, que traduz os sinais TTL do ESP32 para os níveis diferenciais da linha industrial.

Além da conversão de sinal, o isolamento galvânico através de acopladores ópticos é indispensável para proteger o circuito contra surtos de tensão. Na prática, o isolamento garante que uma descarga atmosférica ou um pico na rede elétrica danifique apenas o módulo secundário, preservando o ESP32 e a fonte de alimentação principal. Essa preocupação com a confiabilidade física do circuito é o equivalente em hardware aos cuidados que tomamos em software para garantir entregas consistentes de mensagens sem perda de pacotes críticos.

Arquitetura do firmware e comunicação Modbus no ESP32

Desenvolver o código para o ESP32 exige o uso de bibliotecas especializadas que implementem a pilha Modbus RTU sobre uma das portas seriais de hardware (UART) do microcontrolador. Como a linguagem C++ e o framework Arduino facilitam o acesso aos pinos físicos, podemos configurar facilmente os pinos de transmissão, recepção e controle de fluxo do barramento RS-485. Cada medidor possui um endereço único na rede e armazena suas grandezas elétricas em tabelas de registradores que mapeiam endereços numéricos específicos.

As leituras ocorrem enviando frames de bytes que contêm o endereço do escravo, a função Modbus desejada, o endereço inicial do registrador e a quantidade de dados solicitados. O medidor responde devolvendo os valores solicitados juntamente com um código de verificação de erros conhecido como CRC16. Se ocorrer qualquer falha de transmissão devido a ruídos, o código descarta o pacote corrompido e tenta a leitura novamente no próximo ciclo, mantendo o sistema resiliente contra falhas intermitentes de comunicação no campo.

Passo a passo para leitura dos registradores de potência

Para colocar a mão na massa e ler o primeiro registrador de um medidor compatível, precisamos inicializar a porta serial e requisitar o bloco de memória correto. Abaixo, apresentamos um exemplo funcional em C++ utilizando a IDE do Arduino para ler a potência ativa de um medidor industrial padrão conectado ao ESP32.

#include <ModbusMaster.h> // Biblioteca para gerenciar o protocolo Modbus mestre

ModbusMaster node;

void setup() {
Serial2.begin(9600, SERIAL_8N1, 16, 17); // Configura UART2 nos pinos RX=16, TX=17
node.begin(1, Serial2); // Define o endereço Modbus do medidor como 1
Serial.begin(115200);
}

void loop() {
uint8_t result;
uint16_t potenciaBaixa, potenciaAlta;

result = node.readHoldingRegisters(0x000C, 2); // Lê 2 registradores a partir do endereço 0x000C

if (result == node.ku8MBSuccess) {
potenciaBaixa = node.getResponseBuffer(0);
potenciaAlta = node.getResponseBuffer(1);
Serial.println("Leitura de potência realizada com sucesso!");
} else {
Serial.println("Erro de comunicação com o medidor Modbus.");
}
delay(5000);
}

Esse trecho de código demonstra a estrutura básica de requisição e tratamento de resposta do medidor. Note que variáveis numéricas grandes, como valores de energia acumulada, costumam ocupar dois registradores consecutivos de 16 bits, exigindo a recombinação correta dos bytes para formar um número inteiro de 32 bits ou um ponto flutuante válido.

Considerações Finais

A automação de medidores de energia utilizando o ESP32 e o protocolo Modbus RTU representa uma solução extremamente econômica e robusta para quem precisa extrair dados de hardware industrial sem investir em infraestruturas fechadas. Ao dominar os conceitos de barramento serial, tratamento de registradores e proteção física com isolamento, engenheiros e entusiastas conseguem construir sistemas de telemetria altamente confiáveis. Com os dados extraídos em tempo real, abre-se um leque imenso de possibilidades para otimização de consumo e identificação precoce de anomalias elétricas.