Artículos recientes

Novedades

Tutorial sensor de temperatura y humedad DHT11 y DHT22

Tutorial sensor de temperatura y humedad DHT11 y DHT22

Los sensores DHT11 y DHT22 son sensores digitales de Temperatura y Humedad, fáciles de implementar con cualquier microcontrolador. Utiliza un sensor capacitivo de humedad y un termistor para medir el aire circundante y solo un pin para la lectura de los datos. Tal vez la desventaja de estos es la velocidad de las lecturas y  el tiempo que hay que esperar para tomar nuevas lecturas (nueva lectura después de 2 segundos), pero esto no es tan importante puesto que la Temperatura y Humedad son variables que no cambian muy rápido en el tiempo.

Sensor DHT11

Este sensor trabaja con un rango de medición de temperatura de 0 a 50 °C con precisión de ±2.0 °C y un rango de humedad de 20% a 90% RH con precisión de 4% RH. Los ciclos de lectura debe ser como mínimo 1 o 2 segundos.

Sensor de temperatura y humedad DHT11

Sensor DHT22

El rango de  medición de temperatura es de  -40°C a 80 °C con precisión de ±0.5 °C y rango de humedad de 0 a 100% RH con precisión de 2% RH, el tiempo entre lecturas debe ser de 2 segundos.

 Sensor de Temperatura y Humedad DHT22

Como se observa la diferencia entre estos sensores es solo el rango y precisión, otra diferencia es que el DHT11 puede soprtar ciclos mas rapidos de lectura.

 

Conexiones entre Arduino y el sensor DHT11 o DHT22

La conexión es igual para ambos sensores:

Conexion Arduino y DHT11

Arduino y DHT22

La resisitencia Pull-Up puede ser una valor entre 4.7K y 10K.

Si se desea trabajar con lógica de 3.3v solo hay que cambiar la alimentación a dicho voltaje al igual que la resistencia pull-up debe ir a 3.3V, en nuestro caso vamos a trabajar con el pin digital 2, pero pueden usar otro pin si lo desean.

Librería DHT para Arduino

Usaremos la librería de adafruit, la cual lo pueden descargar desde el siguiente link:

https://github.com/adafruit/DHT-sensor-library

Con esta librería podemos realizar fácilmente la lectura de ambos sensores y no preocuparnos por el protocolo de comunicación entre Arduino y los sensores.

Después de descargar e importar la librería podemos empezar a programar nuestro sketch

1. Lectura de humedad y temperatura con Arduino:

Realizar la lectura del sensor es simple, el siguiente ejemplo muestra como leer la humedad, temperatura en Celsius y en Fahrenheit:

#include "DHT.h"

#define DHTPIN 2     // Pin donde está conectado el sensor

