- Vereiste componenten:
- Vingerafdruksensormodule in stemmachine:
- Werkende uitleg:
- Circuit uitleg:
- Programma uitleg:
We zijn allemaal redelijk bekend met elektronische stemmachines, waar uw stem elektronisch wordt geregistreerd en u geen stembiljet hoeft te gebruiken om bij verkiezingen te stemmen. Tegenwoordig is beveiliging een grote zorg en er moet ook voor worden gezorgd dat iemand niet twee keer kan stemmen, dus dit probleem kan worden opgelost door de introductie van op vingerafdrukken gebaseerd stemmen, waarbij een persoon kan worden geautoriseerd op basis van zijn vingerafdruk. Dit stopt ook nepstemmen. Dus vandaag bouwen we een op vingerafdrukken gebaseerde biometrische stemmachine met behulp van Arduino.
Bekijk ook onze eerdere elektronische stemmachine-projecten met verschillende microcontrollers:
- Elektronische stemmachine met Raspberry Pi
- Op RFID gebaseerde stemmachine
- AVR Op microcontroller gebaseerd elektronisch stemmachineproject
- Elektronische stemmachine met Arduino
Vereiste componenten:
- Arduino Uno
- Vingerafdruksensormodule
- Drukknoppen
- LED's -2
- 1K Weerstand -3
- 2.2K weerstand
- Kracht
- Draden aansluiten
- Zoemer
- 16x2 LCD
- Broodplank
Vingerafdruksensormodule in stemmachine:
Vingerafdruksensormodule of vingerafdrukscanner is een module die de afbeelding van een vingerafdruk vastlegt en deze vervolgens omzet in de equivalente sjabloon en deze opslaat in het geheugen op de geselecteerde ID (locatie) door Arduino. Hier wordt het hele proces aangestuurd door Arduino, zoals het maken van een afbeelding van een vingerafdruk, deze omzetten in sjablonen en de locatie opslaan enz.
In dit Vingerafdruk- stemmachinecircuit hebben we de vingerafdruksensormodule gebruikt om echte kiezers te verifiëren door hun vingerinvoer in het systeem te nemen. Hier gebruiken we 5 druktoetsen voor Match, Inschrijven / terug, Verwijderen / OK, UP en Down. Enroll en Del-sleutel hebben hier dubbele functies. De registratiesleutel wordt gebruikt voor het registreren van een nieuwe vingerafdruk in het systeem en ook voor de terugfunctie. Betekent dat wanneer de gebruiker een nieuwe vinger wil registreren, hij / zij op de registratietoets moet drukken en het LCD-scherm vraagt naar de ID of locatie waar de gebruiker de vingerafdrukuitvoer wil opslaan. Als de gebruiker op dit moment niet verder wil gaan, kan hij / zij nogmaals op de enroll-toets drukken om terug te gaan (deze keer gedraagt de enroll-toets zich als de Back-toets). De registratiesleutel heeft zowel een registratie- als een back-functie. DEL / OK-toets heeft ook dezelfde dubbele functie als wanneer de gebruiker een nieuwe vinger inschrijft, dan moet hij / zij vinger-ID of locatie selecteren door nog een andere twee toetsen te gebruiken, namelijk OMHOOG EN OMLAAG nu moet de gebruiker op de DEL / OK-toets drukken (deze keer gedraagt deze toets zich als OK) om ga verder met de geselecteerde ID of locatie. Match key wordt gebruikt voor elke keer dat de kiezer wil stemmen, dan moet hij / zij eerst authenticeren voor de echte kiezer door de vinger op de vingerafdruksensor te houden, als hij / zij geslaagd is voor deze authenticatie, kan hij / zij stemmen.
Voor meer informatie over de inschrijving vingerafdrukken en andere dingen te leren, Check onze vorige tutorial over interfacing Vingerafdruk sensor met Arduino, en ook onze Demo Video Aan het einde van deze tutorial.
Werkende uitleg:
Werking van dit biometrische stemsysteem voor verkiezingen is een beetje ingewikkeld voor beginners. Allereerst moet de gebruiker vinger of stemmers registreren (in deze code is de maximale limiet van de kiezer 25) met behulp van drukknoppen / toetsen. Om dit te doen, moet de gebruiker op de ENROLL-toets drukken en vervolgens wordt op het LCD-scherm gevraagd om de locatie / ID in te voeren waar de vinger een winkel zal zijn. Dus nu moet de gebruiker de ID (locatie) invoeren met de UP / DOWN-toetsen. Na het selecteren van Locatie / ID moet de gebruiker op een OK-toets (DEL-toets) drukken. Nu zal het LCD-scherm vragen om een vinger over de vingerafdrukmodule te plaatsen. Nu moet de gebruiker zijn vinger over de vingerafdrukmodule plaatsen. Vervolgens vraagt het LCD-scherm om de vinger van de vingerafdrukmodule te verwijderen en opnieuw om het plaatsen van de vinger. Nu moet de gebruiker zijn vinger weer over de vingerafdrukmodule plaatsen. Nu neemt de vingerafdrukmodule een afbeelding en converteert deze naar sjablonen en slaat deze op basis van de geselecteerde ID op in het geheugen van de vingerafdrukmodule.Nu wordt de kiezer geregistreerd en kan hij / zij stemmen. Op dezelfde manier kunnen alle kiezers in het systeem worden geregistreerd.
Als de gebruiker nu een opgeslagen ID wil verwijderen of verwijderen, moet hij / zij op de DEL-toets drukken, na het indrukken van de DEL-toets, zal het LCD-scherm om een geselecteerde locatie vragen, een ID selecteren die moet worden verwijderd. Nu moet de gebruiker ID selecteren en op de OK-toets drukken (dezelfde DEL-toets). Nu zal het LCD-scherm u laten weten dat de vinger met succes is verwijderd.
Stemproces:
Wanneer de gebruiker nu wil stemmen, moet hij / zij op de match-toets drukken en de zoemer piept en de LED gaat ook branden en het LCD-scherm vraagt om een vinger over de vingerafdrukmodule te plaatsen. Nu geeft Arduino je drie pogingen om je vinger te plaatsen. Nadat u een vinger over de vingerafdrukmodule heeft geplaatst, legt de vingerafdrukmodule een vingerbeeld vast om te zien of de ID's in het systeem aanwezig zijn. Als vinger-ID wordt gedetecteerd, toont het LCD-scherm de geautoriseerde kiezer. Het betekent dat de gebruiker bevoegd is om te stemmen. En dan gaat het systeem naar de volgende fase om te stemmen. Nu gaat de groene LED branden. Dit betekent dat kiezers op hun kandidaten kunnen stemmen door op een toets te drukken (van het RODE broodbord in deze demonstratie). Als dezelfde kiezer nu opnieuw wil stemmen, toont het systeem het 'Al gestemd' . Betekent dat dezelfde kiezer niet opnieuw kan stemmen en dat de zoemer gedurende 5 seconden piept. Als een niet-geregistreerde gebruiker wil stemmen, zal de vingerafdrukmodule zijn ID niet in het systeem detecteren en zal het LCD-scherm ' Geen vingerafdruk gevonden' tonen .
CAN1, CAN2, CAN3 vertegenwoordigt hier de kandidaat 1, kandidaat 2 en kandidaat 3, die zich verkiesbaar hebben gesteld.
Circuit uitleg:
Het circuit van dit op vingerafdrukken gebaseerde stemmachineproject is heel eenvoudig en bevat Arduino voor het besturen van het hele proces van het project, een drukknop voor het inschrijven, verwijderen, selecteren van ID's en stemdoeleinden, een zoemer voor waarschuwing, LED's voor indicatie en 16x2 LCD voor instructies Kiezer en laat ook het resultaat zien. Gele LED geeft aan dat de vingerafdrukmodule klaar is om een foto van de vinger te maken en groene LED geeft aan dat het systeem klaar is om te stemmen of resultaten te zien.
De drukknop is direct verbonden met pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) en A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Resultaat) van Arduino met betrekking tot aarde. Gele LED is verbonden met digitale pin D7 van Arduino met betrekking tot aarde via een 1k-weerstand en groene LED is verbonden met D6 van Arduino met dezelfde methode. De Rx en Tx van de vingerafdrukmodule zijn rechtstreeks verbonden met de seriële pin Tx en Rx van Arduino. 5v-voeding wordt gebruikt voor het voeden van de vingerafdrukmodule van het Arduino-bord. Op A5 is ook een zoemer aangesloten. Een 16x2 LCD-scherm is geconfigureerd in 4-bit-modus en de RS, EN, D4, D5, D6 en D7 zijn rechtstreeks aangesloten op digitale pin D13, D12, D11, D10, D9 en D8 van Arduino.
Programma uitleg:
In een programma hebben we Adafruit Fingerprint Sensor Library gebruikt voor het koppelen van een vingerafdrukmodule met een Arduino-bord. U kunt de volledige code hieronder bekijken. Hier leggen we de belangrijkste functies van het Arduino-programma uit.
In de setup-functie hebben we aanwijzingen gegeven aan gedefinieerde pinnen en hebben we de LCD- en vingerafdrukmodule geïnitieerd.
Daarna, in de void loop () -functie, hebben we gewacht op de check-toets en op de Match-toets gedrukt om de vingerafdruk te starten om invoer te nemen en de vastgelegde afbeelding-id te vergelijken met opgeslagen ID's. Als er een overeenkomst is, gaat u verder met de volgende stap.
void loop () {lcd.setCursor (0,0); lcd.print ("Press Match Key"); lcd.setCursor (0,1); lcd.print ("om systeem te starten"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (zoemer, HIGH); vertraging (200); digitalWrite (zoemer, LOW); digitalWrite (indFinger, HIGH); voor (int i = 0; i <3; i ++)…………………
Gegeven ongeldig wordt de functie checkKeys () gebruikt om te controleren of de toets Inschrijven of DEL-toets is ingedrukt of niet en wat te doen als erop wordt gedrukt. Als de ENROLL-toets wordt ingedrukt, wordt de Enroll () -functie opgeroepen en wordt de DEL-toets ingedrukt en vervolgens wordt de delete () -functie aangeroepen.
void checkKeys () {if (digitalRead (enroll) == 0) {lcd.clear (); lcd.print ("Even geduld aub"); vertraging (1000); while (digitalRead (enroll) == 0); Inschrijven(); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Even geduld aub"); vertraging (1000); verwijderen (); }}
De gegeven functie wordt gebruikt voor het invoeren van een ID die moet worden verwijderd en voor het aanroepen van uint8_t deleteFingerprint (uint8_t id) -functie die de vinger uit records zal verwijderen.
void delet () {int count = 0; lcd.clear (); lcd.print ("Vinger verwijderen"); lcd.setCursor (0,1); lcd.print ("Locatie:"); while (1) {lcd.setCursor (9,1); lcd.print (aantal); if (digitalRead (up) == 0) {count ++; if (count> 25) count = 0; vertraging (500); }……………….
De gegeven functie wordt gebruikt voor het verwijderen van een vingerafdruk uit het record van de geselecteerde ID.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Even geduld aub"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Verwijderd!"); lcd.clear (); lcd.print ("Figer verwijderd"); lcd.setCursor (0,1); lcd.print ("Succesvol"); vertraging (1000); } else {Serial.print ("Something Wrong"); lcd.clear (); lcd.print ("Er is iets mis"); lcd.setCursor (0,1); lcd.print ("Probeer het later opnieuw"); vertraging (2000); terug p; }}
De gegeven functie wordt gebruikt om een vingerafdrukafbeelding te maken en deze om te zetten in de sjabloon en deze op te slaan met de geselecteerde ID in het geheugen van de vingerafdrukmodule.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("vinger-ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Plaatsvinger"); vertraging (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
De gegeven functie wordt gebruikt voor stem- en weergaveresultaten:
void Vote () {lcd.clear (); lcd.print ("Plaats aub"); lcd.setCursor (0,1); lcd.print ("Uw stem"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (zoemer, HIGH); vertraging (500); digitalWrite (zoemer, LOW); vertraging (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Bekijk de volledige code en demonstratievideo hieronder.