![]() |
DHT11 |
¿Qué son los sensores DHT11 y DHT22?
Los sensores DHT11 y DHT22 son dispositivos electrónicos que mide la temperatura y la humedad relativa del aire. Es un sensor digital, lo que significa que los datos que proporciona son en formato digital y pueden ser fácilmente leídos por un microcontrolador como la Raspberry Pi.
![]() |
DHT22 |
A pesar de su bajo costo, el DHT11 más que el DHT22, son bastante precisos y fiables, lo que los convierte en una excelente opción para una amplia gama de aplicaciones.
El DHT11 esta más indicado para Proyectos educativos o prototipos simples y ambientes interiores controlados como pueden ser habitaciones, oficinas.
Sin embargo el DHT22 será más útil en proyectos de tipo invernadero, neveras y exteriores.
Funciones del Sensor
- Medición de temperatura
- Medición de humedad
- Salida digital
- Bajo consumo
- Fácil de usar
Comparativa: DHT11 vs DHT22
Característica | DHT11 | DHT22 |
---|---|---|
Precisión (Temp) | ±2°C | ±0.5°C |
Rango (Temp) | 0°C a 50°C | -40°C a 80°C |
Precisión (Hum) | ±5% RH | ±2% RH |
Rango (Hum) | 20% a 80% RH | 0% a 100% RH |
Frecuencia de Muestreo | 1 Hz | 0.5 Hz |
Resolución | 1°C / 1% RH | 0.1°C / 0.1% RH |
Consumo Eléctrico | 0.5 - 2.5 mA |
Instalación y Configuración en Python:
Para utilizar los sensores DHT11 y DHT22 con una Raspberry Pi, necesitaremos un entorno de programación adecuado y una biblioteca para interactuar con el sensor. Python es uno de los lenguajes de programación más populares para la Raspberry Pi, y existen varias bibliotecas que facilitan la lectura de datos del DHT11.
Necesitamos instalar la biblioteca Adafruit. Ahora en un terminal de tu Raspberry Pi y ejecuta el siguiente comando para instalar la biblioteca adafruit-circuitpython-dht:
pip3 install adafruit-circuitpython-dht
Esta biblioteca proporciona una manera sencilla para leer datos de los sensores DHT11 y DHT22.
Ahora tenemos que conectar el sensor DHT a a la Raspberry Pi. Para esto identificaremos los pines de cada sensor y los conectamos siguiendo las serigrafias que vienen en el sensor:
- Data: al GPIO21 (pin40)
- VCC: al cualquier pin 5V
- GND: al cualquier pin GND
Ahora en la terminal creamos un nuevo archivo Python llamado "dht11_test.py y escribimos el siguiente código que nos mostrará en pantalla los datos de temperatura y humedad del DHT11:
# Código para lectura del sensor DHT11
import time
import board
import adafruit_dht
#Inicia el dispositivo DHT con el pin de datos conectado a:
dhtDevice = adafruit_dht.DHT11(board.D21)
# Si no deseas usar pulseio puedes usar DHT11 use_pulseio=False
# Esto puede ser necesario en ordenadores de tipo Raspberry Pi con Linux
# Pero no funcionará en CircuitPython
# dhtDevice = adafruit_dht.DHT11(board.D18, use_pulseio=False)
while True:
try:
# Imprime los valores en el puerto serie
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(f"Temp: {temperature_f:.1f} F / {temperature_c:.1f} C Humidity: {humidity}% ")
except RuntimeError as error:
# Los errores ocurren con bastante frecuencia, los DHT son difíciles de leer,
simplemente sigue adelante.
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
Guarda el archivo como dht11_test.py y ejecútalo desde la terminal:
python3 dht11_test.py
o
python3 -m dht11_test
Para el caso del DHT22 es exactamente igual menos la linea "sensor = adafruit_dht.DHT11" que tenemos que cambiar por "sensor = adafruit_dht.DHT22" y se ve así:
# Código para lectura del sensor DHT22
import time
import board
import adafruit_dht
#Inicia el dispositivo DHT con el pin de datos conectado a:
dhtDevice = adafruit_dht.DHT22(board.D21)
# Si no deseas usar pulseio puedes usar DHT22 use_pulseio=False
# Esto puede ser necesario en ordenadores de tipo Raspberry Pi con Linux
# Pero no funcionará en CircuitPython
# dhtDevice = adafruit_dht.DHT22(board.D21, use_pulseio=False)
while True:
try:
# Imprime los valores en el puerto serie
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(f"Temp: {temperature_f:.1f} F / {temperature_c:.1f} C Humidity: {humidity}% ")
except RuntimeError as error:
# Los errores ocurren con bastante frecuencia, los DHT son difíciles de leer,
simplemente sigue adelante.
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
Guardamos el archivo como dht22_test.py y ejecutamos desde la terminal:
python3 dht22_test.py
o
python3 -m dht22_test
El código de este ejemplo llamado dht_simpletest.py lo podemos encontrar en el repositorios de Adafruit_CircuitPython_DHT
Solución de errores:
uno de los errores que más comunes es el uso de la librería "board". Muchas veces podemos recibir el siguiente mensaje:
import board
ModuleNotFoundError: No module named 'board'
O también este:
dhtDevice = adafruit_dht.DHT11(board.D21)
^^^^^^^^^
AttributeError: module 'board' has no attribute 'D21'
Nos hace referencia a la librería board que se instala normalmente con "pip install board". Pero al estar haciendo uso de Adafruit CircuitPython necesitamos la librería que esta asociadad a Adafruit llamada "Adafruit-Blinka"
Esta librería instalara "board" y otras librerías como "pyserial" o "pyusb".
En el caso de que haya un error nos puede aparecer este mensaje:
Unable to set line 18 to input
Si aparece este error, nos hace referencia al pin, que o bien no esta activo o no es el puerto correcto donde esta conectado el sensor DHT 11.
Aplicaciones del DHT11 y Raspberry Pi
La combinación de Raspberry Pi y DHT11 o DHT22 ofrece un sinfín de posibilidades para proyectos de IoT. Algunas de las aplicaciones más comunes incluyen:
- Estaciones meteorológicas caseras: Crea una estación meteorológica personalizada para monitorear la temperatura y humedad en tu hogar o jardín.
- Sistemas de control de invernaderos: Automatiza el riego y la ventilación de tu invernadero en función de las condiciones ambientales.
- Monitoreo de condiciones ambientales: Utiliza el sensor para monitorear la temperatura y humedad en espacios cerrados, como oficinas o almacenes.
- Proyectos de domótica: Puedes integrar el sensor en sistemas de domótica para crear ambientes más cómodos y eficientes.
- Prototipos de IoT: Utilizalos como punto de partida para desarrollar prototipos de dispositivos IoT más complejos.
Conclusión:
El sensor DHT11 es una herramienta invaluable para cualquier persona interesada en proyectos de electrónica y programación. En combinación con la Raspberry Pi, ofrece una plataforma potente y flexible para crear una amplia variedad de aplicaciones.
Con este artículo, has adquirido los conocimientos básicos para comenzar a trabajar con el DHT11 y la Raspberry Pi. ¡Anímate a experimentar y crear tus propios proyectos!
Instalación librería Adafruit-Blinka
Librería adafruit-circuitpython-dht
Aquí tienes otros enlaces de este blog relacionados con Raspberry Pi:
Programa de ejemplo de este articulo en GitHub
Un saludo a todos!!