Fingerprint Based Biometric Attendance System using Arduino
Fingerprint Attendance System
Project using Arduino
Attendance
systems are commonly used systems to mark the presence in offices and schools. From manually marking the attendance in
attendance registers to using high-tech
applications and biometric systems, these systems have improved
significantly. In our previous projects, we have covered
few other electronic attendance system projects using RFID and AVR
microcontroller, 8051 and raspberry Pi. In this project, we used fingerprint Module and Arduino to take
and keep attendance data and records. By
using fingerprint sensor, the system will become more secure for the users. Following sections explains technical details of
making a fingerprint based biometric attendance system using Arduino.
Required Components
- Arduino -1
- Finger print module -1
- Push Button - 4
- LEDs -1
- 1K Resistor -2
- 2.2K resistor -1
- Power
- Connecting wires
- Box
- Buzzer -1
- 16x2 LCD -1
- Bread Board -1
- RTC Module -1
Project Description:
In
this fingerprint attendance system circuit, we used Fingerprint
Sensor module to authenticate a true person or employee by taking
their finger input in the system. Here we are using 4 push buttons to enroll, Delete, UP/Down. ENROLL
and DEL key has triple features. ENROLL
key is used for enrollment of a new person into the system. So when the user wants to enroll new finger then
he/she need to press ENROLL key then LCD asks for the
ID, where user want to be store the finger print image. Now if at this time user does not want to proceed
further then he/she can press ENROLL key again to go back. This time ENROLL key behave as Back key, i.e. ENROLL
key has both enrollment and back function. Besides enroll key is also used to download attendance data over
serial monitor.
Similarly, DEL/OK key also has the same double function like when
user enrolls new finger, then he/she
need to select finger ID by using another two key namely UP and DOWN. Now user need to press DEL/OK key (this
time this key behave like OK) to
proceed with selected ID. And
Del key is used for reset or delete data from EEPROM of Arduino.
FingerPrint module:
Fingerprint
sensor module captures finger’s
print image and then converts it into the equivalent template and saves them
into its memory as per selected ID by Arduino. All the process is commanded by Arduino like taking
an image of finger’s print, convert it into
templates and storing as ID etc. You
can check some more projects using fingerprint module:
Here
we have added a Yellow LED which indicates that fingerprint module is ready to
take an image of the finger. A
buzzer is also used for various indications. Arduino is the main component of this system it is
responsible for control of the whole system.
Working of Fingerprint Based Attendance System
Working
of this fingerprint attendance system project is fairly simple. First of all, the user needs to enroll
fingerprints of the user with the help of push buttons. To do this, user need to press ENROLL key and then
LCD asks for entering ID for the fingerprint to save it in memory by ID name. So now user needs to enter ID by using UP/DOWN keys. After selecting ID, user needs to press OK key (DEL key). Now
LCD will ask to place finger over the fingerprint module. Now user needs to place his finger over finger
print module and then the module takes finger image. Now the LCD will say to remove finger from
fingerprint module, and again ask to place finger again. Now user needs to put his finger again and module
takes an image and convert it into templates and stores it by selected ID into
the finger print module’s memory. Now the user will be registered and he/she can feed attendance by putting their finger
over fingerprint module.By the same method, all the
users will be registered into the system.
Now if
the user wants to remove or delete any of the stored ID or fingerprint, then he/she need to press DEL key. Once delete key is pressed LCD will ask to
select ID that need to be deleted. Now
user needs to select ID and press OK key (same DEL key). Now
LCD will let you know that fingerprint has been deleted successfully.
How Attendance works in this Fingerprint Attendance System
Project:
Whenever
user place his finger over fingerprint module then fingerprint module
captures finger image, and search if any ID is associated with this fingerprint
in the system. If fingerprint ID is detected
then LCD will show Attendance registered and in the same time buzzer will beep
once and LED will turn off until the system is ready to take input again.
Along
with the fingerprint module, we have also used an RTC module for Time and date. Time and date are running continuously in the
system.
So Arduino take time and
date whenever a true user places his finger over fingerprint and save them in
the EEPROM at the allotted slot of memory.
Here
we have created 5 user space in this system for 30 days. By pressing the RESET button in Arduino and then
immediately enroll key will be responsible for downloading attendance data over
serial monitor from the Arduino EEPROM Memory.
Memory Management:
We
have 1023 byte memory in Arduino UNO out of which we have 1018 byte to store
data and we have taken 5 user attendance data for 30 days. And every attendance will record time and date so
this becomes 7-byte data.
So
total memory required is
5*30*7=1050 so here we need more
32 bytes
But if
we will use 4 users then we required
4*30*7=840
Here
we have done this project demonstration by taking 5 users memory. By this, we will not able to store 32 byte or 5
attendance records of the 5th user.
You
may try it by 4 users by changing some lines in code. I have made the comments in the code where
the changes are needed.
Circuit Diagram and Description for Fingerprint
Attendance System Project
The
circuit of this fingerprint based attendance system project, as
shown in the above diagram is quite simple. It has Arduino for controlling all the
process of the project, push button for enrolling, deleting, selecting IDs and
for attendance, a buzzer for alerting, LEDs for indication and LCD to instruct
user and showing the resultant messages.
As
shown in the circuit diagram, a push button is directly connected to pin A0(ENROL), A1(DEL), A2(UP), A3(DOWN) of
Arduino with respect to the ground And Yellow LED is connected at Digital pin
D7 of Arduino with respect to ground through a 1k resistor. Fingerprint module’s Rx and Tx directly connected at Serial pin D2
and D3 (Software Serial) of Arduino. 5v supply is used for powering finger print module taken from
Arduino board.
A buzzer is also connected at
pin A5.
A 16x2 LCD is configured
in 4-bit mode and its
RS, EN, D4, D5, D6, and D7 are directly connected at Digital pin D13, D12, D11,
D10,D9, and D8 of Arduino.
Code Explanation:
The fingerprint
attendance system code for arduino is given in the subsequent sections. Although the code is explained well with comments,
we are discussing here few important parts of the code. We used fingerprint library for interfacing
finger print module with Arduino board.
First
of all, we include the header file and defines input and output pin and define
the macro and declared variables. After
this, in setup function, we give direction to defined pin and initiate LCD and
finger print module
After
it, we have to write code for downloading attendance data.
void
setup()
{
delay(1000);
lcd.begin(16,2);
Serial.begin(9600);
pinMode(enroll, INPUT_PULLUP);
pinMode(up, INPUT_PULLUP);
pinMode(down, INPUT_PULLUP);
pinMode(del, INPUT_PULLUP);
pinMode(match, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
pinMode(indFinger, OUTPUT);
digitalWrite(buzzer, LOW);
if(digitalRead(enroll) == 0)
{
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer, LOW);
lcd.clear();
lcd.print("Please wait");
lcd.setCursor(0,1);
lcd.print("Downloding Data");
Afterit, we
have to write code for clearing attendance data from EEPROM.
if(digitalRead(del) == 0)
{
lcd.clear();
lcd.print("Please Wait");
lcd.setCursor(0,1);
lcd.print("Reseting.....");
for(int
i=1000;i<1005;i++)
EEPROM.write(i,0);
for(int
i=0;i<841;i++)
EEPROM.write(i, 0xff);
lcd.clear();
lcd.print("System Reset");
delay(1000);
}
After
it, we initiate finger print module, showing welcome message over LCD and also
initeiated RTC module.
After
it, in loop function, we have read RTC time and displayed it on LCD
void
loop()
{
now = rtc.now();
lcd.setCursor(0,0);
lcd.print("Time->");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Date->");
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
After
it, waiting for the finger print to take input and compare captured image ID
with stored IDs.
If amatch occurs then proceed
with next step.
And checking enroll del keys
as well
int result=getFingerprintIDez();
if(result>0)
{
digitalWrite(indFinger, LOW);
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
lcd.clear();
lcd.print("ID:");
lcd.print(result);
lcd.setCursor(0,1);
lcd.print("Please Wait....");
delay(1000);
attendance(result);
lcd.clear();
lcd.print("Attendance ");
lcd.setCursor(0,1);
lcd.print("Registed");
delay(1000);
digitalWrite(indFinger, HIGH);
return;
}
Given
void checkKeys() function
is used for checking Enroll or DEL key is pressed or not and what to do if
pressed.
If the ENROL key pressed
the Enroll() function
is called and DEL key press then delete()function is called.
void delet() function
is used for entering ID to be deleted and calling uint8_t
deleteFingerprint(uint8_t id) function that will delete
finger from records.
Given
Function is used to taking finger print image and convert them into the
template and save as well by selected ID into the finger print module memory.
uint8_t
getFingerprintEnroll()
{
int p = -1;
lcd.clear();
lcd.print("finger ID:");
lcd.print(id);
lcd.setCursor(0,1);
lcd.print("Place Finger");
delay(2000);
while (p
!=
FINGERPRINT_OK)
{
p = finger.getImage();
..... .....
....... ....
Given
function is used for storing attendance time and date in the allotted slot of
EEPROM
void
attendance(int id)
{
int user=0,eepLoc=0;
if(id == 1)
{
eepLoc=0;
user=user1++;
}
else if(id
==
2)
{
eepLoc=210;
user=user2++;
}
else if(id
==
3)
.... ....
.....
Given
function is used to fetching data from EEPROM and send to serial monitor
void
download(int eepIndex)
{
if(EEPROM.read(eepIndex) != 0xff)
{
Serial.print("T->");
if(EEPROM.read(eepIndex)<10)
Serial.print('0');
Serial.print(EEPROM.read(eepIndex++));
Serial.print(':');
if(EEPROM.read(eepIndex)<10)
Serial.print('0');
Serial.print(EEPROM.read(eepIndex++));
.... ....
.....
Demo & Code
Fingerprint Based Biometric Attendance System using Arduino
Reviewed by XXX
on
สิงหาคม 27, 2560
Rating:
ไม่มีความคิดเห็น