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

Placa ESP32 8 Relés 30A RB2553 — manual técnico completo

Em automação residencial de alta demanda, quadros de distribuição industrial, sistemas de irrigação e bancadas de testes de potência, controlar cargas elétricas pesadas — como motores trifásicos, bombas d’água, bancos de resistências, compressores e refletores — exige módulos de chaveamento muito robustos. Placas de relés convencionais de 10A muitas vezes sofrem desgaste prematuro de contatos ou colagem por arco elétrico, além de demandarem montagens complexas de fiação ou infraestrutura de rede externa.

O projeto de código aberto ROBOBUILDERS RB2553 resolve esse problema combinando a placa ESP-32_RELAY_30A_X8_V1.2 e seu microcontrolador ESP32-WROOM-32 a 8 relés industriais de alta potência de 30A com optoacopladores dedicados. Ao ligar a alimentação, o microcontrolador sobe um ponto de acesso sem fio autônomo com Portal Captivo. Você se conecta diretamente pelo celular ou computador — sem depender de roteadores ou internet — e ganha acesso a um painel gráfico em Dark Mode e a uma API REST para acionar saídas, ler entradas e calibrar pulsos em tempo real.

Neste artigo, vamos explorar a fundo o funcionamento do projeto disponível no repositório oficial da RoboBuilders no GitHub, detalhando o que cada recurso faz, como a arquitetura foi planejada e o passo a passo para compilar e usar na sua bancada.


1. Visão Geral do Projeto

O firmware do projeto ROBOBUILDERS RB2553 foi desenvolvido especificamente para extrair a máxima segurança e desempenho da placa ESP-32_RELAY_30A_X8_V1.2.

Principais Casos de Uso na Prática:

  1. Acionamento de Cargas de Alta Potência: Controle confiável de equipamentos de até 30A por canal (como chuveiros, aquecedores, motores elétricos, sistemas fotovoltaicos e estufas).
  2. Automação Autônoma sem Roteador: O modo SoftAP emite a rede sem fio ESP32-RELAY-30A-8CH. Basta aproximar-se da máquina ou quadro de comando, conectar e operar diretamente pelo navegador.
  3. Portal Captivo Plug-and-Play: Assim que o smartphone se conecta à rede da placa, a tela de acionamento abre instantaneamente em tela cheia, sem que o operador precise memorizar ou digitar endereços IP.
  4. Integração Industrial com API REST: Sistemas supervisórios (SCADA), scripts em Python, Node-RED ou automações via Home Assistant podem enviar requisições HTTP RESTful em JSON para ler estados ou comutar canais em milissegundos.

2. Especificações de Hardware

A placa foi projetada para suportar ambientes industriais severos, integrando circuitos de proteção, regulador de tensão step-down e barramentos reforçados:

Placa ESP-32_RELAY_30A_X8_V1.2 da RoboBuilders com 8 relés azuis de 30A e bornes verdes industriais
ItemEspecificação Detalhada
Modelo da PlacaESP-32_RELAY_30A_X8_V1.2 (ou ESP-32_RELAY_X8)
Código do Produto / SKURoboBuilders RB2553
Microcontrolador PrincipalESP32-WROOM-32 / ESP32-WROOM-32E (Dual Core 32-bit LX6 @ 240 MHz, 4MB Flash, 520KB SRAM)
Canais de Chaveamento8 Relés de Alta Potência SONGLE SLA-05VDC-SL-C (30A)
Capacidade de Carga por Canal30A em 250V AC ou 30A em 30V DC
Isolamento de CircuitoAcopladores ópticos dedicados por canal (isolamento galvânico total entre o ESP32 e as bobinas/cargas)
Conectores dos RelésBornes de parafuso reforçados com terminais COM (Comum), NO (Normal Aberto) e NC (Normal Fechado)
LED Indicador OnboardLED de status e diagnóstico acoplado à GPIO 5
Botão Físico OnboardBotão tátil multifunção / Bootloader acoplado à GPIO 0 (IO0)
Entrada de Alimentação PrincipalBorne de alimentação DC de ampla faixa: 7V a 30V DC (com regulador chaveado onboard)
Entrada SecundáriaTerminal conector de 5V DC
Porta USB OnboardConector USB dedicado exclusivamente para alimentação elétrica. A gravação de código exige conversor USB-Serial externo no header UART.
Header de ProgramaçãoHeader serial de pinos (TXD0, RXD0, IO0, EN/RST, GND, 3V3/5V)

