En este artículo te enseñamos como utilizar el sensor DHT11 con Arduino; Trataremos su conexión con el arduino UNO, profundizaremos en el protocolo de comunicación y la instalación de la librería necesaria para entablar la comunicación.

Los sensores DHT11 y DHT22 son capaces de realizar mediciones simultáneas de humedad relativa y temperatura, entregándonos su lectura de forma digital. Podemos encontrar aplicaciones para el DHT11 o el DHT22 en el control de invernaderos, monitoreo de centros de datos, climatización de casas y edificios, etc.

Materiales necesarios

Para esta experiencia requerimos los siguientes materiales, los cuales puedes adquirir en nuestra tienda virtual:

Comunicación del DHT22 o DHT11 con Arduino

El DHT11 no utiliza una interfaz serial estándar como I2C, SPI o 1Wire (es similar a este ultimo). En cambio requiere su propio protocolo para comunicarse a través de un solo hilo. Afortunadamente el protocolo de comunicación del DHT11 es simple y puede implementarse tranquilamente usando los pines de I/O en un Arduino.

El arduino debe iniciar la comunicación con el DHT11 manteniendo la linea de datos en estado bajo durante al menos 18 ms. Luego el DHT11 envía una respuesta con un pulso a nivel bajo (para indicar su presencia) de 80 uS y luego deja “flotar” la linea de datos por otros 80 uS. En la figura de abajo, el pulso de inicio enviado por el microcontrolador esta coloreado en rojo, mientras que la respuesta desde el sensor esta coloreada en azul.

Codificación de bits

La codificación de datos esta basada en un esquema de ancho de pulso (se toma en cuenta el ancho del estado alto): Un pulso ancho representa un 1 lógico, un pulso corto representa un 0 lógico.

Todos los bits comienzan con un pulso bajo de 50 uS. Las librerías de comunicación con el DHT11 aprovechan este pulso para la sincronización. Luego viene un pulso alto que varía según el estado lógico o el valor del bit que el DHT11 desea transmitir:

  • Se utilizan pulsos de 26-28 microsegundos para un “0”
  • Se utilizan pulsos de 70 microsegundos para un “1”

Significado de los bits transmitidos por DHT11 o DHT22.

En la siguiente ilustración observamos el inicio de una comunicación con el DHT11 o DHT22, resumiendo lo que hemos hablado con anterioridad.


Una transmisión completa comienza como ya describimos y se compone de 40 bits (5 bytes) que incluyen todos los datos que el sensor puede proporcionar. En cuanto a los datos que se transmiten, su interpretación es como sigue:

  • El primer byte que recibimos es la parte entera de la humedad relativa (RH)
  • El segundo byte es la parte decimal de la humedad relativa (no se utiliza en el DHT11, siempre es 0)
  • El tercer byte es la parte entera de la temperatura
  • El cuarto byte es la parte decimal de la temperatura (no se utiliza en el DHT11, siempre es 0)
  • El ultimo byte es la suma de comprobación (checksum), resultante de sumar todos los bytes anteriores

Diagrama de conexión del DHT11 con Arduino

El siguiente esquema ilustra como debe realizarse la conexión del sensor DHT11 o DHT22 con Arduino. Como podemos ver la conexión es bastante simple y se realiza de la misma forma para el DHT11 y DHT22. Solamente se requiere de un componente externo para la comunicación y es una simple resistencia de 10K. También podemos agregar un cerámico de 100nF cerca de los pines de alimentación del DHT11 para ayudar a reducir los ruidos que puedan filtrarse en la alimentación.

dht11 con arduino diagrama de conexión

Descarga de librería para el DHT11 con Arduino

El programa que encontramos a continuación requiere la instalación de la librería de Adafruit para sensores de la serie DHTXX. Podemos encontrarla en el repositorio GitHub de adafruit o podemos descargarla directamente:

Código de ejemplo básico DHT11 con Arduino

El siguiente sketch permite poner a funcionar el sensor DHT22 y DHT11 con Arduino.  Incluimos bastantes comentarios en el código de forma que se pueda entender fácilmente.

El resultado de la ejecución del programa debe ser como se muestra a continuación, si se imprime el mensaje de error habrá que revisar las conexiones y verificar que nuestro sensor no este dañado.dht11 con arduino salida del programa de ejemplo

Conclusión

  • En este articulo exploramos los detalles del protocolo utilizado por el sensor DHT11 y DHT22 para comunicarse con arduino.
  • Aprendimos sobre la conexión física entre arduino y el sensor.
  • Descargamos e instalamos una librería para comunicarnos con el DHT11 y DHT22 con el mínimo esfuerzo.
  • Realizamos un programa básico que muestra las lecturas del sensor en el monitor serial.
  • Se dejan las bases para proyectos más complejos con el DHT11 y DHT22
  • Aclaramos que ambos sensores son muy similares y pueden usarse con las mismas librerías y las mismas conexiones.

 

Los pagos realizados mediante Paypal no podrán ser facturados. Solo se facturarán ordenes pagadas mediante deposito. Ignorar