Il citofono evoluto

Attenzione! Lavorare con la corrente è pericoloso! Se non sai dove mettere le mani fai fare il lavoro a un professionista, io non sono responsabile se ti fai male.

Erano anni che volevo farmi un sistema un po’ smart per la gestione del citofono di casa, essenzialmente volevo queste funzionalità:

  • Aprire il portone con un pulsante senza chiave, anche da fuori casa
  • Avere la notifica del suono del campanello sul telefono, anche da fuori casa
  • Poter disattivare l’orrendo suono del citofono in casa, una volta attivata la notifica sul telefono

In commercio non ho mai trovato nulla che facesse al caso mio e, mettermi a giocare con i fili del citofono condominiale, per mio conto l’ho sempre visto come problematico, soprattutto con il rischio di fare danni all’impianto del condominio.

A casa nuova però ho chiesto all’elettricista di lasciare una cassetta di derivazione vuota con una canalina diretta dal citofono e una coppia di fili con la 220V, che non si sa mai

Leggi tutto “Il citofono evoluto”

LED RGB dentro una lampada Ikea

Questo progetto è parte del più grande La domotica fai-da-me, che trovi sempre all’interno di questo sito. Avevo bisogno di una luce “salva-mignolino” per la notte in camera. Al posto di andare a comprarmi un banale segna passo in un negozio, ho realizzato questo progetto integrando un LED RGB (può visualizzare 16 milioni di colori, uno per volta) all’interno del sistema più grande. Posso comandarlo dal bot di Telegram, posso automatizzarlo in base a vari parametri della mia centralina, oppure posso cambiare il colore con un semplice link web.

Nota importante e fondamentale: con questo progetto si lavora vicino alla corrente elettrica 220V, toccare la 220V è pericoloso, ci si può far male o si può morire. Se non sai quel che fai chiedi aiuto. Non sono responsabile per qualsiasi danno a persone, cose, animali o qualunque altra cosa.

Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.iltucci.com) come fonte principale.

Il LED prima era nudo, con una mezza pallina da ping-pong a fare da diffusore. Non il massimo in estetica. Passando da Ikea ho trovato una lampada molto economica dentro cui metterlo: la lampada LAMPAN da 5€.

Leggi tutto “LED RGB dentro una lampada Ikea”

Tutte le informazioni su un display

Avere un sistema che memorizza informazioni su un appartamento è poco utile se queste informazioni non possono essere lette o consultate.

Nel mio progetto di domotica ho sviluppato alcune funzioni del bot su Telegram che mi permettessero di leggere i dati dei sensori di temperatura con pochi facili comandi, ma non è proprio una cosa comoda, in più i dati numerici dicono poco se non sono rappresentati almeno con un piccolo grafico.

Allora ho installato Home Assistant, gli ho fatto prendere i dati dal DB e li ho fatti presentare in un modo un po’ più fruibile.

La grafica, anche se semplice, è più accattivante di un messaggio di testo, ma c’è sempre il problema che per poterli vedere devo avere un PC sotto mano o devo tirare fuori il telefono dalla tasca.

Così ho aperto il cassetto della disperazione, quello dove noi nerd/maker mettiamo tutto quello che compriamo, le “cose che sono bellissime e che prima o poi useremo”, e ho tirato fuori due componenti:

  • Un Raspberry Pi 3 (ma per il progetto vanno bene dal 2 in poi, basta che abbia il connettore a 40PIN) con gli accessori base: alimentatore e scheda SD (il link sponsorizzato porta al 4, attualmente in commercio)
  • Un display e-ink da 4” fatto apposta per il Raspberry e venduto, che io sappia, solo da Pimoroni

Adoro i display e-ink, per questo avevo quel bellissimo display, comprato in un momento in cui il sito Pimoroni faceva gli sconti al 20%

Leggi tutto “Tutte le informazioni su un display”

Un avviso quando manca la corrente a casa

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.

Leggi tutto “Un avviso quando manca la corrente a casa”

Ridimensionare un file immagine del Raspberry Pi

Il problema delle immagini del Raspberry Pi ritorna ogni volta che mi tocca usarne uno. Per questo sto iniziando ad odiare questa scheda. Anzi, odio le memorie microSD.

Il modo più sicuro di fare un backup offline (cioè a sistema spento e scheda collegata da un’altra parte) è ottenere un file immagine, tipicamente con estensione IMG. Se si deve ripristinare il sistema a causa di un guasto (tipicamente la microSD che si corrompe) sarà sufficiente “masterizzare” questa immagine su una nuova scheda microSD.

La procedura qui indicata è fatta con un PC Windows, se avete altri sistemi operativi sarà necessario modificare leggermente le cose (ad esempio non c’è Rufus per Mac)

Leggi tutto “Ridimensionare un file immagine del Raspberry Pi”

Un semplice analizzatore della rete su Raspberry Pi (per noob)

Il progetto che realizzeremo insieme in questo post mi è servito in ufficio, anzi, nelle sedi remote, per capire un po’ com’è lo stato della rete di un singolo punto rete. Se perde pacchetti, se la VPN con la sede funziona e a quanto va Internet. Il tutto da dare a qualcuno che di tecnologia non capisce nulla: lo collega, lo accende e fa la foto del risultato.

Il sistema in funzione. Prima senza cavo e poi con.

Lista della spesa

Per poter realizzare il progetto servono anche degli accessori che saranno usati solo per la configurazione

  • Monitor esterno HDMI
  • Tastiera USB
  • Un PC di appoggio
  • Un adattatore per collegare la microSD al PC
Leggi tutto “Un semplice analizzatore della rete su Raspberry Pi (per noob)”

Sensore di temperatura con batteria LiPo

