Placa ESP32 com 2 Relés de 30A RB2555: Manual Técnico Completo

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

Introdução

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

Descrição geral do produto

O que é a Placa ESP32 com 2 Relés de 30A (RB2555)?

A placa ESP-32_RELAY_30A_X2_V1.1 (identificada na RoboBuilders pelo código RB2555) é uma plataforma compacta e profissional desenvolvida para automação predial, industrial e residencial de cargas elétricas de alta potência. Ela integra o microcontrolador ESP32-WROOM-32 / ESP32-WROOM-32E (processador dual-core Xtensa® LX6 de 32 bits rodando a até 240 MHz com Wi-Fi 802.11 b/g/n e Bluetooth BLE 4.2 integrados) a um estágio de potência com 2 relés eletromecânicos selados de 30A modelo SONGLE SLA-05VDC-SL-C.

Diferente de módulos comuns de relé de 10A com pistas finas de cobre (suscetíveis a aquecimento e queima em regimes de partida pesada), a RB2555 foi projetada com isolamento óptico dedicado por optoacopladores independentes em cada canal, bornes industriais reforçados para cabos de bitola pesada e um circuito regulador chaveado (step-down buck) onboard de alta eficiência, capaz de operar estavelmente com ampla faixa de tensão contínua de 7V a 30V DC. Além disso, a placa expõe um barramento com 16 GPIOs digitais livres e 2 entradas analógicas, tornando-se uma central versátil de monitoramento e acionamento.

Para que serve?

  • Comutação direta de cargas de elevada corrente em corrente alternada (até 250V AC / 30A) ou contínua (até 30V DC / 30A), como motobombas, compressores de ar condicionado, resistências de caldeira/sauna e refletores de alta potência, sem a necessidade de contatores intermediários;
  • Implementação de centrais autônomas de controle sem fio, emitindo seu próprio ponto de acesso Wi-Fi local (SoftAP) com portal captivo automático ou integrando-se a redes locais e sistemas de automação (Home Assistant, ESPHome, Node-RED, MQTT e Tasmota);
  • Automação expansível com sensores e periféricos secundários, aproveitando as 16 GPIOs expostas para ler sensores de temperatura, nível, fluxo, chaves de fim de curso e acionar módulos auxiliares.

Por que devo usar?

  • Capacidade nominal de 30A por canal: contatos reforçados de liga de prata capazes de absorver picos de corrente de partida indutiva sem risco de colagem precoce de contatos;
  • Isolamento galvânico por optoacoplador: barreira óptica que impede que ruídos elétricos gerados pela carga ou arcos dos contatos cheguem às trilhas de dados do microcontrolador ESP32;
  • Alimentação flexível de 7V a 30V DC: conversor chaveado de alto rendimento que dissipa calor mínimo e opera confiavelmente em fontes padrão de 12V e 24V DC, além de baterias automotivas e bancos solares.

Quando devo usar?

A placa RB2555 é recomendada quando:

  • O projeto demanda o controle confiável de 1 ou 2 circuitos independentes de alta potência (até 30A por canal);
  • A carga elétrica solicita corrente nominal contínua entre 10A e 30A, onde placas convencionais de 10A sofreriam sobreaquecimento ou queima precoce;
  • O espaço físico no quadro elétrico é reduzido e exige uma controladora compacta com Wi-Fi embutido e barramento aberto de pinos de expansão.

Não é indicada quando:

  • O controle exige chaveamento contínuo em altíssima frequência ou modulação PWM de velocidade/potência (nestes casos, utilize módulos MOSFET ou relés de estado sólido SSR);
  • A carga ultrapassa 30A contínuos ou envolve acionamento trifásico direto com bloqueio mecânico entre fases (sendo indispensável acionar contatores tripolares industriais através do relé da placa);
  • A automação requer mais de 2 canais de potência no mesmo painel (opte pelas versões irmãs RB2554 com 4 relés ou RB2553 com 8 relés de 30A).

Como funciona o chaveamento optoacoplado de alta potência

O acionamento dos relés na placa RB2555 opera sob lógica de nível alto (Active HIGH). Quando a GPIO de controle correspondente (GPIO 13 para o Relé 1 ou GPIO 12 para o Relé 2) vai para nível lógico alto (3.3V), a corrente polariza o LED emissor infravermelho do optoacoplador do canal.

