Building a Temperature & Humidity Monitor with DHT11/DHT22 and Arduino

O monitoramento de condições ambientais como temperatura e umidade é essencial para várias aplicações, da automação residencial ao gerenciamento de estufa. Com a versátil plataforma Arduino e sensores como o DHT11 ou DHT22, criar um monitor de temperatura e umidade confiável é acessível e direto. Neste guia, levaremos você pelos componentes necessários, no processo de configuração e na codificação necessária para dar vida ao seu monitor.

Componentes que você precisará

  • Arduino Uno
  • Sensor DHT11 ou DHT22
  • Resistor de 10k ohm
  • Fios de pão e jumper
  • Display LCD (opcional)
  • Cabo USB

Compreendendo os sensores DHT11/DHT22

O DHT11 e o DHT22 são sensores populares para medir a temperatura e a umidade. O DHT11 é econômico e adequado para aplicações básicas, oferecendo uma faixa de temperatura de 0-50 ° C com precisão de ± 2 ° C e faixa de umidade de 20-80% com precisão de ± 5%. O DHT22, por outro lado, fornece uma faixa de temperatura mais ampla de -40 a 80 ° C com ± 0,5 ° C de precisão e umidade de 0 a 100% com precisão de ± 2-5%, tornando-o ideal para projetos mais exigentes.

Ligando o sensor a Arduino

Siga estas etapas para conectar seu sensor DHT ao Arduino:

  1. Conexões de energia: Conecte o pino VCC do sensor DHT ao pino de 5V no arduino e no pino GND no solo (GND).
  2. Pin de dados: Conecte o pino de dados do sensor DHT a um pino de entrada digital no Arduino (geralmente pino 2).
  3. Resistor de pull-up: Coloque um resistor de 10k ohm entre o VCC e o PIN de dados para garantir a transmissão estável de dados.
  4. LCD Display (Opcional): Se estiver usando um LCD, conecte -o aos pinos Arduino apropriados para exibir as leituras.

Programando o Arduino

Para ler dados do sensor DHT, usaremos o DHT.h Biblioteca, que simplifica o processo. Abaixo está um trecho de código de amostra para começar:

// 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");
}

Explicação do Código:

  • O DHT.h library is included to facilitate communication with the sensor.
  • We define the data pin and sensor type using #define.
  • No setup() Função, inicializamos a comunicação serial e o sensor DHT.
  • O loop() A função lê a umidade e a temperatura a cada dois segundos e as imprime no monitor serial.

Exibindo os dados

Para uma configuração mais fácil de usar, você pode exibir as leituras em um LCD. Modifique o código para enviar dados para o LCD em vez do monitor serial. Ensure you have the appropriate LCD library installed and configure the pins accordingly.

Código de exemplo para exibição de 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(" %");
}

Testando sua configuração

Depois de fazer o upload do código para o seu Arduino, abra o monitor serial (se estiver usando saída serial) ou observe a tela LCD. Você deve ver leituras de temperatura e umidade em tempo real. Verifique se suas conexões estão seguras e o sensor está funcionando corretamente. Se você encontrar problemas, verifique a fiação e verifique se o tipo de sensor correto está definido em seu código.

Enhancements and Next Steps

Agora que você tem um monitor básico de temperatura e umidade, considere os seguintes aprimoramentos:

  • Registro de dados: Conecte seu Arduino a um módulo de cartão SD para registrar dados ao longo do tempo para análise.
  • Monitoramento sem fio: Use módulos como o ESP8266 ou o Bluetooth para enviar dados para o seu smartphone ou serviços em nuvem.
  • Alertas: Implementar alertas baseados em limiar usando LEDs ou campainhas para notificá-lo de condições extremas.
  • Múltiplos sensores: Expanda sua configuração para incluir sensores adicionais para parâmetros como qualidade do ar ou intensidade da luz.

Conclusão

Construir um monitor de temperatura e umidade com o DHT11/DHT22 e o Arduino é um excelente projeto para iniciantes e entusiastas. Ele fornece experiência prática com integração de sensores, processamento de dados e técnicas de exibição. Seja para uso pessoal ou como base para sistemas mais complexos, este projeto mostra o poder e a flexibilidade do ecossistema Arduino. Feliz edifício!

Deixe um comentário

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.