Questo post fa parte del progetto La Domotica Fai-da-me, è l’evoluzione del sensore di temperatura a batteria, lo migliora in tre punti fondamentali:

  • Il sensore è un SHT30 e non un DHT22, questo sensore è molto più preciso ed affidabile, oltre che lavora su bus I2C ed è semplicissimo da interfacciare
  • La batteria è una LiPo, collegata allo shield apposito, dovrebbe durare molto di più ed è più piccola del kit di tre pile stilo AA che uso adesso.
  • La trasmissione dei dati è basata su MQTT e non più su http (dovrei aver ridotto il consumo vita la leggerezza del protocollo)

Il post esce quando il sensore è operativo da meno di un mese, l’effettiva durata della batteria l’ho provata abbassando il periodo di deep sleep da 30′ a 4”. Il sensore ha inviato la lettura circa 25000 volte prima che la batteria si scaricasse. A una lettura ogni mezz’ora fa una durata stimata di più di 3un anno. Non male, le tre stilo della versione precedente durano meno di 3 mesi.

La lista della spesa (da prendere con le pinze, le schede cambiano e si aggiornano, se trovate schede aggiornate potreste aver bisogno di fare saldature diverse o cambiare leggermente il codice).

Come per tutti gli altri progetti è necessario saldare i connettori sulle schede, io ho messo, in ordine dal basso verso l’alto:

  • Scheda D1 Mini (sotto a tutte)
  • Shield batteria (in mezzo)
  • Shield SHT30 (in alto, all’aria aperta)
Questi sono i piedini da saldare sulle tre schede (in foto c’è la D1 Mini Lite, ma la cosa funziona anche con la standard)
I PIN devono essere saldati in questo modo sulle tre parti.
Il sistema intero montato e operativo (si vede che il connettore della batteria non combacia con quello della scheda?)
Leggi tutto “Sensore di temperatura con batteria LiPo”

Programmare una WeMos D1 Mini Lite

Perché c’è bisogno di questo post? perché mi sono trovato tra le mani una di queste schede (ricordate che WeMos adesso si chiama Lolin) e ho avuto una difficoltà incredibile nel programmarla.

Quando con l’IDE di Arduino si deve programmare una scheda, è necessario dirgli qual è la scheda che si sta usando, perché lui cambia una serie di parametri che permettono al codice di funzionare correttamente per ogni tipo di scheda.

Da bravo furbo pensavo di programmare la D1 Mini Lite esattamente come la D1 Mini, visto che nel menu c’è solo quella

E invece no. Si deve avere la scheda D1 Mini Lite. E ho perso un’intera serata a capire come fare ad averla. Lo segno qui a futura memoria e per chi si sconterà sullo stesso problema.

Ci sono riuscito solo in Windows, quindi se qualcuno riesce anche a farlo sul Mac lo scriva nei commenti e io lo metterò nel post, oltre a ringraziare tantissimo!

Si deve aprire il file “Boards.txt” che si trova in questo percorso (attenzione che la cartella “AppData” è nascosta):

C:\Users\[utente]\AppData\Local\Arduino15\
packages\esp8266\hardware\esp8266\2.4.1

All’interno si deve incollare tutto il contenuto di (dovesse mai venire cancellato, ho una copia proprio qui sul blog: scaricalo).

Chiudendo e riaprendo l’IDE di Arduino la scheda finalmente comparirà e la si potrà utilizzare.

Mettere i dati dei sensori in un DB, usando MQTT

Questo articolo fa parte del progetto La Domotica fai-da-me ed è il naturale proseguimento dell’articolo sul server/broker MQTT.

Una volta realizzato il server è necessario intercettare i dati inviati dai sensori per memorizzarli nel DB.

Esatto, il DB. per poter lavorare con il database è necessario crearne uno. Io uso SQLite perché è facile, leggero e nativamente integrato in Python. Per installarlo basta usare il solito comando su Ubuntu

sudo apt-get install sqlite3

Per creare il DB è sufficiente accedere a sqlite indicando il nome del DB da creare

sqlite3 /percorso/domotica.db

Una volta dentro si devono creare le tabelle necessarie per memorizzare i dati, la struttura che ho pensato io è basata su tre tabelle:

  • I luoghi dei quali mi servono i dati
  • Le temperature
  • I consumi di corrente (questa tabella è usata dal progetto del misuratore di corrente)

Queste sono le tabelle da creare

CREATE TABLE Luoghi 
(
  ID INTEGER PRIMARY KEY ASC, 
  Descrizione TEXT NOT NULL
);

CREATE TABLE Temperature
(
  ID INTEGER PRIMARY KEY ASC, 
  Timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
  Luogo INTEGER,
  Temp REAL,
  Umid REAL,
  Vbatt REAL
);

Una volta create le due tabelle è necessario inserire i vari luoghi che si vogliono monitorare con delle semplici INSERT

INSERT INTO Luoghi (Descrizione) VALUES ('[nome ambiente');

L’identificativo del campo “ID” viene messo automaticamente, per vederlo basta fare una SELECT sulla tabella

SELECT * FROM Luoghi;

Il risultato dovrebbe essere una cosa tipo questa

sqlite> select * from luoghi; 
1|Camera
2|Balcone Strada
3|Cucina
4|Sala

Per comodità è bene prendere nota di questi valori, perché ci serviranno per programmare i sensori e fare le varie query.

Il programma è scritto ovviamente in Python e può essere trovato nella pagina GitHub del progetto. Per poter funzionare sono necessarie alcune librerie, una di queste, che sicuramente manca nel server è la libreria PAHO-MQTT, che permette di gestire MQTT con Python. Si installa con il comando:

pip install paho-mqtt

Il programma va eseguito all’avvio del sistema, se no i sensori troveranno il server, manderanno i loro dati, ma questi non saranno salvati da nessuna parte. Per fare questo è necessario modificare il crontab con il comando

crontab -e

A questo punto si deve inserire la riga

