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:
- Usare regolatore 5V separato per il solo ricevitore RF
- 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
- Apri
src/src.inonell'Arduino IDE - Abilita
#define DEBUG_SERIALper test - Compila e carica (
Ctrl+U) - 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
- Commenta
#define DEBUG_SERIAL - Ricompila e carica
- 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_THRESHOLDeVIBRATION_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:
- Individua il LED sempre acceso sulla scheda (solitamente vicino al regolatore)
- Dissalda il LED con saldatore a punta fine
- 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:
- Individua i 2 LED sul modulo SW-420
- Dissalda entrambi i LED con saldatore a punta fine
- 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:
- Ruota il potenziometro completamente in senso orario (minima sensibilità)
- Alimenta il modulo e osserva l'uscita digitale D0
- Ruota gradualmente in senso antiorario fino a rilevare vibrazioni medie
- 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:
- Abilita
#define DEBUG_SERIAL - Carica il codice
- Arma il sistema
- Prova diverse intensità di vibrazione
- Osserva sul Serial Monitor quanti cambi vengono rilevati
- Regola
VIBRATION_THRESHOLDdi 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_SERIALsia 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