Placa ESP32 com 4 Relés de 30A RB2554: Manual Técnico Completo

Placa ESP32 4 Relés 30A RB2554 — manual técnico completo

Introdução

Neste manual, será apresentado como instalar, configurar e utilizar a placa de controle e automação ESP32 com 4 Relés de 30A (RB2554). Se desejar adquirir esta placa, clique aqui.

Descrição geral do produto

O que é a Placa ESP32 com 4 Relés de 30A (RB2554)?

A placa ESP-32_RELAY_30A_X4_V1.1 (identificada comercialmente na RoboBuilders pelo código RB2554) é uma plataforma industrial integrada de processamento embarcado e chaveamento de potência. Ela combina o poder computacional do microcontrolador ESP32-WROOM-32E (arquitetura dual-core Xtensa® 32-bit LX6 de até 240 MHz com Wi-Fi 802.11 b/g/n e Bluetooth BLE 4.2 nativos) a um estágio de potência com 4 relés eletromecânicos selados de 30A modelo SONGLE SLA-05VDC-SL-C.

Projetada especificamente para ambientes ruidosos e painéis elétricos severos, a placa dispõe de isolamento galvânico independente por optoacopladores em cada canal de relé, pistas de alta corrente reforçadas na placa de circuito impresso (PCB) e circuitos integrados de alimentação dupla: um conversor redutor chaveado (step-down buck) para alimentação em corrente contínua de 7V a 30V DC e um módulo conversor interno para alimentação direta pela rede elétrica em corrente alternada de 90V a 250V AC, dispensando fontes externas na maioria das instalações prediais e industriais.

Para que serve?

  • Comutação direta de cargas de elevada potência em corrente alternada (até 250V AC / 30A) ou contínua (até 30V DC / 30A), como motobombas, compressores de refrigeração, bancos de resistências elétricas e circuitos de iluminação de alta intensidade;
  • Criação de sistemas de controle e telemetria autônomos sem fio, operando como ponto de acesso Wi-Fi independente (SoftAP) ou interligado a redes locais corporativas e plataformas de automação (Home Assistant, Node-RED, MQTT, ESPHome e Tasmota);
  • Controle industrial integrado com barramento de GPIOs livres, permitindo a conexão direta de sensores de processo (temperatura, pressão, fim de curso e umidade) e expansões digitais ou analógicas.

Por que devo usar?

  • Capacidade de chaveamento de 30A real: contatos sobredimensionados que suportam picos de partida de cargas indutivas, evitando a soldagem prematura dos contatos que ocorre com frequência em placas genéricas de 10A;
  • Alimentação AC direta integrada (90V–250V AC): borne de entrada de alta tensão com fonte isolada onboard, eliminando a necessidade de adquirir e acomodar fontes externas de 12V em quadros de distribuição;
  • Isolamento galvânico dedicado: cada relé é acionado através de optoacopladores independentes, garantindo que ruídos eletromagnéticos e transientes de chaveamento não interfiram na CPU do ESP32.

Quando devo usar?

A placa RB2554 é ideal quando:

  • É necessário chavear de 1 a 4 circuitos independentes de alta potência (até 30A por canal) com segurança e confiabilidade industrial;
  • A instalação possui apenas alimentação de rede elétrica alternada disponível (110V ou 220V AC) e você deseja energizar a placa diretamente sem fontes auxiliares;
  • O projeto exige conectividade sem fio nativa para supervisão remota, portal captivo local ou comunicação via API REST JSON.

Não é indicada quando:

  • O controle demanda modulação contínua de potência (PWM) ou chaveamento em altíssima frequência (utilize relés de estado sólido SSR ou módulos MOSFET);
  • A carga excede 30A por fase ou necessita de chaveamento trifásico com travamento mecânico entre fases (nestes casos, acione bobinas de contatores tripolares industriais através da placa);
  • O projeto requer mais de 4 canais de relé no mesmo painel (opte pela placa irmã RB2553 com 8 relés de 30A).

Como funciona o chaveamento optoacoplado de alta potência