# avvio del sistema che salva i dati vai MQTT al boot
@reboot python /percorso/mqtt_to_db.py >/percorso/mqtt_to_db_std.log 2>&1

per salvare il crontab basta fare Ctrl+X, S (o Y a seconda della lingua del sistema) e poi INVIO

Giusto per capire cosa abbiamo appena scritto:

  • le righe che iniziano con il cancelletto # sono commenti (usare bene i commenti è obbligatorio, sempre!)
  • @reboot: questa cosa va eseguita all’avvio del sistema
  • python /percorso/programma.py: esecuzione del programma
  • >/percorso/log: redirige lo standard output su un file di log invece che a video
  • 2>&1: redirige sullo stesso file di log anche l’output degli errori

Adesso mancano solo più i sensori!

Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.iltucci.com) come fonte principale.

Registrare i dati dei sensori via MQTT

Nel progetto La Domotica fai-da-me ho inserito alcuni sensori che leggono i dati ambientali di casa e li trasmettono al server in mo tale che questo possa memorizzarli in un DB. Tutti i sensori sviluppati fin qui inviando i dati facendo una chiamata web, nello specifico una http-GET di questo tipo:

http://[ip_server]/?tipo=temperatura&luogo=bagno&dato=22,5

Sul server è attivo un server web che riceve la chiamata, legge i dati e li memorizza nel DB. Tutto facile, anche a livello di codice.

Esiste però un protocollo, sviluppato specificamente per i sensori IoT, che ha alcune caratteristiche molto interessanti:

  • E’ molto molto facile da implementare lato server
  • E’ molto molto facile da implementare su qualunque dispositivo (nel mio caso sulle schede ESP8266), ci sono milioni di librerie
  • Ha pochissimo overhead di dati (vedi dopo)
  • La trasmissione del dato consuma molta meno energia di una chiamata http. Questo allunga la durata delle batterie, cosa molto interessante
  • Funziona su qualunque mezzo di trasmissione.
Leggi tutto “Registrare i dati dei sensori via MQTT”

Videosorveglianza con Foscam FI9816P

Questo articolo fa parte del sistema La Domotica Fai-da-me. L’intento era quello di estendere le modalità di ripresa video, senza dover essere per forza limitati dalla piattina della videocamera del Raspberry Pi o dal cavo USB della Webcam collegata sulla centralina.

Per fare questo ho usato una Foscam FI9816P (il link è sponsorizzato). La guida si riferisce a questo specifico modello, perché a seconda dei modelli e dei produttori le configurazioni potrebbero essere sensibilmente (a volte molto) diverse.

L’intento è sempre quello di usare un sistema sul quale abbiamo il pieno controllo e che non è dipendente da servizi esterni, qudini questa videocamera non sarà in alcune modo collegata ad Internet o a servizi di terze parti (lo vedremo più avanti)

Usare una videocamera IP ha alcuni punti a favore e altri contro, prima di scegliere, li analizziamo, per capire se vale la pena correre questi rischi.

Perché una videocamera IP è una buona scelta:

  • La posso mettere dove voglio, se è WiFi serve solo che sia vicina ad una presa di alimentazione (e sotto copertura wifi)
  • Se cambio il sistema di sorveglianza non la devo riconfigurare, come è stata configurata così resterà anche per il sistema nuovo
  • E’ indipendente dalla centralina, sarà sempre e solo raggiungibile via rete
  • Cambiarla con un’altra non porta a dover riscrivere mezzo progetto perché le specifiche cambiano, i protocolli video sono sempre quelli

Perché una videocamera IP non è una buona scelta:

  • Se è WiFi, con un jammer il segnale verrebbe disturbato e lo stream video non arriverebbe più alla centralina (i jammer sono fuori legge, ma lo è anche forzare la porta di ingresso di un appartamento altrui)
  • Dovrebbe essere alimentata con un UPS, in modo che con la mancanza di corrente non smetta di trasmettere il video alla centralina

Se avete deciso che fa ancora per voi, potete continuare a leggere, se a questo punto pensate che la sicurezza non sia più la stessa, potete fare le vostre scelte (è domotica fai-da-me nel senso che ve la fate voi come più vi piace).

Leggi tutto “Videosorveglianza con Foscam FI9816P”

Misurare la corrente che si consuma, con ESP8266

Questo post è un’evoluzione di quello fatto qualche anno fa, con lo stesso scopo, ma utilizzando una (non proprio economica) scheda Arduino Yun. All’epoca non conoscevo le ESP e avevo la scheda inutilizzata a casa, con l’esperienza e il senno del poi ho abbassato il prezzo del progetto di oltre metà.

Nota importante e fondamentale: con questo progetto si lavora vicino alla corrente elettrica 220V, toccare la 220V è pericoloso, ci si può far male o si può morire. Se non sai quel che fai chiedi aiuto. Non sono responsabile per qualsiasi danno a persone, cose, animali o qualunque altra cosa.

Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.iltucci.com) come fonte principale.

Questo progetto si inserisce all’interno del lavoro La Domotica fai-da-me, migliora il progetto precedente fatto con Arduino o si aggiunge per rendere il controllo dei consumi più preciso mettendone uno su ogni elettrodomestico.

Prima di tutto, la lista della spesa, che senza materiale non si va da nessuna parte.

Poi ci va la lista dell’attrezzatura necessaria

  • Un PC su cui installare e usare il software (qualsiasi sistema operativo)
  • Un cavetto micro USB di quelli per il cellulare
  • Un saldatore e lo stagno
  • Un paio di forbici
  • Un cacciavite a taglio e uno a stella
  • Un multimetro digitale
  • Un phon (per i test)

Il progetto si basa sulle funzionalità che servono in casa a me, c’è ovviamente la possibilità di adattarlo alle proprie esigenze, lavorando senza WiFi, senza display o aggiungendo un buzzer che suona in caso di consumo anomalo (vedi al fondo).

