Оглавление:

Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: 4 шага (с изображениями)
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: 4 шага (с изображениями)

Видео: Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: 4 шага (с изображениями)

Видео: Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino: 4 шага (с изображениями)
Видео: Биометрическая идентификация от АЛПРО 2024, Июнь
Anonim
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino
Биометрическая машина для голосования на основе отпечатков пальцев с использованием Arduino

Все мы знаем о существующей электронной машине для голосования, в которой пользователь должен нажать кнопку, чтобы отдать голос. Но эти машины с самого начала подвергались критике за закалку. Таким образом, правительство планирует внедрить машину для голосования по отпечаткам пальцев, где пользователи могут голосовать на основе отпечатка своего отпечатка пальца. Эта система не только устранит возможность дублирования голосов, но и предотвратит любые манипуляции.

Итак, в этом проекте мы собираемся построить прототип биометрической машины для голосования с использованием Arduino Uno, TFT-дисплея и датчика отпечатков пальцев. Ранее мы использовали датчик отпечатков пальцев R305 с NodeMCU для создания системы посещаемости на основе биометрических данных, но здесь мы будем использовать усовершенствованный датчик отпечатков пальцев GT-511C3 с Arduino.

Шаг 1. Компоненты, необходимые для создания биометрической машины для голосования

  • Ардуино Уно
  • Экран 2,4 дюйма TFT LCD
  • Датчик отпечатков пальцев GT-511C3

Этот 2,4-дюймовый TFT-дисплей ранее использовался с Arduino для создания системы заказа меню ресторана на основе Интернета вещей.

Шаг 2: Принципиальная схема биометрической машины для голосования с использованием Arduino

Принципиальная схема биометрической машины для голосования с использованием Arduino
Принципиальная схема биометрической машины для голосования с использованием Arduino

Принципиальная схема для этого проекта очень проста, поскольку мы подключаем только TFT-дисплей и модуль датчика отпечатков пальцев к Arduino Uno. Контакты VCC и GND датчика отпечатков пальцев подключены к контактам 5V и GND Arduino, а контакты TX и RX подключены к цифровым контактам 11 и 12 Arduino Uno.

ЖК-экран TFT с диагональю 2,4 дюйма представляет собой экран Arduino Shield и может быть установлен непосредственно на Arduino Uno, как показано на рисунке ниже. TFT-дисплей имеет 28 контактов, которые идеально подходят для Arduino Uno, поэтому мне пришлось припаять датчик отпечатков пальцев на задней стороне Arduino.

Шаг 3. Исходный код и пошаговое объяснение кода

Полный код этого проекта системы голосования по отпечаткам пальцев с использованием Arduino приведен в конце статьи; здесь мы объясняем некоторые важные функции кода.

В коде используются библиотеки SPFD5408, Software Serial и FPS_GT511C3. Библиотека SPFD5408 - это модифицированная версия исходной библиотеки Adafruit. Эти файлы библиотеки можно загрузить по приведенным ниже ссылкам:

  • Библиотека SPFD5408
  • Программное обеспечение Последовательный
  • FPS_GT511C3

После включения библиотек и определения некоторых важных параметров мы можем перейти к программной части. В этой программе задействованы три секции. Один из них - создание пользовательского интерфейса машины для голосования, второй - получение точек касания для кнопок и обнаружение кнопок на основе касания и, наконец, вычисление результатов и их сохранение в памяти Arduino.

1. Создание UI:

Я создал простой интерфейс с тремя кнопками и названием проекта. Библиотека TFT-дисплея позволяет рисовать линии, прямоугольники, круги, символы, строки и многое другое любого предпочтительного цвета и размера. Здесь две прямоугольные кнопки создаются с помощью функций fillRoundRect и drawRoundRect. Синтаксис функции tft.drawRoundRect приведен ниже:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)

Где:

x0 = координата X начальной точки прямоугольного

y0 = координата Y начальной точки прямоугольного

w = Ширина прямоугольного

h = Высота прямоугольника

radius = Радиус скругленного угла

color = Цвет прямоугольника.

void drawHome ()

{

tft.fillScreen (БЕЛЫЙ);

tft.drawRoundRect (0, 0, 319, 240, 8, БЕЛЫЙ); // Граница страницы

tft.fillRoundRect (10, 70, 220, 50, 8, ЗОЛОТО);

tft.drawRoundRect (10, 70, 220, 50, 8, БЕЛЫЙ); //Голосование

tft.fillRoundRect (10, 160, 220, 50, 8, ЗОЛОТО);

tft.drawRoundRect (10, 160, 220, 50, 8, БЕЛЫЙ); //Зарегистрироваться

tft.fillRoundRect (10, 250, 220, 50, 8, ЗОЛОТО); //Результат

tft.drawRoundRect (10, 250, 220, 50, 8, БЕЛЫЙ);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print («Голосование»);

tft.setCursor (57, 29);

tft.print («Машина»);

tft.setTextSize (3);

tft.setTextColor (БЕЛЫЙ);

tft.setCursor (25, 82);

tft.print («Кандидат 1»);

tft.setCursor (25, 172);

tft.print («Кандидат 2»);

tft.setCursor (25, 262);

tft.print («Кандидат 3»);

}

2. Получение точек касания и кнопок обнаружения:

Теперь во втором разделе кода мы обнаружим точки касания кнопки, а затем будем использовать эти точки для прогнозирования кнопки. Функция ts.getPoint () используется для обнаружения прикосновения пользователя к TFT-дисплею. ts.getPoint дает необработанные значения АЦП для затронутой области. Эти значения RAW ADC затем преобразуются в пиксельные координаты с помощью функции карты.

TSPoint p = ts.getPoint ();

если (p.z> ts.pressureThreshhold)

{

p.x = карта (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = карта (p.y, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X: ");

//Serial.print(p.x);

//Serial.print("Y: ");

//Serial.print(p.y);

Теперь, когда мы знаем координаты X и Y для каждой кнопки, мы можем предсказать, где пользователь коснулся, используя оператор «if».

if (p.x> 70 && p.x 10 && p.y МИН ДАВЛЕНИЕ && p.z <МАКСИМАЛЬНОЕ ДАВЛЕНИЕ)

{

Serial.println («Кандидат 1»);

Когда избиратель нажимает кнопку кандидата, ему будет предложено отсканировать палец на датчике отпечатков пальцев. Если finger ID авторизован, избиратель может голосовать. Если какой-либо Незарегистрированный пользователь хочет проголосовать, модуль отпечатков пальцев не обнаружит его идентификатор в системе, и на дисплее появится сообщение «Извините, вы не можете проголосовать».

если (fps. IsPressFinger ())

{

fps. CaptureFinger (ложь);

int id = fps. Identify1_N ();

если (id <200)

{

msg = "Кандидат 1";

голосование1 ++;

EEPROM.write (0, голос1);

tft.setCursor (42, 170);

tft.print («Спасибо»);

задержка (3000);

drawHome ();

3. Результат:

Последний шаг - получение подсчета голосов из памяти EEPROM и сравнение голосов всех трех кандидатов. Побеждает кандидат с наибольшим количеством голосов. Результат можно получить только с монитора последовательного порта и не будет отображаться на экране TFT.

голосование1 = EEPROM.read (0);

голосование2 = EEPROM.read (1);

голосование3 = EEPROM.read (2);

если (голос)

{

если ((голосование1> голосование2 && голосование1> голосование3))

{

Serial.print («Can1 Wins»);

задержка (2000);

}

Шаг 4: Тестирование системы голосования по отпечатку пальца с помощью Arduino

Чтобы протестировать проект, подключите Arduino Uno к ноутбуку и загрузите указанный код. После загрузки кода на TFT-дисплее должно отображаться имя кандидата. Когда кто-то нажимает на имя кандидата, устройство попросит отсканировать сканер отпечатков пальцев. Если отпечаток действителен, то голос пользователя будет засчитан, но в случае, если шаблон не соответствует записям в базе данных, в доступе для голосования будет отказано. Общее количество голосов за каждого кандидата будет сохранено в EEPROM, и победит кандидат, набравший наибольшее количество голосов.

Надеюсь, вам понравился урок и вы узнали что-то полезное. Если у вас есть какие-либо вопросы, сообщите нам об этом в разделе комментариев ниже, а также подпишитесь на нас на Instructable, чтобы увидеть больше таких интересных проектов.

Рекомендуемые: