Raspberry PI: Sensore di Temperatura ed Umidità

Raspberry PI DHT11
Raspberry Pi e DHT11 Sensore

15 agosto e la sera esco con camicia e felpa, quale miglior giorno per provare il mio nuovo sensore di temperatura ed umidità tramite il Raspberry Pi ? 😛

il Sensore in questione (DHT11) è uno di quelli “cinesi” che si trovano a pochi euro in qualsiasi negozio online. Ha un range di misurazione della temperatura tra 0-50°C & un range di umidità tra 20-95%.

Online si trovano miriadi di link su come collegarlo al nostro Raspberry Pi, La foto allegata all’inizio del post vi mostra il mio schema…

Bhe ammetto che si capisce molto poco, forse meglio utilizzarne uno preso dal web 😀

Sensor dht11 wiring
Schema collegamento DHT11
DHT11_Pins
Dettaglio Pins DHT11

Una volta collegato il nostro sensore al Raspberry PI (io uso il connettore Adafruit ) non vi resta che scaricare le librerie per l’interfacciamento con il sensore

[sourcecode language=”bash”]

$ git clone git://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
$ cd Adafruit-Raspberry-Pi-Python-Code
$ cd Adafruit_DHT_Driver

[/sourcecode]

Bene, una volta scaricato il binario ( già compilato per il nostro processore) possiamo eseguirlo direttamente dalla shell dei comandi

[sourcecode language=”bash”]
root@raspberrypi: ./Adafruit_DHT 11 4
Using pin #4
Data (40): 0x24 0x0 0x1c 0x0 0x40
Temp = 28 *C, Hum = 36 %
[/sourcecode]

Dove “11” indica il modello del sensore, ed il “4” indica il PIN GPIO a cui è collegato.

Non sarebbe bello avere un grafico con l’andamento della temperatura ed accessibile ovunque tramite web??

Esistono molto modi (e molte API) per esportare i dati sul web, io ho utilizzato le API che google docs mette a disposizione.

1) Creazione Spreadsheet

Prima di tutto andiamo su google docs e creiamo il nostro spreadsheet dove andremo ad inserire i nostri dati

Creazione spreadsheet
Creazione spreadsheet

1) Installazione Ed esecuzione della libreria Python

Per poter fare upload dei dati presi dal sensore, possiamo utilizzare una libreria che ci semplifica di molto le operazioni per l’interfacciamento con google. La libreria in questione si chiama GSpread

[sourcecode language=”bash”]
wget http://pypi.python.org/packages/source/g/gspread/gspread-0.0.13.tar.gz#md5=d413ad08805f3f0a1e9d5f9bebe5d35b
tar -zxvf gspread-0.0.13.tar.gz
cd gspread-0.0.13
sudo python setup.py install
[/sourcecode]

Una volta installata dobbiamo modificare alcuni opzioni: andiamo nella directory Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver ed editiamo il file Adafruit_DHT_googledocs.ex.py nei seguenti punti:

[sourcecode language=”python”]
# ===========================================================================
# Google Account Details
# ===========================================================================

# Account details for google docs
email = ‘you@somewhere.com’
password = ‘my_password’
spreadsheet = ‘Temperature_Flavio_Home’
..
..
..
output = subprocess.check_output(["./Adafruit_DHT", "11", "4"]);

[/sourcecode]

Inserendo rispettivamente i dati del nostro account di google, il modello del nostro sensore (DHT11 nel mio caso) ed il pin a cui è collegato (4)

Se tutto è andato nel verso giusto avremo come output della shell

[sourcecode language=”python”]
pi@raspberrypi ~/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver $ sudo python Adafruit_DHT_googledocs.ex.py
Using pin #4
Data (40): 0x25 0x0 0x1a 0x0 0x3f
Temp = 26 *C, Hum = 37 %

Temperature: 26.0 C
Humidity: 37.0 %
Wrote a row to Temperature_Flavio_Home
Using pin #4
Data (40): 0x25 0x0 0x1a 0x0 0x3f
Temp = 26 *C, Hum = 37 %

Temperature: 26.0 C
Humidity: 37.0 %
Wrote a row to Temperature_Flavio_Home
Using pin #4
Data (40): 0x24 0x0 0x1a 0x0 0x3e
Temp = 26 *C, Hum = 36 %
[/sourcecode]

Mentre se apriamo il nostro spreadsheet vedremo in real-time i valori letti dal nostro Raspberry Pi 😀

Questo è il grafico della mia stanza…

https://docs.google.com/spreadsheet/ccc?key=0AvfMfLVFJ7CPdHlNVzlzNmNNM01JMGZTTlA4bGl2WkE&usp=sharing

graph temperature Dragonetti
graph temperature Dragonetti