Parmak İzi ile Yoklama Sistemi

Yoklama işleminin yapıldığı bir çok kurum ve kuruluşlarda eski yöntem ile yoklama işlemi yapılmaktadır. Teknoloji artık hayatımızın tam ortasında olmasına rağmen bu alanda çok fazla kullanılmamaktadır. Yoklama sistemini değiştirmek için çok fazla donanıma ve bilgiye ihtiyaç duyulmamaktadır. Bu yazıda tasarlanacak olan sistem daha kompleks ve üniversiteler için olacaktır. 

Yoklama sistemini içinde mobil uygulama, elektronik kontrol kartı (Rasberry Pi, Arduino vb.) ve web arayüz olacaktır.

  • Mobil uygulama: Öğrencilerin imza attığını doğrulamak ve diğer öğrenci işlemleri için kullanılacaktır.
  • Elektronik kontrol kartı: İçerisinde yüklü olan işletim sistemi ve yazılımı sayesinde parmak izi okuyucu ve bluetooth modülünden gelen verileri işleyerek ana sisteme aktarır.
  • Web arayüz: Admin işlemlerinin yapmak için kullanılacaktır.

Bu yazımızda tasarlanacak olan projede;

  • Elektronik kontrol kartı: Arduino, bluetooth modülü olarak HC-05 ve parmak izi okuyucu olarak GT511C3 kullanılacaktır.
  • Mobil uygulama: Android işletim sistemi için geliştirilecektir. (Diğer işletim sistemleri için geliştirilebilir.)
  • Web Arayüz: Asp.net teknoloji kullanılacaktır.

Projede imza işlemini gerçekleştirmek için parmak izi verisini aldıktan sonra isterseniz mobil uygulama üzerinden sunucuya bağlanın isterseniz arduino yerine Rasberry Pi kullanarak internet portundan sunucuya bağlanın.  Bu projede parmak izi verisini mobil uygulama üzerinden sunucuya göndereceğiz. Android uygulama ile arduino arasındaki bağlantıyı bluetooth modülü üzerinden yapacağız.

Öncelikle Arduino’ya parmak izi okuyucu bağlayalım.

Araç-Gereç:

-1 adet Arduino uno

-1 adet GT511C3 parmak izi okuyucu.

-1 adet 680R direnç

-1 adet 1k3 direnç

Parmak izi okuyucunun üzerinde 4 adet pin bulunmaktadır. Bunlar;

  • 1. pin veri göndermek için kullanılır ve 3.3V ile çalışır.
  • 2. pin veri almak için kullanılır ve 3.3V ile çalışır.
  • 3. pin GND topraklama pinidir.
  • 4. pin 5V’luk enerji pinidir.

 

Parmak izi okuyucu ile Arduino ile arasındaki bağlantıyı aşağıdaki gibi kurunuz. Açıklama aşağıdaki gibidir.

  1. Arduino uno üzerindeki 8. pini parmak izi okuyucu üzerindeki Tx transmit pinine bağlıyoruz.
  2. Arduino uno üzerindeki 7. pini parmak izi okuyucu üzerindeki Rx pinine bağlıyoruz. Bu bağlantı arasına 680R direncimizi yerleştiriyoruz. Sonrasında bu bağlantıdan GND pinine bağlantı yapıyoruz ve bu araya 1k3 direncimizi ekliyoruz.
  3. Son olarak arduino uno üzerindeki 5V parmak izi okuyucu üzerindeki Vin pinine bağlıyoruz.

Adımları yaptığımıza göre arduino ile parmak izi okuyucu arasındaki bağlantımız gerçekleştirilmiştir. Bluetooth modülünü arduino nasıl bağladığımızı öğrenmek için TIKLAYINIZ.

Arduino unoyu bilgisayarımıza bağlıyoruz ve parmak izi okuyucunun kütüphanesini İNDİRİYORUZ.

Parmak izi okuyucunun kütüphanesini Arduino Ide üzerinden projemize ekliyoruz. Example dosyasını açıyoruz ve FPS_Blink adlı dosyayı açıp arduino unoya yüklüyoruz. İşlem gerçekleştikten sonra parmak izi okuyucu üzerinde mavi bir ışık bir saniye aralıkla yanıp sönecektir.

FPS_Blink Kodlar:

#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
// Hardware setup - FPS connected to:
// digital pin 7(arduino rx, fps tx)
// digital pin 8(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
// this brings the 5v tx line down to about 3.2v so we dont fry our fps

FPS_GT511C3 fps(7, 8);
void setup(){
   Serial.begin(9600);
   fps.UseSerialDebug = true; // so you can see the messages in the serial debug screen
   fps.Open();
}
void loop(){
   // FPS Blink LED Test
   fps.SetLED(true); // turn on the LED inside the fps
   delay(1000);
   fps.SetLED(false);// turn off the LED inside the fps
   delay(1000);
}

FPS_Enroll kütüphanesiyle kullanıcılardan tek tek parmak izi alabiliriz.

FPS_Enroll Kodlar:

#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
// Hardware setup - FPS connected to:
// digital pin 7(arduino rx, fps tx)
// digital pin 8(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
// this brings the 5v tx line down to about 3.2v so we dont fry our fps

FPS_GT511C3 fps(7, 8);

void setup(){
   Serial.begin(9600);
   delay(100);
   fps.Open();
   fps.SetLED(true);
   Enroll();
 }
 void Enroll(){
   // Enroll test
   // find open enroll id
   int enrollid = 0;
   bool usedid = true;
   while (usedid == true){
      usedid = fps.CheckEnrolled(enrollid);
      if (usedid==true) enrollid++;
   }
   fps.EnrollStart(enrollid);
   // enroll
   Serial.print("Press finger to Enroll #");
   Serial.println(enrollid);
   while(fps.IsPressFinger() == false) delay(100);
   bool bret = fps.CaptureFinger(true);
   int iret = 0;
   if(bret != false){
      Serial.println("Remove finger");
      fps.Enroll1();
      while(fps.IsPressFinger() == true) delay(100);
      Serial.println("Press same finger again");
      while(fps.IsPressFinger() == false) delay(100);
      bret = fps.CaptureFinger(true);
      if(bret != false){
         Serial.println("Remove finger");
         fps.Enroll2();
         while(fps.IsPressFinger() == true) delay(100);
         Serial.println("Press same finger yet again");
         while(fps.IsPressFinger() == false) delay(100);
         bret = fps.CaptureFinger(true);
         if (bret != false){
            Serial.println("Remove finger");
            iret = fps.Enroll3();
            if (iret == 0){
               Serial.println("Enrolling Successfull");
            }
            else{
               Serial.print("Enrolling Failed with error code:");
               Serial.println(iret);
            }
         }else Serial.println("Failed to capture third finger");
       }else Serial.println("Failed to capture second finger");
    }else Serial.println("Failed to capture first finger");
   }
void loop(){
   delay(100000);
}

FPS_IDFinger kütüphanesini arduino uno yükledikten sonra kullanıcıdan parmak izini alırız ve kayıtlarımızla karşılaştırırız.

#include "FPS_GT511C3.h"
#include "SoftwareSerial.h"
// Hardware setup - FPS connected to:
// digital pin 7(arduino rx, fps tx)
// digital pin 8(arduino tx - 560ohm resistor fps tx - 1000ohm resistor - ground)
// this brings the 5v tx line down to about 3.2v so we dont fry our fps

FPS_GT511C3 fps(7, 8);
void setup(){
   Serial.begin(9600);
   delay(100);
   fps.Open();
   fps.SetLED(true);
}
void loop(){
   // Identify fingerprint test
   if(fps.IsPressFinger()){
      fps.CaptureFinger(false);
      int id = fps.Identify1_N();
      if(id <200){
         Serial.print("Verified ID:");
         Serial.println(id);
      }
      else{
         Serial.println("Finger not found");
      }
    }
    else{
       Serial.println("Please press finger");
    }
    delay(100);
}

Kütüphanelerimizi ayrı ayrı kullanmak yerine tek bir kütüphane haline getirelim. Kodumuzun çalışma mantığı aşağıdaki gibi olmalıdır.

  1. Parmak izi kullanılmazken FPS_Blink kütüphanesi çalışmalıdır.
  2. Eğer kullanıcı parmağını parmak izi okuyucunun üzerine koyduğunda parmak izi okunmalıdır. Okunan parmak izi kaydı kayıtlar arasında aranmalıdır. Eğer kayıt yoksa parmak izi kaydı bellekte tutulmalı ve iki defa daha parmak izi kaydı alınarak parmak iz verisi veritabanına saklanmalıdır.
  3. Parmak izi verisi şifrelenerek mobil uygulamaya aktarılmalıdır.
  4. Aktarılan parmak izi verisi sunucuya aktarılmalı ve eğer kayıt varsa mobil uygulamadan imza için onay beklenmelidir.
  5. Kullanıcı mobil uygulamadan imza için onay verirse imzası başarılı olarak gerçekleştirilmelidir.

