Pian piano, dobbiamo pensare all’inverno che sta arrivanto (Sono uno Stark 🙂 ) e organizzarci per stare al calduccio. I nostri antenati andavano sulle montagne a far la legna che poi facevano scorrere tramite il fiume per farla arrivare in pianura e venderla o tagliarla. Ecco noi, siamo un po’ piu tecnologici e ci organizziamo con un semplice termostato che ci autocostruiremo. Per farlo ci serve:

  • Un raspberry con microsd e alimentatore:

  • Un sensore di temperatura:

Un piccolo appunto su questo tipo di sensori: Non sono molto precisi, hanno uno scarto di più/meno 0.5° ma per il nostro scopo va piu che bene

  • Un relè:

  • Un pulsante:

  • Un display LCD 20×4 o 16×2 che abbia un adattatore i2c per semplificarci la vita:

Ora che abbiamo acquistato tutto possiamo partire con il nostro nuovissimo progetto. In cosa consiste? Un termostato funziona cosi: quando la temperatura letta è inferiore alla temperatura massima impostata fa scattare un relè collegato alla caldaia facendola partire. Una volta che la temperatura raggiunge quella massima riscatta spegnendo la caldaia. Per evitare che scatti di continuo metteremo un paio di gradi di tolleranza. Inoltre, con il pulsante faremo scattare manualmente il rele, in base al suo stato.

Capite che è un progetto con infinite potenzialità. Ma sta alla vostra fantasia espanderlo. Lo scopo di questo sito è dare spunti.

Iniziamo con l’installare raspbian e ad abilitare i protocolli 1wire e i2c.  Abilitiamo anche ssh dallo script raspi-config. A questo punto spegniamo tutto e facciamo i collegamenti come riportato nell’immagine qui sotto:

Nota: Per semplicità di collegamenti ho collegato tutto ai 5V del raspberry ma sarebbe meglio non farlo perchè potrebbe non riuscire ad alimentare tutto. Consiglio alimentazioni esterne per i componenti, m a ricordate di utilizzare la massa comune al raspberry. Il sensore di temperatura non è quello giusto. Non ho trovato in fritzing il componente esatto.

Iniziamo a programmare:

Creiamo innanzitutto due file uno chiamato tmax.txt e uno chiamato status.txt all’interno della home digitando

e scriviamoci dentro 21. Salviamo, usciamo e allo stesso modo creiamo l’altro file scrivendoci dentro 0.

Scarichiamo da qui i driver lcd e mettiamoli nella stessa cartella (a noi servono solamente i file i2c_lib.py e lcddriver.py). Se avete il display 20×4 i driver li trovate qui.

Ora creiamo il file termostato.py e iniziamo con l’importare le librerie

Ora settiamo i GPIO:

Fin qui niente di difficile. Abbiamo detto al nostro programma di impostare i pin per sensore, pulsante e rele e rispettivamente abbiamo detto quali sono pin di input e quali di output. Inoltre abbiamo usato la numeratura BCM anzichè la numeratura board.

Questa funzione legge la temperatura massima impostata.

Questa funzione legge lo stato della caldaia.

Questa prima funzione serve a convertire il valore letto dal sensore in gradi celsius.

Questa funzione, invece accende la caldaia. Apre il file status.txt creato in precedenza, legge lo stato. Se 0 accende se 1 vuol dire che è già accesa quindi non fa niente.

Questa funzione estrae la data e l’ora attuale.

Questa funzione è identica alla funzione accendi solo che spegne la caldaia.

Questa funzione prende in ingresso due valori: la temperatura attuale e la temperatura massima impostata. Legge lo status. Se la caldaia è accesa e la temperatura nella stanza è maggiore della temperatura massima impostata spegne la caldaia. La riaccenderà quando la temperatura scenderà di 3 gradi sotto la temperatura massima. Questi 3 gradi li ho messi come tolleranza, altrimenti alla soglia il relè staccherebbe e attaccherebbe di continuo, rischiando di bruciare la caldaia.

Vediamo ora il loop che girerà all’infinito, ma prima una premessa. I sensori 1wire hanno un id univoco. Questo id si trova nella cartella /sys/bus/w1/devices/ . Dovremo quindi ovviamente sostituire l’id con quello che uscirà a display.

Commentiamo fin qui: Abbiamo estrapolato la data, letto la temperatura attuale, letto la temperatura massima e fatto un controllo. A questo punto abbiamo richiamato la funzione stato display che altro non fa che leggere lo stato della caldaia e preparato le stringhe da mostrare a display.  Andiamo avanti

Qui entra in gioco il nostro pulsante. Se viene premuto e lo stato è 0 allora accendi la caldaia e scrivi sul file status. Se invece lo stato è 1 allora spegni la caldaia e scrivi sul file il nuovo status.

Infine scrivi tutto a display. Sulla prima riga mettiamo la data e l’ora, sulla seconda invece la temperatura letta in questo momento.

Abbiamo finito, non ci resta che demonizzare il file, riavviare e se sul display si vede qualcosa vuol dire che abbiamo fatto correttamente. Non ci resta che montarlo in una scatolina come questa e goderci il calduccio.

A casa mia ho fatto il progetto un po’ più complesso. Un sensore in ogni zona con 3 rele che pilotano 3 pompe di calore diverse.

Vi ho preparato uno zip dove trovate tutto già pronto se non avete voglia di studiarvi il codice che potete scaricare da qui.

Alla prossima.

 

[PROGETTO] Un termostato con raspberry
Tag:                         

Rispondi