Рубрики
Схемы на 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. Макетная или перфорированная плата, соединительные провода.

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

Для управления нашим проектом мы будем использовать 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 не будет опубликован. Обязательные поля помечены *