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

No desenvolvimento de quadros de comando elétrico, automação predial e sistemas autônomos de potência, acionar cargas com elevado consumo de corrente — como motobombas, compressores de ar condicionado, bancadas de aquecimento térmico e sistemas de iluminação de grande porte — exige soluções de comutação muito mais robustas do que os tradicionais módulos de relé de 10A. Placas genéricas sofrem com faiscamento interno nos contatos, sobreaquecimento de trilhas e queima frequente sob regimes de trabalho contínuo.
O projeto de código aberto ROBOBUILDERS RB2554 foi criado exatamente para suprir essa necessidade industrial, integrando a placa controladora ESP-32_RELAY_30A_X4_V1.1 (equipada com o microcontrolador ESP32-WROOM-32E) a 4 relés industriais de 30A com isolamento galvânico por optoacopladores independentes. O firmware nativo emite um ponto de acesso sem fio próprio com Portal Captivo, permitindo que técnicos e operadores acessem uma interface gráfica completa em Dark Mode e uma API RESTful diretamente pelo celular ou computador, sem necessidade de roteador Wi-Fi ou conexão à internet.
Neste tutorial técnico, vamos dissecar o funcionamento completo do projeto disponível no repositório oficial da RoboBuilders no GitHub, apresentando as especificações elétricas, o mapeamento exato das GPIOs, os diagramas esquemáticos oficiais de instalação e gravação serial, e o passo a passo prático para compilar e testar a placa em bancada.
1. Visão Geral do Projeto
O firmware do ROBOBUILDERS RB2554 atua como uma solução completa de validação de hardware (Board Diagnostic) e controle operacional para a placa ESP-32_RELAY_30A_X4_V1.1.
Principais Casos de Uso na Prática:
- Comutação Confiável de Cargas Pesadas: Controle seguro de até 4 circuitos independentes de 30A (250V AC ou 30V DC), eliminando a necessidade de contatores intermediários para cargas médias/altas.
- Ponto de Acesso Local Autônomo: Em locais remotos, como galpões, estufas agrícolas, bombas de poço ou casas de máquinas, a placa emite a rede Wi-Fi
ROBOBUILDERS-RB2554. Basta conectar para operar. - Portal Captivo Instantâneo: Ao conectar um smartphone à rede da placa, o navegador abre automaticamente a tela do painel em tela cheia, dispensando digitação de endereços IP.
- Integração Externa via API REST: Sistemas de automação (como Home Assistant, Node-RED, SCADA ou scripts Python) podem comandar e auditar o estado dos relés e das entradas/saídas digitais através de requisições HTTP RESTful em JSON.
2. Especificações de Hardware
A placa ESP-32_RELAY_30A_X4_V1.1 foi projetada para suportar ambientes com elevado ruído eletromagnético e alta demanda de corrente:
| Item | Especificação Detalhada |
|---|---|
| Identificador do Produto | RoboBuilders RB2554 |
| Modelo da Placa Base | ESP-32_RELAY_30A_X4_V1.1 (ou ESP-32_RELAY_30A_X4) |
| Microcontrolador Central | ESP32-WROOM-32E (Xtensa® Dual-Core 32-bit LX6 @ 240 MHz, 4MB Flash SPI, 520KB SRAM) |
| Relés de Potência | 4 Relés de Alta Potência SONGLE SLA-05VDC-SL-C (30A) |
| Capacidade Máxima por Canal | 30A em 250V AC ou 30A em 30V DC |
| Isolamento de Circuito | Isolamento óptico dedicado por optoacopladores em cada um dos 4 canais de relé |
| Terminais de Conexão | Bornes de parafuso industriais reforçados: COM (Comum), NO (Normal Aberto) e NC (Normal Fechado) |
| LED Indicador Onboard | LED de diagnóstico e atividade conectado à GPIO 5 |
| Botão Físico Onboard | Botão tátil multifunção / Bootloader conectado à GPIO 0 (IO0) |
| Entrada de Alimentação DC | Borne de alimentação DC de ampla faixa: 7V a 30V DC (ou borne secundário de 5V DC) |
| Entrada de Alimentação AC | Borne de alimentação AC integrado para rede elétrica: 90V a 250V AC |
| Header de Programação UART | Header serial de pinos expostos: TXD0 (GPIO 1), RXD0 (GPIO 3), IO0 (GPIO 0), EN/RST, GND, 5V/3V3 |
⚠️ Atenção sobre a corrente das bobinas de 30A: Cada relé de 30A consome cerca de 185 mA a 5V quando acionado. Com os 4 relés energizados simultaneamente, o consumo atinge aproximadamente 750 mA apenas para os relés, somado aos picos de transmissão Wi-Fi do ESP32. Portanto, ao alimentar via borne DC, utilize sempre uma fonte com capacidade mínima de 5V / 2A (ou 12V / 1,5A) para evitar reinicializações por queda de tensão (brownout reset).
3. Mapeamento de Pinos (Pinout Oficial)
A placa mapeia os 4 canais de relé, os periféricos onboard e o barramento de expansão de acordo com a tabela abaixo:
3.1 Barramento dos 4 Canais de Relé (30A)
O acionamento dos relés ocorre em nível lógico alto (Active HIGH). Ao aplicar nível HIGH (3.3V) na GPIO correspondente, o optoacoplador conduz e fecha o contato entre o terminal COM e o terminal NO:
| Canal do Relé | GPIO (ESP32) | Direção | Lógica de Acionamento | Descrição Funcional |
|---|---|---|---|---|
| ⚡ Relé 1 (CH1) | GPIO 12 | OUTPUT | Active HIGH | Optoacoplador e bobina do Relé 1 (30A) |
| ⚡ Relé 2 (CH2) | GPIO 13 | OUTPUT | Active HIGH | Optoacoplador e bobina do Relé 2 (30A) |
| ⚡ Relé 3 (CH3) | GPIO 14 | OUTPUT | Active HIGH | Optoacoplador e bobina do Relé 3 (30A) |
| ⚡ Relé 4 (CH4) | GPIO 15 | OUTPUT | Active HIGH | Optoacoplador e bobina do Relé 4 (30A) |
3.2 Recursos Onboard & Comunicação Serial
| Periférico | GPIO (ESP32) | Direção | Nível / Modo | Descrição Técnica |
|---|---|---|---|---|
| 🔵 LED Onboard | GPIO 5 | OUTPUT | Active HIGH | Indicador de status, heartbeat e pisca-pisca de diagnóstico |
| 🟡 Botão BOOT (IO0) | GPIO 0 | INPUT_PULLUP | Active LOW | Botão tátil físico e seleção de modo bootloader |
| 🔌 UART0 TX | GPIO 1 | UART | Transmissão | Linha de transmissão serial TX para gravação (115.200 bps) |
| 🔌 UART0 RX | GPIO 3 | UART | Recepção | Linha de recepção serial RX para gravação (115.200 bps) |
3.3 Barramento de Expansão para Sensores e Atuadores Extras
| Grupo de Pinos | GPIOs Disponíveis | Modo Padrão | Observações de Projeto |
|---|---|---|---|
| I/O Digital Configurável | 2, 4, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 | OUTPUT | Entradas ou saídas de 3.3V comutáveis pelo painel web |
| Input-Only (Sensores ADC) | 34, 35 | INPUT | Pinos de entrada pura, ideais para sensores analógicos e digitais |
4. Recursos do Painel Web
A interface do ROBOBUILDERS RB2554 foi projetada como uma Single Page Application (SPA) responsiva em modo escuro (Dark Mode). Ela é armazenada inteiramente na memória Flash SPI através da diretiva PROGMEM, sem ocupar memória RAM dinâmica do microcontrolador:
4.1 Seção 1 — Teste dos 4 Relés de Potência & Recursos Onboard
- Acionamento dos 4 Canais (GPIOs 12, 13, 14, 15): Cada relé possui um card dedicado com status visual em tempo real (destaque colorido com indicação Fechado / Aberto).
- Pulso Temporizado de 1s: Botão “Pulso 1s” aciona o relé selecionado e programa seu desarme automático após 1000 milissegundos de forma assíncrona, sem interromper o loop principal.
- Ações Rápidas em Lote: Dois botões de alta performance permitem ligar simultaneamente (”⚡ Ligar Todos os Relés”) ou desativar todos (”⛔ Desligar Todos os Relés”) com um único comando.
- Controle do LED Onboard (GPIO 5): Permite alternar manualmente (Ligar/Desligar) ou acionar o teste rápido (Piscar 500ms).
- Monitoramento do Botão BOOT (GPIO 0): Cartão de diagnóstico em tempo real que exibe se a tecla física
IO0está pressionada (LOW) ou solta (HIGH).
4.2 Seção 2 — Mapeamento e Controle de Todas as GPIOs
- Comutação Individual de Saídas: Cada pino do barramento secundário pode ser acionado ou desligado independentemente.
- Ações Globais: Botões rápidos para “Ligar Todas as Saídas” e “Desligar Todas”.”
- Modal de Configuração Dinâmica (⚙️): Permite alterar a função de cada pino entre Saída Digital (OUTPUT) e Entrada com Resistor de Elevação (INPUT_PULLUP).
- Proteção de Hardware: As entradas analógicas
GPIO 34eGPIO 35são travadas pelo sistema como apenas leitura (Input-Only).
5. Documentação da API REST JSON
A placa possui um servidor web HTTP embutido que disponibiliza endpoints no padrão RESTful com retorno em JSON:
5.1 GET /api/status
Retorna o tempo de atividade (uptime) em segundos e o estado lógico de todos os pinos monitorados:
curl http://192.168.4.1/api/status
Exemplo de Resposta:
{
"uptime": 42,
"pins": [
{ "pin": 5, "mode": 0, "val": 0 },
{ "pin": 12, "mode": 0, "val": 1 },
{ "pin": 13, "mode": 0, "val": 0 },
{ "pin": 14, "mode": 0, "val": 0 },
{ "pin": 15, "mode": 0, "val": 0 },
{ "pin": 0, "mode": 1, "val": 1 }
]
}
5.2 GET /api/toggle?pin=<gpio>
Inverte imediatamente o estado lógico da GPIO especificada:
# Alterna o estado do Relé 1 (GPIO 12)
curl "http://192.168.4.1/api/toggle?pin=12"
Resposta:
{ "pin": 12, "val": 1 }
5.3 GET /api/pulse?pin=<gpio>&ms=<duracao>
Gera um pulso em nível alto (HIGH) pelo tempo solicitado em milissegundos:
# Pisca o LED onboard por 500 ms
curl "http://192.168.4.1/api/pulse?pin=5&ms=500"
# Aciona o Relé 2 (GPIO 13) durante 2000 ms (2 segundos)
curl "http://192.168.4.1/api/pulse?pin=13&ms=2000"
Resposta:
{ "success": true }
5.4 GET /api/relays?state=<0_ou_1>
Aciona ou desliga simultaneamente todos os 4 canais de relé de 30A:
# Liga os 4 relés simultaneamente
curl "http://192.168.4.1/api/relays?state=1"
# Desliga os 4 relés simultaneamente
curl "http://192.168.4.1/api/relays?state=0"
Resposta:
{ "success": true }
5.5 GET /api/mode?pin=<gpio>&mode=<0_ou_1>
Configura o pino como Saída Digital (mode=0) ou Entrada com Pull-Up (mode=1):
# Configura a GPIO 22 como entrada com pull-up
curl "http://192.168.4.1/api/mode?pin=22&mode=1"
5.6 GET /api/all?state=<0_ou_1>
Altera o estado de todas as GPIOs configuradas como saída digital.
6. Esquema de Ligação Elétrica de Cargas AC/DC
Cada relé SONGLE SLA-05VDC-SL-C possui um borne de parafuso dedicado com 3 posições:
- COM (Comum): Entrada da linha de alimentação (fase AC ou positivo DC) que será chaveada.
- NO (Normalmente Aberto): O circuito fica aberto em repouso e fecha quando o relé é acionado. É o terminal recomendado para 99% das aplicações de automação.
- NC (Normalmente Fechado): O circuito permanece fechado em repouso e abre quando o relé é acionado.
Tabela de Conexões dos Terminais de Alimentação e Relés
A tabela abaixo detalha cada condutor e ponto de interligação do diagrama:
| Terminal de Origem | Terminal de Destino (Placa / Carga) | Cor do Fio | Tipo de Sinal | Observação Técnica |
|---|---|---|---|---|
| Fonte 12V DC (+) | Borne VIN (7-30V) da Placa | 🔴 Vermelho | Alimentação DC | Entrada de alimentação lógica e bobinas |
| Fonte 12V DC (-) | Borne GND da Placa | ⚫ Preto | Referência Comum | Interligar o terra comum |
| Rede Elétrica (Fase - L) | Borne COM do Relé 1 (CH1 - GPIO 12) | 🟤 Marrom | Linha AC (110V/220V) | Linha de fase da rede elétrica |
| Borne NO do Relé 1 (CH1) | Terminal 1 da Carga AC (30A) | 🔴 Vermelho | Fase Chaveada | Fecha contato no acionamento do relé |
| Rede Elétrica (Neutro - N) | Terminal 2 da Carga AC (30A) | 🔵 Azul Claro | Retorno Neutro | Retorno neutro direto à carga |
| Fonte de Carga 24V DC (+) | Borne COM do Relé 2 (CH2 - GPIO 13) | 🔴 Vermelho | Positivo DC Carga | Linha de alimentação da carga contínua |
| Borne NO do Relé 2 (CH2) | Terminal (+) do Motor / Bomba DC | 🟠 Laranja | Linha DC Chaveada | Fecha circuito no acionamento |
| Fonte de Carga 24V DC (-) | Terminal (-) do Motor / Bomba DC | ⚫ Preto | Retorno Negativo | Retorno negativo direto à fonte de carga |
Recomendações Críticas de Segurança para Cargas de 30A:
⛔ Perigo de choque elétrico e sobreaquecimento:
- Bitola Adequada dos Cabos: Para conduzir até 30A de corrente com segurança sem superaquecimento, utilize cabos de cobre de bitola mínima de 4,0 mm² (para distâncias curtas) ou 6,0 mm² conforme a norma brasileira NBR 5410.
- Proteção Contra Picos Indutivos: Motores, bombas e bobinas geram arcos de abertura nos contatos do relé. Instale filtros Snubber RC em cargas de corrente alternada ou diodos de roda-livre (Flyback) em cargas de corrente contínua.
- Torque nos Parafusos dos Bornes: Certifique-se de reapertar firmemente os parafusos dos bornes verdes industriais após a fiação. Conexões frouxas causam resistência de contato e aquecimento localizado.
7. Guia de Conexão e Gravação UART
A placa ESP-32_RELAY_30A_X4_V1.1 não possui conversor USB-Serial integrado. Por esse motivo, a gravação de firmware requer um módulo conversor USB-Serial externo (como CP2102, FTDI FT232RL, CH340 ou PL2303) conectado ao header de pinos UART:
⚠️ Aviso Crítico de Segurança: NUNCA conecte o conversor USB-Serial ao computador enquanto a placa estiver ligada à rede elétrica de alta tensão AC (110V/220V). Desconecte completamente a rede elétrica antes de efetuar qualquer conexão serial de bancada.
Tabela de Conexões do Gravador USB-Serial
| Pino do Conversor USB-Serial | Pino do Header UART (Placa RB2554) | Cor do Fio | Função do Sinal | Regra de Ligação |
|---|---|---|---|---|
| 5V (ou 3.3V) | 5V (ou 3V3) | 🔴 Vermelho | Alimentação Lógica | Fornece energia ao ESP32 durante a gravação |
| GND | GND | ⚫ Preto | Terra de Referência | Obrigatório interligar os terras |
| TXD (Transmissão) | RXD0 (GPIO 3) | 🟡 Amarelo | Recepção de Dados | Ligação cruzada: TX do módulo no RX da placa |
| RXD (Recepção) | TXD0 (GPIO 1) | 🟢 Verde | Envio de Telemetria | Ligação cruzada: RX do módulo no TX da placa |
Procedimento para Colocar o ESP32 em Modo Bootloader (Download Boot):
- Interligue os pinos do conversor USB-Serial e da placa conforme a tabela acima e conecte o cabo USB ao computador.
- Pressione e mantenha pressionado o botão físico BOOT / IO0 (GPIO 0) da placa.
- Dê um toque rápido no botão EN / RST (ou desconecte e reconecte o cabo USB mantendo o botão BOOT pressionado).
- Solte o botão BOOT.
- O ESP32 entrará imediatamente no modo bootloader (waiting for download), aguardando a transferência do firmware via PlatformIO ou Arduino IDE.
8. Estrutura do Repositório
O projeto na pasta RB2554 do repositório da RoboBuilders possui uma arquitetura limpa e modular:
📁 RB2554/
│
├── 📁 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_RB2554/ --> Sketch pronto para compilação na Arduino IDE
│ ├── ROBOBUILDERS_RB2554.ino --> Arquivo principal Arduino
│ └── web_page.h --> Interface web embutida no sketch
│
├── 📁 img/ --> Capturas de tela da documentação
│ └── TELA-INICIAL.png
│
├── platformio.ini --> Arquivo de parâmetros de build do PlatformIO
└── README.md --> Documentação técnica oficial do hardware e pinout
9. Como Baixar o Projeto do GitHub
Você pode obter exclusivamente a pasta do projeto RB2554 sem clonar todo o repositório da RoboBuilders:
Opção A — Clonar apenas a pasta via Git Sparse-Checkout (Recomendado)
Abra o terminal do seu computador e execute:
mkdir esp32-rele-30a-4ch && cd esp32-rele-30a-4ch
git init
git remote add origin https://github.com/luanvieiramendes/ROBOBUILDERS.git
git config core.sparseCheckout true
git sparse-checkout set "RB2554/Documentação da placa e projeto WEB"
git pull --depth=1 origin main
cd "RB2554/Documentação da placa e projeto WEB"
Opção B — Download Direto em Arquivo ZIP
Se preferir baixar diretamente pelo navegador sem comandos Git: 👉 [Baixar pasta do projeto RB2554 via DownGit](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/luanvieiramendes/ROBOBUILDERS/tree/main/RB2554/Documentação da placa e projeto WEB)
10. Compilação e Gravação via PlatformIO CLI
O gerenciamento de compilação e upload é feito diretamente pelo terminal com o PlatformIO Core:
-
Compilar o Firmware:
pio run(As dependências da biblioteca ArduinoJson e do framework ESP32 serão baixadas automaticamente).
-
Gravar na Placa (com ESP32 em modo Bootloader):
pio run -t upload -
Gravar Especificando a Porta Serial Manualmente:
pio run -t upload --upload-port COM3 -
Abrir o Monitor Serial (115.200 bps):
pio device monitor -
Limpar Arquivos de Build:
pio run -t clean
11. Compilação Alternativa via Arduino IDE
Caso utilize a Arduino IDE:
- Certifique-se de que o pacote de placas ESP32 está instalado em Ferramentas > Placa > Gerenciador de Placas.
- Abra o arquivo localizado na subpasta:
ROBOBUILDERS_RB2554/ROBOBUILDERS_RB2554.ino - Em Ferramentas > Placa > ESP32 Arduino, selecione ESP32 Dev Module.
- Em Ferramentas > Porta, selecione a porta COM do seu conversor USB-Serial.
- No Gerenciador de Bibliotecas (
Ctrl + Shift + I), instale a biblioteca ArduinoJson (versão 6.x). - Coloque a placa em modo bootloader (mantenha
BOOTpressionado, dê um toque emRST). - Clique em Carregar (Upload).
12. Acesso ao Painel Web e Teste em Bancada
Com a gravação finalizada, pressione o botão RST da placa para inicializar o firmware em modo de execução normal:
- Conecte-se à Rede Wi-Fi Gerada:
- No celular, tablet ou computador, localize a rede sem fio:
📶ROBOBUILDERS-RB2554 - Esta rede é aberta (não requer senha).
- No celular, tablet ou computador, localize a rede sem fio:
- Abra a Interface Web:
- Em smartphones e tablets, o Portal Captivo será iniciado automaticamente em tela cheia.
- Se preferir abrir no navegador convencional, acesse:
👉http://192.168.4.1
- Teste os Acionamentos:
- Clique nos botões dos 4 relés de potência para ouvir a comutação dos relés de 30A e conferir a sinalização visual.
- Utilize as chamadas da API REST para integrar o sistema a supervisórios e plataformas IoT.
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 4 Relés 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.