Sensor de Portão ESP-NOW Solar Workbench
🛡️ Sentinel Core · Tier S (Health 99%) ● Autonomia Solar Ilimitada · Deep Sleep ~60µA

Sensor de Portão ESP-NOW Solar & IP66

Nó perimetral ultra-confiável alimentado por mini painel solar e bateria 18650 com recarga inteligente CN3065. Comunicação P2P ESP-NOW de latência sub-50ms com Gateway ESP32 conectado ao Home Assistant, MQTT e Telegram.

< 45 ms Latência de Disparo
~60 µA Corrente em Sleep
> 360 Dias Autonomia Sem Sol
150m+ Alcance RF ESP-NOW

📡 Arquitetura e Funcionamento do Sistema

Como o nó solar e o gateway residencial garantem confiabilidade militar e zero perda de eventos.

TOPOLOGIA DO SISTEMA:
 [PORTÃO EXTERNO - NÓ SOLAR IP66]                          [RESIDÊNCIA - GATEWAY ESP32]
 ┌───────────────────────────────────────────────┐          ┌────────────────────────────────────────────────┐
 │ Painel Solar 6V 1.5W ──► CN3065 (4.2V Carga) │          │ ESP32 WROOM-32 / 32U (Antena Externa)          │
 │ Bateria 18650 3000mAh ──► XIAO ESP32-C3       │          │   ├── GPIO 25 ──► Transistor BC547 + Buzzer 5V │
 │ PIR AM312 Mini (15µA) ──► D1 (GPIO 3 Wakeup)  │ ESP-NOW  │   ├── GPIO 2  ──► LED Onboard Telemetria       │
 │ Reed Switch Portão    ──► D2 (GPIO 4 Wakeup)  ├─────────►│   ├── Wi-Fi   ──► Roteador (Canal Sincronizado)│
 │ Divisor 1M/1M Bateria ──► D0 (GPIO 2 ADC)     │ 2.4 GHz  │   ├── MQTT    ──► Home Assistant (Discovery)   │
 │ Consumo Deep Sleep: ~60 µA (Autonomia >1 ano) │          │   └── HTTPS   ──► Bot de Alertas Telegram      │
 └───────────────────────────────────────────────┘          └────────────────────────────────────────────────┘
        
01. Deep Sleep & Wakeup Instantâneo
Acionamento por Hardware (EXT0)
O Seeed XIAO ESP32-C3 permanece em deep sleep consumindo 44µA. O sensor PIR AM312 (~15µA) e o sensor magnético Reed disparam interrupções por hardware, acordando o chip em menos de 15ms.
02. ESP-NOW Direto Sem Handshake
Transmissão Sub-50ms
Diferente do Wi-Fi comum que demora de 3 a 6 segundos para associar e negociar DHCP, o ESP-NOW transmite o pacote em camada MAC em ~2ms, garantindo envio imediato antes que o visitante se afaste.
03. Auto Canal Wi-Fi & Retentativas
Resiliência contra Queda de Canal
O nó memoriza na RTC RAM o canal do gateway. Se o roteador da casa mudar de canal (1 a 13), o sensor detecta a falta de ACK e faz varredura automática em todos os canais até restabelecer contato.
04. Heartbeat e Proteção da Bateria
Alerta de Offline e Tensão Crítica
A cada 30 minutos um batimento cardíaco é enviado com a tensão da bateria. Se o gateway ficar mais de 75 min sem receber sinal, ele avisa "sensor offline". Se a bateria cair abaixo de 3.3V, o rádio desliga para evitar danos.

🔌 Esquema Elétrico e Diagrama de Bancada

Diagrama eletrônico completo e conexões detalhadas com código de cores para o nó do portão e o gateway.

Esquema Elétrico e Ligação do Sensor Portão ESP-NOW
🔍 Diagrama Esquemático em Alta Resolução
CIRCUITO DETALHADO DO NÓ EXTERNO (XIAO ESP32-C3):
 Painel Solar 6V (+) ──► CN3065 IN+        CN3065 BAT+ ──► 18650 (+) ──► XIAO pad BAT+ (Inferior)
 Painel Solar 6V (−) ──► CN3065 IN−        CN3065 BAT− ──► 18650 (−) ──► XIAO pad BAT− / GND

 XIAO 3V3 ──► AM312 VCC (Alimentação 3.3V)
 XIAO GND ──► AM312 GND
 XIAO D1 (GPIO3) ◄── AM312 OUT (Sinal Digital de Presença)

 XIAO 3V3 ──[ Resistor 1 MΩ (Pull-Up) ]──┬── XIAO D2 (GPIO4 - Reed Portão)
                                         └── Reed Switch ──► GND (Fechado = LOW / Aberto = HIGH)

 18650 (+) ──[ Resistor 1 MΩ ]──┬──[ Resistor 1 MΩ ]──► GND (Divisor 1:2 de Tensão)
                                ├── XIAO D0 (GPIO2 - ADC Leitura VBAT)
                                └──[ Capacitor 100 nF ]──► GND (Filtro Anti-Ruído ADC)
          
