ESP8266 NodeMCU, DS18B20 ve OLED Ekran ile Sıcaklık Ölçümü

👤 Yazar: ozcan 📅 Tarih: 28.07.2026 22:09 👁️ Görüntüleme: 10

ESP8266 NodeMCU, DS18B20 ve OLED Ekran ile Sıcaklık Ölçümü

Bu rehberde, ESP8266 NodeMCU geliştirme kartına DS18B20 dijital sıcaklık sensörü ve 0.96 inç I2C OLED ekran bağlayarak anlık sıcaklık değerini ekranda gösteren bir hava istasyonu / termometre projesi hazırlıyoruz.

ESP8266 NodeMCU DS18B20 ve OLED Ekran Bağlantı Şeması

Gerekli Malzemeler:
  • 1 x ESP8266 NodeMCU V3 Geliştirme Kartı
  • 1 x DS18B20 Dijital Sıcaklık Sensörü (TO-92 kılıf)
  • 1 x 0.96 inç SSD1306 I2C OLED Ekran (128x64)
  • 1 x 4.7 kΩ Direnç (Pull-Up Direnci)
  • Jumper Kablolar (Erkek - Erkek / Dişi)

Devre Bağlantı Şeması

Şemaya uygun pin bağlantıları adım adım şu şekildedir:

1. DS18B20 Sıcaklık Sensörü Bağlantısı (OneWire):

  • Sol Pin (GND): NodeMCU üzerindeki GND hattına.
  • Orta Pin (Data/Sinyal): NodeMCU üzerindeki D5 (GPIO14) pinine.
  • Sağ Pin (VDD/Besleme): NodeMCU üzerindeki 3V3 (+3.3V) hattına.
  • 4.7 kΩ Pull-Up Direnci: Sensörün Orta Pini (Data) ile Sağ Pini (3V3) arasına bağlanmalıdır.

2. OLED Ekran Bağlantısı (I2C):

  • GND: NodeMCU GND hattına.
  • VCC: NodeMCU 3V3 hattına.
  • SCL: NodeMCU D1 (GPIO5) pinine.
  • SDA: NodeMCU D2 (GPIO4) pinine.
Kritik Detay (OneWire Pull-Up Direnci):
DS18B20 sensörü OneWire haberleşme protokolünü kullanır. Veri hattındaki sinyalin kararlı olması ve haberleşme hatalarının yaşanmaması için Data (D5) hattı ile 3.3V besleme hattı arasına 4.7 kΩ direnç bağlanması zorunludur.

Örnek Arduino IDE Kodu

Kodu derlemeden önce Arduino IDE Kütüphane Yöneticisi üzerinden OneWire, DallasTemperature ve Adafruit SSD1306 kütüphanelerini yüklemeniz gerekmektedir:

// ESP8266 NodeMCU DS18B20 & OLED Sıcaklık Göstergesi

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// OLED ekran boyutları ve konfigürasyonu
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// DS18B20 Pin ve Nesne Tanımlamaları
#define ONE_WIRE_BUS D5  // D5 pini (GPIO14)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

float sicaklikC = 0.0;

void setup() {
  Serial.begin(115200);

  // DS18B20 sensörünü başlat
  sensors.begin();

  // OLED ekranı başlat (0x3C genelde standart I2C adresidir)
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("OLED ekran bulunamadi!"));
    for(;;);
  }

  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  // Sensörden sıcaklık verisini iste
  sensors.requestTemperatures();
  sicaklikC = sensors.getTempCByIndex(0);

  // Veriyi Seri Port Ekranına Yazdır
  Serial.print("Sicaklik: ");
  Serial.print(sicaklikC);
  Serial.println(" *C");

  // OLED Ekranı Temizle ve Güncelle
  display.clearDisplay();
  
  // Başlık
  display.setTextSize(1);
  display.setCursor(20, 5);
  display.print("YENIDIR TERMOMETRE");
  
  display.drawLine(0, 18, 128, 18, WHITE);

  // Sıcaklık Değeri
  display.setTextSize(2);
  display.setCursor(15, 30);
  display.print(sicaklikC, 1); // Virgülden sonra 1 basamak
  display.print(" ");
  display.write(247);          // Derece (°) sembolü
  display.print("C");

  display.display();

  delay(1000); // 1 saniyede bir güncelle
}

Çalışma Prensibi ve Avantajları

  • DS18B20 Hassasiyeti: Analog sensörlerin aksine (örneğin LM35), DS18B20 dijital çıkış verir. Veri kayıpsız iletilir ve -55°C ile +125°C arasında ±0.5°C yüksek hassasiyet sunar.
  • I2C Ekran Kullanımı: SSD1306 OLED ekran, I2C veri bus'ı sayesinde NodeMCU üzerinden sadece 2 pin (D1: SCL, D2: SDA) kaplayarak pin tasarrufu sağlar.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1