⚠️ Atenção sobre a porta USB: Diferente dos kits comuns de prototipagem (como a ESP32 DevKit), a porta USB presente nesta placa não possui chip de conversão serial integrado. Ela é utilizada unicamente como porta de alimentação 5V DC. Para enviar novos firmwares, utiliza-se o header serial UART com um conversor USB-Serial externo.


3. Mapeamento de Pinos (Pinout Oficial)

A placa organiza as GPIOs do processador em três barramentos principais: controle dos 8 relés, periféricos onboard e pinos de expansão para sensores e atuadores adicionais.

3.1 Barramento dos 8 Canais de Relé (30A)

Todos os canais são acionados em nível lógico alto (Active HIGH). Quando a GPIO vai para HIGH (3.3V), o optoacoplador é polarizado, fechando o contato entre o terminal COM e o terminal NO do relé correspondente:

Canal do ReléGPIO (ESP32)DireçãoLógica de AcionamentoDescrição
Relé 1 (CH1)GPIO 32OUTPUTActive HIGHOptoacoplador / Bobina do Relé 1 (30A)
Relé 2 (CH2)GPIO 33OUTPUTActive HIGHOptoacoplador / Bobina do Relé 2 (30A)
Relé 3 (CH3)GPIO 25OUTPUTActive HIGHOptoacoplador / Bobina do Relé 3 (30A)
Relé 4 (CH4)GPIO 26OUTPUTActive HIGHOptoacoplador / Bobina do Relé 4 (30A)
Relé 5 (CH5)GPIO 27OUTPUTActive HIGHOptoacoplador / Bobina do Relé 5 (30A)
Relé 6 (CH6)GPIO 14OUTPUTActive HIGHOptoacoplador / Bobina do Relé 6 (30A)
Relé 7 (CH7)GPIO 12OUTPUTActive HIGHOptoacoplador / Bobina do Relé 7 (30A) (Strapping Pin MTDI)
Relé 8 (CH8)GPIO 13OUTPUTActive HIGHOptoacoplador / Bobina do Relé 8 (30A)

💡 Nota sobre a GPIO 12 (CH7): A GPIO 12 é um strapping pin do ESP32 responsável pela seleção de voltagem da memória Flash SPI durante o boot. O circuito da placa já inclui resistores de polarização adequados para assegurar a inicialização correta em 3.3V.

3.2 Recursos Onboard & Comunicação Serial

PeriféricoGPIO (ESP32)DireçãoNível / ModoDescrição Técnica
🔵 LED OnboardGPIO 5OUTPUTActive HIGHIndicador de atividade e sinalização de pulso
🟡 Botão BOOT (IO0)GPIO 0INPUT_PULLUPActive LOWBotão tátil físico e seleção de modo bootloader
🔌 UART0 TXGPIO 1UARTTransmissãoLinha de comunicação serial TX (115.200 bps)
🔌 UART0 RXGPIO 3UARTRecepçãoLinha de comunicação serial RX (115.200 bps)

3.3 Pinos de Expansão para Sensores e Atuadores Extras

A placa disponibiliza um barramento de expansão em fita de pinos que permite conectar sensores de temperatura (como DS18B20 ou DHT22), chaves fim de curso, receptores RF ou módulos adicionais:

Grupo de ExpansãoGPIOs MapeadasModo PadrãoObservações de Projeto
I/O Digital Configurável2, 4, 15, 16, 17, 18, 19, 21, 22, 23OUTPUTEntradas ou saídas de 3.3V configuráveis pela interface web
Input-Only (Sensores)34, 35INPUTEntradas analógicas/digitais ADC1 (não possuem circuitos de saída)

4. Recursos do Painel Web

A interface gráfica foi construída como uma Single Page Application (SPA) em modo escuro (Dark Mode), sendo compilada diretamente na memória Flash SPI do microcontrolador por meio da diretiva PROGMEM. Isso consome zero bytes de memória RAM dinâmica (DRAM), garantindo resposta veloz e estabilidade contínua:

Interface web de controle e monitoramento da placa ESP32 com 8 relés de 30A RB2553

4.1 Seção 1 — Controle dos 8 Relés de Alta Potência (30A)

  • Controle Individual: Cada um dos 8 canais possui seu próprio cartão com feedback visual instantâneo (verde/azul quando ativo, escuro quando desligado).
  • Modo Pulso Temporizado (1s): O botão Pulso 1s aciona o relé selecionado e agenda seu desligamento automático em 1000 ms sem travar a execução do código (usando temporizadores assíncronos não bloqueantes).
  • Ações Rápidas em Lote: Dois botões centrais permitem ligar (”⚡ Ligar Todos os Relés”) ou desligar (”⛔ Desligar Todos os Relés”) os 8 canais simultaneamente com um único clique.

