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
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%
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).
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:
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.
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:
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.
Connettore jack cuffia 3,5mm femmina (potreste farne a meno tagliando il jack della pinza e saldando i fili direttamente sulla scheda).
Alimentatore 5V, tipo quello dei cellulari, con il cavetto microUSB
Una spina Italiana (serve solo per il test)
Una presa ITA/TED (serve solo per il test)
Tre pezzetti di filo elettrico di rame, uno nero, uno blu e uno giallo/verde (magari chiedili ad un amico se ha fatto di recente lavori in casa) da 4mm di sezione
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); }
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.
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.
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.
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!)
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.
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.
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).
Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi
Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
Attiva la comunicazione con il sensore DHT22
Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
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
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.
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:
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”
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.
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.
C'è qualche cookie, se non ti va, fai click su Rifiuta tutti e viviamo tutti più felici. (questa fastidiosa barra c'è solo perché lo chiede la legge e uso alcuni puglin con i cookie, scusami)
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Durata
Descrizione
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analytics
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Analytics" category .
cookielawinfo-checkbox-functional
1 year
The cookie is set by the GDPR Cookie Consent plugin to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Necessary" category .
cookielawinfo-checkbox-others
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Others".
cookielawinfo-checkbox-performance
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Performance".
CookieLawInfoConsent
1 year
Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
_GRECAPTCHA
5 months 27 days
This cookie is set by the Google recaptcha service to identify bots to protect the website against malicious spam attacks.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Durata
Descrizione
CONSENT
2 years
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Durata
Descrizione
VISITOR_INFO1_LIVE
5 months 27 days
A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSC
session
YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-id
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.