Sistema antifurto “SeraAlarm” con Arduino e GSM


La sicurezza del proprio ambiente è un aspetto fondamentale. Ecco come ho realizzato un sistema anti-intrusione completo basato su Arduino. E’ gestibile per mezzo di una semplice interfaccia LCD-Keypad tramite password ed è dotato di sirena, batteria di backup per l’alimentazione e di un modulo GSM volto a segnalarci tramite SMS eventuali rilevamenti di intrusione.

Panoramica del progetto e descrizione schematico (Parte 1)

Funzionalità e programmazione (Parte 2)

Materiale per programmazione di Arduino

Modelli 3D dei componenti plastici

Parte costruttiva

La centrale del sistema consiste in una scatola di derivazione (240x190x90mm) al cui coperchio sono fissati il display LCD 16×2 ed il tastierino numerico 4×3. All’interno è invece presente un involucro protettivo realizzato in acciaio che ospita tutte le parti sensibili del sistema, tra cui una batteria al piombo 12V 1.3Ah per il backup dell’alimentazione e la centralina elettronica su cui è montato l’arduino pro mini ed il modulo GSM Sim800L. Il fissaggio di questa alla base in acciaio avviene grazie ad un supporto isolante realizzato tramite stampa 3D.

Alla centralina si collegano l’alimentatore, la sirena ed i sensori che costituiscono i vari loops di rilevamento. Ciascun loop di rilevamento consiste in contatti chiusi in condizioni di normale esercizio, i quali si aprono in seguito ad un rilevamento (es. apertura finestra). Il sistema consiste in 3 loops di rilevamento:

  • Preallarme: si collegano i contatti per cui in caso di rilevamento a sistema inserito, lo stato di allarme è ritardato per permetterne il disinserimento (es. porta di ingresso).
  • Allarme diretto: contatti ordinari la cui apertura a sistema inserito determina lo stato di allarme immediato.
  • Tamper (anti-manomissione): contatti per il rilevamento di manomissione del sistema (es. contatto rilevamento apertura coperchio box), la cui apertura determina lo stato di allarme immediato.

Mentre nei primi 2 casi per disattivare lo stato di allarme è sufficiente disinserire il sistema tramite la password, nell’ultimo è necessario attivare lo stato di manutenzione (accedendo alle impostazioni) per autorizzare il sistema all’apertura.

Schema funzionale

L’intero sistema è alimentato a 14V per poter mantenere in carica tampone (stand-by use) la batteria di backup. In presenza di alimentazione da rete, grazie alla caduta su ciascun diodo ci si ritrova a valle una tensione poco maggiore di 12V che alimenta la scheda e circa 13.6V per il mantenimento in carica della batteria, la cui corrente di carica è limitata grazie alla resistenza posta in serie. In caso di blackout, la batteria mantiene alimentato il sistema, il quale monitora periodicamente la presenza/assenza di rete e la tensione della batteria. Essendo questa superiore alla massima sopportata dal microcontrollore, viene resa idonea tramite un partitore di tensione con fattore di conversione noto per poter stimare la tensione in ingresso. I partitori sono inoltre impiegati a valle dei loops di rilevamento, essendo questi alimentati a 12V.

Dato che il modulo GSM durante l’invio di SMS richiede correnti fino a 2A a 3.3V (non fornibili dal pin dedicato di Arduino), viene alimentato da un opportuno regolatore step-down switching. Non essendoci sufficiente numero di pin, il pilotaggio del display avviene tramite protocollo I2C impiegando l’integrato PCF8574 come interfaccia, il cui indirizzo associato è determinato dallo stato logico dei pin 1, 2 e 3 (vedi tutorial dedicato).

In uscita si collegano il buzzer a 5V per segnalazioni locali, il relay per il pilotaggio della sirena ed un relay aggiuntivo che predispone la scheda di un contatto ausiliario per il collegamento di altri eventuali attuatori di allarme. E’ infine presente un relay che gestisce il collegamento della batteria al sistema. Alla prima accensione il contatto viene chiuso in seguito all’eccitazione della bobina. In caso di blackout prolungato, per evitare un’eccessiva scarica della batteria (che la danneggerebbe), sotto una certa tensione rilevata il relay viene diseccitato determinando la disconnessione della batteria e lo spegnimento del sistema.

Interfaccia di gestione e funzionamento

Nonostante l’apparente complessità, il sistema è molto semplice da utilizzare grazie all’interfaccia LCD-keypad.

In condizioni di normale esercizio a sistema non inserito si visualizza la schermata principale, in cui la voce !RETE è visualizzata in caso di assenza di alimentazione.
La retroilluminazione del display si disattiva automaticamente dopo 30s di inattività (standby).

In condizioni di manutenzione attiva e loop tamper chiuso si visualizza la voce MAN, indicante che è possibile disattivare lo stato di manutenzione senza che il sistema attivi lo stato di allarme. In condizioni di manutenzione attiva e loop tamper aperto si visualizza la voce !MAN, indicante che è necessario chiudere il loop tamper prima di disattivare lo stato di manutenzione senza che il sistema attivi lo stato di allarme. In condizioni di manutenzione non attiva e loop tamper aperto, il sistema attiva lo stato di allarme, visualizzando la voce TMP, disattivabile attivando lo stato di manutenzione.

Premendo # dalla schermata principale la centrale verifica i loop di rilevamento e ne indica lo stato a display. In tali condizioni, V indica che l’inserimento non determina l’attivazione dello stato di allarme. X indica il contrario e oltre allo stato dei loop può essere dovuto ad un’eventuale assenza di rete, nel caso l’allarme per caduta rete sia abilitato. In caso contrario (disabilitato) la voce !V indica a causa di rete assente che l’inserimento del sistema non implica l’attivazione dello stato di allarme, ma il funzionamento permanente non è garantito.