4.2 Seção 2 — Recursos Onboard & Diagnóstico

  • Card do LED Onboard (GPIO 5): Permite alternar o estado da saída (Ligar/Desligar) ou disparar um pulso de teste (Piscar 500ms).
  • Card Interativo do Botão BOOT (GPIO 0): Mostra em tempo real se o botão físico IO0 da placa está solto (SOLTO - HIGH) ou pressionado (PRESSIONADO - LOW), servindo como ferramenta de validação sem multímetro.
  • Telemetria do Microcontrolador: Exibe no cabeçalho a frequência do clock (240 MHz), o tempo ininterrupto de atividade (Uptime) e a quantidade de memória RAM Heap livre.

4.3 Seção 3 — Barramento de Expansão (Outras GPIOs)

  • Controle das GPIOs Livres: Cada pino do barramento extra (2, 4, 15, 16, 17, 18, 19, 21, 22, 23) pode ser comutado individualmente.
  • Configuração Dinâmica via Modal (⚙️): Permite alterar o papel de qualquer pino entre Saída Digital (OUTPUT) e Entrada com Pull-Up (INPUT_PULLUP).
  • Proteção de Hardware: As entradas analógicas GPIO 34 e 35 são travadas automaticamente como apenas leitura (Input-Only), prevenindo configurações inadequadas.

5. Documentação da API REST JSON

A placa embarca um servidor HTTP que responde a requisições RESTful, retornando cabeçalhos Content-Type: application/json e Access-Control-Allow-Origin: * para permitir integração direta com qualquer aplicação externa:

5.1 GET /api/status

Retorna o tempo de atividade (uptime) em segundos e o estado atual de todas as portas e relés monitorados.

curl http://192.168.4.1/api/status

Exemplo de Resposta:

{
  "uptime": 142,
  "free_heap": 214580,
  "chip_model": "ESP32-D0WD-V3",
  "cpu_freq": 240,
  "relays": [
    { "ch": 1, "pin": 32, "val": 1 },
    { "ch": 2, "pin": 33, "val": 0 },
    { "ch": 3, "pin": 25, "val": 1 },
    { "ch": 4, "pin": 26, "val": 0 },
    { "ch": 5, "pin": 27, "val": 0 },
    { "ch": 6, "pin": 14, "val": 0 },
    { "ch": 7, "pin": 12, "val": 0 },
    { "ch": 8, "pin": 13, "val": 0 }
  ],
  "pins": [
    { "pin": 5, "mode": 0, "val": 1 },
    { "pin": 0, "mode": 1, "val": 1 },
    { "pin": 2, "mode": 0, "val": 0 }
  ]
}

5.2 GET /api/toggle?pin=<gpio>

Inverte imediatamente o estado lógico do pino digital indicado (comuta o relé correspondente):

# Alterna o estado do Relé 1 (GPIO 32)
curl "http://192.168.4.1/api/toggle?pin=32"

Resposta:

{ "pin": 32, "val": 1 }

5.3 GET /api/pulse?pin=<gpio>&ms=<duracao>

Dispara um pulso em nível alto (HIGH) na GPIO especificada pelo tempo informado em milissegundos (faixa permitida: 50 ms a 10.000 ms), retornando automaticamente para nível baixo:

# Aciona o Relé 3 (GPIO 25) durante 2,5 segundos
curl "http://192.168.4.1/api/pulse?pin=25&ms=2500"

# Dispara o LED onboard (GPIO 5) por 500 ms
curl "http://192.168.4.1/api/pulse?pin=5&ms=500"

Resposta:

{ "success": true, "pin": 25, "duration_ms": 2500 }

5.4 GET /api/relays?state=<0_ou_1>

Endpoint especializado de alto rendimento para acionar ou desligar simultaneamente todos os 8 canais de relé de 30A:

# Liga os 8 relés simultaneamente
curl "http://192.168.4.1/api/relays?state=1"

# Desliga os 8 relés simultaneamente
curl "http://192.168.4.1/api/relays?state=0"

Resposta:

{ "success": true, "relays_state": 1 }

5.5 GET /api/mode?pin=<gpio>&mode=<0_ou_1>

Modifica o modo de operação de uma GPIO do barramento de expansão:

  • mode=0: Configura como Saída Digital (OUTPUT).
  • mode=1: Configura como Entrada com Pull-Up (INPUT_PULLUP).
# Configura o pino GPIO 16 como entrada com pull-up
curl "http://192.168.4.1/api/mode?pin=16&mode=1"

5.6 GET /api/all?state=<0_ou_1>

Altera o estado de todos os pinos de saída do barramento de expansão.


6. Esquema de Ligação Elétrica de Cargas AC/DC

Cada um dos 8 canais de relé SONGLE SLA-05VDC-SL-C possui bornes de parafuso industriais com 3 terminais:

  • COM (Comum): Terminal central de alimentação do circuito que será chaveado.
  • NO (Normalmente Aberto): O circuito permanece aberto em repouso e fecha quando o relé é acionado. Este é o terminal padrão para a grande maioria das automações.
  • NC (Normalmente Fechado): O circuito fica fechado por padrão e abre quando o relé é ativado.
Diagrama esquemático de ligação elétrica profissional da placa ESP32 com 8 relés de 30A RB2553 para cargas AC e DC

Tabela de Conexões dos Terminais de Alimentação e Relés

A tabela abaixo descreve com precisão cada conexão ilustrada no diagrama elétrico:

Terminal de OrigemTerminal de Destino (Placa / Carga)Cor do FioTipo de SinalObservação Técnica
Fonte 12V DC (+)Borne VIN (7-30V) da Placa🔴 VermelhoAlimentação DCAlimentação lógica e bobinas dos relés
Fonte 12V DC (-)Borne GND da Placa⚫ PretoReferência ComumUnificar GNDs das fontes
Rede Elétrica (Fase - L)Borne COM do Relé 1 (CH1)🟤 MarromLinha AC (110V/220V)Fase da rede elétrica para chaveamento
Borne NO do Relé 1 (CH1)Terminal 1 da Carga AC (30A)🔴 VermelhoFase ChaveadaFecha contato quando o relé liga
Rede Elétrica (Neutro - N)Terminal 2 da Carga AC (30A)🔵 Azul ClaroRetorno NeutroLigação direta à carga
Fonte de Carga 24V DC (+)Borne COM do Relé 2 (CH2)🔴 VermelhoLinha DC de PotênciaPositivo da fonte de carga
Borne NO do Relé 2 (CH2)Terminal (+) da Carga DC (Bomba/Motor)🟠 LaranjaLinha DC ChaveadaFecha circuito no acionamento
Fonte de Carga 24V DC (-)Terminal (-) da Carga DC (Bomba/Motor)⚫ PretoRetorno NegativoLigação direta de retorno

Recomendações Críticas de Segurança para Cargas de 30A:

Perigo de choque e incêndio elétrico:

  1. Dimensionamento dos Condutores: Uma corrente de 30A exige cabos de cobre de bitola mínima de 4,0 mm² a 6,0 mm² conforme a norma NBR 5410. Fios finos irão superaquecer rapidamente sob carga plena.
  2. Cargas Indutivas (Motores e Solenoides): Motores elétricos geram picos de tensão reversa na abertura dos contatos. Recomendamos utilizar filtros Snubber RC (em corrente alternada) ou diodos de roda-livre (Flyback em corrente contínua) em paralelo com as cargas indutivas para prolongar a vida útil dos contatos do relé.
  3. Aperto dos Bornes: Certifique-se de apertar firmemente os parafusos dos bornes verdes. Conexões frouxas geram resistência de contato e aquecimento excessivo.

7. Guia de Conexão e Gravação UART

Como a porta USB onboard da placa ESP-32_RELAY_30A_X8_V1.2 é exclusivamente para fornecimento de energia, a gravação do firmware é realizada conectando um módulo conversor USB-Serial externo (como CP2102, FTDI FT232RL, CH340 ou PL2303) ao header de pinos serial da placa:

Diagrama de ligação serial UART para gravação de firmware na placa ESP32 RB2553 com conversor USB-Serial

Tabela de Conexões do Gravador USB-Serial

Pino do Conversor USB-SerialPino do Header UART (Placa RB2553)Cor do FioFunção do SinalRegra de Ligação
5V (ou 3.3V)5V (ou 3V3)🔴 VermelhoAlimentação LógicaAlimenta o microcontrolador durante a gravação
GNDGND⚫ PretoTerra de ReferênciaObrigatório interligar os GNDs
TXD (Transmissão)RXD0 (GPIO 3)🟡 AmareloRecepção de DadosLigação cruzada: TX do gravador no RX da placa
RXD (Recepção)TXD0 (GPIO 1)🟢 VerdeEnvio de TelemetriaLigação cruzada: RX do gravador no TX da placa

