Herkese merhabalar, bu yazımızda medikal sensörlerden biri olan Pulse nabız sensörünü kullanarak nabız verisini okumayı ve elde ettiğimiz sonucu Nokia 5110 ekranda göstermeyi öğreneceğiz. Bu sayede kendi nabız ölçerimizi üretmiş olacağız.

Yapacağımız Projenin Son Hali

Nokia 5110 ekranların kullanımıyla ilgili detaylı bilgiye bu yazımızdan ulaşabilirsiniz >>> Arduino ile Nokia 5110 ekranı kullanımı

Bu yazıda anlatılan proje için ihtiyacınız olan malzemeler:

Pulse Nabız Ölçer Nedir ve Nasıl Çalışır?

Öncelikle, projemizin en önemli malzemelerinden biri olan Pulse Nabız Ölçer’i tanıyarak başlayalım. Pulse Nabız Ölçer, parmak ucunuza veya kulağınıza sabitleyerek kolayca nabzınızı ölçmeye yarayan bir sensördür. Bu sensörü 3V veya 5V ile beslemek mümkündür. Üzerinde bulunan gürültü engelleme özellikli devre sayesinde temiz ve stabil bir ölçüm alabilirsiniz. 

Pulse Nabız Ölçer’in çalışma prensibi şu şekildedir: Sensör parmak ucunuza veya kulağınıza gönderdiği ışığın ne kadarının yansıdığı bilgisini ölçerek sinyal pini üzerinden 0 ile 1023 arasında analog bir değer verir. Bu değer nabız atışı sırasında yükselir ve daha sonra tekrar düşer. Arduino’ya yazacağımız kod bu değişimleri kullanarak dakikadaki nabız sayımızı ölçer.

Nabız Ölçer Projesi

Projemiz iki kısımdan oluşacak. İlk kısımda, Pulse sensörü ile Arduino arasındaki bağlantıyı gerçekleştireceğiz. Bu kısmı başarıyla tamamladıktan sonra ise elde ettiğimiz nabız değerini 5110 ekranımıza yansıtacağız. İlk kısımla başlayalım.

Sensör bağlantılarını bu şekilde gerçekleştiriyoruz:

Pulse Sensörünün Bağlantısı

Sıra Arduino için olan kodu yazmaya geldi. Arduino IDE’yi açtıktan sonra, sensörümüzü kullanabilmek için yapmamız gereken ilk şey gerekli kütüphaneyi bilgisayarımıza kurmak. Bunun için, yukarıdaki seçeneklerden “Araçlar” seçeneğine tıklayıp oradan “libraryleri düzenle” seçeneğine tıklamalıyız. Bu işlemin ardından “Library Yönetici” olarak adlandırılan sekme açılacaktır. Buradan gerekli kütüphaneyi kurmak için yapmamız gereken arama kısmına “pulse sensor playground” yazmak, “versiyon seç” kısmından en güncel versiyonu seçmek ve “Kur” butonuna basmak.

Pulse Sensöründen Gelen Veriyi Okuma

Gerekli kütüphaneyi başarıyla kurduğumuza göre sıradaki adıma geçebiliriz. Yukarıdaki kısımda da anlattığım üzere, Arduino nabız atışının gerçekleşip gerçekleşmediğini sensörden gelen analog değerin büyüklüğüne göre karar veriyor. Bu nedenle bizim önceden bir threshold, yani eşik değeri, belirlememiz gerekiyor. Bu sayede Arduino belirlediğimiz eşik değerinin üzerinde bir sinyal geldiğinde nabız atışının gerçekleştiğini anlayabilecek. Eşik değerini belirleyebilmek için sensörden gelen değerleri görmemiz gerekiyor. Bunu yapmanın en kolay yolu indirmiş olduğumuz kütüphanede yer alan örnek kodlardan birini kullanmak. Gerekli örnek kod dosyasını açabilmek için sırasıyla Dosya>Örnekler>Pulse Sensor Playground>GettingStartedProject seçeneklerine tıklıyoruz. Daha sonra, ekranda açılmış olan kodu Arduino’muza yüklüyoruz. Şimdi gelen sinyalleri bilgisayarımızda görüntüleyebilmek için Araçlar>Seri Çizici seçeneklerine tıklıyoruz. Ekranda, sensörden gelen veriler ışığında ilerleyen bir çizgi oluştuğunu göreceksiniz. Şimdi yapmanız gereken sensöre parmak ucunuzu yerleştirmek. Şimdi ise ekranda aşağıdaki görseldeki gibi dalgalar oluştuğunu görmeniz gerekiyor. Eğer durum buysa herşey yolunda gidiyor demektir ve yolumuza devam edebiliriz. Ancak aşağıdakine benzer bir sinyal akışı elde edemediyseniz bu yazının en aşağısında bulunan “Sorun Giderme” kısmını inceleyebilirsiniz.

