IO EZATA INDUSTRIAL IoT SOLUTIONS
FIRMWARE v1.4.4 — COBRATEC SERIES
PUMP CTRL
Controlador de Bomba Industrial
ESP32-C3 Mini Display LCD 4×20 DS3231 RTC MQTT / Home Assistant
00
Índice
01Visão Geral do Sistema 02Hardware e Conexões 03Display LCD 4×20 04Botões de Controle 05Programação por Botões 06Configuração pelo Hotspot 07Gerenciamento de Horário 08MQTT e Home Assistant 09Relé e Motor 10Referência Rápida
01
Visão Geral do Sistema

O PUMP CTRL é um controlador inteligente de bomba d'água desenvolvido pela EZATA IO para automação industrial e residencial. Permite programar até 4 agendamentos independentes de liga/desliga com precisão de minuto, integração com Home Assistant via MQTT e configuração remota pelo smartphone.

⚙️
Funcionalidades Principais
  • 4 programas de agendamento independentes (P1–P4)
  • Ativação/desativação individual por programa
  • Controle manual imediato pelo botão
  • Display LCD 4×20 com indicação em tempo real
  • Hotspot Wi-Fi para configuração via browser
  • Sincronização de horário via NTP (servidor brasileiro)
  • RTC DS3231 mantém a hora mesmo sem internet
  • Integração MQTT com auto-discovery no Home Assistant
  • Relé de saída para acionamento do motor
🔧
Especificações Técnicas
  • Microcontrolador: ESP32-C3 Mini
  • Display: LCD 20×4 caracteres I²C
  • RTC: DS3231 I²C com bateria CR2032
  • Relé: saída digital GPIO10
  • Botão A: GPIO2 (horas / ligar)
  • Botão B: GPIO3 (minutos / desligar)
  • Comunicação: Wi-Fi 2.4 GHz
  • Protocolo IoT: MQTT 3.1.1
  • Firmware: COBRATEC v1.4.4
02
Hardware e Conexões

Pinagem — ESP32-C3 Mini

GPIOFunçãoComponenteObservação
GPIO 8SDALCD I²C + DS3231Barramento I²C compartilhado
GPIO 9SCLLCD I²C + DS3231Barramento I²C compartilhado
GPIO 2BTN_ABotão Hora / LigarPull-up interno, ativo em LOW
GPIO 3BTN_BBotão Minuto / DesligarPull-up interno, ativo em LOW
GPIO 10RELAYMódulo ReléHIGH = motor ligado
3.3V / GNDAlimentaçãoLCD, DS3231Módulos I²C em 3.3V
⚠️
Atenção:

O LCD PCF8574 pode ser alimentado em 5V, porém as linhas SDA/SCL devem operar em 3.3V para compatibilidade com o ESP32-C3. Utilize módulo com level shifter caso necessário.

ℹ️
Relé invertido:

Caso o módulo de relé opere com lógica invertida (LOW=ligado), altere a constante RELAY_ACTIVE_HIGH para 0 no firmware.

03
Display LCD 4×20

O display exibe permanentemente o estado do sistema em 4 linhas de 20 caracteres cada.

Layout — Modo Normal (IDLE)

P1*ON OFF 08:00 12:00 ENGINE WIFI TIME ON 87 14:35
LinhaPosiçãoConteúdoDescrição
L0Col 0–1P#Número do programa exibido (P1 a P4)
L0Col 2* ou espaço* = programa ativo | espaço = inativo
L0Col 3–4ONRótulo fixo do horário de ligar
L0Col 12–14OFFRótulo fixo do horário de desligar
L1Col 3–7HH:MMHorário programado de LIGAR
L1Col 14–18HH:MMHorário programado de DESLIGAR
L2Toda linhaRótulos fixosENGINE / WIFI / TIME
L3Col 2–4ON / OFFEstado atual do motor / relé
L3Col 9–11000–100 / ---Sinal Wi-Fi em % (--- = sem conexão)
L3Col 15–19HH:MMHorário atual (NTP ou RTC)

Indicadores Visuais na Linha 0

💡
Indicador de Programa
P1*Programa 1 — ATIVO
P2 Programa 2 — INATIVO
   P# piscando = seleção em curso
✏️
Cursor de Edição
>ONEditando horário de LIGAR
>OFFEditando horário de DESLIGAR
O cursor > pisca em 1 Hz durante a edição
04
Botões de Controle
🅰️
Botão A — GPIO2

Botão de horas. Usado para ligar o motor no modo normal e incrementar horas durante a programação.

  • Toque curto — liga motor / incrementa horas
  • Pressionar 2 s — entra/sai da seleção de programa
  • Manter pressionado — auto-incremento de horas (modo prog)
🅱️
Botão B — GPIO3

Botão de minutos. Usado para desligar o motor no modo normal e incrementar minutos durante a programação.

  • Toque curto — desliga motor / incrementa minutos
  • Pressionar 1 s em SEL — ativa/desativa programa
  • Manter pressionado — auto-incremento de minutos (modo prog)