O acionamento de cada canal segue o padrão de nível lógico alto (Active HIGH). Quando uma das GPIOs de controle (GPIOs 12, 13, 14 ou 15) é colocada em nível alto (3.3V), o circuito polariza o fotodiodo emissor interno do optoacoplador associado ao canal.

A luz infravermelha sensibiliza o fototransistor interno do optoacoplador, que passa a conduzir e excita a base de um transistor de potência. Este transistor fecha o circuito da bobina de 5V do relé SONGLE SLA-05VDC-SL-C correspondente. A atração magnética desloca a armadura interna mecânica, fechando o contato entre o terminal Comum (COM) e o terminal Normalmente Aberto (NO).

Um diodo de roda-livre (flyback) em antiparalelo com a bobina dissipa com rapidez a energia magnética no instante da desenergização, protegendo a eletrônica de acionamento contra transientes reversos de alta tensão.

💡 Dica: a barreira física e óptica dos optoacopladores garante imunidade total a interferências eletromagnéticas conduzidas, evitando que perturbações da rede elétrica causem resets acidentais do microcontrolador.

Variantes disponíveis

A linha de placas controladoras industriais de alta potência da RoboBuilders disponibiliza duas opções de expansão:

Modelo / SKUCanais de ReléCapacidade por CanalFaixas de AlimentaçãoBarramento de GPIOs Livres
RB2554 (ESP-32_RELAY_30A_X4_V1.1)4 Canais30A @ 250V AC / 30V DC90V–250V AC ou 7V–30V DC (ou 5V)14 GPIOs digitais + 2 analógicas (ADC)
RB2553 (ESP-32_RELAY_30A_X8_V1.2)8 Canais30A @ 250V AC / 30V DC7V–30V DC (ou 5V)10 GPIOs digitais + 2 analógicas (ADC)
Placa controladora ESP32 com 4 relés de alta potência de 30A RB2554 da RoboBuilders

Especificações técnicas

Principais especificações

ParâmetroEspecificação Técnica Detalhada
Modelo da PlacaESP-32_RELAY_30A_X4_V1.1 (ou ESP-32_RELAY_30A_X4)
Código do Produto / SKURoboBuilders RB2554
MicrocontroladorESP32-WROOM-32E (Espressif Systems)
Arquitetura de CPUXtensa® Dual-Core 32-bit LX6 operando a até 240 MHz
Memória Interna448 KB ROM, 520 KB SRAM, 4 MB Flash SPI externa
Conectividade Sem FioWi-Fi 802.11 b/g/n (2.4 GHz, até 150 Mbps) e Bluetooth v4.2 BR/EDR + BLE
Canais de Chaveamento4 Relés de Alta Potência SONGLE SLA-05VDC-SL-C
Capacidade Máxima por Canal (AC)30A em 250V AC (Cargas resistivas)
Capacidade Máxima por Canal (DC)30A em 30V DC (Cargas resistivas)
Tensão das Bobinas dos Relés5V DC (acionada internamente através da fonte onboard)
Lógica de Controle dos RelésActive HIGH (nível lógico alto 3.3V fecha o contato NO)
Isolamento ElétricoOptoacopladores independentes para cada um dos 4 canais
Entrada de Alimentação ACBorne dedicado: 90V a 250V AC (50/60 Hz) com fonte isolada
Entrada de Alimentação DCBorne de parafuso: 7V a 30V DC (regulador chaveado buck)
Entrada Auxiliar 5V DCBorne conector dedicado de 5V DC
Porta de Programação / UARTHeader macho de passo 2,54 mm: TXD0, RXD0, IO0, EN, GND, 5V/3V3
LED Indicador OnboardLED azul na GPIO 5 (Active HIGH) para status e diagnóstico
Botão de Boot / UsuárioBotão tátil físico acoplado à GPIO 0 com pull-up interno
Dimensões Físicas da Placa145 mm × 90 mm × 22 mm
Temperatura de Operação−20°C a +70°C

Capacidade de carga e limites operacionais dos relés de 30A

Para assegurar longevidade aos contatos do relé e evitar riscos operacionais, aplique os limites de corrente de acordo com a característica da carga:

