Рубрики
Схемы на PIC

Подключение датчика отпечатков пальцев к микроконтроллеру PIC

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

Ранее нашем сайте мы уже рассматривали подключение датчика отпечатков пальцев к микроконтроллеру AVR, платам Arduino и Raspberry Pi, в этой же статье мы рассмотрим его подключение к микроконтроллеру PIC16f877A. В нашем проекте мы сможем записывать новые отпечатки пальцев в систему, а также удалять уже имеющиеся в системе отпечатки пальцев.

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

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Модуль датчика отпечатков пальцев (купить на AliExpress).
  3. Кнопки или клавиатура с 4 кнопками (купить на AliExpress).
  4. ЖК дисплей 16х2 (купить на AliExpress).
  5. Потенциометр 10 кОм (купить на AliExpress).
  6. Программатор PICkit 3 (купить на AliExpress).
  7. Кварцевый генератор 18.432000 МГц.
  8. Конденсаторы 22 пФ (2шт.) (купить на AliExpress).
  9. Резисторы 150 Ом – 1 кОм (опционально) (купить на AliExpress).
  10. Светодиод (опционально) (купить на AliExpress).
  11. Источник напряжения питания 5v.
  12. Макетная или перфорированная плата, соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Схема проекта

Для управления нашим проектом мы будем использовать 4 кнопки. Кнопка 1 будет использоваться для проверки соответствия отпечатков пальцев и инкрементирования идентификатора (ID) отпечатка пальца при его сохранении или удаления из системы. Кнопка 2 будет использоваться для записи нового отпечатка пальцев и для декрементирования идентификатора (ID) отпечатка пальца при его сохранении или удаления из системы. Кнопка 3 будет использоваться для удаления сохраненного отпечатка пальца из системы, а кнопка 4 будет играть роль кнопки OK. Светодиод будет использоваться для индикации того, обнаружен ли отпечаток пальца или он соответствует заданному отпечатку.

В нашем проекте мы будем использовать модуль датчика отпечатков пальцев, который работает через последовательный порт связи (UART). С нашим микроконтроллером PIC он будет работать на скорости 57600 бод.

Схема подключения датчика отпечатков пальцев к микроконтроллеру PIC представлена на следующем рисунке.

Как видите, схема достаточно проста. Модуль датчика отпечатков пальцев подключен к последовательному порту (UART) микроконтроллера PIC. Для отображения информации системы используется ЖК дисплей 16×2. Его контакты данных d4, d5, d6 и d7 подключены к контактам RA0, RA1, RA2 и RA3 микроконтроллера соответственно. Потенциометр 10 кОм используется для регулировки контрастности ЖК дисплея.

Четыре кнопки (или четырехкнопочная клавиатура) подключены к контактам RD1, RD2 и RD порта PORTD RD0. Светодиод подключен к контакту RC3 порта PORTC. Для задания тактовой частоты микроконтроллера мы используем кварцевый генератор на 18.432000 MHz.

Общие принципы работы проекта

Для начала работы с проектом загрузите hex файл программы с помощью программатора (PIckit2, Pickit3 или другого подобного) в микроконтроллер PIC. После этого вы увидите приветственное сообщение на экране ЖК дисплея и затем на экране дисплея появится сообщение о выборе желаемой операции. Чтобы проверить отпечаток пальца нажмите кнопку 1, после чего на экране ЖК дисплея появится сообщение о том, что нужно поместить палец на датчик отпечатков пальцев. После того как вы поместите свой палец на модуль вы можете узнать сохранен ли уже ваш отпечаток пальца в системе или нет. Если сохранен, то на экране ЖК дисплея высветится идентификатор, под которым он сохранен, например, ‘ID:2’. Если не сохранен, на экране дисплея появится сообщение ‘Not Found’ (не найден).

Чтобы сохранить отпечаток пальца в систему необходимо нажать кнопку 2 и следовать инструкциям на экране ЖК дисплея.

Чтобы удалить отпечаток пальца из системы необходимо нажать кнопку 3. После этого на экране ЖК дисплея появится запрос о том, отпечаток пальца с каким идентификатором (ID) необходимо удалить. Затем используя кнопку инкрементирования (кнопка 1) или кнопку декрементирования (кнопка 2) необходимо выбрать нужный ID и нажать кнопку OK чтобы удалить его из системы. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

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

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В нашей программе мы используем формат кадра чтобы обмениваться данными с модулем отпечатков пальцев. Когда мы передаем на модуль кадр запроса данных он отвечает нам используя тот же самый формат кадра. Все доступные команды (форматы кадров) можно посмотреть в даташите или руководстве пользователя на модуль датчика отпечатков пальцев R305.

В программе мы используем формат кадра, приведенный на следующем рисунке.

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

После этого запрограммируем ряд функций для работы с ЖК дисплеем.

Также запрограммируем функцию для инициализации последовательного порта связи (UART).

Затем запрограммируем функции для передачи команд модулю отпечатков пальцев и приема информации от него.

Также запрограммируем функции, которые подготавливают данные для передачи модулю датчика отпечатков пальцев и декодируют данные, поступающие от модуля.

После этого запрограммируем 4 функции для реализации основных функций нашей системы безопасности:

  • unit getId() – функция для ввода идентификатора (ID) отпечатка пальца;
  • void matchFinger() – функция для проверки отпечатка пальца;
  • void enrolFinger() – функция для записи нового отпечатка пальца в систему;
  • void deleteFinger() – функция для удаления отпечатка пальца из системы.

В основной функции программы main мы будем инициализировать контакты ввода/вывода (GPIOs), ЖК дисплей, последовательный порт связи (UART) и проверять подключен ли датчик отпечатков пальцев к микроконтроллеру PIC или нет. Затем в цикле while мы будем проверять нажатия кнопок и в зависимости от их состояния выполнять необходимые действия.

Исходный код программы

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

Источник статьи

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

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