DHT11 Nedir?
DHT11 sensörü, küçük çaplı uygulamalar için geliştirilmiş bir sıcaklık ve nem sensörüdür. 0°C ile 50°C arasında sıcaklık ve %20–90 arası bağıl nem ölçümü yapabilir. Sıcaklık hassasiyeti ±2°C, nem hassasiyeti ise ±5%’tir. Bu nedenle akıllı ev sistemleri ve hava durumu istasyonlarında sıklıkla tercih edilir.
Proje: Arduino ile Dijital Termometre
Bu projede DHT11 sıcaklık ve nem sensörü kullanarak ortam değerlerini ölçüp I2C arayüzlü LCD ekrana yazdıracağız. Böylece sıcaklık ve nem değerlerini anlık olarak görebileceğiz.
Gerekli Malzemeler
- 1x Arduino Uno
- 1x Breadboard
- 1x DHT11 Sıcaklık ve Nem Sensörü
- 1x I2C Arayüzlü 16x2 LCD Ekran
- Jumper Kablolar
I2C Adres Kontrolü
LCD ekranı kullanmadan önce I2C adresini tespit etmemiz gerekir. Bunun için aşağıdaki kod çalıştırılır ve Seri Monitör’den adres okunur.
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("I2C adresleri taraniyor...");
}
void loop() {
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
if (Wire.endTransmission() == 0) {
Serial.print("Aygit bulundu! Adres: 0x");
Serial.println(address, HEX);
}
}
Serial.println("Tarama tamamlandi.");
delay(5000);
}
Proje Devre Dizilim Görseli

Arduino Kodları
#include <Wire.h> //I2C haberleşme için gerekli kütüphane
#include <LiquidCrystal_I2C.h> //LCD ekran ve I2C modülü için gerekli kütüphane
#include <DHT.h> // Sıcaklık ve nem sensörü için gerekli kütüphane
LiquidCrystal_I2C lcd(0x27, 16 , 2); //(I2C adresi, kolon sayısı, satır sayısı)
#define DHTPIN 2 //Sensörün veri pini 2 numaralı dijital pinde
#define DHTTYPE DHT11 //Kullanılan sensör tipi DHT11
DHT dht(DHTPIN, DHTTYPE); //Sıcaklık ve nem verilerini okumak için dht nesnesi tanımlanıyor
void setup() {
lcd.init(); //LCD başlatılıyor
lcd.backlight(); //LCD arka ışıkları açılıyor
dht.begin(); //DHT11 başlatılıyor
lcd.setCursor(0, 0); //LCD imleci 1. satırın 1. kolonuna getiriliyor
lcd.print("Dijital");
lcd.setCursor(0, 1); //LCD imleci 2. satırın 1. kolonuna getiriliyor
lcd.print("Termometre");
delay(2000);
lcd.clear(); //LCD'de yazan her şeyi sil
}
void loop() {
float temp = dht.readTemperature(); // Sıcaklık değeri okunarak temp değişkenine ondalıklı olarak atanır
float hum = dht.readHumidity(); // Nem değeri okunarak hum değişkenine ondalıklı olarak atanır
lcd.setCursor(0, 0); //LCD imleci 1. satırın 1. kolonuna getiriliyor
lcd.print("SICAKLIK: ");
lcd.print(temp,1); //temp değişkeni virgülden sonra bir basamak olacak şekilde ekrana yazdırılıyor
lcd.print((char)223); //LCD karakter setinde "°" işareti için gerekli karakter kodu gönderilerek işaret yazdırılıyor
lcd.print("C");
lcd.setCursor(0,1); //LCD imleci 2. satırın 1. kolonuna getiriliyor
lcd.print("NEM ORANI: ");
lcd.print(hum,1); // hum değişkeni virgülden sonra bir basamak olacak şekilde ekrana yazdırılıyor
lcd.print("%");
delay(2000); //2000 milisaniyede bir ekrandaki değer güncellenecek
}
İpuçları
- Ekrandaki yazılar görünmüyorsa, LCD üzerindeki mavi ayar vidasından kontrast ayarı yapın.
- I2C adresi farklı çıkabilir, mutlaka kontrol edin.
- DHT11 düşük maliyetli ama hassasiyeti sınırlıdır. Daha doğru ölçüm için DHT22 kullanılabilir.
İlgili Ürünler
Daha fazla sensör için Elektronik kategorisine, Arduino kartları için Arduino sayfamıza göz atabilirsiniz.
Hazırlayan: Kirpilab | Maker topluluğu için elektronik projeler