ESP8266 NodeMCU ile BME680 Çevre Sensörü Uygulaması (Sıcaklık, Nem, Basınç ve Gaz)

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

ESP8266 NodeMCU ile BME680 Çevre Sensörü Uygulaması (Sıcaklık, Nem, Basınç ve Gaz)

Bu rehberde, ESP8266 NodeMCU geliştirme kartı ve I2C protokolü üzerinden haberleşen BME680 çevre sensörünü kullanarak ortamın sıcaklık, nem, atmosferik basınç ve hava kalitesi (gaz/VOC) değerlerini okuyan gelişmiş bir ortam izleme projesi hazırlıyoruz.

ESP8266 NodeMCU BME680 Sensör Bağlantı Şeması

Gerekli Malzemeler:
  • 1 x ESP8266 NodeMCU V3 Geliştirme Kartı
  • 1 x BME680 Çevresel Sensör Modülü (4-in-1)
  • Jumper Kablolar (Dişi - Erkek)

Devre Bağlantı Şeması

Görseldeki Fritzing şemasına göre ESP8266 ve BME680 modülü arasındaki I2C hat bağlantıları şu şekildedir:

  • VCC: NodeMCU üzerindeki 3V3 (+3.3V) güç hattına.
  • GND: NodeMCU üzerindeki GND hattına.
  • SCL: NodeMCU üzerindeki D1 (GPIO5) pinine.
  • SDA: NodeMCU üzerindeki D2 (GPIO4) pinine.
I2C Adresi ve Çalışma Gerilimi Uyarısı:
BME680 sensörleri 3.3V ile çalışır, doğrudan 5V verilmemelidir. Modülün standart I2C adresi genellikle 0x77 veya 0x76'dır (SDO pini GND'ye çekilirse 0x76 olur). Kod içerisinde sensör başlatılamazsa I2C adresini değiştirmeyi deneyebilirsiniz.

Örnek Arduino IDE Kodu

Kodu derlemeden önce Arduino IDE Kütüphane Yöneticisi (Ctrl+Shift+I) üzerinden Adafruit BME680 Library ve Adafruit Unified Sensor kütüphanelerini yüklemeniz gerekir. ESP8266'ya yüklenecek kod yapısı aşağıdadır:

// ESP8266 NodeMCU & BME680 Çevre Sensörü Okuma Kodu

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME680.h>

// Deniz seviyesi standart basınç değeri (hPa cinsinden rakım/yükseklik hesabı için)
#define SEALEVELPRESSURE_HPA (1013.25)

// BME680 I2C nesnesi
Adafruit_BME680 bme; 

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

  Serial.println(F("BME680 Test Başlatılıyor..."));

  // I2C başlatma (0x77 veya 0x76 adresi denenir)
  if (!bme.begin(0x77)) { // Sensör bulunamazsa 0x76 yapabilirsiniz
    Serial.println(F("Geçerli bir BME680 sensörü bulunamadı, bağlantıları kontrol edin!"));
    while (1);
  }

  // Sensör parametrelerini yapılandırma (Oversampling & Filtre ayarları)
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320°C ısıtıcı plakayı 150ms çalıştır (Gaz okuması için)
}

void loop() {
  // Sensör okuma işlemini başlat
  if (!bme.performReading()) {
    Serial.println(F("Sensörden veri okunamadı!"));
    return;
  }

  // Okunan verileri Seri Port Ekranına Yazdır
  Serial.println("====================================");
  
  Serial.print("Sıcaklık       : ");
  Serial.print(bme.temperature);
  Serial.println(" °C");

  Serial.print("Nem            : % ");
  Serial.println(bme.humidity);

  Serial.print("Basınç         : ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");

  Serial.print("Tahmini Yükseklik: ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Gaz Direnci    : ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" kOhm");

  Serial.println("====================================");

  delay(2000); // 2 saniyede bir yeni okuma yap
}

Çalışma Prensibi ve Gaz (VOC) Sensör Özelliği

  • Gaz (VOC) Okuma Mantığı: BME680 dahili bir sıcak plaka (MOX ısıtıcı) içerir. Ortamdaki uçucu organik bileşikleri (VOC), sigara dumanını veya karbonmonoksiti algıladığında dahili direnç değeri düşer. `gas_resistance` ne kadar yüksek çıkarsa, ortam havası o kadar temiz demektir.
  • I2C Veri Hattı: NodeMCU üzerindeki varsayılan I2C pinleri D1 (SCL) ve D2 (SDA) pini üzerinden sadece iki haberleşme hattı ile 4 farklı çevresel veri stabil şekilde çekilir.

💬 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