Nabız Sensörü ve Arduino kullanarak Kalp Atış Hızını İzleyin
Nabız Sensörü, Arduino için iyi tasarlanmış, düşük güçlü bir tak ve çalıştır kalp atış hızı sensörüdür. Canlı kalp atış hızı verilerini projelerine dahil etmek isteyen öğrenciler, sanatçılar, sporcular, üreticiler ve oyun ve mobil geliştiriciler tarafından kullanılabilir.
Ve en iyi yanı, bu sensörün doğrudan Arduino'ya takılması ve bir parmak ucuna veya kulak memesine kolayca takılmasıdır. Ayrıca delikli (düğme şeklinde) süper küçüktür, bu nedenle kumaşa dikilebilir.
Bilgi : Nabız Sensörü, orijinal olarak PulseSensor.com tarafından oluşturulan açık kaynaklı bir cihazdır . 2011 yılında bir Kickstarter projesi olarak başladılar. 2013 itibariyle, 491 destekçi, bu projenin hayata geçirilmesine yardımcı olmak için 18.418 $ sözü verdi.
Donanıma Genel Bakış
Sensörün ön tarafı, kalp logolu taraftır. Parmağınızı yerleştirdiğiniz yer burasıdır. Ön tarafta Kingbright'ın ters monte edilmiş yeşil LED'inin parladığı küçük yuvarlak bir delik göreceksiniz.
LED'in hemen altında, farklı ışık koşullarında ekran parlaklığını ayarlamak için cep telefonlarında, tabletlerde ve dizüstü bilgisayarlarda kullanılana benzer , Avago'dan APDS-9008 küçük bir ortam ışığı fotoğraf sensörü bulunur .
Modülün arkasında, bir mikroçipin MCP6001 Op-Amp'i ve R/C filtre ağını oluşturan bir grup direnç ve kapasitör dahil olmak üzere geri kalan bileşenleri bulacaksınız. Güç kablolarının yanlışlıkla ters çevrilmesi durumunda hasarı önlemek için bir ters koruma diyotu da vardır.
Modül, < 4mA çalışma akımıyla 3,3 ila 5V DC Gerilim kaynağından çalışır.
İşte teknik özellikler:
En yüksek reyting
VCC
3.0 – 5.5V
IMax (Maksimum Akım Çekme)
< 4mA
VOut (Çıkış Voltaj Aralığı)
0,3V - Vcc
dalga boyu
LED Çıkışı
565nm
Sensör Girişi
525nm
Boyutlar
U x G (PCB)
15,8 mm (0,625")
Kablo uzunluğu
20cm (7.8")
Nabız Sensörü Nasıl Çalışır?
Optik kalp atış hızı sensörlerini teoride anlamak çok kolaydır. Parmak uçlarınıza bir el feneri tuttuysanız ve kalp atışınızın nabzını gördüyseniz, optik kalp atış hızı nabız sensörleri teorisini iyi bilirsiniz.
Bu konuda bir nabız sensörü veya herhangi bir optik kalp atış hızı sensörü, parmağa yeşil bir ışık (~ 550nm) yakarak ve bir fotosensör kullanarak yansıyan ışığın miktarını ölçerek çalışır.
Işık yoluyla bu darbe algılama yöntemine Fotopletismogram denir .
Arter kanındaki oksijenli hemoglobin, yeşil ışığı absorbe etme özelliğine sahiptir. Kan ne kadar kırmızıysa (hemoglobin ne kadar yüksekse), o kadar fazla yeşil ışık emilir. Her kalp atışında kan parmaktan pompalanırken, yansıyan ışığın miktarı değişir ve fotosensörün çıkışında değişen bir dalga biçimi oluşturur.
Işığı yakmaya ve fotosensör okumaları almaya devam ettikçe, hızlı bir şekilde kalp atışı nabız okuması almaya başlarsınız.
Fotosensörden gelen bu sinyal genellikle küçük ve gürültülüdür, bu nedenle sinyal bir R/C filtre ağından geçirilir ve daha sonra çok daha büyük, daha temiz ve algılanması daha kolay bir sinyal oluşturmak için bir Op Amp kullanılarak yükseltilir.
Darbe Sensörü Pin Çıkışı
Sensör, 3 erkek başlık konektörlü 24” düz şerit kablo ile birlikte gelir. Aşağıdaki şema pin çıkışını göstermektedir.
S (Sinyal)sinyal çıkışıdır. Arduino'nun analog girişine bağlanır.
+ (VCC)VCC pinidir. 3.3 veya 5V'a bağlanır.
- (GND) Topraklama pimidir.
Uyarı:
Çoğu zaman kablo renk kodlu değildir, bu nedenle üç kablonun doğru tanımlanmasına sahip olduğunuzdan emin olmak için modülün arkasındaki işaretlere baktığınızdan emin olun.
Arduino ile Nabız Sensörü Kablolama
Nabız Sensörünü Arduino'ya bağlamak çok basittir. Yalnızca üç kablo bağlamanız gerekir: ikisi güç için, biri sensör değerini okumak için.
Modül 3.3 veya 5V'dan güç alabilir. Pozitif voltaj '+' ve toprak '-' ile bağlanır. 3. 'S' kablosu, sensörden gelen analog sinyal çıkışıdır ve bu, bir Arduino'nun A0 analog girişine bağlanacaktır.
Darbe Sensörü ile yapılan deneyler için bağlantı aşağıdadır:
Kütüphane Kurulumu
Sonraki çizimleri çalıştırmak için 'PulseSensor Playground' adlı bir kitaplık kurmanız gerekecek.
Kitaplığı kurmak için, Çizim > Kitaplığı Dahil Et > Kitaplıkları Yönet'e gidin ... Kitaplık Yöneticisi'nin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.
'Pulsesensor' yazarak aramanızı filtreleyin . Sadece bir giriş olmalıdır. Buna tıklayın ve ardından Yükle'yi seçin.
PulseSensor Örnek Çizimleri
PulseSensor kitaplığında bir dizi örnek çizim vardır. Biz burada birkaç tanesinin üzerinden geçeceğiz ama diğerlerini de deneyebilirsiniz. Bu örnek eskizleri kendi kodunuzu geliştirmek için temel olarak kullanabilirsiniz.
Örnek çizimlere erişmek için Dosya > Örnekler > PulseSensor Oyun Alanı'na gidin. Bir dizi örnek çizim göreceksiniz. Çizimi IDE'nize yüklemek için bunlardan herhangi birini seçin. BaşlarkenProjesi ile başlayalım .
Temel Arduino Kodu – Kalp Atışı ile Göz Kırp
Örnek çizimlerden BaşlarkenProje çizimini Arduino IDE'nize yükleyin . Bu temel bir Arduino taslağıdır. Devam edin ve Arduino'nuza yükleyin ve Nabız Sensörünü parmak ucunuza yerleştirin. Arduino'nun yerleşik LED'inin kalp atışlarınızla yanıp söndüğünü görmelisiniz!
intconst PULSE_SENSOR_PIN = 0; // 'S' Signal pin connected to A0int Signal; // Store incoming ADC data. Value can range from 0-1024int Threshold = 550; // Determine which Signal to "count as a beat" and which to ignore.voidsetup() {
pinMode(LED_BUILTIN,OUTPUT); // Built-in LED will blink to your heartbeat
Serial.begin(9600); // Set comm speed for serial plotter window
}
voidloop() {
Signal = analogRead(PULSE_SENSOR_PIN); // Read the sensor value
Serial.println(Signal); // Send the signal value to serial plotterif(Signal > Threshold){ // If the signal is above threshold, turn on the LEDdigitalWrite(LED_BUILTIN,HIGH);
} else {
digitalWrite(LED_BUILTIN,LOW); // Else turn off the LED
}
delay(10);
}
Kod Açıklama
Kroki süper basit. Nabız Sensörünü bağlamak için kullanılan pinlerin tanımlanmasıyla başlar. İki değişken de tanımlanmıştır; SignalGelen ADC verileri ve tutan Thresholdbelirleyip sinyali yok saymak için olan ve “ritmi olarak sayısı”.
intconst PULSE_SENSOR_PIN = 0;
int Signal;
int Threshold = 550;
Kurulumda Yerleşik LED pinini (pin 13) çıkış olarak tanımlıyoruz ve seri monitörü kuruyoruz.
Döngüde, Nabız Sensöründen gelen analog sinyali okuyoruz ve sinyal bir eşik değerini aştığında Dahili LED'i açıyoruz.
voidloop() {
Signal = analogRead(PULSE_SENSOR_PIN); // Read the sensor valueif(Signal > Threshold){ // If the signal is above threshold, turn on the LEDdigitalWrite(LED_BUILTIN,HIGH);
} else {
digitalWrite(LED_BUILTIN,LOW); // Else turn off the LED
}
delay(10);
}
Kalp Atışını Görmede Sorun mu Yaşıyorsunuz?
Kalp atışını görmede sorun yaşıyorsanız, yapmanız gerekenler burada.
Sensörü çok sert tutarsanız parmaklarınızdaki tüm kanı sıkarsınız ve hiçbir işaret olmaz! Çok hafif tutarsanız, hareketten ve ortam ışığından gelen gürültüyü davet edeceksiniz. Nabız sensöründeki ter lekesi basıncı (çok sert değil, çok yumuşak değil) iyi bir temiz sinyali verecektir.
Değişen bir basınç, kanın parmağınızda farklı şekilde akmasına ve sensör okumalarının bozuk olmasına neden olabilir. Sensörü bir lastik bant veya başka bir sıkma cihazı kullanarak parmağınıza takarak sabit basınç uygulamaya çalışın.
Sensörü vücudunuzun kılcal dokuya sahip farklı bölgelerinde (kulak memesi veya alt dudak gibi) deneyin.
Eşik değerini ayarlamaya çalışın. Eşik değeri, Arduino'ya ne zaman geçerli bir darbe bulacağını söyler. Eşik, 0 ile 1023 arasında herhangi bir sayı olabilir, ancak 5 veya 10 adımda ayarlamaya çalışın. Eşiği düşürmek duyarlılığı artırır ve bunun tersi de geçerlidir. Parmağınız için varsayılan değerden daha iyi bir aralık bulabilecek misiniz bir bakın.
Arduino Kodu – Kalp Atışı Çizimi
Önceki BaşlarkenProje çizimi, analog sinyalleri gerçek zamanlı olarak görselleştirmek için Arduino IDE ile birlikte gelen harika bir araç olan Arduino Seri Plotter ile çalışmak üzere tasarlanmıştır. Çizim çalışırken ve Arduino kartınız bilgisayarınızın USB'sine bağlıyken, tıklayın: Araçlar > Seri Çizici
Sinyalin oturması biraz zaman alabilir, ancak bunun gibi bir şey görmelisiniz.
Bileğinizdeki nabzı hissedin ve darbeleri taklit etmesini izleyin.
Arduino Kodu – Nabız Ölçümü (BPM)
İkinci örneğimiz için kalp atış hızını (Dakikada Atım veya BPM) ölçmeye çalışacağız. Alma_BPM_to_Monitor için PulseSensor Oyun Alanı örnekleri menüsüne bakın ve Arduino IDE'nize yükleyin.
Bu çizim, kalp atış hızını elde etmek için darbeler arasındaki süreyi hesaplar ve bunu Seri Monitörde görüntüler.
Uyarı:
Bu çizim, kalp atış hızını optik olarak algılar. Bu yöntem yanıltıcıdır ve yanlış okumalar vermeye eğilimlidir. Bu yüzden lütfen gerçek tıbbi teşhis için KULLANMAYIN.
#define USE_ARDUINO_INTERRUPTS true // Set-up low-level interrupts for most acurate BPM math
#include <PulseSensorPlayground.h> // Includes the PulseSensorPlayground Libraryconstint PulseWire = 0; // 'S' Signal pin connected to A0constint LED13 = 13; // The on-board Arduino LEDint Threshold = 550; // Determine which Signal to "count as a beat" and which to ignore
PulseSensorPlayground pulseSensor; // Creates an objectvoidsetup() {
Serial.begin(9600);
// Configure the PulseSensor object, by assigning our variables to it
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED13); // Blink on-board LED with heartbeat
pulseSensor.setThreshold(Threshold);
// Double-check the "pulseSensor" object was created and began seeing a signalif (pulseSensor.begin()) {
Serial.println("PulseSensor object created!");
}
}
voidloop() {
int myBPM = pulseSensor.getBeatsPerMinute(); // Calculates BPMif (pulseSensor.sawStartOfBeat()) { // Constantly test to see if a beat happened
Serial.println("♥ A HeartBeat Happened ! "); // If true, print a message
Serial.print("BPM: ");
Serial.println(myBPM); // Print the BPM value
}
delay(20);
}
Krokiyi yükledikten sonra parmağınızı olabildiğince sabit tutun ve okumaların anlamlı olması için birkaç saniye bekleyin. Bunun gibi bir sonuç göreceksiniz.
Nabız Sensörü üreticileri, bilgisayarınızdaki Nabız Sensörü verilerini görselleştirmek için bir parça yazılım oluşturdular. Processing'de yazıyor . Bu yazılım Arduino'nun Nabız Sensöründen aldığı tüm verileri görüntüler. Kullanıcının nabzını gerçek zamanlı olarak grafikler. Ayrıca zaman içinde BPM (Dakikada Vuruş) ve IBI (İnterbe Aralığı) grafiğini de gösterir.
Bu İşleme çizimi herhangi bir hesaplama yapmıyor! Hepsi Arduino kartında yapılır, bu nedenle görselleştiriciyi kullanmak için PulseSensor_BPM taslağını çalıştıran bir Arduino'ya ihtiyacınız vardır . Bu yazılım sadece Seri Bağlantı Noktasını okur ve aldığı verileri görselleştirir.
Çizim Yükle
PulseSensor_BPM için Dosya > Örnekler > PulseSensor Oyun Alanı örnekleri menüsüne bakın ve Arduino IDE'nize yükleyin.
PulseSensor_BPM taslağını çalıştırmadan önce Arduino kartınızın görselleştiriciyle konuşması için outputTypeArduino kodunda adı verilen bir değişkeni değiştirmeniz gerekecektir . Varsayılan olarak olarak ayarlanmıştır SERIAL_PLOTTER. olarak değiştirmeniz gerekir PROCESSING_VISUALIZER.
Ardından, Arduino Sketch'i yükleyin ve panonuz, Processing Visualizer'ın almayı sevdiği şekilde veri göndermeye hazır!
Kurulum
İşlem kodunu github'dan indirin . İndirilen dosyayı açın ve PulseSensorAmpd_Processing_Visualizer adlı klasörü alın ve Documents/Processing klasörünüze yerleştirin.
Ardından, Sketch klasörünüz aracılığıyla koda erişmek için İşleme'yi açın. Seç Dosya> Sketchbook ... basıp PulseSensorAmped_Processing_Visualizer
Kurmak
Sketch başlatılacak ve Arduino kartınızla ilişkili USB bağlantı noktasını seçmeniz istenecektir. Kullanım Yenile Seri Portlar size Arduino görmüyorsanız portlar listesini güncellemek için düğmeye.
Doğru bağlantı noktasını seçtiğinizde, kalp atışı verilerini görmeye başlayacaksınız!
Fonksiyonlar
Eskiz çalışırken yapabileceğiniz birkaç harika şey var:
Program penceresinin ekran görüntüsünü almak için 's' tuşuna basın. Resim, eskiz klasörüne .jpg olarak kaydedilecektir.
Veri pencerelerini sıfırlamak için 'r' tuşuna basın.
Bahadir Özgen
Electronic Robotic Coding Research and Development 1975 - ∞