Resumo de Ações por Modo

ModoBotão A (curto)Botão B (curto)A longo (2s)B longo (1s)A+B simult.
IDLE Liga motor Desliga motor Entra SEL_PRG Entra PROG_ON
SEL_PRG Cicla P1→P4 Volta IDLE (salva) Ativa/desativa prog. Entra PROG_ON
PROG_ON +1 hora (ON) +1 min (ON) Avança PROG_OFF
PROG_OFF +1 hora (OFF) +1 min (OFF) Salva e volta IDLE
Auto-repeat:

Manter o Botão A ou B pressionado por mais de 700 ms ativa o incremento automático a cada 80 ms. Disponível apenas nos modos PROG_ON e PROG_OFF.

05
Programação por Botões

Passo 1 — Selecionar o Programa

1
Entrar no modo de seleção
Pressione e segure o BTN A por 2 segundos. O display exibirá o número do programa piscando.
2
Escolher o programa (P1 a P4)
Pressione BTN A rapidamente para ciclar entre P1 → P2 → P3 → P4 → P1...
3
Ativar ou desativar o programa
Pressione e segure o BTN B por 1 segundo para alternar o estado ativo/inativo. O símbolo * na linha 0 indica programa ativo.

Passo 2 — Programar Horário de LIGAR (ON)

1
Entrar no modo PROG_ON
Com o programa selecionado, pressione BTN A + BTN B simultaneamente. O cursor > aparece antes de "ON" no display.
2
Ajustar as horas
Pressione BTN A para incrementar +1 hora. Mantenha pressionado para incremento automático.
3
Ajustar os minutos
Pressione BTN B para incrementar +1 minuto. Mantenha pressionado para incremento automático.

Passo 3 — Programar Horário de DESLIGAR (OFF)

1
Avançar para PROG_OFF
Pressione BTN A + BTN B simultaneamente. O cursor > move-se para "OFF".
2
Ajustar horas e minutos do OFF
Use BTN A para horas e BTN B para minutos, da mesma forma que o ON.
3
Salvar e sair
Pressione BTN A + BTN B simultaneamente. A programação é salva automaticamente na memória não-volátil e o sistema retorna ao modo IDLE.
⚠️
Importante:

O acionamento manual do motor pelos botões (ligar/desligar) não altera a programação agendada em andamento. Os agendamentos continuam funcionando normalmente.

Exemplo Visual — Programar P1: ligar às 07:30, desligar às 11:00

>ON OFF 07:30 11:00 ENGINE WIFI TIME OFF 87 07:12
06
Configuração pelo Hotspot

O PUMP CTRL mantém um ponto de acesso Wi-Fi permanente que permite configurar todos os parâmetros do sistema sem necessidade de cabo USB ou software especial.

Como Acessar o Portal

1
Conectar ao Hotspot
No smartphone ou computador, conecte à rede Wi-Fi "PUMP CTRL" com a senha 12345678.
2
Abrir o Portal
O portal abrirá automaticamente (captive portal). Caso não abra, digite http://192.168.4.1 no browser.
3
Configurar e Salvar
Preencha os campos desejados e clique em "SALVAR". Alterações nos programas são aplicadas instantaneamente sem reiniciar.

Campos Disponíveis no Portal

SeçãoCampoDescriçãoReinicia?
Rede WiFiSSIDNome da rede Wi-Fi localSIM
SenhaSenha da rede Wi-Fi (campo em branco = mantém atual)SIM
MQTTHost / IPEndereço do broker MQTTSIM
PortaPorta TCP do broker (padrão: 1883)SIM
UsuárioUsuário de autenticação MQTTSIM
Senha MQTTSenha MQTT (campo em branco = mantém atual)SIM
P1–P4ONHorário de ligar no formato HH:MMNÃO
OFFHorário de desligar no formato HH:MMNÃO
AtivoCheckbox — habilita ou desabilita o programaNÃO
Sem reinicialização:

Alterações nos programas P1–P4 (horários e ativação) são aplicadas imediatamente e salvas na memória permanente sem reiniciar o dispositivo. O display é atualizado em até 500ms.

⚠️
Hotspot simultâneo:

O hotspot permanece ativo mesmo quando o dispositivo está conectado à rede Wi-Fi local. É possível acessar o portal de configuração a qualquer momento sem interromper a operação normal.

07
Gerenciamento de Horário

O sistema utiliza três fontes de tempo em ordem de prioridade para garantir que o horário seja sempre preciso e disponível.

🕐
Hierarquia de Sincronização
PrioridadeFonteCondição
Servidor NTP (pool.ntp.org / time.google.com) Conexão com internet disponível
Módulo RTC DS3231 (I²C) Internet indisponível ou no boot
Soft RTC (millis interno) Mantém continuidade entre sincronizações

Comportamentos de Sincronização

SituaçãoComportamento
Boot com DS3231 válidoHora restaurada imediatamente do RTC antes de conectar ao Wi-Fi
Conexão com internet estabelecidaNTP sincroniza e atualiza o DS3231 automaticamente
Internet cai durante operaçãoSoft RTC continua com base no millis() — hora preservada
Internet retornaNTP ressincroniza e corrige qualquer drift no DS3231
Dispositivo desligado e religadoDS3231 (bateria CR2032) fornece a hora correta imediatamente
Sem internet e sem DS3231 válidoDisplay exibe --:-- — agendamentos aguardam sincronização
ℹ️
Fuso horário:

Configurado para BRT3 (UTC-3) — Brasília/Rio de Janeiro, sem horário de verão (abolido no Brasil desde 2019).

08
MQTT e Home Assistant

O PUMP CTRL publica e recebe dados via MQTT e registra automaticamente 21 entidades no Home Assistant através do protocolo de auto-discovery.

Tópicos de Status (publicados pelo dispositivo)

TópicoValoresDescrição
pump_ctrl/statusonline / offlineDisponibilidade do dispositivo (LWT)
pump_ctrl/engine/stateON / OFFEstado atual do motor/relé
pump_ctrl/timer/on_rem0–86400Segundos restantes do ciclo ativo
pump_ctrl/current_prgP1–P4Programa exibido/ativo no momento
pump_ctrl/wifi/signal0–100Sinal Wi-Fi em percentual
pump_ctrl/prg/N/onHH:MMHorário de ligar do programa N (0–3)
pump_ctrl/prg/N/offHH:MMHorário de desligar do programa N
pump_ctrl/prg/N/activeON / OFFEstado ativo/inativo do programa N

Tópicos de Comando (enviados ao dispositivo)

TópicoPayloadAção
pump_ctrl/engine/setON / OFFLiga ou desliga o motor imediatamente
pump_ctrl/prg/N/on_setHH:MMDefine horário de ligar do programa N
pump_ctrl/prg/N/off_setHH:MMDefine horário de desligar do programa N
pump_ctrl/prg/N/active_setON / OFFAtiva ou desativa o programa N

Entidades Auto-Discovery no Home Assistant

Motor
switch
pump_ctrl/engine/state
Tempo Restante
sensor
pump_ctrl/timer/on_rem
Programa Ativo
sensor
pump_ctrl/current_prg
WiFi Sinal
sensor
pump_ctrl/wifi/signal
P1–P4 Ativo
switch ×4
pump_ctrl/prg/N/active
P1–P4 Hora ON
sensor ×4
pump_ctrl/prg/N/on
P1–P4 Hora OFF
sensor ×4
pump_ctrl/prg/N/off
P1–P4 Set ON
text ×4
pump_ctrl/prg/N/on_set
P1–P4 Set OFF
text ×4
pump_ctrl/prg/N/off_set

N = 0 (P1), 1 (P2), 2 (P3), 3 (P4)

09
Relé e Motor

O relé é acionado em todos os eventos de liga/desliga do motor, independente da origem do comando.

Fontes de Acionamento do Relé

OrigemLigaDesliga
Botão A (manual)✔ Aciona RELAY_ON
Botão B (manual)✔ Aciona RELAY_OFF
Agendamento ON (scheduler)✔ Aciona RELAY_ON
Agendamento OFF (scheduler)✔ Aciona RELAY_OFF
Countdown zerado✔ Aciona RELAY_OFF
Comando MQTT engine/set ON✔ Aciona RELAY_ON
Comando MQTT engine/set OFF✔ Aciona RELAY_OFF
Boot / reinicialização✔ RELAY_OFF garantido
⚠️
Segurança no boot:

Ao inicializar, o relé é forçado para o estado desligado antes de qualquer outra ação, prevenindo acionamentos inadvertidos durante a inicialização do sistema.

10
Referência Rápida
📶
Acesso ao Hotspot
RedePUMP CTRL
Senha12345678
Portalhttp://192.168.4.1
🔧
Identificação MQTT
Client IDpump_ctrl_01
LWT Topicpump_ctrl/status
Buffer1024 bytes

Sequência Completa de Programação via Botões

// 1. Manter BTN-A 2s → entra SEL_PRG P2 ON OFF ← P2 piscando // 2. BTN-B 1s → ativa P2 (* aparece) P2*ON OFF // 3. BTN-A + BTN-B → PROG_ON (cursor >ON) >ON OFF 06:00 00:00 // 4. BTN-A + BTN-B → PROG_OFF (cursor >OFF) ON >OFF 06:00 10:30 // 5. BTN-A + BTN-B → IDLE (salvo!) P2*ON OFF 06:00 10:30
💾
Persistência:

Todos os programas são salvos na memória NVS (não-volátil) do ESP32 e restaurados automaticamente após qualquer desligamento ou reinicialização, sem necessidade de reconfigurar.

```