A emissão de fótons atinge a base do fototransistor interno, fazendo com que ele conduza e polarize a base do transistor de potência de chaveamento. Este transistor conecta a bobina de 5V do relé SONGLE SLA-05VDC-SL-C à linha de terra, energizando o eletroímã. O campo magnético atrai a armadura mecânica, fechando o contato entre o terminal Comum (COM) e o terminal Normalmente Aberto (NO).

Em paralelo com cada bobina existe um diodo de roda-livre (flyback), cuja função é absorver o pulso de força contraeletromotriz gerado no desligamento da bobina indutiva, preservando o transistor de acionamento e a estabilidade da fonte lógica da placa.

💡 Dica: o isolamento galvânico entre a bobina e o circuito lógico do ESP32 elimina interferências induzidas, prevenindo que surtos elétricos da rede causem travamentos ou resets inesperados no firmware.

Variantes disponíveis

A linha de placas controladoras industriais com relés de 30A da RoboBuilders oferece três modelos dimensionados para diferentes portes de painel:

Modelo / SKUCanais de ReléCapacidade por CanalFaixas de Tensão de EntradaGPIOs Livres no Barramento
RB2555 (ESP-32_RELAY_30A_X2_V1.1)2 Canais30A @ 250V AC / 30V DC7V a 30V DC (ou USB 5V)16 GPIOs digitais + 2 analógicas (ADC)
RB2554 (ESP-32_RELAY_30A_X4_V1.1)4 Canais30A @ 250V AC / 30V DC90V–250V AC ou 7V–30V DC14 GPIOs digitais + 2 analógicas (ADC)
RB2553 (ESP-32_RELAY_30A_X8_V1.2)8 Canais30A @ 250V AC / 30V DC7V a 30V DC (ou 5V DC)10 GPIOs digitais + 2 analógicas (ADC)
Placa controladora ESP32 com 2 relés de alta potência de 30A RB2555 da RoboBuilders

Especificações técnicas

Principais especificações

ParâmetroEspecificação Técnica Detalhada
Modelo da PlacaESP-32_RELAY_30A_X2_V1.1 (ou ESP-32_RELAY_30A_X2)
Código do Produto / SKURoboBuilders RB2555
Microcontrolador CentralESP32-WROOM-32 / ESP32-WROOM-32E (Espressif Systems)
Arquitetura de CPUXtensa® Dual-Core 32-bit LX6 com clock de até 240 MHz
Memória Integrada448 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 Chaveamento2 Relés de Alta Potência SONGLE SLA-05VDC-SL-C
Capacidade Máxima por Canal (AC)30A em 250V AC (Cargas resistivas puras)
Capacidade Máxima por Canal (DC)30A em 30V DC (Cargas resistivas puras)
Tensão das Bobinas dos Relés5V DC (acionada internamente via regulador chaveado da placa)
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 2 canais
Entrada de Alimentação DC (VIN)Borne de parafuso: 7V a 30V DC (regulador chaveado buck onboard)
Porta Micro-USBExclusiva para alimentação 5V DC (sem chip serial integrado)
Porta de Gravação / UARTHeader macho de passo 2,54 mm: TXD0, RXD0, IO0, EN, GND, 5V/3V3
LED Indicador OnboardLED de sinalização na GPIO 5 (Active HIGH) para status e diagnóstico
Botão Físico OnboardBotão tátil multifunção / Bootloader acoplado à GPIO 0 (IO0 / S1)
Dimensões Físicas da Placa115 mm × 80 mm × 22 mm
Temperatura de Operação−20°C a +70°C

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

Para garantir durabilidade e evitar a degradação prematura dos contatos do relé, respeite os limites operacionais recomendados segundo o tipo de carga:

Tipo de CargaCorrente Máxima RecomendadaObservações de Engenharia
Resistiva pura (aquecedores, resistências térmicas, estufas)25A a 30ACorrente e tensão em fase, sem sobretensão de arco
Indutiva pesada (motobombas, compressores, motores AC)15A a 20APicos de partida de 4 a 6 vezes a corrente nominal
Iluminação LED de alta potência / Vapor metálico12A a 15ACorrente de irrupção capacitiva inicial (inrush current)
Fontes chaveadas e carregadores de baterias16ACarga capacitiva com transiente inicial acentuado

