Raspberry Pi misurare temperatura

 

Raspberry Pi misurare temperatura

 

raspberry pi misurare temperatura

 

Ci sono tanti modi per misurare consumi ed andamenti con il Raspberry Pi. Oggi vorrei illustrare un modo molto semplice per misurare una temperatura in modo continuo con il Raspberry Pi. Come base utilizzo il sensore DS18S20 e il protocollo 1-Wire di Dallas Electronics. Siccome sono un grande fan di andamenti, voglio anche mostrare come si possono visualizzare i dati raccolti.

Il Raspberry Pi offere la possibilità di comunicare con dispositivi / periferiche esterne attraverso alcuni sistemi di bus già presenti sui PIN della GPIO. Nel kernel di Raspbian ci sono tutte le funzioni – moduli per attivare connessioni con questi dispotivi.

 

Collegamento Raspberry Pi – DS18S20 in Parasite Powered Mode

Il DS1820 utilizza un protocollo chiamato 1-Wire. La linea dati e alimentazione del sensore possono essere raggruppati su un singolo filo, questa modulità si chiama Parasite Powered Mode. Si possono utilizzare fino a 16 sensori sullo stesso segmento bus.

raspberry pi misuare temperatura

 

 

 

 

 

Caricare moduli kernel

Per poter interrogare il sensore servono i moduli w1_gpio e w1_therm, quindi una volta collegato il sensore (i sensori) al Raspberry, bisogna caricare i moduli nel kernel,

controllare se i moduli sono stati caricati correttamente,

ed infine registrare i moduli in /etc/modules per garantire un caricamento autonomo di essi al prossimo avvio del sistema,

aggiungendo queste righe al file.

Testare il funzionamento del sensore

Adesso per interrogare il sensore, si usa un file creato dal kernel come interfaccia. É il metodo classico per interfacciarsi con dipositivi in sistemi unix. Come prima cosa dobbiamo individuare la cartella creata dal sistema, di cui il nome specifica il Family-Code e il Unique Serial Code del sensore. In effetti, usando più sensori, cosi diventano disdistinguibili uno dall’altro, avendo ognuno il suo codice univoco. Questa cartella la troviamo in /sys/devices/w1_bus_master1:

Adesso nel mio caso la cartella ha il nome 10-000802ad5df9, sapendo questo possiamo accedere (cat) al sensore attraverso il file w1_slave che si trova all’interno di questa cartella.

raspberry pi misurare temperature

L’output contiene ancora il Register Dump e la Checksum dell’operazione (interrogazione). Il valore della temperatura letta si trova alla fine della seconda riga sotto „t=“.

 

Raspberry Pi misurare temperatura – autolettura valori

Io sul Raspberry non ho installato ne PHP, Python, ne MySql, SQLite. Mi piace un sistema snello, perchè quando i progetti diventano più impegnativi, è sempre meglio guardare anche la performance del sistema. Certo, in questo caso con solo un sensore, siccuramente non servono test di benchmark, anyway.

Un modo molto semplice per eseguire azioni in linux, sono gli shell script. Questo shell script poi viene eseguito periodicamente da cron (crontab).

temperatura.sh

Descrizione programma:

  • Con while creiamo un loop infinito,
  • nella variabile temper
    con grep andiamo a cercare la stringa (le stringhe) partendo dall’espressione „t=“ nel file w1_slave
    il comando awk filtra, elimina la parte „t=“ ($1) e lascia solo il valore della temperatura ($2)
  • con la variabile timestamp creiamo un timestamp per poter associare successivamente il valore raccolto della temperatura a un determinato periodo.
  • con echo scriviamo timestamp e temperatura in formato CSV in un file di testo
  • sleep ferma la esecuzione per 900 secondi

 

In poche parole, ogni 15min scriviamo valori in formato csv dentro un file di testo. Con un pò di fantasia, invece del csv, si potrebbe anche creare un output in xml.

Sono un grande fan di csv e xml, perchè di lasciano tanta libertà per elaborare i dati raccolti successivamente.

Adesso dobbiamo cambiare i permessi del nostro file per poterlo eseguire:

Il file adesso viene eseguito affinchè non chiudiamo la bash o spengiamo il Raspberry Pi. Se vogliamo che questo file viene eseguito in automatico dopo l’avvio del sistema, li dobbiamo associare un cronjob. Apriamo crontab

e aggiungiamo questa riga

Adesso potremmo levare anche la riga „sleep 900“ dallo script. Il file di testo, alla fine si presenterà cosi:

temperatura.txt

Raspberry Pi misurare temperatura – elaborazione dati

raspberry pi misurare temperatura grafico
 

Gli ultimi passaggi adesso, sarebbero il trasferimento dei dati su un server (per chi lo volesse fare) e la visualizzazione grafica dei dati raccolti. Su come si possono visualizzare dati, consiglio Raspberry Pi visualizzare grafici.
 
 

L’autore del blog

Werner Schrottenbaum è un appassionato di tecnologia e innovazione. Per scoprire di più, seguilo su Twitter e Google+.

Leave a comment




Allowed HTML Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="" class="" title="" data-url=""> <span class="" title="" data-url="">


Datalogger fotovolta

  Datalogger fotovoltaico con Linux     Ho un'amico, che utilizza per fare il ...

Raspberry Pi visuali

  Raspberry Pi visualizzare grafici Sono "addicted" di andamenti grafici, secondo me ...

Raspberry Pi porta s

  Raspberry Pi porta seriale   Per chi come me, viene dall'automazione industriale, ...

Raspberry Pi misurar

  Raspberry Pi misurare temperatura     Ci sono tanti modi per misurare consumi ...

Raspberry Pi convert

  Raspberry Pi convertitore A/D   Oggi vi presento un modulo A/D con ...

Datalogger fotovolta

  Datalogger fotovoltaico con Linux     Ho un'amico, che utilizza per fare il ...

Raspberry Pi visuali

  Raspberry Pi visualizzare grafici Sono "addicted" di andamenti grafici, secondo me ...

Raspberry Pi porta s

  Raspberry Pi porta seriale   Per chi come me, viene dall'automazione industriale, ...

Raspberry Pi misurar

  Raspberry Pi misurare temperatura     Ci sono tanti modi per misurare consumi ...

Raspberry Pi convert

  Raspberry Pi convertitore A/D   Oggi vi presento un modulo A/D con ...