Биометрическая система сканирования отпечатков пальцев на микроконтроллере AVR ATmega32


Как показывают многочисленные исследования в современном мире люди более склонны доверять машинам нежели другим людям. Сейчас, когда в мире активно развиваются такие технологии как искусственный интеллект, машинное обучение, чат-боты, синергия (совместная деятельность) между людьми и роботами с каждым годом все больше усиливается. В этой статье мы рассмотрим создание биометрической системы контроля доступа по отпечатку пальцев на основе микроконтроллера ATmega32 (семейство AVR). Эта система будет более надежной и больше защищена от обмана чем контроль посещений (доступа) вручную.

Биометрическая система сканирования отпечатков пальцев на микроконтроллере AVR ATmega32: внешний вид

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

Необходимые компоненты

  1. Микроконтроллер ATmega32 (купить на AliExpress).
  2. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
  3. Модуль считывания отпечатков пальцев r305 (купить на AliExpress).
  4. Кнопки (или мембранные кнопки) – 4 шт.
  5. Светодиод – 2 шт (купить на AliExpress).
  6. Резистор 1 кОм – 2 шт (купить на AliExpress).
  7. Резистор 2,2 кОм (купить на AliExpress).
  8. Адаптер питания на 12В.
  9. Соединительные провода.
  10. Звонок (зуммер) (купить на AliExpress).
  11. JHD_162ALCD (ЖК дисплей 16x2) (купить на AliExpress).
  12. Макетная плата.
  13. Модуль (часы) реального времени ds1307 или ds3231 (купить на AliExpress).
  14. Регулятор напряжения LM7805 (купить на AliExpress).
  15. Конденсаторы 10 и 1000 мкФ (купить на AliExpress).
  16. Burgstips male female (соединительные колодки).
  17. DC JACK (опционально).
  18. Транзистор BC547 (опционально).

Необходимые компоненты для биометрической системы сканирования отпечатков пальцев на микроконтроллере AVR ATmega32

Общие принципы работы схемы

В создаваемой нами системе контроля посещения (присутствия) на основе контроля отпечатков пальцев мы будем использовать датчик отпечатков пальцев чтобы идентифицировать конкретного человека. Мы будем использовать 4 кнопки чтобы записывать (вносить в список, регистрировать), удалять, инкрементировать, декрементировать данные отпечатков пальцев. Кнопка 1 будет использоваться для регистрации нового человека в системе. То есть когда будет нужно зарегистрировать новый отпечаток пальцев, то человеку будет необходимо нажать кнопку 1, после этого жидкокристаллический (ЖК) дисплей попросит его поместить палец на датчик отпечатков пальцев два раза, затем он попросит идентификатор (идентификационный) номер данного человека. Кнопка 2 также имеет двойную функцию, когда пользователь регистрирует новый палец, он должен будет выбрать себе идентификатор с помощью кнопок 3 и 4. После этого нажатием кнопки 1 (OK) он регистрирует выбранный идентификатор. Также кнопка 2 используется для сброса или удаления данных из энергонезависимой памяти (EEPROM) микроконтроллера.

Внешний вид датчика отпечатков пальцев

Датчик отпечатков пальцев "захватывает" изображение отпечатка пальца, конвертирует его в соответствующий шаблон и сохраняет его в своей памяти в соответствии с идентификатором (ID) человека, который будет храниться в микроконтроллере. Весь процесс происходит под управлением микроконтроллера: получение изображения отпечатка пальца, конвертирование его в шаблон, сохранение в памяти идентификатора и т.д.

Схема устройства

Схема устройства приведена на следующем рисунке.

Схема биометрической системы сканирования отпечатков пальцев на микроконтроллере AVR ATmega32

Микроконтроллер Atmega32 управляет всеми процессами на представленной схеме. Кнопки используются для записи (регистрации) пользователей, удаления, выбора идентификаторов, звонок – для индикации, а ЖК дисплей 16x2 выдает инструкции пользователю что делать в каждый момент времени.

Кнопки напрямую подсоединены к выводам микроконтроллера:

  • ENROL key 1 (кнопка регистрации) – к выводу PA2;
  • DEL key 2 (кнопка удаления) – к выводу PA3;
  • UP key 3 (кнопка инкрементирования) – к выводу PA0;
  • DOWN key 4 (кнопка декрементирования) – к выводу PA4.

Светодиод подсоединен к контакту PC2 и к "земле" через резистор 1 кОм. Контакты передачи (Tx) и приема (Rx) датчика отпечатков пальцев напрямую подсоединены к контактам последовательного порта микроконтроллера (PD0 и PD1). Вся схема запитывается от напряжения 5В, которое получается за счет использования регулятора напряжения LM7805, который запитывается от адаптера питания на 12В. Звонок подсоединен к контакту PC3. ЖК-дисплей используется в 4-битном режиме и его контакты RS, RW, EN, D4, D5, D6, и D7 напрямую подсоединены к контактам PB0, PB1, PB2, PB4, PB5, PB6, PB7 микроконтроллера. Модуль реального времени (RTC module) подсоединен к контактам PC0 и PC1, а контакт PD7 используется как "мягкий" (soft) вывод для получения текущего (реального) времени.

Как работает система доступа на основе отпечатков пальцев

Всегда, когда чей то палец прикладывается к датчику отпечатков пальцев, он захватывает изображение этого пальца и проверяет зарегистрирован ли какой-нибудь идентификатор (ID) с этим отпечатком в системе. Если идентификатор обнаруживается, то на ЖК дисплей выводится надпись что пользователь допущен, а звонок издает звуковой сигнал.

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

Внешний вид собранной конструкции

