Оптические сканеры отпечатков пальцев. Обзор датчика R308

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

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

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

Рассматриваемый сканер отпечатков пальцев R308 (ссылка в магазин) является оптическим (метод на отражение). Данный метод использует эффект нарушенного полного внутреннего отражения (Frusted Total Internal Reflection). Эффект заключается в том, что при падении света на границу раздела двух сред световая энергия делится на две части — одна отражается от границы, другая проникает через границу во вторую среду. Доля отраженной энергии зависит от угла падения светового потока. Начиная с некоторой величины данного угла, вся световая энергия отражается от границы раздела. Это явление называется полным внутренним отражением. В случае контакта более плотной оптической среды (поверхности пальца) с менее плотной в точке полного внутреннего отражения пучок света проходит через эту границу. Таким образом, от границы отразятся лишь пучки света, попавшие в определенные точки полного внутреннего отражения, к которым не был приложен папиллярный узор пальца. Для захвата полученной световой картинки поверхности пальца используется специальный датчик изображения (КМОП или ПЗС, в зависимости от реализации сканера).

Для данного метода можно отметить следующее:

  • Одни из самых дешевых сканеров отпечатков пальцев при относительно большой площади сканирования пальца
  • Чувствительность к загрязнению рабочей поверхности датчика
  • Малая защита от муляжей
  • Относительно крупные размеры модуля

Итак сканер отпечатков пальцев R308 имеет следующий вид:

Хотелось бы разобрать и посмотреть на модуль изнутри, но конструкция сделана таким образом, что аккуратно открутить винтики и снять плату с элементами не получится, так как держит ее что-то изнутри и без применения паяльника это сделать проблематично, поэтому не стоит пытаться нарушить целостность модуля, что может привести к выводу его из строя.

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

Характеристики сканера отпечатков пальцев R308:

  • Напряжение питания – 4,5-5 вольт
  • Рабочий ток – 40 мА
  • Интерфейс – UART (TTL logical level)
  • Baud rate – 9600*n, n=1~12, по умолчанию 57600 bps
  • Время сканирования отпечатка пальца –до 0,5 сек
  • Размер шаблона отпечатка – 512 байт
  • Коэффициент ложного пропуска FAR (False Acceptance Rate) – менее 0,001 %
  • Коэффициент ложного отказа в доступе FRR (False Rejection Rate) – менее 0,5 %
  • Уровень безопасности – 5
  • Время среднего поиска – менее 1 сек
  • Размер окна считывания отпечатка пальца – 18х22 мм
  • Размер модуля – 55,5х21х20,5 мм
  • Диапазон рабочих температур – -20-+40 градусов Цельсия

Для подключения к другим устройствам R308 имеет 6-контактный разъем:

  1. Vt – плюс питания детектора пальца
  2. Vin – плюс питания модуля
  3. TxD
  4. RxD
  5. GND
  6. Touch – выход сигнала детектора пальца

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

Структура пакета данных, передаваемых и принимаемых модулем:

  1. Header – заголовок, фиксированное значение 0xEF01 (2 байта)
  2. Adder – адрес сканера отпечатков пальцев, фиксированное значение 0xFFFFFFFF (4 байта)
  3. Package identifier – идентификатор пакета данных, 01H – пакет команды, 02H – пакет данных, 07H – пакет ответа, 08H – пакет окончания данных (1 байт)
  4. Package length – количество байт пакета информации (включает сумму байт данных пунктов 5 — 6), максимальное количество 256 байт (2 байта)
  5. Package contents – полезные данные
  6. Checksum – контрольная сумма, арифметическая сумма пунктов 3-6 (2 байта)