Natureza da CargaCorrente Máxima RecomendadaObservações de Projeto
Resistiva pura (aquecedores, resistências, fornos)25A a 30AChaveamento estável com tensão e corrente em fase
Indutiva pesada (motobombas, compressores, motores)15A a 20ACorrente de partida de 4 a 6 vezes a corrente nominal
Iluminação LED de alta potência / Lâmpadas vapor12A a 15AAlta corrente de irrupção capacitiva (inrush current)
Fontes chaveadas e carregadores industriais16ACarga capacitiva na energização

⚠️ Atenção: para cargas indutivas operando em corrente alternada (motobombas, compressores e ventiladores), é fundamental ligar um circuito amortecedor Snubber RC (resistor de 100 Ω em série com capacitor de 100 nF / 400V) em paralelo com a carga ou com os contatos para extinguir o arco voltaico de abertura.

Circuito de alimentação dupla (AC/DC)

Um dos grandes diferenciais da RB2554 é seu sistema duplo de alimentação:

  1. Entrada de Alta Tensão AC (90V–250V AC): permite ligar a placa diretamente na rede elétrica sem transformadores ou adaptadores externos;
  2. Entrada de Baixa Tensão DC (7V–30V DC): através de conversor chaveado step-down de alta eficiência, compatível com baterias automotivas de 12V e fontes industriais de 24V DC.

Cada bobina dos relés de 30A consome cerca de 185 mA a 5V. Com os 4 canais ligados simultaneamente, o consumo atinge 740 mA a 750 mA apenas no estágio dos relés. Ao alimentar a placa pela entrada DC, utilize uma fonte de no mínimo 12V / 1,5A ou 5V / 2A para assegurar estabilidade operacional sem quedas de tensão (brownout).

Pinagem e descrição dos terminais

Mapeamento dos 4 canais de relé (GPIOs)

Os relés de potência da placa RB2554 são acionados exclusivamente por pinos de saída digital do ESP32 com lógica Active HIGH:

Canal do ReléGPIO ESP32DireçãoModo PadrãoLógicaDescrição Funcional
Relé 1 (CH1)GPIO 12SaídaOUTPUTActive HIGHDispara o Optoacoplador 1 / Bobina do Relé 1 (Strapping MTDI)
Relé 2 (CH2)GPIO 13SaídaOUTPUTActive HIGHDispara o Optoacoplador 2 / Bobina do Relé 2
Relé 3 (CH3)GPIO 14SaídaOUTPUTActive HIGHDispara o Optoacoplador 3 / Bobina do Relé 3
Relé 4 (CH4)GPIO 15SaídaOUTPUTActive HIGHDispara o Optoacoplador 4 / Bobina do Relé 4 (Strapping MTDO)

⚠️ Atenção sobre as GPIOs 12 e 15: as GPIOs 12 e 15 são pinos de configuração de boot (strapping pins) do ESP32. A placa RB2554 possui circuitos resistivos de terminação balanceados para garantir a inicialização segura. Configure essas GPIOs como saídas no código apenas dentro da função setup().

Conexões de alimentação e periféricos onboard

Terminal / PontoIdentificaçãoTipo de ConexãoNível ElétricoFunção no Hardware
Borne AC (L / N)AC INBorne de Parafuso90V a 250V ACAlimentação direta da rede elétrica
Borne VINVINBorne de Parafuso7V a 30V DCEntrada contínua para fontes 12V/24V
Borne GNDGNDBorne de Parafuso0VReferência comum negativa
Borne 5V5VBorne de Parafuso5V DCEntrada direta 5V ou saída regulada
LED OnboardGPIO 5Saída DigitalActive HIGHIndicador luminoso de status/heartbeat
Botão BOOTGPIO 0 (IO0)Entrada DigitalActive LOWBotão de seleção de boot e uso geral
UART0 TXGPIO 1 (TX)Serial UART3.3V TTLLinha serial de transmissão (Upload/Debug)
UART0 RXGPIO 3 (RX)Serial UART3.3V TTLLinha serial de recepção (Upload/Debug)
Pino ResetEN (RST)Entrada de ControleActive LOWReinicia o microcontrolador ESP32

