- Необхідні матеріали
- Модуль датчика відбитків пальців (FPS) GT511C3
- Підключення датчика відбитків пальців GT511C3 до Arduino
- Arduino з GT511C3
- Програмування Arduino для датчика друку пальців GT511C3
- Працює датчик відбитків пальців GT511C3 з Arduino
Біометрія вже давно використовується як надійна система автентифікації. Сьогодні існують складні біометричні системи, які можуть ідентифікувати людину за ритмом серцебиття або навіть за ДНК. Інші можливі методи включають розпізнавання голосу, розпізнавання обличчя, сканування райдужки та сканування відбитків пальців. Серед яких найбільш поширеним методом є розпізнавання відбитків пальців, ми можемо знайти його від простої системи відвідування до смартфонів, до перевірок безпеки та багато іншого.
У цьому підручнику ми дізнаємося, як користуватися популярним датчиком відбитків пальців GT511C3 (FPS) з Arduino. Доступно багато FPS, і ми вже навчилися використовувати їх для побудови таких конструкцій, як система відвідуваності, голосувальна машина, система безпеки тощо. Але GT511C3 є вдосконаленим з високою точністю та швидшим часом відгуку, тому ми навчимось використовувати його за допомогою Arduino реєструвати відбитки пальців, а потім виявляти відбитки пальців, коли це потрібно. Тож давайте почнемо.
Необхідні матеріали
- Arduino Nano / UNO
- GT511C3 Датчик відбитків пальців
- РК-екран 16x2
- Бак - 10k та 1k, 10k, 22k резистори
- Нажимна Кнопка
- Підключення проводів
- Хлібна дошка
Модуль датчика відбитків пальців (FPS) GT511C3
Перш ніж заглибитися в проект, дайте нам зрозуміти про модуль датчика відбитків пальців GT511C3 та як він працює. Цей датчик дуже відрізняється від ємнісного та ультразвукового датчика відбитків пальців, які зазвичай використовуються у наших смартфонах. GT511C3 є оптичний датчик відбитків пальців, тобто він спирається на зображення відбитка пальця, щоб розпізнати його структуру. Так, ви правильно прочитали, у датчику насправді є камера всередині нього, яка робить фотографії ваших відбитків пальців, а потім обробляє ці зображення за допомогою потужної вбудованої мікросхеми ARM Cortex M3. На зображенні нижче зображена передня і задня сторони датчика з розпиновками.
Як бачите, у датчика є камера (чорна пляма), оточена синіми світлодіодами, ці світлодіоди повинні бути підсвічені, щоб зробити чітке зображення відбитка пальця. Потім ці зображення обробляються та перетворюються у двійкове значення за допомогою мікроконтролера ARM у поєднанні з EEPROM. Модуль також має світлодіод SMD зеленого кольору, що вказує на потужність. Кожне зображення відбитка пальця має розмір 202x258 пікселів з роздільною здатністю 450 dpi. Датчик може зареєструвати ДО 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 має два висновки живлення, які можуть живитися від + 5 В виводу Arduino і два виводи зв'язку Rx і Tx, які можна підключити до будь-якого цифрового виводу Arduino для послідовного зв'язку. Крім того, ми також додали кнопку та РК-дисплей для відображення стану датчика. Повну електричну схему взаємодії GT511C3 FPS з Arduino можна знайти нижче.
Оскільки виводи Rx та Tx мають толерантність до 3,3 В, ми використали дільник потенціалу на стороні Rx для перетворення 5 В у 3,3 В. 10k резистор і 22k резистор перетворюють сигнал 5В з виводу Arduino Tx на 3.3V, перш ніж він досягне Rx виводу FPS. Датчик також може живитися від 3.3 В, але переконайтесь, що ваш Arduino може подавати достатню кількість струму для датчика. Ми підключили РК-дисплей у 4-розрядному режимі, що живиться від 5В виводу Arduino. Кнопка підключена до виводу D2, який при натисканні переводить програму в режим реєстрації, де користувач може зареєструвати новий палець. Після реєстрації програма залишатиметься в режимі сканування для сканування будь-якого пальця, що торкається датчика.
Arduino з GT511C3
Як згадувалося раніше, GT511C3 FPS здійснює зв'язок через послідовний зв'язок, датчик розуміє шістнадцятковий код, і для кожного шістнадцяткового коду виконується певна операція. Ви можете перевірити таблицю даних, щоб знати всі шістнадцяткові значення та відповідну функцію, якщо вам це цікаво. Але, на щастя для нас, bboyho вже створив бібліотеку, яку можна використовувати безпосередньо з Arduino для реєстрації та виявлення відбитків пальців. Бібліотеку Github для GT511C3 FPS можна завантажити за посиланням нижче
Бібліотека Arduino GT511C3
Посилання завантажить ZIP-файл, після чого вам доведеться додати його до своєї IDE Arduino, виконавши команду Ескіз -> Включити бібліотеку -> Додати бібліотеку.ZIP. Після додавання бібліотеки перезапустіть IDE, і ви зможете знайти приклади програм для GT511C3 FSP у меню Файл -> Приклад -> Сканер відбитків пальців TTL, як показано нижче
Ви повинні побачити чотири приклади програм, програма блимання блиматиме синім світлодіодом на FPS, програма реєстрації та ідентифікатора пальців може бути використана для реєстрації та ідентифікації пальців відповідно. Зверніть увагу, що один раз зареєстрований палець завжди запам'ятовується модулем, навіть якщо він вимкнений.
Програму послідовного проходу можна завантажити в Arduino для використання програми Demo_SDK.exe, про яку ми вже говорили раніше в цій статті. Щоб видалити будь-який шаблон відбитка пальця або зберегти копію на своєму комп’ютері, можна використовувати цю програму SDK.
Програмування Arduino для датчика друку пальців GT511C3
Наша мета - написати програму, яка реєструватиме палець при натисканні кнопки та відображатиме ідентифікаційний номер вже зареєстрованого пальця. Ми також повинні мати можливість відображати всю інформацію на РК-дисплеї, щоб проект міг бути самостійним. Повний код, щоб зробити те ж саме, це дати в нижній частині цієї сторінки. Тут я розбиваю те саме на маленькі фрагменти, щоб допомогти вам краще зрозуміти.
Як завжди ми починаємо програму з включення необхідних бібліотек, тут нам знадобиться бібліотека FPS_GT511C3 для нашого модуля FPS, послідовне програмне забезпечення для використання D4 і D5 для послідовного зв'язку та рідкий кристал для РК-взаємодії. Тоді нам потрібно згадати, до яких контактів підключений FPS і РК-дисплей. Якщо ви дотримувались принципової схеми як такої, тоді це 4 і 5 для FPS і від D6 до D11 для РК-дисплея. Код для цього наведено нижче
#include "FPS_GT511C3.h" // Отримати бібліотеку з https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Бібліотека послідовного програмного забезпечення #include
Усередині функції налаштування ми відображаємо деяке вступне повідомлення на РК-дисплеї, а потім ініціалізуємо модуль FPS. Команда fps.SetLED (істина) увімкне синій світлодіод на датчику, ви можете вимкнути його за допомогою fps. Ми також зробили штифт D2 як вхідний штифт і підключили його до внутрішнього підтягувального резистора, щоб підключити кнопку до штифта.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Ініціалізація РК- друку на 16 * 2 ("GT511C3 FPS"); // Вступний рядок повідомлення 1 lcd.setCursor (0, 1); lcd.print ("з Arduino"); // Затримка вступного рядка повідомлення 2 (2000); lcd.clear (); fps.Open (); // надсилаємо послідовну команду для ініціалізації fp fps.SetLED (true); // увімкнути світлодіод, щоб кадр в секунду бачив відбиток пальця pinMode (2, INPUT_PULLUP); // Підключаємо до внутрішнього підтягувального резистора як вхідний штифт }
Усередині функції циклу void ми повинні перевірити, чи натиснута кнопка, якщо натиснути, ми зареєструємо новий палець та збережемо його шаблон з ідентифікаційним номером за допомогою функції реєстрації. Якщо ні, ми будемо продовжувати чекати натискання пальця в датчику. Якщо натиснути, ми будемо ідентифікувати відбиток пальця, порівнюючи його з усіма зареєстрованими шаблонами відбитків пальців, використовуючи метод 1: N. Після того, як ідентифікаційний номер буде виявлено, ми відобразимо привітання, а потім ідентифікаційний номер. Якщо відбиток пальця не збігається з жодним із зареєстрованих пальців, кількість ідентифікаторів буде 200, у такому випадку ми відобразимо невідомий привітання.
if (digitalRead (2)) // Якщо натиснути кнопку { Enroll (); // Зареєструйте відбиток пальця } // Визначте тест відбитків, якщо (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Ласкаво просимо:"); if (id == 200) lcd.print ("Unkown"); // Якщо не розпізнано lcd.print (id); затримка (1000); }
Для успішної реєстрації одного пальця функція реєстрації повинна мати три вхідні зразки. Після реєстрації буде створений шаблон для цього конкретного пальця, який не буде видалений, якщо користувач не змусить його скористатися командами HEX. Код для реєстрації пальця показаний нижче. Метод IsPressFinger використовується для перевірки виявлення пальця, якщо так, то зображення знімається за допомогою CaptureFinger а потім, нарешті, Enroll1, Enroll2 і Enroll3 використовується для трьох різних зразків для успішної реєстрації одного пальця. На РК-дисплеї відображається ідентифікаційний номер пальця, якщо його вдало зареєструвати, в іншому випадку відобразиться повідомлення про помилку з кодом. Код 1 означає, що відбитки пальців не були чітко зафіксовані, і тому вам доведеться спробувати ще раз. Код 2 - це ознака відмови пам'яті, а код 3 означає, що палець уже зареєстрований.
void Enroll () // Функція реєстрації з прикладу бібліотеки { int enrollid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnroll (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // реєстрація lcd.print ("Зареєструвати #"); lcd.print (enrollid); while (fps.IsPressFinger () == false) затримка (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Видалити палець"); fps.Enroll1 (); while (fps.IsPressFinger () == true) затримка (100); lcd.clear (); lcd.print ("Натисніть ще раз"); while (fps.IsPressFinger () == false) затримка (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Видалити палець"); fps.Enroll2 (); while (fps.IsPressFinger () == true) затримка (100); lcd.clear (); lcd.print ("Натисніть ще раз"); while (fps.IsPressFinger () == false) затримка (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Видалити палець"); iret = fps.Enroll3 (); if (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 готовий сканувати палець. Якщо натиснути будь-який зареєстрований палець, буде сказано “Ласкаво просимо”, а потім ідентифікаційний номер цього пальця, як показано нижче.
Якщо потрібно зареєструвати новий палець, ми можемо скористатися кнопкою для переходу в режим реєстрації та слідувати інструкціям на РК-дисплеї, щоб зареєструвати палець. Після завершення процесу реєстрації на РК-дисплеї знову відображатиметься "Привіт!..", що вказує на те, що його зчитують для ідентифікації пальців знову. Повний робочий можна знайти на відео, пов'язане нижче.
Звідси ви можете розробити багато цікавих речей на цьому, використовуючи модуль датчика відбитків пальців. Сподіваємось, ви зрозуміли підручник і сподобалося створювати щось корисне, якщо у вас виникли запитання, залиште їх у розділі коментарів або використовуйте форуми для інших технічних питань.