⛩️ Nó Externo · Seeed XIAO ESP32-C3 Nó Solar IP66
Pino / Pad Função Destino / Conexão
BAT+ Entrada Li-ion 3.7-4.2V CN3065 BAT+ / Polo (+) 18650
BAT- / GND Terra Comum CN3065 BAT- / Polo (-) 18650
3V3 Saída Regulada 3.3V AM312 VCC + Pull-up Reed 1MΩ
D1 (GPIO 3) Wakeup PIR (EXT0) PIR AM312 OUT
D2 (GPIO 4) Wakeup Reed (EXT1) Sensor Magnético Reed (-> GND)
D0 (GPIO 2) ADC Tensão Bateria Divisor 1MΩ/1MΩ + 100nF
IPEX U.FL RF 2.4GHz ESP-NOW Antena FPC adesiva na parede da caixa
🏠 Gateway · ESP32 WROOM-32 / 32U Hub Residencial
Pino ESP32 Função Destino / Conexão
GPIO 25 Saída de Alarme Buzzer Resistor 1kΩ -> Base BC547
GPIO 2 LED de Telemetria LED Onboard (Pisca no RX de pacote)
VIN / 5V Alimentação 5V DC Fonte USB 5V 1A / Nobreak
GND Terra Comum Emissor BC547 + Terra da Fonte
SMA / IPEX Antena Rádio Externa Antena Dipolo 2.4GHz 3dBi/5dBi
Wi-Fi + IP Interface de Rede Broker MQTT HA + API Telegram

🛒 Lista de Materiais (BOM) & Onde Comprar

Todos os componentes com links de busca direta em 4 marketplaces com envio para o Brasil.

14 componentes mapeados
Total Estimado: R$ 240,00

🔋 Calculadora de Balanço Energético

Simulador interativo de autonomia e dimensionamento solar para verificar a longevidade do sistema.

1. Capacidade da Bateria 18650: 3000 mAh
2. Eventos de Movimento / Portão por Dia: 200 acionamentos/dia
3. Corrente de Repouso (Deep Sleep): 60 µA
4. Horas Equivalentes de Sol Pleno (HSP): 3.5 h/dia
Autonomia sem nenhuma luz solar
480 dias
  • Consumo Diário Total: 4.58 mAh
  • Geração Solar Média (6V 1.5W): +438 mAh / dia
  • Balanço Energético Diário: +433.4 mAh (Superávit)
💡 Conclusão Técnica: Mesmo em dias nublados e chuvosos contínuos, a geração difusa (~25 mAh) supera em mais de 5x o consumo total do sistema.

💻 Código-Fonte dos Firmwares C++ & Home Assistant

Firmwares completos para Arduino IDE (ESP32 core 3.x) e configuração de MQTT Auto-Discovery.

📄 sensor_portao/sensor_portao.ino (Nó Solar ESP-NOW)
#include <WiFi.h>
#include <esp_now.h>
#include <esp_wifi.h>
#include <esp_sleep.h>

// MAC do gateway (o gateway imprime no Serial Monitor ao ligar)
uint8_t GATEWAY_MAC[6] = {0x24, 0x6F, 0x28, 0x00, 0x00, 0x00};

#define NODE_ID          1        // ID deste sensor (1..255)
#define PIN_PIR          3        // D1 - saída do AM312 (HIGH = movimento)
#define PIN_REED         4        // D2 - reed: LOW = fechado, HIGH = aberto
#define PIN_VBAT         2        // D0 - divisor 1:2 da bateria
#define USE_REED         true     // false se não instalar reed switch
#define HEARTBEAT_MIN    30       // intervalo do status periódico (min)
#define PIR_HOLD_MS      8000     // máx. espera pelo PIR voltar a LOW
#define SEND_RETRIES     3

enum EventType : uint8_t {
  EV_MOTION = 1, EV_GATE_OPEN = 2, EV_GATE_CLOSED = 3,
  EV_HEARTBEAT = 4, EV_BOOT = 5
};

