- Erforderliche Komponenten:
- Fingerabdrucksensormodul in der Wahlmaschine:
- Arbeitserklärung:
- Schaltungserklärung:
- Programmerklärung:
Wir alle sind mit elektronischen Abstimmungsgeräten vertraut, bei denen Ihre Stimme elektronisch registriert wird und Sie keinen Stimmzettel verwenden müssen, um bei Wahlen abzustimmen. Heutzutage ist die Sicherheit ein wichtiges Anliegen und es muss auch sichergestellt werden, dass jemand nicht zweimal abstimmen kann. Daher kann dieses Problem durch die Einführung von Fingerabdruck-basierten Abstimmungen gelöst werden, bei denen eine Person anhand ihres Fingerabdrucks autorisiert werden kann. Dies stoppt auch falsche Abstimmungen. Deshalb bauen wir heute eine FingerPrint-basierte biometrische Abstimmungsmaschine mit Arduino.
Überprüfen Sie auch unsere früheren Projekte für elektronische Abstimmungsmaschinen mit verschiedenen Mikrocontrollern:
- Elektronische Wahlmaschine mit Raspberry Pi
- RFID-basierte Wahlmaschine
- AVR Microcontroller Based Electronic Voting Machine Projekt
- Elektronische Wahlmaschine mit Arduino
Erforderliche Komponenten:
- Arduino Uno
- Fingerabdrucksensormodul
- Drück Knöpfe
- LEDs -2
- 1K Widerstand -3
- 2,2 K Widerstand
- Leistung
- Kabel anschließen
- Summer
- 16x2 LCD
- Brotbrett
Fingerabdrucksensormodul in der Wahlmaschine:
Das Fingerabdrucksensormodul oder der Fingerabdruckscanner ist ein Modul, das das Fingerabdruckbild erfasst, es dann in die entsprechende Vorlage konvertiert und von Arduino unter der ausgewählten ID (Position) in seinem Speicher speichert. Hier wird der gesamte Prozess von Arduino befohlen, z. B. ein Fingerabdruckbild aufzunehmen, es in Vorlagen umzuwandeln und den Speicherort zu speichern usw.
In dieser Schaltung der FingerPrint-Abstimmungsmaschine haben wir das Fingerabdruck-Sensormodul verwendet, um echte Wähler zu authentifizieren, indem ihre Fingereingaben in das System eingegeben werden. Hier verwenden wir 5 Drucktasten zum Anpassen, Registrieren / Zurück, Löschen / OK, AUF und Ab. Enroll und Del haben hier doppelte Funktionen. Der Registrierungsschlüssel wird zum Registrieren eines neuen Fingerabdrucks in das System und auch für die Rückenfunktion verwendet. Bedeutet, wenn der Benutzer einen neuen Finger registrieren möchte, muss er die Registrierungstaste drücken und das LCD fragt nach der ID oder dem Ort, an dem der Benutzer die Fingerabdruckausgabe speichern möchte. Wenn der Benutzer zu diesem Zeitpunkt nicht weiter fortfahren möchte, kann er die Registrierungstaste erneut drücken, um zurückzukehren (diesmal verhält sich die Registrierungstaste wie die Zurück-Taste). Bedeutet, dass der Registrierungsschlüssel sowohl die Registrierungs- als auch die Zurückfunktion hat. ENTF / OK-Taste hat auch die gleiche Doppelfunktion wie wenn der Benutzer einen neuen Finger anmeldet, dann muss er / sie die Finger-ID oder den Standort auswählen, indem er zwei weitere Tasten verwendet, nämlich AUF UND AB. Jetzt muss der Benutzer die ENTF / OK-Taste drücken (diesmal verhält sich diese Taste wie OK) Fahren Sie mit der ausgewählten ID oder dem ausgewählten Standort fort. Der Übereinstimmungsschlüssel wird verwendet, wenn der Wähler abstimmen möchte, dann muss er sich zuerst für den wahren Wähler authentifizieren, indem er den Finger auf dem Fingerabdrucksensor hält. Wenn er diese Authentifizierung bestanden hat, kann er abstimmen.
Weitere Informationen zum Registrieren von Fingerabdrücken und anderen Dingen finden Sie in unserem vorherigen Lernprogramm zur Verbindung des Fingerabdrucksensors mit Arduino sowie in unserem Demo- Video am Ende dieses Lernprogramms.
Arbeitserklärung:
Funktionsweise dieses biometrischen Wahlsystems für Wahlen ist ein bisschen komplex für Anfänger. Zunächst muss der Benutzer Finger oder Wähler (in diesem Code beträgt die maximale Anzahl der Wähler 25) mithilfe von Drucktasten / Tasten registrieren. Dazu muss der Benutzer die ENROLL-Taste drücken. Anschließend fordert das LCD zur Eingabe des Ortes / der ID auf, an dem der Finger ein Geschäft sein soll. Daher muss der Benutzer jetzt die ID (Standort) mit den Tasten AUF / AB eingeben. Nach Auswahl von Standort / ID muss der Benutzer eine OK-Taste (DEL-Taste) drücken. Jetzt werden Sie vom LCD aufgefordert, den Finger über das Fingerabdruckmodul zu legen. Jetzt muss der Benutzer seinen Finger über das Fingerabdruckmodul legen. Dann fordert das LCD auf, den Finger vom Fingerabdruckmodul zu entfernen und erneut, den Finger zu platzieren. Jetzt muss der Benutzer seinen Finger erneut über das Fingerabdruckmodul legen. Jetzt nimmt das Fingerabdruckmodul ein Bild auf, konvertiert es in Vorlagen und speichert es anhand der ausgewählten ID im Speicher des Fingerabdruckmoduls.Jetzt wird der Wähler registriert und er / sie kann abstimmen. Mit der gleichen Methode können alle Wähler im System registriert werden.
Wenn der Benutzer nun eine gespeicherte ID entfernen oder löschen möchte, muss er die ENTF-Taste drücken. Nach dem Drücken der ENTF-Taste fragt das LCD nach dem ausgewählten Speicherort, dh wählt die zu löschende ID aus. Jetzt muss der Benutzer die ID auswählen und die OK-Taste drücken (dieselbe DEL-Taste). Jetzt zeigt das LCD an, dass der Finger erfolgreich gelöscht wurde.
Abstimmungsprozess:
Wenn der Benutzer abstimmen möchte, muss er die Match-Taste drücken, und dann ertönt ein Signalton und die LED leuchtet ebenfalls und das LCD fragt nach dem Finger über dem Fingerabdruckmodul. Jetzt wird Arduino Ihnen drei Versuche geben, Ihren Finger zu legen. Nachdem Sie einen Finger über das Fingerabdruckmodul gelegt haben, erfasst das Fingerabdruckmodul das Fingerbild und stellt fest, dass seine IDs im System vorhanden sind. Wenn die Finger-ID erkannt wird, zeigt das LCD den autorisierten Wähler an. Dies bedeutet, dass der Benutzer zur Abstimmung berechtigt ist. Und dann geht das System zur nächsten Stufe zur Abstimmung über. Jetzt leuchtet die grüne LED. Dies bedeutet, dass der Wähler durch Drücken einer entsprechenden Taste (in dieser Demonstration vom ROTEN Brotbrett) für seine Kandidaten stimmen kann. Wenn derselbe Wähler erneut abstimmen möchte, zeigt das System "Bereits gewählt" an. . Bedeutet, dass derselbe Wähler nicht erneut abstimmen kann und der Summer 5 Sekunden lang piept. Wenn ein nicht registrierter Benutzer abstimmen möchte, erkennt das Fingerabdruckmodul seine ID im System nicht und auf dem LCD wird " Kein Fingerabdruck gefunden" angezeigt .
CAN1, CAN2, CAN3 repräsentieren hier die Kandidaten 1, Kandidaten 2 und Kandidaten 3, die sich zur Wahl gestellt haben.
Schaltungserklärung:
Die Schaltung dieses FingerPrint-basierten Abstimmungsmaschinenprojekts ist sehr einfach und enthält Arduino zur Steuerung des gesamten Projektprozesses, einen Druckknopf zum Registrieren, Löschen, Auswählen von IDs und Abstimmungszwecken, einen Summer für Warnmeldungen, LEDs zur Anzeige und ein 16x2-LCD zur Anleitung Wähle und zeige auch das Ergebnis. Die gelbe LED zeigt an, dass das Fingerabdruckmodul bereit ist, ein Bild des Fingers aufzunehmen, und die grüne LED zeigt an, dass das System bereit ist, eine Abstimmung durchzuführen oder Ergebnisse anzuzeigen.
Der Druckknopf ist direkt mit Pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) und A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (verbunden) verbunden Ergebnis) von Arduino in Bezug auf Boden. Die gelbe LED wird am digitalen Pin D7 von Arduino in Bezug auf Masse über einen 1k-Widerstand angeschlossen, und die grüne LED wird mit der gleichen Methode an D6 von Arduino angeschlossen. Rx und Tx des Fingerabdruckmoduls sind direkt an den seriellen Pins Tx und Rx von Arduino angeschlossen. Die 5-V-Versorgung dient zur Stromversorgung des Fingerabdruckmoduls von der Arduino-Platine. Ein Summer ist auch an A5 angeschlossen. Ein 16x2-LCD ist im 4-Bit-Modus konfiguriert und seine RS, EN, D4, D5, D6 und D7 sind direkt an den digitalen Pins D13, D12, D11, D10, D9 und D8 von Arduino angeschlossen.
Programmerklärung:
In einem Programm haben wir die Adafruit Fingerprint Sensor Library verwendet, um das Fingerabdruckmodul mit der Arduino-Karte zu verbinden. Sie können den vollständigen Code unten überprüfen. Hier erklären wir die Hauptfunktionen des Arduino-Programms.
In der Setup-Funktion haben wir Anweisungen zu definierten Pins gegeben und das LCD- und Fingerabdruckmodul initiiert.
Danach haben wir in der Funktion void loop () auf die Prüftaste gewartet und die Match-Taste gedrückt, um den Fingerabdruck zu starten, die Eingabe zu übernehmen und die erfasste Bild-ID mit den gespeicherten IDs zu vergleichen. Wenn eine Übereinstimmung auftritt, fahren Sie mit dem nächsten Schritt fort.
void loop () {lcd.setCursor (0,0); lcd.print ("Match Match Key drücken"); lcd.setCursor (0,1); lcd.print ("System starten"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (Summer, HIGH); Verzögerung (200); digitalWrite (Summer, LOW); digitalWrite (indFinger, HIGH); für (int i = 0; i <3; i ++)…………………
Die angegebene Funktion void checkKeys () wird verwendet, um zu überprüfen, ob die Registrierungs- oder ENTF-Taste gedrückt ist oder nicht und was zu tun ist, wenn sie gedrückt wird. Wenn die Taste ENROLL gedrückt wird, wird die Funktion Enroll () aufgerufen und die Taste DEL gedrückt, dann wird die Funktion delete () aufgerufen.
void checkKeys () {if (digitalRead (registriere) == 0) {lcd.clear (); lcd.print ("Bitte warten"); Verzögerung (1000); while (digitalRead (einschreiben) == 0); Einschreiben(); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Bitte warten"); Verzögerung (1000); delet (); }}
Die angegebene Funktion wird zum Eingeben der zu löschenden ID und zum Aufrufen der Funktion uint8_t deleteFingerprint (uint8_t id) verwendet, mit der Finger aus Datensätzen gelöscht werden.
void delet () {int count = 0; lcd.clear (); lcd.print ("Finger löschen"); lcd.setCursor (0,1); lcd.print ("Ort:"); während (1) {lcd.setCursor (9,1); lcd.print (Anzahl); if (digitalRead (up) == 0) {count ++; if (count> 25) count = 0; Verzögerung (500); }……………….
Die angegebene Funktion wird zum Löschen des Fingerabdrucks aus dem Datensatz der ausgewählten ID verwendet.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Bitte warten"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Gelöscht!"); lcd.clear (); lcd.print ("Figer gelöscht"); lcd.setCursor (0,1); lcd.print ("Erfolgreich"); Verzögerung (1000); } else {Serial.print ("Etwas stimmt nicht"); lcd.clear (); lcd.print ("Etwas falsch"); lcd.setCursor (0,1); lcd.print ("Später erneut versuchen"); Verzögerung (2000); return p; }}
Die angegebene Funktion wird verwendet, um Fingerabdruckbilder aufzunehmen, sie in die Vorlage zu konvertieren und sie anhand der ausgewählten ID im Speicher des Fingerabdruckmoduls zu speichern.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("finger ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Finger platzieren"); Verzögerung (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Die angegebene Funktion wird für Abstimmungs- und Anzeigeergebnisse verwendet:
void Vote () {lcd.clear (); lcd.print ("Bitte platzieren"); lcd.setCursor (0,1); lcd.print ("Ihre Stimme"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (Summer, HIGH); Verzögerung (500); digitalWrite (Summer, LOW); Verzögerung (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Überprüfen Sie den vollständigen Code und das Demonstrationsvideo unten.