Placa Desenvolvimento Wi-Fi IoT ESP32 2 Canais Relé 10A RB2558: Manual Técnico Completo

Introdução
Neste manual, será apresentado como instalar, configurar e utilizar a Placa Desenvolvimento Wi-Fi IoT ESP32 2 Canais Relé 10A (RB2558). Se desejar adquirir este produto, clique aqui.
A placa controladora RB2558 (identificada na engenharia pelos códigos ESP32_Relay_X2 e 303E32DC210) é uma plataforma compacta de automação residencial, predial e industrial que integra o microcontrolador ESP32-WROOM-32 / ESP32-WROOM-32E (Dual-Core 32 bits até 240 MHz com Wi-Fi e Bluetooth integrados) a 2 canais independentes de relé eletromecânico selado SONGLE SRD-05VDC-SL-C de 10A. Projetada para substituir montagens frágeis em protoboards por uma única placa de circuito impresso de padrão industrial com rasgo fresado de isolamento elétrico, a RB2558 incorpora estágio regulador step-down para alimentação direta de 7V a 30V DC (ou entrada dedicada de 5V DC) via borne parafusável e exposição completa das portas GPIO para acoplamento de sensores e barramentos externos.
Especificações técnicas
Principais especificações
| Parâmetro | Especificação Técnica |
|---|---|
| Identificador Comercial | Placa Desenvolvimento Wi-Fi IoT ESP32 2 Canais Relé 10A (SKU: RB2558) |
| Modelo da Placa Base / Revisão | ESP32_Relay_X2 (303E32DC210) |
| Microcontrolador Principal | ESP32-WROOM-32 / ESP32-WROOM-32E (Espressif Systems) |
| Arquitetura do Processador | Dual-Core 32-bit Xtensa® LX6 operando a até 240 MHz |
| Memória Flash Integrada | 4 MB (SPI Flash) |
| Memória SRAM Interna | 520 KB |
| Conectividade Sem Fio | Wi-Fi 802.11 b/g/n (2,4 GHz) e Bluetooth v4.2 BR/EDR + BLE |
Tensão de Entrada Ampla (Borne VCC) | 7 VDC a 30 VDC (conversor regulador step-down integrado) |
Tensão de Entrada Direta (Borne 5V) | 5 VDC regulados (terminal separado no borne de 3 vias) |
| Tensão Lógica de Operação | 3,3 VDC (regulador linear AMS1117-3.3 onboard) |
| Relés de Potência Onboard | 2 Canais Independentes SONGLE SRD-05VDC-SL-C (bobina de 5V DC) |
| Pinos de Controle dos Relés | GPIO 16 (Relé 1 — K1) e GPIO 17 (Relé 2 — K2), lógica Active HIGH |
| Capacidade dos Contatos (AC) | 10A em 250V AC / 10A em 125V AC por canal (carga resistiva) |
| Capacidade dos Contatos (DC) | 10A em 30V DC / 10A em 28V DC por canal (carga resistiva) |
| Configuração dos Contatos | 2 Blocos SPDT independentes: Canal 1 (NC1, COM1, NO1) e Canal 2 (NC2, COM2, NO2) |
| Sinalização Visual Onboard | LED de Alimentação + LED Programável no GPIO 23 + LEDs individuais dos relés K1 e K2 |
Interface de Gravação (P4) | Barra UART de 6 pinos passo 2,54 mm (IO0, GND, GND, RX, TX, 5V) — sem porta USB onboard |
| Botões Físicos Onboard | EN (Reset de hardware) e IO0 (Bootloader / Botão de usuário no GPIO 0) |
| Pinos de GPIO Expandidos | 16 GPIOs I/O bidirecionais livres + 2 entradas puras (GPIO 34 e GPIO 35) |
| Dimensões Físicas () | ~74,3 × 48,1 × 19 mm (4 furos de fixação nos cantos, massa ~40 g) |
Características elétricas e operacionais
A placa RB2558 incorpora um conversor abaixador chaveado (buck) composto por indutor SMD blindado (470), diodo retificador Schottky de comutação rápida e capacitores eletrolíticos de filtragem, seguido por um regulador linear AMS1117-3.3 dedicado ao barramento lógico do ESP32. Esse arranjo em duplo estágio mantém o microcontrolador estável mesmo durante o chaveamento simultâneo das duas bobinas e picos de transmissão de rádio Wi-Fi.
- Consumo de corrente em repouso (Wi-Fi ativo, ambos os relés desligados): ~40 mA a 70 mA em 5V (~25 mA a 40 mA em 12V DC);
- Consumo nominal por bobina de relé: ~70 mA a 80 mA em 5V DC por canal acionado;
- Consumo com os 2 relés atracados simultaneamente + Wi-Fi em transmissão: ~200 mA a 250 mA em 5V (~95 mA a 130 mA em 12V DC);
- Corrente máxima por pino GPIO (expansão): 12 mA recomendados (limite absoluto de 40 mA em 3,3V);
- Tempo de comutação mecânica dos relés: fechamento (operate time) em ~10 ms e abertura (release time) em ~5 ms;
- Isolamento físico na PCB: rasgo fresado no circuito impresso entre o módulo de radiofrequência ESP32 e o bloco dos relés de potência para mitigação de ruído eletromagnético e aumento da distância de escoamento (creepage);
- Temperatura de operação: -20 °C a +70 °C (umidade relativa de 5% a 90% sem condensação);
- Vida útil dos contatos: mínimo de 10.000.000 de manobras mecânicas em vazio e 100.000 ciclos sob carga resistiva nominal.
Descrição do produto
O que é a Placa Desenvolvimento Wi-Fi IoT ESP32 2 Canais Relé 10A (RB2558)?
A Placa ESP32 com 2 Relés RB2558 (ESP32_Relay_X2 / 303E32DC210) é uma controladora embarcada all-in-one que unifica processamento de 32 bits, conectividade sem fio Wi-Fi/BLE e duplo estágio de chaveamento eletromecânico em um único PCB compacto de dupla face. Cada canal de saída dispõe de transistor driver dedicado, diodo de roda-livre (flyback) em antiparalelo com a bobina de 5V, LED indicador de atracamento e borne parafusável de três vias com contatos secos reversores Comum (COM), Normalmente Aberto (NO) e Normalmente Fechado (NC).
Para máxima versatilidade em projetos de Internet das Coisas e telemetria industrial, a placa posiciona a antena impressa do módulo ESP32-WROOM-32E na extremidade oposta aos bornes de carga — minimizando interferências de RF — e expõe duas fileiras laterais de furos metalizados com passo de 2,54 mm (identificados na face inferior da placa), permitindo acoplar sensores digitais, transdutores analógicos, displays I2C/SPI e interfaces RS-485. De fábrica, a placa vem gravada com uma rotina inicial de autoteste das bobinas: ao ser energizada pela primeira vez, ela liga e desliga os relés de forma ininterrupta (comutação cíclica contínua), interrompendo esse ciclo imediatamente quando colocada em modo de gravação serial ao manter pressionado o botão IO0 (BOOT) durante a energização ou reset.
Para que serve?
- Comutação independente ou intertravada de 2 circuitos elétricos AC ou DC de até 10A (iluminação dupla, fechaduras eletromagnéticas + portão eletrônico, válvulas solenoides de irrigação, ventiladores, exaustores e aquecedores compactos);
- Desenvolvimento de controladores IoT autônomos compatíveis com Arduino IDE, PlatformIO, ESP-IDF, ESPHome, Tasmota, Home Assistant, Node-RED e brokers MQTT/HTTP REST;
- Automação embarcada com sensoriamento local, utilizando as 16 GPIOs bidirecionais livres e 2 entradas analógicas puras para monitorar temperatura, umidade, fim de curso, nível de reservatórios e botões de parede em paralelo com os relés.
Por que devo usar?
- Duplo canal independente com isolamento físico na PCB: integra dois relés de 10A com contatos secos reversores (
NO,COM,NC) e rasgo fresado de isolamento entre a seção de potência e o módulo Wi-Fi/BLE; - Alimentação industrial flexível (7V a 30V DC ou 5V DC): aceita fontes chaveadas padrão de painéis elétricos de 12V ou 24V DC no borne
VCCsem necessidade de reguladores externos adicionais; - Barramento GPIO integralmente acessível e botões dedicados
IO0+EN: diferentemente de módulos simplificados de 1 botão, conta com chaves táteis independentes para Reset (EN) e Boot/Usuário (IO0), agilizando gravações seriais e rotinas de diagnóstico.
Quando devo usar?
A placa RB2558 é ideal quando o projeto exige o acionamento independente de 2 cargas elétricas de até 10A (ou o controle reversível de um atuador DC/motor de persiana usando par de relés SPDT) aliado a processamento Wi-Fi/Bluetooth e expansão de sensores em espaço reduzido.
Quando avaliar outras soluções do catálogo RoboBuilders:
- Apenas 1 carga de até 10A com alimentação rápida via cabo Micro-USB: opte pela Placa ESP32 com 1 Relé RB2557;
- 2 cargas pesadas acima de 10A ou motores indutivos de partida severa (até 30A por canal): utilize a Placa ESP32 com 2 Relés de 30A RB2555 (com isolamento por optoacopladores e relés
SLA-05VDC-SL-C) ou comute a bobina de contatores auxiliares externos através da RB2558; - Quadros multicanais com até 8 circuitos de 10A: utilize a Placa ESP32 com 8 Relés RB2559;
- Chaveamento silencioso em alta frequência ou controle proporcional PWM: utilize relés de estado sólido (SSR) ou módulos MOSFET, pois relés eletromecânicos possuem limite mecânico de comutação.
Pinout e diagrama de entradas/saídas
A placa RB2558 organiza seus conectores em bornes de parafuso para alimentação e potência, um barramento serial P4 de 6 pinos para gravação UART e duas fileiras laterais de GPIOs (cuja serigrafia detalhada encontra-se impressa no verso da PCB):
| Terminal / Periférico | Identificação na Placa | Pino ESP32 | Direção / Tipo | Nível Elétrico / Lógica | Função Detalhada |
|---|---|---|---|---|---|
| Alimentação Ampla | Borne VCC | — | Entrada DC | 7 V a 30 V DC | Entrada principal conectada ao conversor step-down |
| Terra de Alimentação | Borne GND | — | Referência | 0 V | Terra comum da fonte DC e da lógica da placa |
| Alimentação 5V | Borne 5V | — | Entrada DC | 5 V DC regulados | Entrada alternativa direta de 5V (não usar junto com VCC) |
Relé 1 (K1) | Bornes NC1 / COM1 / NO1 | GPIO 16 | Saída Digital | Active HIGH (3,3V liga) | Aciona a bobina do Relé 1 (borne externo superior) |
Relé 2 (K2) | Bornes NC2 / COM2 / NO2 | GPIO 17 | Saída Digital | Active HIGH (3,3V liga) | Aciona a bobina do Relé 2 (borne interno superior) |
| LED Onboard | LED de Status | GPIO 23 | Saída Digital | Active HIGH (3,3V acende) | Sinalização luminosa programável pelo usuário |
| Botão Boot / Usuário | Chave tátil IO0 | GPIO 0 | Entrada Pull-Up | Active LOW (0V pressionado) | Seleção de modo Download Bootloader e entrada tátil |
| Botão Reset | Chave tátil EN | CHIP_PU (EN) | Reset Hardware | Active LOW | Reinicialização física imediata do microcontrolador |
Header Serial P4 | IO0 | GND | GND | RX | TX | 5V | GPIO 3 (RX) / GPIO 1 (TX) | UART0 TTL | Nível lógico 3,3 V | Gravação de firmware e monitor serial via conversor externo |
| Grade de GPIOs Livres | Fileiras laterais 2,54 mm | 2, 4, 5, 12, 13, 14, 15, 18, 19, 21, 22, 25, 26, 27, 32, 33 | I/O Configurável | 3,3 V TTL | Barramentos I2C (21/22), SPI, PWM, ADC e entradas/saídas digitais |
| Entradas Puras | Fileiras laterais 2,54 mm | GPIO 34 e GPIO 35 | Input-Only (ADC1) | 0 V a 3,3 V | Apenas leitura digital/analógica (sem pull-up/pull-down interno) |
💡 Dica de Hardware: O conector de gravação
P4de 6 pinos (IO0,GND,GND,RX,TX,5V) não segue a ordem direta de um adaptador FTDI padrão. Sempre utilize cabos jumpers fêmea-fêmea individuais conferindo a serigrafia de cada pino antes de energizar.
Como fazer a ligação
Requisitos de instalação e alimentação
- Escolha exclusiva da fonte DC (Borne de 3 vias
VCC / GND / 5V): alimente a placa aplicando 7V a 30V DC (recomendado: fonte chaveada estabilizada de 12V DC / 1A ou 24V DC / 1A) entre os bornesVCCeGND, ou aplicando 5V DC / 1A estabilizados entre5VeGND. Nunca conecte fontes nos terminaisVCCe5Vao mesmo tempo. - Dimensionamento dos cabos de carga: para cargas em 127V/220V AC ou até 30V DC com correntes até 10A por canal, utilize condutores flexíveis de cobre de 1,5 mm² com terminais tubulares tipo ilhós prensados, garantindo contato firme nos parafusos dos bornes
COM,NOeNC. - Derivação de Fase para os dois canais: quando ambos os relés comandarem equipamentos alimentados pelo mesmo circuito monofásico, proteja a linha com disjuntor compatível (máx. 10A por canal) e derive o condutor Fase (L) para os terminais comuns
COM1eCOM2, levando o Neutro (N) diretamente às cargas sem passar pela placa.
Diagrama de ligação elétrica
O esquema a seguir demonstra a montagem elétrica completa: alimentação contínua de 12V DC nos bornes VCC e GND da placa RB2558 e acionamento independente de duas cargas em corrente alternada (Carga 1 no Canal K1 / GPIO 16 e Carga 2 no Canal K2 / GPIO 17), seccionando exclusivamente o condutor Fase (L) através dos contatos normalmente abertos NO1 e NO2, enquanto o Neutro (N) segue diretamente da rede elétrica para as cargas:

