Nodemcu ESP8266 Parmak İzi Okuyucu Kullanımı

Nodemcu ESP8266 Parmak İzi Okuyucu Kullanımı

Nodemcu ESP8266 Parmak İzi Okuyucu Kullanımı

Aşağıda iki adet şema ve kod vardır.

1. şema ve kod sensöre parmak izi kaydetmek için kullanılır.

2. şema ve kod ise kaydedilen parmak izleri okumak ve ledleri yakmak için kullanılır. Örnekte 5 adet parmak izi kaydedildi ve her parmak 5 adet ledden birini yakmaktadır.

En son yazdığım kodlar ise hafızadaki kayıtları silmek için. For döngüsünde yazan 127 sayısı maksimum kayıt sayısıdır. Değiştirebilirsiniz.

Parmak izi sensörünün belirli bir kapasitesi var. O yüzden 127 ile sınırladım. Kapasite sensöre göre değişebilir

1. Şema ve Kodlar - Parmaz İzi Kaydetme

 

 

#include < Adafruit_Fingerprint.h >
SoftwareSerial mySerial(13, 15);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
uint8_t id;
void setup()  
{
  Serial.begin(115200);
  while (!Serial);
  delay(100);
  Serial.println("Parmak İzi Kayıt :");
  finger.begin(57600);
  if (finger.verifyPassword()) 
  {
    Serial.println("Sensör bulundu.");
  } 
  else 
  {
    Serial.println("Sensör bulunamadı.");
    while (1) { delay(1); }
  }
}

uint8_t idOku(void) 
{
  uint8_t sayi = 0;
  
  while (sayi == 0) 
  {
    while (! Serial.available());
    sayi = Serial.parseInt();
  }
  return sayi;
}

void loop() 
{
  Serial.println("Parmak İzi Kayıt İçin Hazır.");
  Serial.println("Kayıt için 1 ile 127 arası bir sayi giriniz.");
  id = idOku();
  if (id == 0) 
  {
     return;
  }
  Serial.print("Kayıt edilecek id : ");
  Serial.println(id);
  
  while (!  fnkKayit() );
}

uint8_t fnkKayit() {

  int parmakIzi = -1;
  Serial.print(id);
  Serial.println(". numaralı id için parmağınızı sensöre yerleştiriniz."); 
  
  while (parmakIzi != FINGERPRINT_OK) 
  {
    parmakIzi = finger.getImage();
    switch (parmakIzi) 
    {
    case FINGERPRINT_OK:
      Serial.println("TAMAM! Parmak İzi Resmi Çekildi.");
      break;
    case FINGERPRINT_NOFINGER:
      Serial.println(".");
      break;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("HATA! İletişim Hatası.");
      break;
    case FINGERPRINT_IMAGEFAIL:
      Serial.println("HATA! Resim Çekilemedi.");
      break;
    default:
      Serial.println("HATA! Bilinmeyen Hata.");
      break;
    }
  }

  parmakIzi = finger.image2Tz(1);
  switch (parmakIzi) 
  {
    case FINGERPRINT_OK:
      Serial.println("TAMAM! Resim İşlendi.");
      break;
    case FINGERPRINT_IMAGEMESS:
      Serial.println("HATA! Resim İşlenemedi.");
      return parmakIzi;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("HATA! İletişim Hatası");
      return parmakIzi;
    case FINGERPRINT_FEATUREFAIL:
      Serial.println("HATA! Parmak İzi Tespit Edilemedi.");
      return parmakIzi;
    case FINGERPRINT_INVALIDIMAGE:
      Serial.println("HATA! Parmak İzi Tespit Edilemedi.");
      return parmakIzi;
    default:
      Serial.println("HATA! Bilinmeyen Hata");
      return parmakIzi;
  }

 // parmakIzi = finger.createModel();
  
  parmakIzi = finger.storeModel(id);
  switch (parmakIzi) 
  {
    case FINGERPRINT_OK:
      Serial.println("TAMAM! Kayıt Edildi.");
      break;
    case FINGERPRINT_PACKETRECIEVEERR:
      Serial.println("HATA! İletişim Hatası");
      return parmakIzi;
    case FINGERPRINT_BADLOCATION:
      Serial.println("HATA! Bu Id İle Kayıt Edilemedi.");
      return parmakIzi; 
    case FINGERPRINT_FLASHERR:
      Serial.println("HATA! Hafızaya Kayıt Edilemedi.");
      return parmakIzi;
    default:
      Serial.println("HATA! Bilinmeyen Hata.");
      return parmakIzi;  
  }
}

 

 