Barramento de expansão de GPIOs

A RB2554 expõe um conjunto abrangente de GPIOs livres em conector fêmea/macho de passo 2,54 mm:

GrupoGPIOs DisponíveisTipo de PinoTensão Máxima
I/O Digital ConfigurávelGPIO 2, 4, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33Entrada / Saída Digital3.3V TTL (máx. 12 mA por pino)
Entradas Analógicas PurasGPIO 34, 35Apenas Entrada (ADC1)0V a 3.3V (sem pull-up interno)

Instalação e conexão

Requisitos de hardware e segurança elétrica

  • Alimentação: fonte de rede 110V/220V AC ligada aos bornes AC, ou fonte externa de 12V DC / 1,5A ligada em VIN e GND;
  • Dimensionamento dos condutores elétricos (Norma NBR 5410):
    • Para correntes até 15A: condutores de cobre com seção mínima de 2,5 mm²;
    • Para correntes até 25A: condutores de cobre com seção mínima de 4,0 mm²;
    • Para correntes de até 30A contínuos: condutores de cobre de 6,0 mm²;
  • Disjuntores termomagnéticos: utilize disjuntores compatíveis para a proteção de cada circuito comandado;
  • Conversor USB-Serial externo: módulo conversor FT232RL, CP2102 ou CH340 com sinal em nível lógico 3.3V.

Passo a passo da instalação

  1. Fixação mecânica da placa: instale a placa sobre uma superfície isolante em trilho DIN ou quadro de distribuição, assegurando distância mínima de 15 mm de partes metálicas;
  2. Conexão da linha de alimentação: conecte os fios da rede alternada aos bornes AC IN (L/N), ou ligue a fonte 12V nos bornes VIN (+) e GND (−);
  3. Fiação das cargas elétricas: para cada canal utilizado, leve o condutor da fase ou positivo ao borne COM e derive para o equipamento através do borne NO;
  4. Instalação de proteções contra picos: acople snubbers RC nos contatos de cargas indutivas para prolongar a vida útil do relé;
  5. Gravação do firmware: efetue o upload do sketch com a rede elétrica desligada, utilizando o conversor USB-Serial conectado ao header UART.

Esquema de ligação de cargas AC e DC

Cada relé SONGLE SLA-05VDC-SL-C conta com 3 bornes de saída de alta corrente:

  • COM (Comum): recebe a linha de alimentação (fase AC ou positivo DC) que será comutada;
  • NO (Normalmente Aberto): circuito aberto em repouso e fechado quando o relé é acionado;
  • NC (Normalmente Fechado): circuito fechado em repouso e aberto no acionamento.
Diagrama esquemático de ligação elétrica da placa ESP32 com 4 relés de 30A RB2554 para cargas AC e DC

Tabela de conexões elétricas de potência (De → Para)

Terminal de OrigemTerminal de Destino (Placa / Carga)Cor do FioTipo de SinalObservação Técnica
Fonte 12V DC (+)Borne VIN (7-30V) da PlacaVermelhoAlimentação DCEntrada de alimentação lógica e bobinas
Fonte 12V DC (−)Borne GND da PlacaPretoReferência ComumInterligar o terra comum
Rede Elétrica (Fase - L)Borne COM do Relé 1 (CH1 - GPIO 12)MarromLinha AC (110V/220V)Linha de fase da rede elétrica
Borne NO do Relé 1 (CH1)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
Fonte de Carga 24V DC (+)Borne COM do Relé 2 (CH2 - GPIO 13)VermelhoPositivo DC CargaLinha de alimentação da carga contínua
Borne NO do Relé 2 (CH2)Terminal (+) do Motor / Bomba DCLaranjaLinha DC ChaveadaFecha circuito no acionamento
Fonte de Carga 24V DC (−)Terminal (−) do Motor / Bomba DCPretoRetorno NegativoRetorno negativo direto à fonte de carga

