Basit Nabız (Kalp Atış Hızı) Monitörü (Heart Rate Monitor)
- Tuncay liman
- 14 Kas 2025
- 2 dakikada okunur

Bu proje, bir optik nabız sensörü (yaygın olarak kullanılan Pulse Sensor Amped veya benzeri bir fotopletismografi sensörü) kullanarak kullanıcının nabzını ölçer ve bu veriyi Wi-Fi üzerinden bir mobil cihaza veya buluta aktarır.
💡 Projenin Amacı
Nabız sensöründen alınan analog veriyi işleyerek anlık kalp atış hızını (BPM) hesaplamak ve bu veriyi kablosuz olarak yayınlamaktır.
🛠️ Gerekli Malzemeler
Mikrodenetleyici: ESP32 Geliştirme Kartı (Dahili Wi-Fi ve BLE için idealdir).
Sensör: Pulse Sensor Amped (veya MAX30100/MAX30102 gibi I2C tabanlı bir sensör de kullanılabilir, ancak Pulse Sensor daha basittir).
Bağlantı Elemanları: Jumper Kabloları (erkek-dişi).
Güç Kaynağı: USB kablosu.
🔌 Donanım Bağlantı Şeması (Pulse Sensor Amped Kullanarak)
Pulse Sensor Amped genellikle üç bağlantıya sahiptir: VCC, GND ve Sinyal.
ESP32 Pini | Pulse Sensor Amped | Açıklama |
3.3V / VCC | VCC (+) | Sensörün Güç Girişi |
GND | GND (-) | Toprak Bağlantısı |
GPIO 34 (VP) veya 35 (VN) | Sinyal (S) | Analog Veri Girişi (ESP32'nin yalnızca belirli pinleri analog okuma yapabilir, 34-39 arası önerilir.) |
Not: Pulse Sensor, analog veri ürettiği için ESP32'nin ADC (Analog-Dijital Dönüştürücü) pinlerinden birine bağlanmalıdır.
👨💻 Yazılım ve Kodlama (Arduino IDE)
Bu proje için, nabız sensöründen gelen gürültülü analog sinyali işlemek adına harici bir kütüphane kullanmak en basit yoldur.
Adım 1: Kütüphane Kurulumu
Arduino IDE'de Taslak > Kütüphaneyi Dahil Et > Kütüphaneleri Yönet yolunu izleyin ve arama kutusuna:
PulseSensor Playground yazıp kurun.
Adım 2: Temel Nabız Okuma Kodu
Aşağıdaki basit kod yapısı, nabız verisini okur ve seri portta (veya Wi-Fi üzerinden) yayınlamaya hazırlar.
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>
// ESP32 için analog pin tanımı (Yukarıdaki bağlantıya göre 34 veya 35)
const int PulseWire = 34;
const int Threshold = 550; // Nabız eşik değeri (deneme yanılma ile ayarlanabilir)
PulseSensorPlayground pulseSensor;
void setup() {
Serial.begin(115200);
// Nabız sensörünü başlat
pulseSensor.begin(PulseWire, Threshold, TYPE_ANALOG);
// Hata kontrolü
if (pulseSensor.error == true) {
Serial.println("Sensör başlatılamadı!");
}
}
void loop() {
// Nabız algılanıp algılanmadığını kontrol et
if (pulseSensor.sawNewSample()) {
// Yeni bir örnek okunduysa burası çalışır
}
// Nabız bulunduysa
if (pulseSensor.is"""Beat()""") {
// Kalp atışı algılandı
Serial.println("NABIZ VURDU!");
// Anlık BPM değerini al
int myBPM = pulseSensor.get"""BPM()""";
if (myBPM > 0) {
Serial.print("Kalp Atış Hızı: ");
Serial.print(myBPM);
Serial.println(" BPM");
// *** BURAYA WI-FI İLE GÖNDERME KODU EKLENECEK ***
// Örneğin: sendDataToCloud(myBPM);
}
}
delay(10); // Döngü beklemesi
}
📶 Ek Adım: Kablosuz Veri Gönderme
Bu basit projeyi kablosuz hale getirmek için, loop() fonksiyonundaki *** BURAYA WI-FI İLE GÖNDERME KODU EKLENECEK *** kısmına MQTT veya HTTP POST ile veri gönderme kodunu ekleyebilirsiniz.
En Basit Yol (Blynk/Thingspeak): Bu bulut hizmetlerinin ESP32 kütüphanelerini kullanarak, sadece birkaç satır kodla myBPM değerini anlık olarak bir web paneline aktarabilir ve mobil uygulamadan izleyebilirsiniz.
Bu proje, hem analog sensör okumayı hem de ESP32'nin kablosuz yeteneklerini birleştirerek sağlık alanında basit bir IoT çözümü oluşturmanız için mükemmel bir başlangıç noktasıdır.




Yorumlar