Budowanie monitora temperatury i wilgotności z DHT11/DHT22 i Arduino

Monitorowanie warunków środowiskowych, takich jak temperatura i wilgotność, jest niezbędne do różnych zastosowań, od automatyzacji domu po zarządzanie szklarnią. Dzięki wszechstronnej platformie Arduino i czujnikom, takim jak DHT11 lub DHT22, tworzenie niezawodnego monitora temperatury i wilgotności jest zarówno przystępne, jak i proste. W tym przewodniku przeprowadzimy Cię przez potrzebne komponenty, proces konfiguracji i kodowanie wymagane do ożywienia monitora.

Komponenty, których potrzebujesz

  • Arduino Uno
  • Czujnik DHT11 lub DHT22
  • 10K Ohm rezystor
  • Druty chleba i skoczków
  • Wyświetlacz LCD (opcjonalnie)
  • Kabel USB

Zrozumienie czujników DHT11/DHT22

DHT11 i DHT22 są popularnymi czujnikami do pomiaru temperatury i wilgotności. DHT11 jest opłacalny i odpowiedni do podstawowych zastosowań, oferując zakres temperatur 0-50 ° C z ± 2 ° C dokładnością i zakresem wilgotności 20-80% przy ± 5% dokładności. Z drugiej strony DHT22 zapewnia szerszy zakres temperatur od -40 do 80 ° C z ± 0,5 ° C dokładnością i zakresem wilgotności 0-100% przy ± 2-5% dokładności, co czyni go idealnym do bardziej wymagających projektów.

Okablowanie czujnika do Arduino

Wykonaj następujące kroki, aby podłączyć czujnik DHT z Arduino:

  1. Połączenia zasilania: Podłącz pin VCC czujnika DHT do szpilki 5V na Arduino i szpilku GND do ziemi (GND).
  2. PIN DANY: Connect the data pin of the DHT sensor to a digital input pin on the Arduino (commonly pin 2).
  3. Pull-Up Resistor: Umieść rezystor 10K Ohm między VCC a pinem danych, aby zapewnić stabilną transmisję danych.
  4. Wyświetlacz LCD (opcjonalnie): Jeśli używasz LCD, podłącz go do odpowiednich pinów Arduino do wyświetlania odczytów.

Programowanie Arduino

Aby odczytać dane z czujnika DHT, użyjemy DHT.h Biblioteka, która upraszcza proces. Poniżej znajduje się przykładowy fragment kodu na początek:

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

Objaśnienie kodu:

  • . DHT.h Biblioteka jest uwzględniona w celu ułatwienia komunikacji z czujnikiem.
  • Zdefiniujemy pin i typ czujnika za pomocą #define.
  • W setup() Funkcja, inicjujemy komunikację szeregową i czujnik DHT.
  • . loop() Funkcja odczytuje wilgotność i temperaturę co dwie sekundy i drukuje je do monitora szeregowego.

Wyświetlanie danych

Aby uzyskać bardziej przyjazną konfigurację, możesz wyświetlać odczyty na LCD. Zmodyfikuj kod, aby wysłać dane do LCD zamiast monitora szeregowego. Upewnij się, że masz odpowiednią bibliotekę LCD i odpowiednio skonfiguruj piny.

Przykładowy kod dla wyświetlacza 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(" %");
}

Testowanie konfiguracji

Po przesłaniu kodu do Arduino otwórz monitor szeregowy (przy użyciu wyjścia szeregowego) lub obserwuj wyświetlacz LCD. Powinieneś zobaczyć odczyty temperatury i wilgotności w czasie rzeczywistym. Upewnij się, że połączenia są bezpieczne, a czujnik działa poprawnie. Jeśli napotkasz problemy, sprawdź dwukrotnie okablowanie i sprawdź, czy prawidłowy typ czujnika jest zdefiniowany w kodzie.

Ulepszenia i kolejne kroki

Teraz, gdy masz podstawowy monitor temperatury i wilgotności, rozważ następujące ulepszenia:

  • Rejestrowanie danych: Podłącz swoje Arduino z modułem karty SD, aby zarejestrować dane w czasie do analizy.
  • Monitorowanie bezprzewodowe: Użyj modułów takich jak ESP8266 lub Bluetooth, aby wysyłać dane do usług smartfona lub chmur.
  • Alerty: Wdrożyć alerty oparte na progach za pomocą diod LED lub brzęczyków, aby powiadomić Cię o ekstremalnych warunkach.
  • Wiele czujników: Rozwiń konfigurację, aby uwzględnić dodatkowe czujniki dla parametrów, takich jak jakość powietrza lub intensywność światła.

Wniosek

Budowanie monitora temperatury i wilgotności za pomocą DHT11/DHT22 i Arduino jest doskonałym projektem dla początkujących i entuzjastów. Zapewnia praktyczne wrażenia z technikami integracji czujników, przetwarzaniem danych i wyświetlania. Niezależnie od tego, czy do użytku osobistego, czy jako podstawa dla bardziej złożonych systemów, ten projekt prezentuje moc i elastyczność ekosystemu Arduino. Szczęśliwy budynek!

Zostaw komentarz

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.