Как программировать сканер отпечатка пальца
Каждый палец выполняет запуск определенной последовательности команд. Удобно! Каждый палец выполняет запуск определенной последовательности команд. Удобно!
Мы будем использовать популярное приложение " Tasker ". Также нам потребуется компьютер. Мы не будем получать права суперпользователя (их еще называют "root"), но режим отладки нам потребуется для того, чтобы выдать программе " Tasker " права на идентификацию каждого пальца. Делается это только один раз. После того как " Tasker " запеленгует ваши пальцы, даже при перезагрузке, либо полном выключении смартфона компьютер больше не потребуется. Давайте я расскажу, что нужно будет сделать (все ссылки на необходимые файлы будут в самом конце материала).
В настройках разработчика нет ничего страшного | их всегда при желании можно отключить. Кроме того, в отличие от root прав, они не лишают вас гарантии. В настройках разработчика нет ничего страшного | их всегда при желании можно отключить. Кроме того, в отличие от root прав, они не лишают вас гарантии.Настраиваем смартфон. Проходим в приложение "Настройки", далее "О телефоне" (у кого-нибудь еще может быть промежуточное меню "Система", и только уже потом появится "О телефоне"). Тут вам необходимо будет несколько раз тапнуть (коснуться) раздел меню "Номер сборки" | владельцам же Xiaomi "Версия MIUI". Когда появится надпись "Вы стали разработчиком!" в настройках Android появится пункт меню "Для разработчиков" (еще он может быть спрятан в "Расширенных" или "Дополнительных настройках"). Нам необходимо включить:
- "Отладка по USB"
- и "Отладка по USB (Настройки безопасности)" - у владельцев старых версий Android подобного пункта нет, и если его нет, то значит вам его включать не нужно
Подключаем смартфон к компьютеру, выбираем режим зарядки. Теперь загружаем "минималистичный набор для разработчика" (это не я так придумал, а ребята из XDA Developers | официальный набор от Google весит несколько гигабайт, а здесь пакет всего лишь на 40 мегабайт) > я ссылка на архив, кликни на меня < Его содержимое необходимо распаковать в корень диска C. Получится следующий адрес:
Безопасность является одной из основных проблем в современном обществе, и цифровые замки стали важной частью нынешних систем безопасности. Существует много типов систем безопасности, например, на основе датчиков движения, на основе радиочастотных меток, цифровых кодовых замков и т.д. В этом проекте мы рассмотрим подключение модуля датчика отпечатка пальцев к плате Arduino и создадим биометрическую систему безопасности c использованием Arduino и датчика отпечатков пальцев. Отпечаток пальца считается одним из самых безопасных способов для блокировки или разблокировки любой системы, поскольку он однозначно идентифицирует конкретного человека и его достаточно сложно скопировать.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Модуль датчика отпечатков пальцев (купить на AliExpress).
- ЖК дисплей 16х2 (купить на AliExpress).
- Серводвигатель (сервомотор) (купить на AliExpress).
- Кнопка (4 шт.)
- Светодиод (2 шт.)(купить на AliExpress).
- Резистор 1 кОм (3 шт.) (купить на AliExpress).
- Резистор 2,2 кОм (купить на AliExpress).
- Источник питания.
- Макетная плата.
- Соединительные провода.
- Картонная коробка.
Модуль отпечатков пальцев и Arduino
Модуль отпечатков пальцев или сканер отпечатков пальцев - это модуль, который захватывает печатное изображение пальца, а затем преобразует его в эквивалентный шаблон и сохраняет их в своей памяти на выбранном идентификаторе (местоположении) с помощью Arduino. Весь процесс управляется платой Arduino: считывание изображения отпечатка пальца, конвертирование его в шаблоны, хранение местоположения и т.д.
В этом проекте биометрической системы безопасности на основе платы Arduino мы использовали модуль датчика отпечатков пальцев для получения отпечатков пальцев (или отпечатка большого пальца) в качестве входных данных в системе. Мы будем использовать 4 кнопки: регистрация/назад, удаление/OK, вверх и вниз. Каждая кнопка имеет двойные функции. Кнопка для регистрации (enroll) используется для регистрации нового отпечатка пальца в системе и возвращения назад. Когда пользователь хочет зарегистрировать новый палец, то ему нужно нажать клавишу enroll, а затем ЖК-дисплей запросит идентификатор или местоположение, где пользователь хочет сохранить отпечаток пальца. Но если в это время пользователь не хочет продолжать дальше, то он/она может снова нажать клавишу enroll, чтобы вернуться назад (то есть клавиша (кнопка) enroll в этой ситуации выполняет роль клавиши возврата). То есть кнопка enroll имеет как функцию регистрации, так и функцию возврата. Клавиша DEL/OK также имеет двойную функцию: когда пользователь регистрирует новый палец, то ему/ей нужно выбрать идентификатор пальца или местоположение, используя еще две клавиши, а именно UP/MATCH и DOWN/MATCH (которые также имеют двойные функции), после чего пользователю нужно нажать клавишу DEL/OK (на этот раз эта клавиша ведет себя как OK), чтобы продолжить с выбранным идентификатором или местоположением. Клавиши UP/DOWN также поддерживают функцию сопоставления отпечатков пальцев. Немного трудновато написано, но все станет ясно если вы посмотрите видео, приведенное в конце статьи – там все эти процессы показаны более подробно.
В этом проекте мы используем картонную коробку и сервомотор, которые работают как ворота (безопасности) и открываются только тогда, когда система считывает правильный отпечаток пальца. Желтый светодиод показывает, что ворота закрыты, а зеленый светодиод - что ворота открыты.
Объяснение работы проекта
Работа рассматриваемого нами дверного замка на основе датчика отпечатка пальцев достаточно проста. В этом проекте мы использовали ворота, которые будут открыты, когда мы помещаем сохраненный палец в модуль отпечатков пальцев. Но перед этим пользователю необходимо зарегистрировать палец в системе. Для этого пользователю необходимо нажать клавишу ENROLL, а затем ЖК-дисплей запросит у него местоположение/ID (идентификатор), где будет храниться отпечаток пальца. После этого пользователю необходимо ввести идентификатор/ (местоположение) с помощью клавиш UP/DOWN. После выбора Location (местоположения)/ID пользователю необходимо нажать клавишу OK. Теперь ЖК-дисплей попросит разместить палец над модулем отпечатков пальцев. После этого пользователю нужно положить свой палец на модуль отпечатков пальцев. Затем ЖК-дисплей попросит удалить палец из модуля отпечатков пальцев и снова попросит разместить палец. Теперь пользователю нужно снова положить палец на модуль отпечатков пальцев. После этого модуль отпечатков пальцев захватывает изображение пальца, преобразует его в шаблоны и сохраняет его по выбранному идентификатору в памяти модуля отпечатков пальцев. Теперь пользователь может открыть ворота, поместив тот же палец, который он добавил (зарегистрировал в системе). После помещения пальца в датчик отпечатков пальцев необходимо нажать кнопку MATCH (UP/Down key). Аналогичным способом можно добавить и другие отпечатки пальцев в систему. Более подробно все эти процессы показаны в видео в конце статьи.
Если пользователь хочет удалить любой из сохраненных идентификаторов, то ему нужно нажать клавишу DEL - после нажатия клавиши DEL ЖК-дисплей попросит выбрать местоположение/идентификатор, который необходимо удалить. После этого пользователю необходимо выбрать ID (идентификатор) и нажать клавишу OK (та же клавиша DEL). После завершения этого шага на ЖК дисплее высветится надпись о том, что палец (с выбранным идентификатором) был успешно из системы. После этого пользователь может проверить, был ли он (его палец) удален или нет, поместив тот же палец на модуль отпечатков пальцев и нажав клавишу MATCH (UP/Down key).
Работа схемы
Схема нашей биометрической системы безопасности на основе платы Arduino представлена на следующем рисунке. Плата Arduino управляет всеми процессами в схеме: считывает нажатия кнопок, отображает информацию на ЖК дисплее, принимает информацию от датчика отпечатков пальцев, дает команды сервомотору.
Кнопки непосредственно подсоединены к контактам D14(ENROL),D15(DEL), D16(UP) и D17(DOWN) платы Arduino. Вторые контакты кнопок замкнуты на землю. Желтый светодиод подключен к контакту D7 платы Arduino, а зеленый светодиод – к контакту D6 платы Arduino. Контакты Rx и Tx модуля датчика отпечатков пальцев непосредственно подключены к контактам D2 и D3 платы Arduino, на которых с помощью библиотеки последовательной связи (Software Serial Library) организуется порт последовательной связи.
Примечание : здесь D14, D15, D16, D17 являются контактами A0, A1, A2, A3 соответственно.
Питание 5 В используется для питания модуля датчика отпечатков пальцев и оно берется с платы Arduino. Сервомотор подключен к цифровому контакту D5 платы Arduino, на котором можно задействовать широтно-импульсную модуляцию, с помощью которой и управляется сервомотор. ЖК дисплей подключен к плате Arduino в 4-битном режиме и его контакты RS, EN, D4, D5, D6 и D7 непосредственно соединены с цифровыми контактами D13, D12, D11, D10, D9 и D8 платы Arduino.
Объяснение работы программы
В программе мы использовали Adafruit Fingerprint Sensor Library для подключения модуля датчика отпечатков пальцев к плате Arduino. Полный код программы приведен в конце статьи, здесь же объяснены его наиболее важные части.
Следующий фрагмент кода используется для считывания отпечатка пальца и выполнение определенных действий в зависимости от результата проверки отпечатка пальца (есть ли он в системе или нет). Если отпечаток пальца корректен, то ворота открываются, иначе ничего не происходит.
Устройство приехало в Украину за две недели, в обычном желтом пакете.
К сожалению, удобных ушек для крепления — не предусмотрено.
Комплектация — собственно устройство и косичка проводов.
Чтобы получить от устройства пользу, нужно уметь программировать Arduino.
Компания Adafruit предлагает такие же устройства, но здесь, похоже, китайский клон, так как цветовая маркировка проводов не совпадает с ее описанием.
С этой странички качаем библиотеку Adafruit-Fingerprint-Sensor-Library-master. Софтинку под Windows, SFGdemo, скачать не удалось, я нашел ее здесь.
Я нашел очень хорошую статью на русском языке, все делал по ней, с некоторыми ньюансами.
Сперва качаем программу SFGdemo, устанавливаем библиотеку под ардуино.
Как сказано в статье выше, загружаем в ардуино пример blank из библиотеки. При заливке скетча, сканер должен быть отключен.
У моего модуля цвета проводов не соответствуюм примерам из статьи, но есть надписи на плате.
Подключаем таким образом: Питание +3,3В на красный провод. Черный — GND. Желтый (TX) — 1 пин ардуино, белый (RX) — на 0 пин. Питание — именно 3,3В. От 5-ти — устройство не сгорает, но не общается с внешним миром.
TX и RX не перепутаны, мы просто используем плату ардуино, как USB — UART переходник. Атмега крутит себе пустой скетч, и не мешает общению сканера и софта.
Запускаем SFGdemo.
У меня програма не хотела соединятся с устройством. После переназначения в диспетчере устройств номера СОМ порта с 15 на 7 — все заработало.
Теперь собираем схемку и вливаем скетч.
Красный светодиод — на 5, зеленый — 4, синий — 8, желтый — 7, белый — 6.
Скетч взят из примера, я еще не вникал в большинство его функций.
Теперь — играемся.
Если палец не записан в сканере — работают эти строки:
Если записан — эти:
Вместо них — можете прописать свои команды.
Тут же получаем номер пальца и вызываем, в даном примере, процедурку:
Здесь и оперируем светодиодами, как я и хотел :)
Полезные материалы: инструкция на английском, мануал по подключению, даташит на AS608.
Плата крепится на 4-х мелких саморезах. Вот она, с «рабочей» стороны.
В корпусе видно разъем для диодов подсветки и оптика.
Оптика довольно интересная. На просвет — темная. Но если приложить палец — рисунок отпечатка проявляется очень отчетливо.
Наверное, можно приделать к камере другой объектив, выставить фокус (благо, софт под Windows позволяет получать картинки), и получим простое машинное зрение, способное, например, различать логотипы, картинки и формы предметов.
А я пока наигрался и добыл из устройства главный функционал.
Сканер может отправится на полочку и ждать своего проекта.
Хотя вы можете получить доступ к защищенным системам через пароли и ключи, обе опции могут быть неудобными и легко забываемы. В этом уроке узнаем, как использовать модуль FPM10A с библиотекой Adafruit Arduino для создания биометрической системы отпечатков пальцев.
Что нам понадобится?
По традиции начинаем с комплектующих для нашего урока.
Детали
Библиотеки и ПО
- Arduino IDE
- Adafruit Fingerprint Library
Схема соединения
Схема соединения модуля FPM10A и Ардуино Уно нужно соединить вместе как на рисунке выше. Подробнее мы остановимся на следующем шаге.
Подключаем комплектующие
Начать работать с этим модулем невероятно просто из-за того, что он использует последовательный порт для связи. Однако, поскольку у Arduino Uno только один аппаратный последовательный порт, вам необходимо использовать последовательный порт через программное обеспечение, используя контакты 2 и 3, чтобы общаться с модулем отпечатков пальцев (серийный порт аппаратного обеспечения зарезервирован для связи с ПК).
Ленточный кабель, который поставляется вместе с модулем FPM10A, является не очень удобным для хобби, так провода сидят в корпусе с шагом 1,27 мм, поэтому мы отрезали с одной стороны, а затем провода подключили к перемычкам.
Установка и использование библиотеки
Первым шагом в использовании FPM10A является установка библиотеки Fingerprint от Adafruit, которая может быть выполнена с помощью Менеджера библиотек. Откройте Arduino IDE и перейдите в:
Sketch → Include Library → Manage Libraries (Управление библиотеками)
Когда менеджер библиотек загружает поиск по "Fingerprint", то первым результатом должна быть библиотека "отпечатков пальцев" от Adafruit. Установите её.
После установки библиотеки пришло время создать новый проект Ардуино. Нажмите Файл → Создать, а затем сохраните проект в своей собственной папке. На этом этапе откройте папку проекта и скопируйте в нее файл «fingerprint.h».
Это специальный файл заголовок, который был написан для того, чтобы сделать библиотеку отпечатков пальцев более легкой в использовании. Файл заголовка имеет только три функции:
- fingerprint_setup () - конфигурирует последовательный порт для 9600 бод и подключается к модулю;
- readFingerprint () - функция опроса, которая возвращает -1, если что-то пошло не так, или возвращает информацию о том, что найден успешный отпечаток
- enrollFingerprint (int id) - добавляет отпечаток в систему с присвоенным идентификатором «id».
Чтобы включить этот файл в свой проект, просто используйте команду include, как показано ниже:
Первой функцией, которую необходимо вызвать в setup (), является fingerprint_setup (), которая автоматически соединяется с модулем и подтверждает, что все работает.
Чтобы добавить новый отпечаток, вызовите функцию enrollFingerprint (id).
Это приведет к возврату -1, если произойдет сбой. В противном случае значения указывают на успешную регистрацию отпечатков пальцев. Идентификатор передал этой функции ссылки на отсканированный отпечаток пальца, и каждый отпечаток имел уникальный идентификационный номер.
Код Ардуино
Итоговый скетч для нашей платы Ардуино вы можете скопировать ниже:
Принцип работы
Когда вы включите этот проект, он сначала попросит вас поместить палец на сканер. Если сканер способен считывать ваши отпечатки пальцев, он попросит вас удалить и затем заменить палец на сканер. Это должно привести к тому, что сканер успешно добавит ваш отпечаток пальца в ID 1, а перенос пальца на сканер должен привести к доступу системы.
Этот проект можно легко расширить, включив блокировки и реле соленоида, чтобы разрешить авторизованным пользователям вносить изменения и разблокировать систему. Как только ваш проект будет готов, - установите новый сканер в двери, шкафы, сейфы, окна, электрические системы, компьютеры и многое другое!
Читайте также: