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

Placa ESP32 2 Relés 30A RB2555 — manual técnico completo

Em instalações de automação predial, quadros de distribuição, comandos de acionamento de motobombas, bancadas de aquecimento e equipamentos industriais compactos, o controle de cargas pesadas — com correntes contínuas elevadas que superam os limites dos módulos convencionais de 10A — exige soluções robustas de comutação. Módulos comuns de relé sofrem com desgaste acelerado, solda fria nas trilhas de cobre e colagem prematura dos contatos sob regime severo de partida indutiva.

O projeto de código aberto ROBOBUILDERS RB2555 foi desenvolvido especificamente para atender a essa demanda com máxima segurança e confiabilidade, integrando a placa controladora ESP-32_RELAY_30A_X2_V1.1 (equipada com o microcontrolador ESP32-WROOM-32 / ESP32-WROOM-32E) a 2 relés industriais de alta potência de 30A com isolamento galvânico por optoacopladores independentes. O firmware emite um ponto de acesso sem fio autônomo com Portal Captivo, permitindo que técnicos, integradores e operadores acessem um painel gráfico completo em Dark Mode e uma API RESTful diretamente pelo smartphone ou computador, sem necessidade de conexão com a internet ou roteador externo.

Neste tutorial técnico detalhado, exploraremos a fundo o funcionamento 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 UART, e o passo a passo prático para compilar e operar a placa na sua bancada.


1. Visão Geral do Projeto

O firmware do ROBOBUILDERS RB2555 atua como uma solução completa de validação de hardware (Board Diagnostic / Factory Hardware Validation) e supervisão operacional em tempo real para a placa ESP-32_RELAY_30A_X2_V1.1.

Placa controladora ESP-32_RELAY_30A_X2_V1.1 da RoboBuilders com 2 relés azuis de 30A e bornes industriais reforçados

Principais Casos de Uso na Prática:

  1. Comutação Segura de Cargas Pesadas: Controle direto de até 2 circuitos elétricos independentes de 30A (250V AC ou 30V DC), eliminando contatores auxiliares em sistemas como aquecedores industriais, bombas d’água, compressores e refletores de alta potência.
  2. Ponto de Acesso Local Autônomo: Em locais de difícil acesso, casas de máquinas, estufas rurais ou galpões sem infraestrutura de rede, a placa emite sua própria rede Wi-Fi ROBOBUILDERS-RB2555.
  3. Portal Captivo Instantâneo: Ao conectar um smartphone ou computador à rede da placa, o navegador abre automaticamente a interface web em tela cheia, dispensando a digitação manual de endereços IP.
  4. Integração Externa via API REST: Sistemas de automação (Home Assistant, Node-RED, supervisórios SCADA ou scripts em Python/Node.js) podem acionar e auditar os relés e as GPIOs secundárias através de requisições HTTP RESTful em formato JSON.

2. Especificações de Hardware

A placa ESP-32_RELAY_30A_X2_V1.1 foi concebida para oferecer alta imunidade contra ruídos eletromagnéticos e confiabilidade térmica em operação contínua:

ItemEspecificação Detalhada
Identificador do ProdutoROBOBUILDERS RB2555
Modelo da Placa BaseESP-32_RELAY_30A_X2_V1.1 (ou ESP-32_RELAY_30A_X2)
Microcontrolador CentralESP32-WROOM-32 / ESP32-WROOM-32E (Xtensa® Dual-Core 32-bit LX6 @ 240 MHz, 4MB Flash SPI, 520KB SRAM)
Relés de Potência2 Canais de Alta Potência SONGLE SLA-05VDC-SL-C (30A)
Capacidade Máxima por Canal30A em 250V AC ou 30A em 30V DC
Isolamento de CircuitoIsolamento galvânico por optoacopladores independentes dedicados a cada canal de relé
Terminais de Conexão dos RelésBornes de parafuso industriais reforçados: COM (Comum), NO (Normal Aberto) e NC (Normal Fechado)
LED Indicador OnboardLED de diagnóstico e sinalização de atividade acoplado à GPIO 5
Botão Físico OnboardBotão tátil multifunção / Bootloader acoplado à GPIO 0 (IO0 / S1)
Entrada de Alimentação DCBorne de alimentação de ampla faixa: 7V a 30V DC (com circuito regulador chaveado onboard)
Conector Micro-USBExclusivo para alimentação elétrica 5V DC (sem chip conversor USB-Serial integrado)
Header de Programação UARTHeader serial exposto de 6 pinos (TXD, RXD, IO0, EN/RST, GND, 5V/3V3)