Perigo de choque elétrico grave: sempre desligue o disjuntor geral da rede elétrica antes de manusear ou apertar parafusos nos bornes AC IN, COM, NO e NC. Tensões de 110V/220V AC presentes nos bornes podem causar acidentes fatais.

Conexão do gravador USB-Serial (UART)

Como a placa RB2554 não inclui conversor USB-Serial integrado, a gravação de código requer um módulo externo (CP2102, FTDI ou CH340) configurado para 3.3V TTL:

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

Tabela de conexão do gravador serial

Pino do Conversor USB-SerialPino do Header UART (Placa RB2554)Cor do FioFunção do SinalRegra de Ligação
5V (ou 3.3V)5V (ou 3V3)VermelhoAlimentação LógicaFornece energia ao ESP32 na gravação
GNDGNDPretoTerra de ReferênciaObrigatório interligar os terras
TXD (Transmissão)RXD0 (GPIO 3)AmareloRecepção de DadosLigação cruzada: TX do módulo no RX da placa
RXD (Recepção)TXD0 (GPIO 1)VerdeEnvio de TelemetriaLigação cruzada: RX do módulo no TX da placa

Procedimento para colocar o ESP32 em modo Bootloader:

  1. Conecte os pinos do conversor serial à placa com a alta tensão AC totalmente desligada;
  2. Conecte o cabo USB do conversor serial ao computador;
  3. Pressione e mantenha pressionado o botão fásico BOOT (GPIO 0) da placa;
  4. Pressione e solte o botão EN / RST (ou desconecte e reconecte brevemente o pino 5V/3V3 mantendo BOOT pressionado);
  5. Solte o botão BOOT;
  6. O microcontrolador estará em modo de gravação serial (Download Boot), pronto para receber o upload.

Configuração de software

Preparação do ambiente de desenvolvimento

Para programar na Arduino IDE:

  1. Abra Arquivo > Preferências e insira a URL do pacote ESP32 nas URLs adicionais: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  2. Em Ferramentas > Placa > Gerenciador de Placas, instale o pacote esp32 da Espressif;
  3. Selecione a placa: ESP32 Dev Module;
  4. Configure a velocidade de upload para 115200 ou 921600;
  5. Selecione a porta COM correspondente ao conversor USB-Serial.

Para quem utiliza PlatformIO (VS Code), utilize o seguinte platformio.ini:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600

Código básico de acionamento sequencial dos 4 relés

O sketch abaixo testa individualmente os 4 canais de relé de 30A e o LED onboard em ciclo contínuo:

// Mapeamento oficial dos 4 canais de relé da placa RB2554
const int RELES[4] = {12, 13, 14, 15}; // GPIOs dos relés 1 a 4
const int LED_STATUS = 5;               // LED onboard na GPIO 5
const int BOTAO_BOOT = 0;               // Botão BOOT / IO0 na GPIO 0

void setup() {
  Serial.begin(115200);                 // Inicializa comunicação serial em 115200 bps
  Serial.println("Iniciando teste da Placa ESP32 4 Relés 30A (RB2554)...");

  pinMode(LED_STATUS, OUTPUT);          // Configura pino do LED como saída
  digitalWrite(LED_STATUS, LOW);

  pinMode(BOTAO_BOOT, INPUT_PULLUP);    // Configura botão onboard com pull-up interno

  // Configura todas as GPIOs dos relés como saída e garante estado desligado (LOW)
  for (int i = 0; i < 4; i++) {
    pinMode(RELES[i], OUTPUT);          // Define o pino do relé como saída digital
    digitalWrite(RELES[i], LOW);        // Inicializa desligado (Active HIGH)
  }

  Serial.println("Os 4 canais de relé foram inicializados com sucesso.");
}

void loop() {
  // Varredura progressiva acionando um relé por vez
  for (int i = 0; i < 4; i++) {
    Serial.printf("Ligando Relé %d (GPIO %d)\n", i + 1, RELES[i]);
    digitalWrite(RELES[i], HIGH);       // Energiza a bobina do relé
    digitalWrite(LED_STATUS, HIGH);     // Acende o LED onboard
    delay(1000);                        // Mantém ligado por 1 segundo

    digitalWrite(RELES[i], LOW);        // Desliga o relé
    digitalWrite(LED_STATUS, LOW);      // Apaga o LED onboard
    delay(300);                         // Pausa de alívio mecânico
  }

  delay(2000); // Pausa de 2 segundos antes do próximo ciclo
}