//#define DHTTYPE DHT11   // Descomentar si se usa el DHT 11
#define DHTTYPE DHT22   // Sensor DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("Iniciando...");
  dht.begin();
}
void loop() {
  delay(2000);
  float h = dht.readHumidity(); //Leemos la Humedad
  float t = dht.readTemperature(); //Leemos la temperatura en grados Celsius
  float f = dht.readTemperature(true); //Leemos la temperatura en grados Fahrenheit
  //--------Enviamos las lecturas por el puerto serial-------------
  Serial.print("Humedad ");
  Serial.print(h);
  Serial.print(" %t");
  Serial.print("Temperatura: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.println(" *F");
}

Expliquemos el Sketch anterior:

Con las siguientes líneas definimos el pin al que está conectado el sensor, tipo de sensor y creamos la variable DHT:

#include "DHT.h"

#define DHTPIN 2     // Pin donde está conectado el sensor

//#define DHTTYPE DHT11   // Descomentar si se usa el DHT 11
#define DHTTYPE DHT22   // Sensor DHT22

DHT dht(DHTPIN, DHTTYPE);

Dependerá el tipo de sensor con el que están trabajando para definir el DHTTYPE, en nuestro caso es el DHT22, si usan el DHT11, deberán cambiar a #define DHTTYPE DHT11, también pueden cambiar el número del DHTPIN si desean conectar el sensor en otro pin.

Para inicializar el sensor usamos la siguiente función:

  dht.begin();

Y para realizar las lecturas correspondientes se usan las siguientes funciones:

      float h = dht.readHumidity(); //Humedad
      float t = dht.readTemperature(); //Temperatura en grados Celsius
      float f = dht.readTemperature(true); //Temperatura en grados Fahrenheit

Tener en cuenta que solo podemos tomar 1 lectura cada 2 segundos, es por eso que ponemos una pausa de 2 segundos antes de tomar las lecturas para asegurarnos que ya han transcurrido 2 segundos después de la lectura anterior.

 

EL resultado del ejemplo anterior lo podemos observar al abrir el monitor serial:

 

2. Incorporando el DHT11/DHT22 en procesos rápidos.

Un problema muy común es que al hora de incluir el ejemplo anterior a nuestro proyecto debido a la pausa de los 2 segundos, todo nuestro proyecto también se vuelve lento, incluso podría afectar algunas funcionalidad de nuestro proyecto. Esto porque cada bucle demoraría 2 segundos, tiempo demasiado grande para algunos procesos.

La solución es usar la función millis() de Arduino, el cual nos da el tiempo en milisegundos desde que empieza a ejecutarse el código.

A continuación se muestra como incorporar el sensor a nuestro proyecto sin necesidad de hacer la pausa de 2 segundos.

#include "DHT.h"

#define DHTPIN 2     // Pin donde está conectado el sensor

//#define DHTTYPE DHT11   // Descomentar si se usa el DHT 11
#define DHTTYPE DHT22   // Sensor DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("Iniciando...");
  dht.begin();
  pinMode(13, OUTPUT);
}
long tiempoUltimaLectura=0;; //Para guardar el tiempo de la última lectura
void loop() {
  //---------Lectura del Sensor--------------------------
  if(millis()-tiempoUltimaLectura>2000)
  {    
      float h = dht.readHumidity(); //Leemos la Humedad
      float t = dht.readTemperature(); //Leemos la temperatura en grados Celsius
      float f = dht.readTemperature(true); //Leemos la temperatura en grados Fahrenheit
      //--------Enviamos las lecturas por el puerto serial-------------
      Serial.print("Humedad ");
      Serial.print(h);
      Serial.print(" %t");
      Serial.print("Temperatura: ");
      Serial.print(t);
      Serial.print(" *C ");
      Serial.print(f);
      Serial.println(" *F");
      tiempoUltimaLectura=millis(); //actualizamos el tiempo de la última lectura
  }
  //----Fin de la lectura---------------------------
  
  //---------Resto del código  del proyecto--------
  //...
  //...
  //...
  digitalWrite(13, HIGH); 
  delay(100);              
  digitalWrite(13, LOW);    
  delay(100);   
  //-------------------------------

}

De esta forma evitamos la pausa de los 2 segundos, pero no el tiempo que demora en hacer la lectura, que es de aproximadamente  250 milisegundos, el cual lo pueden notar si realizan el ejemplo anterior, en donde se hace parpadear el led interno de la placa (Pin 13) con pausas de 100ms, pero si observan el led, en el momento de hacer la lectura se nota claramente que el led se apaga por más tiempo durante la lectura del sensor.

 

Pueden adquirir los materiales usados en este tutorial en nuestra tienda

         Sensor de humedad relativa y temperatura DHT22

         Sensor de humedad relativa y temperatura DHT11

         Arduino Uno R3