Il sistema memorizza i dati in una centralina, presente sempre in casa e basata su Linux, con il protocollo MQTT. Sicuramente ci sarà un post specifico per la centralina.

Assemblare i componenti

Una volta ricevuti i componenti è necessario fare qualche saldatura prima di poter usare il tutto. Se hai qualche dubbio sulla saldatura compra una shield millefori e dei piedini in più, saldali tutti facendo in modo di non creare dei cortocircuiti.

Iniziamo dal display, che dovrà essere saldato ai piedini da collegare al microcontrollore. Visto che è il pezzo che dovrà essere a vista, è quello da montare sopra tutto, quindi si devono usare i piedini che hanno il solo connettore maschio. La saldatura va fatta sulla parte corta, che va saldata dal lato del display lasciando i piedini lunghi sotto.

Il secondo livello sarà il microcontrollore, la scheda WeMos D1 Mini, dovranno essere saldati i piedini che hanno la femmina da una parte (da mettere in alto) e i maschi dall’altra, in basso. In modo che sopra la D1 Mini si possa mettere il display OLED saldato prima.

Prima di saldare i PIN della millefori, sulla quale si dovrà collegare la pinza amperometrica, è bene mettere i componenti e fare le giuste connessioni.

Da questo schema “Arduino A2” diventa “WeMos A0” e “Arduino 5V” diventa “WeMos 3,3V”

Saldati i componenti si possono saldare i PIN, questa volta solo il connettore femmina, in modo che la scheda millefori sia sotto alla D1 Mini

La logica di funzionamento del sistema è abbastanza semplice: la pinza amperometrica, che va installata “intorno” al filo della fase o del neutro (solo uno, non entrambi, e non sulla terra giallo/verde) capta la variazione del campo magnetico intorno al filo in base a quanta corrente passa.
La lettura del campo magnetico viene convertita in una tensione elettrica, nel caso di questa pinza, tra 0 e 1V per correnti tra 0 e 30A.
In un appartamento il contratto della corrente standard prevede un massimo di 16A (3,5KW), ovviamente se hai una potenza maggiore potresti non farcela con i 30A (che sono 6,6KW) e serve quindi cambiare la pinza e qualche altro dettaglio.

Adesso è il caso di pensare al software

L’hardware è pronto, adesso è necessario passare al software. La scheda D1 Mini si programma con l’Arduino IDE, che si può scaricare e installare gratuitamente per qualsiasi piattaforma. Per poterla usare correttamente è necessario seguire la guida sul sito di WeMos.

Il codice (chiamato comunemente sketch) da caricare sulla scheda WeMos si trova su GitHub, alla pagina del progetto.

Come si prosegue?

Il test operativo è abbastanza semplice. Ma c’è bisogno di qualcuno che sappia fare un po’ di lavori da elettricista. Non smetterò mai di dire che la 220V, se usata male, è mortale, quindi attenzione. Se non sai come fare, fatti aiutare, ad esempio dal negoziante dove vai a comprare i fili e le prese/spine volanti (nei negozi piccoli, non nei centri commerciali)

Adesso è necessario creare una mini prolunga elettrica da 20cm circa. Con il cacciavite apri la presa e la spina. Collega i tre fili elettrici, facendo bene attenzione che il filo giallo/verde parta e arrivi dal centro delle due, gli altri fili saranno collegati ad uno dei due lati, non fa differenza.
Con il tester verifica che non ci siano corto circuiti tra i 3 fili.

Fai passare uno dei due fili colorati (non il giallo/verde) dentro la pinza amperometrica che è collegata alla scheda. Collega la spina ad una presa a muro. Collega alla presa il phon
Accendi il circuito e leggerai sul display una piccola corrente, che tenderà ad essere zero. Adesso accendi il Phon a velocità minima. Guarda quanto sta consumando. Adesso passalo alla velocità massima. Tipicamente sarà intorno ai 2000W. Se spegni la parte che scalda l’aria e la fa solo girare vedrai la potenza crollare. Bene, funziona.

Stacca tutto e vai al quadro elettrico principale dell’appartamento.

Vale sempre la regola: la 220V è mortale, se non lo sai fare chiedi aiuto.

E’ necessario installare la pinza intorno alla fase o al neutro subito a monte o a valle dell’interruttore generale di casa. Ovviamente è necessario alimentare la scheda con un alimentatore a 5V. Le batterie non durerebbero abbastanza. Se l’elettricista ti fornisce due fili a 5V dentro il quadro basta saldarli alla D1 mini ai pin GND e 5V (questo limita di molto l’occupazione di spazio all’interno del quadro, visto che solitamente sono spazi ristrewtti, non può che fare bene.).

E la scatola?

Purtroppo mi manca, cerca qualcosa che sia adattabile e sia gradevole alla vista. Se sei bravo e attrezzato potresti fartela stampare in 3D.

Alcune note finali

  • Che la 220V sia molto pericolosa l’ho già detto? Non lo dico mai abbastanza.
  • La lettura della potenza impegnata non è precisa, in quanto la vera potenza la si calcola sapendo corrente e tensione, nel nostro caso sappiamo solo la corrente, ma non la tensione, che potrebbe oscillare tra 210 e 240V, quindi nella lettura c’è un minimo errore.
  • Il contatore non scatta istantaneamente al superamento dei 3500W, c’è quindi un po’ di tempo per intervenire prima di rimanere al buio. Se si assorbe invece un picco molto più alto, il contatore salta in pochi secondi.
  • Alcuni componenti sono da acquistare in Cina, è bene sapere che i tempi di consegna sono tra 30 e 60 giorni e che gli ordini da più di 20€ (circa) comprese le spese di spedizione sono tassati dalla dogana.
  • Con il passare del tempo i componenti potrebbero cambiare, smettere di essere prodotti o sostituiti da altri (Le D1 Mini in 3 anni sono cambiate 4 volte).