⚠️ Atenção sobre a porta Micro-USB: Ao contrário das placas de prototipagem comuns (como a ESP32 NodeMCU), a porta Micro-USB presente nesta placa é dedicada exclusivamente à alimentação de 5V DC. A placa não possui chip de conversão USB-Serial soldado. Para gravar o código ou atualizar o firmware, deve-se utilizar o header UART com um gravador USB-Serial externo.

Consumo das Bobinas de 30A: Cada relé de 30A consome aproximadamente 185 mA a 5V quando energizado. Com os dois relés acionados simultaneamente somados aos picos de transmissão de rádio Wi-Fi do ESP32, utilize sempre uma fonte com capacidade mínima de 5V / 1,5A ou 12V / 1A para evitar quedas bruscas de tensão (brownout reset).


3. Mapeamento de Pinos (Pinout Oficial)

A placa organiza as GPIOs do processador em três grupos lógicos: canais de acionamento dos relés de potência, periféricos onboard e barramento de expansão livre:

3.1 Barramento dos 2 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 PadrãoLógica de AcionamentoDescrição Funcional
Relé 1 de Potência (K1)GPIO 13OUTPUTActive HIGHOptoacoplador e bobina do Relé 1 (30A)
Relé 2 de Potência (K2)GPIO 12OUTPUTActive HIGHOptoacoplador e bobina do Relé 2 (30A) (Strapping Pin MTDI)

💡 Nota sobre a GPIO 12 (K2): A GPIO 12 é um strapping pin de inicialização do ESP32 responsável pelo controle de tensão da memória Flash SPI no momento do boot. A placa RB2555 possui 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 status, atividade e sinalização visual
🟡 Botão Físico (IO0 / S1)GPIO 0INPUT_PULLUPActive LOWBotão tátil do usuário e seleção do modo Bootloader
🔌 UART0 TXGPIO 1UARTTransmissãoLinha serial de transmissão TX para gravação (115.200 bps)
🔌 UART0 RXGPIO 3UARTRecepçãoLinha serial de recepção RX para gravação (115.200 bps)

3.3 Barramento de Expansão para Sensores e Atuadores Extras

A placa expõe um barramento com GPIOs livres para conexão de sensores (temperatura, presença, fluxo, corrente), displays ou atuadores complementares:

Grupo de PinosGPIOs MapeadasModo PadrãoObservações de Projeto
I/O Digital Configurável2, 4, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33OUTPUTEntradas ou saídas de 3.3V comutáveis dinamicamente pelo painel
Input-Only (Sensores ADC)34, 35INPUTPinos de entrada pura ADC1, ideais para sensores analógicos e digitais

4. Recursos do Painel Web

A interface gráfica do ROBOBUILDERS RB2555 foi desenvolvida como uma Single Page Application (SPA) responsiva em modo escuro (Dark Mode). Ela fica gravada integralmente na memória Flash SPI do microcontrolador através da diretiva PROGMEM, sem consumir memória RAM dinâmica (DRAM) do sistema:

Interface web de controle e monitoramento da placa ESP32 com 2 relés de 30A RB2555