Android mobil uygulama giriş ekranı aşağıdaki gibi olabilir.

Öğrenci numarası ve şifresi sisteme giriş yapılır. Eğer sistemde kayıtlı değilse Yeni kayıt oluşturur ve admin onaylarsa sisteme girişi yapabilir. Mobil uygulamada anasayfayı istediğiniz gibi tasarlayabilirsiniz. Kullanıcı dersini seçtikten sonra imzala butonuna basar ve parmak izi verisi seçtiği ders için belleğe alınmışsa imzala işlemi gerçekleştirilir.

Arduino ile android mobil uygulama arasında bluetooth ayarlarının yapılması için aşağıdaki ekranları oluşturabilirsiniz. İlgili kodlar için TIKLAYINIZ.

Son olarak Web arayüz tasarımına gelirsek Web arayüzde aşağıdaki modüller olmalıdır. Bu modülleri istediğiniz kadar arttırabilirsiniz. Bizim projemiz için aşağıdaki modüller yeterli olacaktır.

  • Öğrenci listesi
  • Derslerin imza işlemleri
  • Öğrencilerin imza işlemleri
  • Devamsızlık bilgileri

Bu ekranı öğretim üyeleri kullanabilir. Öğretim üyesi derse gitmeden önce gidecek olduğu ders ve öğrencilerin imza yetkilerini aktif hale getirir. Girdiği dersteki öğrencilerin devamsızlıklarını görebilir.

Anasayfa da tasarımı ve modülleri aşağıdaki gibidir.

Tüm tasarımlarımızı bitirdikten sonra sistemimiz aşağıdaki gibi çalışıyor olmasını bekliyoruz.

  • Elektronik kontrol kartı işlevleri:
    • Parmak izi okuyucudan parmak izi verisini alır
    • Bluetooth modülü ile alınan veriyi şifreleyerek mobil uygulamaya aktarır.
  • Mobil uygulama işlevleri:
    • Öğrenci numarası ve şifresi ile sisteme giriş yapabilir. Eğer öğrenci sistemde kayıtlı değilse kayıt isteği gönderir ve öğretim üyesi onaylarsa sisteme dahil olur.
    • Öğrencinin aldığı dersler listelenir.
    • Devamsızlık bilgilerini görüntüleyebilir.
    • Ders notlarını görebilir.
    • Herhangi bir dersin sınavı açıklandığında sınav not kendisine bildirim olarak gönderilebilir.
    • Öğrenci imza atmak istediğinde telefonunu Arduino’ya bağlı bluetooth modülünü bağlar. Parmak izini okutur. Parmak izi tarama işlemi bittikten sonra veriler bluetooth üzerinden mobil uygulamaya aktarılır.
    • Arduino’dan alınan veriler servisler yardımıyla sunucuya aktarılır. Öğrenci ilk defa parmak izini gönderiyorsa 2 defa daha parmak izi verisini göndermesi istenir. Öğrencinin parmak izi kaydı sisteme kaydedilir.
    • Arduino tüm işlemler başarılı olursa bluetooth bağlantısını otomatik olarak kapatır.
    • Arduino ile bağlantı koptuktan sonra mobil uygulamada öğrencinin imza atabilmesi için öğretim üyesi tarafından aktif edilen derse imzasını atar.
  • Web Arayüz işlevleri:
    • Öğretim üyeleri ve admin için 2 farklı bölüm bulunabilir.
    • Öğretim üyeleri girdikleri dersleri imzaya açabilirler.
    • Öğretim üyeleri derslerini alan öğrenciler için imza atabilmeleri için aktif hale getirebilir.
    • Öğretim üyeleri girdikleri dersler için öğrencilerin devamsızlık bilgilerini görebilirler.
    • Öğretim üyeleri öğrencilere girdikleri dersler hakkında bildirim gönderebilir.
    • Öğretim üyesi girdiği dersin notunu açıklarsa öğrencilere notlarını bildirim olarak gönderebilir.

Bunlar gibi birçok özellik eklenebilir ve sistem büyütülebilir. Tüm işlemler sonucunda sistemiz temel işlemleri yapabilir bir duruma gelmiş olacaktır. İyi çalışmalar kolay gelsin 🙂