Adesso parliamo del software. Lo sketch proposto si integra con un server MQTT che registra le letture e le archivia da qualche parte per farci poi delle statistiche. Se il sistema è stand-alone si può aggiungere un LED che si accenda al superamento di una certa soglia o un buzzer che suoni al superamento della fatidica soglia.

Per fare queste attività è sufficiente collegare il dispositivo (LED o buzzer) a uno dei PIN Dx della WeMos (cercate sempre i datasheet per capire come si collegano) e mettere nel codice una IF che se l’assorbimento è troppo, eccita il pin che alimenta il dispositivo

// mettere in cima la dichiarazione che il PIN in uso è il 16 (quindi D0)
pinMode(16, OUTPUT);

// una volta tolte le parti di connessione a MQTT e invio a MQTT si può
// usare la variabile "wattTrasmettere" per capire se c'è l'allarme
// da attivare
if (wattTrasmettere > 3200) //si attiva se al potenza è > di 3200 Watt
{
// attiva il pin (mette 3,3V)
digitalWrite(16, HIGH);
}
else
{
// disattiva il pin (mette 0V)
digitalWrite(16, LOW);
}

Raspberry, Arduino o ESP?

Durante la Maker Faire di Roma, mentre raccontavo come funziona il mio progetto La Domotica fai-da-me mi sono  trovato spesso a rispondere alla domanda “ma perché non usi Arduino al posto del Raspberry?”. Semplicemente perché sono due cose completamente diverse.

Vediamo se riesco a farlo capire anche a quelli che “Arduino cosa?”.

In questo articolo affronterò anche le differenze tra Arduino ed ESP, altra spiegazione data circa 1000 volte agli avventori della fiera. Tutti affamati di sapere, dovete sempre chiedere e fate sempre bene.

Da sinistra a destra: Raspberry Pi Zero, Raspberry Pi Mod 3B, Arduino Duemilanove (uno dei primi messi in commercio), WeMos D1 Mini con ESP8266 (è la scheda scura più piccola che si vede sulla scheda blu) e una scheda Arduino di nuova concezione, della serie MKR.

Il Raspberry Pi non è altro che un piccolo computer. Fa (quasi) le stesse cose che può fare un PC comune con Linux installato. E’ una scheda che contiene una CPU, della memoria RAM, una scheda video, una scheda audio, alcune porte USB, un’interfaccia di rete e uno slot per metterci la memoria da usare come disco per il sistema operativo. La nuova serie 3B può montare una versione specifica di Windows.

E allora, perché non usi un PC normale e parli di Raspberry Pi?

Questa è un’ottima domanda. Vediamo tutti i perché

  • E’ tutto in unico pezzo (alimentatore a parte).
  • Costa poco (da 10 a 30€ a seconda della versione).
  • Consuma poco (nell’ordine dei 10W o anche meno).
  • Ha la possibilità di interagire un po’ con il mondo reale usando i PIN di GPIO. Ci si possono collegare sensori o dispositivi seriali, cose che solitamente con un PC non si possono fare.

Ok, il Raspberry Pi è un piccolo PC, quindi perché al posto suo non usi Arduino che è comunque piccolo?

Perché sono due schede profondamente diverse. Se sul Raspberry Pi posso avviare un sistema operativo, utilizzare programmi, avere un DB e mille altre cose, con Arduino tutto questo non è possibile. Arduino è un semplice microcontrollore.

Arduino ha un suo firmware, è programmabile e una volta programmato eseguirà le operazioni che gli sono state impartite per sempre, a meno che non venga riprogrammato. La programmazione di Arduino avviene con un suo sistema di sviluppo (si chiama IDE) e il codice che si scrive è in un linguaggio molto simile al C.

Arduino accede al mondo fisico (sensori) in maniera molto più diretta, senza dover passare per svariati strati software o la schedulazione della CPU, che potrebbe rallentare di molto le letture o le scritture.

Visto che le cose sono già complicate così, sul mercato c’è un’altra scheda, un piccolo microcontrollore, che fa grossa guerra ad Arduino: la famigerata scheda ESP8266.

In fiera, per capire il livello delle persone con cui parlavo, chiedevo “Conosci il Raspberry? Conosci Arduino? Conosci la ESP8266?” Normalmente l’ultima non la conosceva nessuno. Quando andavano via capivo di aver tolto un cliente ad Arduino (scusami Banzi)

La scheda ESP8266 ha alcuni punti interessanti rispetto ad Arduino, per il quale è diretta concorrente:

  • Costa molto meno (3€ contro i 25€ per la più piccola Arduino)
  • E’ più piccola (davvero molto piccola)
  • Ha meno ingressi/uscite digitali
  • Non ha uscite analogiche
  • Ha un solo ingresso analogico
  • Ha il WiFi integrato
  • Si programma con lo stesso linguaggio e usando lo stesso software di Arduino

La scheda base è davvero semplice e limitata, ad esempio non si può programmare con la USB, ma ci va un adattatore USB-seriale. Per ovviare a questo ci sono molti produttori che le hanno montate su schedine un po’ più grandi per poterle usare più facilmente. Io uso da un po’ di tempo le schede WeMos che hanno anche una struttura a shield (letteralmente scudo), praticamente delle schede già assemblate che permettono di impilare alcuni accessori, come sensori e display, sul microcontrollore, evitando fili vari sparsi in giro.

Ma, dopo tutta questa manfrina, io cosa devo usare per i miei progetti?

Non lo posso sapere, ma quel che ti consiglio è questo:

Se devi interagire solo con sensori e attuatori scegli i microcontrollori. Inizia comprando il kit base di Arduino (visto, Banzi, che te li mando lo stesso?) e fai tutti i progetti. A questo punto sei pronto per passare alle ESP.

