- Необходимые материалы
- Модуль датчика отпечатков пальцев (FPS) GT511C3
- Подключение датчика отпечатков пальцев GT511C3 к Arduino
- Arduino с GT511C3
- Программирование Arduino для датчика отпечатков пальцев GT511C3
- Работа датчика отпечатков пальцев GT511C3 с Arduino
Биометрия уже давно используется как надежная система аутентификации. Сегодня существуют сложные биометрические системы, которые могут идентифицировать человека по ритму его сердцебиения или даже по его ДНК. Другие возможные методы включают распознавание голоса, распознавание лиц, сканирование радужной оболочки глаза и сканирование отпечатков пальцев. Распознавание отпечатков пальцев является наиболее широко используемым методом, мы можем найти его от простой системы посещаемости до смартфонов, проверок безопасности и многого другого.
В этом руководстве мы узнаем, как использовать популярный датчик отпечатков пальцев (FPS) GT511C3 с Arduino. Доступно много FPS, и мы уже научились использовать их для создания таких проектов, как система посещаемости, машина для голосования, система безопасности и т. Д. Но GT511C3 более продвинутый с высокой точностью и меньшим временем отклика, поэтому мы научимся его использовать. с Arduino для регистрации отпечатков пальцев на нем, а затем обнаружения отпечатков пальцев при необходимости. Итак, приступим.
Необходимые материалы
- Ардуино Нано / UNO
- Датчик отпечатков пальцев GT511C3
- ЖК-экран 16x2
- Pot - резисторы 10k и 1k, 10k, 22k
- Нажать кнопку
- Подключение проводов
- Хлебная доска
Модуль датчика отпечатков пальцев (FPS) GT511C3
Прежде чем погрузиться в проект, давайте разберемся, что такое модуль датчика отпечатков пальцев GT511C3 и как он работает. Этот датчик сильно отличается от емкостного и ультразвукового датчика отпечатков пальцев, которые обычно используются в наших смартфонах. GT511C3 представляет собой оптический датчик отпечатков пальцев, то есть он опирается на изображения отпечатка пальца, чтобы распознать его структуру. Да, вы правильно прочитали, в датчике на самом деле есть камера, которая делает снимки вашего отпечатка пальца, а затем обрабатывает эти изображения с помощью мощной встроенной микросхемы ARM Cortex M3. На изображении ниже показаны передняя и задняя сторона датчика с распиновкой.
Как вы можете видеть, на датчике есть камера (черная точка), окруженная синими светодиодами, эти светодиоды должны гореть, чтобы получить четкое изображение отпечатка пальца. Затем эти изображения обрабатываются и преобразуются в двоичное значение с помощью микроконтроллера ARM в сочетании с EEPROM. Модуль также имеет светодиод SMD зеленого цвета для индикации питания. Каждое изображение отпечатка пальца имеет размер 202x258 пикселей с разрешением 450 точек на дюйм. Датчик может зарегистрировать ДО 200 отпечатков пальцев и для каждого шаблона отпечатков пальцев он присваивает идентификатор вида 0 до 199. Затем во время обнаружения он может автоматически сравнивать отсканированный отпечаток пальца со всеми 200 шаблонами, и если совпадение найдено, он дает идентификационный номер этого конкретного отпечатка пальца с помощью Smack Finger 3.0.Алгоритм на микроконтроллере ARM. Датчик может работать от 3,3 В до 6 В и обменивается данными через последовательный канал связи на 9600. Контакты связи (Rx и Tx) считаются толерантными только к 3,3 В, однако в таблице данных об этом ничего не говорится. Распиновка GT511C3 FPS показана ниже.
Помимо последовательной связи, модуль также может быть напрямую подключен к компьютеру через USB-соединение с помощью контактов, показанных на предыдущем изображении. После подключения к компьютеру модулем можно управлять с помощью приложения SDK_DEMO.exe, которое можно скачать по ссылке. Это приложение позволяет пользователю регистрировать / проверять / удалять отпечатки пальцев, а также распознавать отпечатки пальцев. Программное обеспечение также может помочь вам прочитать изображение, захваченное датчиком, что стоит попробовать. В качестве альтернативы вы также можете использовать это программное обеспечение, даже если датчик подключен к Arduino, мы обсудим это позже в этой статье.
Еще одна интересная особенность датчика - это металлический кожух вокруг чувствительной области. Как я уже говорил ранее, для работы датчика должен быть включен синий светодиод. Но в приложениях, где датчик должен активно ждать отпечатка пальца, невозможно постоянно держать светодиод включенным, так как он нагреет датчик и, таким образом, повредит его. Следовательно, в этих случаях металлический корпус может быть подключен к контакту емкостного сенсорного ввода микроконтроллера, чтобы обнаруживать прикосновение к нему. Если да, то можно включить светодиод и начать процесс измерения. Этот метод здесь не демонстрируется, так как он выходит за рамки данной статьи.
При работе от 3,3 В датчик потребляет около 130 мА. Требуется около 3 секунд для регистрации пальца и 1 секунда для его идентификации. Однако, если количество зарегистрированных шаблонов меньше, скорость распознавания будет высокой. Для получения дополнительной информации о датчике вы можете обратиться к этому техническому описанию от ADH-Tech, который является официальным производителем модуля.
Подключение датчика отпечатков пальцев GT511C3 к Arduino
GT511C3 FPS имеет два вывода питания, которые могут питаться от вывода + 5V Arduino, и два вывода связи Rx и Tx, которые могут быть подключены к любому цифровому выводу Arduino для последовательной связи. Кроме того, мы также добавили кнопку и ЖК-дисплей для отображения состояния датчика. Полную принципиальную схему для взаимодействия GT511C3 FPS с Arduino можно найти ниже.
Поскольку контакты Rx и Tx допускают 3,3 В, мы использовали делитель напряжения на стороне Rx для преобразования 5 В в 3,3 В. Резистор 10 кОм и резистор 22 кОм преобразуют сигнал 5 В с вывода Arduino Tx в 3,3 В, прежде чем он достигнет вывода Rx FPS. Датчик также может питаться от 3,3 В, но убедитесь, что ваш Arduino может обеспечивать достаточный ток для датчика. Мы подключили ЖК-дисплей в 4-битном режиме с питанием от вывода 5V Arduino. К выводу D2 подключена кнопка, при нажатии которой программа переводится в режим регистрации, где пользователь может зарегистрировать новый палец. После регистрации программа останется в режиме сканирования для поиска любого пальца, касающегося датчика.
Arduino с GT511C3
Как упоминалось ранее, GT511C3 FPS обменивается данными через последовательную связь, датчик понимает шестнадцатеричный код, и для каждого шестнадцатеричного кода выполняется определенная операция. Вы можете проверить таблицу, чтобы узнать все шестнадцатеричные значения и соответствующую функцию, если вам интересно. Но, к счастью для нас, bboyho уже создал библиотеку, которую можно использовать напрямую с Arduino для регистрации и обнаружения отпечатков пальцев. Библиотеку Github для GT511C3 FPS можно скачать по ссылке ниже
Библиотека GT511C3 Arduino
Ссылка загрузит ZIP-файл, после чего вам нужно будет добавить его в свою IDE Arduino, выполнив команду Sketch -> Include Library -> Add.ZIP Library. После того, как вы добавили библиотеку, перезапустите вашу IDE, и вы сможете найти примеры программ для GT511C3 FSP в меню File -> Example -> Fingerprint Scanner TTL, как показано ниже.
Вы должны увидеть четыре примера программ, программа мигания будет мигать синим светодиодом на FPS, программа регистрации и идентификации пальца может использоваться для регистрации и идентификации пальцев соответственно. Обратите внимание, что один раз зарегистрированный палец всегда будет запоминаться модулем, даже если он выключен.
Программу Serial Pass-through можно загрузить в Arduino для использования приложения Demo_SDK.exe, которое мы обсуждали ранее в этой статье. Это приложение SDK можно использовать для удаления любого шаблона отпечатка пальца или сохранения копии на вашем компьютере.
Программирование Arduino для датчика отпечатков пальцев GT511C3
Наша цель здесь - написать программу, которая будет регистрировать палец при нажатии кнопки и отображать идентификационный номер пальца, который уже зарегистрирован. Мы также должны иметь возможность отображать всю информацию на ЖК-дисплее, чтобы проект был автономным. Полный код, чтобы сделать то же самое, это дать в нижней части этой страницы. Здесь я разбиваю то же самое на небольшие фрагменты, чтобы помочь вам лучше понять.
Как всегда, мы начинаем программу с включения необходимых библиотек, здесь нам понадобится библиотека FPS_GT511C3 для нашего модуля FPS, последовательное программное обеспечение для использования D4 и D5 для последовательной связи и жидкий кристалл для сопряжения с ЖК-дисплеем. Затем нам нужно указать, к каким контактам подключен FPS и ЖК-дисплей. Если вы следовали принципиальной схеме как таковой, то это 4 и 5 для FPS и от D6 до D11 для LCD. Код для того же показан ниже
#include "FPS_GT511C3.h" // Получить библиотеку с https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Последовательная библиотека программного обеспечения #include
Внутри функции настройки мы отображаем вводное сообщение на ЖК-дисплее, а затем инициализируем модуль FPS. Команда fps.SetLED (true) включает синий светодиод на датчике, вы можете выключить его с помощью fps.SetLED (false), когда он не требуется, поскольку он нагреет датчик, если оставить его постоянно включенным. Мы также сделали вывод D2 как входной и подключили его к внутреннему подтягивающему резистору, чтобы подключить кнопку к выводу.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Инициализируем ЖК- экран 16 * 2 lcd.print ("GT511C3 FPS"); // Вступительное сообщение, строка 1 lcd.setCursor (0, 1); lcd.print ("с Arduino"); // Вводное сообщение, строка 2, задержка (2000); lcd.clear (); fps.Open (); // отправляем последовательную команду для инициализации fp fps.SetLED (true); // включаем светодиод, чтобы fps видел отпечаток пальца pinMode (2, INPUT_PULLUP); // Подключаемся к внутреннему подтягивающему резистору в качестве входного контакта }
Внутри функции цикла void мы должны проверить, нажата ли кнопка, если она нажата, мы зарегистрируем новый палец и сохраним его шаблон с идентификационным номером с помощью функции регистрации. В противном случае мы будем ждать, пока палец не войдет в сенсор. При нажатии мы идентифицируем отпечаток пальца, сравнивая его со всеми зарегистрированными шаблонами отпечатков пальцев, используя метод 1: N. Как только идентификационный номер будет обнаружен, мы отобразим приветствие, за которым следует идентификационный номер. Если отпечаток пальца не соответствует ни одному из зарегистрированных пальцев, количество идентификаторов будет равно 200, в этом случае мы отобразим приветствие unknown.
if (digitalRead (2)) // Если кнопка нажата { Enroll (); // Регистрация отпечатка пальца } // Проверка отпечатка пальца if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Добро пожаловать:"); if (id == 200) lcd.print ("Неизвестно"); // Если не распознается lcd.print (id); задержка (1000); }
Функция регистрации должна будет принять три образца ввода, чтобы успешно зарегистрировать один палец. После регистрации будет создан шаблон для этого конкретного пальца, который не будет удален, если пользователь не заставит его использовать HEX-команды. Код для регистрации пальца показан ниже. Метод IsPressFinger используется для проверки, обнаружен ли палец, если да, то изображение захватывается с помощью CaptureFinger. и, наконец, Enroll1, Enroll2 и Enroll3 используются для трех разных выборок, чтобы успешно зарегистрировать один палец. На ЖК-дисплее отображается идентификационный номер пальца, если он зарегистрирован успешно, иначе будет отображаться сообщение об ошибке с кодом. Код 1 означает, что отпечаток пальца не был четко зафиксирован, и вам необходимо повторить попытку. Код 2 указывает на сбой памяти, а код 3 указывает на то, что палец уже зарегистрирован.
void Enroll () // Зарегистрируем функцию из библиотеки exmaple program { int enrollid = 0; bool usedid = true; пока (usedid == true) { usedid = fps.CheckEnrolled (enrollid); если (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // зачисляем lcd.print ("Enroll #"); lcd.print (enrollid); while (fps.IsPressFinger () == false) задержка (100); bool bret = fps.CaptureFinger (true); int iret = 0; если (брет! = ложь) { lcd.clear (); lcd.print («Убрать палец»); fps.Enroll1 (); while (fps.IsPressFinger () == true) задержка (100); lcd.clear (); lcd.print («Нажмите еще раз»); while (fps.IsPressFinger () == false) задержка (100); bret = fps.CaptureFinger (правда); если (брет! = ложь) { lcd.clear (); lcd.print («Убрать палец»); fps.Enroll2 (); while (fps.IsPressFinger () == true) задержка (100); lcd.clear (); lcd.print («Нажмите еще раз»); while (fps.IsPressFinger () == false) задержка (100); bret = fps.CaptureFinger (правда); если (брет! = ложь) { lcd.clear (); lcd.print («Убрать палец»); iret = fps.Enroll3 (); если (iret == 0) { lcd.clear (); lcd.print («Успешная регистрация»); } еще { lcd.clear (); lcd.print ("Ошибка регистрации:"); lcd.print (iret); } } else lcd.print ("Неудачный 1"); } else lcd.print ("Ошибка 2"); } else lcd.print ("Неудачный 3"); }
Работа датчика отпечатков пальцев GT511C3 с Arduino
Теперь, когда наше оборудование и код готовы, пора протестировать наш проект. Загрузите код в Arduino и включите его, я просто использую порт micro-usb для питания проекта. При загрузке мы должны увидеть вводное сообщение на ЖК-дисплее, а затем отобразить «Привет!..». Это означает, что FPS готов к сканированию пальца, при нажатии любого зарегистрированного пальца он скажет «Добро пожаловать», за которым следует идентификационный номер этого пальца, как показано ниже.
Если необходимо зарегистрировать новый палец, мы можем использовать кнопку, чтобы перейти в режим регистрации, и следовать инструкциям на ЖК-дисплее, чтобы зарегистрировать палец. После завершения процесса регистрации на ЖК-дисплее снова отобразится «Привет!..», чтобы указать, что он считывается для повторной идентификации пальцев. Полный рабочий можно найти на видео, связанное ниже.
Отсюда вы можете разработать много интересного, используя модуль датчика отпечатков пальцев. Надеюсь, вы поняли руководство и вам понравилось создавать что-то полезное, если у вас есть какие-либо вопросы, оставьте их в разделе комментариев или используйте форумы для других технических вопросов.