Raspberry Pi – Conectando un sensor de temperatura y humedad DHT11

En este proyecto/tutorial veremos como conectar el sensor DHT11 a nuestra Raspberry Pi, obtener los valores de temperatura y humedad que el sensor puede medir  y guardar un registro de estos datos en un archivo log.

La idea también es que aprendan un poco de GIT (sistema control de versiones), por este motivo no habrá código en este tutorial, deberán bajarlo desde nuestro repositorio en GitHub.

El código esta escrito en Python así que también veremos un poco de programación.

Materiales

  • Raspberry Pi Modelo 2 (en realidad puede ser cualquiera de los modelos)
  • Sensor DHT11 (o DHT12)
  • Mini protoboard
  • Jumpers de conexión

Procedimiento

Lo primero que debemos hacer es instalar git en nuestra Raspberry Pi en el caso de que no lo tengamos instalado.

Siempre es recomendable hacer un apt-get update antes de comenzar cualquier instalación de software

sudo apt-get update

Luego instalar git

sudo apt-get install git-core

Con git instalado procedemos a crearnos una carpeta para almacenar las librerías que instalaremos para este u otros proyectos

mkdir librerias

Luego clonamos el repositorio git de la librería de Adafruit que nos permitirá obtener las lecturas del sensor DHT11

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

Para instalar esta librería en nuestro sistema debemos hacer lo siguiente

Instalar software que nos permite adicionar librerías Python a nuestra Raspberry Pi

sudo apt-get install build-essential python-dev

Entrar a la carpeta que se creo al clonar con git el repositorio

cd Adafruit_Python_DHT

Instalar la librería DHT de Adafruit

sudo python setup.py install

Con esto la librería debería estar instalada y disponible para ser llamada desde cualquier programa en Python.

Procedemos ahora a conectar el sensor a la Raspberry Pi, nos basaremos en este diagrama creado con Fritzing,un software gratuito ¡muy recomendable!

Es muy importante conectar correctamente cada pin, noten también que hay una resistencia de 10K conectada entre los pines 1 y 2 del sensor. Otro punto muy importante a tener en consideración es que si disponen de un sensor DHT11 que viene en una placa de circuito impreso, esta resistencia de 10K puede estar incluida en el circuito. En este caso el sensor esta sin la placa y debemos agregar esa resistencia.

Las conexión con la Raspberry Pi será en los pines 1, 14 y 16 los cuales son respectivamente 3.3v DC Power, Ground y GPIO23.

La tabla de conexiones es

Sensor DHT11 Raspberry Pi
Pin 1 Pin 1
Pin 2 Pin 14
Pin 3 (No se utiliza)
Pin 4 Pin 16

Con el circuito eléctrico armado procedemos a crear una carpeta para nuestros proyectos y luego clonaremos el repositorio que he creado para este tutorial.

Ejecutamos el comando cd para volver al directorio inicial

cd

Creamos la carpeta proyectos, nos cambiamos a esa carpeta y luego clonamos el repositorio para este proyecto

 mkdir proyectos
 cd proyectos
 git clone https://github.com/internetdelascosas/RaspberryPi-DHT11.git
 cd RaspberryPi-DHT11

AL hacer un ls podemos ver que dentro de la carpeta hay tres archivos

 dht_consola.py  dht_log.py  README.md

README.md es un archivo de texto que contiene información sobre el proyecto, este archivo es el que permite crear la página web que se visualiza al entrar al entrar a la pagina del proyecto en   GitHub https://github.com/internetdelascosas/RaspberryPi-DHT11

dht_consola.py es el programa escrito en Python que ejecutaremos primero usando el comando

 sudo ./dht_consola.py

Si el sensor esta funcionando y esta bien conectado deberíamos obtener una salida como la siguiente

El programa se ejecutara en un ciclo infinito por lo que para terminar su ejecución debes presionar Control+C.

Puedes ver el programa con tu editor favorito, en mi caso vi y como estamos usando GitHub puedes revisar el programa en el siguiente enlace en nuestro repositorio GitHub. Esta con comentarios para que sea bastante simple entender de que se trata. Es buena idea que te crees una cuenta y darnos una estrella (el me gusta de GitHub).