Сканер отпечатков пальцев имеет 8 основных инструкций для его управления:

  1. Сканирование отпечатка пальца и сохранение его в буфере. Возвращает код подтверждения об успешности операции.
  2. Создание файла символов отпечатка пальца из оригинального отпечатка и сохраняет его в CharBuffer1 (2). Возвращает код подтверждения об успешности операции.
  3. Поиск на совпадение отпечатка пальца в библиотеке модуля который соответствует хранимому в CharBuffer1 или CharBuffer2. Возвращает код подтверждения об успешности операции и ID отпечатка пальца в библиотеке модуля.
  4. Создание шаблона модели отпечатка пальца. Информация в CharBuffer1 и CharBuffer2 объединяется и комбинируется для получения более достоверных данных об отпечатке пальца (отпечаток в этих буферах должен принадлежать одному пальцу). После операции данные сохраняются обратно в CharBuffer1 и CharBuffer2. Возвращает код подтверждения об успешности операции.
  5. Сохранение шаблона отпечатка пальца из Buffer1/Buffer2 во флэш память библиотеки модуля. Возвращает код подтверждения об успешности операции.
  6. Удаление шаблона из флэш памяти модуля. Возвращает код подтверждения об успешности операции.
  7. Очистка памяти библиотеки отпечатков пальцев модуля. Возвращает код подтверждения об успешности операции.
  8. Проверка пароля модуля. Возвращает код подтверждения об успешности операции.

Для того чтобы искать совпадение отпечатка пальца в библиотеке модуля необходимо сканировать отпечаток пальца и сохранить его в буфере, сгенерировать символьный файл и поместить его в CharBuffer и прописать команду на поиск совпадений отпечатков пальце (инструкции 1, 2, 3).

Для того чтобы внести отпечаток пальца в память модуля необходимо получить изображение отпечатка пальца, сохранить его в буфере и сгенерировать символьный файл, сохраняемый в CharBuffer (операции повторяем минимум 2 раза и сохраняем все в CharBuffer1 и CharBuffer2), далее комбинируем данные в буферах 1 и 2 для получения более точного результата и запускаем командой сохранение в указанное место памяти информацию об отпечатке пальца (инструкции 1, 2, 4, 5).

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

Для оценки работы модуля к статье прилагается демонстрационная прошивка для микроконтроллера STM32, соответствующая схеме:

На LCD дисплее отображаются необходимые данные для работы со сканером отпечатков пальцев, при включении схемы без замкнутых перемычек Jmp1 и  Jmp2 запускается основной цикл программы, когда микроконтроллер ждет получения отпечатка пальца от сканера и запускает поиск в памяти модуля при его появлении. При включении с замкнутой перемычкой Jmp1 запускается полное стирание памяти библиотеки отпечатков пальцев. При включении с замкнутой перемычкой Jmp2 запускается добавление 5 новых отпечатков пальцев в память модуля. Для добавления отпечатка пальца необходимо дважды приложить палец к сканеру для его сохранения в случае отсутствия ошибок при сканировании отпечатков.

Кроме того к статье прилагается программа SFGDemo. С ее помощью можно получить изображение своего отпечатка пальца помимо стандартных операций добавления отпечатка в память, поиска совпадений, удаления отпечатка из памяти (для подключения к компьютеру используется переходник USB-UART).

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК STM32 STM32F103C8 1
VR1 Линейный регулятор LM7805 1
VR2 Линейный регулятор AMS1117-3.3 1
FP1 Датчик отпечатков пальцев R308 1
HG1 LCD-дисплей 2004a 1
C1, C2 Конденсатор 22 пФ 2
C3 Электролитический конденсатор 470 мкФ 1
C4-C7, C9, C10, C12 Конденсатор 100 нФ 7
C8 Электролитический конденсатор 220 мкФ 1
C11 Электролитический конденсатор 100 мкФ 1
R1 Резистор 22 Ом 1
R2 Резистор 100 Ом 1
R3 Подстроечный резистор 10 кОм 1
R4-R6 Резистор 10 кОм 3
R7 Резистор 390 Ом 1
S1 Тактовая кнопка 1
Z1 Кварцевый резонатор 8 МГц 1
EP1 Бузер 1 со встроенным генератором
Jmp1, Jmp2 Перемычка Джемпер 2
HL1 Светодиод 1