Se invece il tuo sistema è più complesso, con sensori distribuiti, gestione di un DB, accessi web e quant’altro, prendi in considerazione il Raspberry Pi, se il tuo progetto richiede molto utilizzo della CPU devi ripiegare su qualche scheda “fruttata” più potente (Banana Pi, Orange Pi, Odroid, Udoo …) o direttamente un mini PC. Se hai bisogno di qualche sensore o qualche accessorio particolare il mini PC potrebbe però non essere la scelta giusta.

Dai, voglio iniziare, dove spendo i miei soldi?

Per tutto quello che riguarda Raspberry io uso i siti ufficiali PiMoroni e The Pi Hut
Arduino lo puoi comprare sullo store ufficiale o su Amazon (<– link sponsorizzato)
ESP di solito si acquista direttamente in Cina, se ti perdi tra Aliexpress o Banggod, puoi aprire il sito ufficiale di WeMos (ora Lolin) e poi andare sul loro shop. Se compri in Cina adeguati ai tempi di consegna e attento che sopra circa 20€ (spese di spedizione comprese) compaiono le spese doganali.

E’ giunto il momento della Maker Faire

Ci siamo, oggi vado a montare lo stand del mio progetto La domotica fai-da-me alla fiera di Roma.

Se volete avere aggiornamenti in tempo (quasi) reale potete seguirmi su Twitter o su Facebook.

Se invece volete passare a trovarmi sarò al padiglione 8, stand B7 (non ho la cartina dettagliata della disposizione dei padiglioni, così potete farvi un giro per cercarmi) da venerdì alle 14 a domenica alle 19.

Vi aspetto!

Partecipare ad una fiera

Scrivo questo post a caldo, ancora stanco dei due giorni di fiera, dove in circa 20h ho percorso 20Km stando dietro al mio tavolo 160×80 (questo è quello che mi hanno detto l’orologio e i muscoli delle gambe).

L’esperienza della fiera è stressante. Prima perché hai paura che non funzioni un tubo di quello che hai preparato (Murphy è sempre lì che aleggia), poi perché devi essere all’altezza di quello che presenti, devi essere sicuro di te e lo devi spiegare (circa 3740378404783 volte) a chi vuole saperne di più.

D’altro canto la soddisfazione a fine evento è stata esaltante, un sacco di gente si è fermata, ha chiesto, incuriosita, ha voluto vedere il sistema all’opera e mi ha chiesto se lo vendevo (no, non è pronto per essere venduto).

Sono passati un sacco di amici a salutare, anche lontani. Grazie di cuore a tutti.

Si sono fermati molti bambini, in questo caso ho capito che devo studiarmi un modo di descrivere il progetto a loro misura, anche se in effetti non è un giocattolo.

Mi ha stupito molto, ma si sono fermate molte ragazze a chiedere informazioni, addirittura in una coppia, lui stava tirando dritto e lei lo ha fermato per chiedermi come funzionasse.

Il sistema ha sempre funzionato, anche se la pessima connettività (sovraffollamento di reti WiFi e della cella 3G piena all’inverosimile) ha giocato contro.

Molta gente è passata, ha preso le caramelle e non mi ha neanche guardato in faccia (vabbé, pazienza).

Ho ripetuto la descrizione del progetto moltissime volte, al punto tale che adesso modifico la pagina relativa al progetto scrivendo quel che dicevo in fiera.

Le slide che proiettavo sul monitor attiravano lo sguardo, ma poca gente le ha guardate tutte, le devo ripensare un attimo.

Devo modificare la casetta, perché alcune funzionalità erano davvero poco visibili, tra le quali una delle più importanti: il controllo dei consumi elettrici. Devo aggiungere un controllo extra, magari una pompa per l’irrigazione, dovrei modificare il bot in modo che risponda alle chiamate telegram degli avventori. In ogni caso usare la casa delle bambole di Ikea (idea di Valentina) è stato geniale per attirare le persone.

Ho anche trovato, forse, un po’ di possibilità di business e un modello che potrebbe funzionare per far fruttare qualche soldo da questo sistema (che non è minimamente pronto per essere venduto a chiunque, è facile da usare, ma decisamente complesso da installare).

Nei prossimi giorni aggiornerò tutti gli articoli relativi al progetto, perché per fare la casa da esporre ho modificato e migliorato alcune parti. Abbiate pazienza che arriva il tutto.

Visto come è andato il tutto, sto per fare l’application alla Maker Faire di Roma (fate il tifo per me!)

Torino Mini Maker Faire 2018

La Maker Faire è un evento organizzato in diverse parti del mondo dove maker (e tutto il mondo nerd che ci gira intorno) portano le loro realizzazioni per mostrarle o venderle al numeroso pubblico che viene attirato dall’evento.

Sono andato a vedere la fiera per molti anni, in quanto a Torino, da qualche anno, viene organizzata la Mini Maker Faire (mini perché è un evento della community). Qui ho sempre trovato spunti davvero interessanti e idee a tratti geniali.

Quest’anno ho fatto il grande passo e ho proposto il mio progetto di casa controllata dalla centralina che ho sviluppato io. Mi hanno accettato, quindi sarò presente come espositore 🙂

Se vi interessa vedere il sistema de “la domotica fai-da-me” funzionante (con un sacco di nuove funzionalità che ho sviluppato a discapito delle ore di sonno, in questi giorni) passate a trovarmi. Ne sarei davvero felice!

Dove?

Torino, Via Egeo 18, presso i locali del FabLab di Torino e Toolbox

Quando?

Sabato 2 e domenica 3 giugno 2018 dalle 10 alle 18:30

La Maker Faire ha anche un sacco di altri eventi come talk e laboratori, dalle 10 alle 20 di entrambi i giorni, secondo me un giro vale comunque la pena.

Ci vediamo lì?

Sensore di temperatura WiFi

