“matteoscrugli” 8a8c8b922e first commit
2025-12-07 20:51:41 +01:00
2025-12-07 20:51:41 +01:00
2025-12-07 20:51:41 +01:00
2025-12-07 20:51:41 +01:00

Sistema Allarme Camper Ultra Low Power

Sistema di allarme per camper ottimizzato per consumo energetico minimo, con rilevamento intelligente delle vibrazioni e controllo remoto via RF.

Caratteristiche

  • Ultra Low Power: ~3.5mA armato, autonomia 60+ giorni con batteria 12V 7Ah
  • Rilevamento Intelligente: Conta N cambi di stato in finestra temporale per ridurre falsi positivi
  • Sleep Mode PWR_DOWN: Sistema dorme il 99% del tempo (~0.1µA)
  • Interrupt-Driven: Risposta immediata senza polling continuo
  • Watchdog Timer: Lampeggio LED senza sprechi energetici
  • Configurabile: Debug serial e tipo sensore via #define
  • Controllo RF: Attivazione/disattivazione tramite telecomando 433MHz

Hardware Richiesto

Componenti Principali

  • Arduino Pro Mini 3.3V 8MHz (consigliato per ultra low power)
    • Dissaldare LED power sulla board (risparmio ~10mA)
    • Mantenere regolatore di tensione onboard
  • RX480E-4 - Ricevitore RF 433MHz (⚠️ richiede 5V - vedi nota sotto)
  • Sensore vibrazione SW-420 - Modulo con switch vibrazioni
    • Dissaldare LED power e LED signal dal modulo (risparmio ~15mA)
    • Regolazione sensibilità tramite potenziometro onboard
  • Buzzer attivo 3.3V-5V compatibile
  • LED x2 (status + intrusione)
  • Resistenze 1.5kΩ per LED (low power)

⚠️ Nota importante RF Receiver: Il RX480E-4 richiede alimentazione a 5V. Con Pro Mini 3.3V hai due opzioni:

  1. Usare regolatore 5V separato per il solo ricevitore RF
  2. Usare ricevitore RF compatibile 3.3V (es. RXB6, moduli superheterodyne)

Alimentazione

  • Batteria 12V 7Ah (autonomia ~67 giorni)
  • Oppure batteria 9V 500mAh (autonomia ~5 giorni)
  • Regolatore step-down se necessario

Schema Collegamento

Arduino Pin → Componente
────────────────────────────
Pin 2       → SW-420 D0 (INT0)
Pin 6       → RX480E-4 DATA (PCINT22)
Pin 9       → Buzzer
Pin 12      → LED intrusione
Pin 13      → LED status

VCC (3.3V)  → SW-420 VCC
VCC (5V)    → RX480E-4 VCC (richiede regolatore separato)
GND         → Tutti i GND comuni

Configurazione Software

Parametri Configurabili

Nel file src/src.ino, modifica le seguenti define:

// Debug Serial (disabilita in produzione)
#define DEBUG_SERIAL

// Stato iniziale all'accensione
#define STARTUP_STATE 1  // 0=sempre disarmato, 1=sempre armato, 2=check RF

// Rilevamento vibrazione intelligente
#define VIBRATION_WINDOW_MS 2000    // Finestra temporale (ms)
#define VIBRATION_THRESHOLD 80      // N° cambi di stato richiesti
#define VIBRATION_TIMEOUT_MS 3000   // Timeout inattività (ms)

// Durate allarme
#define TRIGGER_DURATION_MS 5000    // Durata buzzer (ms)
#define ARMING_DELAY_MS 2000        // Delay armamento (ms)

Modalità di Avvio

STARTUP_STATE Comportamento
0 ALWAYS_DISARMED - Parte sempre disarmato (ignora RF)
1 ALWAYS_ARMED - Parte sempre armato (massima sicurezza)
2 CHECK_RF - Controlla stato RF all'avvio (default)

Installazione

1. Arduino IDE Setup

Tools → Board → Arduino Pro or Pro Mini
Tools → Processor → ATmega328P (3.3V, 8MHz)
Tools → Programmer → (seleziona il tuo FTDI/USB-Serial)

Nota: Il codice è compatibile con 8MHz. Le funzioni millis() e watchdog timer si adattano automaticamente alla frequenza del clock.

2. Upload Codice

  1. Apri src/src.ino nell'Arduino IDE
  2. Abilita #define DEBUG_SERIAL per test
  3. Compila e carica (Ctrl+U)
  4. Apri Serial Monitor (9600 baud) per vedere l'output

3. Test Funzionalità

Con DEBUG_SERIAL abilitato:

Alarm Ready
(Premi telecomando) → Sistema si arma
(Scuoti sensore) → INTRUSIONE

4. Produzione

  1. Commenta #define DEBUG_SERIAL
  2. Ricompila e carica
  3. Sistema pronto per installazione

Funzionamento

Stati del Sistema

DISARMED (Disarmato)
    ↓ (RF HIGH)
ARMING (Armamento - 2s)
    ↓
ARMED (Armato - lampeggio LED)
    ↓ (Vibrazioni > soglia)
TRIGGERED (Allarme - buzzer 5s)
    ↓ (Timeout o RF LOW)
DISARMED / ARMED

Rilevamento Vibrazioni Intelligente

Il sistema conta i cambi di stato del sensore in una finestra temporale:

  • Soglia default: 80 cambi in 2000ms
  • Vantaggio: Filtra falsi positivi (vibrazioni stradali, vento)
  • Personalizzabile: Regola VIBRATION_THRESHOLD e VIBRATION_WINDOW_MS

