
DS18B20, “1-Wire” (Tek Kablo) protokolünü kullanan hassas bir dijital sıcaklık sensörüdür. Bu özellik, birden fazla sensörün aynı ESP32 pinine paralel bağlanmasına olanak tanır. Özellikle su geçirmez (waterproof) kılıflı versiyonu sıvılarda veya dış ortamda kullanım için idealdir.
Pin Kodları ve ESP32 Bağlantısı
| Sensör Pini | ESP32 Pini | Açıklama |
| VCC (+) | 3.3V | Güç girişi. |
| GND (-) | GND | Topraklama |
| DATA | GPIO 4 | Veri okuma/yazma pini. |
⚠️ Çok Önemli Not: 1-Wire protokolü için DATA pini ile VCC (3.3V) pini arasına 4.7K Ohm “pull-up” direnci bağlamanız şarttır.
DS18B20 sıcaklık sensörü VDD pini üzerinden (normal mod) veya veri hattından (parazit mod) güç alabilir. İki moddan birini seçebilirsiniz.
ESP32 kullanıyorsanız, aşağıdaki iki şematik diyagramdan birini kullanabilirsiniz.
Parazit Mod:

Normal Mod

ESP32 (Arduino IDE) Örnek Kodu
Gerekli Kütüphaneler: “OneWire by Paul Stoffregen” ve “DallasTemperature”.
İlgili kütüphaneleri yüklemek için Arduino IDE’nizi açın ve Sketch > Include Library > Manage Libraries (Eskiz > Kütüphane Ekle > Kütüphaneleri Yönet) seçeneğine gidin. Kütüphane Yöneticisi açıldıktan sonra arama çubuğuna önce “OneWire by Paul Stoffregen” sonra da “DallasTemperature” yazarak bu kütüphaneleri yükleyiniz.
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4 // 1-Wire veriyolu pini
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void) {
Serial.begin(115200);
Serial.println("DS18B20 Sıcaklık Sensörü Testi");
sensors.begin();
}
void loop(void) {
Serial.print("Sıcaklık isteniyor...");
sensors.requestTemperatures();
Serial.println("Bitti");
float tempC = sensors.getTempCByIndex(0); // İlk sensörün sıcaklığını al
if(tempC == DEVICE_DISCONNECTED_C) {
Serial.println("Hata: Sensör bulunamadı. Pull-up direncini kontrol edin.");
delay(2000);
return;
}
Serial.print("Sıcaklık: ");
Serial.print(tempC);
Serial.println(" *C");
delay(2000);
}
Kodumuzun çalışma mantığı:
Önce gerekli kütüphaneleri #include ile koda dahil ediyoruz ki OneWire bağlantısında ve DS18B20 sensörüne erişimde sorun yaşamayalım. Daha sonra OneWire ile sensörün bağlı olduğu pini tanımlıyoruz. Pin tanımlamasından sonra DS18B20’den Sensors.requestTemperatures() fonksiyonunu kullanarak sıcaklık okuması yapıyoruz. float tempC = sensors.getTempCByIndex(0) fonksiyonu ile ilk sensörden okunan sıcaklık değerini alıyoruz. Sıcaklık değeri yoksa sensör bağlantı hatası veriyoruz, sıcaklık değeri varsa onu seri monitöre yazdırıyoruz.
Eğer akıllı ev, IOT projeleri ile ilgili sorularınız veya yapmak istediğiniz bir projeniz varsa, yedek alma ve yedekten dönme planınız veya felaket kurtarma planınız yoksa, işletmeniz için nasıl bir Sunucu, Bilgisayar veya Kesintisiz Güç Kaynağı seçmeniz gerektiğini bilmiyorsanız danışmanlık hizmetlerimden faydalanmak isterseniz bana WhatsApp üzerinden ulaşabilirsiniz.
İlgili Yazılar:
ESP32-C3 Süper Mini Rehberi (2025) – Teknik Özellikler, Pinout & Arduino Uygulama
ESP8266 ve ESP32 Detaylı Karşılaştırma
I2C ile Arduino’lar Arası Veri Aktarımı
I2C Protokolü Nedir, Nasıl Çalışır?
Sık Sorulan Sorular
- DS18B20 nedir?
DS18B20, Maxim/Analog tarafından üretilen, 1-Wire protokolü kullanan dijital sıcaklık sensörüdür. Tek veri hattı üzerinden haberleşir ve her sensörün benzersiz 64-bit seri adresi vardır. - DS18B20 hangi sıcaklık aralığında çalışır ve hassasiyeti nedir?
Tipik çalışma aralığı -55 °C ile +125 °C arasındadır. Fabrika verilerine göre tipik doğruluk ±0.5 °C (çoğu kullanım aralığında) ve çözünürlük adım adım 0.0625 °C’ye kadar ayarlanabilir. - DS18B20 nasıl bağlanır? Hangi direnç gerekiyor?
Normal beslemeli (powered) kullanımda VDD, GND ve veri (DQ) pinleri bağlanır. DQ hattı ile VCC arasına genelde 4.7 kΩ (datasheette önerilen ~5 kΩ) pull-up direnç konur. (Parasite mode kullanmayacaksanız harici pull-up gereklidir.) - Birden fazla DS18B20 sensörü tek hat üzerinde kullanılabilir mi?
Evet — 1-Wire protokolünün avantajı her sensörün benzersiz 64-bit adresi olmasıdır; böylece aynı veri hattına birden fazla sensör bağlayıp tek pin üzerinden okumak mümkündür. - DS18B20’i ESP8266 / NodeMCU ile nasıl kullanırım?
NodeMCU/ESP8266 ile DQ (veri) pinini seçtiğiniz bir GPIO’ya bağlayıp 4.7 kΩ pull-up kullanın. Arduino/ESP kütüphaneleri (OneWire ve DallasTemperature gibi) kolay entegrasyon sağlar; örnekler site rehberlerinde mevcuttur. - Su geçirmez (waterproof) DS18B20 farkı nedir?
Su geçirmez prob versiyonları (metalik probe + kablo) dış ortam veya sıvı içi uygulamalar içindir; bağlantı renkleri/ucu üreticiye göre değişir — elektriksel kullanım prensipleri aynıdır (aynı pinout ve pull-up gereksinimi). - Kablo uzunluğu ve sayısal hata konusu: ne kadar uzatabilirim?
1-Wire hattı iyi tasarlanmışsa onlarca metreye kadar çalışabilir, ancak kablo kapasitansı, parazit ve topolojiyi (dallanma) göz önünde tutmalısınız. Uzun hatlarda sinyal bütünlüğünü korumak için iyi pull-up, düzgün topraklama ve gerekirse parazit önlemleri önemlidir. - DS18B20’yi kalibre etmem gerekiyor mu?
Çoğu uygulama için fabrika kalibrasyonu yeterlidir. Eğer hassas ölçüm gerekiyorsa, referans termometreyle karşılaştırıp yazılımsal offset ekleyebilirsiniz. - DS18B20 sık yapılan hata/arıza sebepleri nelerdir?
Yaygın hatalar: pull-up direncinin eksik veya yanlış değerde olması, hat üzerinde fazla dalgalanma ve topraklama sorunları, sensörlerin seri adreslerinin doğru okunamaması (adres çatışması olmayacağı halde kablo/topoloji hataları).




Henüz yorum yapılmamış.