Arduino ile DHT11 Sıcaklık ve Nem Sensörü Nasıl Kullanılır?
İçindekiler
- Kısa Özet
- DHT11 sensörü nedir?
- DHT11 ile DHT22 arasındaki fark nedir?
- Hangi malzemeler gerekir?
- DHT11 Arduino bağlantısı nasıl yapılır?
- 3 pinli modül bağlantısı
- 4 pinli çıplak sensör bağlantısı
- DHT kütüphanesi nasıl kurulur?
- Örnek kod nasıl yazılır?
- Bu kod satır satır ne yapıyor?
- Sonuçlar nasıl görüntülenir?
- Sensör neden NaN veya hatalı değer döndürüyor?
- Sahada DHT11 kullanırken nelere dikkat etmeli?
- Sıcaklık eşiği aşılınca uyarı nasıl verilir?
- DHT11 ile hangi projeler yapılabilir?
Arduino ile DHT11 kullanmak için sensörün VCC ucunu 5V pinine, GND ucunu GND pinine, DATA ucunu ise dijital 2 numaralı pine bağlamanız yeterlidir. Ardından Arduino IDE içinden DHT sensor library kütüphanesini kurar, birkaç satırlık kodla sıcaklık ve nem değerlerini saniyeler içinde seri port ekranında görürsünüz.
Bu rehberde bağlantı şemasından örnek koda, sık karşılaşılan okuma hatalarından sahada yaşanan pratik sorunlara kadar her adımı sırayla ele alıyoruz. Arduino IDE kurulumunu ve kart ayarlarını henüz yapmadıysanız önce sitemizdeki Arduino IDE Kurulumu ve Arduino IDE Kart Ayarları yazılarına göz atmanızı öneririm.
Kısa Özet
- Sensör: DHT11, düşük maliyetli ve dijital çıkışlı bir sıcaklık ve nem sensörüdür.
- Bağlantı: 3 kablo yeterlidir: VCC, GND ve DATA.
- Kütüphane: Adafruit tarafından geliştirilen DHT sensor library ve bağımlılığı olan Adafruit Unified Sensor.
- Okuma sıklığı: En fazla saniyede bir okuma yapılmalı; pratikte 2 saniye aralık daha sağlıklıdır.
- En sık hata: Yanlış pin tanımı veya eksik pull-up direnci nedeniyle NaN değeri dönmesi.
DHT11 sensörü nedir?
DHT11, ortam sıcaklığını ve bağıl nemi ölçüp tek bir veri hattı üzerinden dijital olarak ileten bir sensördür. İçinde nem ölçümü için kapasitif bir eleman, sıcaklık ölçümü için bir termistör ve bu verileri işleyen küçük bir denetleyici bulunur.
Analog sensörlerden farkı, okunan değerin doğrudan sayısal olarak gelmesidir. Yani sizin ayrıca voltaj hesabı yapmanıza gerek kalmaz; kütüphane size santigrat derece ve yüzde nem değerini hazır verir.
DHT11 ile DHT22 arasındaki fark nedir?
İki sensör aynı kütüphaneyle çalışır ve bağlantıları neredeyse aynıdır. Fark ölçüm aralığında ve hassasiyettedir. Aşağıdaki tablo üretici veri sayfalarındaki temel değerleri özetler.
| Özellik | DHT11 | DHT22 |
|---|---|---|
| Sıcaklık aralığı | 0 ile 50 °C | -40 ile 80 °C |
| Sıcaklık hassasiyeti | ±2 °C | ±0,5 °C |
| Nem aralığı | %20 ile %90 | %0 ile %100 |
| Nem hassasiyeti | ±%5 | ±%2 ile %5 |
| Okuma sıklığı | Saniyede 1 | 2 saniyede 1 |
| Fiyat | Daha ucuz | Daha pahalı |
Oda sıcaklığını izlemek, bir öğrenci projesi yapmak veya fikir denemek için DHT11 yeterlidir. Soğuk hava deposu, dış ortam veya hassas ölçüm gereken yerlerde DHT22 tercih edilmelidir.
Hangi malzemeler gerekir?
- Arduino Uno, Nano veya uyumlu bir kart
- DHT11 sensörü (tercihen 3 pinli modül versiyonu)
- 3 adet erkek dişi veya erkek erkek jumper kablo
- Çıplak 4 pinli sensör kullanacaksanız 1 adet 10 kΩ direnç
- Breadboard (isteğe bağlı ama işi kolaylaştırır)
- USB kablo ve Arduino IDE yüklü bir bilgisayar
DHT11 Arduino bağlantısı nasıl yapılır?
Piyasada DHT11 iki şekilde satılır: küçük bir kart üzerine lehimlenmiş 3 pinli modül ve mavi gövdeli 4 pinli çıplak sensör. Modül versiyonunda pull-up direnci kartın üzerinde hazır gelir; çıplak sensörde bu direnci sizin eklemeniz gerekir.
3 pinli modül bağlantısı
| DHT11 modül pini | Arduino pini |
|---|---|
| VCC veya + | 5V |
| DATA veya S | Dijital 2 |
| GND veya - | GND |
4 pinli çıplak sensör bağlantısı
Sensörün ızgaralı yüzü size bakarken pinler soldan sağa 1, 2, 3 ve 4 olarak sayılır.
- 1. pin (VCC): Arduino 5V pinine bağlanır.
- 2. pin (DATA): Arduino dijital 2 pinine bağlanır. Bu pin ile 5V arasına 10 kΩ direnç takılır.
- 3. pin: Boş bırakılır.
- 4. pin (GND): Arduino GND pinine bağlanır.
Modüllerde pin sıralaması üreticiye göre değişebilir. Kablolamadan önce kartın üzerindeki baskı yazılarını mutlaka okuyun. VCC ile GND ters bağlandığında sensör birkaç saniyede ısınır ve kalıcı olarak bozulabilir.
DHT kütüphanesi nasıl kurulur?
Kütüphane kurulumu Arduino IDE üzerinden birkaç tıklamayla yapılır. İnternet bağlantınızın açık olması yeterlidir.
- Arduino IDE programını açın.
- Araçlar > Kütüphaneleri Yönet menüsüne girin. IDE 2.x sürümünde sol taraftaki kitap simgesine de tıklayabilirsiniz.
- Arama kutusuna
DHT sensor libraryyazın. - Adafruit tarafından yayınlanan kütüphaneyi bulup Yükle butonuna basın.
- IDE bağımlılıkları da kurmak isteyip istemediğinizi sorarsa Tümünü Yükle seçeneğini işaretleyin. Böylece Adafruit Unified Sensor kütüphanesi de otomatik gelir.
Bağımlılık kütüphanesi eksik kalırsa derleme sırasında Adafruit_Sensor.h bulunamadı hatası alırsınız. Bu hatayı gördüğünüzde yalnızca Adafruit Unified Sensor kütüphanesini ayrıca kurmanız yeterlidir.
Örnek kod nasıl yazılır?
Aşağıdaki kod sensörü her 2 saniyede bir okur, sıcaklık, nem ve hissedilen sıcaklık değerlerini seri port ekranına yazar. Okuma başarısız olursa kullanıcıyı uyarır.
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println("DHT11 okuma testi basladi");
}
void loop() {
delay(2000);
float nem = dht.readHumidity();
float sicaklik = dht.readTemperature();
if (isnan(nem) || isnan(sicaklik)) {
Serial.println("Sensor okunamadi, baglantiyi kontrol edin");
return;
}
float hissedilen = dht.computeHeatIndex(sicaklik, nem, false);
Serial.print("Sicaklik: ");
Serial.print(sicaklik);
Serial.print(" C | Nem: %");
Serial.print(nem);
Serial.print(" | Hissedilen: ");
Serial.print(hissedilen);
Serial.println(" C");
}
Bu kod satır satır ne yapıyor?
- #define DHTPIN 2: Sensörün veri hattının bağlı olduğu pini belirtir. Farklı pin kullanıyorsanız yalnızca bu sayıyı değiştirin.
- #define DHTTYPE DHT11: Sensör tipini bildirir. DHT22 kullanırsanız burayı DHT22 yapmanız yeterlidir.
- dht.begin(): Sensörle iletişimi başlatır.
- delay(2000): Sensörün yeni ölçüm hazırlaması için süre tanır. Bu değeri 1000 altına düşürmeyin.
- isnan(): Okunan değerin sayı olup olmadığını kontrol eder. Bağlantı sorunu varsa NaN döner.
- computeHeatIndex(): Sıcaklık ve nemden hissedilen sıcaklığı hesaplar. Son parametre false olduğunda sonuç santigrat cinsindendir.
Sonuçlar nasıl görüntülenir?
Kodu karta yükledikten sonra Araçlar > Seri Port Ekranı menüsünü açın ve sağ alt köşedeki hız değerini 9600 baud olarak seçin. Her iki saniyede bir yeni bir satırın geldiğini görürsünüz.
Değerlerin değişimini grafik olarak izlemek isterseniz Araçlar > Seri Çizici seçeneğini kullanabilirsiniz. Sensörün üzerine hafifçe nefes verdiğinizde nem eğrisinin hızla yükseldiğini görmek, bağlantının çalıştığını doğrulamanın en pratik yoludur.
Sensör neden NaN veya hatalı değer döndürüyor?
DHT11 projelerinde en çok karşılaşılan sorun, seri port ekranında sürekli okuma hatası mesajının görünmesidir. Bu durumun birkaç yaygın nedeni vardır.
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Sürekli NaN | DATA kablosu yanlış pinde | Koddaki DHTPIN değeri ile fiziksel pini eşleştirin |
| Sürekli NaN | Çıplak sensörde pull-up direnci yok | DATA ile 5V arasına 10 kΩ direnç ekleyin |
| Ara ara NaN | Çok sık okuma yapılıyor | delay süresini en az 2000 yapın |
| Ara ara NaN | Kablo çok uzun veya gevşek | Kabloyu kısaltın, breadboard temasını kontrol edin |
| Anlamsız karakterler | Seri port hızı uyuşmuyor | Ekranda 9600 baud seçin |
| Sıcaklık gerçekten yüksek | Sensör kartın veya regülatörün yanında | Sensörü ısı kaynağından uzaklaştırın |
Sahada DHT11 kullanırken nelere dikkat etmeli?
Masa üstünde çalışan bir devrenin gerçek ortamda farklı davrandığını birçok projede gördüm. Özellikle sunucu kabini ve küçük depo alanlarında sıcaklık izleme denemelerinde şu noktalar belirleyici oldu.
- Isı kaynağına yakınlık: Sensörü Arduino kartının hemen üstüne yapıştırdığımda ölçüm, ortamdan belirgin şekilde yüksek çıktı. Sensörü birkaç santimetre uzağa, kablo ile taşımak sorunu çözdü.
- Doğrudan güneş ve hava akımı: Pencere önüne veya klima çıkışına konan sensör odanın gerçek değerini değil, o noktanın anlık durumunu gösterir.
- Uzun kablo: Birkaç metreyi aşan kablolarda okuma hataları artar. Uzun mesafe gerekiyorsa korumalı kablo kullanmak veya sensörün yanına küçük bir kart koymak daha güvenlidir.
- Tozlu ortam: Üretim alanı gibi tozlu yerlerde sensörün ızgarası zamanla tıkanır ve nem ölçümü yavaşlar. Havalandırmalı küçük bir kutu içine koymak ömrünü uzatır.
- Karşılaştırma yapın: Kurulumdan sonra ölçümü güvendiğiniz bir termometre ile karşılaştırın. DHT11 için birkaç derecelik fark normaldir; bu farkı kodda sabit bir düzeltme olarak ekleyebilirsiniz.
Sıcaklık eşiği aşılınca uyarı nasıl verilir?
Sensörü yalnızca ekrana yazdırmak yerine bir eşik belirleyip LED, buzzer veya röle ile uyarı vermek, projeyi gerçek bir izleme sistemine dönüştürür. Aşağıdaki örnekte sıcaklık 30 derecenin üstüne çıktığında 13 numaralı pindeki LED yanar.
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define LED_PIN 13
#define ESIK 30.0
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
dht.begin();
}
void loop() {
delay(2000);
float sicaklik = dht.readTemperature();
if (isnan(sicaklik)) {
return;
}
if (sicaklik > ESIK) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Uyari: sicaklik esigi asildi");
} else {
digitalWrite(LED_PIN, LOW);
}
}
LED yerine bir röle modülü bağlarsanız aynı kodla küçük bir fanı veya havalandırmayı otomatik çalıştırabilirsiniz. Röleyle 220V cihaz kontrol edecekseniz elektrik güvenliği konusunda deneyimli birinden destek almanızı öneririm.
DHT11 ile hangi projeler yapılabilir?
- Oda termometresi: 16x2 LCD veya OLED ekranla masa üstü sıcaklık ve nem göstergesi.
- Sunucu kabini izleme: Eşik aşıldığında sesli uyarı veren basit bir alarm.
- Sera ve saksı takibi: Toprak nem sensörüyle birlikte bitki bakım sistemi.
- Kuluçka kontrolü: Sıcaklık ve nemi belirli aralıkta tutan röle kontrollü düzenek.
- Veri kaydedici: SD kart modülüyle ölçümleri dosyaya yazan kayıt cihazı.
- Uzaktan izleme: ESP8266 veya ESP32 ile verileri bir web sayfasına veya veritabanına gönderen sistem.
Uzaktan izleme projelerinde Arduino yerine doğrudan ESP32 kullanmak mantıklıdır. Aynı DHT kütüphanesi ESP kartlarında da çalışır; yalnızca pin numarasını kartınıza göre değiştirmeniz gerekir.

0 Yorum