⚠️ Atenção: para cargas indutivas em corrente alternada (motobombas, compressores e motores elétricos), é mandatório instalar um circuito amortecedor Snubber RC (resistor de 100 Ω em série com capacitor de 100 nF / 400V) em paralelo com os contatos do relé ou diretamente sobre os bornes da carga para suprimir arcos voltaicos.

Circuito de alimentação e regulador chaveado

A placa RB2555 possui um conversor redutor chaveado (step-down buck) integrado. Este regulador suporta alimentação de entrada de 7V a 30V DC com rendimento térmico superior a 85%, permitindo que a placa opere com folga térmica quando alimentada por fontes industriais de 12V ou 24V DC.

Cada bobina dos relés consome cerca de 185 mA a 5V. Com os dois canais ligados em conjunto com as transmissões de rádio Wi-Fi do ESP32, o consumo atinge aproximadamente 500 mA. Ao utilizar fonte contínua no borne DC, recomende sempre modelos com capacidade mínima de 12V / 1A ou 5V / 1,5A para evitar reinicializações causadas por queda brusca de tensão (brownout).

Atenção sobre a porta Micro-USB: a porta Micro-USB integrada serve apenas para fornecer energia de 5V à placa. Ela não estabelece comunicação de dados com o computador. O upload de programas deve ser feito obrigatoriamente através dos pinos UART (TX, RX, IO0, EN, GND).

Pinagem e descrição dos terminais

Mapeamento dos 2 canais de relé (GPIOs)

Os relés de potência da RB2555 são acionados pelos seguintes pinos do ESP32 com lógica Active HIGH:

Canal do ReléGPIO ESP32DireçãoModo PadrãoLógicaDescrição Funcional
Relé 1 (K1)GPIO 13SaídaOUTPUTActive HIGHDispara o Optoacoplador 1 / Bobina do Relé 1 (30A)
Relé 2 (K2)GPIO 12SaídaOUTPUTActive HIGHDispara o Optoacoplador 2 / Bobina do Relé 2 (Strapping Pin MTDI)

💡 Nota sobre a GPIO 12: a GPIO 12 é um pino especial de inicialização (strapping pin) do ESP32, que define a tensão da memória Flash SPI no boot. A placa RB2555 possui os resistores de polarização adequados para que a placa inicie sem conflitos. Mantenha a GPIO 12 como saída apenas dentro da rotina de código do seu sketch.

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

Terminal / PontoIdentificaçãoTipo de ConexãoNível ElétricoFunção no Hardware
Borne DC (VIN)7-28V / VINBorne de Parafuso7V a 30V DCEntrada contínua para fonte principal 12V/24V
Borne GNDGNDBorne de Parafuso0VReferência comum negativa da placa
Porta Micro-USBUSBConector Micro-USB5V DCExclusiva para alimentação. Sem chip serial.
LED OnboardGPIO 5Saída DigitalActive HIGHLED de sinalização de status e heartbeat
Botão BOOTGPIO 0 (IO0 / S1)Entrada DigitalActive LOWBotão tátil multifunção e modo bootloader
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 LOWLinha de reset físico do microcontrolador

Barramento de expansão de GPIOs

A placa RB2555 se destaca por disponibilizar um barramento com 16 GPIOs digitais livres e 2 analógicas, facilitando a conexão de sensores industriais e displays:

Grupo de PinosGPIOs DisponíveisTipo de PinoTensão Máxima
I/O Digital ConfigurávelGPIO 2, 4, 14, 15, 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/pull-down interno)

Instalação e conexão

Requisitos de hardware e segurança elétrica

  • Fonte de alimentação: fonte chaveada de 12V DC ou 24V DC com capacidade de 1A a 2A, conectada aos bornes VIN e GND;
  • Dimensionamento dos condutores elétricos (Norma NBR 5410):
    • Para correntes de carga de até 15A: condutores de cobre com bitola mínima de 2,5 mm²;
    • Para correntes de carga de até 25A: condutores de cobre com bitola mínima de 4,0 mm²;
    • Para correntes plenas de até 30A contínuos: condutores de cobre com bitola de 6,0 mm²;
  • Disjuntores termomagnéticos: instale disjuntores compatíveis na linha de fase de cada carga comutada;
  • Módulo conversor USB-Serial externo: CP2102, FT232RL ou CH340 configurado para nível lógico de 3.3V.

