El sensor de temperatura y humedad DHT11 mide la temperatura entre 0 y 50 grados centígrados y con una precisión de 2ºC, así como la humedad relativa puede medirla entre los rangos del 20% al 80% con una precisión del 5%.
El DHT11 es un sensor muy limitado que podemos usar con fines de formación, pruebas, o en proyectos que realmente no requieran una medición precisa.
Por el contrario, el modelo DHT22 tiene unas características mucho más aceptables.
Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC.
Medición de humedad entre 0 a 100%, con precisión del 2-5%.
Frecuencia de muestreo de 2 muestras por segundo (2 Hz).
Materiales:
Y unos cuantos cables.
Esquema de conexión:
Código fuente:
// Incluimos librería Versió 1.2.3 #include "DHT.h" //Libreri del sensor DHT11 #include <Wire.h> #include <Adafruit_GFX.h> //Nucleo de la librería gráfica. #include <Adafruit_SSD1306.h> //Librería para pantallas OLED monocromas de 128x64 y 128x32 #include <Fonts/FreeMonoBoldOblique12pt7b.h> #define OLED_RESET 0 Adafruit_SSD1306 display(OLED_RESET); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #define DHTPIN A3 // Definimos el pin digital donde se conecta el sensor #define DHTTYPE DHT11 // DHT 22 (AM2302), AM2321 DHT dht(DHTPIN, DHTTYPE); // Inicializamos el sensor DHT11 void setup() { // Inicializamos comunicación serie Serial.begin(9600); // Comenzamos el sensor DHT dht.begin(); //Inicializa pantalla con en la dirección 0x3C para la conexión I2C. display.begin(SSD1306_SWITCHCAPVCC, 0x3C); } void loop() { // Esperamos 5 segundos entre medidas delay(5000); // Leemos la humedad relativa float h = dht.readHumidity(); // Leemos la temperatura en grados centígrados (por defecto) float t = dht.readTemperature(); t = t + 2; // Le sumo 2 grados a la temperatura ya que hay una variación de +-2º // Leemos la temperatura en grados Fahreheit float f = dht.readTemperature(true); // Comprobamos si ha habido algún error en la lectura if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Error obteniendo los datos del sensor DHT11"); return; } // Calcular el índice de calor en Fahreheit float hif = dht.computeHeatIndex(f, h); // Calcular el índice de calor en grados centígrados float hic = dht.computeHeatIndex(t, h, false); //TEXTO CON FUENTE PREDETERMINADA display.fillScreen(0); //Limpiamos la pantalla display.setFont(); //Fuente por defecto -si no la hemos cambiado no es necesario seleccionarla display.setTextSize(1); display.setTextColor(1,0); display.setCursor(0,0); display.println("Temperatura Grado C"); display.setTextSize(2); display.setCursor(35,15); display.println(t); // display.println(t,DEC); //display.print(" C"); display.setCursor(0,25); display.setTextSize(1); //display.print("Grado C"); display.display(); //Refrescamos la pantalla para visualizarlo delay(4000); display.fillScreen(0); //Limpiamos la pantalla display.setFont(); //Fuente por defecto -si no la hemos cambiado no es necesario seleccionarla display.setTextSize(1); display.setTextColor(1,0); display.setCursor(0,0); display.println("Humedad actual %"); display.setTextSize(2); display.setCursor(35,15); display.println(h); display.setCursor(0,25); display.setTextSize(1); //display.print("%"); display.setTextSize(3); display.setTextColor(0,1); //Color invertido display.setCursor(0,32); display.print("AaBbCcD"); display.display(); //Refrescamos la pantalla para visualizarlo delay(4000); // Monitor serial Serial.print("Humedad: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t"); Serial.print("Índice de calor: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); }
Librerias:
DHT11: Descargas
Adafruit_SSD1306-master: Descargas
Adafruit-GFX-Library-master: Descargas