Cara Membuat absensi sidik jari






Teknologi.

Assalamu’alaikum.


Bagaimana keadaan teman-teman semua muda-mudahan selalu dalam keadaan sehat dan selalu diberi keselamatan oleh yang mahakuasa, bagi teman-teman yang kurang sehat semoga cepat sembuh supaya bisa mengerjakan pekerjaan sehari-hari seperti sedia kala amin.

Pada kali ini kita akan membahas tentang cara membuat cara membuat absensi sidik jari menggunakan arduino. untuk tidak banyak basa basi lagi mari kita langsung saja.

Sistem Kerja Alat:

Absensi karyawan menggunakan sidik jari dengan sensor fingerprint. Data disimpan pada EEPROM internal Arduino, pada projek ini hanya 10 karyawan saja datanya yang di masukkan, tapi jika Anda ingin menambahkan lebih banyak juga bisa. Selanjutnya RTC digunakan untuk mengetahui tanggal absensinya. Untuk melihat daftar absensinya
menggunakan monitor serial (bawaan software Sketch Arduino).

Kebutuhan Hardware :
  • Arduino UNO Board
  • Sensor Fingerprint FPM10
  • Modul RTC DS1307
  • Buzzer
  • LCD 2x16
  • Power Supply 7-9 Vdc
Schematics

Screenshot (578).png

Koneksi Arduino UNO dengan modul RFID RC522 :
Pin ARDUINOPin modul Sensor Fingerprint
5.0 VV (kabel merah)
GNDG (kabel hitam)
2T (kabel hijau)
3R (kabel putih)
Koneksi Arduino UNO dengan LCD :
Pin ARDUINOPin modul Sensor Fingerprint
8RS
9E
10D4
11D5
12D6
13D7
Koneksi Arduino UNO dengan RTC
Pin ARDUINOPin RTC DS1307
A4SDA
A5SCL
5V5V
GNDGND
Koneksi Arduino UNO dengan Buzzer :
Pin ARDUINOBuzzer
7BUZZER +
GNDBUZZER -

Sebelum Kita masuh ke code program terlebih dahulu kita memasang beberapa library seperti <SoftwareSerial.h> <LiquidCrystal.h> <EEPROM.h> <Wire.h> <Adafruit_Fingerprint.h>. kalau library tersebut belum ada bisa di download pada link berikut https://www.adafruit.com/

Source Code/Sketch :

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <Wire.h>
#define DS1307_ADDRESS 0x68 byte zero = 0x00;

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

byte second ,minute,hour, weekDay;
byte monthDay,month,year;

uint8_t id;
uint8_t getFingerprintEnroll();

// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire) SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup(){ pinMode(7, OUTPUT); digitalWrite(7, LOW); delay(500);

Wire.begin();
/*
// Seting RTC second=0; minute=50; hour=12; monthDay=15; month=10; year=16; setingRTC();

delay(100);
*/ Serial.begin(9600);

lcd.begin(16, 2);
lcd.clear();
lcd.print("Absensi karyawan");
lcd.setCursor(0,1); lcd.print(" dg sidik jari"); delay(2000);
lcd.clear();
lcd.print("Test Koneksi");

// set the data rate for the sensor serial port finger.begin(57600);

if (finger.verifyPassword()) { lcd.setCursor(0,1); lcd.print("OK !");
} else { lcd.setCursor(0,1); lcd.print("ERROR !");
while (1);
}
delay(2000);
}

//===================program utama void loop(){
// bacaRTC(); lcd.setCursor(0, 0); lcd.print("Absensi Karyawan"); lcd.setCursor(0, 1);
lcd.print(" Letakkan Jari "); getFingerprintIDez(); kirimSerial();
delay(50);
}

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_NOTFOUND){
lcd.clear();
lcd.print(" Akses"); lcd.setCursor(0,1); lcd.print(" Tidak Diterima"); digitalWrite(7, HIGH); delay(3000);
digitalWrite(7, LOW);
delay(100);
return p;
}

if (p != FINGERPRINT_OK) return -1;
// found a match! digitalWrite(7, HIGH); delay(500); digitalWrite(7, LOW); delay(50);

bacaRTC(); lcd.clear(); lcd.print("Karyawan "); lcd.print(finger.fingerID); lcd.setCursor(0,1); lcd.print(hour); lcd.print(":"); lcd.print(minute); lcd.print(":"); lcd.print(second); lcd.print(" ");

lcd.print(monthDay); lcd.print("/"); lcd.print(month); lcd.print(" ");

//-------------------simpan data id=finger.fingerID;
byte addr = (monthDay*10)+id;
EEPROM.write(addr, 0);
delay(4000);
lcd.clear();
return finger.fingerID;

}

