- Необходими компоненти:
- Модул за сензор за отпечатък на пръсти в гласуваща машина:
- Работно обяснение:
- Обяснение на веригата:
- Обяснение на програмата:
Всички сме добре запознати с електронните машини за гласуване, при които гласът ви се регистрира по електронен път и не е необходимо да използвате бюлетина за гласуване на избори. Днес сигурността е основна грижа и също така трябва да се гарантира, че някой не може да гласува два пъти, така че този проблем може да бъде решен чрез въвеждане на гласуване въз основа на пръстови отпечатъци, при което човек може да бъде упълномощен въз основа на своя пръстов отпечатък. Това също ще спре фалшивото гласуване. Така че днес изграждаме биометрична машина за гласуване, базирана на FingerPrint, използвайки Arduino.
Също така проверете нашите предишни проекти за електронни гласуващи машини, използвайки различни микроконтролери:
- Електронна машина за гласуване с помощта на Raspberry Pi
- RFID базирана гласуваща машина
- Проект за електронна машина за гласуване, базиран на микроконтролер AVR
- Електронна машина за гласуване, използваща Arduino
Необходими компоненти:
- Arduino Uno
- Модул на сензора за пръстови отпечатъци
- Бутони
- Светодиоди -2
- 1K резистор -3
- 2.2K резистор
- Мощност
- Свързващи проводници
- Звънец
- 16x2 LCD
- Дъска за хляб
Модул за сензор за отпечатък на пръсти в гласуваща машина:
Модул за сензор за пръстов отпечатък или скенер за пръстов отпечатък е модул, който улавя изображението на отпечатъка на пръста и след това го преобразува в еквивалентен шаблон и ги записва в паметта си върху избрания идентификатор (местоположение) от Arduino. Тук целият процес се командва от Arduino като заснемане на изображение на пръстов отпечатък, конвертиране в шаблони и съхраняване на местоположение и т.н.
В тази схема за гласуване с FingerPrint използвахме модула за сензор за пръстов отпечатък, за да удостоверим истинския избирател, като вземем пръста им в системата. Тук използваме 5 бутона за съвпадение, записване / обратно, изтриване / OK, нагоре и надолу. Клавишът за регистрация и Del има двойни функции тук. Клавишът за регистрация се използва за записване на нов отпечатък на пръст в системата и обратно функцията. Означава, когато потребителят иска да регистрира нов пръст, тогава той / тя трябва да натисне клавиша за регистрация, след което LCD пита за идентификатора или местоположението, където потребителят иска да съхранява изхода за пръстови отпечатъци. Сега, ако в този момент потребителят не иска да продължи по-нататък, той / тя може да натисне отново клавиша за регистрация, за да се върне (този път клавишът за регистрация се държи като клавиш за връщане назад). Означава, че клавишът за записване има функция за записване и обратно. Клавиш DEL / OK също има същата двойна функция, както когато потребителят регистрира нов пръст, тогава той / тя трябва да избере ID на пръста или местоположение, като използва други два клавиша, а именно НАГОРЕ И НАДОЛУ, сега потребителят трябва да натисне клавиша DEL / OK (този път този бутон се държи като OK), за да продължете с избрания идентификатор или местоположение. Клавишът за съвпадение се използва за всеки път, когато избирателят иска да гласува, след което той / тя трябва първо да се удостовери за истински избирател, като държи пръст върху сензора за пръстов отпечатък, ако той / тя е преминал през това удостоверяване, тогава той / тя може да гласува.
За да научите повече за записването на пръстови отпечатъци и други неща, проверете предишния ни урок за свързване на сензора за пръстов отпечатък с Arduino, а също така проверете и нашето демонстрационно видео в края на този урок.
Работно обяснение:
Работа на тази биометрична система за гласуване за избори е малко сложен за начинаещи. На първо място, потребителят трябва да запише пръст или избиратели (в този код максималният лимит на избирателя е 25) с помощта на бутони / клавиши. За да направите това, потребителят трябва да натисне клавиша ENROLL и след това LCD ще поиска въвеждане на местоположение / ID, където пръстът ще бъде магазин. Така че сега потребителят трябва да въведе ID (Местоположение) с помощта на бутоните НАГОРЕ / НАДОЛУ. След като изберете Местоположение / ID потребителят трябва да натисне клавиш OK (клавиш DEL). Сега LCD ще поиска да поставите пръст върху модула за пръстови отпечатъци. Сега потребителят трябва да постави пръста си върху модула за отпечатване на пръсти. След това LCD ще поиска да премахне пръста от модула за отпечатване на пръсти и отново ще поиска поставяне на пръста. Сега потребителят трябва да постави пръста си отново върху модула за отпечатване на пръсти. Сега модулът за пръстови отпечатъци прави изображение и го преобразува в шаблони и го съхранява чрез избран идентификатор в паметта на модула за пръстови отпечатъци.Сега избирателят ще бъде регистриран и той / тя може да гласува. По същия метод всички избиратели могат да бъдат регистрирани в системата.
Сега, ако потребителят иска да премахне или изтрие който и да е от съхранените идентификатори, той / тя трябва да натисне клавиша DEL, след натискане на клавиша DEL, LCD ще поиска избрано местоположение, означава изберете ID, който трябва да бъде изтрит. Сега потребителят трябва да избере ID и да натисне бутона OK (същия клавиш DEL). Сега LCD ще ви уведоми, че пръстът е изтрит успешно.
Процес на гласуване:
Сега, когато потребителят иска да гласува, той / тя трябва да натисне клавиша за съвпадение и тогава зумерът ще издава звуков сигнал и светодиодът също ще свети и LCD ще поиска да поставите пръста върху модула за пръстови отпечатъци. Сега Arduino ще ви даде три опита да сложите пръста си. След поставяне на пръст върху модула за пръстови отпечатъци модулът за пръстови отпечатъци заснема изображение на пръста и открива неговите идентификатори в системата. Ако идентификаторът на пръста бъде открит, LCD ще покаже упълномощен избирател. Това означава, че потребителят е упълномощен да гласува. И тогава системата преминава към следващия етап за гласуване. Сега зеленият светодиод ще свети, това означава, че сега избирателят може да гласува за своите кандидати, като натисне пуснат бутон (от ЧЕРВЕНА дъска за хляб в тази демонстрация). Сега, ако същият избирател иска да гласува отново, системата ще го покаже „Вече гласува“ . Означава, че същият избирател не може да гласува отново и зумер ще издава звуков сигнал за 5 секунди. Ако някой нерегистриран потребител иска да гласува, тогава модулът за пръстови отпечатъци няма да открие своя идентификатор в системата и LCD ще покаже „ Няма намерен пръстов отпечатък“ .
CAN1, CAN2, CAN3 тук представлява Кандидат 1, Кандидат 2 и Кандидат 3, които са се кандидатирали.
Обяснение на веригата:
Схемата на този проект за гласуване на базата на FingerPrint е много проста, която съдържа Arduino за контрол на целия процес на проекта, бутон за записване, изтриване, избор на идентификатори и цел на гласуване, зумер за предупреждение, светодиоди за индикация и 16x2 LCD за инструкция Гласуване и показване на резултата също. Жълтият светодиод показва, че модулът за пръстови отпечатъци е готов да направи снимка на пръста, а зеленият светодиод показва, че системата е готова да гласува или да види резултатите.
Бутонът е директно свързан към щифт A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) и A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Резултат) на Arduino по отношение на земята. Жълтият светодиод е свързан към цифров пин D7 на Arduino по отношение на земята чрез 1k резистор, а зеленият LED е свързан към D6 на Arduino със същия метод. Rx и Tx на модула за пръстови отпечатъци са директно свързани на сериен щифт Tx и Rx на Arduino. Захранването 5v се използва за захранване на модул за отпечатване на пръсти, взет от дъската Arduino. На A5 също е свързан зумер. LCD 16x2 е конфигуриран в 4-битов режим и неговите RS, EN, D4, D5, D6 и D7 са директно свързани с цифрови щифтове D13, D12, D11, D10, D9 и D8 на Arduino.
Обяснение на програмата:
В една програма използвахме Adafruit Fingerprint Sensor Library за свързване на модула за пръстови отпечатъци с платката Arduino. Можете да проверите пълния код по-долу. Тук обясняваме основните функции на програмата Arduino.
Във функцията за настройка дадохме указания на дефинираните щифтове и стартирахме модула LCD и Fingerprint.
След него, във функция void loop () , изчакахме клавиша за проверка и натиснахме бутона Match, за да стартираме отпечатъка, за да вземем въвеждане и да сравним заснетия идентификатор на изображението със запазените идентификатори Ако се случи съвпадение, продължете със следващата стъпка.
цикъл void () {lcd.setCursor (0,0); lcd.print ("Натиснете бутона за съвпадение"); lcd.setCursor (0,1); lcd.print ("за стартиране на системата"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (зумер, HIGH); забавяне (200); digitalWrite (зумер, LOW); digitalWrite (indFinger, HIGH); за (int i = 0; i <3; i ++)…………………
Дадена функция void checkKeys () се използва за проверка на Регистриране или натискане на клавиша DEL или не и какво да се прави, ако се натисне. Ако бутонът ENROLL е натиснат, се извиква функцията Enroll () и се натиска бутон DEL, след което се извиква функцията delete ()
void checkKeys () {if (digitalRead (записване) == 0) {lcd.clear (); lcd.print ("Моля, изчакайте"); забавяне (1000); докато (digitalRead (записване) == 0); Записвам се(); } иначе ако (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Моля, изчакайте"); забавяне (1000); delet (); }}
Дадената функция се използва за въвеждане на идентификатор за изтриване и извикване на функция uint8_t deleteFingerprint (uint8_t id), която ще изтрие пръста от записите.
void delet () {int count = 0; lcd.clear (); lcd.print ("Изтриване на пръст"); lcd.setCursor (0,1); lcd.print ("Местоположение:"); while (1) {lcd.setCursor (9,1); lcd.print (брой); if (digitalRead (up) == 0) {count ++; ако (брой> 25) брой = 0; забавяне (500); }……………….
Дадената функция се използва за изтриване на пръстов отпечатък от записа на избрания идентификатор.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Моля, изчакайте"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Изтрит!"); lcd.clear (); lcd.print ("Figer Deleted"); lcd.setCursor (0,1); lcd.print ("Успешно"); забавяне (1000); } else {Serial.print ("Нещо не е наред"); lcd.clear (); lcd.print ("Нещо не е наред"); lcd.setCursor (0,1); lcd.print ("Опитайте отново по-късно"); забавяне (2000); връщане p; }}
Дадената функция се използва за вземане на изображение за отпечатване на пръсти и конвертирането им в шаблона и запазването му чрез избран идентификатор в паметта на модула за пръстови отпечатъци.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID на пръста:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Place Finger"); забавяне (2000); докато (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Дадената функция се използва за гласуване и показване на резултати:
void Vote () {lcd.clear (); lcd.print ("Моля, поставете"); lcd.setCursor (0,1); lcd.print ("Вашият глас"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (зумер, HIGH); забавяне (500); digitalWrite (зумер, LOW); забавяне (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Проверете пълния код и демонстрационното видео по- долу.