Eşik Değerini Belirleme

Sıradaki adım, ekranınızdaki grafiğe göre eşik değerini belirlemek. Bunun için öyle bir değer belirlemeliyiz ki grafikteki yükselişler bu değerin üzerine çıkmalı ama yükselişler dışındaki kısımlar da bu değerin altında kalmalı. Örneğin aşağıdaki görselde 520 uygun bir eşik değeri. Ama siz kendi değerinizi ekranınızdaki grafiğe göre belirlemelisiniz çünkü farklılık gösterebilir.

Eşik değerimizi de belirlediğimize göre sıra sensörümüz ile nabız değerini ölçüp Nokia 5110 ekranımıza yazdırmada. Bunun için öncelikle devremize 5110 ekranımızı eklemeliyiz. Aşağıdaki devre şemasında bunun nasıl yapıldığını görebilirsiniz.

Kod

Şimdi sıra, sensörden aldığı veriyle dakikadaki nabzı hesaplayıp 5110 ekranına yazdıracak kodu yazmaya geldi. Bu aşamada Pulse Playground ve LCD5110 Basic kütüphaneleri işimizi oldukça kolaylaştırıyor. Yazmamız gereken kodu aşağıda bulabilirsiniz. Her bir kısmın ne işe yaradığını yanlarına yorum satırı olarak yazdım. Yine de aklınıza takılan herhangi bir nokta olursa aşağıdaki Yorumlar kısmından sorabilirsiniz. İhtiyacımız olan  LCD5110 Basic kütüphanesini buradan indirip arduino/library/ klasörüne atabilirsiniz. Aşağıdaki kodda yer alan threshold değişkeninin değerini yazının öncei kısmından belirlemiş olduğunuz değerle değiştirmeyi unutmayın.

#include <LCD5110_Basic.h> //5110 ekranımız için gerekli kütüphaneyi ekliyoruz.
LCD5110 myGLCD(8, 9, 10, 11, 12); // Ekran objemizi bağlamış olduğumuz pinleri belirterek oluşturuyoruz
#define USE_ARDUINO_INTERRUPTS true    // Pulse kütüphanesinin daha doğru ölçüm yapabilmesi için bu ayarı etkinleştiriyoruz
#include <PulseSensorPlayground.h> //Yazının başında bilgisayarımıza kurmuş olduğumuz Pulse Playground kütüphanesini ekliyoruz.
int nabiz; //İçinde dakikadaki nabzı tutacağımız değişkeni oluşturuyoruz.
int lcd_ledi = 6; //5110 ekranımızın arka plan aydınlatmasının bağlı olduğu pini belirliyoruz.
extern uint8_t SmallFont[];
extern uint8_t BigNumbers[]; //5110 ekranımızda yazacağımız yazı için gerekli fontları ekliyoruz.
const int PulseWire = 0; // Pulse sensörümüzü bağlamış olduğumuz Analog pinini belirliyoruz.
const int LED13 = 13; // Arduino üzerindeki ledin nabzımızla birlikte yanıp sönmesi için bu değişkeni 13 numaralı pin olarak ayarlıyoruz.
int Threshold = 580; // Yazının başında belirlemiş olduğumuz eşik değerini bu değişkene atıyoruz.
PulseSensorPlayground pulseSensor; //Sensörümüzü kodumuzda kullanabilmek için onu obje olarak oluşturuyoruz.