Passo a passo da instalação

  1. Fixação mecânica da placa: instale a placa com espaçadores isolantes em painel ou caixa de comando, garantindo afastamento de pelo menos 15 mm de superfícies metálicas;
  2. Conexão da fonte de alimentação: ligue o condutor positivo da fonte DC no borne VIN (7-30V) e o condutor negativo no borne GND;
  3. Fiação das cargas elétricas de potência: para cada canal, conecte o condutor de fase ou positivo ao borne COM e derive para o equipamento através do terminal normalmente aberto (NO);
  4. Instalação dos circuitos supressores: adicione filtros Snubber RC em paralelo com cargas indutivas em corrente alternada para proteger os contatos do relé contra arcos elétricos;
  5. Gravação de firmware em bancada: efetue a programação com a alta tensão das cargas desconectada, utilizando o conversor USB-Serial conectado ao header UART.

Esquema de ligação de cargas AC e DC

Cada canal de relé possui bornes de parafuso reforçados com 3 posições:

  • COM (Comum): entrada da linha que será chaveada (fase da rede AC ou positivo DC);
  • NO (Normalmente Aberto): circuito aberto em repouso e fechado ao acionar o relé (utilizado em 99% das aplicações);
  • NC (Normalmente Fechado): circuito fechado em repouso e aberto ao acionar o relé.
Diagrama esquemático de ligação elétrica da placa ESP32 com 2 relés de 30A RB2555 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 7-28V / VIN da PlacaVermelhoAlimentação DCEntrada de alimentação lógica e bobinas
Fonte 12V DC (−)Borne GND da PlacaPretoReferê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 DCLaranjaLinha DC ChaveadaFecha circuito no acionamento do relé
Fonte de Carga 24V DC (−)Terminal (−) da Bomba / Motor DCPretoRetorno NegativoRetorno negativo direto à fonte de carga

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

Conexão do gravador USB-Serial (UART)

Para enviar sketchs ou atualizar o firmware na placa RB2555, conecte um conversor USB-Serial externo em nível de 3.3V ao header UART:

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

Tabela de conexão do gravador serial

Pino do Conversor USB-SerialPino do Header UART (Placa RB2555)Cor do FioFunção do SinalRegra de Ligação
5V (ou 3.3V)5V (ou 3V3)VermelhoAlimentação LógicaAlimenta o ESP32 durante a gravação
GNDGNDPretoTerra de ReferênciaObrigatório interligar os terras
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 entrar em Modo Bootloader (Download Boot):

  1. Conecte os pinos do gravador à placa com a alta tensão AC das cargas totalmente desligada;
  2. Conecte o cabo USB do conversor ao computador;
  3. Pressione e mantenha pressionado o botão físico BOOT / IO0 (GPIO 0) da placa;
  4. Pressione e solte o botão EN / RST (ou desligue e religue o pino de alimentação mantendo BOOT pressionado);
  5. Solte o botão BOOT;
  6. O microcontrolador entrará no modo de gravação serial, pronto para receber o upload da Arduino IDE ou do PlatformIO.

Configuração de software

Preparação do ambiente de desenvolvimento

Para programar na Arduino IDE:

  1. Acesse Arquivo > Preferências e inclua a URL de pacotes ESP32: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  2. No menu Ferramentas > Placa > Gerenciador de Placas, instale o pacote esp32 da Espressif;
  3. Selecione a placa: Ferramentas > Placa > ESP32 Arduino > ESP32 Dev Module;
  4. Configure a velocidade de upload em 115200 ou 921600;
  5. Selecione a porta serial atribuída ao conversor USB-Serial.

Para quem utiliza PlatformIO (VS Code), utilize a configuração abaixo em platformio.ini:

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

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

O código a seguir inicializa os 2 canais de relé de 30A e o LED onboard, acionando-os sequencialmente em ciclo contínuo para validação funcional de bancada:

// Mapeamento oficial dos 2 canais de relé da placa RB2555
const int RELES[2] = {13, 12}; // Relé 1 (K1) na GPIO 13, Relé 2 (K2) na GPIO 12
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 2 Relés 30A (RB2555)...");

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

  pinMode(BOTAO_BOOT, INPUT_PULLUP); // Botão onboard com resistor de elevação interno

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

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

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

    digitalWrite(RELES[i], LOW);        // Desliga o relé
    digitalWrite(LED_STATUS, LOW);      // Apaga o LED onboard
    delay(400);                         // Intervalo de segurança mecânico
  }

  delay(2000); // Pausa de 2 segundos antes de reiniciar o teste
}

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

