Painel Web de Controle para Placa ESP32 com 1 Relé de 30A

Em sistemas de automação predial, quadros elétricos de comandos, acionamento de motobombas, compressores, resistências de aquecimento e equipamentos industriais, controlar cargas pesadas com segurança exige dispositivos de comutação que suportem correntes de regime severo. Módulos de relé comuns de 10A frequentemente apresentam fadiga prematura, aquecimento perigoso nas trilhas e colagem dos contatos sob altas correntes de partida indutiva.
O projeto de código aberto ROBOBUILDERS RB2556 foi concebido sob medida para suprir essa necessidade unindo o poder do microcontrolador ESP32-WROOM-32E a 1 relé de alta potência de 30A na placa controladora industrial esp32_relay_30a_x1_v1.1. O firmware integrado opera de forma 100% autônoma: ao ligar a placa, ela cria sua própria rede Wi-Fi com Portal Captivo, disponibilizando uma interface web moderna em Dark Mode e uma API RESTful JSON para supervisão, calibração e teste de todas as portas GPIO diretamente pelo celular ou computador, sem necessidade de internet ou roteadores externos.
Neste tutorial técnico detalhado, exploraremos a arquitetura do projeto disponível no repositório oficial da RoboBuilders no GitHub, apresentando as especificações elétricas, o mapeamento exato dos pinos, diagramas esquemáticos de fiação de potência e gravação UART, e o passo a passo para compilar e instalar na sua bancada.
1. Visão Geral do Projeto
O ROBOBUILDERS RB2556 atua como firmware de fábrica (Board Diagnostic & Hardware Validation) e supervisório operacional para a placa esp32_relay_30a_x1_v1.1, equipada com o módulo de radiofrequência ESP32-WROOM-32E.
Principais Casos de Uso na Prática:
- Comutação Confiável de Carga Pesada: Controle direto de 1 circuito elétrico de até 30A (250V AC ou 30V DC), eliminando a necessidade de contatores auxiliares em aplicações como bombas d’água de alta vazão, aquecedores elétricos, sistemas de irrigação e ar-condicionado.
- Ponto de Acesso Local Autônomo: Em quadros de comando isolados, áreas rurais, casas de máquinas e galpões fabris sem cobertura de rede corporativa ou residencial, a placa emite sua própria rede Wi-Fi
ROBOBUILDERS-RB2556. - Portal Captivo Instantâneo: Ao conectar qualquer celular, tablet ou notebook à rede da placa, o dispositivo abre automaticamente a interface de controle no navegador, sem exigir digitação de endereços IP.
- Automação Externa via API REST: Permite que servidores locais, softwares SCADA, instâncias do Home Assistant, Node-RED ou scripts em Python e Shell comandem o relé e consultem telemetrias via requisições HTTP REST em formato JSON.
- Gabarito de Teste de GPIOs: Permite testar sensores e periféricos conectados ao barramento de expansão da placa com retorno de leitura e pulsos temporizados em tempo real.
2. Especificações de Hardware
A placa esp32_relay_30a_x1_v1.1 foi projetada para garantir robustez elétrica, imunidade a transitórios eletromagnéticos e estabilidade térmica contínua:
| Item | Especificação Técnica |
|---|---|
| Identificador do Produto | ROBOBUILDERS RB2556 |
| Modelo da Placa Base | esp32_relay_30a_x1_v1.1 |
| Microcontrolador Central | ESP32-WROOM-32E (Xtensa® Dual-Core 32-bit LX6 @ 240 MHz, 4MB Flash SPI, 520KB SRAM) |
| Relé de Potência Principal | 1 Canal SONGLE SLA-05VDC-SL-C (30A) com isolamento galvânico por optoacoplador |
| Capacidade Máxima do Relé | 30A em 250V AC ou 30A em 30V DC |
| Terminais de Potência | Borne verde a parafuso industrial reforçado: COM (Comum), NO (Normal Aberto) e NC (Normal Fechado) |
| LED Indicador Onboard | LED de status e sinalização acoplado à GPIO 5 |
| Botão Físico Onboard | Botão tátil multifunção / Bootloader acoplado à GPIO 0 (IO0 / S1) |
| Entrada de Alimentação DC | Borne a parafuso para 7V a 30V DC (com regulador de tensão chaveado step-down onboard) |
| Porta Micro-USB | Exclusiva para alimentação elétrica de 5V DC (sem chip conversor USB-Serial integrado) |
| Header de Gravação Serial | Barra de 6 pinos UART (5V/3V3, TXD, RXD, IO0, EN/RST, GND) |
[!WARNING] Aviso Importante sobre a Porta Micro-USB: A porta Micro-USB presente nesta placa é conectada apenas às linhas de alimentação elétrica de 5V. Ela não possui chip conversor USB-Serial integrado (como CH340 ou CP2102). Para compilar, gravar ou atualizar o firmware, é indispensável utilizar um módulo conversor USB-Serial externo conectado ao header UART da placa.
[!NOTE] Capacidade de Corrente Contínua: Embora o relé SONGLE suporte até 30A nominais, em circuitos contínuos de altíssima corrente (>20A sob 220V AC), assegure conexões elétricas firmes com cabos de bitola adequada (mínimo de 4 mm² a 6 mm²) e terminais ilhós crimpados para evitar sobreaquecimento nos bornes.
3. Mapeamento de Pinos (Pinout Oficial)
O firmware mapeia com precisão todos os barramentos de hardware da placa, separando as funções vitais onboard do barramento de expansão externa:
3.1 Pinos Vitais Onboard
| Periférico | GPIO (ESP32) | Direção | Lógica / Comportamento | Descrição Funcional |
|---|---|---|---|---|
| ⚡ Relé de Potência 30A | GPIO 16 | OUTPUT | Active HIGH (3.3V) | Dispara o optoacoplador e fecha o contato COM com NO |
| 🔵 LED Onboard | GPIO 5 | OUTPUT | Active HIGH (3.3V) | LED de sinalização de status e pulso de atividade |
| 🟡 Botão Físico (IO0 / S1) | GPIO 0 | INPUT_PULLUP | Active LOW (0V) | Botão de usuário e seleção do modo Bootloader UART |
| 🔌 UART0 Serial TX | GPIO 1 | UART | Transmissão | Linha de comunicação e gravação de firmware (115.200 bps) |
| 🔌 UART0 Serial RX | GPIO 3 | UART | Recepção | Linha de comunicação e gravação de firmware (115.200 bps) |
3.2 Barramento de Expansão para Sensores e Atuadores
A placa disponibiliza um barramento amplo de pinos livres para conexão de módulos periféricos (sensores DHT22, DS18B20, ultrassônicos, displays I2C ou relés secundários):
| Grupo de Pinos | GPIOs Disponíveis | Modo Padrão | Características Técnicas |
|---|---|---|---|
| I/O Digital Configurável | 2, 4, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 | OUTPUT | Entradas ou saídas digitais de 3.3V comutáveis dinamicamente pelo painel web |
| Input-Only (Sensores ADC) | 34, 35 | INPUT | Entradas analógicas e digitais puras do ADC1. Não possuem resistores pull-up ou drivers push-pull internos |
[!TIP] Proteção para Pinos Input-Only: As portas GPIO 34 e GPIO 35 no silício do ESP32 são conectadas apenas ao conversor ADC1. A interface web bloqueia essas portas no modo leitura (Input-Only), prevenindo que o usuário tente configurá-las como saídas digitais de acionamento.
4. Recursos e Funcionamento do Painel Web
O painel de controle roda de forma nativa e assíncrona na memória Flash do ESP32 através do arquivo include/web_page.h, construído em HTML5, CSS3 moderno com tema escuro (Dark Mode) e JavaScript Vanilla leve, sem dependências externas:
1. Seção de Teste Rápido Onboard:
- Relé de Potência 30A (
GPIO 16): Card de destaque com botão de alternância imediata (indicando estado Aberto ou Fechado com feedback visual em tempo real) e botão de Pulso de 1s para acionamento temporizado. - LED Onboard (
GPIO 5): Botão liga/desliga independente e função Piscar 500ms para verificação de resposta do processador. - Monitor do Botão Físico (
GPIO 0): Indicador visual que atualiza dinamicamente na tela o estado da tecla física (Pressionado ou Solto), ideal para validação mecânica do botão onboard.
2. Seção de Mapeamento e Controle Geral de GPIOs:
- Controle Individual: Cada pino da placa conta com botão de alternância lógica e botão de pulso configurável.
- Seleção de Modo: Ícone de engrenagem ⚙️ que permite alternar qualquer pino livre entre
OUTPUT(saída) eINPUT_PULLUP(entrada com resistor pull-up interno ativado). - Comandos Globais em Lote: Botões rápidos “Ligar Todas as Saídas” e “Desligar Todas as Saídas” para acelerar rotinas de teste de continuidade e bancada.
3. Conexão via Portal Captivo:
O firmware implementa um servidor DNS local (DNSServer) na porta 53 que intercepta todas as requisições de rede. Ao conectar seu celular na rede Wi-Fi, o sistema operacional abre a tela de login captivo exibindo o painel de imediato, sem necessidade de aplicativos adicionais ou digitação de IP.
5. Documentação da API REST
Para integração com automações locais, a placa disponibiliza uma API RESTful leve que responde com objetos JSON estruturados:
1. Consultar Telemetria Geral (GET /api/status)
Retorna o tempo de atividade (uptime) em segundos e o estado de todas as portas mapeadas:
GET /api/status HTTP/1.1
Host: 192.168.4.1
Resposta JSON:
{
"uptime": 128,
"pins": [
{ "pin": 5, "mode": 0, "val": 0 },
{ "pin": 16, "mode": 0, "val": 1 },
{ "pin": 0, "mode": 1, "val": 1 }
]
}
2. Alternar o Relé de 30A (GET /api/toggle)
Inverte o estado lógico da porta digital informada:
GET /api/toggle?pin=16 HTTP/1.1
Host: 192.168.4.1
Resposta JSON:
{ "pin": 16, "val": 1 }
3. Disparar Pulso Temporizado (GET /api/pulse)
Coloca o pino em nível alto (HIGH) durante o período solicitado em milissegundos, retornando automaticamente a LOW:
GET /api/pulse?pin=16&ms=2000 HTTP/1.1
Host: 192.168.4.1
Resposta JSON:
{ "success": true }
4. Configurar Modo da GPIO (GET /api/mode)
Altera o modo de funcionamento do pino (mode=0 para OUTPUT e mode=1 para INPUT_PULLUP):
GET /api/mode?pin=22&mode=1 HTTP/1.1
Host: 192.168.4.1
5. Controle em Lote (GET /api/all)
Comuta simultaneamente todas as saídas digitais para nível alto (state=1) ou baixo (state=0):
GET /api/all?state=0 HTTP/1.1
Host: 192.168.4.1
6. Esquema de Ligação Elétrica de Cargas AC/DC
Para acionar cargas de potência com máxima segurança elétrica, os contatos do relé operam como um interruptor em série na linha da Fase (L). O terminal Neutro (N) da rede nunca passa pelos contatos do relé e é conectado diretamente ao segundo polo da carga.
Tabela Oficial de Conexões Elétricas
| Bloco de Terminais | Borne na Placa | Sinal Elétrico | Destino da Conexão | Observação de Segurança |
|---|---|---|---|---|
| Alimentação DC | 7-30V DC | +12V / +24V DC | Polo positivo (+) da fonte de bancada | Alimentação do regulador e bobina |
| Alimentação DC | GND | GND (0V DC) | Polo negativo (-) da fonte de bancada | Referência comum de alimentação |
| Relé 30A (K1) | COM (Comum) | Fase (L) [Marrom] | Linha Fase da Rede Elétrica (127V / 220V) | Entrada de alimentação da carga |
| Relé 30A (K1) | NO (Normal Aberto) | Fase Chaveada [Vermelho] | Polo 1 do Motor Elétrico / Carga AC | Linha energizada quando o relé atraca |
| Relé 30A (K1) | NC (Normal Fechado) | Não conectado | Livre / Circuito de emergência | Permanece aberto em operação padrão |
| Rede Elétrica AC | Neutro (N) | Neutro [Azul Claro] | Polo 2 do Motor Elétrico / Carga AC | Retorno direto da rede, sem passar pelo relé |
[!CAUTION] Atenção com a Linha de Fase: O fio marrom (Fase L da rede elétrica) deve entrar exclusivamente no terminal
COMdo relé. O fio marrom nunca deve ser conectado diretamente ao motor elétrico, pois isso manteria a carga permanentemente energizada ou provocaria curto-circuito. O motor recebe exclusivamente a Fase Chaveada (fio vermelho vindo do borneNO) e o Neutro direto (fio azul da rede AC).
7. Guia de Conexão e Gravação UART (Passo a Passo)
Como a placa esp32_relay_30a_x1_v1.1 não possui conversor USB-Serial embutido, a gravação de novos códigos e atualizações de firmware é realizada através do header serial de 6 pinos utilizando um conversor externo (CP2102, FT232RL, CH340 ou PL2303).
Pinout de Ligação Serial UART
| Pino no Conversor USB-Serial | Pino no Header da Placa RB2556 | Função / Descrição |
|---|---|---|
GND | GND | Referência elétrica comum de terra |
TX / TXD | RX / RXD (GPIO 3) | Linha de transmissão do PC para a recepção do ESP32 |
RX / RXD | TX / TXD (GPIO 1) | Linha de recepção do PC vinda da transmissão do ESP32 |
5V ou 3V3 | 5V ou 3V3 | Alimentação lógica durante a gravação |
[!WARNING] Desconecte a Rede Elétrica AC antes de Gravar: Nunca conecte o conversor USB-Serial ao computador enquanto a placa estiver ligada à rede de alta tensão (110V/220V AC). Desconecte totalmente a alimentação da rede elétrica antes de efetuar o procedimento de gravação.
Procedimento para Entrar no Modo Bootloader
Se o seu conversor USB-Serial não possuir linhas DTR/RTS de auto-reset automático:
- Conecte o conversor USB-Serial nas portas correspondentes do header da placa.
- Pressione e mantenha pressionado o botão BOOT (GPIO 0) da placa.
- Conecte o cabo USB ao computador (ou dê um toque no botão EN / Reset mantendo o BOOT pressionado).
- Solte o botão BOOT após 2 segundos. O ESP32 entrará no modo ROM Bootloader aguardando o upload do firmware.
8. Estrutura do Firmware e Como Compilar
O projeto possui estrutura organizada pronta para compilação profissional tanto no PlatformIO Core (CLI / VS Code) quanto na Arduino IDE:
RB2556/
├── include/
│ └── web_page.h <- Interface Web completa em PROGMEM (HTML5, CSS3, JS Vanilla)
├── src/
│ └── main.cpp <- Firmware principal PlatformIO (SoftAP, DNS, REST API, GPIOs)
├── ROBOBUILDERS_RB2556/ <- Sketch pronto para Arduino IDE
│ ├── ROBOBUILDERS_RB2556.ino
│ └── web_page.h
├── platformio.ini <- Configurações de compilação, placa e bibliotecas
└── README.md <- Documentação técnica oficial do hardware e firmware
Opção 1: Compilar via PlatformIO CLI (Recomendado)
O PlatformIO gerencia automaticamente a cadeia de compilação Xtensa e as bibliotecas necessárias. Abra o terminal na pasta raiz do projeto:
# 1. Compilar o firmware
pio run
# 2. Gravar o firmware na placa
pio run -t upload
# 3. Especificar a porta COM manualmente (ex: COM4 no Windows ou /dev/ttyUSB0 no Linux)
pio run -t upload --upload-port COM4
# 4. Abrir o monitor serial
pio device monitor -b 115200
Opção 2: Compilar via Arduino IDE
- Abra o arquivo
ROBOBUILDERS_RB2556/ROBOBUILDERS_RB2556.inona Arduino IDE. - Em Ferramentas > Placa > ESP32 Arduino, selecione ESP32 Dev Module.
- Selecione a Porta COM atribuída ao seu conversor USB-Serial.
- No Gerenciador de Bibliotecas, instale a biblioteca ArduinoJson (versão 6.x).
- Clique em Carregar (Upload).
9. Como Acessar o Painel na Prática
Após a gravação, a placa reiniciará e começará a emitir o ponto de acesso sem fio imediatamente:
- Energize a placa: Conecte uma fonte de 7V a 30V DC no borne de alimentação (ou cabo Micro-USB de 5V DC).
- Conecte-se à rede Wi-Fi:
- Nome da Rede (SSID):
ROBOBUILDERS-RB2556 - Senha: (Rede aberta, sem senha)
- Nome da Rede (SSID):
- Abertura Automática: O portal captivo abrirá o painel de controle automaticamente no seu dispositivo.
- Acesso Manual: Caso o navegador não abra sozinho, digite na barra de endereços:
- URL:
http://192.168.4.1
- URL:
Com a interface carregada, você pode acionar o Relé de 30A no GPIO 16, testar o LED no GPIO 5, verificar o estado do Botão Físico no GPIO 0 e comandar todo o barramento digital com resposta instantânea e feedback visual em tempo real.
Solução de problemas
Olá! Sou o assistente técnico da RoboBuilders. Descreva seu problema com o Painel Web de Controle para Placa ESP32 com 1 Relé de 30A e eu ajudarei a encontrar a solução.
O assistente usa IA e pode errar. Confirme informações críticas no datasheet oficial do fabricante.