We all are aware of the existing electronic voting machine where the user has to press a button to cast the vote. But these machines have been criticized for tempering since the beginning. So the government is planning to introduce a fingerprint-based voting machine where users can cast the vote based on his/her fingerprint impression. This system will not only remove the possibility of duplicate votes but also prevent any kind of manipulation.So in this project, we are going to build a prototype of a Biometric voting machine using the Arduino Uno, TFT display, and Fingerprint Sensor.
Step 1: Components Required to Build Biometric Voting Machine
Circuit Diagram
Circuit Diagram for this project is very simple as we are only connecting the TFT display and fingerprint sensor module with Arduino Uno. VCC and GND pins of the fingerprint sensor are connected to 5V and GND pins of Arduino while TX and RX pins are connected to digital pin 11 & 12 of Arduino Uno.The 2.4” TFT LCD screen is an Arduino Shield and can be directly mounted on Arduino Uno, as shown in the below image. TFT display has 28 pins that perfectly fit into Arduino Uno, so I had to solder the fingerprint sensor on the backside of Arduino.
The complete code for this Fingerprint Voting System Project using Arduino is given at the end of the article; here we are explaining some important functions of the code.
Step 3: Source Code and Step by Step Code Explanation
The code uses the SPFD5408, Software Serial, and FPS_GT511C3 libraries. SPFD5408 library is the modified version of the original Adafruit Library. These library files can be downloaded from the links given below:
After including the libraries and defining some important parameters, we can get into the programming part. There are three sections involved in this program. One is creating a UI of a voting machine, second is getting the touch-points for buttons & detecting the buttons based on the touch and finally calculating the results and save them into Arduino’s memory.
Where:
x0= X co-ordinate of the starting point of rectangular
y0= Y coordinate of the starting point of rectangular
w = Width of the rectangular
h = Height of the Rectangular
radius= Radius of the round corner
color = Colour of the Rect.
void drawHome()
{
tft.fillScreen(WHITE);
tft.drawRoundRect(0, 0, 319, 240, 8, WHITE); //Page border
tft.fillRoundRect(10, 70, 220, 50, 8, GOLD);
tft.drawRoundRect(10, 70, 220, 50, 8, WHITE); //Vote
tft.fillRoundRect(10, 160, 220, 50, 8, GOLD);
tft.drawRoundRect(10, 160, 220, 50, 8, WHITE); //Enroll
tft.fillRoundRect(10, 250, 220, 50, 8, GOLD); //Result
tft.drawRoundRect(10, 250, 220, 50, 8, WHITE);
tft.setCursor(65, 5);
tft.setTextSize(3);
tft.setTextColor(CYAN);
tft.print("Voting");
tft.setCursor(57, 29);
tft.print("Machine");
tft.setTextSize(3);
tft.setTextColor(WHITE);
tft.setCursor(25, 82);
tft.print("Candidate 1");
tft.setCursor(25, 172);
tft.print("Candidate 2");
tft.setCursor(25, 262);
tft.print("Candidate 3");
}
TSPoint p = ts.getPoint();
if (p.z > ts.pressureThreshhold)
{
p.x = map(p.x, TS_MAXX, TS_MINX, 0, 320);
p.y = map(p.y, TS_MAXY, TS_MINY, 0, 240);
//Serial.print("X:");
//Serial.print(p.x);
//Serial.print("Y:");
//Serial.print(p.y);
Now, since we know the X and Y coordinates for each button, we can predict where the user has touched by using the ‘if’ statement.
if (p.x > 70 && p.x < 120 && p.y > 10 && p.y < 220 && p.z > MINPRESSURE && p.z < MAXPRESSURE)
{
Serial.println("Candidate 1");
When a voter presses the candidate button, he will be asked to scan the finger on the fingerprint sensor. If finger ID is authorized then the voter is allowed to vote. If any Non-registered user wants to vote then the fingerprint module will not detect its ID into the system and the display will show ‘Sorry You Can’t Vote ’.
if (fps.IsPressFinger())
{
fps.CaptureFinger(false);
int id = fps.Identify1_N();
if (id <200)
{
msg = "Candidate 1";
vote1++;
EEPROM.write(0, vote1);
tft.setCursor(42, 170);
tft.print("Thank You");
delay(3000);
drawHome();
3. Result:
vote1=EEPROM.read(0);
vote2=EEPROM.read(1);
vote3=EEPROM.read(2);
if(vote)
{
if((vote1 > vote2 && vote1 > vote3))
{
Serial.print("Can1 Wins");
delay(2000);
}
Step 4: Testing the Fingerprint Voting System Using Arduino
To test the project, connect the Arduino Uno to the laptop and upload the given code. Once the code is uploaded, the TFT display should display the candidate’s name. When someone taps on a candidate name, the machine will ask to scan the fingerprint scanner. If the fingerprint is valid, then the user vote will be counted, but in case, the pattern doesn’t match with the records of the database, access to cast a vote will be denied. The total number of votes for each candidate will be stored in EEPROM and a candidate having the highest number of votes will win.
CasinoDaddy - Dr. Md.gov
ReplyDeleteIf you're 광양 출장안마 ready to play 삼척 출장샵 slots for real money, here 문경 출장마사지 is a quick look at a casinoDaddy Slot. 서울특별 출장마사지 It was the first 대구광역 출장샵 game to become a professional casino.