Kit Sensor Temperatura y Humedad DHT11 y DHT22 para Raspberry Pi y Arduino
Componentes y Suministros
| Sensor DHT11 Temperatura y Humedad (4 pines) | × | 1 |
| Raspberry Pi 2 Modelo B | × | 1 |
| Arduino UNO | × | 1 |
| Cables jumper macho-macho | × | 3 |
| Protoboard (genérica) | × | 1 |
| Resistencia 4.7 kΩ | × | 1 |
| Kit Cobbler Breakout (para Raspberry Pi) | × | 1 |
Aplicaciones y Servicios en Línea
- Microsoft Windows 10 IoT Core
- Arduino IDE
- Raspberry Pi OS (Raspbian)
- Microsoft Visual Studio 2015
- WinSCP (transferencia de archivos)
- PuTTY (terminal SSH)
Sobre el Proyecto
Introducción
El DHT11 es un sensor de temperatura y humedad de 4 pines (uno sin usar) capaz de medir 20–90 % HR y 0–50 °C. Funciona entre 3 y 5.5 V CC y comunica mediante su protocolo propietario OneWire, que requiere temporización muy precisa: los bits LOW/HIGH se codifican por la duración del pulso HIGH. La lectura completa toma ≤ 23.4 ms (incluyendo 18 ms de arranque y ≤ 5.4 ms de datos). Los pulsos individuales duran 20–80 µs.
Cuando salió Windows 10 IoT Core, probé el DHT11 en C# en Raspberry Pi 2 y no funcionó: C# en IoT Core no es lo bastante rápido (al menos en ese momento). En el foro de Microsoft encontré a otros desarrolladores con el mismo problema. Microsoft respondió que el soporte OneWire llegaría en futuras versiones, pero no quise esperar. Luego vi un ejemplo oficial de Microsoft usando C++ en IoT Core con DHT11 como sensor de muestra. Decidí adaptar ese ejemplo a una biblioteca C#.
Este proyecto convierte ese ejemplo en una biblioteca utilizable en C#. Agradezco al autor original que hizo posible usar este sensor popular en Windows 10 IoT Core.
Biblioteca
La biblioteca es un simple refactor del código original de Microsoft; no me atribuyo el mérito de la lectura del sensor.
Ofrece una clase Dht11 en el espacio de nombres Sensors.Dht. Crear un objeto en C# es sencillo:
using Sensors.Dht;
GpioPin pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
Luego se pasa el pin al constructor de Dht11 especificando el modo de drive del pin GPIO (permite decidir si añades tu propia resistencia pull-up):
Dht11 dht11 = new Dht11(_pin, GpioPinDriveMode.Input);
Para obtener una lectura se usa el método GetReadingAsync:
DhtReading reading = await dht11.GetReadingAsync().AsTask();
Existe una sobrecarga para especificar el máximo de reintentos (por defecto 20), es decir, cuántos intentos hacer antes de devolver lectura fallida.
La estructura DhtReading se define así:
public value struct DhtReading {
bool TimedOut;
bool IsValid;
double Temperature;
double Humidity;
int RetryCount;
};
Observaciones
Incluso en C++ el sensor no siempre devuelve lectura, de ahí la opción de reintento (parte del ejemplo de Microsoft). Para comparar rendimiento, probé código en Raspberry Pi 2 con Raspbian y en Arduino Uno. El código para ambas plataformas está en el repositorio GitHub. El video del proyecto demuestra y compara la salida de cada plataforma.
Primeros Pasos
Montar el Circuito para Raspberry Pi 2
Use la guía siguiente junto con el diagrama al final de la página (los colores de los cables son orientativos).
- Coloque el Cobbler en forma de T en el extremo izquierdo de la media protoboard (donde empiezan los números en 1). Los dos pines izquierdos en E1 y F1; los dos derechos en E20 y F20.
- Coloque la resistencia 4.7 kΩ entre A4 y 3V3.
- Conecte jumper naranja macho-macho entre B4 y F28.
- Conecte jumper rojo macho-macho entre F29 y 3V3.
- Conecte jumper negro macho-macho entre F30 y GND.
- Inserte el sensor DHT11 en J30 (-), J29 (+) y J28 (señal).
- Conecte el cable plano al Cobbler y a la Raspberry Pi.
Montar el Circuito para Arduino
- Coloque la resistencia 4.7 kΩ entre E12 y E13.
- Conecte jumper blanco macho-macho entre D13 y Pin 5 del Arduino.
- Conecte jumper rojo macho-macho entre D12 y pin 5V del Arduino.
- Conecte jumper negro macho-macho entre D11 y GND del Arduino.
- Inserte el sensor DHT11 en A11 (-), A12 (+) y A13 (señal).
- Conecte el cable USB del PC al Arduino.
Fotos de los circuitos montados:









Iniciar la Aplicación en Raspberry Pi (Windows 10 IoT Core)
Elija configuración Debug, ARM y Remote Machine. Clic derecho en el proyecto → Propiedades → pestaña Debug. Ingrese la IP de la Raspberry Pi 2 en "Remote machine" y desmarque "Use authentication". Pulse F5. El despliegue inicial puede tardar unos minutos.
Iniciar la Aplicación en Arduino
El sketch está en GitHub como Dht11_Speed. Abra Arduino IDE, cargue el sketch, súbalo al Arduino (Ctrl+U) y abra el Monitor Serie (Ctrl+Shift+M). El video muestra el proceso en detalle.
Iniciar la Aplicación en Raspbian
El código C para Raspberry Pi está en GitHub como Dht11.c. Copie el fuente a la Pi y compílelo allí. Uso WinSCP para transferir archivos. El código usa wiringPi, que debe instalarse antes de compilar.
Comando de compilación:
gcc -o Dht11_Speed Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm
Para ejecutar:
sudo ./Dht11_Speed 1000 10
Donde 1000 = retardo 1000 ms (1 s) y 10 = número de muestras a leer. El video muestra en detalle cómo copiar y compilar en Raspberry Pi con Raspbian. Para instalar Raspbian: raspberrypi.org/downloads/raspbian/.
Video
Video demostrativo de la aplicación (ver en YouTube en modo Teatro para mejor calidad).
Código
Código Fuente C#/C++ para Visual Studio 2015
https://github.com/porrey/dht.git
Esquemas
Archivos Fritzing e imágenes de esquemas:
Dht11_RPi2.fzz, Dht11_Arduino.fzz y capturas de pantalla de los circuitos.
Proceso de manufactura
- Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
- Sensor infrarrojo TMP006 con Raspberry Pi: librería Python y guía de configuración
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Cómo conectar un sensor de temperatura DS1820 One‑Wire a Raspberry Pi usando GPIO
- Cómo Conectar un Termómetro Digital DS18B20 One‑Wire a Raspberry Pi – Guía Paso a Paso
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
- Conectar Raspberry Pi 3 a sensor DHT11 y subir datos a cloud ThingsIo.ai
- Detección precisa de temperatura por infrarrojos para procesos sensibles al color
- Sensor de temperatura de rodamientos de precisión: detección y monitorización exactas
- Sensor de Temperatura DS18B20 – Termómetro Digital 1-Wire Preciso para Uso Industrial y Consumo