domenica 23 novembre 2014

Controllo Remoto per Caldaia - HW

In questo post descrivo come ho sviluppato un semplice controllo remoto per il mio sistema di riscaldamente casalingo.

Il mio obiettivo e' di creare un semplice sistema che risponde a queste due domande:


  1. come accendo/spengo il riscaldamento quando sono fuori casa? 
  2. come programmo in modo flessibile il mio sistema di riscaldamento? 

Attualmente il riscaldamento autonomo e' controllato dal classico termostato a muro



Cio' non mi fornisce la flessibilita' richiesta per i punti #1 e #2

Un giorno che mi e' capitato un raspberry pi model B per le mani e quindi mi sono detto: perche' non rimpiazzare il termostato a muro con un raspberry?

Da qui ho iniziato questo home project.

Il primo passo e' stato ottenere l'approval dal mio boss (moglie ???) :), la quale ha immediatamente aggiunto un terzo requisito:

3. il controllo tramite termostato a muro deve sempre essere funzionante e non essere rimpiazzato dal raspberry

 Bene adesso che tutti i requisiti sono chiari posso iniziare la realizzazione.

Circuito Iniziale

Il circuito di accensione della caldaia e' il seguente:




Circuito Finale

Per rispettare il requisito #3 ho modificato questo semplice circuito nel modo seguente:




In questo modo abbiamo realizzato un OR logico tra il Raspberry Pi ed il termostato a muro permettendomi di soddisfare tutti e 3 i requisiti:


  1.  tramite il raspebbry posso far scattare il relay e quindi accendere/spegnere la caldaia da remoto
  2. tramite software posso programmare il raspberry per accendere e spegnere la caldaia in modo flessibile
  3. in caso in qui il Rasperry non funzioni (mancanza di rete, guasto, etc...) la caldaia viene attivata normalmente dal termostato a muro

Assemblaggio

Per realizzare il controllo remoto della caldaia ho utilizzato i seguenti componenti:


Passo 1: Preparazione del contenitore
Ho posizionato il raspberry in un angolo della scatola di derivazione, dove verra' poi fissato tramite una vite







Siccome la mia scatola di derivazione non e' grande abbastanza per contenere totalemnte il raspberry ho dovuto, in maniera un po' spartana, segnare con una matita dove dovranno essere create le fessure per il cavetto di alimentazione  e per la schedina SD.





Come notate le fessure sono state effettuate con un trapano ed una piccola punta da legno. Se avete uno strumento migliore otterrete delle fessure piu' regolari. Non sono proprio orgoglioso di come ho realizzato le fessure :)

Passo 2: Fissaggio Scatola a muro

Ho forato la scatola con una piccola punta in modo da poter inserire un dado e bullone per fissare il raspberry alla scatola.



Successivamente ho incollato la scatola al muro del mio vano caldaia tramite una colla "mille chiodi". In questo modo ho evitate di forare il muro e di inserire almeno due tasselli.

Ovviamente questa e' stata la mia preferenza. Il lettore e' libero di fissare la scatola al muro nel migliore dei modi.

Passo 3: Cablaggio Raspberry