57 Comments

    • Avatar
      nathalia
      ago 23, 2016

      hola amigo para hacerte una pregunta tu has logrado conectar dos DHT11 a un solo arduino me

      • Avatar
        Naylamp
        ago 26, 2016

        Hola Nathalia, para conectar otro DHT11 tienes que crear otro objeto para el segundo sensor por ejemplo: DHT dht_2(DHTPIN_2, DHTTYPE); y desde en el programa referirte con sus nombres respectivos por ejemplo:
        h1=dht.readHumidity();
        h2=dht_2.readHumidity();

    • Avatar
      Linda
      abr 3, 2018

      Por que el sensor me arroja Humedad nan %tTemperatura: nan *C nan *F estara dañado el sensor o me falta alguna libreria

      • Avatar
        César
        abr 21, 2018

        Estás conectando mal la tierra y el pin 2

      • Avatar
        Raul
        jul 8, 2019

        En mi caso estaba definiendo el DHTTYPE como DHT22 y tenia ese mismo error, probé con el DHT11 y ya esta funcionando, en mi caso no se distingue el codigo en el componente.Saludos!

    • Avatar
      Mario
      jun 24, 2018

      he conectado todo como lo indicas pero al igual que Linda me da el mismo error

      • Avatar
        Schmidt
        mar 7, 2019

        Prueba con una R de 10k, yo tuve el mismo problema

    • Avatar
      J4
      jul 15, 2018

      Buenas.Tengo un problema con la lectura de humedad, he probado alimentando el dispositivo desde diferentes fuentes de alimentación, con distintas librerias y los resultados son los mismos:Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *F Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *F Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *F Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *F Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *F Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *F Humedad 1.00 %tTemperatura: 27.80 *C 82.04 *F Humedad 1.00 %tTemperatura: 27.70 *C 81.86 *FLa humedad varia si se respira sobre el sensor, pero de forma natural, haciendo pruebas sobre la mesa de un escritorio no me parece normal.¿Qúe podria hacer?

    • Avatar
      Eduardo
      nov 18, 2018

      Hola, el sensor DHT22 me da una humedad altísima y no se por qué, ya que con los DHT11 me funciona bien. Cuál puede ser el problema?? Saludos y gracias de antemano.

    • Avatar
      Sergio López Alvarez
      nov 25, 2018

      Buenas quiero hacer un control de temperatura y no me cambia el estado del pin te copio el código y a ver si me puedes echar un cable me va dando lecturas pero no varia el estado del pin se conecta y aunque suba temperatura no me pone en LOW el pin 2, gracias de antemano llevo tiempo con esto y no doy con ello.//Climatizadorconst int clima = 22; const int ESTUFA = 2; //Declarar pin ESTUFA const int EXTRACTOR = 3; //Declarar pin EXTRACTOR int AN5 = A0; //Declara entrada analogica en pin A5void setup() { pinMode(ESTUFA, OUTPUT); pinMode(EXTRACTOR, OUTPUT); pinMode(AN5, INPUT); Serial.begin (9600); } void loop() { AN5 = analogRead(A0); //Conexion analogica del LM35 AN5 = (AN5 * 500.00) / 1024.00; //Calcula la temperatura en ºC Serial.println(AN5); delayMicroseconds(2000); if(AN5

    • Avatar
      Fausto
      mar 6, 2019

      Hola una pregunta mi programa manda este mensaje Error compilando para la tarjeta Arduino/Genuino Uno, después de haber seguido todo el tutorial a pie de la letra.

      • Avatar
        Schmidt
        mar 7, 2019

        Cambia la versión de la biblioteca a DHT.h 1.2.3, las 1.3.0 no funcionan

      • Avatar
        Matias
        jul 1, 2019

        yo instale las librerias "adafruit unified sensor" y "adafruit unified playground", busca en el repositorio con "unified" como palabra clave

    • Avatar
      Victor Ramírez
      mar 20, 2019

      Hola gran trabajo y aporte. Tengo una duda, cómo haria para usar la función millis en la última seccion. Por qué al aplicar delay afectaría la lectura del sensor esto aplicando a qué high y low por ejemplo los quiera mantener por 5 segundos respectivamente. //... digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(100); //-------------------------------Gracias de antemano y saludos!!!

    • Avatar
      Marcos Espinoza
      abr 19, 2019

      Hola amigo, una pregunta, este dispositivo puede ser usado con un multiplexor, esto a fin de conectar varios a un arduino, pero usando la menor cantidad de pines, si conoces forma de hacer esto con los DHT. Gracias

    • Avatar
      Cristian
      may 20, 2019

      Buenas, estoy intentando conectar el sensor DHT22 a un nodo Lora, más en concreto a "Lora Radio Node v1.0". Se me presenta un problema a la hora de teclear el código (soy nuevo en esto), este nodo que estoy utilizando no utiliza pines numerados como podría ser el "2" que es el que tú conectas. Sólo puedo utilizar estos: "A1, A0, D4 y D3". ¿Cómo completo esta línea si no me permite introducir el nombre del pin?- DHT dht(D3, DHT22);- Gracias de antemano.

    • Avatar
      Angel
      jun 4, 2019

      Hola, una pregunta, es posible conectar 7 sensores DHT22 a un mismo arduino y que estos me funcionen correctamente?

    • Avatar
      Esteban
      ago 13, 2019

      me sale "exit status 1" "erro compilando arduino"

    • Avatar
      muneer ahmed
      nov 25, 2019

      Yes, great US Military force. Also, in his post you have given a chance to listen about US Military. I really appreciate your work. Thanks for sharing it. removalists singapore

    • Avatar
      muneer ahmed
      nov 25, 2019

      The same kind of care needs with regard to applied to barefoot jogging. facial treatment Apply the steps I just suggested and will also be blessed with beautiful hair.

    • Avatar
      muneer
      nov 26, 2019

      Particular interviews furnish firsthand message on mart size, industry trends, ontogeny trends, capitalist landscape and outlook, etc. Happy New Year Wishes

    • Avatar
      muneera ahmed
      nov 26, 2019

      Very interesting blog. multiple choice test maker A lot of blogs I see these days don't really provide anything that I'm interested in, but I'm most definitely interested in this one. Just thought that I would post and let you know

    • Avatar
      James
      nov 28, 2019

      Great article. Thanks for sharing your acknowledge.J

    • Avatar
      muneer ahmed
      nov 30, 2019

      Most of the time I don’t make comments on websites, but I'd like to say that this article really forced me to do so. Really nice post! seo

    • Avatar
      muneera ahmed
      dic 6, 2019

      Yes, great US Military force. Also, in his post you have given a chance to listen about US Military. I really appreciate your work. Thanks for sharing it. make up là gì

    • Avatar
      muneer ahmed
      dic 11, 2019

      Cania Consulting software testing company was founded in late 2014 and focuses on software quality assurance and test manager consultancy services within the European Union. About Cania Consulting

    • Avatar
      digitinc
      ene 12, 2020

      I really appreciate this wonderful post that you have provided for us. I assure this would be beneficial for most of the people. Thanks for sharing the information keep updating, looking forward to more posts. High Quality Adult Images

    • Avatar
      wedeqq
      ene 26, 2020

      You must come and know this site to play bandarq with high win rate as wedeqq. Thanks To Take Your Time

    • Avatar
      pasarqq
      ene 27, 2020

      pasarqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui pasarqq

    • Avatar
      pasarqq
      ene 27, 2020

      pasarqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui pasarqq

    • Avatar
      gelangqq
      ene 28, 2020

      gelangqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui gelangqq

    • Avatar
      gelangqq
      ene 28, 2020

      gelangqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui gelangqq

    • Avatar
      gelangqq
      ene 28, 2020

      gelangqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui gelangqq

    • Avatar
      gelangqq
      ene 28, 2020

      gelangqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui gelangqq

    • Avatar
      gelangqq
      ene 28, 2020

      gelangqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui gelangqq

    • Avatar
      Inspirational Quotes
      ene 30, 2020

      MySoul Quotes is collection of all type Quotes and Motivational Story with Heart Touching Quotes

    • Avatar
      Delhi Audition
      ene 30, 2020

      Delhi Audition is collection of all type of Auditions Movie Theater Singing Acting and Reality show

    • Avatar
      morningwishes
      ene 31, 2020

      we have given a beautiful collection of good morning video for download on this page. and you can share it with your friends and family

    • Avatar
      royalqq
      feb 5, 2020

      Royalqq merupakan salah satu situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui royalqq

    • Avatar
      pasarqq
      feb 8, 2020

      pasarqq situs poker rekomendasi dari daftarqq21 untuk anda mainkan melalui pasarqq

    • Avatar
      inch to mm
      feb 13, 2020

      SSC CPO 2020 Exam Notification is being conducted to recruit Applicants to the post of Sub Inspector in Delhi Police, Sub Inspector in CAPFs, Assistant Sub Inspector in CISF, Inspector posts and Sub Inspector Posts. Finally the Staff Selection Commission (SSC) has officially released the the notification for the SSC CPO 2020-2021 exam. One Nation One Ration Card The SSC CPO 2020-21 Paper 1 exam is expected to be held from september 28, 2020 to october 1, 2020 (CBE). LOVE STATUS IN HINDI electronegativity UPSC IAS Registration Students dream job IAS, one of the most awaited recruitment processes has been started by Government of India. cm to inches

    • Avatar
      Ankur Singh
      feb 14, 2020

      Its a great post, please share some more projects based on UNO...Your team's work is truly inspirational...

    • Avatar
      WishesNinety
      feb 26, 2020

      Very great content provided by you guys. Hope to read such a wonderful content in future kuddos to the team!

    • Avatar
      dacid beckcham
      feb 26, 2020

      Very great content provided by you guys. Hope to read such a wonderful content in future kuddos to the team! nice!!

    • Avatar
      Akshay Deep
      mar 24, 2020

      hi, nice post. Looking forward to seeing more. If you want to see Love Status for girlfriend then CLICK HERE

    • Avatar
      avni
      mar 30, 2020

      I loved your post so much I became a fan of youhttps://latestwhatsappstatus.com/333-attitude-whatsapp-status/

    • Avatar
      nicholas
      abr 1, 2020

      After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article. voyance gratuite en ligne

Leave a Reply

* Name:
* E-mail: (Not Published)
   Website: (Site url withhttp://)
* Comment: