Inhaltsverzeichnis:

Fingerabdruck-basiertes biometrisches Wahlgerät mit Arduino - Gunook
Fingerabdruck-basiertes biometrisches Wahlgerät mit Arduino - Gunook

Video: Fingerabdruck-basiertes biometrisches Wahlgerät mit Arduino - Gunook

Video: Fingerabdruck-basiertes biometrisches Wahlgerät mit Arduino - Gunook
Video: #36 - Gesichtserkennung, Fingerabdruck und Co. – Die Welt der Biometrie erklärt 2024, November
Anonim
Fingerabdruck-basiertes biometrisches Wahlgerät mit Arduino
Fingerabdruck-basiertes biometrisches Wahlgerät mit Arduino

Wir alle kennen das bestehende elektronische Wahlgerät, bei dem der Benutzer einen Knopf drücken muss, um die Stimme abzugeben. Aber diese Maschinen wurden von Anfang an wegen des Temperierens kritisiert. Die Regierung plant daher die Einführung eines auf Fingerabdrücken basierenden Wahlgeräts, bei dem Benutzer die Stimme basierend auf ihrem Fingerabdruckabdruck abgeben können. Dieses System beseitigt nicht nur die Möglichkeit doppelter Stimmen, sondern verhindert auch jede Art von Manipulation.

In diesem Projekt werden wir also einen Prototyp eines biometrischen Abstimmungsgeräts mit Arduino Uno, TFT-Display und Fingerabdrucksensor bauen. Wir haben zuvor den R305-Fingerabdrucksensor mit NodeMCU verwendet, um ein biometrisches Anwesenheitssystem aufzubauen, aber hier werden wir den fortschrittlichen GT-511C3-Fingerabdrucksensor mit Arduino verwenden.

Schritt 1: Erforderliche Komponenten zum Bau eines biometrischen Wahlgeräts

  • Arduino Uno
  • 2,4-Zoll-TFT-LCD-Display-Abschirmung
  • GT-511C3 Fingerabdrucksensor

Dieses 2,4-Zoll-TFT-Display wurde zuvor mit Arduino verwendet, um ein IoT-basiertes Restaurant-Menü-Bestellsystem zu erstellen.

Schritt 2: Schaltplan für biometrische Abstimmungsmaschine mit Arduino

Schaltplan für biometrische Wahlmaschine mit Arduino
Schaltplan für biometrische Wahlmaschine mit Arduino

Der Schaltplan für dieses Projekt ist sehr einfach, da wir nur das TFT-Display und das Fingerabdrucksensormodul mit Arduino Uno verbinden. Die VCC- und GND-Pins des Fingerabdrucksensors sind mit den 5V- und GND-Pins von Arduino verbunden, während die TX- und RX-Pins mit den digitalen Pins 11 und 12 von Arduino Uno verbunden sind.

Der 2,4-Zoll-TFT-LCD-Bildschirm ist ein Arduino Shield und kann direkt auf Arduino Uno montiert werden, wie im folgenden Bild gezeigt. Das TFT-Display hat 28 Pins, die perfekt in Arduino Uno passen, daher musste ich den Fingerabdrucksensor auf der Rückseite des Arduino löten.

Schritt 3: Quellcode und Schritt-für-Schritt-Code-Erklärung

Der vollständige Code für dieses Fingerabdruck-Voting-System-Projekt mit Arduino ist am Ende des Artikels angegeben; hier erklären wir einige wichtige Funktionen des Codes.

Der Code verwendet die Bibliotheken SPFD5408, Software Serial und FPS_GT511C3. Die SPFD5408-Bibliothek ist die modifizierte Version der ursprünglichen Adafruit-Bibliothek. Diese Bibliotheksdateien können über die unten angegebenen Links heruntergeladen werden:

  • SPFD5408-Bibliothek
  • Software-Seriennummer
  • FPS_GT511C3

Nachdem wir die Bibliotheken eingebunden und einige wichtige Parameter definiert haben, können wir in den Programmierteil einsteigen. Dieses Programm umfasst drei Abschnitte. Zum einen erstellen Sie eine Benutzeroberfläche eines Abstimmungsgeräts, zum anderen erhalten Sie die Berührungspunkte für Schaltflächen und erkennen die Schaltflächen anhand der Berührung und berechnen schließlich die Ergebnisse und speichern sie im Speicher von Arduino.

1. Benutzeroberfläche erstellen:

Ich habe eine einfache Benutzeroberfläche mit drei Schaltflächen und dem Namen des Projekts erstellt. Mit der TFT-Display-Bibliothek können Sie Linien, Rechtecke, Kreise, Zeichen, Zeichenfolgen und vieles mehr in jeder gewünschten Farbe und Größe zeichnen. Hier werden zwei rechteckige Schaltflächen mit den Funktionen fillRoundRect und drawRoundRect erstellt. Die Syntax für die Funktion tft.drawRoundRect ist unten angegeben:

