Micropython: Midiendo temperatura y humedad con el sensor DHT11

El DHT11 es un sensor de bajo costo y poca precisión ampliamente utilizado para realizar mediciones de temperatura y humedad del aire en aplicaciones como estaciones meteorológicas caseras o sistemas de control de invernaderos. Veremos en este artículo como podemos leerlo desde nuestro programa en Micropython tanto en placas con el ESP8266 como con el ESP32.

El sensor DHT11

El DHT11 (Digital Humidity and Temperature) combina un sensor que mide indirectamente la humedad del aire a partir de resistencia de un sustrato que es capaz de absorber la humedad y un NTC que mide la temperatura. Normalmente viene en un encapsulado de color azul con 4 pines, aunque a veces también está disponible montado sobre una placa con sólo 3 pines. La distribución de las señales en los pines es la siguiente:

Pines del DHT11 (Adaptado de https://www.circuitbasics.com)

El pin de Datos necesita una resistencia de PULL UP de 10K para funcionar correctamente. En el encapsulado de 3 pines esta resistencia ya está soldada en la placa, mientras que en el encapsulado de 4 pines nosotros debemos agregarla.

El rango cubierto al medir la humedad ambiente es entre 20% y 90% con una precisión de ±5%. En el caso de la temperatura, es capaz de medir entre 0 y 50 grados centígrados con una precisión de ±2 grados. Como se ve, la precisión no es muy alta, así que está reservado a aplicaciones de bajo costo donde no necesitamos mediciones muy precisas. El sensor tampoco es muy rápido, debiéndose esperar al menos 1 segundo antes de la primer lectura, así como entre lecturas. La tensión de alimentación puede estar entre 3 y 5.5V. Si se necesita un rango mayor de medición, o mayor precisión, puede optarse por un modelo mejorado, el DHT22 (que usualmente es de color blanco).

Conexiones

El siguiente es el conexionado para un Nodemcu. Se alimenta al sensor con 3,3 voltios y el pin Datos se conecta al pin D1 (GPIO5) de la placa.

Conexiones para ESP8266

Y estas son las conexiones para un ESP32. La alimentación es la misma (3,3V) y el pin Datos se conecta a D5 que también es GPIO5, para poder usar el mismo código con las dos placas.

Conexiones para el ESP32

El módulo DHT de Micropython

Micropython incluye el módulo dht de manera estándar, incluido en el firmware, así que no es necesario grabarlo en la placa. Resuelve todos los detalles del protocolo de comunicaciones, que se realiza sobre un único pin (el pin Datos) y es capaz de acceder tanto al DHT11 como al DHT22 y funciona de manera idéntica tanto para el ESP8266 como el ESP32.

Lo primero entonces es importar la clase DHT11 desde el módulo dht:

from dht import DHT11

Luego debemos crear un objeto de la clase DHT11. El constructor acepta como parámetro el pin GPIO de la placa donde se conecta la señal Datos del sensor. En este ejemplo usaremos GPIO5

from dht import DHT11
from machine import Pin

sensorDHT = DHT11 (Pin(5))

Los métodos para leer el sensor son los siguientes:

measure (): Se conecta con el sensor y realiza la medición

temperature (): Devuelve el valor de temperatura medido, en grados centígrados.

humidity (): Devuelve el valor de humedad relativa medido, en porcentaje.

El que sigue es un programa de aplicación completo, que realiza mediciones cada 1 segundo y muestra los resultados formateados en la consola de Thonny:

from dht import DHT11
from machine import Pin
from time import sleep

sensorDHT = DHT11 (Pin(5))

while (True):
    sleep (1)

    sensorDHT.measure ()
    temp=sensorDHT.temperature ()
    hum=sensorDHT.humidity()

    print ("T={:02d} ºC, H={:02d} %".format (temp,hum))

Thonny, además de permitirnos ver los valores impresos en la consola incluye el Ploter, que muestra los mismos valores en forma gráfica. Para activarlo debemos ir a Visualización Plóter

Salida numérica y gráfica de la temperatura y humedad

Conclusión

En este artículo vimos como utilizar el conocido sensor DHT11 en nuestros proyectos con Micropython, en otras entregas veremos como publicar esa información en Internet para acceder a ella desde cualquier lugar. Pueden dejar sus dudas o sugerencias en la sección de comentarios.

Deja un comentario

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

Habilitar notificaciones OK No, gracias