4.1 Seção 1 — Teste dos 2 Relés de Potência & Recursos Onboard

  • Acionamento dos Relés (GPIOs 13 e 12): Cada relé possui um cartão interativo com status visual em tempo real, destacando as cores e a indicação de contato (Aberto / Fechado).
  • Pulso Temporizado de 1s: Botão “Pulso 1s” energiza o relé escolhido e agenda o desarme automático após 1000 ms de forma assíncrona, sem travar o processamento do loop principal.
  • Controle do LED Onboard (GPIO 5): Permite alternar manualmente (Ligar/Desligar) ou disparar um teste de piscar rápido (Piscar 500ms).
  • Diagnóstico do Botão BOOT (GPIO 0): Cartão de telemetria que exibe dinamicamente se a tecla física IO0 está 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 com um clique.
  • Ações Rápidas em Lote: Botões globais para ”⚡ Ligar Todas as Saídas” e ”🛑 Desligar Todas”.
  • Configuração Dinâmica de Modo (⚙️): Permite reconfigurar em tempo de execução o papel de cada pino entre Saída Digital (OUTPUT) e Entrada com Resistor Pull-Up (INPUT_PULLUP).
  • Proteção de Hardware: As entradas analógicas GPIO 34 e GPIO 35 são protegidas e travadas pelo firmware como apenas leitura (Input-Only).

4.3 Portal Captivo Wi-Fi

Ao energizar a placa, o firmware configura o ponto de acesso Wi-Fi com os parâmetros:

  • SSID da Rede: ROBOBUILDERS-RB2555
  • Segurança: Aberta (sem senha)
  • Endereço IP: 192.168.4.1

O servidor DNS integrado intercepta requisições de teste dos sistemas operacionais (Android, iOS, Windows, macOS) e redireciona automaticamente o navegador para a tela de controle.


5. Documentação da API REST JSON

A placa possui um servidor HTTP embutido que responde a comandos no padrão RESTful com payload leve em formato JSON:

5.1 GET /api/status

Retorna o tempo de atividade (uptime) em segundos e o estado de todas as GPIOs mapeadas:

curl http://192.168.4.1/api/status

Exemplo de Resposta:

