Mostrando entradas con la etiqueta DHT11. Mostrar todas las entradas
Mostrando entradas con la etiqueta DHT11. Mostrar todas las entradas

viernes, 13 de junio de 2025

Raspberry Pi sensor DHT11 y DHT22

DHT11
Uno de los sensores más populares utilizados en conjunto con la Raspberry Pi es el DHT11, un sensor de humedad y temperatura de bajo costo y fácil de usar.

¿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

Raspberry Pi 3 Oled i2C

Raspberry Pi PWM

Poner Ip fija en Raspberry Pi


Un saludo a todos!!

lunes, 13 de noviembre de 2017

Arduino: Driver L293, DHT 11, nRF2401 (parte1)

Muy buenas a todos!!

Esto va sobre ruedas, y nunca mejor dicho, ya tengo la primera versión del mando XboxRC24 transmitter y para sus pruebas he utilizado un vehículo que construí cuando trabajaba con los microcontroladores 16f, que buenos recuerdos, siempre liado con los puertos COM del portátil...

Lo termine (todos sabemos que estos proyectos nunca terminan) y al poco tiempo empecé con Arduino.

Arduino nRF2401
Arduino nRF2401

Hace un tiempo lo actualice a esta plataforma utilizando el HC-06 encargado de la transmisiones de datos, ahora se encargará el nRF2401. Con un mayor alcance, un consumo casi de risa y siendo realmente estable es la mejor solución que he visto hasta ahora en el tema de radio control.


La base de este proyecto es completamente artesanal, realizado en aluminio y plástico reciclado.

La estructura de aluminio son unos separadores de los que se utilizan en la obra en cocinas y baños.

La base sobre la que va montada la electrónica son de una caja registradora.

Cuenta con una batería Ni-Cd de 9,6V y 900mAh, como ya he comentado y seguramente vuelva a comentar, el tema de las baterías tengo que estudiarlo más a fondo ya que es algo que a día de hoy esta muy avanzado. Es un diseño sencillo pero muy robusto, ideal para cacharrear con el.

Tenéis mas fotos de su construcción original en la entrada que escribí en su momento: Oruga cebek C-6083 V2

A partir de esas todo lo demás pertenece a la ultima actualización.

La electrónica:

Esquema de conexiones pata Tanque XboxRC24
Esquema de conexiones para Tanque XboxRC24

lunes, 25 de septiembre de 2017

Arduino: Medir temperatura y humedad con DHT11

Por fin me ha llegado el sensor de temperatura y humedad DHT11. Este tipo de sensores lee la humedad y temperatura ambiente la transmite a Arduino y de ahí a una pantalla LCD o al monitor serial del IDE de Arduino.


El DHT11 es el sensor es el "barato". No tiene mucha precisión un 2% en temperatura midiendo de 1ºC en 1ºC y un 5% en humedad, pero servirá para cualquier proyecto, que como ya he dicho, no necesite una gran precisión.
Si necesitas más precisión tienes el DHT22 con algo más de precisión que el primero.

Características técnicas del módulo:

Humedad:
  • Resolución de 16 Bits.
  • Rango de medida: De 20% a 80%
  • Precisión a 25ºC: +/-5%HR.
  • DHT 11
  • Histéresis: <+/-0,3%HR.
Temperatura:
  • Resolución de 16 Bits.
  • Rango de medida: De 0ºC a 50ºC
  • Precisión a 25ºC: +/-2%ºC.
  • Tiempo de respuesta: 10 Segundos.
Características eléctricas:
  • Alimentación: 3,6 ~ 5.5V DC.
  • Consumo eléctrico: 0,3mA.
  • Período de muestreo: Más de 2 segundos.
Descripción de los pines:
  • VDD Alimentación 5,5V.
  • DATA Datos seriales, un solo BUS
  • NC No conectado
  • GND Masa o parte negativa.

Su conexión es muy sencilla y como adicional solo nos hará falta una resistencia de entre 4K7 hasta 10K conectada entre VCC y DATA.