typedef struct __attribute__((packed)) {
  uint16_t magic;      // 0xA55A — descarta pacotes estranhos
  uint8_t  version;    // formato do pacote
  uint8_t  nodeId;
  uint8_t  event;
  uint8_t  gateOpen;   // estado do portão (0/1, 255 = sem reed)
  uint32_t seq;
  uint16_t vbat_mV;
  uint8_t  channel;
  uint8_t  retries;    // qualidade do link
} Packet;

RTC_DATA_ATTR uint8_t  savedChannel = 0;
RTC_DATA_ATTR uint32_t seqCounter   = 0;
RTC_DATA_ATTR uint8_t  lastRetries  = 0;

volatile bool sendDone = false;
volatile bool sendOk   = false;

// Callbacks e rotina de deep sleep otimizada para ~44uA no Seeed XIAO ESP32-C3...
📄 gateway_casa/gateway_casa.ino (Receptor ESP32 + WiFi + MQTT + Telegram)
#include <WiFi.h>
#include <esp_now.h>
#include <esp_wifi.h>
#include <PubSubClient.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>

const char *WIFI_SSID  = "SUA_REDE_WIFI";
const char *WIFI_PASS  = "SUA_SENHA";

// Broker MQTT (Home Assistant)
const char *MQTT_HOST  = "192.168.1.10";
const uint16_t MQTT_PORT = 1883;
const char *MQTT_USER  = "homeassistant";
const char *MQTT_PASS  = "sua_senha_mqtt";

// Telegram Bot (Opcional)
const char *TG_TOKEN   = "";  // Token do @BotFather
const char *TG_CHAT_ID = "";  // Seu ID numérico de chat

#define PIN_BUZZER        25  // Transistor BC547 -> Buzzer 5V
#define PIN_LED           2   // LED de status
#define HEARTBEAT_MIN     30  // Intervalo do sensor
📄 homeassistant/automations.yaml (Exemplo de Automação)
# Automação de Alerta de Presença no Portão com Câmera e Notificação
alias: "Portão: Alerta de Presença e Gravação"
trigger:
  - platform: state
    entity_id: binary_sensor.sensor_portao_1_movimento
    to: "on"
action:
  - service: light.turn_on
    target:
      entity_id: light.luz_garagem
    data:
      brightness: 255
  - service: camera.snapshot
    target:
      entity_id: camera.camera_portao
    data:
      filename: "/config/www/portao_snapshot.jpg"
  - service: notify.telegram_admin
    data:
      title: "🚨 Movimento Detectado no Portão!"
      message: "Sensor solar disparou às {{ now().strftime('%H:%M:%S') }}."
      data:
        photo:
          - file: "/config/www/portao_snapshot.jpg"
mode: single

🛡️ Guia de Vedação IP66 & Tropicalização

Instruções fundamentais para garantir operação contínua por mais de 5 anos sob sol, chuva e maresia.

Regra #1 · Gravidade a seu Favor
Aberturas na Face Inferior
Prensa-cabos PG7, válvula de respiro e lente do PIR devem ficar todos apontados para baixo. A água da chuva escorre pelas paredes e nunca acumula sobre as vedações.
Regra #2 · Válvula de Respiro ePTFE
Elimine a Condensação Interna
Caixas 100% seladas 'respiram' pela borracha quando esquentam ao sol e esfriam à noite, sugando vapor d'água. A membrana Gore M12 equaliza a pressão barométrica sem deixar uma gota entrar.
Regra #3 · Conformal Coating
Verniz Isolante nas Placas
Aplique verniz isolante Isomastec ou esmalte acrílico em ambas as faces do XIAO ESP32-C3 e da placa CN3065. Isole os contatos da bateria e proteja as soldas contra maresia e corrosão galvânica.
Regra #4 · Laço de Gotejamento
Fios em Curva Descendente (Drip Loop)
Antes de entrar no prensa-cabo PG7, o cabo do painel solar e do reed switch deve fazer uma curva abaixo do nível da caixa para que a água pingue na curva e não escorra para a rosca.
Regra #5 · Orientação do Painel Solar
Apontado para o Norte Geográfico
No hemisfério sul (Brasil), fixe o painel virado para o Norte com inclinação de 25° a 30°. A inclinação permite que as chuvas lavem poeira e dejetos de pássaros naturalmente.
Regra #6 · Antena Fora de Metal
Bloqueio RF por Portões de Ferro
Nunca instale a caixa diretamente na folha de aço do portão. Instale no pilar de alvenaria e cole a antena FPC adesiva na parede interna de plástico voltada para a casa.