Placa ESP32 com 2 Relés de 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 / SKU | Canais de Relé | Capacidade por Canal | Faixas de Tensão de Entrada | GPIOs Livres no Barramento |
|---|---|---|---|---|
| RB2555 (ESP-32_RELAY_30A_X2_V1.1) | 2 Canais | 30A @ 250V AC / 30V DC | 7V a 30V DC (ou USB 5V) | 16 GPIOs digitais + 2 analógicas (ADC) |
| RB2554 (ESP-32_RELAY_30A_X4_V1.1) | 4 Canais | 30A @ 250V AC / 30V DC | 90V–250V AC ou 7V–30V DC | 14 GPIOs digitais + 2 analógicas (ADC) |
| RB2553 (ESP-32_RELAY_30A_X8_V1.2) | 8 Canais | 30A @ 250V AC / 30V DC | 7V a 30V DC (ou 5V DC) | 10 GPIOs digitais + 2 analógicas (ADC) |
Especificações técnicas
Principais especificações
| Parâmetro | Especificação Técnica Detalhada |
|---|---|
| Modelo da Placa | ESP-32_RELAY_30A_X2_V1.1 (ou ESP-32_RELAY_30A_X2) |
| Código do Produto / SKU | RoboBuilders RB2555 |
| Microcontrolador Central | ESP32-WROOM-32 / ESP32-WROOM-32E (Espressif Systems) |
| Arquitetura de CPU | Xtensa® Dual-Core 32-bit LX6 com clock de até 240 MHz |
| Memória Integrada | 448 KB ROM, 520 KB SRAM, 4 MB Flash SPI externa |
| Conectividade Sem Fio | Wi-Fi 802.11 b/g/n (2.4 GHz, até 150 Mbps) e Bluetooth v4.2 BR/EDR + BLE |
| Canais de Chaveamento | 2 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és | 5V DC (acionada internamente via regulador chaveado da placa) |
| Lógica de Controle dos Relés | Active HIGH (nível lógico alto 3.3V fecha o contato NO) |
| Isolamento Elétrico | Optoacopladores 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-USB | Exclusiva para alimentação 5V DC (sem chip serial integrado) |
| Porta de Gravação / UART | Header macho de passo 2,54 mm: TXD0, RXD0, IO0, EN, GND, 5V/3V3 |
| LED Indicador Onboard | LED de sinalização na GPIO 5 (Active HIGH) para status e diagnóstico |
| Botão Físico Onboard | Botão tátil multifunção / Bootloader acoplado à GPIO 0 (IO0 / S1) |
| Dimensões Físicas da Placa | 115 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 Carga | Corrente Máxima Recomendada | Observações de Engenharia |
|---|---|---|
| Resistiva pura (aquecedores, resistências térmicas, estufas) | 25A a 30A | Corrente e tensão em fase, sem sobretensão de arco |
| Indutiva pesada (motobombas, compressores, motores AC) | 15A a 20A | Picos de partida de 4 a 6 vezes a corrente nominal |
| Iluminação LED de alta potência / Vapor metálico | 12A a 15A | Corrente de irrupção capacitiva inicial (inrush current) |
| Fontes chaveadas e carregadores de baterias | 16A | Carga 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 ESP32 | Direção | Modo Padrão | Lógica | Descrição Funcional |
|---|---|---|---|---|---|
| Relé 1 (K1) | GPIO 13 | Saída | OUTPUT | Active HIGH | Dispara o Optoacoplador 1 / Bobina do Relé 1 (30A) |
| Relé 2 (K2) | GPIO 12 | Saída | OUTPUT | Active HIGH | Dispara 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 / Ponto | Identificação | Tipo de Conexão | Nível Elétrico | Função no Hardware |
|---|---|---|---|---|
| Borne DC (VIN) | 7-28V / VIN | Borne de Parafuso | 7V a 30V DC | Entrada contínua para fonte principal 12V/24V |
| Borne GND | GND | Borne de Parafuso | 0V | Referência comum negativa da placa |
| Porta Micro-USB | USB | Conector Micro-USB | 5V DC | Exclusiva para alimentação. Sem chip serial. |
| LED Onboard | GPIO 5 | Saída Digital | Active HIGH | LED de sinalização de status e heartbeat |
| Botão BOOT | GPIO 0 (IO0 / S1) | Entrada Digital | Active LOW | Botão tátil multifunção e modo bootloader |
| UART0 TX | GPIO 1 (TX) | Serial UART | 3.3V TTL | Linha serial de transmissão (Upload/Debug) |
| UART0 RX | GPIO 3 (RX) | Serial UART | 3.3V TTL | Linha serial de recepção (Upload/Debug) |
| Pino Reset | EN (RST) | Entrada de Controle | Active LOW | Linha 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 Pinos | GPIOs Disponíveis | Tipo de Pino | Tensão Máxima |
|---|---|---|---|
| I/O Digital Configurável | GPIO 2, 4, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 | Entrada / Saída Digital | 3.3V TTL (máx. 12 mA por pino) |
| Entradas Analógicas Puras | GPIO 34, 35 | Apenas 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
- 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;
- 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;
- 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);
- 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;
- 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é.
Tabela de conexões elétricas de potência (De → Para)
| Terminal de Origem | Terminal de Destino (Placa / Carga) | Cor do Fio | Tipo de Sinal | Observação Técnica |
|---|---|---|---|---|
| Fonte 12V DC (+) | Borne 7-28V / VIN da Placa | Vermelho | Alimentação DC | Entrada de alimentação lógica e bobinas |
| Fonte 12V DC (−) | Borne GND da Placa | Preto | Referência Comum | Interligar ao terra comum do sistema |
| Rede Elétrica (Fase - L) | Borne COM do Relé 1 (K1 - GPIO 13) | Marrom | Linha AC (110V/220V) | Linha de fase da instalação elétrica |
| Borne NO do Relé 1 (K1) | Terminal 1 da Carga AC (30A) | Vermelho | Fase Chaveada | Fecha contato no acionamento do relé |
| Rede Elétrica (Neutro - N) | Terminal 2 da Carga AC (30A) | Azul Claro | Retorno Neutro | Retorno neutro direto à carga AC |
| Fonte de Carga 24V DC (+) | Borne COM do Relé 2 (K2 - GPIO 12) | Vermelho | Positivo DC Carga | Linha de alimentação da carga contínua |
| Borne NO do Relé 2 (K2) | Terminal (+) da Bomba / Motor DC | Laranja | Linha DC Chaveada | Fecha circuito no acionamento do relé |
| Fonte de Carga 24V DC (−) | Terminal (−) da Bomba / Motor DC | Preto | Retorno Negativo | Retorno 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:
Tabela de conexão do gravador serial
| Pino do Conversor USB-Serial | Pino do Header UART (Placa RB2555) | Cor do Fio | Função do Sinal | Regra de Ligação |
|---|---|---|---|---|
| 5V (ou 3.3V) | 5V (ou 3V3) | Vermelho | Alimentação Lógica | Alimenta o ESP32 durante a gravação |
| GND | GND | Preto | Terra de Referência | Obrigatório interligar os terras |
| TXD (Transmissão) | RXD0 (GPIO 3) | Amarelo | Recepção de Dados | Ligação cruzada: TX do gravador no RX da placa |
| RXD (Recepção) | TXD0 (GPIO 1) | Verde | Envio de Telemetria | Ligação cruzada: RX do gravador no TX da placa |
Procedimento para entrar em Modo Bootloader (Download Boot):
- Conecte os pinos do gravador à placa com a alta tensão AC das cargas totalmente desligada;
- Conecte o cabo USB do conversor ao computador;
- Pressione e mantenha pressionado o botão físico BOOT / IO0 (GPIO 0) da placa;
- Pressione e solte o botão EN / RST (ou desligue e religue o pino de alimentação mantendo BOOT pressionado);
- Solte o botão BOOT;
- 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:
- Acesse Arquivo > Preferências e inclua a URL de pacotes ESP32:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - No menu Ferramentas > Placa > Gerenciador de Placas, instale o pacote esp32 da Espressif;
- Selecione a placa: Ferramentas > Placa > ESP32 Arduino > ESP32 Dev Module;
- Configure a velocidade de upload em
115200ou921600; - 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-RB2555e abra no navegadorhttp://192.168.4.1/api/toggle?ch=1para comutar o Relé 1, ouhttp://192.168.4.1/api/statuspara 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:
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.