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

Monitorizarea condițiilor de mediu, cum ar fi temperatura și umiditatea este esențială pentru diverse aplicații, de la automatizarea locuinței până la gestionarea cu efect de seră. Cu platforma și senzorii versatili Arduino precum DHT11 sau DHT22, crearea unui monitor de temperatură și umiditate fiabil este accesibilă și simplă. In this guide, we'll walk you through the components needed, the setup process, and the coding required to bring your monitor to life.

Components You'll Need

  • Arduino Uno
  • DHT11 or DHT22 Sensor
  • 10k Ohm Resistor
  • Breadboard and Jumper Wires
  • LCD Display (optional)
  • USB Cable

Înțelegerea senzorilor DHT11/DHT22

DHT11 și DHT22 sunt senzori populari pentru măsurarea temperaturii și umidității. DHT11 este rentabil și adecvat pentru aplicațiile de bază, oferind un interval de temperatură de 0-50 ° C cu o precizie de ± 2 ° C și un interval de umiditate de 20-80% cu o precizie de ± 5%. DHT22, pe de altă parte, oferă un interval de temperatură mai larg de -40 până la 80 ° C, cu o precizie de ± 0,5 ° C și o gamă de umiditate de 0-100% cu o precizie de ± 2-5%, ceea ce o face ideală pentru proiecte mai solicitante.

Cablarea senzorului către Arduino

Urmați acești pași pentru a vă conecta senzorul DHT la Arduino:

  1. Conexiuni de putere: Conectați știftul VCC al senzorului DHT la știftul 5V de pe Arduino și pinul GND la sol (GND).
  2. Pin de date: Conectați pinul de date al senzorului DHT la un pin de intrare digital de pe Arduino (în mod obișnuit Pin 2).
  3. Rezistență de tragere: Puneți o rezistență de 10k ohm între VCC și PIN -ul de date pentru a asigura o transmisie stabilă a datelor.
  4. Afișaj LCD (opțional): Dacă utilizați un LCD, conectați -l la pinii Arduino corespunzători pentru afișarea lecturilor.

Programarea Arduino

Pentru a citi date de la senzorul DHT, vom folosi DHT.h Biblioteca, care simplifică procesul. Mai jos este un fragment de cod de probă pentru a vă începe:

// 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ția codului:

  • DHT.h Biblioteca este inclusă pentru a facilita comunicarea cu senzorul.
  • Definim tipul de date și tipul de senzor folosind #define.
  • În setup() Funcție, inițializăm comunicarea în serie și senzorul DHT.
  • loop() Funcția citește umiditatea și temperatura la fiecare două secunde și le imprimă pe monitorul în serie.

Afișarea datelor

Pentru o configurație mai ușor de utilizat, puteți afișa citirile pe un LCD. Modificați codul pentru a trimite date către LCD în loc de monitorul în serie. Asigurați -vă că aveți instalată biblioteca LCD corespunzătoare și configurați pinii în consecință.

Cod de probă pentru afișarea 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(" %");
}

Testarea configurației dvs.

După încărcarea codului în Arduino, deschideți monitorul serial (dacă utilizați ieșire în serie) sau observați afișajul LCD. Ar trebui să vedeți lecturi de temperatură și umiditate în timp real. Asigurați -vă că conexiunile dvs. sunt sigure, iar senzorul funcționează corect. Dacă întâmpinați probleme, verificați dublu cablarea și verificați dacă tipul de senzor corect este definit în codul dvs.

Îmbunătățiri și pașii următori

Acum că aveți un monitor de bază de temperatură și umiditate, luați în considerare următoarele îmbunătățiri:

  • Jurnal de date: Conectați -vă Arduino la un modul de card SD pentru a înregistra datele în timp pentru analiză.
  • Monitorizare wireless: Utilizați module precum ESP8266 sau Bluetooth pentru a trimite date către smartphone -ul sau serviciile cloud.
  • Alerte: Implementați alerte bazate pe prag folosind LED-uri sau buzunare pentru a vă anunța cu privire la condiții extreme.
  • Mai mulți senzori: Extindeți -vă configurația pentru a include senzori suplimentari pentru parametri precum calitatea aerului sau intensitatea luminii.

Concluzie

Construirea unui monitor de temperatură și umiditate cu DHT11/DHT22 și Arduino este un proiect excelent pentru începători și pasionați deopotrivă. Oferă experiență practică cu integrarea senzorilor, procesarea datelor și tehnici de afișare. Fie pentru uz personal, fie ca fundament pentru sisteme mai complexe, acest proiect prezintă puterea și flexibilitatea ecosistemului Arduino. Clădire fericită!

Lasă un comentariu

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.