tft.drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_th, int16_t Radius, uint16_t Farbe)

Woher:

x0= X-Koordinate des Startpunktes von Rechteck

y0= Y-Koordinate des Startpunktes von Rechteck

w = Breite des Rechtecks

h = Höhe des Rechtecks

radius= Radius der runden Ecke

color = Farbe des Rect.

void drawHome()

{

tft.fillScreen (WEISS);

tft.drawRoundRect(0, 0, 319, 240, 8, WEISS); //Seitenrand

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

tft.drawRoundRect(10, 70, 220, 50, 8, WEISS); //Abstimmung

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

tft.drawRoundRect(10, 160, 220, 50, 8, WEISS); //Einschreiben

tft.fillRoundRect(10, 250, 220, 50, 8, GOLD); //Ergebnis

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

tft.setCursor(65, 5);

tft.setTextSize(3);

tft.setTextColor(CYAN);

tft.print("Abstimmung");

tft.setCursor(57, 29);

tft.print("Maschine");

tft.setTextSize(3);

tft.setTextColor(WEISS);

tft.setCursor(25, 82);

tft.print("Kandidat 1");

tft.setCursor(25, 172);

tft.print("Kandidat 2");

tft.setCursor(25, 262);

tft.print("Kandidat 3");

}

2. Abrufen der Berührungspunkte und Erkennungstasten:

Im zweiten Abschnitt des Codes werden wir nun die Berührungspunkte der Schaltfläche erkennen und dann diese Punkte verwenden, um die Schaltfläche vorherzusagen. Die Funktion ts.getPoint() wird verwendet, um die Berührung des Benutzers auf dem TFT-Display zu erkennen. ts.getPoint gibt die Roh-ADC-Werte für den berührten Bereich an. Diese RAW-ADC-Werte werden dann unter Verwendung der Kartenfunktion in Pixelkoordinaten umgewandelt.

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);

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

//Seriendruck (p.x);

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

//Seriendruck (p.y);

Da wir nun die X- und Y-Koordinaten für jede Schaltfläche kennen, können wir mithilfe der 'if'-Anweisung vorhersagen, wo der Benutzer berührt hat.

if (p.x > 70 && p.x 10 && p.y MINDERDRUCK && p.z < MAXDRUCK)

{

Serial.println ("Kandidat 1");

Wenn ein Wähler den Kandidatenknopf drückt, wird er aufgefordert, den Finger auf dem Fingerabdrucksensor zu scannen. Wenn die Finger-ID autorisiert ist, darf der Wähler wählen. Wenn ein nicht registrierter Benutzer abstimmen möchte, erkennt das Fingerabdruckmodul seine ID nicht im System und das Display zeigt "Entschuldigung, dass Sie nicht abstimmen können".

if (fps. IsPressFinger())

{

fps. CaptureFinger (falsch);

int-ID = fps. Identify1_N();

wenn (ID <200)

{

msg = "Kandidat 1";

Stimme1++;

EEPROM.write(0, vote1);

tft.setCursor(42, 170);

tft.print("Danke");

Verzögerung (3000);

drawHome();

3. Ergebnis:

Der letzte Schritt besteht darin, die Stimmenzahl aus dem EEPROM-Speicher zu erhalten und die Stimmen aller drei Kandidaten zu vergleichen. Ein Kandidat mit den meisten Stimmen gewinnt. Das Ergebnis kann nur über den seriellen Monitor abgerufen werden und wird nicht auf dem TFT-Bildschirm angezeigt.

vote1=EEPROM.read(0);

vote2=EEPROM.read(1);

vote3=EEPROM.read(2);

wenn (abstimmen)

{

if((vote1 > vote2 && vote1 > vote3))

{

Serial.print ("Can1 gewinnt");

Verzögerung (2000);

}

Schritt 4: Testen des Fingerabdruck-Voting-Systems mit Arduino

Um das Projekt zu testen, verbinden Sie das Arduino Uno mit dem Laptop und laden Sie den angegebenen Code hoch. Sobald der Code hochgeladen ist, sollte das TFT-Display den Namen des Kandidaten anzeigen. Wenn jemand auf einen Kandidatennamen tippt, fordert das Gerät auf, den Fingerabdruckscanner zu scannen. Wenn der Fingerabdruck gültig ist, wird die Stimme des Benutzers gezählt, aber falls das Muster nicht mit den Datensätzen der Datenbank übereinstimmt, wird der Zugang zur Stimmabgabe verweigert. Die Gesamtzahl der Stimmen für jeden Kandidaten wird im EEPROM gespeichert und der Kandidat mit den meisten Stimmen gewinnt.

Ich hoffe, Ihnen hat das Tutorial gefallen und Sie haben etwas Nützliches gelernt. Wenn Sie Fragen haben, teilen Sie uns dies bitte im Kommentarbereich unten mit und folgen Sie uns auch auf Instructable für weitere interessante Projekte.

Empfohlen: