Monitor de temperatura y humedad con Raspberry Pi

2013-04-08_21-26-18_738.jpg

Otro de los proyectitos con los que estuve jugando hace algún tiempo, pero que nunca tuve la oportunidad de compartir en el blog, fue un monitor de temperatura y humedad con Raspberry Pi.

La idea es muy sencilla. Es el poder saber la temperatura y humedad que hace en una habitación (o donde se encuentre nuestro Raspberry Pi) en todo momento.

Para este proyecto, además de un Raspberry Pi con su conector de corriente y tu tarjeta con Raspbian, usé este sensor. Este sensor tiene una precisión bastante buena:

  • Humedad: 0% a 100% con un error de 2-5%.
  • Temperatura: -40 a 80 grados centígrados con un error de 0.5 grados.
Una vez tenemos todas las piezas del puzzle, lo próximos es ponerlas junta. Para el montaje del sensor con nuestro Raspberry Pi, usaremos este esquema: dht22wiring.gif

Aquí, como vemos estamos conectando (cable azul/verde) al GPIO número 4. Si quieres, puedes usar cualquier otro the los puertos disponibles. Por cierto, si compras ese sensor, ya te viene con la resistencia.

Aquí podéis ver una foto del montaje mío:

2013-04-08_21-26-01_8.jpg

Pues ya que tenemos el hardware listo, ahora toca probarlo. Para ello necesitaremos una librería para trabajar desde C con el chip Broadcom BCM 2835, que es el que incorpora Raspberry Pi para controlar el GPIO. Para ello podemos ejecutar los siguientes comandos desde el Raspberry Pi:

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.25.tar.gz tar zxvf bcm2835-1.25.tar.gz cd bcm2835-1.25 ./configure make sudo make check sudo make install

La razón de usar C es que en su defecto, Python no es capaz de leer lo suficientemente rápido, por lo tanto en estos momentos nuestra única (a menos que alguien se atreva con ensamblador) opción es C. Con ello tenemos instalada dicha librería en el sistema. Ahora clonamos de Github un pequeño programa, que será el que se comunique con el sensor y lo compilamos:

git clone git://github.com/tuxotron/DHT22.git cd DHT22 make

Si todo ha ido bien tendrás una salida como esta:

tuxotron@raspberrypi ~/DHT22 $ make gcc -c -o dht22.o dht22.c -std=c99 -I. -lbcm2835 dht22.c: In function ‘readDHT’: dht22.c:67:3: warning: implicit declaration of function ‘usleep’ [-Wimplicit-function-declaration] gcc -o dht22 dht22.o -std=c99 -I. -lbcm2835

Tenemos un warning ahí, pero por ahora lo vamos a ignorar. Y ahora toca probarlo. El comando hay que correrlo con permisos de root y hay que pasarle un número como parámetro, el cual es el número del puerto GPIO que hayamos conectado al sensor, en nuestro caso el número 4:

tuxotron@raspberrypi ~/DHT22 $ sudo ./dht22 4 [sudo] password for tuxotron: {temperature:“25.2”, humidity:“55.9”}

Como vemos el sensor me dice que la temperatura actual es de 25.2 grados centígrados y hace una humedad de 55.9%.

Con esto ahora mismo ya prácticamente puedes hacer lo que quieras. Puedes crear procesos cron para que lea la temperatura y/o humedad y tome algún tipo de acción, por ejemplo que mande un correo electrónico si la temperatura sube de los 30 grados, o cualquier otro número. Ideal para controlar la temperatura de un CPD por ejemplo. O quizás quieres guardar la temperatura y humedad cada cierto intervalo y hacer algún tipo de cálculo estadístico, etc.

En el siguiente artículo, veremos como vamos a exponer nuestro sensor a nuestra red y poder consultar/actuar de forma remota.

Más información:

Documentación técnica del sensor (PDF): http://www.adafruit.com/datasheets/DHT22.pdf Librería BCM 2835: http://www.airspayce.com/mikem/bcm2835/index.html