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;
}

Categories:

Tags:

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dersler