Пользователь может загрузить данные доступа при помощи нажатия и удержания клавиши 4. Когда вы подадите питание на схему и подождете некоторое время, на экране ЖК дисплея высветится надпись ‘Downloading....’ (загрузка). Пользователь может видеть эти данные доступа на мониторе, в представленном программном коде UART программируется на контакт PD7 – в качестве передающего контакта (Tx) чтобы передавать данные на терминал. Но необходим USB конвертер чтобы можно было посмотреть данные по монитору.

Если пользователю необходимо удалить все данные, то тогда он должен нажать и удерживать кнопку 2. Спустя некоторое время на экране ЖК дисплея высветится надпись ‘Please wait…’ (пожалуйста подождите), а затем ‘Record Deleted successfully’ (запись удалена успешно). Эти два шага не показаны в видео, представленном в конце статьи.

Объяснение кода программы

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

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

Далее определим несколько функций, которые будут нам нужны для взаимодействия с ЖК дисплеем. С ЖК дисплеем будем взаимодействовать в 4-битном режиме. Также определим несколько функций, которые будут нам нужны для инициализации последовательного порта (UART) и обмена данными между датчиком отпечатков пальцев и микроконтроллером.

Теперь определим еще ряд функций для последовательного порта (UART), которые будут использоваться для программного (software) UART. Он будет использоваться для передачи сохраненных данных в компьютер через последовательный терминал. Эти функции основаны на использовании программной задержки (delay-based) и не используют прерывания. Для данного UART (последовательного порта) мы будем использовать только передающий сигнал (tx signal) со скоростью 9600 бод/с.

Далее определим функции, которые будут отвечать за отображение реального времени на ЖК дисплее. Представленные ниже функции будут использоваться для записи данных доступа в EEPROM и чтения их оттуда.

Далее идут функции, которые будут отвечать за чтение изображения отпечатка пальца, конвертирования его в соответствующий шаблон, сравнения его с хранящимися изображениями отпечатков пальцев и показе результатов на экране ЖК дисплея.

Далее идет функция, используемая для регистрации нового отпечатка пальца и отображения результата (статуса) на ЖК дисплее. Следующая за ней функция используется для удаления хранящегося отпечатка пальца из модуля с помощью его идентификатора (id number) и отображения статуса этой операции на ЖК дисплее. 

Следующая функция ответственна за передачу данных доступа к последовательному терминалу при помощи программного (soft) UART (контакт PD7) и TTL к USB конвертеру.

Следующая функция используется для удаления данных доступа из энергонезависимой памяти (EEPROM) микроконтроллера.

В функции main мы инициализируем все используемые модули и контакты ввода/вывода общего назначения. Также в ней будут представлены все контролирующие (управляющие) события.

Полный текст программы на языке С (Си)

В этом разделе статьи представлен полный текст программы. Буду надеяться что эксперименты с этой конструкцией доставят вам немало удовольствия. Если у вас есть вопросы по работе этого проекта можете задать их в комментариях к данной статье. Также, если кому интересно, могу написать адрес оригинала этой статьи (он на английском языке). Буду рад если поможете исправить неточности или опечатки в статье – все таки статья достаточно большая и не очень легкая для понимания, а все мы люди (следовательно, можем делать иногда ошибки).

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
4 446 просмотров

Комментарии

Биометрическая система сканирования отпечатков пальцев на микроконтроллере AVR ATmega32 — 12 комментариев

  1. Где можно найти библиотеки с модулями по типу DS1307/DS3231 и сканера отпечатков пальцев для симуляции в протеусе.

  2. Такой вопрос для чего нужен транзистор BC547, и куда его подключать схеме. А так же что будет если убрать данный транзистор из схемы?

    • На представленной схеме данный транзистор не используется, но при желании с его помощью можно к микроконтроллеру AVR подключить устройства, для управления которыми тока с контактов микроконтроллера недостаточно, например, мощный светодиод вместо светодиода D2 в схеме. Как это сделано, к примеру, в данной статье (только в ней используется другой транзистор, но принцип тот же).

  3. Функции R2 и R1 каковы тут? и что будет если их убрать, ну или изменить величину сопротивления в большую или меньшую сторону?

    • Резисторы R2 и R1 регулируют параметры отображения изображения на ЖК дисплее. Их номиналы можно изменить и, насколько я понимаю (но 100% гарантии именно для этой схемы дать не могу) их можно убрать совсем потому что большинство других схем на моем сайте, использующие ЖК дисплеи, не содержат этих резисторов

  4. Вопрос: какую функцию тут играют светодиод D2 и еще J1 - это просто выводы для джамперов?
    и еще Чертежа печатной платы случайно нету?

    • Cветодиод D2 - да, действительно, контакт для него в программе инициализируется, но потом не используется. Видимо, разработчики про него забыли. Я думаю он должен сигнализировать о каком-нибудь событии - например, отпечаток пальца правильный или неправильный, просто эту строчку забыли прописать в программе.
      J1 - да, это просто выводы. Чертежа печатной платы к этому проекту нет, к сожалению.
      Но если вам интересно, на мой взгляд, с датчиком отпечатков пальцев намного проще с помощью Arduino работать (вот статья на эту тему - из нее можно и некоторые идеи почерпнуть для доработки этого проекта), чем с с помощью микроконтроллера AVR

        • Ну 100% гарантии я дать не могу поскольку я сам этот проект не собирал, а статья переводная с иностранного сайта. Представленное видео доказывает что он рабочий, но, к сожалению, из-за человеческого фактора возможны небольшие опечатки в программе - вероятность этого мала, но все же она ненулевая. Могу дать ссылку на первоисточник статьи, если нужно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *