Akvaryumdaki suyun sıcaklığını veya dışarıdaki hava durumunu ölçmek istiyorsanız DHT11 yetersiz kalır. Bize su geçirmeyen, kablosu metrelerce uzasa bile hata yapmayan bir "Tank" lazım. İşte karşınızda DS18B20.

1. Tek Hat (OneWire) Mucizesi

Bu sensörün en büyük özelliği, her birinin fabrikasyon olarak kendine ait benzersiz bir 64-bit Kimlik Numarasına (Adres) sahip olmasıdır.

Bu ne demek? Arduino'nun tek bir dijital pinine, paralel olarak 10 tane DS18B20 bağlayabilirsiniz. Arduino hepsine ismiyle (adresiyle) hitap eder: "Hey 28FF4A... sen sıcaklığı söyle!"
ARDUINO D2 TEK HAT (DATA) 4.7kΩ 5V Sensör 1 ID: ...A1 Sensör 2 ID: ...B5 Sensör 3 ID: ...C9

2. Direnç Unutulursa Çalışmaz!

DS18B20 kullanırken en sık yapılan hata Pull-Up Direncini unutmaktır. Veri hattı (Sarı kablo) ile 5V (Kırmızı kablo) arasına 4.7kΩ direnç takmalısınız.

Su Geçirmez Model (Kablolu)
  • 🔴 Kırmızı: 5V
  • Siyah: GND
  • 🟡 Sarı (veya Beyaz): Sinyal (Pin 2)
PCB Modül (Kartlı)

Eğer sensör bir PCB üzerine lehimlenmişse (KY-001 gibi), üzerinde minik bir direnç (genelde R1 yazar) zaten vardır. Ekstra direnç takmanıza gerek yoktur. Direkt bağlayın.

3. Yazılım (Kütüphane Şart!)

🛠️ Gerekli Kütüphaneler

Arduino IDE'de şu iki kütüphaneyi kurmalısınız:

  1. OneWire (İletişim protokolü için)
  2. DallasTemperature (Sensörü anlamak için)
DS18B20_Basic.ino C++
#include <OneWire.h>
#include <DallasTemperature.h>

// Sensörün bağlı olduğu pin
#define ONE_WIRE_BUS 2

// OneWire hattını kur
OneWire oneWire(ONE_WIRE_BUS);

// Sensör kütüphanesini başlat
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  Serial.println("DS18B20 Testi Basliyor...");
  sensors.begin();
}

void loop() {
  // Hattaki tüm sensörlere "Ölçüm Yap!" emri ver
  sensors.requestTemperatures(); 
  
  // 0. İndeksteki (İlk sensör) sıcaklığı al
  float sicaklik = sensors.getTempCByIndex(0);
  
  Serial.print("Sicaklik: ");
  Serial.print(sicaklik);
  Serial.println(" °C");
  
  delay(1000);
}
        

4. -127 Derece Hatası Nedir?

Bu hata kodu "Sensörü Bulamıyorum" demektir.
1. 4.7kΩ Direnci taktınız mı? (Sinyal ile 5V arasına).
2. Kablolar doğru mu? (Su geçirmez modellerde renkler bazen farklı olabilir, kontrol edin).

85°C, sensörün "Reset" değeridir. Eğer sürekli 85 okuyorsanız, sensör ölçüm yapmaya fırsat bulamadan veriyi okuyorsunuz demektir. requestTemperatures() komutunu kullandığınızdan emin olun veya bağlantıda temassızlık arayın.