Código de controle com pulso temporizado e botão de boot

Ideal para automações que exigem pulsos rápidos (abertura de fechaduras elétricas, comandos de portão eletrônico ou rearme de contatores) sem travar a CPU com funções bloqueantes:

const int PINO_RELE1 = 12;              // Relé 1 conectado à GPIO 12
const int PINO_LED   = 5;               // LED de status onboard
const int PINO_BOTAO = 0;               // Botão físico onboard IO0

unsigned long tempoInicio = 0;          // Registra o timestamp do início do pulso
const unsigned long TEMPO_PULSO = 2000; // Duração do acionamento em ms (2 segundos)
bool pulsoAtivo = false;                // Flag indicadora do estado do pulso

void setup() {
  Serial.begin(115200);                 // Inicialização da porta serial
  pinMode(PINO_RELE1, OUTPUT);          // Define GPIO do relé 1 como saída
  pinMode(PINO_LED, OUTPUT);            // Define GPIO do LED como saída
  pinMode(PINO_BOTAO, INPUT_PULLUP);    // Botão onboard com resistor de elevação ativo em LOW

  digitalWrite(PINO_RELE1, LOW);        // Inicia com relé 1 desligado
  digitalWrite(PINO_LED, LOW);
  Serial.println("Pressione o botão BOOT (IO0) para acionar pulso de 2s no Relé 1.");
}

void loop() {
  // Leitura do botão onboard com debounce simples
  if (digitalRead(PINO_BOTAO) == LOW && !pulsoAtivo) {
    delay(50); // Filtro mecânico contra bouncing
    if (digitalRead(PINO_BOTAO) == LOW) {
      Serial.println("Comando recebido: Acionando Relé 1 por 2000 ms...");
      digitalWrite(PINO_RELE1, HIGH);   // Liga o relé 1
      digitalWrite(PINO_LED, HIGH);     // Liga o LED
      pulsoAtivo = true;                // Sinaliza início do pulso
      tempoInicio = millis();           // Armazena o instante de ativação
    }
  }

  // Verifica o término da contagem sem bloquear o fluxo do programa
  if (pulsoAtivo && (millis() - tempoInicio >= TEMPO_PULSO)) {
    digitalWrite(PINO_RELE1, LOW);      // Desliga o relé 1
    digitalWrite(PINO_LED, LOW);        // Desliga o LED
    pulsoAtivo = false;                 // Reseta a flag de controle
    Serial.println("Tempo concluído: Relé 1 desativado com segurança.");
  }
}

Automação com Web Server e API RESTful JSON

Este sketch configura a placa RB2554 como Ponto de Acesso Wi-Fi (SoftAP) e inicia um servidor web HTTP capaz de controlar os 4 relés via comandos RESTful padronizados:

#include <WiFi.h>
#include <WebServer.h>

const char* redeSSID = "ESP32-RELE-30A-RB2554"; // Nome da rede gerada pela placa
const char* senhaRede = "";                     // Ponto de acesso aberto sem senha

WebServer servidor(80);                         // Inicializa o servidor HTTP na porta 80

const int RELES[4] = {12, 13, 14, 15};          // GPIOs dos 4 canais de relé
int statusReles[4] = {0, 0, 0, 0};              // Array com os estados atuais

// Rota para consulta do status geral em JSON
void rotaStatus() {
  String json = "{\"uptime\":" + String(millis() / 1000) + ",\"relays\":[";
  for (int i = 0; i < 4; i++) {
    json += "{\"ch\":" + String(i + 1) + ",\"pin\":" + String(RELES[i]) + ",\"val\":" + String(statusReles[i]) + "}";
    if (i < 3) json += ",";
  }
  json += "]}";
  servidor.sendHeader("Access-Control-Allow-Origin", "*");
  servidor.send(200, "application/json", json);
}