Nel progetto della domotica fai da me non può mancare un sensore di temperatura, in questo caso con alcune caratteristiche particolari, utili a metterlo in ogni punto della casa senza dover cablare o far passare fili in giro per casa.

Le caratteristiche che sono riuscito ad ottenere sono:

  • Economico
  • WiFi
  • Portatile, quindi a batteria con una durata decente senza dover cambiare pile ogni pochi giorni.
  • Interfacciabile con la mia centralina basata sul Raspberry Pi

La lista della spesa è veramente minima e prevede, purtroppo, lunghe attese, perché tutto in arrivo dalla Cina.

La scheda WeMos D1 mini è basta su ESP8266, un microcontrollore tipo Arduino, ma con alcune caratteristiche che lo rendono davvero interessante.

Innanzitutto costa poco, con 4€ ci si porta a casa il processore, il modulo per alimentarlo e programmarlo via MicroUSB e tutta l’elettronica necessaria, poi è WiFi, di serie, senza nessun tipo di difficoltà a collegarlo alle reti casalinghe, ha la funzione di deep sleep, durante la quale non è attivo e consuma 0,3mA, questo lo rende perfetto per essere alimentato a batteria; in ultimo, ma non meno importante, si programma tramite l’IDE di Arduino, quindi il tutto è davvero semplice, se si ha già conoscenza della programmazione di Arduino.

Ho scelto la WeMos perché produce anche dei piccoli shields con sensori e altri dispositivi piccoli (relè, display OLED, …). Un po’ di pratica con il saldatore ed è possibile avere il proprio sensore di temperatura che occupa circa 2 cc (sì, è davvero piccolo!)

La parte di assemblaggio hardware è davvero banale: si saldano i pin sulla D1 e si saldano gli altri pin sullo shield, poi si collegano tra di loro. Fatto. Anzi, no, serve una saldatura aggiuntiva che colleghi tra di loro il pin RST e il pin D0 sullo shield con il sensore della temperatura.

img_2232
Saldare D0 a RST (attenzione, che se la piedinatura cambia dovete seguire i nomi dei pin e non la posizione che vedete in foto)

A cosa serve questo collegamento? E’ assolutamente necessario per il ciclo di deep sleep. Quando si impartisce il comando per questa specie di ibernazione, c’è un contatore interno che consuma molto poco e dà il segnale di reset al pin D1 al termine del conteggio, collegando il pin D1 al pin di reset questo sveglierà la scheda che riprenderà il suo lavoro, come appena accesa.

Perché devo saldarlo sullo shield? Perché quando questi due pin sono collegati tra loro è impossibile scrivere il programma nel microcontrollore, quindi quando si deve aggiornare il codice lo shield può essere tolto, così non ci saranno problemi.

L’alimentazione può essere fornita tramite 3 pile stilo AA alcaline o ricaricabili. messe in serie. Se alcaline, la tensione in uscita sarà 1,5×3 = 4,5V, se ricaricabili 1,2×3 = 3,6V (sapevate che le pile ricaricabili sono da 1,2 e non da 1,5?), la scheda funziona a 3,3V e ha un regolatore di tensione che le permette di funzionare anche con i 5V della USB, pertanto fornire un po’ più di 3,3V permetterà al tutto di funzionare adeguatamente.
Ho fatto un po’ di prove è sono giunto alla conclusione che i fili nero e rosso che escono dalla scatolina delle batterie possono essere saldati sulla scheda D1 Mini ai pin 5V (il rosso) e GND (nero). Con 3 pile stilo ricaricabili da 2000mAh sono arrivato a fare più di 6,500 letture (circa 90gg con una lettura ogni 20 minuti).

Dove saldare i cavetti delle batterie, attenzione alla polarità!
Dove saldare i cavetti delle batterie, attenzione alla polarità!

Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi

  1. Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
  2. Attiva la comunicazione con il sensore DHT22
  3. Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
  4. Scrive la lettura chiamando il server web (quello fatto sulla centralina, se non ve lo ricoardate, andate a vedere il post relativo) che la memorizza
  5. Va in ibernazione per 10 minuti (ma potete mettere il tempo che più vi piace) per poi ricominciare dal punto 1

Nel codice, al momento della scrittura del valore sul DB, c’è il parametro della stanza, così, avendo più sensori sparsi per casa, si può avere l’andamento della temperatura in ogni stanza. Ho dovuto faticare un po’ per la creazione del link http per scrivere i dati nel DB.

Scrivere il codice tramite l’arduino IDE è banale, basta seguire la semplicissima guida per abilitare la scheda, scegliere il dispositivo D1 mini (con me ha funzionato quello indicato come “retired”) e usarla esattamente come Arduino. Con il Mac non ci sono riuscito, ho fatto tutto con un PC Windows 10.

Se invece volete creare un qualunque altro sensore che misuri il parametro ad intervalli regolari (umidità, gas, pioggia, acqua nella terra delle piante, allagamento, …) basta sostituire il DHT22 con il relativo componente e studiare come interfacciarlo con l’ESP, solitamente ci sono librerie per ogni tipo di sensore.

Registrare i dati dei sensori in giro per casa

Sempre parlando del mio progetto di domotica fai da me, vi presento oggi le poche righe di codice necessarie per memorizzare i dati dei sensori che spargerò per casa (per la gioia di mia quasi moglie!).

L’obiettivo è rendere disponibile un server web che memorizzi i dati passati con una GET http, così da scrivere il codice dello sketch del sensore per registrare il dato in questo modo:

http://[ip_server]:[porta]/?variabile1=valore1&variabile2=valore2

Questo tipo di chiamate si possono generare molto facilmente con Arduino (a patto che abbia una connessione di rete) o con ESP8266.

Oltre al server che recepisce i dati, serve anche un posto dove memorizzarli, per questo ho installato SQLite sul mio Raspberry, un motore di DB leggero, veloce e semplice da usare con Python. Leggi tutto “Registrare i dati dei sensori in giro per casa”

Lettura istantanea del consumo di corrente

Attenzione! Non sono responsabile per qualunque danno fisico (ustione, folgorazione, ...) o materiale (incendio, corto circuito, ...) possa accadere mentre cercate di riprodurre tutto il progetto o solo in parte! Non ho alcuna sponsorizzazione dai produttori e rivenditori a cui faccio riferimento nel post.

Questo progetto fa parte del più grande lavoro della domotica fai da me ed è stato nominato come “gingillo del giorno” in Digitalia, episodio 324

Prima di partire vorrei sottolineare che questo progetto è un po’ complesso e vi porta ad armeggiare intorno alla 220V di casa, quindi ci va attenzione e servono un po’ di basi di programmazione, impianti elettrici, saldatura. Ho usato componenti vecchiotti, potrebbe essere necessario comprarne di diversi e per questo adattare programmazione e collegamenti, se siete alle prime armi fatevi aiutare, ad esempio, in un FabLab (se non sapete cos’è un FabLab ne abbiamo parlato diffusamente in questa puntata di GeekCookies)

Negli alloggi moderni il contatore della corrente elettrica non è in casa, ma in cantina, se aggiungiamo che gli elettrodomestici moderni consumano parecchio, mi è capitato spesso, causa disattenzione, di dover correre in cantina a tirare su la leva del contatore perché avevo fatto partire lavastoviglie e forno. Quando salta la corrente si spegne anche il router, il PC e una serie di altri dispositivi (ho poi messo vari UPS in giro per casa), insomma, una gran scocciatura.

Un altro utilizzo interessante è accendere i singoli dispositivi che avete in casa per capire esattamente quanto consumano. Ho scoperto che la lavatrice consuma molto, ma solo per metà del ciclo, inoltre consuma di più quando muove lentamente il cestello piuttosto che quando fa la centrifuga. Ho scoperto che i 250W della lampada alogena richiedono un’immediata sostituzione con una a LED e che lavorare con il Mac consuma circa 250W. Spegnere con un interruttore TV, console, BluRay e compagnia quando non li uso mi fa risparmiare 7-8W (fate due conti sull’anno intero) e che ho un consumo “di fondo” (tutto spento, tranne i router, il frigo, il sensore stesso, il mio server) di circa 150W.

Leggi tutto “Lettura istantanea del consumo di corrente”

Videosorveglianza con Raspberry Pi via Telegram

Vi ricordate che qualche tempo fa ho messo su un sistema per la videosorveglianza di casa usando il Raspberry Pi, il programma motion e gestibile da Twitter? Se no, qui potete trovare tutte le informazioni.

Visto che Twitter è una piattaforma che mi è sempre piaciuta appena sopra la sufficienza ho scoperto questa cosa dei bot di Telegram e ho pensato: “perché non cambiare la gestione del sistema?”

Partiamo dall’inizio: cos’è un bot?

Un bot (è il diminutivo di “robot”) è un progamma che, se sollecitato con appositi comandi, compie alcune azioni. La piattaforma di Telegram propone un sistema di bot ben documentato e incredibilmente facile da utilizzare. E, detto tra noi, il fatto che la gestione dei bot sia fatta tramite un bot chiamato TheBotfather la cui icona è questa

The Botfather Telegram

la cosa è ancora più divertente.

Ok, torniamo seri e vediamo come fare il progetto. Per tutta la parte di motion andate a rileggervi i post vecchi, non cambia nulla (soprattutto la prima e seconda parte).

Per creare il bot su Telegram (e poter interagire in un secondo momento) dovete avere un account sulla piattaforma, se non ce l’avete createvelo che è una validissima alternativa gratis e aperta ad Whatsapp. La guida per creare il bot è veramente semplice. Una volta scelto il nome lo create e vi mettete da parte il codice univoco (non va divulgato!) del vostro nuovo amico.

Seguendo le istruzioni della documentazione di Telegram potete assegnare un’icona al vostro amato bot e la lista dei comandi, così da semplificare la gestione del bot e scrivere pochissimo con la tastiera del telefono. Una cosa estremamente comoda dei bot è che possono proporre delle tastiere personalizzate in modo da dare i comandi con un solo tap, con questo nuovo sistema basta un tap per accendere il sistema, spegnerlo o conoscerne lo stato, anche se fa freddo e avete le dita ghiacciate, non è più necessario scrivere strani comandi.

Adesso installate la libreria Python telepot nel vostro sistema, in modo da poter operare con pochissimi comandi e far funzionare come si deve il vostro bot.

Come la volta scorsa, ci sono alcuni file da creare:

  • tvcc.py, il cuore del sistema, con la logica del bot e le funzioni per accendere, spegnere e controllare il sistema (avviato al boot del sistema)
  • avvisa_movimento.py, che vi manda un messaggio quando viene rilevato un movimento (avviato dal sistema motion)
  • invia_foto.py, che vi invia tutte le foto della rilevazione del movimento man mano che vengono generate (avviato dal sistema motion)
  • tvcc.conf, il file di configurazione con tutte le opzioni necessarie per farlo funzionare nel vostro ambiente.

Tutti i sorgenti li trovate nel repository di Github, il codice è abbondantemente commentato in modo che possiate adattarlo in base alle vostre necessità.

Prima di iniziare ricordatevi la lista della spesa:

  • Raspberry Pi Modelli A+, B, B+, B+2 (non va bene lo zero perché non ha il connettore della videocamera)
  • Videocamera IR (per vedere anche al buio)
  • Illuminatore IR (la videocamera non vede al buio, ma vede la luce infrarossa)
  • Una scatola per il Raspberry e la videocamera (inutile dire che deve essere ben ferma, se no tutto il sistema va a pallino)
  • Un alimentatore per il Raspberry
  • Una scheda SD, che senza il Raspberry è inutilizzabile.