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.
Görseldeki Fritzing şemasına göre ESP8266 ve BME680 modülü arasındaki I2C hat bağlantıları şu şekildedir:
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.
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
}
Henüz yorum yapılmamış. İlk yorumu siz yapın!