// Rota para alternar o estado de um relé específico (?ch=1..4)
void rotaToggle() {
  if (servidor.hasArg("ch")) {
    int canal = servidor.arg("ch").toInt();
    if (canal >= 1 && canal <= 4) {
      int idx = canal - 1;
      statusReles[idx] = !statusReles[idx];
      digitalWrite(RELES[idx], statusReles[idx] ? HIGH : LOW);

      String resposta = "{\"ch\":" + String(canal) + ",\"val\":" + String(statusReles[idx]) + "}";
      servidor.sendHeader("Access-Control-Allow-Origin", "*");
      servidor.send(200, "application/json", resposta);
      return;
    }
  }
  servidor.send(400, "application/json", "{\"error\":\"Canal invalido. Use ch=1 a 4\"}");
}

// Rota para ligar ou desligar todos os relés simultaneamente (?state=0 ou 1)
void rotaRelays() {
  if (servidor.hasArg("state")) {
    int estado = servidor.arg("state").toInt();
    for (int i = 0; i < 4; i++) {
      statusReles[i] = (estado == 1) ? 1 : 0;
      digitalWrite(RELES[i], statusReles[i] ? HIGH : LOW);
    }
    servidor.sendHeader("Access-Control-Allow-Origin", "*");
    servidor.send(200, "application/json", "{\"success\":true}");
    return;
  }
  servidor.send(400, "application/json", "{\"error\":\"Parametro state ausente\"}");
}

void setup() {
  Serial.begin(115200);

  // Inicializa os pinos dos 4 relés
  for (int i = 0; i < 4; i++) {
    pinMode(RELES[i], OUTPUT);
    digitalWrite(RELES[i], LOW);
  }

  // Inicializa o Ponto de Acesso Wi-Fi do ESP32
  WiFi.softAP(redeSSID, senhaRede);
  Serial.print("Ponto de acesso criado. Acesse http://");
  Serial.println(WiFi.softAPIP());

  // Registra as rotas da API REST
  servidor.on("/api/status", HTTP_GET, rotaStatus);
  servidor.on("/api/toggle", HTTP_GET, rotaToggle);
  servidor.on("/api/relays", HTTP_GET, rotaRelays);

  servidor.begin(); // Inicia o serviço HTTP
  Serial.println("Servidor HTTP ativo e pronto para requisições.");
}

void loop() {
  servidor.handleClient(); // Processa as requisições de clientes conectados
}

💡 Dica: grave o sketch acima, conecte o celular à rede Wi-Fi ESP32-RELE-30A-RB2554 e acesse pelo navegador http://192.168.4.1/api/toggle?ch=1 para comutar o Relé 1, ou http://192.168.4.1/api/relays?state=1 para acionar os 4 canais juntos.

Exemplos de aplicação

Exemplo 1: Automação de motobomba e aquecimento com intertravamento de segurança

Em sistemas de piscinas ou caldeiras, a resistência de aquecimento (Relé 2) jamais pode ser ativada caso a motobomba de circulação de água (Relé 1) esteja desligada, sob risco de queima por superaquecimento. O código a seguir implementa uma lógica de intertravamento de proteção:

const int RELE_BOMBA = 12;        // Relé 1: Motobomba de circulação de água (GPIO 12)
const int RELE_AQUECEDOR = 13;    // Relé 2: Resistência térmica de 30A (GPIO 13)

bool estadoBomba = false;
bool estadoAquecedor = false;

void ligarBomba() {
  digitalWrite(RELE_BOMBA, HIGH);
  estadoBomba = true;
  Serial.println("Motobomba ativada com sucesso.");
}

void desligarBomba() {
  // Intertravamento: desliga obrigatoriamente o aquecimento antes de cortar o fluxo
  if (estadoAquecedor) {
    digitalWrite(RELE_AQUECEDOR, LOW);
    estadoAquecedor = false;
    Serial.println("Aquecedor desligado automaticamente por seguranca!");
  }
  digitalWrite(RELE_BOMBA, LOW);
  estadoBomba = false;
  Serial.println("Motobomba desativada.");
}

