PulseSensorPlayground Arduino Kütüphanesi Kurulumu ve Kullanımı - Turkish Tutorial

in #utopian-io7 years ago (edited)

Giriş / Introduction
This is a Turkish tutorial of an open source Arduino library, which lets you build a heart rate monitor (not intended for medical purposes) with your Arduino microcontroller using a pulse sensor, that monitors a humans current heart rate. I will show you how to install the library to Arduino IDE and make an example project with the library, throughout this tutorial while giving information heart rate monitors (pulse sensors) and their working principle.

Merhaba, bu yazıda Arduino mikrokontrolörünüze, bir nabız sensörü yardımıyla, nabız ölçer olma özelliği ekleyen, açık kaynak bir kütüphaneden bahsedeceğim. Yazı boyunca nabız ölçerlerin (nabız sensörünün) ne olduğunu, nasıl çalıştığını, kullanım alanlarını, PulseSensor kütüphanesinin kurulumunu ve nabız ölçer sensör ile yapacağımız bir nabız ölçer (medikal amaçla kullanılmaya yönelik değildir) ile bu projenin kodlarını görebilirsiniz.

Neler Öğreneceğim?
Bu rehberde öğrenecekleriniz:
• Nabız ölçerler hakkında genel bilgi (Nedir, nasıl çalışır).
• PulseSensorPlayground Arduino kütüphanesini Arduino IDE’sine yükleme.
• PulseSensorPlayground Arduino kütüphanesini, kütüphane fonksiyonları ile beraber kullanabilme.
• Öğrenilen elektronik ve kodlama bilgilerini kullanarak “Nabız ölçer” projesini gerçekleştirebilme.

Gereksinimler
Bu rehberin gereksinimleri:
• Temel kod ve elektronik bilgisi
• Arduino UNO veya benzer bir mikrokontrolör
• Arduino IDE’si (İndirmek için tıklayın)
• PulseSensorPlayground Arduino kütüphanesi (İndirmek için tıklayın)
• 2 adet LED, 2 adet 220/330 Ohm direnç, Pulse (Nabız) sensörü, breadboard (opsiyonel)

Zorluk
Bu rehberin zorluğu:
• Basit



Rehber İçeriği

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

Nabız ölçerler bir nabız sensörü yardımıyla deri üzerinden nabzı (kalp ritmini) tespit eden cihazlardır. Nabız sensörleri bir ışık kaynağı (LED) ve bir foto dirençten oluşur. Işık kaynağı belirli aralıklarla yanıp söner. Foto direnç ise kendisine gelen ışık miktarına göre direncini değiştirir ve mikrokontrolöre değişen sinyaller iletir.

im1.jpeg
İnsan kalbinin ritmini (nabız) logaritmik olarak gösterimi [1]

Nabzı ölçülecek kişi parmağını nabız sensörüne yerleştirir. Atan nabız sonucu parmakta damarların genişlemesi sonucu hacim artışı olur. Bu hacim artışı foto direncin alacağı ışık miktarını düşürür. Her direnç değişiminde bir nabız sayılmış olunur. Nabız sensörleri günümüzde medikal nabız ölçerlerin yanında, akıllı saatlerde, egzersiz aletlerinde kullanılır. Ortalama yetişkin bir insanın nabzı 60 ile 90 arasında değişir.


PulseSensorPlayground Kütüphanesin Arduino IDE’sine Kurulumu

1. https://github.com/WorldFamousElectronics/PulseSensorPlayground adresinden kütüphaneyi indirin.

indir.png

2. Arduino programını açıp sırasıyla Sketch->Include Library->Add .ZIP Library seçeneklerini seçin.

ekle.png

3. PulseSensorPlayground-master.zip dosyasını seçin ve Open'a tıklayın.


PulseSensorPlayground Kütüphanesi Kullanımı ve Örnek Proje

