Inhoudsopgave:

Op vingerafdruk gebaseerde biometrische stemmachine met Arduino - Ajarnpa
Op vingerafdruk gebaseerde biometrische stemmachine met Arduino - Ajarnpa

Video: Op vingerafdruk gebaseerde biometrische stemmachine met Arduino - Ajarnpa

Video: Op vingerafdruk gebaseerde biometrische stemmachine met Arduino - Ajarnpa
Video: De HP SimplePass-vingerafdruklezer gebruiken in Windows 8 2024, Juli-
Anonim
Op vingerafdruk gebaseerde biometrische stemmachine met behulp van Arduino
Op vingerafdruk gebaseerde biometrische stemmachine met behulp van Arduino

We kennen allemaal de bestaande elektronische stemmachine waarbij de gebruiker op een knop moet drukken om te stemmen. Maar deze machines zijn vanaf het begin bekritiseerd vanwege het temperen. Daarom is de regering van plan een stemmachine op basis van vingerafdrukken in te voeren waar gebruikers hun stem kunnen uitbrengen op basis van hun vingerafdruk. Dit systeem zal niet alleen de mogelijkheid van dubbele stemmen wegnemen, maar ook elke vorm van manipulatie voorkomen.

Dus in dit project gaan we een prototype bouwen van een biometrische stemmachine met behulp van de Arduino Uno, TFT-display en vingerafdruksensor. We gebruikten eerder de R305-vingerafdruksensor met NodeMCU om een biometrisch aanwezigheidssysteem te bouwen, maar hier zullen we de geavanceerde GT-511C3-vingerafdruksensor met Arduino gebruiken.

Stap 1: Onderdelen die nodig zijn om een biometrische stemmachine te bouwen

  • Arduino Uno
  • 2,4-inch TFT LCD-schermscherm
  • GT-511C3 Vingerafdruksensor

Dit 2,4-inch TFT-scherm werd eerder gebruikt met Arduino om een op IoT gebaseerd restaurantmenu-bestelsysteem te bouwen.

Stap 2: Schakelschema voor biometrische stemmachine met Arduino

Schakelschema voor biometrische stemmachine met Arduino
Schakelschema voor biometrische stemmachine met Arduino

Het schakelschema voor dit project is heel eenvoudig, omdat we alleen het TFT-display en de vingerafdruksensormodule verbinden met Arduino Uno. VCC- en GND-pinnen van de vingerafdruksensor zijn verbonden met 5V- en GND-pinnen van Arduino, terwijl TX- en RX-pinnen zijn verbonden met digitale pin 11 & 12 van Arduino Uno.

Het 2,4” TFT LCD-scherm is een Arduino Shield en kan direct op Arduino Uno worden gemonteerd, zoals weergegeven in de onderstaande afbeelding. TFT-scherm heeft 28 pinnen die perfect passen in Arduino Uno, dus ik moest de vingerafdruksensor aan de achterkant van Arduino solderen.

Stap 3: Broncode en stapsgewijze uitleg van de code

De volledige code voor dit Fingerprint Voting System Project met Arduino wordt aan het einde van het artikel gegeven; hier leggen we enkele belangrijke functies van de code uit.

De code gebruikt de bibliotheken SPFD5408, Software Serial en FPS_GT511C3. SPFD5408-bibliotheek is de aangepaste versie van de originele Adafruit-bibliotheek. Deze bibliotheekbestanden kunnen worden gedownload via de onderstaande links:

  • SPFD5408 Bibliotheek
  • Software serie
  • FPS_GT511C3

Na het opnemen van de bibliotheken en het definiëren van enkele belangrijke parameters, kunnen we in het programmeergedeelte komen. Er zijn drie secties betrokken bij dit programma. Een daarvan is het maken van een gebruikersinterface van een stemmachine, de tweede is het verkrijgen van de aanraakpunten voor knoppen en het detecteren van de knoppen op basis van de aanraking en tenslotte het berekenen van de resultaten en opslaan in het geheugen van Arduino.

1. Gebruikersinterface maken:

Ik heb een eenvoudige gebruikersinterface gemaakt met drie knoppen en de naam van het project. Met de TFT-displaybibliotheek kunt u lijnen, rechthoeken, cirkels, tekens, tekenreeksen en nog veel meer tekenen in elke gewenste kleur en grootte. Hier worden twee rechthoekige knoppen gemaakt met de functies fillRoundRect en drawRoundRect. Syntaxis voor de functie tft.drawRoundRect wordt hieronder gegeven:

tft.drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t straal, uint16_t kleur)

Waar:

x0= X-coördinaat van het startpunt van rechthoekig

y0= Y-coördinaat van het startpunt van rechthoekig

w = Breedte van de rechthoek