bool ligarAquecedor() {
  // Permite ligar o aquecedor somente se a bomba estiver em pleno funcionamento
  if (!estadoBomba) {
    Serial.println("FALHA: Impossivel ligar aquecedor sem fluxo de agua na bomba.");
    return false;
  }
  digitalWrite(RELE_AQUECEDOR, HIGH);
  estadoAquecedor = true;
  Serial.println("Resistencia de aquecimento ativada com seguranca.");
  return true;
}

Exemplo 2: Monitoramento e controle remoto via Web Server

Para usufruir de uma experiência visual interativa completa e profissional sem depender da criação manual de interfaces gráficas, utilize o projeto oficial Painel Web da RoboBuilders RB2554.

O firmware em código aberto armazena uma aplicação Single Page Application completa em Dark Mode na memória Flash SPI do ESP32 (PROGMEM), fornecendo portal captivo imediato, cards de acionamento de 30A com confirmação em tempo real e controle dinâmico de todas as GPIOs do barramento de expansão:

Interface web de controle e monitoramento da placa ESP32 com 4 relés de 30A RB2554

Projetos

Para implementar uma solução completa de automação, diagnóstico e controle local sem precisar programar a interface gráfica do zero, confira o projeto passo a passo documentado aqui no blog da RoboBuilders:

  • Projeto: Painel Web de Controle para Placa ESP32 com 4 Relés de 30A (RB2554): aprenda a compilar e gravar um firmware completo de código aberto com interface moderna em Dark Mode, portal captivo automático, API RESTful em JSON, acionamento por pulso temporizado de 1 segundo, ações em lote (Ligar Todos / Desligar Todos) e configuração dinâmica de todas as GPIOs de expansão diretamente pelo navegador no smartphone ou PC.

💡 Dica: o projeto inclui suporte para gravação rápida via PlatformIO, diagrama de ligação serial UART detalhado e o código-fonte integral pronto para uso em campo.

Conclusão

Este manual abordou de forma completa a placa controladora ESP32 com 4 relés de 30A (RB2554), desde suas características de hardware até os esquemas de ligação elétrica e desenvolvimento de firmware:

  • Descrição geral do produto: plataforma industrial com microcontrolador ESP32-WROOM-32E, 4 relés selados SONGLE SLA-05VDC-SL-C de 30A por canal e alimentação de alta tensão AC integrada;
  • Especificações técnicas: suporte para chaveamento de cargas AC (até 250V / 30A) e DC (até 30V / 30A), entrada bivolt AC direta de 90V a 250V AC e ampla faixa DC de 7V a 30V DC com conversor buck integrado;
  • Pinagem e descrição dos terminais: mapeamento das GPIOs de controle dos relés (12, 13, 14 e 15), periféricos onboard (LED GPIO 5 e botão IO0) e barramento com 14 GPIOs digitais livres e 2 entradas analógicas;
  • Instalação e conexão: boas práticas de cabeamento conforme a NBR 5410 (condutores de 4,0 a 6,0 mm²), esquemas de ligação AC/DC com proteção snubber e procedimentos de bootloader para gravação via UART;
  • Configuração de software: preparação do ambiente na Arduino IDE e no PlatformIO, código de teste sequencial, controle temporizado não-bloqueante por millis() e servidor Web com API RESTful JSON;
  • Exemplos de aplicação: intertravamento de segurança para bombas e aquecimento industrial, e operação com painel web autônomo embarcado;
  • Projetos: tutorial prático completo com firmware de código aberto, portal captivo e interface SPA Dark Mode disponível no blog.

Combinando alta capacidade de corrente de 30A, isolamento óptico dedicado e alimentação bivolt direta integrada, a placa RB2554 se destaca como uma das soluções mais versáteis e robustas do mercado para automação predial, rural e industrial.

Solução de problemas

Olá! Sou o assistente técnico da RoboBuilders. Descreva seu problema com o Placa ESP32 com 4 Relés de 30A RB2554: Manual Técnico Completo 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.