/****************************************

  • peta penyimpanan di EEPROM
  • tanggal disimpan pada alamt 0

  • tgl | Alamat EEPROM karyawan
  •  | 1   2    3   4   5    6   7   8    9   10
    

  • 1 | 11 12 13 14 15 16 17 18 19 20
  • 2 | 21 22 23 24 25 26 27 28 29 30
  • 3 | 31 32 33 34 35 36 37 38 39 40
  • 30 | 311 312 313 314 315 316 317 318 319 320

  • Rumus Penyimpanan EEPROM=
  • alamatSimpan = (tgl * 10)+id
  • kode absensi:
    • 0 = Hadir
    • 255 = Alpha
      */

//---------------------------RTC Area byte decToBcd(byte val){
return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {
return ( (val/16*10) + (val%16) );
}

void bacaRTC(){ Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero);
Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0b111111); weekDay = bcdToDec(Wire.read()); monthDay = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());

}

void setingRTC(){ Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); //stop RTC Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(weekDay)); Wire.write(decToBcd(monthDay)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(zero); //start
Wire.endTransmission();
}

void kirimSerial(){ if(Serial.available()){ char str; str=Serial.read();
if (str=='R'){

/*


  • tgl | Absensi karyawan
  •  | 1  2  3   4   5  6   7   8  9  10
    

  • 1 | H H - - H H H H H H
  • 2 | H H H H - H H H H H
  • 3 |
  • 30 |

  • H = HADIR
    • = ALPHA
      */

for(byte i=0; i<60;i++){ Serial.print('-');
}
Serial.println('-');

Serial.println(" tgl | Absensi Karyawan"); Serial.print (" | ");

for(byte i=1; i<11;i++){ Serial.print(i);
Serial.print(" ");
}
Serial.println(" ");

for(byte i=0; i<60;i++){ Serial.print('-');
}
Serial.println('-');

byte value; byte address; byte j=0;
String absensi="";
for(byte tgl=1; tgl<31; tgl++){ Serial.print(tgl);
Serial.print(" |");
j=tgl*10;
for(byte i=1; i<11; i++){
address=i+j;
value = EEPROM.read(address);
if (value==0) absensi="H";
else absensi="-";
Serial.print(" "+absensi+" ");
}
Serial.println(" ");
}
str=' ';
}
else if(str=='D'){ Serial.println("Hapus Data"); for(word i=0; i<310; i++){ EEPROM.write(i, 255); Serial.println(".");
delay(5);
}
Serial.println("Hapus Data Sukses!");
}
}
}

Jalannya Alat :
1. Sebelum digunakan terlebih dahulu Anda daftarkan 10 sidik jari pada sensor fingerprint menggunakan program enroll Anda bisa lihat pada proyek interfacing Arduino Sensor Fingerprint atau proyek Simpan Sidik Jari Tampilan LCD.
2. Tampilan pertama pada LCD :

Absensi karyawan dg sidik jari

3. Selanjutnya tes koneksi antara sensor Fingerprint dengan Arduino, jika sukses maka tampilanya seperti ini:

Test Koneksi
OK !

4. Tampilan normal LCD menampilkan tulisan:

Absensi Karyawan
Letakkan Jari

5. Letakan jari pada sensor fingerprint, jika sidik jari sudah terdaftar maka tampilan pada

LCD seperti ini:

Karyawan 1
12:30:55 15/10

Pada baris pertama menampilkan data karyawan, sedangkan baris ke-2 menampilkan jam dan tanggal.

6. Selanjutnya tampilan LCD kembali ke tampilan Normal.
7. Jika ingin melihat daftar karyawan, buka dulu Serial Monitor dg baud rate : 9600 + Carriage return.
8. Ketik R kemaudian kirim, sehingga menampilkan data absen. H menunjukkan kehadiran sedangkan minus (-) menunjukkan aplha.

Nah itulah cara membuat absensi sidik jari menggunakan arduino, mungkin sekian dulu artikel kaliini semoga bermanfaat untuk kita semua, saya akhiri dengan salam teknologi dan wassalam.

Ingin Lebuh Banyak tau dan membaca topik menarik lainnya bisa klik pada bagian daftar isi atau klik pada tombol berikut.

**Terimasih telah berkunjung semoga dapat menambah wawasan kita bersama, untuk dukungan teman-teman bisa berdonasi pada link berikut (Klik Dini) Sebanyak apapun donasi dari teman-teman itu sangat berarti bagi kami dan juga kalau ada dari teman-teman yang ingin mengajukan pertanyaan atau request tema seputar teknologi bisa langsung saja tulis pada kolom pesan di link donasi yang sudah ter sedia.**

Latest


EmoticonEmoticon