PulseSensorPlayground kütüphanesinin kullanımını basit bir örnek yaparak ile adım adım göstereceğim. Bu örnek bir nabız sensörü, iki LED, iki 220 veya 330 ohm direnç ve bir breadboard ile nabız ölçer yapacağız. Bu parçaların Arduino’ya bağlantılarını aşağıda görebilirsiniz. Yapacağımız nabız ölçerde nabız değeri alındığında bir LED yanıp sönecek, diğer LED ise yanar konumdan yavaşça sönmeye başlayacaktır. Ayrıca ölçülen nabız “serial monitor” ile ekrana yansıtılacaktır. Kütüphanenin temellerini öğrendikten sonra başka projelerde kullanırsanız lütfen yorumlarda belirtin.

proje.jpg
Nabız ölçer projesi.

baglanti.png
Bağlantı şeması. Fritzing programında çizilmiştir.

1. Yeni bir sketch açın ve "Nabiz_Olcer" olarak kaydedin.

2. Kütüphanemizi sketch’imize eklemeden önce, Arduino Interruptlarının kullanılmasını sağlayan komutu ekleyin. Bu komutu eklememizin nedeni, bu kütüphaneyi kullanırken en doğru nabız ölçümünü almak için Arduino interruptlarının kullanılması gerektiğindendir. Ardından kütüphaneyi eklemek için #include <PulseSensorPlayground.h> yazın.

1.PNG

3. Kütüphaneyi ekledikten sonra Arduino’da kullanacağınız pinleri belirleyen kodu yazın. İki LED ve bir sensör kullanacağımızdan, bunlar için 3 değişken tanımlayın. Sensörü analog herhangi bir pine bağlayın, yanıp sönecek olan LED’i PWM çıkışı olmayan herhangi bir pine bağlayın, nabızla sönecek olan LED’i ise PWM çıkışı olan bir pine bağlayın. Ardından nabız alınmadığı zaman gürültüden kaynaklı yanlış ölçüm yapılmaması adına bir eşik değeri oluşturun.

2.PNG

4. Kullanacağımız kütüphanenin fonksiyonlarını tanımlayan kodu yazın.

3.PNG

5. void setup() fonksiyonunu içine, 9600 baud rate hızında seri haberleşmeyi başlatacak komutu ekleyin. Sonrasında sırayla, nabız sensörünü Arduino’nun analog girişine atayacak olan fonksiyonu, yanıp sönecek LED'in çalışma isterini gerçekleştiren kütüphane fonksiyonunu, nabız alındığında sönecek olan LED'in çalışma isterini gerçekleştiren kütüphane fonksiyonunu ve eşik değerini tanımlayan kütüphane fonksiyonunu ekleyin.

4.PNG

6. Bu fonksiyonların devamına, sensör sinyalleri okunduğu zaman çalışacak bir if koşulu ekleyin. If koşulunun içine olası bir sensör okuma hatası durumunda (13.pindeki) yanıp sönen LED’i yakıp söndürecek komutu ekleyin. Eğer çalıştırma sırasında bu hatayı alıyorsanız, Arduino’nuzun interruptlarında sorun var demektir. En baştaki interrupt kodunu silip tekrar deneyin. Alacağınız ölçüm daha az güvenilir olacaktır.

5.PNG

7. void loop() fonksiyonunun içine bir integer değişkeni tanımlayın. Bu değişkeni sensörden okunan nabız verisini integer değerine çevirecek kütüphane fonksiyonuna eşitleyin. Ardından sensörden gelen nabız verisi varsa çalışacak bir if koşulu oluşturun. If koşulunun içine ölçülen nabzı ekrana yansıtacak kodu ekleyin. Koşuldan sonra okuma kolaylığı açısından bir delay komutu ekleyin.

6.PNG

8. Kodu önce Arduino IDE’sindeki “Verify” butonuna basarak compile edin, ardından “Upload” butonuna basarak Arduino’nuza yükleyin. Aşağıdaki gibi bir ölçüm ekranı almanız gerekmektedir.