La successiva pressione di * determina il ritorno alla schermata principale, mentre # avvia l’inserimento, che può essere annullato in qualsiasi momento premendo *. A inserimento avvenuto, lo stato del sistema è visualizzato grazie alla voce ON.

A sistema inserito, il rilevamento del loop preallarme aperto con conseguente scadenza del timer (se abilitato), il rilevamento del loop allarme aperto o di assenza di rete, attiva lo stato di allarme, mostrando a display la causa rispettiva TIMEOUT, ALM e/o RETE. In caso di rilevamento del loop tamper aperto e manutenzione non attiva, lo stato di allarme si attiva a prescindere che il sistema sia inserito o meno ed è indicato dalla voce TMP.

La pressione di # a sistema inserito e/o in stato di allarme determina la richiesta della password per effettuare il disinserimento.

Configurazione

Dalla schermata principale, la pressione prolungata di * per 3 secondi determina la richiesta della password, la cui verifica determina l’entrata nel menu di gestione delle impostazioni del sistema. Le funzioni di navigazione lungo il menu sono svolte dai tasti 4, 6, *, #.

Dal menu è possibile impostare:

  1. Timer all’inserimento [15s, 30s, 60s]: Intervallo di tempo tra l’inizio dell’inserimento del sistema ed il suo avvenimento effettivo, quale permette all’utente l’uscita dall’abitazione senza determinare lo stato di allarme.
  2. Timer preallarme [15s, 30s, 60s]: Intervallo di tempo tra il rilevamento dell’apertura del loop preallarme e l’attivazione dello stato di allarme per timeout, quale permette all’utente il disinserimento del sistema in seguito all’entrata nell’abitazione.
  3. Preallarme [OFF, ON, Solo SMS]: Imposta il comportamento del sistema inserito in seguito alla scadenza del conteggio del timer preallarme, non attivando/attivando lo stato di allarme oppure solo indicando tramite SMS.
  4. Caduta rete [OFF, ON, Solo SMS]: Imposta il comportamento del sistema inserito in seguito al rilevamento di assenza rete, non attivando/attivando lo stato di allarme oppure solo indicando tramite SMS.
  5. Stato manutenzione [OFF, ON]: Disattiva o attiva l’autorizzazione all’apertura del sistema senza determinare lo stato di allarme per loop tamper aperto.
  6. Modalità allarme [Timeout 3min, Silenzioso, A segiuire]: Imposta il comportamento dell’attuatore di allarme (sirena) in seguito all’attivazione dello stato di allarme. Nel primo caso dopo 3min viene disattivato (es. per non disturbare i vicini), nel secondo non viene proprio attivato (si limita a inviare un SMS) mentre nel terzo continua fino al disinserimento del sistema.
  7. Password: Imposta la password numerica (lunghezza 5 caratteri) da impiegare per il disinserimento del sistema e per l’entrata nel menu di gestione delle impostazioni.
  8. Numero telefonico GSM: Imposta il numero telefonico (10 cifre) a cui destinare gli avvisi SMS dello stato del sistema. Richiede l’inserimento di un’opportuna scheda SIM, con codice PIN disabilitato, nel modulo GSM della centrale
  9. Lettura configurazione attuale: Mostra a display in sequenza le impostazioni salvate.
  10. Reset impostazioni: Carica la configurazione di default per il sistema: Timer inserimento 30s, Timer preallarme 30s, Preallarme ON, Caduta rete ON, Manutenzione ON, Modo allarme Timeout 3 min, Password 00000, Numero telefonico GSM 0000000000.

Procedura di programmazione

Se siete interessati alla replica di questo progetto, ecco la procedura da seguire per programmare correttamente Arduino con il firmware presente nello .zip disponibile al link ad inizio pagina.

  1. Assemblare il sistema secondo lo schema funzionale.
  2. Essendo il display pilotato in I2C tramite l’interfaccia PCF8574, questo è identificato da un indirizzo che è determinato dallo stato logico dei pin 1, 2 e 3. Come da schema, l’indirizzo dovrebbe essere 0x20. Consiglio di verificare ciò caricando su Arduino lo sketch “I2C_Scanner”. E’ sufficiente aprire poi il serial monitor per visualizzare l’indirizzo.
  3. Essendo tutte le impostazioni (es password) memorizzate nella memoria EEPROM per permanere anche in seguito allo spegnimento del sistema, è necessario predisporre questa con i valori predefiniti per poter utilizzare il sistema la prima volta con la password “00000”. Per farlo, carichiamo su Arduino lo sketch “DefaultSettings” ed apriamo il serial monitor per verificare che il processo vada a buon fine.
  4. Arduino è ora predisposto per far funzionare il firmware vero e proprio del sistema. Per ragioni di compatibilità tra librerie/versioni di IDE, ho messo a disposizione il programma già compilato (file .hex) invece dello sketch, pronto per essere caricato sul microcontrollore. Per effettuarne l’upload utilizziamo il tool “XLoader” indicando la scheda Uno(ATmega328), baud rate 57600 e la porta COM a cui è collegato Arduino.
  5. Per abilitare il sistema all’invio di SMS è necessario l’inserimento di una microSIM nel modulo GSM. Per funzionare è necessario che la SIM abbia il codice PIN disattivato. Per farlo è sufficiente inserirla in un telefono e modificarne le impostazioni.

Il sistema è ora pronto per l’utilizzo. E’ sufficiente fornire alimentazione ed attendere qualche istante affinché venga inizializzato. Possiamo quindi accedere al menu delle impostazioni tramite la password “00000” per reimpostare questa, oltre al numero di telefono a cui inviare SMS e ad altre impostazioni.

21,376 total views, 7 views today