h = Hoogte van de Rechthoekige

straal = straal van de ronde hoek

kleur = Kleur van de Rect.

void drawHome()

{

tft.fillScreen(WIT);

tft.drawRoundRect(0, 0, 319, 240, 8, WIT); //Paginarand

tft.fillRoundRect(10, 70, 220, 50, 8, GOUD);

tft.drawRoundRect(10, 70, 220, 50, 8, WIT); //Stemmen

tft.fillRoundRect(10, 160, 220, 50, 8, GOUD);

tft.drawRoundRect(10, 160, 220, 50, 8, WIT); //Inschrijven

tft.fillRoundRect(10, 250, 220, 50, 8, GOUD); //Resultaat

tft.drawRoundRect(10, 250, 220, 50, 8, WIT);

tft.setCursor(65, 5);

tft.setTextSize(3);

tft.setTextColor(CYAAN);

tft.print("Stemmen");

tft.setCursor(57, 29);

tft.print("Machine");

tft.setTextSize(3);

tft.setTextColor(WIT);

tft.setCursor(25, 82);

tft.print("Kandidaat 1");

tft.setCursor(25, 172);

tft.print("Kandidaat 2");

tft.setCursor(25, 262);

tft.print("Kandidaat 3");

}

2. De aanraakpunten en detectieknoppen verkrijgen:

Nu, in het tweede deel van de code, zullen we de aanrakingspunten van de knoppen detecteren en deze punten gebruiken om de knop te voorspellen. De functie ts.getPoint() wordt gebruikt om de aanraking van de gebruiker op het TFT-scherm te detecteren. ts.getPoint geeft de Raw ADC-waarden voor het aangeraakte gebied. Deze RAW ADC-waarden worden vervolgens geconverteerd naar pixelcoördinaten met behulp van de kaartfunctie.

TSPoint p = ts.getPoint();

if (p.z > ts.pressureThreshhold)

{

p.x = kaart (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = kaart (py, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X:");

//Serial.print (p.x);

//Serial.print("Y:");

//Serial.print(py);

Omdat we nu de X- en Y-coördinaten voor elke knop kennen, kunnen we voorspellen waar de gebruiker heeft aangeraakt door de 'if'-instructie te gebruiken.

if (p.x > 70 && p.x 10 && p.y MINDRUK && p.z < MAXDRUK)

{

Serial.println("Kandidaat 1");

Wanneer een kiezer op de kandidaat-knop drukt, wordt hem gevraagd de vinger op de vingerafdruksensor te scannen. Als vinger-ID is geautoriseerd, mag de kiezer stemmen. Als een niet-geregistreerde gebruiker wil stemmen, zal de vingerafdrukmodule zijn ID niet in het systeem detecteren en op het display verschijnt 'Sorry You Can't Vote'.

if (fps. IsPressFinger())

{

fps. CaptureFinger(false);

int id = fps. Identify1_N();

als (id <200)

{

msg = "Kandidaat 1";

stem1++;

EEPROM.write(0, vote1);

tft.setCursor(42, 170);

tft.print("Bedankt");

vertraging (3000);

drawHome();

3. Resultaat:

De laatste stap is het verkrijgen van het aantal stemmen uit het EEPROM-geheugen en het vergelijken van de stemmen van alle drie de kandidaten. Een kandidaat met de meeste stemmen wint. Het resultaat is alleen toegankelijk vanaf de seriële monitor en wordt niet weergegeven op het TFT-scherm.

vote1=EEPROM.read(0);

vote2=EEPROM.lezen(1);

vote3=EEPROM.lezen(2);

als (stem)

{

if((stem1 > stem2 && stem1 > stem3))

{

Serial.print ("Can1 wint");

vertraging (2000);

}

Stap 4: Het vingerafdrukstemsysteem testen met Arduino

Om het project te testen, sluit u de Arduino Uno aan op de laptop en uploadt u de gegeven code. Nadat de code is geüpload, moet het TFT-scherm de naam van de kandidaat weergeven. Wanneer iemand op de naam van een kandidaat tikt, vraagt de machine om de vingerafdrukscanner te scannen. Als de vingerafdruk geldig is, wordt de stem van de gebruiker geteld, maar als het patroon niet overeenkomt met de gegevens in de database, wordt de toegang tot het uitbrengen van een stem geweigerd. Het totale aantal stemmen voor elke kandidaat wordt opgeslagen in EEPROM en een kandidaat met het hoogste aantal stemmen wint.

Ik hoop dat je genoten hebt van de tutorial en iets nuttigs hebt geleerd. Als je vragen hebt, laat het ons dan weten in het commentaargedeelte hieronder en volg ons ook op Instructable voor meer van dergelijke interessante projecten.

Aanbevolen: