Un avviso quando manca la corrente a casa

closeQuesto articolo è stato pubblicato 5 anni 9 mesi 2 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

7 pensieri riguardo “Un avviso quando manca la corrente a casa”

  1. Sarebbe possibile sostituire la board con una Arduino MKR1000? Ovviamente cambiando il programma.

  2. Certo, è fattibile, ma devi avere una WiFi che in caso di blackout resti attiva (WiFI, router e connessione ad Internet), ho messo la SIM perché con una batteria la scheda è autonoma per mandare gli SMS e non è dipendente da altre connessioni che potrebbero spegnersi per mancanza di corrente.

  3. Grazie per la tua riposta. Effettivamente il mio router è a valle du un udp (un affare che non so bene come funzioni ma fa star su internet il tempo sufficente, spero, la rete). Purtroppo la ricezione dei cellulari in casa è pessima, quindi i sms potrebbero non andar bene. Abbiamo un riscaldamento a legna che se loa ccendiamo ci impedisce di uscire di casa perchè in assenza di corrente fonde. É ol mio primo progetto arduino e volevo essere certo che non fosse impossibile.

  4. Forse un UPS 🙂
    Di solito un UPS fa star su la connessione per 1-2h. la MKR1400 con la SIM e la batteria, ho provato, sta su anche 2 giorni. Con una prolunga puoi portare fuori l’antenna GSM, in un posto dove prenda.
    In ogni caso, con le dovute modifiche, sicuramente il sistema funziona anche su WiFi

  5. Condivido l’impostazione del progetto e ti faccio i complimenti 🙂
    Avendo lo stesso problema, ho guardato come realizzarlo, ma vedo sul sito di Arduino che la MKR 1400 GSM è a fine vita e infatti non si trova.
    Cosa mi consigli per sostituirlo? I pezzi nuovi sono tutti WiFi.
    Ti ringrazio!

  6. Modificando drasticamente il sistema potresti prendere un Raspberry e mettere una chiavetta con una SIM dati.
    Oppure prendi un arduino WiFi, ma lo colleghi in WiFi a una saponetta con una SIM (o a un vecchio cellulare sempre acceso con il tethering attivo). In questo modo però devi fare le chiamate via Web, tipo un bot telegram, invece degli SMS

  7. Certo è possibile anche in questo modo.
    La semplicità e conseguente affidabilità di un SMS resta comunque vincente: “ciò che non c’è, non si guasta”.
    Arduino lo preferisco al RASPI per le mission critical: sono certo che riparte sempre in caso di power failure.

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.