Tabela de conexões dos terminais
A tabela abaixo detalha o mapeamento ponto a ponto sincronizado com o diagrama elétrico e o padrão de cores da norma NBR 5410:
| Terminal de Origem | Terminal de Destino (RB2558 / Cargas) | Cor Sugerida do Fio | Tipo de Sinal | Observação Técnica |
|---|---|---|---|---|
| Fonte 12V DC (+) | Borne VCC (Placa RB2558) | Vermelho | Alimentação DC (+12V) | Aceita faixa contínua de 7V a 30V DC |
| Fonte 12V DC (-) | Borne GND (Placa RB2558) | Preto | Terra comum (0V DC) | Referência negativa da eletrônica e fonte |
| Rede AC (Fase - L) | Bornes COM1 e COM2 (Placa RB2558) | Marrom (ou Preto) | Fase AC (127V / 220V) | Entra nos terminais Comuns dos relés K1 e K2 |
| Borne NO1 (Relé K1) | Terminal 1 da Carga 1 (Iluminação) | Vermelho (ou Cinza) | Retorno Chaveado K1 | Conduz a Fase quando GPIO 16 = HIGH |
| Borne NO2 (Relé K2) | Terminal 1 da Carga 2 (Exaustor) | Laranja (ou Amarelo) | Retorno Chaveado K2 | Conduz a Fase quando GPIO 17 = HIGH |
| Rede AC (Neutro - N) | Terminal 2 das Cargas 1 e 2 | Azul Claro | Neutro AC | Vai direto da rede para as cargas (não entra na placa) |
| Bornes NC1, NC2 e 5V | Deixar sem conexão | — | Terminais Livres | NC usados apenas em lógica NF; 5V livre ao usar VCC |
💡 Dica para Cargas DC (12V / 24V): Os contatos dos relés
K1eK2são contatos secos (eletricamente isolados da alimentação da placa). Você pode chavear perfeitamente uma fita LED 12V no Canal 1 e uma fechadura 12V DC ou carga 220V AC no Canal 2 de maneira 100% independente.
Cuidados e observações de segurança
💡 Dica: Ao acionar solenoides, fechaduras eletromagnéticas ou motores DC nos contatos dos relés, instale um diodo retificador (
1N4007) em antiparalelo sobre os terminais da carga DC. Para cargas indutivas AC (exaustores, contatores e pequenos motores), instale um filtro Snubber RC (100 Ω + 100 nF / 400V AC) em paralelo com os bornesCOMeNO.
⚠️ Atenção: Todos os pinos de dados e programação do ESP32 operam exclusivamente em 3,3V. Ao conectar um conversor USB-Serial externo no barramento
P4, certifique-se de que o jumper de nível lógicoTX/RXdo conversor esteja ajustado em 3,3V (mesmo que você utilize a linha de5Vapenas para alimentar o pino5Vda placa em bancada).
⛔ Perigo: Tensões de rede elétrica (127V / 220V AC) oferecem risco de choque elétrico fatal. Nunca conecte o conversor USB-Serial ao computador enquanto houver cabos de rede AC energizados nos bornes dos relés. Desligue sempre o disjuntor geral antes de parafusar condutores ou manusear a placa.
Como usar
Guia de operação passo a passo
Ao energizar uma placa RB2558 nova pela primeira vez, você notará que os relés ficam ligando e desligando de forma ininterrupta. Esse comportamento corresponde ao programa básico de teste gravado de fábrica na memória Flash. Assim que a placa é colocada no Modo de Gravação (Download Bootloader) mantendo o botão IO0 (BOOT) pressionado ao ligar a energia (ou ao pulsar o botão EN), o ciclo de batimento dos relés cessa imediatamente e o microcontrolador aguarda o recebimento do seu novo código.
Como a placa RB2558 (ESP32_Relay_X2) não possui conversor USB-Serial soldado na PCB, a programação é realizada através de um módulo conversor USB-Serial externo (CP2102, FT232RL, CH340 ou PL2303) ligado ao barramento P4 de 6 pinos:
- Conexão do conversor USB-Serial ao Header
P4(com tudo desligado):- Ligue o GND do conversor a um dos pinos GND do conector
P4da placa RB2558 (referência obrigatória); - Ligue o TXD (Transmissão) do conversor ao pino RX (
RXD0/ GPIO 3) da placa (ligação cruzada); - Ligue o RXD (Recepção) do conversor ao pino TX (
TXD0/ GPIO 1) da placa (ligação cruzada); - Ligue o pino 5V do conversor ao pino 5V do conector
P4para energizar a placa e os relés durante o teste de bancada (com o nível lógico serial do conversor configurado em 3,3V).
- Ligue o GND do conversor a um dos pinos GND do conector
- Entrada no Modo de Gravação (Download Bootloader):
- Pressione e mantenha pressionado o botão
IO0(BOOT / GPIO 0) na placa RB2558 (ou feche temporariamente um jumper entre os pinosIO0eGNDdo headerP4); - Conecte o conversor USB na porta do computador (ou, se a placa já estiver energizada com os relés batendo, dê um clique rápido no botão
EN(Reset) enquanto mantémIO0pressionado); - Os relés pararão de comutar imediatamente. Aguarde cerca de 2 segundos e solte o botão
IO0— o ESP32 estará pronto para receber a gravação via serial.
- Pressione e mantenha pressionado o botão
- Compilação e Upload do Firmware:
- Na Arduino IDE, selecione Ferramentas > Placa > ESP32 Arduino > ESP32 Dev Module, escolha a porta COM do conversor e clique em Carregar (Upload);
- No PlatformIO CLI, execute
pio run --target upload(oupio run -t upload --upload-port COM3).
- Reinicialização e Execução Normal:
- Assim que o
esptoolexibir[SUCCESS], remova eventual jumper do pinoIO0e pressione uma vez o botãoEN(Reset) (ou faça um ciclo de energia Power Cycle) para iniciar o novo programa gravado.
- Assim que o
Modos de operação e ajustes
No ambiente PlatformIO, utilize a seguinte configuração padrão no arquivo platformio.ini para compilar e gravar seus projetos na RB2558:
; Configuração PlatformIO para a placa RB2558 (ESP32_Relay_X2)
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 460800
Principais comandos via terminal PlatformIO Core (CLI):
pio run # Compilar o firmware
pio run -t upload # Gravar na porta detectada automaticamente
pio run -t upload --upload-port COM3 # Gravar especificando a porta COM manualmente
pio device monitor # Abrir o Monitor Serial (115200 bps)
Exemplos práticos de uso
Exemplo 1: Acionamento alternado dos 2 relés e LED com temporização não-bloqueante
Este código demonstra o controle independente do Relé 1 (GPIO 16), do Relé 2 (GPIO 17) e do LED Onboard (GPIO 23) alternando estados a cada 3 segundos com millis(), além de permitir o desligamento imediato de emergência pelo botão físico IO0 (GPIO 0):
#include <Arduino.h>
// Mapeamento oficial de hardware da placa ROBOBUILDERS RB2558 (ESP32_Relay_X2)
const int PINO_RELE_1 = 16; // Canal 1 de potência K1 (NC1 / COM1 / NO1)
const int PINO_RELE_2 = 17; // Canal 2 de potência K2 (NC2 / COM2 / NO2)
const int PINO_LED = 23; // LED onboard programável de status
const int PINO_BOOT = 0; // Botão físico IO0 / BOOT (Active LOW)
unsigned long ultimoTempo = 0; // Armazena o instante da última comutação
const unsigned long INTERVALO_MS = 3000; // Intervalo de 3 segundos entre etapas
int etapaAtual = 0; // Máquina de estados: 0=Desligados, 1=K1, 2=K2, 3=Ambos
void aplicarEstados(bool k1, bool k2, bool led) {
digitalWrite(PINO_RELE_1, k1 ? HIGH : LOW); // Atualiza a bobina do Relé 1
digitalWrite(PINO_RELE_2, k2 ? HIGH : LOW); // Atualiza a bobina do Relé 2
digitalWrite(PINO_LED, led ? HIGH : LOW); // Atualiza o LED indicador GPIO 23
}
void setup() {
Serial.begin(115200); // Inicializa telemetria serial em 115200 bps
delay(500);
Serial.println("--- RoboBuilders RB2558: Teste Não-Bloqueante 2 Relés ---");
// Configura direção elétrica dos periféricos onboard
pinMode(PINO_RELE_1, OUTPUT);
pinMode(PINO_RELE_2, OUTPUT);
pinMode(PINO_LED, OUTPUT);
pinMode(PINO_BOOT, INPUT_PULLUP); // Habilita pull-up para leitura da chave IO0
// Garante estado inicial seguro (cargas desligadas no boot)
aplicarEstados(false, false, false);
Serial.println("Sistema pronto. Iniciando ciclo automático...");
}
void loop() {
unsigned long agora = millis(); // Captura o tempo atual sem travar a CPU
// Avança a máquina de estados a cada 3000 ms
if (agora - ultimoTempo >= INTERVALO_MS) {
ultimoTempo = agora;
etapaAtual = (etapaAtual + 1) % 4;
switch (etapaAtual) {
case 0:
aplicarEstados(false, false, false);
Serial.println("[Etapa 0] K1: DESLIGADO | K2: DESLIGADO");
break;
case 1:
aplicarEstados(true, false, true);
Serial.println("[Etapa 1] K1: LIGADO | K2: DESLIGADO");
break;
case 2:
aplicarEstados(false, true, true);
Serial.println("[Etapa 2] K1: DESLIGADO | K2: LIGADO");
break;
case 3:
aplicarEstados(true, true, true);
Serial.println("[Etapa 3] K1: LIGADO | K2: LIGADO");
break;
}
}
// Leitura instantânea do botão IO0 para corte manual imediato
if (digitalRead(PINO_BOOT) == LOW) {
etapaAtual = 0;
ultimoTempo = agora;
aplicarEstados(false, false, false);
Serial.println("[IO0 Pressionado] Ambos os relés foram desligados manualmente!");
delay(250); // Debounce simples de botão tátil
}
}
Exemplo 2: Servidor Web Wi-Fi autônomo com controle individual e pulso de 1s
Este exemplo cria um Ponto de Acesso Wi-Fi local (SoftAP) chamado RoboBuilders-RB2558. Ao conectar o celular ou computador e abrir http://192.168.4.1, um painel responsivo em modo escuro permite alternar individualmente os canais K1 e K2 ou disparar pulsos temporizados não-bloqueantes de 1 segundo:
#include <WiFi.h>
#include <WebServer.h>
const int PINO_RELE_1 = 16; // Relé 1 (K1)
const int PINO_RELE_2 = 17; // Relé 2 (K2)
const int PINO_LED = 23; // LED de Status
WebServer server(80); // Instancia servidor HTTP na porta padrão 80
bool estadoK1 = false;
bool estadoK2 = false;
unsigned long fimPulsoK1 = 0; // Temporizador de desligamento automático do pulso K1
unsigned long fimPulsoK2 = 0; // Temporizador de desligamento automático do pulso K2
void atualizarHardware() {
digitalWrite(PINO_RELE_1, estadoK1 ? HIGH : LOW);
digitalWrite(PINO_RELE_2, estadoK2 ? HIGH : LOW);
// Acende o LED onboard sempre que ao menos um canal estiver ativo
digitalWrite(PINO_LED, (estadoK1 || estadoK2) ? HIGH : LOW);
}
void enviarPaginaWeb() {
String html = "<!DOCTYPE html><html lang='pt-BR'><head>";
html += "<meta charset='UTF-8'><meta name='viewport' content='width=device-width,initial-scale=1.0'>";
html += "<title>Painel Web RB2558 - 2 Relés</title>";
html += "<style>";
html += "body{font-family:sans-serif;background:#121212;color:#f4f4f5;text-align:center;padding:1.5rem;margin:0;}";
html += "h1{color:#fa634f;margin-bottom:0.25rem;} .sub{color:#a1a1aa;margin-bottom:1.5rem;}";
html += ".grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;max-width:600px;margin:0 auto;}";
html += ".card{background:#1e1e24;padding:1.25rem;border-radius:12px;border:1px solid #2e2e38;}";
html += ".status{display:inline-block;padding:4px 10px;border-radius:999px;font-size:0.85rem;font-weight:bold;margin:8px 0 14px;}";
html += ".st-on{background:#14532d;color:#4ade80;} .st-off{background:#27272a;color:#a1a1aa;}";
html += ".btn{display:inline-block;padding:10px 16px;margin:4px;font-weight:bold;color:#fff;border-radius:8px;text-decoration:none;}";
html += ".on{background:#22c55e;} .off{background:#ef4444;} .pulse{background:#3b82f6;}";
html += "</style></head><body>";
html += "<h1>RoboBuilders RB2558</h1>";
html += "<p class='sub'>Controle Wi-Fi ESP32_Relay_X2 (2 Canais 10A)</p><div class='grid'>";
// Card Canal 1 (GPIO 16)
html += "<div class='card'><h2>Relé 1 (K1 - GPIO 16)</h2>";
html += "<span class='status " + String(estadoK1 ? "st-on'>LIGADO" : "st-off'>DESLIGADO") + "</span><br>";
html += "<a href='/toggle?ch=1' class='btn " + String(estadoK1 ? "off'>DESLIGAR" : "on'>LIGAR") + "</a>";
html += "<a href='/pulso?ch=1' class='btn pulse'>PULSO 1s</a></div>";
// Card Canal 2 (GPIO 17)
html += "<div class='card'><h2>Relé 2 (K2 - GPIO 17)</h2>";
html += "<span class='status " + String(estadoK2 ? "st-on'>LIGADO" : "st-off'>DESLIGADO") + "</span><br>";
html += "<a href='/toggle?ch=2' class='btn " + String(estadoK2 ? "off'>DESLIGAR" : "on'>LIGAR") + "</a>";
html += "<a href='/pulso?ch=2' class='btn pulse'>PULSO 1s</a></div>";
html += "</div></body></html>";
server.send(200, "text/html", html);
}
void setup() {
Serial.begin(115200);
pinMode(PINO_RELE_1, OUTPUT);
pinMode(PINO_RELE_2, OUTPUT);
pinMode(PINO_LED, OUTPUT);
atualizarHardware();
// Cria rede Wi-Fi autônoma (senha mínima de 8 caracteres)
WiFi.softAP("RoboBuilders-RB2558", "12345678");
Serial.print("Ponto de Acesso ativo! Acesse http://");
Serial.println(WiFi.softAPIP());
server.on("/", enviarPaginaWeb);
server.on("/toggle", []() {
int ch = server.arg("ch").toInt();
if (ch == 1) { estadoK1 = !estadoK1; fimPulsoK1 = 0; }
if (ch == 2) { estadoK2 = !estadoK2; fimPulsoK2 = 0; }
atualizarHardware();
server.sendHeader("Location", "/");
server.send(303);
});
server.on("/pulso", []() {
int ch = server.arg("ch").toInt();
if (ch == 1) { estadoK1 = true; fimPulsoK1 = millis() + 1000; }
if (ch == 2) { estadoK2 = true; fimPulsoK2 = millis() + 1000; }
atualizarHardware();
server.sendHeader("Location", "/");
server.send(303);
});
server.begin();
}
void loop() {
server.handleClient(); // Processa requisições HTTP dos navegadores conectados
// Verifica expiração de pulsos temporizados sem bloquear o loop
unsigned long agora = millis();
if (fimPulsoK1 > 0 && agora >= fimPulsoK1) {
fimPulsoK1 = 0;
estadoK1 = false;
atualizarHardware();
}
if (fimPulsoK2 > 0 && agora >= fimPulsoK2) {
fimPulsoK2 = 0;
estadoK2 = false;
atualizarHardware();
}
}
Projetos
Para implementar uma solução completa de controle e diagnóstico na sua placa RB2558 sem precisar desenvolver a interface do zero, confira o projeto oficial aberto disponibilizado pela RoboBuilders no GitHub:
- Documentação da Placa e Projeto Painel Web ROBOBUILDERS RB2558 (GitHub): repositório completo contendo o código-fonte de um servidor Web Wi-Fi com Portal Captivo (
ROBOBUILDERS-RB2558emhttp://192.168.4.1), interface responsiva em modo escuro (Dark Mode), acionamento direto e por pulso temporizado para os relés K1 (GPIO 16) e K2 (GPIO 17), monitoramento de entradas em tempo real, configuração dinâmica das 16 GPIOs livres e endpoints de API REST JSON (/api/status,/api/toggle,/api/pulse,/api/modee/api/all) prontos para compilar e gravar via PlatformIO.
Solução de problemas
| Sintoma | Causa Provável | Solução Recomendada |
|---|---|---|
| Os relés ficam ligando e desligando sem parar ao energizar a placa nova | Rotina de autoteste inicial gravada de fábrica na placa | Comportamento normal de fábrica. Para interromper o ciclo e gravar seu código, mantenha o botão IO0 (BOOT) pressionado ao energizar a placa (ou dê um clique em EN segurando IO0) para entrar em modo de gravação. |
Erro Timed out waiting for packet header durante a tentativa de gravação | O ESP32 não entrou no modo Download Bootloader | Mantenha o botão IO0 pressionado, dê um clique rápido no botão EN (Reset) e solte o IO0 antes de disparar o comando de upload na IDE. |
| Sem comunicação serial nem resposta no Monitor Serial | Cabos TX e RX invertidos ou ordem incorreta no conector P4 | Confira a serigrafia do header P4 (IO0 | GND | GND | RX | TX | 5V): ligue TXD do conversor ao RX da placa, RXD ao TX e una os GNDs. |
| O ESP32 reinicia (Brownout Detector) ao acionar os 2 relés juntos | Queda de tensão na linha de 5V por fonte fraca ou alimentação exclusiva pela USB do PC | Ao acionar K1 e K2 simultaneamente com Wi-Fi ativo, o pico supera 220 mA. Utilize fonte externa dedicada de 12V DC / 1A nos bornes VCC e GND. |
| O firmware antigo listava os relés nos GPIOs 25/26 e os canais não atracam | Código escrito para revisões antigas de outras placas genéricas | Na revisão oficial 303E32DC210 (RB2558), os relés estão mapeados estritamente em GPIO 16 (Relé 1) e GPIO 17 (Relé 2) em lógica Active HIGH. |
| Travamento esporádico do Wi-Fi ao desligar exaustores, solenoides ou contatores AC | Ruído eletromagnético e arco voltaico nos contatos mecânicos | Instale um circuito Snubber RC (100 Ω + 100 nF / 400V AC) em paralelo com os bornes COM e NO de cada canal indutivo (ou diodo 1N4007 em cargas DC). |
Conclusão
Este manual abordou de forma completa a Placa Desenvolvimento Wi-Fi IoT ESP32 2 Canais Relé 10A (RB2558), cobrindo desde suas especificações de engenharia até a instalação elétrica segura e programação embarcada:
- Especificações técnicas: arquitetura do módulo
ESP32-WROOM-32Ena placaESP32_Relay_X2(303E32DC210), entrada duplaVCC(7V a 30V DC) ou5Ve dois relés SONGLE de 10A (250V AC / 30V DC); - Descrição e pinout: mapeamento exato dos canais K1 (
GPIO 16) e K2 (GPIO 17), LED onboard (GPIO 23), chaves táteisIO0eEN, barramento UARTP4e 18 GPIOs de expansão; - Como fazer a ligação: diagrama elétrico ponto a ponto com fiação ortogonal NBR 5410 para acionamento seguro de duas cargas AC independentes, tabela de conexões sincronizada e proteções contra transientes indutivos;
- Como usar: comportamento do firmware inicial de autoteste, entrada no modo de gravação pressionando
IO0(BOOT), upload serial via conversor externo e exemplos completos em C++ para operação autônoma e servidor web Wi-Fi; - Projetos: projeto completo de Painel Web com Portal Captivo e API REST JSON disponível no repositório oficial da RoboBuilders no GitHub.
Combinando dois canais independentes de potência, alimentação industrial flexível e exposição integral das portas do ESP32 em dimensões reduzidas, a RB2558 consolida-se como uma solução versátil e confiável para desenvolvedores, integradores e projetos profissionais de automação e Internet das Coisas.
Solução de problemas
Olá! Sou o assistente técnico da RoboBuilders. Descreva seu problema com o Placa Desenvolvimento Wi-Fi IoT ESP32 2 Canais Relé 10A RB2558: 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.