Parmak İzi Okuma Uygulaması
Görseldeki parmak izi okuma uygulaması görülmektedir. UART haberleşme protokolü kullanılan sensör Arduino’da SoftwareSerial kütüphanesi kullanılarak 2 ve 3 numaralı pinlere bağlanmıştır. Görselde parmak izi sensörünün pin yapısı verilmiştir. Parmak izi kaydetme programıyla kaydedilen parmak izleri, parmak izi okuma programıyla test edilir. İşlemler seri ekran kullanılarak yapılır.


VCC: 3,3 V-5 V besleme.
GND: Topraklama pini.
TX: Veri çıkışı (3,3 V).
RX: Veri girişi (3,3 V).
#include <Adafruit_Fingerprint.h> // v2.1.0
SoftwareSerial seriIletisim(2, 3); // Arduino'da 2. pini Rx, 3. pini TX olarak kullan.
Adafruit_Fingerprint parmakIzi = Adafruit_Fingerprint(&seriIletisim);
byte id;
void setup() {
Serial.begin(9600);
Serial.println("\n\nParmak izi kaydetme.");
parmakIzi.begin(57600); // Sensör seri portu.
if ( parmakIzi.verifyPassword()) {
Serial.println("Parmak izi sensörü bulundu.");
} else {
Serial.println("Parmak izi sensörü bulunamadı.(");
while (1) {
delay(1);
}
}
Serial.println(F("Parmak izi sensörü parametreleri: "));
parmakIzi.getParameters();
Serial.print(F("Durum: 0x")); Serial.println( parmakIzi.status_reg, HEX);
Serial.print(F("Sistem ID: 0x")); Serial.println( parmakIzi.system_id, HEX);
Serial.print(F("Kapasite: ")); Serial.println( parmakIzi.capacity);
Serial.print(F("Güvenlik seviyesi: ")); Serial.println( parmakIzi.security_level);
Serial.print(F("Cihaz adresi: ")); Serial.println( parmakIzi.device_addr, HEX);
Serial.print(F("Packet len: ")); Serial.println( parmakIzi.packet_len);
Serial.print(F("Baud rate: ")); Serial.println( parmakIzi.baud_rate);
}
byte numaraOku(void) {
byte num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop() {
Serial.println("1-127 arası ID kayıt numarası giriniz: ");
id = numaraOku();
if (id == 0) { // 0 olmaz.
return;
}
Serial.print("Kaydedilen ID: ");
Serial.println(id);
while (! parmakIziKaydet() );
}
byte parmakIziKaydet() {
int p = -1;
Serial.print("Kayıt ID'si: "); Serial.println(id);
while (p != FINGERPRINT_OK) {
p = parmakIzi.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("\nGörüntü alındı");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
delay(200);
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("İletişim hatası.");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Görüntüleme hatası.");
break;
default:
Serial.println("Bilinmeyen hata.");
break;
}
}
p = parmakIzi.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Görüntü işlendi.");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Görüntü karışık.");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("İletişim hatası.");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Parmak izi özellikleri bulunamadı.");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Parmak izi özellikleri bulunamadı.");
return p;
default:
Serial.println("Bilinmeyen hata.");
return p;
}
Serial.println("Parmağınızı kaldırınız.");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = parmakIzi.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Aynı parmağı tekrar yerleştiriniz.");
while (p != FINGERPRINT_OK) {
p = parmakIzi.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("\nGörüntü alındı.");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
delay(200);
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("İletişim hatası.");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Görüntü hatası.");
break;
default:
Serial.println("Bilinmeyen hata.");
break;
}
}
p = parmakIzi.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Görüntü oluşturuldu.");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Görüntü karışık.");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("İletişim hatası.");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Parmak izi özellikleri bulunamadı.");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Parmak izi özellikleri bulunamadı.");
return p;
default:
Serial.println("Bilinmeyen hata.");
return p;
}
Serial.print("Kayıt numarası: "); Serial.println(id);
p = parmakIzi.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Parmak izi eşleşti.");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("İletişim hatası.");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Parmak izi eşleşmedi.");
return p;
} else {
Serial.println("Bilinmeyen hata.");
return p;
}
Serial.print("ID "); Serial.println(id);
p = parmakIzi.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Kaydedildi!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("İletişim hatası.");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Bu alana kaydedilemedi.");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Yazma hatası.");
return p;
} else {
Serial.println("Bilinmeyen hata.");
return p;
}
return true;
}
#include <Adafruit_Fingerprint.h> // v2.1.0
SoftwareSerial seriIletisim(2, 3); // Arduino'da 2. pini Rx, 3. pini TX olarak kullan.
Adafruit_Fingerprint parmakIzi = Adafruit_Fingerprint(&seriIletisim);
void setup() {
Serial.begin(9600);
Serial.println("\n\nParmak izi okuma.");
parmakIzi.begin(57600); // Sensör seri portu.
if (parmakIzi.verifyPassword()) {
Serial.println("Parmak izi sensörü tespit edildi.");
} else {
Serial.println("Parmak izi sensörü tespit edilemedi :(");
while (1) {
delay(1);
}
}
parmakIzi.getTemplateCount();
Serial.print("Hafizada "); Serial.print(parmakIzi.templateCount); Serial.println(" parmak izi mevcut.");
Serial.println("Lütfen parmağınızı okuyucuya yerleştiriniz.");
Serial.println("Parmak izi tespit ediliyor...");
}
void loop() {
getFingerprintIDez();
delay(50);
}
byte getFingerprintID() {
byte p = parmakIzi.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Görüntü kaydedildi.");
break;
case FINGERPRINT_NOFINGER:
Serial.println("Parmak izi yok");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("İletişim hatası.");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Görüntüleme hatası.");
return p;
default:
Serial.println("Bilinmeyen hata.");
return p;
}
p = parmakIzi.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Görüntü işlendi.");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Görüntü karışık.");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("İletişim hatası.");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Parmak izi özellikleri bulunamadı.");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Parmak izi özellikleri bulunamadı.");
return p;
default:
Serial.println("Bilinmeyen hata.");
return p;
}
p = parmakIzi.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Bir parmak izi ile eşleşti!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("İletişim hatası.");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Eşleşme bulunamadı.");
return p;
} else {
Serial.println("Bilinmeyen hata.");
return p;
}
Serial.print("Bulunan ID: "); Serial.print(parmakIzi.fingerID);
Serial.print(" doğruluk seviyesi: "); Serial.println(parmakIzi.confidence);
return parmakIzi.fingerID;
}
int getFingerprintIDez() {
byte p = parmakIzi.getImage();
if (p != FINGERPRINT_OK) return -1;
p = parmakIzi.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = parmakIzi.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
Serial.print("Bulunan ID: "); Serial.print(parmakIzi.fingerID);
Serial.print(" doğruluk seviyesi: "); Serial.println(parmakIzi.confidence);
return parmakIzi.fingerID;
}
#include <Adafruit_Fingerprint.h> // v2.1.0
SoftwareSerial seriIletisim(2, 3); // Arduino'da 2. pini Rx, 3. pini TX olarak kullan.
Adafruit_Fingerprint parmakIzi = Adafruit_Fingerprint(&seriIletisim);
void setup() {
Serial.begin(9600);
Serial.println("\n\nParmak izi silme.");
parmakIzi.begin(57600); // Sensör seri portu.
if ( parmakIzi.verifyPassword()) {
Serial.println("Parmak izi sensörü tespit edildi.");
} else {
Serial.println("Parmak izi sensörü tespit edilemedi :(");
while (1) {
delay(1);
}
}
}
byte numaraOku(void) {
byte num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop() {
Serial.println("1-127 arası silinecek ID kayıt numarası giriniz: ");
byte id = numaraOku();
if (id == 0) { // 0 olmaz.
return;
}
Serial.print("Silinen ID: ");
Serial.println(id);
parmakIziSil(id);
}
byte parmakIziSil(byte id) {
byte p = -1;
p = parmakIzi.deleteModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Silindi.");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("İletişim hatası.");
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Bu alandan silinemedi.");
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Hafızaya yazarken hata.");
} else {
Serial.print("Bilinmeyen hata: 0x"); Serial.println(p, HEX);
}
return p;
}