Procedimento para Colocar o ESP32 em Modo Bootloader (Download Boot):

  1. Conecte os pinos do conversor USB-Serial à placa e plugue o cabo USB no computador.
  2. Pressione e mantenha pressionado o botão físico BOOT / IO0 (GPIO 0) na placa.
  3. Pressione e solte o botão EN / RST (ou desconecte e reconecte brevemente o pino de alimentação mantendo o botão BOOT pressionado).
  4. Solte o botão BOOT.
  5. O ESP32 estará no modo de recepção de firmware (waiting for download), pronto para receber a compilação do PlatformIO ou da Arduino IDE.

8. Estrutura do Repositório

O projeto na pasta RB2553 foi organizado de forma modular, permitindo compilar tanto pelo PlatformIO quanto pela Arduino IDE:

📁 RB2553/

├── 📁 include/
│   └── web_page.h              --> Código da interface web em PROGMEM (HTML5/CSS3/JS)

├── 📁 src/
│   └── main.cpp                --> Firmware principal PlatformIO (SoftAP, REST API, Relés 30A)

├── 📁 ROBOBUILDERS_RB2553/     --> Pacote pronto para compilação na Arduino IDE
│   ├── ROBOBUILDERS_RB2553.ino --> Sketch principal Arduino
│   └── web_page.h              --> Interface web PROGMEM incluída no sketch

├── 📁 img/                     --> Capturas de tela e diagramas da documentação
│   └── TELA-INICIAL.png

├── platformio.ini              --> Arquivo de parâmetros 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 RB2553 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 && cd esp32-rele-30a
git init
git remote add origin https://github.com/luanvieiramendes/ROBOBUILDERS.git
git config core.sparseCheckout true
git sparse-checkout set "RB2553/Documentação da placa e projeto WEB"
git pull --depth=1 origin main
cd "RB2553/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 RB2553 via DownGit](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/luanvieiramendes/ROBOBUILDERS/tree/main/RB2553/Documentação da placa e projeto WEB)


10. Compilação e Gravação via PlatformIO CLI

O método mais rápido e automatizado utiliza o PlatformIO Core:

  1. Compilar o Firmware:

    pio run

    (O PlatformIO fará o download automático das dependências da biblioteca ArduinoJson e das ferramentas do ESP32).

  2. Gravar na Placa (com ESP32 em modo Bootloader):

    pio run -t upload
  3. Gravar Especificando a Porta Serial Manualmente:

    pio run -t upload --upload-port COM4
  4. Abrir o Monitor Serial (115.200 bps):

    pio device monitor
  5. Limpar Arquivos de Build:

    pio run -t clean

11. Compilação Alternativa via Arduino IDE

Caso utilize a Arduino IDE:

  1. Certifique-se de que o pacote de placas ESP32 está instalado em Ferramentas > Placa > Gerenciador de Placas.
  2. Abra o arquivo localizado na subpasta:
    ROBOBUILDERS_RB2553/ROBOBUILDERS_RB2553.ino
  3. Em Ferramentas > Placa > ESP32 Arduino, selecione ESP32 Dev Module.
  4. Em Ferramentas > Porta, selecione a porta COM do seu conversor USB-Serial.
  5. No Gerenciador de Bibliotecas (Ctrl + Shift + I), instale a biblioteca ArduinoJson (versão 6.x).
  6. Coloque a placa em modo bootloader (mantenha BOOT pressionado, dê um toque em RST).
  7. 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:

  1. Conecte-se à Rede Wi-Fi Gerada:
    • No celular, tablet ou computador, localize a rede sem fio:
      📶 ESP32-RELAY-30A-8CH
    • Esta rede é aberta (não possui senha).
  2. Abra a Interface Web:
    • Em dispositivos móveis, o Portal Captivo será acionado automaticamente em tela cheia.
    • Caso prefira abrir manualmente no navegador (Chrome, Edge, Safari, Firefox), acesse:
      👉 http://192.168.4.1
  3. Teste os Acionamentos:
    • Clique nos botões dos relés para ouvir o estalo mecânico dos contatos dos relés de 30A e acompanhar a sinalização visual.
    • Utilize a rota /api/status ou scripts externos para integrar o módulo ao seu sistema de automação.

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 8 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.