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

.