Un avviso quando manca la corrente a casa

closeQuesto articolo è stato pubblicato 8 mesi 27 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi.

Questo progetto fa parte del più grande La Domotica fai-da-me, anche se non parla con la centralina dove accentro tutto. Può essere anche realizzato da solo, funzionerà senza problemi.

Perché un sistema che mi avvisa quando manca corrente? Perché se manca corrente in casa quando non ci sono so che devo intervenire entro poche ore per evitare, ad esempio, di dover cambiare l’intero frigo perché la carne nel freezer si scongela e marcisce (no, non potete sapere lo schifo della puzza di carne marcia se non lo avete mai sentito) oppure perché smette di funzionare il mio antifurto.

Può essere comodo in box, nella casa in montagna, in ufficio, nella sala server dell’azienda dove si lavora, …

Le specifiche di questo progetto sono molto semplici: deve funzionare in caso di blackout e non si deve appoggiare alla connessione Internet (senza corrente il router si spegne). In più, mi deve avvisare quando la corrente torna.

La lista della spesa (prezzi a Marzo 2019)
Come funziona

Il sistema di per sé è molto banale (rispetto a tutto quello che si potrebbe fare su un Arduino di questo tipo). Ogni 10” il sistema controlla se c’è corrente sulla USB. Se non c’è più manda un SMS (funziona perché c’è la batteria LiPo che la alimenta), quando torna manda un altro SMS e ne manda uno anche quando la batteria è arrivata sotto al 20%.

Lo schema elettrico
  • Serve una LiPo da almeno 1200mAh da collegare all’apposito connettore
  • Il PIN dei 5V dovrà essere connesso alla parte di alimentazione della scheda
  • Idem il PIN del GND
  • Le resistenze vanno collegate in modo da creare un partitore con in mezzo il PIN analogico A6
Capire se c’è blackout

Quando la scheda è alimentata dalla USB, sul PIN 5V ci saranno esattamente 5V, quindi in mezzo al partitore tra le resistenze da 1k e 2k ci saranno circa 3,3V, che in un PIN analogico daranno un valore di 1023 alla lettura.

Vout = Vin x [R2 / (R1 + R2)] = 5 x [2k / (2k + 1k)] = 5 x 0,66 = 3,3V

Quando la corrente alla USB viene a mancare, sul PIN dei 5V ci sarà la tensione della batteria, quindi al massimo 4V (la LiPo è nominalmente a 3,7, ma da completamente carica è un po’ di più), il partitore avrà quindi una tensione più bassa.

Vout = Vin x [R2 / (R1 + R2)] = 4 x [2k / (2k + 1k)] = 4 x 0,66 = 2,64V

La lettura del PIN analogico è 1023 se al massimo (3,3V) e 0 se al minimo (0V), quindi ogni “step” è pari a circa 0,003V. La tensione di 2,62V darà un valore di circa 820.

Il sistema andrà in “blackout” quando al PIN A6 leggeremo un valore inferiore a 900.

A questo punto, se la lettura precedente era senza allarme, il sistema manda un SMS con l’avviso del blackout. Quando la corrente tornerà, il valore salirà sopra la soglia e il sistema manda il SMS di ripristino della corrente.

Gestione della batteria

Durante il periodo di blackout la matteria alimenterà la scheda che continuerà a fare i controlli, fino a quando non sarà scarica. Con la lettura della variabile di sistema “ADC_BATTERY” so quanta carica è rimasta nella batteria. Al raggiungimento del 20% mando un SMS di avviso in modo da dire “ehi, bello, guarda che qui la corrente non torna e io non mi sento tanto bene”.

Nei miei test la batteria da 1200mAh ha resistito per più di 24h, che dovrebbe essere un tempo sufficiente per riuscire a intervenire prima che ci siano problemi seri in casa.

La scheda Arduino ha integrato un circuito di ricarica, quindi quando la corrente torna il sistema si occuperà di ricaricare la Lipo, in modo che sia pronta per il blackout successivo.

La SIM GSM

Per poter funzionare il sistema usa una SIM GSM di qualunque tipo, purché sia in grado di inviare SMS (e purché ci sia segnale in casa). io uso le SIM di Things Mobile perché sono facilmente gestibili dal loro sito, non scadono mai e funzionano in tutto il mondo. Un SMS costa 0,10€ (tutti ben spesi, se mi permette di salvare un intero freezer di roba)

Perché un SMS e non una qualche chiamata web?

Perché il SMS è facile da ricevere, è una piattaforma ben rodata, è compatibile con qualunque smartphone e non dipende da altri servizi che ti devi costruire, gestire e controllare se cadono.

Diagnostica

Il sistema non ha un display, ma ha un LED che posso far lampeggiare a seconda degli eventi e dello stato della scheda, io l’ho programmato in questo modo:

  • All’avvio il sistema tenta l’accesso alla rete GSM, ad ogni tentativo fa un flash da 150ms.
  • Se la connessione fallisce lampeggio velocemente (100ms) per 5 volte. Poi ci riprova.
  • A connessione GSM avvenuta il LED lampeggia più lento (350ms) per tre volte
  • Con la corrente presente il LED è acceso costantemente
  • In caso di blackout il LED lampeggia una volta per ogni 10% di carica della batteria ogni 15 secondi
  • Se la batteria è molto scarica (sotto il 10%) il LED lampeggia molto velocemente per 5 volte

Ovviamente si può aggiungere un display di qualunque tipo alla scheda, si deve solo tener conto che usare un display consuma corrente e questo potrebbe accorciare la vita del sistema in batteria.

Il codice

Come al solito tutto il codice è disponibile sulla mia pagina di GitHub

Nota importante, da leggere prima di commentare

Questo è un blog scritto per passione, non fornisco quindi risposte di tipo professionale, se avete bisogno di un aiuto tecnico rivolgetevi ad un professionista di fiducia, non offendetevi se mi astengo dal rispondere. Vi ringrazio per la comprensione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.