Siéntete libre de modificarlo en tu Raspberry Pi, si algo haces mal y falla, siempre tienes la opción de borrar la carpeta y volver a clonar el repositorio Git. Ya veremos en otro tutorial como usar git para hacer modificaciones al programa y enviarlas para que actualicemos el repositorio. Si ya sabes usar git, te invitamos a mejorar este programa.

dht_log.py es un programa un poco mas avanzado, básicamente hace exactamente lo mismo que el programa dht_consola.py pero en vez de mostrar las variables en la consola, las escribe a un archivo de log en /var/log/iot/, al igual que el programa anterior, puedes ver el código fuente en nuestro repositorio GitHub.

El objetivo de este programa es que se ejecute en modo background, de tal forma que podamos dejar la Raspberry Pi encendida monitoreando constantemente las dos variables y registrandolas en el archivo log para un procesamiento posterior.

Para ejecutarlo primero debes crear la carpeta /var/log/iot que sera el lugar donde se escribirán los archivos log, este comando debe ser ejecutado como súper usuario con el comando sudo

joniux@raspberrypi:~/proyectos/RaspberryPi-DHT11 $ sudo mkdir /var/log/iot

Y luego ejecutar el programa dht_log.py también como súper usuario con el comando sudo

joniux@raspberrypi:~/proyectos/RaspberryPi-DHT11 $ sudo ./dht_log.py &
 [1] 13278

El carácter & al final de la línea es muy importante porque este permite dejar la tarea ejecutándose en background, informando del numero de proceso, en este caso 13278 y devolviendo el control a línea de comandos para ingresar nuevos comandos.

Si ejecutas el comando ps, verás que existen dos procesos corriendo con el nombre dht_log

joniux@raspberrypi:~/proyectos/RaspberryPi-DHT11 $ ps aux | grep dht_log
 root     13350  1.0  0.3   6184  3088 pts/1    S    00:47   0:00 sudo ./dht_log.py
 root     13354 10.3  0.7  10752  7504 pts/1    S    00:47   0:00 /usr/bin/python ./dht_log.py
 joniux   13356  0.0  0.2   4276  1896 pts/1    S+   00:47   0:00 grep --color=auto dht

y si revisas el archivo log, veras que esta escribiendo el registro cada 10 segundos.

joniux@raspberrypi:~ $ tail /var/log/iot/2017-05-19_dht.log
2017-05-19 17:57:14 DHT Sensor - Temperatura: 21.0
2017-05-19 17:57:14 DHT Sensor - Humedad:  38.0
2017-05-19 17:57:24 DHT Sensor - Temperatura: 21.0
2017-05-19 17:57:24 DHT Sensor - Humedad:  38.0
2017-05-19 17:57:34 DHT Sensor - Temperatura: 21.0
2017-05-19 17:57:34 DHT Sensor - Humedad:  38.0
2017-05-19 17:57:44 DHT Sensor - Temperatura: 21.0
2017-05-19 17:57:44 DHT Sensor - Humedad:  38.0

Si deseas terminar la ejecución el programa debes “matar” los dos procesos que están corriendo, para matar un proceso se usa el comando kill y el numero de proceso, información que se muestra en la segunda columna al ejecutar el comando ps.

En este ejemplo para matar los dos procesos se debe ejecutar

joniux@raspberrypi:~/proyectos/RaspberryPi-DHT11 $ kill 13350 13354

¿Muy complejo? ¿Algo no quedó claro? Pregunten, comenten y compartan en sus redes sociales.

Author: joniuz

Ingeniero Civil Informático, Universidad de Santiago de Chile. Master of Professional Engineering University of Sydney. En Chile trabajó empresas de servicios internet y telcos como IBM, VTR y Entel. Le gusta la fotografía y el armado de drones, tiene estudios de violín, guitarra eléctrica y sintetizadores que enciende cuando tiene algo de tiempo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *