- Необхідні компоненти:
- Модуль датчика відбитків пальців у голосувальній машині:
- Робоче пояснення:
- Пояснення схеми:
- Пояснення програми:
Ми всі добре знайомі з електронними голосувальними машинами, де ваш голос реєструється в електронному вигляді, і вам не потрібно використовувати бюлетень для голосування на виборах. Сьогодні безпека є головною проблемою, і також потрібно переконатись, що хтось не може проголосувати двічі, тому цю проблему можна вирішити, запровадивши голосування на основі відбитків пальців, де особа може бути уповноважена на основі відбитка пальця. Це також зупинить фальшиве голосування. Отже, сьогодні ми створюємо біометричну голосувальну машину на основі FingerPrint з використанням Arduino.
Також перевірте наші попередні проекти електронного голосування, використовуючи різні мікроконтролери:
- Електронна машина для голосування за допомогою Raspberry Pi
- Голосовий апарат на основі RFID
- Проект електронного голосування на базі мікроконтролера AVR
- Електронна машина для голосування за допомогою Arduino
Необхідні компоненти:
- Arduino Uno
- Модуль датчика відбитків пальців
- Кнопки
- Світлодіоди -2
- Резистор 1К -3
- 2,2 К резистор
- Потужність
- Підключення проводів
- Зумер
- РК-дисплей 16x2
- Хлібна дошка
Модуль датчика відбитків пальців у голосувальній машині:
Модуль датчика відбитків пальців або сканер відбитків пальців - це модуль, який фіксує зображення відбитка пальця, а потім перетворює його в еквівалентний шаблон і зберігає у своїй пам'яті на вибраному ідентифікаторі (розташуванні) Arduino. Тут усім процесом керує Arduino, наприклад, знімання відбитків пальців, перетворення його на шаблони, зберігання розташування тощо.
У цій схемі голосувальної машини FingerPrint ми використовували модуль датчика відбитків пальців для автентифікації справжнього виборця, ввівши в систему їх пальці. Тут ми використовуємо 5 кнопок для відповідності, реєстрації / назад, видалення / OK, вгору та вниз. Клавіша реєстрації та клавіша Del мають тут подвійні функції. Клавіша реєстрації використовується для реєстрації нового відбитка пальця в системі та функції повернення назад. Означає, коли користувач хоче зареєструвати новий палець, тоді йому / їй потрібно натиснути клавішу реєстрації, тоді РК-екран запитує ідентифікатор або місце, де користувач хоче зберігати вихідні дані відбитків пальців. Тепер, якщо в цей час користувач не хоче продовжувати далі, тоді він / вона може знову натиснути клавішу реєстрації, щоб повернутися назад (цього разу клавіша реєстрації поводиться як клавіша Назад). Значить клавіша реєстрації має функцію реєстрації та повернення. Клавіша DEL / OK також має таку ж подвійну функцію, як коли користувач реєструє новий палець, тоді йому / їй потрібно вибрати ідентифікатор пальця або місце розташування, використовуючи ще дві клавіші, а саме ВГОРУ І ВНИЗ, тепер користувачеві потрібно натиснути клавішу DEL / OK (цього разу ця клавіша поводиться як ОК), щоб продовжуйте з вибраним посвідченням особи або місцем розташування. Ключ відповідності використовується для кожного випадку, коли виборець хоче проголосувати, тоді йому / їй потрібно спочатку автентифікувати справжнього виборця, тримаючи палець на датчику відбитків пальців, якщо він / вона пройшов цю аутентифікацію, тоді він / вона може проголосувати.
Щоб дізнатися більше про реєстрацію відбитків пальців та інші речі, перегляньте наш попередній підручник із взаємодії датчика відбитків пальців з Arduino, а також перегляньте наше демонстраційне відео в кінці цього посібника.
Робоче пояснення:
Робота цієї біометричної системи голосування на виборах трохи складний для початківців. Перш за все, користувачеві потрібно записати пальця або виборців (у цьому коді максимальне обмеження виборця - 25) за допомогою кнопок / клавіш. Для цього користувачеві потрібно натиснути клавішу ENROLL, а потім на РК-дисплеї з'явиться запит на введення місця / ідентифікатора, де пальцем буде магазин. Отже, тепер користувачеві потрібно ввести ідентифікатор (розташування) за допомогою клавіш «ВГОРУ / ВНИЗ». Після вибору Розташування / Ідентифікатор користувачеві потрібно натиснути клавішу OK (клавіша DEL). Тепер РК-екран попросить розмістити палець над модулем відбитків пальців. Тепер користувачеві потрібно покласти палець на модуль друку пальців. Потім РК-дисплей попросить видалити палець з модуля відбитків пальців і знову попросить помістити палець. Тепер користувачеві потрібно знову покласти палець на модуль друку пальців. Тепер модуль відбитків пальців робить зображення, перетворює його у шаблони та зберігає за вибраним ідентифікатором у пам’яті модуля відбитків пальців.Тепер виборець буде зареєстрований і він / вона може проголосувати. Цим самим способом усі виборці можуть бути зареєстровані в системі.
Тепер, якщо користувач хоче видалити або видалити будь-який із збережених ідентифікаторів, йому / їй потрібно натиснути клавішу DEL, після натискання клавіші DEL РК-дисплей запитає про вибір місця, що означає вибрати ідентифікатор, який потрібно видалити. Тепер користувачеві потрібно вибрати ідентифікатор та натиснути клавішу OK (та сама клавіша DEL). Тепер РК-дисплей повідомить вас, що палець успішно видалено.
Процес голосування:
Тепер, коли користувач хоче проголосувати, йому / їй потрібно натиснути клавішу відповідності, і тоді звуковий сигнал подасть звуковий сигнал, а світлодіодний індикатор також засвітиться, а РК-дисплей запитає місце пальця над модулем відбитків пальців. Тепер Arduino дасть вам три спроби покласти палець. Після наведення пальця на модуль відбитків пальців модуль відбитків знімає зображення пальця, знаходять його ідентифікатори в системі. Якщо виявлено ідентифікатор пальця, РК-дисплей покаже авторизованого виборця. Це означає, що користувач має право голосувати. А потім система переходить до наступного етапу для голосування. Тепер зелений світлодіод буде світитись, це означає, що тепер виборець може проголосувати за своїх кандидатів, натиснувши відповідну клавішу (від КРАСНОЇ дошки хліба в цій демонстрації). Тепер, якщо той самий виборець хоче проголосувати ще раз, система покаже його "Вже проголосував" . Означає, що той самий виборець не може проголосувати ще раз, і зумер подасть звуковий сигнал протягом 5 секунд. Якщо будь-який зареєстрований користувач хоче проголосувати, тоді модуль відбитків пальців не виявить свій ідентифікатор у системі, і на РК-дисплеї з'явиться повідомлення " Відбиток пальця не знайдено" .
CAN1, CAN2, CAN3 тут представляє кандидата 1, кандидата 2 та кандидата 3, які висунули свою кандидатуру.
Пояснення схеми:
Схема цього проекту голосування на базі FingerPrint дуже проста, що містить Arduino для контролю всього процесу проекту, кнопку для реєстрації, видалення, вибору ідентифікаторів та мети голосування, звуковий сигнал для попередження, світлодіоди для індикації та 16x2 РК-дисплей для інструктажу Виборець і також показує результат. Жовтий світлодіод вказує на те, що модуль відбитків пальців готовий зробити знімок пальця, а зелений світлодіод - на те, що система готова взяти участь у голосуванні або побачити результати.
Кнопка безпосередньо підключена до штифтів A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) і A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Результат) Arduino щодо землі. Жовтий світлодіод підключається до цифрового виводу D7 Arduino щодо заземлення через резистор 1k, а зелений світлодіод підключається до D6 Arduino тим же методом. Модулі Rx і Tx відбитків пальців безпосередньо підключені на послідовних виводах Tx і Rx Arduino. Блок живлення 5 В використовується для живлення модуля відбитків пальців, взятого з плати Arduino. На А5 також підключений зумер. РК-дисплей 16x2 налаштований у 4-розрядному режимі, а його RS, EN, D4, D5, D6 та D7 безпосередньо підключені до цифрових виводів D13, D12, D11, D10, D9 та D8 Arduino.
Пояснення програми:
У програмі ми використовували бібліотеку датчиків відбитків пальців Adafruit для взаємодії модуля відбитків пальців з платою Arduino. Ви можете перевірити повний код нижче. Тут ми пояснюємо основні функції програми Arduino.
У функції налаштування ми дали вказівки визначеним контактам і ініціювали РК-дисплей та модуль відбитків пальців.
Після цього, у функції 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 (enroll) == 0) {lcd.clear (); lcd.print ("Будь ласка, почекайте"); затримка (1000); while (digitalRead (enroll) == 0); Зареєструватися (); } ще if (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 ("Малюнок видалено"); 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 ("ідентифікатор пальця:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Розмістіть палець"); затримка (2000); while (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)…………………
Перевірте повний код та демонстраційне відео нижче.