_Electronic_Voting_Machine
_Electronic_Voting_Machine
ON
“Fingerprint based Electronic Voting Machine”
Session: 2021-2025
DEPARTMENT OF ELECTRONICS AND
COMMUNICATION ENGINEERING
GOVIND BALLABH PANT INSTITUTE OF ENGINEERING
AND TECHNOLOGY, PAURI
DECLARATION
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. PROGRAMMING FOR FINGERPRINT BASE ELECTRONIC
VOTING MACHNE
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:
#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;
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.