Em automações como partida de motobombas, abertura de portões e comandos de sirene, o relé deve operar em modo pulso temporizado de forma assíncrona, sem interromper o loop com funções de espera:

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

unsigned long instanteInicio = 0;       // Registra o instante do início do pulso
const unsigned long DURACAO_PULSO = 1500; // Tempo do pulso em milissegundos (1,5 segundos)
bool pulsoEmAndamento = false;          // Indicador de estado do pulso

void setup() {
  Serial.begin(115200);                 // Inicializa porta serial
  pinMode(PINO_RELE1, OUTPUT);          // Define pino do relé 1 como saída
  pinMode(PINO_LED, OUTPUT);            // Define pino do LED como saída
  pinMode(PINO_BOTAO, INPUT_PULLUP);    // Botão com pull-up interno ativo em nível baixo (LOW)

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

void loop() {
  // Leitura do botão onboard com debounce simples
  if (digitalRead(PINO_BOTAO) == LOW && !pulsoEmAndamento) {
    delay(50); // Filtro mecânico anti-ruído
    if (digitalRead(PINO_BOTAO) == LOW) {
      Serial.println("Comando recebido: Acionando Relé 1 por 1500 ms...");
      digitalWrite(PINO_RELE1, HIGH);   // Liga o relé 1
      digitalWrite(PINO_LED, HIGH);     // Acende o LED
      pulsoEmAndamento = true;          // Atualiza status do pulso
      instanteInicio = millis();        // Armazena o instante de ativação
    }
  }

  // Verifica o término da contagem sem travar o processador
  if (pulsoEmAndamento && (millis() - instanteInicio >= DURACAO_PULSO)) {
    digitalWrite(PINO_RELE1, LOW);      // Desliga o relé 1
    digitalWrite(PINO_LED, LOW);        // Desliga o LED
    pulsoEmAndamento = false;           // Reseta a flag de controle
    Serial.println("Tempo esgotado: Relé 1 desligado com sucesso.");
  }
}

Automação com Web Server e API RESTful JSON

Este sketch configura a placa RB2555 como Ponto de Acesso sem fio Wi-Fi (SoftAP) e inicia um servidor HTTP para controle via comandos RESTful JSON:

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

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

WebServer servidor(80);                         // Servidor HTTP na porta 80

const int RELES[2] = {13, 12};                  // GPIOs dos 2 relés (K1 e K2)
int estadosReles[2] = {0, 0};                   // Estados lógicos atuais

// Retorna telemetria geral e estado dos relés em JSON
void rotaStatus() {
  String json = "{\"uptime\":" + String(millis() / 1000) + ",\"relays\":[";
  for (int i = 0; i < 2; i++) {
    json += "{\"ch\":" + String(i + 1) + ",\"pin\":" + String(RELES[i]) + ",\"val\":" + String(estadosReles[i]) + "}";
    if (i < 1) json += ",";
  }
  json += "]}";
  servidor.sendHeader("Access-Control-Allow-Origin", "*");
  servidor.send(200, "application/json", json);
}

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

      String resposta = "{\"ch\":" + String(canal) + ",\"val\":" + String(estadosReles[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 ou 2\"}");
}

// Comanda simultaneamente os 2 relés via ?state=0 ou 1
void rotaRelays() {
  if (servidor.hasArg("state")) {
    int estado = servidor.arg("state").toInt();
    for (int i = 0; i < 2; i++) {
      estadosReles[i] = (estado == 1) ? 1 : 0;
      digitalWrite(RELES[i], estadosReles[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 de acionamento
  for (int i = 0; i < 2; i++) {
    pinMode(RELES[i], OUTPUT);
    digitalWrite(RELES[i], LOW);
  }

  // Inicializa o Ponto de Acesso Wi-Fi do ESP32
  WiFi.softAP(ssidRede, 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(); // Inicializa o servidor HTTP
  Serial.println("Servidor HTTP ativo e pronto para receber comandos.");
}

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

💡 Dica: após carregar o código, conecte o smartphone ao Wi-Fi ESP32-RELE-30A-RB2555 e abra no navegador http://192.168.4.1/api/toggle?ch=1 para comutar o Relé 1, ou http://192.168.4.1/api/status para auditar a telemetria em JSON.

Exemplos de aplicação

Exemplo 1: Automação e intertravamento de segurança entre cargas pesadas

Em comandos elétricos (como sistemas de reversão de sentido de motor, troca de fonte rede/gerador ou aquecedor e ventilador), duas cargas jamais podem ser ativadas simultaneamente para evitar curtos-circuitos ou acidentes. O sketch abaixo implementa intertravamento elétrico por software:

const int RELE_CARGA_A = 13; // Relé 1 (K1 na GPIO 13)
const int RELE_CARGA_B = 12; // Relé 2 (K2 na GPIO 12)

bool cargaAAtiva = false;
bool cargaBAtiva = false;

bool acionarCargaA() {
  // Impede ligar A se B estiver ligado
  if (cargaBAtiva) {
    Serial.println("BLOQUEIO: Carga B em operacao. Impossivel ativar Carga A!");
    return false;
  }
  digitalWrite(RELE_CARGA_A, HIGH);
  cargaAAtiva = true;
  Serial.println("Carga A acionada com sucesso.");
  return true;
}

bool acionarCargaB() {
  // Impede ligar B se A estiver ligado
  if (cargaAAtiva) {
    Serial.println("BLOQUEIO: Carga A em operacao. Impossivel ativar Carga B!");
    return false;
  }
  digitalWrite(RELE_CARGA_B, HIGH);
  cargaBAtiva = true;
  Serial.println("Carga B acionada com sucesso.");
  return true;
}

void desativarTodas() {
  digitalWrite(RELE_CARGA_A, LOW);
  digitalWrite(RELE_CARGA_B, LOW);
  cargaAAtiva = false;
  cargaBAtiva = false;
  Serial.println("Todas as cargas foram desligadas com seguranca.");
}

Exemplo 2: Monitoramento e controle remoto via Web Server

Para uma experiência visual rica e responsiva sem a necessidade de instalar aplicativos ou configurar plataformas na nuvem, você pode utilizar o projeto oficial Painel Web da RoboBuilders RB2555.

O firmware de código aberto compila uma interface Single Page Application completa em Dark Mode armazenada na memória Flash SPI (PROGMEM), com portal captivo automático, cards de acionamento em tempo real dos relés de 30A e controle total das 16 GPIOs do barramento de expansão diretamente pelo navegador:

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

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 2 Relés de 30A (RB2555): aprenda a gravar e operar um firmware completo com servidor web embutido em Dark Mode, portal captivo automático, API RESTful em JSON, acionamento por pulso temporizado de 1 segundo, ações globais e configuração dinâmica das 16 GPIOs de expansão diretamente pelo navegador no smartphone ou computador.

💡 Dica: o tutorial do projeto inclui instruções para compilação no PlatformIO, pinout do gravador USB-Serial e o código-fonte integral aberto pronto para produção em bancada ou campo.

Conclusão

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

  • Descrição geral do produto: plataforma de comando industrial compacta equipada com SoC ESP32-WROOM-32E e 2 relés SONGLE SLA-05VDC-SL-C de 30A com isolamento galvânico independente;
  • Especificações técnicas: comutação de cargas pesadas AC (até 250V / 30A) e DC (até 30V / 30A), conversor chaveado integrado com entrada de 7V a 30V DC e barramento de expansão com 16 GPIOs digitais e 2 analógicas;
  • Pinagem e descrição dos terminais: mapeamento das GPIOs dos relés (GPIO 13 para K1 e GPIO 12 para K2), sinalização de status na GPIO 5, botão físico de boot na GPIO 0 e comunicação serial UART0;
  • Instalação e conexão: dimensionamento adequado de condutores de cobre (4,0 a 6,0 mm² conforme a norma NBR 5410), esquemas de ligação de potência AC/DC com proteção snubber e instruções de gravação via gravador USB-Serial externo;
  • Configuração de software: configuração de ambiente na Arduino IDE e no PlatformIO, sketch de teste sequencial, controle por pulso temporizado com millis() e servidor Web SoftAP com API RESTful JSON;
  • Exemplos de aplicação: intertravamento lógico de segurança entre cargas e integração com painel web autônomo embarcado;
  • Projetos: aplicação prática completa disponível com o firmware de código aberto do painel web documentado no blog.

Com alta robustez elétrica, capacidade de 30A e a rica conectividade do microcontrolador ESP32, a placa RB2555 é a solução ideal para automações compactas de alta corrente em ambientes residenciais, rurais e industriais.

Solução de problemas

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