2. Şema ve Kodlar - Parmak İzi Okuma

 

#include < Adafruit_Fingerprint.h >
SoftwareSerial mySerial(13,15);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()  
{
  pinMode(2,OUTPUT);
  pinMode(0,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(16,OUTPUT);
  Serial.begin(115200);
  while (!Serial); 
  delay(100);
  Serial.println("");
  Serial.println("Parmak İzi Okuma : ");
  finger.begin(57600);
  if (finger.verifyPassword()) 
  {
    Serial.println("Sensör Bulundu.");
  } else {
    Serial.println("Sensör Bulunamadı.");
    while (1) { delay(1); }
  }

  finger.getTemplateCount();
  Serial.print("Sensörde "); Serial.print(finger.templateCount); 
  Serial.println(" adet kayıt var.");
  Serial.println("Parmak İzi Bekleniyor...");
}

void loop()
{
  fnkParmakIzi();
  delay(50);
}

  int fnkParmakIzi() 
  {
    uint8_t parmakIzi;
    
    parmakIzi = finger.getImage();
    if (parmakIzi != FINGERPRINT_OK)  return -1;
  
    parmakIzi = finger.image2Tz();
    if (parmakIzi != FINGERPRINT_OK)  return -1;
  
    parmakIzi = finger.fingerFastSearch();
    if (parmakIzi != FINGERPRINT_OK)  return -1;
    
    Serial.print("Parmak İzi Bulundu. ID : "); Serial.println(finger.fingerID); 
    Serial.print("Doğruluk / Güvenilirlik (0-255 arası) : "); Serial.println(finger.confidence);
      fnkHepsiSonsun();
      if(finger.fingerID == 1) digitalWrite(2,HIGH);
      if(finger.fingerID == 2) digitalWrite(0,HIGH);
      if(finger.fingerID == 3) digitalWrite(4,HIGH);
      if(finger.fingerID == 4) digitalWrite(5,HIGH);
      if(finger.fingerID == 5) digitalWrite(16,HIGH);
    
    return finger.fingerID; 
  }
  void fnkHepsiSonsun()
  {
    digitalWrite(2,LOW);
    digitalWrite(0,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    digitalWrite(16,LOW);
  }

 

 

3. Kodlar - Kayıtları Silme

#include < Adafruit_Fingerprint.h >
SoftwareSerial mySerial(13,15);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()
{
  Serial.begin(115200);
  while (!Serial); 
  delay(100);
  Serial.println("Kayıt Silme");


  finger.begin(57600);
    if (finger.verifyPassword()) 
  {
    Serial.println("Sensör Bulundu.");
  } else {
    Serial.println("Sensör Bulunamadı.");
    while (1) { delay(1); }
  }
  finger.getTemplateCount();
  Serial.print("Kalan ");
  Serial.println(finger.templateCount);

}


void loop()
{
  uint8_t p = -1;

  if(finger.templateCount>0)
  for(int a=1; a<=127;a++)
  {
      p = finger.deleteModel(a);
  
    if (p == FINGERPRINT_OK)
    {
      Serial.print(a);
       Serial.print(" ");
      Serial.println("Silindi!");
    }
    
    finger.getTemplateCount();
    Serial.print("Kalan kayıt sayısı : ");
    Serial.println(finger.templateCount);
  }
}