Presensi Karyawan dengan Sidik Jari

Indobot Update

Sensor fingerprint adalah sebuah perangkat teknologi yang memanfaatkan sidik jari sebagai media identifikasi penggunanya. Cara kerja sensor fingerprint adalah dengan merekam gambar digital pada pola sidik jari. Dari hasil rekaman tersebut kemudian menjadikan sebagai sebuah template biometrik yang tersimpan dan berguna untuk pencocokan identitas sesorang atau penggunanya. 

Perkembagan sensor fingerprint pada awalnya berguna pada bidang keamanan dan pemerintahan untuk keperluan pendataan kependudukan serta penegakan hukum. Kemajuan teknologi membawa perubhana juga kepada peran serta dari identifikasi sidik jari. 

Sensor Fingerprint atau sensor sidikjari kini banyak berfungsi pada berbagai hal, salah satunya pada system presensi. Dengan menerapkan presensi menggunakan fingerprint kehadiran peserta dapat meningkat, selain iru dapat mengurangi penggunaan kertas presensi.

  1. Alat / Bahan
  • Arduino IDE                                  Download
  • Library: Adafruit_Fingerprint        Download
  • Library: LiquidCrystal_I2C             Download
  • Library: DS3231                            Download
  • Arduino UNO                               1 Buah
  • Sensor Fingerprint                       1 Buah
  • LCD 16×2                                     1 Buah
  • I2C                                                1 Buah
  • DS3231                                         1 Buah
  • Project Board                                1 Buah
  • Jumper                                          Secukupnya

Segera dapatkan komponen elektronik atas ini silahkan temukan disini.

      2. Skema Rangkaian 

Presensi dengan Sidik Jari
Presensi dengan Sidik Jari

   

Gambar Rangkaian Presensi Kuliah dengan Sidik Jari

Keterangan:

  • 5V – VCC Fingerprint, VCC I2C, VCC DS3231
  • GND – GND Fingerprint, GND I2C, GND DS3231
  • D2 – TX Fingerprint
  • D3 – RX Fingerprint
  • SDA – SDA I2C, SDA DS3231
  • SCL – SCL I2C, SCL DS3231
  • Pin LCD – Pin I2C

 

      3. Langkah Kerja 

  1. Pertama Siapkan alat dan bahan yang akan digunakan
  2. Kedua Lakukan proses wiring dengan menggunakan Gambar skematik rangkaian diatas
  3. Ketiga Buka software Arduino IDE yang telah terinstal pada laptop/komputer
  4. Kemudian Unduh semua library di atas dan masukkan libray tersebut dengan cara buka Arduino IDE pilih Sketch->Include Library->Add.Zip Library 
  5. Selanjutnya Ketikkan sketch program pada halaman Arduino IDE
  6. Setelah itu Masukan alamat I2C LCD pada sketch program, untuk mengetahui alamat I2C pelajari materi berikut:
    Mencari Tahu Alamat I2C Pada Modul I2C
  7. Kemudian Cara mendaftarkan sidik jari dapat kalian pelajari materi pada berikut:
    Cara Mendaftarkan Sidik Jari Pada Sensor Fingerprint
  8. Segera Lakukan proses uploading program

 

     4. Sketch Program

Dapatkan akses ratusan video tutorial dan pembelajaran dengan registrasi melalui tombol di bawah!

AKSES & REGISTER SEKARANG>>

/* Program Presensi Karyawan dengan Sidik Jari dibuat oleh Indobot */

 

#include <Adafruit_Fingerprint.h>

 

// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white

// uncomment this line:

// #define mySerial Serial1

 

// For UNO and others without hardware serial, we must use software serial…

// pin #2 is IN from sensor (GREEN wire)

// pin #3 is OUT from arduino  (WHITE wire)

// comment these two lines if using hardware serial

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);

 

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

 

#include <LiquidCrystal_I2C.h>      //Library LCD I2C

LiquidCrystal_I2C lcd(0x27,16,2);   //Alamat I2C

 

#include <DS3231.h>       //library DS3231

DS3231  rtc(SDA, SCL);    //inisialisasi penggunaan i2c

Time t;                   //Variabel t tampat menyimpan waktu

int set_jam = 06;         //Set jam

int set_menit = 59;       //Set menit

int set_detik = 59;

 

bool akses = true;                    //Variabel akses bernilai benar

 

void setup()  

{

  lcd.init ();            //Mulai LCD

  lcd.setBacklight(HIGH);

  

  rtc.begin();            //Mulai RTC

  

  //setting pertama download program

  rtc.setDate(30, 9, 2020);     //mensetting tanggal 

  rtc.setTime(06, 59, 50);      //menset jam 

  rtc.setDOW(3);                //menset hari “Rabu”

  

  Serial.begin(9600);

  while (!Serial);  // For Yun/Leo/Micro/Zero/…

  delay(100);

  Serial.println(“\n\nAdafruit finger detect test”);

 

  // set the data rate for the sensor serial port

  finger.begin(57600);

  

  if (finger.verifyPassword()) {

    Serial.println(“Found fingerprint sensor!”);

  } else {

    Serial.println(“Did not find fingerprint sensor :(“);

    while (1) { delay(1); }

  }

 

  finger.getTemplateCount();

  Serial.print(“Sensor contains “); Serial.print(finger.templateCount); Serial.println(” templates”);

  Serial.println(“Waiting for valid finger…”);

}

 

void loop()                     // run over and over again

{

  getFingerprintIDez();

  delay(50);            //don’t ned to run this at full speed.

 

  lcd.setCursor(0,0);

  lcd.print(rtc.getTimeStr());  //prosedur pembacaan waktu

  //delay(1000);

  //lcd.clear();

}

 

uint8_t getFingerprintID() {

  uint8_t p = finger.getImage();

  switch (p) {

    case FINGERPRINT_OK:

      Serial.println(“Image taken”);

      break;

    case FINGERPRINT_NOFINGER:

      Serial.println(“No finger detected”);

      return p;

    case FINGERPRINT_PACKETRECIEVEERR:

      Serial.println(“Communication error”);

      return p;

    case FINGERPRINT_IMAGEFAIL:

      Serial.println(“Imaging error”);

      return p;

    default:

      Serial.println(“Unknown error”);

      return p;

  }

 

  // OK success!

 

  p = finger.image2Tz();

  switch (p) {

    case FINGERPRINT_OK:

      Serial.println(“Image converted”);

      break;

    case FINGERPRINT_IMAGEMESS:

      Serial.println(“Image too messy”);

      return p;

    case FINGERPRINT_PACKETRECIEVEERR:

      Serial.println(“Communication error”);

      return p;

    case FINGERPRINT_FEATUREFAIL:

      Serial.println(“Could not find fingerprint features”);

      return p;

    case FINGERPRINT_INVALIDIMAGE:

      Serial.println(“Could not find fingerprint features”);

      return p;

    default:

      Serial.println(“Unknown error”);

      return p;

  }

  

  // OK converted!

  p = finger.fingerFastSearch();

  if (p == FINGERPRINT_OK) {

    Serial.println(“Found a print match!”);

  } else if (p == FINGERPRINT_PACKETRECIEVEERR) {

    Serial.println(“Communication error”);

    return p;

  } else if (p == FINGERPRINT_NOTFOUND) {

    Serial.println(“Did not find a match”);

    return p;

  } else {

    Serial.println(“Unknown error”);

    return p;

  }   

  

  // found a match!

  Serial.print(“Found ID #”); Serial.print(finger.fingerID); 

  Serial.print(” with confidence of “); Serial.println(finger.confidence); 

 

  return finger.fingerID;

}

 

// returns -1 if failed, otherwise returns ID #

int getFingerprintIDez() {

  uint8_t p = finger.getImage();

  if (p != FINGERPRINT_OK)  return -1;

 

  p = finger.image2Tz();

  if (p != FINGERPRINT_OK)  return -1;

 

  p = finger.fingerFastSearch();

  if (p != FINGERPRINT_OK)  return -1;

  

  // found a match!

  Serial.print(“Found ID #”); Serial.print(finger.fingerID); 

  Serial.print(” with confidence of “); Serial.println(finger.confidence);

 

  //Jika sidik jari sama, maka

  cek_waktu();

  

  return finger.fingerID; 

}

 

//——————-Prosedur cek waktu——————-//

void cek_waktu(){

  t = rtc.getTime();            //Baca waktu

  int jam = t.hour;

  int menit = t.min;

  int detik = t.sec;

    

  if(set_jam <= jam){       

    if(set_menit <= menit){   

      if(detik <= set_detik){

        lcd.setCursor(0,1);   

        lcd.print(“Selamat Datang”);

        delay(1000);

        lcd.clear();

      }

      else{goto tolak_akses;}

    }

    else{goto tolak_akses;}

  }

  else{goto tolak_akses;}

 

  if(akses == false){                   

    tolak_akses:                        //Lompatan perintah tolak_akses

    lcd.setCursor(0,1);

    lcd.print(“Akses Ditolak!”);

    delay(1000);

    lcd.clear();

  }

}

 

Kesimpulan 

Hasil dari alat ini yaitu, proses presensi dapat dilakukan secara digital dengan menggunakan fingerprint. Ketika karyawan absen melebihi jam hadir, maka presensinya akan ditolak.

Kamu pemula dan ingin belajar/bikin project elektronika dari nol? Ikuti program dari Indobot!

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

Tags

Tinggalkan komentar

whatsapp whatsapp