Project Ong Koon Seng Final Report-Signed Pro LAXMAN
Project Ong Koon Seng Final Report-Signed Pro LAXMAN
BABASAHEBAMBEDKARMARATHWADAUNIVERSITY,
CHH.SAMBHAJINAGAR
PracticalWorkReporton
BY
UNDERTHE GUIDENCEOF
Dr.K.K.Shinde
Submitted To
DEPARTMENT OFCOMPUTERSCIENCE
MORESHWAR ARTS, SCIENCE AND COMMERCE
COLLEGE,BHOKARDAN
2023-2024
1
DR. BABASAHEB AMBEDKAR MARATHWADA UNIVERSITY,
CHH. SAMBHAJINAGAR.
MORESHWAR ARTS COMM & SCIENCE COLLOGE
BHOKARDAN DIST JALNA
DEPARTMENT OF COMPUTER SCIENCE
CERTIFICATE
This is to certify that Mr. Shingade Laxman Shamrao have successfully
completed the practical Work and submitted the Report entitled “ Digital
Image Processing ” during the academic year 2023-2024, under the guidance
of Dr. K. K. Shindeas partial fulfillment of Master Degree in Computer
Science.
2
TABLE OF CONTENTS
ABSTRACT… .................................................................................................... iv
ACKNOWLEDGEMENTS ...................................................................................v
BIOMETRIC SYSTEMS...................................................................... 4
CHAPTER 3 MEHTODOLOGY
PROJECT ACTIVITIES..................................................................... 10
iii
GANTT CHART… ............................................................................. 36
CHAPTER 4 RESULT AND DISCUSSION
CONCLUSION… ................................................................................. 44
DSICUSSION ...................................................................................... 45
REFERENCES ..................................................................................................... 46
APPENDICES ....................................................................................................... 48
iv
v
vi
CHAPTER 1
PROJECT BACKGROUND
Background Study
Problem Statement
The conventional method of recording a student attendance is by paper
which is simple but it has its own problems. This method itself has been proven
to be easily manipulated by the student simple by asking their partner or friend
to sign for them even though they are not there. This method is also prone to
the loss of data since the attendance paper can be misplaced or missing before
the attendance can be store digitally. Therefore there is a need for a better
method to take attendance of students and save the record digitally.
Objectives
1
Build a prototype of the embedded system implementing the
biometric fingerprint system for time and attendance which can
fulfil the following requirement which is able to take and
attendance accordingly, save the recorded data and easy to be
used by student and lecturer
Scope of Study
Once the design of the prototype is done, there is a need to build the
prototype which can be done in the lab. After the prototype is done there will
be need to program the hardware and test the prototype to see will it fully
function according to the criteria given. Testing of the prototype will be done
until the prototype meets the minimum requirement of the project.
2
CHAPTER 2
LITERATURE REVIEW
Fingerprint Identification
3
Biometric System
4
In both identification mode and verification mode there are a few stages
for a biometric system to match and enrol an individual into the system which
can be seen in the Figure 3 below [9]:
5
distinctiveness, permanence and collectability [10]. There are a few biometric
data that fit the characteristics mentioned and one of them is fingerprints of a
person. For example everyone has fingerprints which fit the universality
characteristic. Meanwhile for distinctiveness a person fingerprint differ for one
to another. Another than that fingerprint does not change a lot over a period of
time which fits the characteristics of permanence and lastly a fingerprint is
collectability because it can be measured.
In a biometric system there are four main component that make the
whole system complete [4, 5]. These components are the sensor, feature
extraction, feature matching and system database. As the name the suggest the
sensor is the hardware used to capture the biometric data, feature extraction is
captures the distinctive feature of the biometric data, feature matching compare
the features with the one in the database and the system database is the one that
store any capture biometric data in the system. Therefore to make a complete
biometric system these four components are needed.
6
signature verification and voice recognition [6]. Even though there a lot of
different biometric that can be obtained from a person the fingerprint
identification is the most common and reliable comparing to the rest which can
be slightly impractical to be used as commercialize system.
There are many variation fingerprint sensor in the market each with
its own advantage over the others[11]. The effectiveness of each sensor varies
on the situation or system to be used on. There are also a few factors that can
affect the fingerprint sensor which are changes in the environment, usage of
the sensor, a change in the biometric data which is temporal and changes in the
sensor itself [15].
7
Finite State Machine Programming
8
CHAPTER 3
METHODOLOGY
Research Methodology
START
RESEARCH
LITERATURE
REVIEW
PROTOTYPE
DESIGNING
PROTOTYPE
YES TESTING
REDESIGN?
NO
RESULTS
CONCLUSION
END
Figure 5: Research Methodology
Flowchart
9
Project Activities
10
Prototype Design
Hardware design
After researching all the possible design of the prototype during the
research and literature review stage of the project, the selection of the hardware
have been made. The embedded system that will be used to create the base of
the system is the Arduino embedded system. The Arduino board that will be
used is the Arduino Mega 2560 as shown in the picture below.
The main reason of the selection of this board is because of the number
of I/O available on the board itself is sufficient for the usage of this system and
also the firmware of the board is based on C programming style. Moreover the
board can interface with many kind of third party modules. The schematics of
the Arduino board is as follows which includes the overall connections of the
ATmega 2560 microcontroller with the I/O ports and the necessary
connections in Figure 6 and Figure 7.
Form the schematics most of the connection used are connected to the
I/O ports which can be used for other modules or devices to communicate with
the microcontroller of the Arduino board. There are also specific
communication ports which are shown in the schematics which are the RS232
communication ports and ISP communication for the communication with the
fingerprint reader module and SD card read module respectively.
11
Figure 8: The schematics of the ATmega 2560 microcontroller with I/O ports and
RS232 ports
Figure 9: The schematics of the ISP communication with the ATmega 2560
microcontroller
12
The following hardware is the fingerprint sensor module. In this project,
the Fingerprint Reader Integrated SM630 module is selected. This is because
it is an optical fingerprint reader which is ideal to be used in this system due to
the situation it will be used compare to a capacitive type of reader which
degrade after multiple times of usage and need to be maintain constantly. Other
than that the Fingerprint Reader Integrated SM630 has its own high
performance DSP processor and Flash Memory to create and its own database
to store up 768 fingerprint template in the module. This module also has many
functions which include registering fingerprint, deletion of fingerprint,
fingerprint search, fingerprint upload and download.
The next hardware is the data storage hardware which the Ethernet
Shield by Cytron. The main reason this choice is because the Ethernet Shield
has a SD card module and can be easily integrate with the Arduino Mega 2560
13
board. Therefore the data storage for the system is a SD card which can be plug
out and in of the system easily. This SD card will also serve as a data storage
to store the ID of student and be used to compare to the fingerprint of the
student that has been registered. All the data will be stored in the SD card
in .CSV file or Comma Separated Value file which can be accessed by Excel
program.
The following part will be the display which will be a LCD display of
16x2, the time module which is the RTC module, the input of the system which
will be the Keypad and also the power system of the system due insufficient
power if using only the board output power.
The power system of the board will be using an external power source
to power up the whole system. In normal usage the Arduino board should be
able to perform normally but after connecting the Arduino board to multiple
modules the power on the board is unable to support it causing the insufficient
power to the module therefore creating problem for the module to run
efficiently.
14
Another hardware that is been used in the prototype is the keypad
module. The keypad will be used to keying the ID of the student during
registration of the student and also will be used to confirm the input keyed in
the system is the right one. Other than that the keypad will also be used to
keying the password of the system to delete the attendance data and also the
fingerprint data of the system. The keypad module has a circuit to connect to
the system which is connected to the 1KΩ resistors. The input pin and output
pin of the keypad is connected to the analogue pins of the Arduino board so
that during the press of the button the system can avoid noise signal. Below is
the picture of the keypad module:
From the hardware available the overall design should be around 9.8cm
width, 17.7 cm long and with a height of 5.6cm this would be including the
casing design of the prototype and also the keypad module attached to it. The
dimension whole system should be around comparison size of a big tissue box
which can be carried around to classes.
15
Firmware design
c
uc S1 S2 uc
c c
S3
uc
16
Below is the overall state machine diagram of the system that has been
implemented:
DOWN IDLE
STATE
DELETE
ATTEND ADD
STUDENT
SYSTEM STUDENT
RECORD
UP/DOWN UP/DOWN
COMFIRM
COMFIRM
DELETE
PLACE PLACE THE
FINGER FINGER ATTEND
YES YES
REPEAT REPEAT
PROCESS PROCESS
MENU/IDLE
STATE
17
Other than that, there are other state machine in the system which could
not place in the previous diagram will be placed in the diagram below:
DELETE
STUDENT
UP/DOWN
RECORD
EMPTY SET
DATABASE PASSWORD
UP/DOWN
COMFIRM
DELETE REPLACE
FINGERPRINT PASSWORD
RECORD
COMPLETE COMPLETE
PROCESS PROCESS
MENU/IDLE
STATE
18
As we can see from the state machine there are actually to five mode
which is the Attend System mode, Add Student mode, Delete Student
Attendance mode, Empty Database mode and Set Password mode. All this
mode can be accessed by using the UP/DOWN buttons of the LCD keypads
and enter the mode in the system by using the SELECT button on the keypads
also.
This diagram is the basic design for the whole firmware of the system
structure. Most of the firmware will follow this diagram with some
modification on the firmware due to complication and how the module of the
system interact with the system. Overall the design of the system shown above
should be working perfectly with the system. The state diagram shown is to
give a general explanation of how the prototype works.
There are also state machine diagram on how the modules of the system
interact with the system but that will be not be shown in this paper due to the
fact that the modules interaction are usually based on protocol rather that
design how the module works. The protocol of the module will be explain in
the next part of the paper on the coding function of the system.
19
Coding Function
In the firmware there will be a few function to run the whole system.
One of the function is function to communicate between the system and the
fingerprint reader module. This function will need the input of the command
code and number of fingerprint to run. In this function it is have the command
of registration of fingerprint, deleting of fingerprint, finding the fingerprint and
also deleting the database of the fingerprint.
switch(cmd){
default: packet_content=3;break;}
byte send_cmd[packet_content+5];
for(byte i=0;i<sizeof(send_cmd);i++){
checksum+=send_cmd[i];}
if(packet_content>=3){
if(cmd==SEARCH_FINGER){
send_cmd[packet_content+5-1]=checksum;
Serial.write(send_cmd,sizeof(send_cmd)); delay(1); }
There is also another function for the system to receive the respond
back from the module and produce a proper output according to the respond.
The pattern of the data packet of the receive command is the same as the send
command. In the receiving part of the communication data packet of the
module will send at least two communication packet which is whether the
21
command of the communication packet is received correct and the operation
of the command is successful. From the communication packet we can
determine the type of data send and determine the data we retrieve from the
module. This function will check the data packet send by the fingerprint
module and compare it to check if the respond is a failed or successfully
operation.
The next function that will be explained here is the SD card module in
the Ethernet Shield. The SD card module is connected to the main board of the
system through SPI (Serial Peripheral Interface) communication protocol
which is connected the hardware connection of ICSP (In-Circuit Serial
Programmer).
The communication SPI protocol there are four logic signals which are
SCLK (Serial Clock), MOSI (Master Output, Slave Input), MISO (Master
Input, Slave Output) and SS (Slave Select). This communication protocol
communicate in either master/slave mode where the master will initiates the
data frame of the communication. The master device can communicate with
multiple slave devices by choosing which slave device to communicate
through the SS signal pin. The SPI communication protocol is mainly handle
by using the “SDFat.h” library which is available in open source.
By using the library mentioned before there are a few function that can
be created to be used in the prototype to save the data. The function are
Sd_check(), Write_storage(), Read_storage and Empty_data(). The first
function which the Sd_check() function is a function to initialise the setting of
the SPI communication and also check the present of the SD card on the
module. If there is no SD card on the module the function will display an error
on the LCD display. The coding of the function is as follows:
boolean Sd_check(){
if (!SdCard_status) {
msg("SD Error");}}
22
From the function above, the first line of the function it is to initialise
the SD card module. From the line there is a chipSelect variable which is the
ICSP pin for SS logic signal for this prototype the value of the chipSelect is the
pin 53 in Arduino Mega 2560. The second line of the state is to get the SD card
status in the module. This will get a value which can be used to compare.
The next function is the Write_storage() function which will write the
data of the student we want to save in a .CSV file. As mentioned before the file
can be open by using Excel program. The basic structure of the write function
in the firmware is as shown below:
if (!sdout){
sdout.close();
menu();}
sdout.close();}
From the function the first line is to initialise the function to write
in .CSV file. The variable fileName1 is the name of the file that will be write
into for example like “attend.csv”. the ios::out statement is to create a file with
that name if the file does not exist. Meanwhile, ios::app will add the data to the
file rather than rewrite the whole file if the file existed already and the data is
available. The next statement is writing the data into the file by using sdout
instruction. The pstr(“,”) instruction will separate the data we put into the file
by column. In the function above the ID will be in the first column and the
Storage data in the second column. The pstr(“\n”) like in the C programming
which is end line statement. The following line of instruction is the checking
statement whether the writing process is done correctly or is there and error.
After creating the file and saving the data and record in the SD card,
the system also have to read the recorded data to get certain value like which
ID match with the fingerprint template in the fingerprint reader since the ID of
the student are keyed in the system and the number that identify which
fingerprint it belong is based on the position where the fingerprint template is
saved. Therefore, the function Read_storage() is created to read the data and
23
obtain the value to be used by the system. Below is the overall structure of how
the function should look like.
int Read_storage(){
int id =0;
char c1,c2;
ifstream sdin(fileName1);
if (!sdin.is_open()){
msg("Error Storage");
menu();}}
if (!sdin.eof()){
msg("Error Read");
menu();}}
For the next function of the SD card is the clear data function which is
Empty_data() function. This is the same as the write function but only writing
zero value on the data and overwrite the file by setting the instruction at the
ofstream sdout(fileName1,ios::out). That should be the only different in the
emptying data. That is all the function of the SD card to write all the data in
a .CSV file.
24
The RTC (Real Time Clock) Module
The module uses 2 pin to communicate with the system which is the
SDA (data line) and the SCL (clock line) pin. To communicate with the RTC
module which is a I2C/TWI device the library of Wire.h is used which has the
setting of the communication for the RTC module. The library uses 7 bit
addresses throughout to determine if it’s being written or read from and get the
value.
The next setting that is needed to get the data form the RTC module
is to include the library of is the DS1307RTC.h. in this library we are able to
set the value that we obtain from the RTC module and convert it to the proper
data and time. We get the variable of the time in tmElements_t form this
variable. The value of day, month, year, hour, minute and second by using the
instruction tm.Day or tm.Month. We read the RTC module whether is working
or not by using the instruction of RTC.read(tm) this is needed for the previous
instruction tm.Day and tm.Month.
The RTC module is read in the firmware is in the function. When the
function is called the data of the time and date is taken from the RTC module
the instances where the RTC function is called is during the menu state of the
program and also during the attendance reading of the student to get the
accurate time of the student that have their attendance taken during that time.
To keep the data of time during that period of time the data of the time is saved
in a few variable then stored in the SD card.
25
The following is the function of the RTC module to get the time:
void time()
if(RTC.read(tm)){
makeTime(tm);
Day = tm.Day;
Month = tm.Month;
Year = tmYearToY2k(tm.Year);
Hour = tm.Hour;
Min = tm.Minute;
lcd.setCursor(0,1);
lcd.print(tm.Day);
lcd.print('/');
lcd.print(tm.Month);
lcd.print('/');
lcd.print(tmYearToY2k(tm.Year));
lcd.setCursor(10,1);
lcd.print(tm.Hour);
lcd.print(':');
lcd.print(tm.Minute);}
else
if(RTC.chipPresent()){
msg("RTC stopped");}
else{
msg("RTC error");}
As we can see in the function the firmware check whether the RTC
module is present or not before starting it function to read the time. If there is
an error during the reading of the RTC module the function will display the
error accordingly if the RTC module is not connected properly it will display
“RTC error” but if the display is “RTC stopped” that means the is a problem
communicating with the RTC module.
26
The Keypad Module
The keypad check which button that is been pressed by checking the
row and activating the column one by one. When one column is activated we
check the each row if the signal is connected to the row that mean the button
on that is pressed if not it goes to the next column to check it. If none of the
row and column is connected it will repeat the cycle. This can be seen in the
picture below:
All this function is to help the main part of the firmware to be less space
taking and also reduced the amount of line in the firmware for the same process.
The coding for any function which is not shown in this part of the paper will
be placed in the Appendices.
27
Casing Design
The lastly is the design of the casing for the prototype to make it easy
to store and carry around. The design of the casing by using Perspex and using
PCB stand to make as support. The Perspex design is based on a top and bottom
platform which a rectangular shape plate of 177mm × 98mm x 3mm. The
measurement is for both top and bottom plate. The drawing of the plate is done
by Autocad program and the Perspex cutting is done in the lab by the technician
based on the drawing. Below is the drawing ot the top and bottom plate:
28
By using 4 × of 30mm and 4 × 20 mm of the PCB stand we can create
the complete casing. The final result of the casing is as follows:
From this the system is about the size of 177mm × 98mm × 56mm
which is about the size of a small tissue box. This size should be easy for the
user to carry around and be used in a classroom. The casing is also to allow the
easy modification and programming if needed.
29
Prototype Testing
Hardware
The following will the testing of each part of the hardware individually
to test whether the hardware obtained is working accordingly. The first
hardware to test is the LCD display. This is because it is the basic function of
the system and it will be used to display result of the other hardware testing
later on. Here are the procedure of the LCD testing.
The next part of the testing is the RTC module which will act the internal
clock of the system. In this project, we only use the four pin in the RTC module
only which are the VCC, GND, SDA and SLA pin. This four pin are important
to activate, write and read the data in the RTC module to get the time. In this
test, the LCD Display is used to display the time that has been obtained from
the RTC module.
1. Connect the RTC module pin of VCC, GND, SDA and SLA to the Arduino
board
2. Check whether the LED on the RTC module light up
3. Stack the LCD Keypad Shield to the Arduino Board
4. Program and run the program to set the time in the RTC module
5. Program and run another program to display the time of the LCD display
6. Observe the result.
30
of the module. For example, if we send a packet of data of 0x4D + 0x58 + 0x10
+ 0x01 +0x46 + 0xFC, the respond should be 0x4D + 0x58 + 0x30 + 0x01 +
0x01 + 0xD7. The command packet we have send is to empty the database of
the fingerprint reader module. In the Serial Monitor the value they show is in
decimal therefore there is a need to change the value of the respond received
form the Serial Monitor to hex value. The communication of the module uses
a baud rate of 57600 bps. In the testing of the fingerprint module we will be
using a sub program in the Arduino IDE to check the respond of the fingerprint
module.
1. Connected the fingerprint reader module to the Arduino board VCC, GND,
RX, and TX pins.
2. Program to send “Empty Database” command and run the program in the
board.
3. Open the Serial Monitor.
4. Set the baud rate to 57600 bps of the Serial Monitor.
5. Reset the board to send the command packet again.
6. Check the respond of the packet in the Serial Monitor.
The following hardware to test is the SD card reader module or for this
project is the Ethernet Shield. In this test, the usage of the example given in the
Arduino IDE is used to test the functionality of the SD card reader in the
Ethernet Shield. The example used will be the “Datalogger” to test the SD card
reader. In this program will check the SD card reader and also write a .txt file
to the SD card. The testing procedure is as follows:
31
The last hardware to test is the keypad module for this prototype. In this
test, we check the functionality of the keypad by pressing the button and check
the whether the button pressed is correct by displaying the result in the serial
monitor of the Arduino. The program testing the keypad is loaded to the
Arduino main board and the keypad module is connected to the main board.
The testing procedure is as follows:
This are all the main part of the hardware that is need to be tested to
ensure the system is running properly before the firmware design of the
biometric fingerprint system is tested or implemented to the system.
Performance testing
32
Fingerprint Module Integrated SM630 Finding Fingerprint Accuracy Test
The next performance test is to check the data record in the SD card
based on the attendance we have taken. This file will record all the
attendance in different time when a student record his attendance. In this
test we have already recorded different fingerprint with different ID’s. The
attendance of the student is recorded at different time. The process of the
test is as follows:
33
The next test is a live test on a situation where a user used the system
to register himself or herself and also try the system at the same time. In
this test we try about 40 people to test the reliability of the system. Like the
pervious test all the data of the attendance and registered student are
recorded. This live test is done by different samples and also during
different time to test how the system perform in a real situation.
This is all the performance testing of the system all the result of the
testing can be seen in the result and discussion part of this paper.
34
Key Milestones
The following figure will explain the key milestones of this project based on
the submission dates given by the FYP coordinators:
35
Gantt Chart
NO ACTIVITIES WEEK
1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8
1 TITLE SELECTION
2 PRELIMINARY
RESEARCH AND
LITERATURE
REVIEW
3 PRELIMINARY
DESIGN OF
PROTOTYPE
4 HARDWARE
TESTING
5 BUILDING
PROTOTYPE
6 FIRMWARE
DESIGN
7 FIRMWARE
TESTING AND
TROUBLESHOOTIN
G
8 COMPLETION OF
FIRMWARE AND
PROTOTYPE
9 REPORT/THESIS
36
CHAPTER 4
In the early stage of the project there are some hardware testing that
have been done. From the test we managed to test the functionality of all the
hardware and all of the hardware are in working condition.
The RTC Module managed to display the time of the clock according
to the time of the computer used. The result is shown below:
37
Fingerprint Reader Module Result
The testing of the fingerprint module show that the fingerprint module
is working is properly without any error.
Figure 23: The Result of the Respond of the Fingerprint Reader Module
As mentioned before the code we send is in hex file while the output
on the Serial Monitor is in decimal. Therefore there is a need to convert this
output shown into hex. In this result the data we send is the Empty Database
code which is 0x4D + 0x58 + 0x10 + 0x01 + 0x46 + 0xFC. Therefore the we
received should be as follows: 0x4D + 0x58 + 0x30 + 0x01 + 0x01 + 0xD7
and 0x4D + 0x58 + 0x30 + 0x02 + 0x46 + 0x31 + 0x4E. this can be seen in
the picture above.
The SD card reader managed to create a .txt file in the SD card and be
used in the computer. The result of the test is as follows:
Figure 24: The Serial Monitor result in writing a txt file in the SD card
38
Figure 25: Screenshot on the .txt file created in the SD card and the content of the .txt
file
Keypad Module Result
In the test the keypad is working perfectly and displaying all the correct
numbers and char according to the button that is pressed. The result of the test
is as follows:
From the figure above we can see that all the buttons in the Serial
Monitor window is shown which shows that the keypad is working. The table
in the next page show the tabulation of the result.
39
Table 3: The Tabulation of Keypad Module
40
Fingerprint Module Integrated SM630 Finding Fingerprint
Accuracy Test
Below is the test result of the accuracy of the fingerprint module. For
the result obtained we can conclude that the fingerprint has an accuracy of
100% in identifying the fingerprint.
Table 5: The Result of the Test of Accuracy of the SM630 Fingerprint Reader
Module
41
The Live Testing of System
The result of this test show that the prototype can be used in a practical
situation to register and take attendance of the student. The 40 sample used in
this test show to have manage to record their fingerprint in the system and be
used to take attendance and record it in the SD card. The result of the recorded
attendance is shown below:
42
Discussion
Form the result we obtain from the hardware testing we can conclude
that most of the hardware that is being used in the prototype are working
accordingly when tested individually. This mean when the prototype is
combine and some of the module are not working as they should be the issue
is not the module itself but on the connection or the wiring of the module to
the main board. Other than that, it could mean that there is not enough power
or current to make the module work or the programming in the system need to
be adjusted to allow the module to work properly. This testing of hardware
individually allows troubleshooting the system easily and allow to pinpoint the
problem when the prototype does not work as it is supposed to.
The last testing which is the live test of the system shows that the
system is working properly in a real live situation. The system manage to detect
the fingerprint even though the fingerprint sample is taken from the side or
from any position as long as the reader can read the whole fingerprint. There
is one time where the reader can read the sample due to a smudge on the
fingerprint reader but this is solved easily by cleaning the reader and also the
sample fingerprint.
43
CHAPTER 5
Conclusion
The result of the tests shows that all the hardware of the prototype and
the performance of the fingerprint reader module is working perfectly in the
system and optimally. This mean that the system if combined together should
be able to work given the proper firmware design and the circuit design of the
whole system.
In the last test of the project, the prototype is used in a real live situation
by using 40 sample to test the prototype. The result of the test shows that the
prototype is working properly in the situation given even though there is a
instance where the prototype produce an error due to the sample fingerprint is
smudge and unable to read the fingerprint properly.
44
Recommendation
There are still some minor problem that can be found in the prototype
which is the power consumption of the prototype is too high to be used by a
battery power supply due to the hardware used. The prototype have to use at
least a power supply of 12V and 2A to be fully operational without any problem.
This can be solve by using different modules in the prototype which takes less
power for example the SD card module.
Other than that, the prototype used a different ways of firmware design
to allow the prototype to function much more efficiently and take less time for
attendance. For example, the attendance of the student is taken when the
fingerprint is detected rather than entering a mode to detect the student
attendance.
45
References
46
Control, Automation, Robotics and Vision, 2006. ICARCV '06. 9th
International Conference on, 2006, pp. 1-6.
[16] F. Alonso-Fernandez, J. Fierrez, J. Ortega-Garcia, J. Gonzalez-Rodriguez, H.
Fronthaler, K. Kollreider, et al., "A Comparative Study of Fingerprint Image-
Quality Estimation Methods," Information Forensics and Security, IEEE
Transactions on, vol. 2, pp. 734-743, 2007.
[17] K. Gruttner and W. Nebel, "Modelling Program-State Machines in
SystemC™," in Specification, Verification and Design Languages,
2008. FDL 2008. Forum on, 2008, pp. 7-12.
[18] C. Angelov, K. Xu, G. Yu, and K. Sierszecki, "Reconfigurable State Machine
Components for Embedded Applications," in Software Engineering and
Advanced Applications, 2008. SEAA '08. 34th Euromicro Conference, 2008,
pp. 51-58.
47
APPENDICES
Coding Functions
while(!end_flag){
int packet_length = 9;
byte resp_temp[packet_length];
48
while (Serial.available()==0) {
msg("Processing"); }
resp_temp[j]=Serial.read();
byte response[packet_length];
for(byte j=0;j<packet_length;j++) {
response[j]=resp_temp[j]; }
switch(resp_temp[5]) {
case OP_SUCCESS:
if (cmd == SEARCH_FINGER) {
msg("Finger Search"); }
msg("Finger Added");
addfp_count++; }
msg("Data empty");
end_flag = true;
success = true; }
break;
case PROCESS_FAILED:
msg("Process fail");
end_flag = true;
break;
case FP_FOUND:
msg("Finger Found");
student_id_S = response[6]*256+response[7];
end_flag = true;
success = true;
break;
case FP_UNFOUND:
msg("Finger Miss");
end_flag = true;
break; }
if (cmd==byte(ADD_FINGER)&&addfp_count>1) {
success = true;
end_flag = true; } }
Serial.end();
return success; }
49