Esempio:

Vibrazione stradale leggera → 5 cambi in 2s → Ignorata ✓
Intrusione reale → 80+ cambi in 2s → ALLARME! ✓

Consumo Energetico

Consumi per Stato

Stato Consumo Durata Tipica
DISARMED ~3.0 mA Continuo
ARMING ~1.5 mA 2 secondi
ARMED ~3.5 mA Continuo
TRIGGERED ~32 mA 5 secondi

Autonomia Stimata

Con batteria 12V 7Ah:

  • Allarme armato continuo: ~67 giorni
  • Uso misto (8h armato/giorno): ~6 mesi

Con batteria 9V 500mAh:

  • Allarme armato continuo: ~5 giorni

Breakdown Consumo (Armato)

RX480E-4 (sempre on):     3.0 mA  (86%)
LED lampeggio (media):    0.1 mA  (3%)
ATmega328P (wake-up):     0.4 mA  (11%)
─────────────────────────────────
TOTALE:                   3.5 mA

Preparazione Hardware

Arduino Pro Mini: Rimozione LED Power (Obbligatoria)

Risparmio: ~10mA

Il LED power sulla board Pro Mini consuma continuamente ~10mA e deve essere rimosso:

  1. Individua il LED sempre acceso sulla scheda (solitamente vicino al regolatore)
  2. Dissalda il LED con saldatore a punta fine
  3. Verifica con multimetro la riduzione di consumo

Sensore SW-420: Rimozione LED (Obbligatoria)

Risparmio: ~15mA

Il modulo SW-420 ha tipicamente 2 LED (power + signal) che consumano inutilmente:

  1. Individua i 2 LED sul modulo SW-420
  2. Dissalda entrambi i LED con saldatore a punta fine
  3. Il sensore continuerà a funzionare normalmente via pin digitale D0

Dopo rimozione LED: Consumo totale sistema ridotto da ~28mA a ~3.5mA armato

Ottimizzazione Opzionale: RF con Switch MOSFET

Risparmio: ~3mA → autonomia >1 anno

Aggiungi MOSFET P-channel per accendere RX solo periodicamente:

  • Complicato da implementare
  • Latenza attivazione fino a 10 secondi
  • Non consigliato per questo progetto

Calibrazione

Sensore SW-420: Regolazione Hardware

Il modulo SW-420 ha un potenziometro per regolare la sensibilità fisica:

  1. Ruota il potenziometro completamente in senso orario (minima sensibilità)
  2. Alimenta il modulo e osserva l'uscita digitale D0
  3. Ruota gradualmente in senso antiorario fino a rilevare vibrazioni medie
  4. Evita di renderlo troppo sensibile (rileverà vibrazioni ambientali)

Obiettivo: Rilevare vibrazioni da intrusione ma ignorare vibrazioni stradali/vento

Calibrazione Software Threshold

Dopo aver calibrato il potenziometro hardware:

  1. Abilita #define DEBUG_SERIAL
  2. Carica il codice
  3. Arma il sistema
  4. Prova diverse intensità di vibrazione
  5. Osserva sul Serial Monitor quanti cambi vengono rilevati
  6. Regola VIBRATION_THRESHOLD di conseguenza

Consigli:

  • Soglia troppo bassa → Troppi falsi positivi
  • Soglia troppo alta → Sistema poco sensibile
  • Default 80 cambi/2s → Buon compromesso con SW-420

Misura Consumo

Con multimetro in serie sulla linea VCC:

Sistema DISARMED → Deve leggere ~3.0mA
Sistema ARMED → Deve leggere ~3.5mA (media)
LED lampeggia → Picchi fino a 5-6mA

Troubleshooting

Sistema non si arma

  • Verifica connessione RX480E-4
  • Controlla che telecomando trasmetta
  • Abilita DEBUG_SERIAL per diagnostica

Troppi falsi positivi

  • Aumenta VIBRATION_THRESHOLD
  • Aumenta VIBRATION_WINDOW_MS
  • Verifica montaggio sensore vibrazione

Consumo troppo alto

  • Verifica che RX sia modello a basso consumo
  • Rimuovi LED power da Pro Mini
  • Controlla che DEBUG_SERIAL sia disabilitato

Serial Monitor non funziona

  • Verifica baud rate 9600
  • Controlla che #define DEBUG_SERIAL sia attivo
  • Verifica connessione FTDI (TX→RX, RX→TX)

Tecniche Low Power Implementate

  • SLEEP_MODE_PWR_DOWN - Consumo minimo 0.1µA
  • Interrupt esterni - Wake-up istantaneo
  • Watchdog Timer - Funziona in PWR_DOWN
  • Disabilitazione moduli - ADC, TWI, SPI, Timer2, USART
  • Brown-out Detector disable - Durante sleep
  • Pin non usati OUTPUT LOW - Riduce leakage current
  • Eliminazione delay() - Sostituiti con sleep
  • LED low current - 2mA invece di 20mA

File del Progetto

camper/
├── src/
│   └── src.ino         # Codice principale
├── README.md           # Questo file
└── .gitignore          # Git ignore per Arduino

Licenza

Questo progetto è rilasciato come open source.

Crediti

Sviluppato per sistema allarme camper ultra low power. Hardware target: Arduino Pro Mini 3.3V 8MHz (LED power dissaldato)


Autonomia target raggiunta: 60+ giorni con batteria standard 12V 7Ah

Description
Sistema di allarme low power per camper
Readme MIT 32 KiB
Languages
C++ 100%