upload.png

cikti.png


Özet

Bu yazımda Arduino mikrokontrolörü için " WorldFamousElectronics " adlı GitHub kullanıcısı tarafından yazılmış "PulseSensorPlayground" kütüphanesinin kurulumu, nabız ölçerler (nabız sensörleri) hakkında bir giriş yaparak ve nabız sensörü içeren bir nabız ölçer örneği yaparak kütüphanenin kullanımını gösterdim. Umuyorum ki vermiş olduğum bilgileri beğenirsiniz, okuduğunuz için teşekkürler. Başka yazılarda görüşmek dileğiyle.

Kütüphane hakkında daha fazla bilgi ve kaynak için aşağıdaki linki kullanabilirsiniz.

Github: https://github.com/WorldFamousElectronics/PulseSensorPlayground



Görüntü Kaynakları

[1] Kaynak (Royalty Free)

Diğer görüntüler kendime aittir.


Kodlar

#define USE_ARDUINO_INTERRUPTS true   // En doğru ölçüm için Arduino Interruptlarının
                                      // kullanılmasını sağlar. Bu kütüphane için Arduino 
                                      // Interruptlarının kullanılması tavsiye ediliyor.

#include <PulseSensorPlayground.h>    // Kütüphaneyi ekler.



const int sensor = A0;        // Pulse (nabız) sensörünü bağladığımız pini belirler.
const int yananLED = 13;      // Nabız alındığında yanıp sönecek olan LED'in pinini belirler.
const int sonenLED = 5;       // Nabız alındığında yavaşça sönecek olan LED'in PWM pinini belirler.
const int esik = 550;         // Nabız alınmadığı zaman gürültüden kaynaklı yanlış
                              // ölçüm yapılmaması adına oluşturulan eşik değeri.


PulseSensorPlayground pulseSensor;    // Kütüphane fonksiyonlarını tanımlar.

void setup() {

  Serial.begin(9600);   // 9600 baud rate'de seri haberleşmeyi başlatır.

  pulseSensor.analogInput(sensor);      // Sensörü analog girişe (0'ıncı pin) bağlar.
  pulseSensor.blinkOnPulse(yananLED);   // Yanıp sönecek LED'in çalışma isterini gerçekleştiren kütüphane fonksiyonu.
  pulseSensor.fadeOnPulse(sonenLED);    // Sönecek LED'in çalışma isterini gerçekleştiren kütüphane fonksiyonu.
  pulseSensor.setThreshold(esik);       // Esiği tanımlayan kütüphane fonksiyonu.


  if (!pulseSensor.begin()) {     // Sensör sinyallerini okumaya başlar.
    
    
    for(;;) {     // Olası bir hata durumunda 13'üncü pindeki LED'i yanıp söndürür.
                  // Hata nedeni interrupt kaynaklıdır. Bu hatayı alıyorsanız baştaki
                  // Interrupt kodunu silip deneyin.
                  
      digitalWrite(yananLED, LOW);
      delay(30);
      digitalWrite(yananLED, HIGH);
      delay(30);
    }
  }
}


void loop() {

 int nabiz = pulseSensor.getBeatsPerMinute();  // Sensörden okunan nabız verisini integer değerine çevirecek fonksiyon.

if (pulseSensor.sawStartOfBeat()) {            // Sensörden gelen nabız verisi varsa çalışacak koşul. 
 
 Serial.print("Nabziniz: ");                   // Ölçülen nabzı ekrana yansıtır. 
 Serial.println(nabiz);
}

  delay(5000);

}



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Hey @drencolha I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

The @OriginalWorks bot has determined this post by @drencolha to be original material and upvoted it!

ezgif.com-resize.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

Please note that this is a BETA version. Feel free to leave a reply if you feel this is an error to help improve accuracy.

Coin Marketplace

STEEM 0.20
TRX 0.25
JST 0.038
BTC 96601.54
ETH 3445.82
USDT 1.00
SBD 3.09