- Обязательные компоненты:
- Модуль датчика отпечатков пальцев в машине для голосования:
- Рабочее объяснение:
- Описание схемы:
- Пояснение к программе:
Все мы хорошо знакомы с электронными машинами для голосования, где ваш голос регистрируется в электронном виде, и вам не нужно использовать бюллетени для голосования на выборах. Сегодня безопасность является серьезной проблемой, и необходимо также гарантировать, что кто-то не сможет проголосовать дважды, поэтому эту проблему можно решить, введя голосование на основе отпечатков пальцев, когда человек может быть авторизован на основе его отпечатка пальца. Это также остановит поддельное голосование. Итак, сегодня мы создаем биометрическую машину для голосования на основе отпечатков пальцев с использованием Arduino.
Также проверьте наши предыдущие проекты машин для электронного голосования с использованием различных микроконтроллеров:
- Электронная машина для голосования с использованием Raspberry Pi
- Машина для голосования на основе RFID
- Проект электронной машины для голосования на базе микроконтроллера AVR
- Электронная машина для голосования с использованием Arduino
Обязательные компоненты:
- Ардуино Уно
- Модуль датчика отпечатков пальцев
- Нажмите на кнопки
- Светодиоды -2
- Резистор 1К -3
- Резистор 2,2 кОм
- Мощность
- Соединительные провода
- Зуммер
- ЖК-дисплей 16x2
- Хлебная доска
Модуль датчика отпечатков пальцев в машине для голосования:
Модуль датчика отпечатка пальца или сканер отпечатка пальца - это модуль, который захватывает изображение отпечатка пальца, затем преобразует его в эквивалентный шаблон и сохраняет их в своей памяти на выбранном идентификаторе (месте) с помощью Arduino. Здесь всем процессом управляет Arduino, например, снятие изображения отпечатка пальца, преобразование его в шаблоны, сохранение местоположения и т. Д.
В этой схеме машины для голосования по отпечатку пальца мы использовали модуль датчика отпечатка пальца для аутентификации истинного избирателя путем ввода его пальца в систему. Здесь мы используем 5 кнопок для сопоставления, регистрации / возврата, удаления / ОК, вверх и вниз. Клавиши Enroll и Del имеют здесь двойные функции. Клавиша регистрации используется для регистрации нового слепка пальца в системе, а также для функции спины. Означает, что когда пользователь хочет зарегистрировать новый палец, ему / ей нужно нажать клавишу регистрации, после чего ЖК-дисплей запрашивает идентификатор или место, где пользователь хочет сохранить отпечаток пальца. Теперь, если в это время пользователь не хочет продолжать, он / она может снова нажать кнопку регистрации, чтобы вернуться (на этот раз кнопка регистрации действует как кнопка возврата). Означает, что ключ регистрации имеет функцию регистрации и возврата. Клавиша DEL / OK также имеет ту же двойную функцию, как когда пользователь регистрирует новый палец, тогда ему / ей нужно выбрать идентификатор пальца или местоположение с помощью еще двух клавиш, а именно ВВЕРХ И ВНИЗ, теперь пользователю нужно нажать клавишу DEL / OK (на этот раз эта клавиша ведет себя как ОК), чтобы продолжить с выбранным идентификатором или местоположением. Ключ соответствия используется всякий раз, когда избиратель хочет проголосовать, тогда ему / ей необходимо сначала пройти аутентификацию для настоящего избирателя, удерживая палец на датчике отпечатка пальца, если он / она прошел эту аутентификацию, то он / она может проголосовать.
Чтобы узнать больше о регистрации отпечатков пальцев и других вещей, ознакомьтесь с нашим предыдущим руководством по взаимодействию датчика отпечатков пальцев с Arduino, а также посмотрите наше демонстрационное видео в конце этого руководства.
Рабочее объяснение:
Работа этой биометрической системы голосования на выборах немного сложнее для начинающих. Прежде всего, пользователю необходимо зарегистрировать палец или избирателей (в этом коде максимальное количество избирателя 25) с помощью кнопок / клавиш. Для этого пользователю необходимо нажать кнопку ENROLL, после чего на ЖК-дисплее появится запрос на ввод местоположения / идентификатора, где finger будет магазином. Итак, теперь пользователю необходимо ввести идентификатор (местоположение) с помощью клавиш ВВЕРХ / ВНИЗ. После выбора местоположения / идентификатора пользователю необходимо нажать кнопку OK (клавишу DEL). Теперь ЖК-экран попросит приложить палец к модулю отпечатка пальца. Теперь пользователю нужно положить палец на модуль отпечатков пальцев. Затем ЖК-дисплей попросит убрать палец с модуля отпечатка пальца и снова попросит приложить палец. Теперь пользователю нужно снова положить палец на модуль отпечатков пальцев. Теперь модуль отпечатка пальца берет изображение, преобразует его в шаблоны и сохраняет его по выбранному идентификатору в памяти модуля отпечатка пальца.Теперь избиратель будет зарегистрирован, и он сможет голосовать. Таким же способом в систему могут быть зарегистрированы все избиратели.
Теперь, если пользователь хочет удалить или удалить какой-либо из сохраненных идентификаторов, ему / ей нужно нажать клавишу DEL, после нажатия клавиши DEL, ЖК-дисплей попросит выбрать местоположение означает выбрать идентификатор, который будет удален. Теперь пользователю нужно выбрать ID и нажать кнопку OK (та же кнопка DEL). Теперь ЖК-дисплей сообщит вам, что палец был успешно удален.
Процесс голосования:
Теперь, когда пользователь хочет проголосовать, ему / ей нужно нажать клавишу соответствия, после чего раздастся звуковой сигнал, светодиод также будет светиться, а ЖК-дисплей попросит поместить палец на модуль отпечатка пальца. Теперь Arduino даст вам три попытки приложить палец. После размещения пальца над модулем отпечатков пальцев модуль отпечатков пальцев захватывает изображение пальца и обнаруживает, что его идентификаторы присутствуют в системе. Если обнаружен идентификатор пальца, на ЖК-дисплее отобразится авторизованный избиратель. Это означает, что пользователь имеет право голосовать. Затем система переходит к следующему этапу голосования. Теперь будет гореть зеленый светодиод, это означает, что теперь избиратель может голосовать за своих кандидатов, нажимая выбранную клавишу (из КРАСНОЙ макетной платы в этой демонстрации). Теперь, если тот же избиратель захочет проголосовать снова, система покажет ему «Уже проголосовало». . Означает, что тот же избиратель не может проголосовать снова, и зуммер будет издавать звуковой сигнал в течение 5 секунд. Если какой-либо Незарегистрированный пользователь хочет проголосовать, модуль отпечатков пальцев не обнаружит его идентификатор в системе, и на ЖК-дисплее появится сообщение «Отпечаток пальца не найден» .
CAN1, CAN2, CAN3 здесь представляют кандидата 1, кандидата 2 и кандидата 3, которые баллотировались на выборах.
Описание схемы:
Схема этого проекта машины для голосования на основе отпечатков пальцев очень проста и содержит Arduino для управления всем процессом проекта, кнопку для регистрации, удаления, выбора идентификаторов и цели голосования, зуммер для предупреждения, светодиоды для индикации и ЖК-дисплей 16x2 для инструкций. Избиратель и тоже показывает результат. Желтый светодиод указывает на то, что модуль отпечатков пальцев готов сделать снимок пальца, а зеленый светодиод указывает на то, что система готова принять участие в голосовании или просмотреть результаты.
Кнопка напрямую подключена к контактам A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) и A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Результат) Arduino относительно земли. Желтый светодиод подключается к цифровому выводу D7 Arduino относительно земли через резистор 1 кОм, а зеленый светодиод подключается к D6 Arduino тем же способом. Rx и Tx модуля отпечатков пальцев напрямую подключены к последовательным выводам Tx и Rx Arduino. Питание 5В используется для питания модуля отпечатков пальцев, снятого с платы Arduino. Зуммер также подключен к A5. ЖК-дисплей 16x2 настроен в 4-битном режиме, а его RS, EN, D4, D5, D6 и D7 напрямую подключены к цифровому выводу D13, D12, D11, D10, D9 и D8 Arduino.
Пояснение к программе:
В программе мы использовали библиотеку датчиков отпечатков пальцев Adafruit для взаимодействия модуля отпечатков пальцев с платой Arduino. Вы можете проверить полный код ниже. Здесь мы объясняем основные функции программы Arduino.
В функции настройки мы дали указания к определенным контактам и запустили модуль ЖК-дисплея и отпечатка пальца.
После этого в функции void loop () мы дождались клавиши проверки и нажали клавишу Match, чтобы запустить отпечаток пальца, чтобы принять ввод и сравнить идентификатор захваченного изображения с сохраненными идентификаторами. Если совпадение происходит, переходите к следующему шагу.
недействительный цикл () {lcd.setCursor (0,0); lcd.print («Нажмите клавишу соответствия»); lcd.setCursor (0,1); lcd.print («запустить систему»); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); если (digitalRead (совпадение) == 0) {digitalWrite (зуммер, ВЫСОКИЙ); задержка (200); digitalWrite (зуммер, LOW); digitalWrite (indFinger, HIGH); для (int i = 0; i <3; i ++)…………………
Данная функция void checkKeys () используется для проверки того, нажата ли клавиша Enroll или DEL и что делать, если она нажата. Если нажата клавиша ENROLL, вызывается функция Enroll () и нажимается клавиша DEL, вызывается функция delete () .
void checkKeys () {если (digitalRead (enroll) == 0) {lcd.clear (); lcd.print («Подождите»); задержка (1000); while (digitalRead (enroll) == 0); Enroll (); } иначе, если (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 ("Местоположение:"); в то время как (1) {lcd.setCursor (9,1); lcd.print (количество); если (digitalRead (вверх) == 0) {счет ++; если (count> 25) count = 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); return p; }}
Данная функция используется для получения изображения отпечатка пальца, преобразования его в шаблон и сохранения его по выбранному идентификатору в памяти модуля отпечатка пальца.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("идентификатор пальца:"); lcd.print (id); lcd.setCursor (0,1); lcd.print («Поместите палец»); задержка (2000); в то время как (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Данная функция используется для голосования и отображения результатов:
недействительным Голосование () {lcd.clear (); lcd.print («Пожалуйста, разместите»); lcd.setCursor (0,1); lcd.print («Ваш голос»); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (зуммер, ВЫСОКИЙ); задержка (500); digitalWrite (зуммер, LOW); задержка (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Ознакомьтесь с полным кодом и демонстрационным видео ниже.