Fingerprint_based_Electronic_Voting_Machine
Fingerprint_based_Electronic_Voting_Machine
ON
“Fingerprint based Electronic Voting
Machine”
Submitted in partial fulfillment of
B-Tech in Electronics and Communication Engineering
Session: 2021-2025
DEPARTMENT OF ELECTRONICS AND
COMMUNICATION ENGINEERING
GOVIND BALLABH PANT INSTITUTE OF
ENGINEERING AND TECHNOLOGY, PAURI
This is to certify that the project entitled “Fingerprint based Electronic Voting Machine”
which is being submitted by MAYANK PATHAK (2100130), SAHIL SINGH (2100137),
ANSH CHAUHAN (2100156) in partial fulfillment of the requirements for the award of
Bachelor of Technology degree in Electronics and Communication Engineering to the
Department of Electronics and Communication Engineering, G.B. Pant Institute of
Engineering and Technology, Pauri Garhwal, Uttarakhand is a Bonafide work carried out by
them under my guidance and supervision. To the best of my knowledge, the matter embodied
in the project has not been submitted for the award of any other degree or diploma.
This is certified that Project entitled " Fingerprint based Electronic Voting
Machine" which is submitted by MAYANK PATHAK (2100130), SAHIL SINGH
(2100137), ANSH CHAUHAN (2100156) of B-Tech 3rd year, Electronics and
Communication Engineering, GB Pant Institute of Engineering and
Technology, Pauri record of work carried out by them under guidance of Dr.
A. R. Verma (Asst Prof).
____________ ____________
Date: -_ _ _ _/ _ _ _ _ /_ _ _ _ _
ACKNOWLEDGEMENT
It is our proud privilege and duty to acknowledge the kind of help and guidance received from several
people in preparation of this project. It would not have been possible for us without their valuable
help, cooperation and guidance.
First and foremost, we wish to record our sincere gratitude to our mentor Dr. A.R. VERMA and to
the Head of the Department Prof. (Dr.) Rajesh Kumar and our respected Director of our Institute
Prof. (Dr.) V.N Kala for their constant support and encouragement in preparation of this report and
for making available library and laboratory facilities needed to prepare this report.
Secondly, we would like to thank our parents who patiently helped us as we went through our work
and helped to modify and eliminate some of the irrelevant or unnecessary stuffs. We would also like
to thank our friends who helped us to make our work more organized and well- stacked till the end.
At last, we would like to thank God for his grace upon us.
The system architecture comprises a fingerprint sensor module interfaced with an Arduino microcontroller,
which acts as the central processing unit and a 16x2 LCD screento make the project interactive and relaible.
Voters' fingerprints are scanned and matched against a pre-registered database to verify their identity. Upon
successful authentication, the voter is allowed to cast their vote through a user-friendly interface. The vote is
then securely recorded and stored, ensuring the integrity of the election process.
Hardware
Arduino hardware is a programmable circuit board called a microcontroller. One of the main reasons
for Arduino being so accessible and affordable across the globe is because all Arduino hardware is open
source. Arduino offers a range of boards, each of which caters to a different level of expertise and have
different use cases altogether
Features
• Input voltage - 7-12V
• ATmega328 microcontroller
• 14 Digital I/O Pins (6 PWM outputs)
• 6 Analog Inputs
• 32k Flash Memory
• 16MHz Clock Speed
Pin Description
• Arduino can be powered using a power jack or USB port. It can also be powered using an
external battery or AC to DC adaptor through pin Vin 5V, 3.3V: there is an inbuilt regulator on
the board.
• Reset: This helps to reset the micro controller.
• IOREF: This pin acts as a reference to the inputs given to the Arduino board.
• There are 6 pins A0-A5 through which analog inputs can be given to the Arduino board.
• There are 14 digital pins 0-13. Out of these (3, 5, 6, 9, 10, 11) are PWM pins (pulse width
modulation) from which analog output can be taken from the Arduino board.
• There is an inbuilt LED on pin 13.
• Rx, TX: Used to receive and transmit serial data.
• AREF: Acts as reference to the analog inputs.
• ICSP: (In Circuit Serial Programming) These pins enable the user to program the chips on the
circuit
Software
Arduino software is an IDE (integrated development environment) through which developers write and
upload the code to the microcontroller. The Arduino software is easy-to-use for beginners, yet flexible
enough for advanced users. It runs on Mac, Windows, and Linux
Arduino IDE comes with a C/C++ library called “Wiring” that makes many input/output operations
much easier. Arduino programs are written in C/C++, although users only need to define two functions
to make a runnable program:
• Setup () – a function run once at the start of a program which can initialize settings.
• Loop () – a function called repeatedly until the board powers off.
Specification
• Model: R307
• Sensor Type: Optical
• Fingerprint Capacity: Up to 1000 templates
• Image Resolution: 500 DPI
• Interface: UART (Universal Asynchronous Receiver-Transmitter)
• Operating Voltage: 3.6V - 6.0V (typically 5V)
• Working current: 100mA
• False Acceptance Rate (FAR): < 0.001%
• False Rejection Rate (FRR): < 0.1%
• Response Time: < 1 second
3.1 Planning
Planning is done in three steps:
1. Identification of the Problem
2. Research
3. Component and System Selection
3.1.2 Research
At this stage we planned the project’s resources and requirements, literature studies and schedule and
the way the project proceeds. All the materials were collected from journals, texts book and blogs
gathered from libraries and the Internet.
Within the data collection period we studied in a detail manner about the Arduino and Fingerprint
Sensor on the Internet and did research about the project. Once we were done with the literature study,
we tried to find out the accessibility the electronic components and other materials to be used in project
in the Indian market so that it does not hinder the progress in the future.
While planning, we did research about the project, which includes study about the electronic
components used such as Arduino and fingerprint module and values of various resistors attached to
it. The study is not just about the functions of various devices but also their working by attaching them
in independent circuits to understand their working effectively.
3.2 Implementation
The implementation of the project is done by designing the system by making a flowchart of the
process and then constructing it.
3.3 Testing
After mounting the components on breadboard, we need to test the continuity track of the circuit. This
part of the job is to ensure that the operation of this circuit will run smoothly. The tools related to the
checking part are multimeter and the continuity checking involves every circuit track and the points of
soldering. By using the multimeter, it will alert the failed continuity. The failed continuity will recover
with the solder again the lack of components related.
4. SOFTWARE
Arduino IDE:
The whole purpose of the "Arduino Platform" is to permit for simple and quick prototyping. having the
ability to simply attach a show and be ready to display messages thereon in a very matter of minutes,
rather than hours, simply surprisingly powerful and convenient once you have a concept in your head
and just need to visualize if it works. When you want additional management and are literally thinking
on changing your epitome into a true product, then yes, you would like to urge at heart into the
microcontroller and obtain eliminate all the surplus fat, trim the circuit to simply the clean bones,
optimize the code and build them simply graspable etc. For prototyping, the Arduino platform provides
you loads of pre-wiring and free code libraries that may allow you to consider testing your plan rather
than payment some time building supporting electronic equipment or writing plenty of low-level code.
Since the beginning of the Arduino, it's not a microcontroller any longer however a scheme and setting
that is ported to completely different architectures. The key benefits to my information are:
• Debugging: The Arduino atmosphere give best debugging atmosphere that is cross-platform
and is accepted by each member of the family.
• No technologist or selling flash by dirty ways that, with most of the businesses already providing
on-board computer program still compared to tons of microcontroller (8051) transfer may be
a click away.
• When you do not ought to take datasheet out and figure what the design is what area unit the
addresses of the microcontroller to write down straightforward functions like delay or
interrupt.
• Style of the board is extremely fastidiously crafted for beginners be it retard Switch or ISP
header to the polarity of power; the possibilities are steep that you simply would be blow it.
• Peripherals and standard Design: Arduino system has fantastic standard design, you'll merely add the already
designed shields to the board with none wire, simply plug and play with peripherals like motor defend,
Bluetooth defend, Wi-Fi and what not already created
• Libraries: plenty of libraries and IC's have already been designed for a similar that is crucial plenty of times.
The fingerprint identification algorithm has been translated into code and simulated using Arduino IDE.
Different programing techniques have been used during the simulation process of the fingerprint voting
system. This system is a functioning base system which means it is a combination of functions and all
these functions work together to perform the desired task.
Flowchart:
Program:
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
SoftwareSerial mySerial(2, 3);
const int buttonPin1 = 4;
const int buttonPin2 = 5;
const int buttonPin3 = 7;
const int buzzer = 8;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int id =0,previous_voter_id = 0, vote_taken = 0;
int result;
int party_1_count=0,party_2_count=0,party_3_count=0,party_4_count=0;
String winner_name = "";
void setup()
{
pinMode(buzzer, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
lcd.begin();
lcd.backlight();
Serial.begin(9600);
while (!Serial);
delay(100);
Serial.println("\n\nAdafruit finger detect test");
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...");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Smart Electronic");
lcd.setCursor(0,1);
lcd.print("Voting Machine");
delay(3000);
}
void loop()
{
vote_taken = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Please place your");
lcd.setCursor(0,1);
lcd.print("finger");
delay(100);
id = getFingerprintIDez();
if(id > 0)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Your Voter ID");
lcd.setCursor(0,1);
lcd.print(id);
delay(2000);
if(id==11)
{
if((party_3_count > party_2_count) && (party_3_count > party_1_count))
{
winner_name ="CSE wins";
}
else if((party_1_count > party_2_count) && (party_1_count > party_3_count))
{
winner_name = "ECE wins";
}
else if((party_2_count > party_1_count) && (party_2_count > party_3_count))
{
winner_name = "EE wins";
}
else
{
winner_name = "Need re-election";
}
Serial.println(result);
Serial.println("Election Result");
Serial.println(winner_name);
while(1);
}
if(previous_voter_id != id)
{
do
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Give Your vote");
lcd.setCursor(0,1);
lcd.print("Press Button");
delay(500);
previous_voter_id = id;
buttonState1 = digitalRead(buttonPin1);
delay(10);
buttonState2 = digitalRead(buttonPin2);
delay(10);
buttonState3 = digitalRead(buttonPin3);
delay(10);
if (buttonState1 == HIGH)
{
party_1_count = party_1_count +1;
vote_taken = 1;
}
else if(buttonState2 == HIGH)
{
party_2_count = party_2_count +1;
vote_taken = 1;
}
else if(buttonState3 == HIGH)
{
party_3_count = party_3_count +1;
vote_taken = 1;
}
else
{
vote_taken = 0;
}
if(vote_taken == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Thanks for your");
lcd.setCursor(0,1);
lcd.print("vote");
delay(200);
digitalWrite(buzzer, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000);
digitalWrite(buzzer, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
}while(vote_taken == 0);
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Duplicate Vote");
lcd.setCursor(0,1);
lcd.print("buzzer on");
delay(2000);
digitalWrite(buzzer, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000);
digitalWrite(buzzer, LOW); // turn the LED off by making the voltage LOW
delay(1000);
digitalWrite(buzzer, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000);
digitalWrite(buzzer, LOW); // turn the LED off by making the voltage LOW
delay(1000);
digitalWrite(buzzer, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000);
digitalWrite(buzzer, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
}
}
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;
}
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;
}
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;
}
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;
4.1 Output
After the successful implementation of the desired result the final code is burned into the Arduino board
and the output is analyzed.
The Output in LCD screen and Arduino Serial Monitor with the procedure is given as follow:
Experimental results:
The developed paradigm has been tested underneath totally different in operation conditions. The work
is completed within the sequence begin from the primary stage that is pre-processing. The results of
pre-processing stage are displayed on Serial Monitor. The system is programmed to show 3 statements
in making the database. initial it shows, R 307 module is connected properly or not. when inserting
identical finger twice on optical sensor of module it shows, each fingerprint is matched properly or not.
when matching the fingerprints serial monitor displayed, templates are kept or not. alternative
outcomes and directions associated with identification, verification and mechanical device are showed
on 16 x 2 liquid crystal display and serial monitor each.
Fig 4.1.1 Arduino Serial Monitor
When finger is placed on fingerprint module throughout the method of Identification and verification,
then serial monitor shows the name of example that is matched with placed finger and additionally
provides the arrogance level supported trivialities points matched. If user has not voted, then only vote
is allowed to the user otherwise not permissible for ballot. when the method of verification, ballot is to
be done and also the liquid crystal display is employed to point out that the vote given by the user goes
to that candidate when pressing the vote button (IR sensor).
Enrollment:
Verification is that the method to visualize whether or not the user is valid for vote or not. One to at
least one matching (1:1) is performed during this method . It also can monitor that elector has voted
once or a lot of. more than one vote by a similar candidate isn't allowed during this system. when
identification, initial it's checked that the user has voted or not. If user has not voted then solely vote is
allowed. during this method, what percentage item points area unit matched is additionally checked.
This shows the arrogance level of matching throughout verification.
5.1 Limitations
• The main issue with the current system is that if the ground and Vcc are connected then it allows
the user to give multiple votes.
• Fingerprint of low resolution (due to improper placement of fingers) makes the process slow
and frustrating
• Also, we haven’t yet created a database in which multiple finger IDs of the user can be taken. The
issue without this is that if by any means the user’s only registered finger is unable to use (for
e.g. He has a cut in that finger) at the time of voting he/she will not be able to vote.
[1] Mr. Kalash Srivastava, M.P.S Chawla “Fingerprint based Electronic Voting Machine with Inbuilt
Identification and Verification System (2018)”, journal of Advances in electronic devices, vol.3, no.3,
pp.3-13.
[2] A.M. Jagtap, Vishakha Kesara, Anagha speaker” Electronic Voting System using Biometrics,
Raspberry Pi and TFT module (2018)”, IEEE Xplore, vol-3, no-4, pp- 5386-9439 .
[3] Iftekhar Ahammad, Pradip Lal Biswas, jewel Chowdhury, boarder Rahim rishi, Sanjana surah and
Ashraful Isla, “Towards a secure and automated platform for fingerprint-based electronic voting
machine (2019)”, IEEE Xplore, vol.1, no.1, pp.34- 41.
[4] Rahil Rezwan, Huzaifa Ahmed, Samshu, Dabur Rahman,” Biometrically secured electronic voting
machine (2017)”, IEEE Region, vol.4, no.5, pp.21-23.
[5] Prabha, Trini, Deepika and Ciara,” A Survey on E-Voting System Arduino software (2016) “,
International Journal of Advanced Research in Electrical, vol.5, no.2, pp.36- 47.
[6] Vinaya Chandra, K Geetha Poornima Rajeshwari1, and K Krishna Prasad, “Arduino Based
Authenticated Voting Machine (AVM) using RFID and Fingerprint for the Student Elections”, Journal of
physics, vol 5, no-3, pp.12-16.
[7] A. Tirupathi Rao; N. Pratibha Ramaiah; V. Raghavendra Reddy; C. Krishna Mohan, “Nearest
Neighbor Minutia Quadruplets Based Fingerprint Matching with Reduced Time and Space Complexity”
IEEE 14th International Conference on Machine Learning and Applications (ICMLA), 9-11 Dec. 2015.
[8] Dibya Dahal, “Electronic Fingerprint Voting System”, Metropolis applied university, vol.6, no.7,
pp.289-445.
[9] Bhanupriya’s, Roil bonus, voting”, IEEE, vol.10, no.9, pp.143-159. Supriya’s, Kalaiselvi.V.K. G,
“Smart.
[10] Scott Onchocercid Wistron, “Security Analysis of India’s Electronic Voting Machines”, IEEE, vol-4,
no.8, pp.140-114.
[11] https://circuitdigest.com/microcontroller-projects/fingerprint-based-biometric-voting-
machine-arduino.
[12] https://github.com/ssr197/Fingerprint-Based-Voting-System.
[13] https://www.youtube.com/@rahuliot.