Construir un monitor de temperatura y humedad con DHT11/DHT22 y Arduino

Monitorear las condiciones ambientales como la temperatura y la humedad es esencial para varias aplicaciones, desde la automatización del hogar hasta la gestión de invernaderos. Con la versátil plataforma Arduino y los sensores como el DHT11 o DHT22, crear un monitor de temperatura y humedad confiable es asequible y directo. En esta guía, lo guiaremos a través de los componentes necesarios, el proceso de configuración y la codificación requerida para dar vida a su monitor.

Componentes que necesitará

  • Arduino Uno
  • Sensor DHT11 o DHT22
  • Resistencia de 10k ohmios
  • Cables de placa y jersey
  • Pantalla LCD (opcional)
  • Cable USB

Comprender los sensores DHT11/DHT22

El DHT11 y DHT22 son sensores populares para medir la temperatura y la humedad. El DHT11 es rentable y es adecuado para aplicaciones básicas, que ofrece un rango de temperatura de 0-50 ° C con una precisión de ± 2 ° C y un rango de humedad de 20-80% con una precisión de ± 5%. El DHT22, por otro lado, proporciona un rango de temperatura más amplio de -40 a 80 ° C con ± 0.5 ° C de precisión y rango de humedad de 0-100% con una precisión de ± 2-5%, lo que lo hace ideal para proyectos más exigentes.

Cableado el sensor a Arduino

Siga estos pasos para conectar su sensor DHT al Arduino:

  1. Conexiones de alimentación: Conecte el pin VCC del sensor DHT al pin de 5V en el arduino y el pin GND al suelo (GND).
  2. Pin de datos: Conecte el pin de datos del sensor DHT a un pin de entrada digital en el Arduino (comúnmente pin 2).
  3. Pull-Up Resistor: Place a 10k Ohm resistor between the VCC and data pin to ensure stable data transmission.
  4. LCD Display (Optional): If using an LCD, connect it to the appropriate Arduino pins for displaying the readings.

Programación del Arduino

Para leer datos del sensor DHT, utilizaremos el DHT.h Biblioteca, que simplifica el proceso. A continuación se muestra un fragmento de código de muestra para comenzar:

// Include the DHT library
#include <DHT.h>

// Define the sensor type and the pin it's connected to
#define DHTPIN 2
#define DHTTYPE DHT22 // Change to DHT11 if you're using that model

// Initialize the DHT sensor
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  // Start serial communication
  Serial.begin(9600);
  // Initialize the DHT sensor
  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements
  delay(2000);

  // Read humidity and temperature
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  // Check if any reads failed
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Print the results to the Serial Monitor
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");
}

Explicación del código:

  • El DHT.h La biblioteca se incluye para facilitar la comunicación con el sensor.
  • Definimos el pin de datos y el tipo de sensor utilizando #define.
  • En el setup() Función, inicializamos la comunicación en serie y el sensor DHT.
  • El loop() La función lee la humedad y la temperatura cada dos segundos y los imprime al monitor en serie.

Mostrando los datos

Para una configuración más fácil de usar, puede mostrar las lecturas en una pantalla LCD. Modifique el código para enviar datos a la LCD en lugar del monitor en serie. Asegúrese de que tenga instalada la biblioteca LCD apropiada y configure los pines en consecuencia.

Código de muestra para la pantalla LCD:

// Include necessary libraries
#include <DHT.h>
#include <LiquidCrystal.h>

// Define sensor and LCD pins
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// Initialize the LCD (adjust pin numbers as needed)
LiquidCrystal lcd(12, 11, 5, 4, 3, 6);

void setup() {
  // Start serial communication
  Serial.begin(9600);
  dht.begin();
  // Initialize the LCD
  lcd.begin(16, 2);
  lcd.print("Temp & Humidity");
}

void loop() {
  delay(2000);

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    lcd.clear();
    lcd.print("Sensor Error");
    return;
  }

  // Display on LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");
  lcd.setCursor(0, 1);
  lcd.print("Humidity: ");
  lcd.print(humidity);
  lcd.print(" %");
}

Probando su configuración

Después de cargar el código a su Arduino, abra el monitor en serie (si usa la salida en serie) u observe la pantalla LCD. Debería ver lecturas de temperatura y humedad en tiempo real. Asegúrese de que sus conexiones estén seguras y que el sensor funcione correctamente. Si encuentra problemas, verifique dos veces el cableado y verifique que el tipo de sensor correcto se define en su código.

Mejoras y los siguientes pasos

Ahora que tiene un monitor básico de temperatura y humedad, considere las siguientes mejoras:

  • Registro de datos: Conecte su Arduino a un módulo de tarjeta SD para registrar datos a lo largo del tiempo para su análisis.
  • Monitoreo inalámbrico: Use módulos como ESP8266 o Bluetooth para enviar datos a su teléfono inteligente o servicios en la nube.
  • Alertas: Implemente alertas basadas en umbral utilizando LED o timbres para notificarle a condiciones extremas.
  • Sensores múltiples: Expanda su configuración para incluir sensores adicionales para parámetros como la calidad del aire o la intensidad de la luz.

Conclusión

Construir un monitor de temperatura y humedad con el DHT11/DHT22 y Arduino es un excelente proyecto para principiantes y entusiastas por igual. Proporciona experiencia práctica con integración de sensores, procesamiento de datos y técnicas de visualización. Ya sea para uso personal o como base para sistemas más complejos, este proyecto muestra la potencia y la flexibilidad del ecosistema Arduino. ¡Feliz edificio!

Escribir un comentario

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.