Il cablaggio e' veramente semplice. Ci servono solamente:

  • VCC +5V
  • GND
  • 1x GPIO (#15) ma se ne puo' usare uno a piacere. Io ho scelto il 15 per ragioni di layout dei fili




In particolare ho cablato i fili sul raspberry in questo modo:



  • filo verde   -> +5V  = Pin 2
  • filo bianco -> GND = Pin 6
  • filo giallo  ->  GPIO 15 = Pin 10


Questi Pin sono validi per Raspberry B revision 2. Se usi un raspberry diversi assicurati di usare il GPIO layout corretto per evitare malfunzionamenti.




Passo 4: Cablaggio modulo rele'

Come visto nello schema del circuito finale devo aggiungere un rele' che sia pilotato da un GPIO (#15) del raspberry.

Tempo fa' ho acquistato un module relay a 5V da un sito online http://www.dx.com/p/arduino-5v-relay-module-blue-black-121354#.VHJFwIvF98E


Siccome avevo disponibile questo modulino l'ho usato per questo progetto. Ovviamente il lettore puo' decidere di usare un altro modulo oppure di usare un rele' senza modulo. Suggerisco in ogni caso l'aggiunta del diodo di protezione altrimenti si rischia di bruciare il raspberry o almeno la linea del GPIO usato.

Ho effettuato il cablaggio del modulo rele' in questo modo:




filo bianco ->  pin - del modulo
filo verde   ->  pin + del modulo
filo giallo   ->  pin S del modulo

Per ragioni di assemblaggio all'interno della scatola a muro ho usato 3 coppie di fili in modo da avere un cablaggio piu' lungo. Infatti con i fili a mia disposizione ho trovato difficile far restare in posizioni i fili sul connettore dei GPIO di raspberry. Al contrario con un cablaggio piu' lungo ho eviatto il problema.

Quindi nel mio caso ho poi collegato i fili dal raspberry a quelli del modulo rele' tramite un piccolo mammut




Questo cablaggio non e' obbligatorio. Lascio al lettore la decisione finale.

Passo 5: Assemblaggio del circuito nella scatola a muro

A questo punto abbiamo finito con i semplici cablaggi del raspberry e del modulo rele'. Adesso non mi resta che montare il tutto all'interno della scatola a muro.

Ho fissato il raspberry alla scatola tramite la vite precedentemente inserita. Assicuratevi che la colla mille chiodi abbia fatto presa bene (a me si e' staccata due volte :) )

Dopo ho collegato il Netgear WNCE2001  ad unaporta USB per l'alimentazione dello stesso ed un corto cavo ethernet alla porta del raspebrry.
In questo modo ho una connettivita' alla mia rete wifi stabile e funzionante.





Il dongle Wifi a mia disposizione si e' rivelato instabile e non affidabile.

Come sempre il lettore e' libero di utilizzare la soluzione preferita per avere connettivita' ad Internet.

Ora devo alloggiare il modulo rele' correttamente cablato come visto sopra.
Per far cio' ho adottato un piccolo stratagemma dato che non avevo altro spazio utile nella scatola a muro.
Ho inserito una piccola lastra di plexiglass sopra il raspberry e l'ho fissata tramite l'unica vite presente.




In questo modo ho creato un secondo "piano" su cui alloggiare  il modulo rele' che a sua volta e' fissato tramite l'unica vite presente.


Passo 6: Collegamento alla caldaia e chiusura scatola a muro

A questo punto siamo nella fase finale.


  • Inserimento scheda SD con Raspian e software di controllo
  • Inserimento spinotto di alimentazione
  • Collegamento al circuito di accensione della caldaia come definito nel circuito finale




Dopo di cio' ho chiuso la scatola a muro che le viti fornite


Se gradito si possono chiudere le fessure con silicone o altro sigillante. Io non l'ho fatto siccome sono lazy e siccome il vano caldaia e' completamente asciutto.

Ovviamente in un futuro (mai :) ) mettero' del nastro isolante per coprire i fili che per'altro sono gia isolati :). Insomma la parte da elettricista non mi interessa. :) La parte divertente e' il software di controllo.....

Ottimizzazioni

Possibili ottimizzazioni che ho gia' in mente:

  • sostituzione modulo Netgear per connettivita' Wifi con dongle USB funzionante
  • sostituzione raspberry con modello A+ di minor dimensioni e consumo
  • sostituzione scatola a muro con una di minor dimensioni
  • sostituzione raspberry con modulo arduino e ricevitore RF con conseguente riduzione costi

Software

In questo post Controllo remoto per caldaia e raspberry ho descritto il software per il Raspberry e per il client.

Conclusioni

Questo mini progettino casalingo mi ha divertito parecchio. Con poca spesa adesso ho un sistema di controllo del mio riscaldamento casalingo infinitamente piu' flessibile del classico termostato a muro.

Ovviamente avrei potuto cercare delle soluzioni sul mercato, ma in puro spirito "maker", "tinkering" e' piu' divertente farsi le cose dasolo.

Chiunque abbia delle migliorie si faccia sotto. Saro' ben felice di apportarle al mio progetto.


Nota

Nel mio caso ho notato che il raspberry dopo un certo periodo (circa 30+ minuti) di inattivita' perdeva la connettivita' wifi. Molto probabilmente e' dovuto ad uno stand-by del modulo Netgear.


Per evitare cio' ho aggiunto una semplicissima linea al cron

*/30 * * * * /home/pi/cron_ping.sh


more cron_ping.sh

#!/bin/bash



logger "*********************************************"

upt=`uptime | awk -F " " '{print $3}'`

for i in {1..3}; do

    ping -c 1 www.google.com

    logger `date` ping GOOGLE $i -- uptime: $upt

    sleep 1

done

logger "*********************************************"
Lo script e' banalissimo e pinga google per 3 volte ogni 30 minuti

Cosi' il problema e' stato risolto in maniera banale ed ora il raspberry e' sempre raggiungibile via Internet (ops non proprio da tutti ) :)

PS: tempo libero permettendo seguiranno un paio di post per il software di controllo sia lato server che lato client.....