ESP8266 NodeMCU ile MAX30102 Nabız ve SpO2 Sensörü Kullanımı

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

ESP8266 NodeMCU ile MAX30102 Nabız ve SpO2 Sensörü Kullanımı

Bu rehberde, ESP8266 NodeMCU geliştirme kartına I2C haberleşme protokolü üzerinden MAX30102 (veya MAX30100/105) yüksek hassasiyetli nabız ve kanda oksijen (SpO2) sensörünü bağlayarak anlık kalp ritmi ve IR/Kırmızı ışık yansıma verilerini okuma uygulamasını gerçekleştiriyoruz.

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

Gerekli Malzemeler:
  • 1 x ESP8266 NodeMCU V3 Geliştirme Kartı
  • 1 x MAX30102 Nabız ve Oksijen Sensör Modülü
  • Jumper Kablolar (Dişi - Erkek)

Devre Bağlantı Şeması

Görseldeki şemaya uygun I2C pin bağlantıları şu şekildedir:

  • VIN / VCC: NodeMCU üzerindeki 3V3 (+3.3V) güç hattına.
  • GND: NodeMCU üzerindeki GND hattına.
  • SCL: NodeMCU üzerindeki donanımsal I2C saat pini olan D1 (GPIO5) pinine.
  • SDA: NodeMCU üzerindeki donanımsal I2C veri pini olan D2 (GPIO4) pinine.
Donanım ve Besleme Notu:
MAX30102 sensörünün I2C adresi sabittir ve 0x57'dir. Bazı mor/yeşil MAX30102 modül kartlarında I2C hatlarındaki dahili pull-up dirençleri (4.7kΩ veya 1.8kΩ) 1.8V mantık seviyesine bağlı gelebilir. Eğer sensör 0x57 adresinde bulunamazsa, modül üzerindeki 3.3V jumper lehimlerini ve hat dirençlerini kontrol etmek gerekebilir.

Örnek Arduino IDE Kodu

Kodu derlemeden önce Arduino IDE Kütüphane Yöneticisi (Ctrl+Shift+I) üzerinden SparkFun tarafından geliştirilen SparkFun MAX3010x Pulse and Proximity Sensor Library kütüphanesini yüklemeniz gerekmektedir:

// ESP8266 NodeMCU & MAX30102 Nabız Sensörü Okuma Kodu

#include <Wire.h>
#include "MAX30105.h"
#include "heartRate.h" // SparkFun kütüphanesinin nabız algılama algoritması

MAX30105 particleSensor;

const byte RATE_SIZE = 4; // Ortalama almak için kullanılacak örnek sayısı
byte rates[RATE_SIZE]; 
byte rateSpot = 0;
long lastBeat = 0; // Son kalp atışının zamanı

float beatsPerMinute;
int beatAvg;

void setup() {
  Serial.begin(115200);
  Serial.println("MAX30102 Başlatılıyor...");

  // ESP8266 I2C başlatma (D2: SDA, D1: SCL)
  Wire.begin(D2, D1);

  // MAX30102 Sensör Kontrolü (I2C adresi: 0x57)
  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
    Serial.println("MAX30102 Sensörü bulunamadı! Bağlantıları veya I2C voltajını kontrol edin.");
    while (1);
  }

  Serial.println("Parmağınızı sensör üzerine sabit ve hafifçe bastırmadan koyun.");

  // Sensör varsayılan konfigürasyonu
  particleSensor.setup(); 
  particleSensor.setPulseAmplitudeRed(0x0A); // Kırmızı LED gücü
  particleSensor.setPulseAmplitudeGreen(0);   // Yeşil LED kapalı
}

void loop() {
  // Kızılötesi (IR) emilim değerini okuyoruz
  long irValue = particleSensor.getIR();

  // Parmağın sensör üzerinde olup olmadığını kontrol et (IR eşik değeri)
  if (irValue < 50000) {
    Serial.println("Parmak algılanmadı!");
    delay(500);
    return;
  }

  // Kalp atışı (Peak) algılandı mı?
  if (checkForBeat(irValue) == true) {
    long delta = millis() - lastBeat;
    lastBeat = millis();

    beatsPerMinute = 60 / (delta / 1000.0);

    // Mantıklı nabız aralığında mı? (20 - 255 BPM)
    if (beatsPerMinute < 255 && beatsPerMinute > 20) {
      rates[rateSpot++] = (byte)beatsPerMinute;
      rateSpot %= RATE_SIZE;

      // Son okumaların ortalamasını al
      beatAvg = 0;
      for (byte x = 0 ; x < RATE_SIZE ; x++)
        beatAvg += rates[x];
      beatAvg /= RATE_SIZE;
    }
  }

  // Seri port çıktısı
  Serial.print("IR Sinyali: ");
  Serial.print(irValue);
  Serial.print(" | Anlık BPM: ");
  Serial.print(beatsPerMinute);
  Serial.print(" | Ortalama BPM: ");
  Serial.println(beatAvg);
}

Çalışma Prensibi (Fotopletismografi - PPG)

  • Optik Ölçüm Tekniği: MAX30102, dokuya Kırmızı (Red) ve Kızılötesi (IR) ışık yayar. Kalp her pompalama yaptığında parmaktaki kılcal damarlardan geçen kan hacmi ve oksijenli hemoglobin miktarı değişir. Dokudan yansıyan ışık fotodiyot tarafından okunarak milisaniyelik dalgalanmalar (BPM) hesaplanır.
  • Doğru Okuma İçin İpucu: Sensör üzerine parmağınızı yerleştirirken çok sert bastırmamalısınız; sert dokunuş kılcal damarlardaki kan akışını engelleyerek okuma hatalarına yol açar.

💬 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