void setup() {
  Serial.begin(9600);  //Bilgisayrımızla olan seri iletişimi başlatıyoruz.
  pulseSensor.analogInput(PulseWire); //Pulse sensörünün bağlıu olduğu pini belirliyoruz.
  pulseSensor.blinkOnPulse(LED13);       //arduino üzerindeki ledin nabzımızla yanıp sönmesini istediğimizi söylüyoruz.
  pulseSensor.setThreshold(Threshold); //Değişkene atamış olduğumuz eşik değerini uyguluyoruz.
  // put your setup code here, to run once:
  digitalWrite(lcd_ledi, HIGH); //5110 ekranın arka plan aydınlatmasına güç veriyoruz.
  myGLCD.InitLCD(); //5110 ekranımızı başlatıyoruz.
  myGLCD.setContrast(58); //5110 ekranımızın kontrastını belirliyoruz.
  myGLCD.setFont(SmallFont); //Birazdan yazacağımız yazıların küçük fontla yazılmasını sağlıyoruz.
  //myGLCD.drawBitmap(0,0, cmon, 84, 48);
  myGLCD.print("Dakikadaki", CENTER, 0);
  myGLCD.print("Nabziniz:", CENTER, 15); //Ekrana dakikadaki nabzınız yazdırıyoruz.
  myGLCD.setFont(BigNumbers); //Birazdan yazacağımız yazıların büyük sayı fontuyla yazılmasını sağlıyoruz.
  myGLCD.printNumI(0, CENTER, 25); //Dakikadaki nabzınız yazısının altına 0 yazıyoruz.
  if (pulseSensor.begin()) {
    Serial.println("Pulse sensörü objesini yarattık."); 
  } //Pulse sensörü başarıyla başlatılırsa bilgisayara mesaj gönderioyoruz.

}

void loop() {
  // put your main code here, to run repeatedly:
  if (pulseSensor.sawStartOfBeat()) { //Eğer nabız algılarsak
    nabiz = pulseSensor.getBeatsPerMinute(); //Dakikadaki nabzı nabiz değişkenine kaydediyoruz.
    myGLCD.clrScr(); //5110 ekranı temizliyoruz.
    myGLCD.setFont(SmallFont); //Birazdan yazacağımız yazıların küçük fontla yazılmasını sağlıyoruz.
    myGLCD.print("Dakikadaki", CENTER, 0);
    myGLCD.print("Nabziniz:", CENTER, 15); //Ekrana dakikadaki nabzınız yazdırıyoruz.
    myGLCD.setFont(BigNumbers); //Birazdan yazacağımız yazıların büyük sayı fontuyla yazılmasını sağlıyoruz.
    myGLCD.printNumI( nabiz, CENTER, 25); //Dakikadaki nabzınız yazısının altına dakikadki nabzı değerini yazıyoruz.
    Serial.println("Nabız attı. ");
    Serial.print("BPM: ");                        
    Serial.println(nabiz); //Dakikdaki nabız değerini aynıo zamanda bilgisayarımıza da gönderiyoruz.
  }


  delay(20); //20 milisaniye bekletiyoruyuz.

}

Arduino ile Nabız Ölçer projemizi tamamlamış olduk. Proje ile ilgili aklınıza takılan her türlü soru ve proje hakkındaki yorumlarınızı bekliyorum. Sonraki projelerde görüşmek üzere… 👋


Sorun Giderme

Eğer sensörünüzden düzgün bir veri akışı elde edemediyseniz bunun çeşitli sebepleri olabilir. Yazının bu bölümünden birkaç olası sorundan ve çözümlerinde bahsedeceğim.

Parmağınızı sensöre bastırma gücünüz oldukça önemli. Çok bastırmanız halinde parmağınıza kan gitmeyeceğinden nabzını ölçmek zorlaşır. Yeterince bastırmamanız durumunda ise sensörle parmağınız arasına ışık gürültüsü girer ve düzgün bir veri akışı elde edemezsiniz. Bu nedenle parmağınızı sensöre ne çok bastırmalısınız, ne de çok az bastırmalısınız.

Karşılaşabileceğiniz bir diğer sorun ise benim de projeyi yapış sürecinde karşılaştığım bir sorun. Arduino’yu besleme şeklinize göre bazı durumlarda sensör düzgün çalışmayabiliyor. Örneğin benim yaşadığım durumda, Arduino’nun bağlı olduğu dizüstü bilgisayar şarja bağlıyken düzgün bir veri akışı elde edemezken dizüstü bilgisayarı şarjdan çıkarınca düzgün bir veri akışı elde edebiliyordum. Aynı şekilde, denediğim farklı bilgisayarlarda da bazılarında düzgün sonuçlar elde ederken bazılarında edemedim. Bu nedenle eğer sensörden doğru veri elde etmede sorun yaşıyorsanız farklı bir bilgisayarda veya şarja takılı/değilken denemeyi, hiçbiri işe yaramaz ise Arduino’yu dışardan beslemeyi deneyebilirsiniz.

2 Yorumlar

CEVAP VER

Please enter your comment!
Please enter your name here