# 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: ```cpp // 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**