#117Orta

ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı)

DHT22 sensörü ile ortam sıcaklığını ve nem oranını ölçüp 16x2 I2C LCD ekranda gerçek zamanlı olarak gösteren bir projedir. Adafruit DHT kütüphanesi kullanılarak tek kablo (one-wire) protokolü ile sensörden veri okunur. Bu proje, IoT hava istasyonu, akıllı ev otomasyonu veya seralarda ortam takip sistemlerinin temelini oluşturur. ESP32'nin GPIO 4 pini üzerinden DHT22 ile haberleşme sağlanır.

4.8(38)
54 tamamlandı
ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı)
Odanın sıcaklığını ve nemini merak ediyorsan bu küçük ölçer tam sana göre. DHT22 sensörü havayı ölçer, ESP32 de iki saniyede bir sıcaklığı ve nem oranını ondalıklı olarak LCD ekrana yazar. Sensör okunamazsa ekran bunu da söyler; bitki köşesi ya da ev hava istasyonu gibi projelerin temeli.

Video

Devre Şeması

ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı) - Circuit

Kaynak Kodu

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı)
4// ─────────────────────────────────────────
5// DHT22 sensöründen 2 sn'de bir sıcaklık ve nem okunur, 16x2 I2C LCD'ye
6// yazılır. Okuma başarısız olursa ekranda kablo ve pull-up uyarısı
7// görünür.
8//
9// Pinler:
10//   GPIO 4  -> DHT22 DATA
11//   10k pull-up DATA ile VCC arasında
12//   GPIO 21 -> LCD SDA, GPIO 22 -> LCD SCL
13//   DHT22 VCC -> 3V3, LCD VCC -> 5V (VIN)
14//   Tüm GND'ler ortak
15
16#include <Wire.h>
17#include <LiquidCrystal_I2C.h>
18#include <DHT.h>
19
20// Pin tanımları
21const int DHT_PIN = 4;
22#define DHT_TYPE DHT22
23
24DHT dht(DHT_PIN, DHT_TYPE);
25
26// LCD adresi 0x27, bazen 0x3F
27LiquidCrystal_I2C lcd(0x27, 16, 2);
28
29// DHT22 en az 2 sn arayla okunur
30const unsigned long READ_INTERVAL = 2000;
31unsigned long lastRead = 0;
32
33void setup() {
34  // DevKit V1 varsayılan I2C pinleri: SDA=21, SCL=22
35  Wire.begin(21, 22);
36  lcd.init();
37  lcd.backlight();
38
39  // Açılış ekranı 3 sn
40  lcd.setCursor(3, 0);
41  lcd.print("BlueGrays");
42  lcd.setCursor(3, 1);
43  lcd.print("DHT22 v1.0");
44  delay(3000);
45  lcd.clear();
46
47  dht.begin();
48}
49
50void loop() {
51  // 2 sn'de bir oku, delay() kullanmadan
52  if (millis() - lastRead >= READ_INTERVAL) {
53    lastRead = millis();
54
55    float h = dht.readHumidity();
56    float t = dht.readTemperature();
57
58    lcd.clear();
59
60    // NaN = kablo/pullup sorunu
61    if (isnan(h) || isnan(t)) {
62      lcd.setCursor(0, 0);
63      lcd.print("Sensor okunamadi");
64      lcd.setCursor(0, 1);
65      lcd.print("Kablo+10k pullup");
66    } else {
67      // Sıcaklık
68      lcd.setCursor(0, 0);
69      lcd.print("Sicaklik:");
70      lcd.print(t, 1);
71      lcd.print("C");
72      // Nem, DHT22 ondalıklı verir
73      lcd.setCursor(0, 1);
74      lcd.print("Nem     :");
75      lcd.print(h, 1);
76      lcd.print("%");
77    }
78  }
79}
80

Sıkça Sorulanlar

DHT22 ile DHT11 arasındaki fark ne?▾

DHT22 daha hassastır (±0,5 °C, ±%2–5 nem), daha geniş aralıkta ölçer (−40 ile 80 °C) ve 0,1 çözünürlük verir. DHT11 daha ucuzdur ama ±2 °C ve tam sayı çözünürlüğüyle sınırlıdır.

10 kΩ pull-up direnci gerekli mi?▾

Çıplak DHT22 sensörde veri hattı için 10 kΩ pull-up gerekir. Kart üzerine monte edilmiş 3 bacaklı modüllerde direnç genellikle zaten vardır.

LCD 5 V, ESP32 3,3 V; birlikte çalışır mı?▾

I2C LCD modülleri 5 V ile daha net görüntü verir. 5 V ile beslenen modülün SDA/SCL hatlarındaki pull-up dirençleri 5 V'a bağlıysa seviye dönüştürücü kullanmak en güvenli yoldur; pek çok kişi doğrudan bağlasa da bu ESP32'nin sınırlarını zorlar.

Verileri internete gönderebilir miyim?▾

Evet, ESP32'nin Wi-Fi'si ile ölçümleri ThingSpeak, Blynk ya da kendi sunucuna gönderip grafikleri telefondan izleyebilirsin.

ESP32 DHT22 Sıcaklık ve Nem (LCD Ekranlı) | BlueGrays