{
  "uptime": 42,
  "pins": [
    { "pin": 5, "mode": 0, "val": 1 },
    { "pin": 13, "mode": 0, "val": 0 },
    { "pin": 12, "mode": 0, "val": 0 },
    { "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 da GPIO especificada (de LOW para HIGH ou vice-versa):

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

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

# Alterna o estado do LED onboard (GPIO 5)
curl "http://192.168.4.1/api/toggle?pin=5"

Resposta:

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

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

Dispara um pulso em nível alto (HIGH) pela duração especificada em milissegundos, desarmando a saída automaticamente:

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

# Aciona o Relé 1 (GPIO 13) por 1 segundo (1000 ms)
curl "http://192.168.4.1/api/pulse?pin=13&ms=1000"

# Aciona o Relé 2 (GPIO 12) por 2 segundos (2000 ms)
curl "http://192.168.4.1/api/pulse?pin=12&ms=2000"

Resposta:

{ "success": true }

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

Configura o modo de operação do pino: mode=0 para OUTPUT (Saída) e mode=1 para INPUT_PULLUP (Entrada com resistor de elevação):

# Configura a GPIO 22 como entrada com pull-up
curl "http://192.168.4.1/api/mode?pin=22&mode=1"

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

Comuta em lote todas as GPIOs configuradas como saída digital para nível lógico 1 (HIGH) ou 0 (LOW):

# Liga todas as saídas digitais
curl "http://192.168.4.1/api/all?state=1"

# Desliga todas as saídas digitais
curl "http://192.168.4.1/api/all?state=0"

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á seccionada.
  • NO (Normalmente Aberto): O circuito permanece aberto em repouso e fecha quando o relé é acionado. É a saída recomendada para praticamente todas as rotinas de automação.
  • NC (Normalmente Fechado): O circuito fica em curto/fechado em repouso e se abre ao acionar o relé.
Diagrama esquemático de ligação elétrica profissional da placa ESP32 com 2 relés de 30A RB2555 para cargas AC e DC

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

A tabela abaixo descreve cada condutor e ponto de interligação ilustrado no diagrama:

Terminal de OrigemTerminal de Destino (Placa / Carga)Cor do FioTipo de SinalObservação Técnica
Fonte 12V DC (+)Borne 7-28V da Placa🔴 VermelhoAlimentação DCEntrada de alimentação lógica e bobinas
Fonte 12V DC (-)Borne GND da Placa⚫ PretoReferência ComumInterligar ao terra comum do sistema
Rede Elétrica (Fase - L)Borne COM do Relé 1 (K1 - GPIO 13)🟤 MarromLinha AC (110V/220V)Linha de fase da instalação elétrica
Borne NO do Relé 1 (K1)Terminal 1 da Carga AC (30A)🔴 VermelhoFase ChaveadaFecha contato no acionamento do relé
Rede Elétrica (Neutro - N)Terminal 2 da Carga AC (30A)🔵 Azul ClaroRetorno NeutroRetorno neutro direto à carga AC
Fonte de Carga 24V DC (+)Borne COM do Relé 2 (K2 - GPIO 12)🔴 VermelhoPositivo DC CargaLinha de alimentação da carga contínua
Borne NO do Relé 2 (K2)Terminal (+) da Bomba / Motor DC🟠 LaranjaLinha DC ChaveadaFecha circuito no acionamento do relé
Fonte de Carga 24V DC (-)Terminal (-) da Bomba / Motor DC⚫ PretoRetorno NegativoRetorno negativo direto à fonte de carga

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

Perigo de choque elétrico e sobreaquecimento:

  1. Bitola Adequada dos Cabos: Para conduzir até 30A com segurança e evitar aquecimento nas conexões, utilize condutores de cobre com seção transversal mínima de 4,0 mm² (para lances curtos) ou 6,0 mm² conforme a norma NBR 5410.
  2. Proteção Contra Picos e Arcos Indutivos: Motores, compressores e bombas geram transitórios e arcos elétricos na abertura dos contatos. Instale filtros Snubber RC em cargas de corrente alternada ou diodos de retorno (Flyback) em cargas de corrente contínua.
  3. Reaperto dos Terminais: Aperte firmemente os parafusos dos bornes verdes industriais após passar a fiação. Terminais com folga geram resistência de contato e aquecimento indesejado.

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

Como a placa ESP-32_RELAY_30A_X2_V1.1 não integra um conversor USB-Serial nativo, o envio de firmware requer um módulo conversor USB-Serial externo (como CP2102, CH340, FTDI FT232RL ou PL2303) interligado ao header serial de 6 pinos:

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

⚠️ 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 gravação serial em bancada.

Tabela de Conexões do Gravador USB-Serial

Pino do Gravador USB-SerialPino do Header UART (Placa RB2555)Cor do FioFunção do SinalRegra de Ligação
5V (ou 3V3)5V (ou 3V3)🔴 VermelhoAlimentação LógicaFornece energia ao ESP32 durante a gravação
GNDGND⚫ PretoTerra de ReferênciaObrigatório unificar as referências GND
TXD (Transmissão)RXD (GPIO 3)🟡 AmareloRecepção de DadosLigação cruzada: TX do módulo no RX da placa
RXD (Recepção)TXD (GPIO 1)🟢 VerdeEnvio de TelemetriaLigação cruzada: RX do módulo no TX da placa

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

  1. Faça a ligação dos condutores (GND, TX, RX, 5V) entre o conversor USB-Serial e a placa RB2555.
  2. Pressione e mantenha pressionado o botão físico BOOT / IO0 (GPIO 0) da placa (ou aterre temporariamente o pino IO0 ao pino GND).
  3. Plugue o cabo USB no computador ou dê um toque rápido no botão EN / RST mantendo o botão BOOT pressionado.
  4. Solte o botão BOOT.
  5. O ESP32 entrará imediatamente no modo de recepção de firmware (waiting for download), pronto para o envio via PlatformIO ou Arduino IDE.

8. Estrutura do Repositório

O repositório oficial na pasta RB2555 possui uma arquitetura limpa, modular e pronta para compilação:

📁 RB2555/

├── 📁 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_RB2555/     --> Sketch preparado para compilação na Arduino IDE
│   ├── ROBOBUILDERS_RB2555.ino --> Código principal Arduino
│   └── web_page.h              --> Interface web embutida no sketch

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

├── platformio.ini              --> Arquivo de parâmetros e dependências do PlatformIO
└── README.md                   --> Documentação técnica oficial do hardware e pinout

Otimização Inteligente de Memória com PROGMEM

O arquivo web_page.h condensa toda a interface gráfica (HTML responsivo, estilos CSS e lógica assíncrona JavaScript) em uma única cadeia de texto residente na memória Flash SPI através do modificador PROGMEM. Essa técnica poupa a memória DRAM do microcontrolador, assegurando fluidez e estabilidade mesmo quando múltiplos clientes acessam a página simultaneamente.


9. Como Baixar o Projeto do GitHub

Você pode baixar exclusivamente os arquivos do projeto RB2555 sem clonar o monorepo completo da RoboBuilders:

Opção A — Clonar apenas a pasta via Git Sparse-Checkout (Recomendado)

Abra o terminal do seu computador e execute a sequência abaixo:

mkdir esp32-rele-30a-2ch && cd esp32-rele-30a-2ch
git init
git remote add origin https://github.com/luanvieiramendes/ROBOBUILDERS.git
git config core.sparseCheckout true
git sparse-checkout set "RB2555/Documenta\ção da placa e projeto WEB"
git pull --depth=1 origin main
cd "RB2555/Documentação da placa e projeto WEB"

Opção B — Download Direto em Arquivo ZIP

Se preferir efetuar o download direto pelo navegador sem o utilitário Git: 👉 Baixar pasta do projeto RB2555 via DownGit


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

O gerenciamento de compilação e upload pelo terminal com o PlatformIO Core proporciona alta velocidade e reprodutibilidade:

  1. Compilar o Firmware:

    pio run

    (Na primeira execução, o PlatformIO baixará automaticamente a toolchain Xtensa e a biblioteca ArduinoJson).

  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 COM3
  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

Se preferir programar através da interface gráfica da Arduino IDE:

  1. Garanta que o pacote de placas ESP32 esteja instalado em Ferramentas > Placa > Gerenciador de Placas.
  2. Abra o arquivo localizado na pasta do sketch:
    ROBOBUILDERS_RB2555/ROBOBUILDERS_RB2555.ino
  3. No menu Ferramentas > Placa > ESP32 Arduino, selecione a opção ESP32 Dev Module.
  4. No menu Ferramentas > Porta, escolha a porta COM atribuída ao 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 (segure BOOT / IO0, pressione e solte EN / RST, depois solte BOOT).
  7. Clique no botão Carregar (Upload) e aguarde a finalização da transferência.

12. Acesso ao Painel Web e Teste em Bancada

Após o término da gravação, desconecte qualquer aterramento provisório do pino IO0 e pressione o botão RST da placa para iniciar o firmware em modo de execução normal:

  1. Conecte-se à Rede Wi-Fi Criada:
    • No celular, tablet ou computador, localize as redes sem fio disponíveis e selecione:
      📶 ROBOBUILDERS-RB2555
    • Esta rede é aberta e não exige senha de acesso.
  2. Abra a Interface de Controle:
    • Em smartphones e tablets, o Portal Captivo será carregado de forma automática na tela.
    • Caso queira acessar pelo navegador web comum, basta digitar:
      👉 http://192.168.4.1
  3. Teste os Acionamentos:
    • Clique nos botões dos Relés 1 e 2 para escutar o atracamento das bobinas dos relés de 30A e acompanhar a indicação visual de contato fechado.
    • Utilize o botão “Pulso 1s” para validar o desarme automático temporizado.
    • Experimente as chamadas da API REST para integrar o acionamento em rotinas automáticas locais.

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