Sensores de humedad y temperatura DHT11 y DTH22 en la Raspberry Pi

Existen varios sensores de humedad relativa, entre los cuales el DHT11 y el DHT22 son de los más comunes. El DHT11 es muy barato (alrededor de 2-3€ si lo compras desde China, 8-10€ en España), pero con algo menos de precisión tanto en la humedad como en la temperatura que la que da su hermano mayor, el DHT22, que es algo más caro. Puede verse una tabla comparativa de ambos modelos aquí.

Vamos a empezar conectando el sensor de humedad y temperatura DHT11 a la Raspberry Pi y tomar lecturas. Y después haremos lo mismo con el DHT22.

Sensor de humedad DTH11

Sensor de humedad DHT11

Sensor de humedad DTH22

Sensor de humedad DHT22

Sensores de humedad y temperatura DTH11 y DTH22

Sensores de humedad y temperatura DHT11 y DHT22

Hace falta además una resistencia entre el pin de alimentación y el de datos, aunque se puede comprar el sensor en una mini placa con la resistencia incorporada, como el caso del sensor que tengo yo y que se ve en la imagen de arriba.

En muchas páginas se explica cómo conectar el sensor a la Raspberry Pi (ver más abajo), y todas lo hacen al pin GPIO4 (pin 7). Como en el proyecto que estoy haciendo ahora mismo ya tengo conectado ahí un termómetro DS18B20 (ver este post), voy a conectarlo el GPIO5 (pin 29). Bastará con cambiar el código según a dónde lo conectemos.

Entonces lo conecto así:

  • GND del sensor a un pin GND de la RPi, en mi caso al 20
  • S (datos) al GPIO 5 (pin 29 de la Raspberry Pi)
  • 3V3 a uno de los 3V3 de la Raspberry Pi, en mi caso al 17.

Y ahora, el código para tomar las lecturas. Googleando se pueden encontrar varias formas de hacerlo. El problema en todas ellas es que linux no es un sistema operativo de tiempo real, y como el sensor requiere medidas muy rápidas consecutivas, esto puede suponer un problema. He visto varios ejemplos en Python y en C; en C funciona mejor porque es de más bajo nivel. De todas maneras, en todos los casos advierten de que en ocasiones da error en la lectura y hay que intentarlo varias veces.

Vamos a emplear el código de Adafruit. Es necesario hacer lo siguiente:

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

Hay que tener instaladas las siguientes librerías (que tal vez ya tengas instaladas):

sudo apt-get update
sudo apt-get install build-essential python-dev python-openssl

Y ahora compilamos la librería de Adafruit:

sudo python setup.py install

Tras instalarse, probamos a ver si funciona:

cd examples
sudo ./AdafruitDHT.py 11 5

Con esto estoy diciendo que lea los datos del sensor DHT11 (podría ser el DHT22 o el AM2302), conectado al pin GPIO 5.

Y con esto obtenemos la lectura de temperatura y humedad:

Temp=28.0*C  Humidity=29.0%

¡Funciona!

Vamos a probar ahora el sensor DHT22. Lo primero que tengo que hacer es soldarle la resistencia. En algunos sitios he visto que la resistencia debe ser de 4.7KΩ, y en otros, que debe ser de 10KΩ.

thumb_IMG_7031_1024

Soldando la resistencia al sensor DHT22

thumb_IMG_7032_1024

Y lo conecto a la Raspberry Pi de la siguiente forma:

dht22 temperature and humidty sensor circuitry wiring

thumb_IMG_7033_1024

Sensor DHT22 conectado a la Raspberry Pi

Sigo los pasos de instalación de más arriba, y cuando ejecuto:

sudo ./AdafruitDHT.py 22 4

Tras un par de segundos obtengo:

Temp=29.0*C  Humidity=26.4%

¡Funciona!

Los dos sensores funcionando al mismo tiempo, el DHT22 conectado al GPIO4, y el DHT11 al GPIO5:

Sensores DHT11 y DHT22 conectados a la Raspberry Pi

Sensores DHT11 y DHT22 conectados a la Raspberry Pi

 

Referencias

  • http://fpaez.com/sensor-dht11-de-temperatura-y-humedad/
  • http://www.uugear.com/portfolio/dht11-humidity-temperature-sensor-module/
  • https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/wiring

15 comentarios en “Sensores de humedad y temperatura DHT11 y DTH22 en la Raspberry Pi

  1. Muchisomas gracias.
    El primer experimento que realizo con mi raspberry con periféricos conectados a los GPIO y me a funcionado todo al 100%.
    Un saludo.

  2. Gracias. Muy interesante.
    Yo quería encontrar un modo económico de obtener varias lecturas de temoeratura y humedad en diferentes dependencias. ¿Sabes si pueden utilizarse varios dht22 en paralelo y la distancia a la que pueden separarse de la raspberry?

    Gracias.

    • Hola. Sí se pueden conectar varios DHT22 a la Raspberry Pi; no sé si en paralelo al mismo puerto, pero sí al resto de puertos que tengas disponibles. Respecto a distancia, pues me imagino que lo largo que te dén los cables, aunque a lo mejor en ese caso podrías plantearte una Raspberry por habitación, u algún otro sistema más específico…

  3. Muchas, muchas, muchas gracias.
    Después de probar muchos códigos con Python y demás, esto me ha funcionado sin problemas, a la primera y perfectamente.
    Reitero las gracias, hasta el infinito y más allá jjjjjj
    Acabo de llegar a este mundillo y me encanta la verdad.
    ahora probando con sensor ultrasonido HC-SR04, pero nada. Avisaré si consigo algo.
    Saludosssssss

  4. Estimado Carlini, gusto saludarte y decirte gracias por compartir tus conocimientos. En esta ocasion te queria preguntar si es posible instalar ambos sensores a un Raspberry Pi 2 Model B ARM7 , y asi poder tener el control online de estos datos climaticos.
    Quedo a tus ordenes deseandote un buen dia.

    Un cordial saludo.

  5. Hola, me da error al tratar de compilar la libreria de adafruit…
    Estoy tratando instalar el DHT 11, el error que me aparece es el siguiente:
    python: can’t open file ‘setup.py’: [Errno 2] No such file or directory

    Si alguien puede ayudarme me haría un gran favor.
    Un saludo!!

    • Parece que no estás en el directorio donde descargaste la librería de Adfruit, ¿puede ser? Comprueba que hiciste

      cd Adafruit_Python_DHT

      tras descargar la librería y antes de compilar…

      • Gracias por contestar, lo he intentado pero me sigue dando error, concretamente este error:

        /usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
        # include
        ^
        compilation terminated.
        error: command ‘arm-linux-gnueabihf-gcc’ failed with exit status 1

        Muchas gracias, espero respuesta.
        Un saludo

  6. quisiera saber como leer los datos que envia el dth22 porque tengo una especie de carta de tiempo del 11 pero no se como adquirir los datos que envia el 22

  7. Como yo podria aprovechar los datos del sensor? ej. mi idea es comenzar con el sensor en el baño y ante el vapor del lluvero mas en invierno hacer que encienda el extrator y en verano no..

    Gracias..

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.