Arduino ile insan biyometrik verilerini ölçmek, birçok eğitici ve tıbbi projede kullanılabilir. Bu projede, KY-039 Parmak Nabız Sensörü kullanarak nabız verilerini okuyup bu verileri LCD ekrana yazdıracağız. KY-039 sensörü, parmağınıza yerleştirildiğinde, ışık geçirgenliği farkını algılayarak nabız sinyalleri üretebilir. Bu veriler, Arduino’nun analog giriş pinlerinden okunarak işlenir ve bir LCD ekranına yazdırılır.
Bu proje, nabız ölçümüne giriş yapmak isteyenler için mükemmel bir başlangıçtır. KY-039 sensörünün basit yapısı ve Arduino ile kolay entegrasyonu sayesinde, biyometrik ölçümler konusunda bilgi edinmek isteyenler bu projeyi rahatlıkla gerçekleştirebilir. Projede kullandığımız I2C protokolü destekleyen LCD ekran, karmaşık bağlantılardan kaçınarak ekran kontrolünü kolaylaştırır.
Proje İçin Gerekli Malzemeler:
- Arduino (Uno veya başka bir model)
- KY-039 Parmak Nabız Sensörü
- I2C 16×2 LCD Ekran (I2C modülü entegre edilmiş veya ayrı bir modül kullanılabilir)
- Breadboard
- Jumper Kablolar
Bağlantı Şeması:

- KY-039 Sensör:
- Sinyal ucu -> Arduino A0
- VCC -> Arduino 5V
- GND -> Arduino GND
- I2C LCD Ekran:
- SDA -> Arduino A4 (Uno için, farklı modellerde değişebilir)
- SCL -> Arduino A5 (Uno için, farklı modellerde değişebilir)
- VCC -> Arduino 5V
- GND -> Arduino GND
Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | //--------------------------------------------// //-----------------KODKAMPUSU-----------------// //---Arduino | KY-039 Nabız Ölçer Kullanımı---// //--------------------------------------------// #include <Wire.h> // I2C protokolü ile LCD'yi kontrol etmek için gerekli kütüphane #include <LiquidCrystal_I2C.h> // I2C LCD ekran için kütüphane const int nabizsensor = A0; // KY-039 sensörünün bağlı olduğu pin tanımlaması LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C adresi 0x27 olan 16x2 boyutundaki LCD ekran tanımlaması // Sensör verilerinin işlenmesi için gerekli değişkenler double hesapdeger = 0.75; // Veri işleme için çarpan int hesapbolum = 20; // Delay süresini ayarlamak için bir çarpan double degertekrar = 0.0; // Nabız değişim değerini tutacak değişken void setup() { pinMode(nabizsensor, INPUT); // KY-039 sensörünü giriş birimi olarak tanımlıyoruz lcd.init(); // LCD ekran başlatılıyor lcd.backlight(); // LCD arka ışığı aktif ediliyor } void loop() { static double eskideger = 0; // Bir önceki nabız değeri static double eskidegertekrar = 0; // Bir önceki değişim değeri int nabiz = analogRead(nabizsensor); // Sensörden gelen analog veriyi okuyoruz double deger = eskideger * hesapdeger + (1 - hesapdeger) * nabiz; // Yeni nabız değerini hesaplıyoruz degertekrar = deger - eskideger; // Değer değişim oranını hesaplıyoruz // LCD ekranına yazdırma işlemi lcd.setCursor(0, 0); // İlk satırın başlangıcına gidiyoruz lcd.print(" Nabiz Olcer "); // İlk satıra sabit başlık yazdırıyoruz lcd.setCursor(0, 1); // İkinci satırın başlangıcına gidiyoruz lcd.print(" Nabiz: "); // Nabız başlığı yazdırılıyor lcd.print(nabiz / 10); // Nabız verisini ekrana yazdırıyoruz // Eski değerleri güncelleyerek bir sonraki döngü için hazırlık yapıyoruz eskideger = deger; eskidegertekrar = degertekrar; delay(hesapbolum * 10); // Döngü hızını ayarlamak için bekleme süresi } |
Açıklamalar ve Dikkat Edilmesi Gereken Noktalar
- I2C LCD Adresi:
- Kullanılan LCD’nin I2C adresi farklı olabilir. Kütüphanede
0x27
olarak belirtilen adresi doğru LCD adresiyle değiştirin. LCD adresini öğrenmek için bir I2C Scanner kodu kullanabilirsiniz.
- Kullanılan LCD’nin I2C adresi farklı olabilir. Kütüphanede
- Sensör Yerleşimi:
- KY-039 sensörünün doğru çalışabilmesi için parmağınızı sabit tutmalısınız. Hareketli bir ölçüm doğru sonuçlar vermeyebilir.
- Bağlantılar:
- Özellikle I2C LCD bağlantısında SDA ve SCL pinlerinin doğru bağlandığından emin olun. Farklı Arduino modellerinde bu pinler değişebilir.
- Sensör Hassasiyeti:
- KY-039 sensörü çevredeki ışık ve hareketlerden etkilenebilir. Bu nedenle, ölçüm sırasında çevresel faktörleri en aza indirmek önemlidir.
- Kod Optimizasyonu:
- Delay süreleri ve veri işleme algoritmaları kullanıcı ihtiyaçlarına göre değiştirilebilir. Daha hassas ölçümler için
hesapdeger
gibi parametrelerle oynayabilirsiniz.
- Delay süreleri ve veri işleme algoritmaları kullanıcı ihtiyaçlarına göre değiştirilebilir. Daha hassas ölçümler için
Bağlantı ve kodlama sırasında karşılaştığınız hataları; aşağıda ki yorum bölümünden belirtebilirsiniz :)
Merhaba kodda
exit status 1
‘class LiquidCrystal_I2C’ has no member named ‘init’
diye bir hata veriyor
Merhaba, kullandığınız I2C kütüphanesinin sürümünden dolayı böyle bir hata almaktasınız. Benim kullandığım kütüphanede lcd.init(); kullanılmakta. Kodda ki lcd.init(); olan bölümü lcd.begin(); olarak değiştirirseniz kod çalışacaktır.
acaba bu projeyi nokiyanın grafik ekranı ile kullanabilirmiyim ve ya nasıl kullanırım
5110 ekranının kütüphanesini kullanarak yapabilirsiniz.
Arduino:1.8.16 (Windows 10), Kart:”Arduino Uno”
sketch_apr16b:5:10: fatal error: LiquidCrystal_I2C.h: No such file or directory
#include
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
LiquidCrystal_I2C.h: No such file or directory
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
BU HATALARI VEIYOR NAPILIRIM
LiquidCrystal_I2C.h kütüphanesi bilgisayarınızda bulunmadığı için bu hatayı almaktasınız. Buraya tıklayarak gerekli dosyalara erişebilirsiniz.