Руководство по модулю датчика отпечатков пальцев с Arduino (FPM10A)

Эта статья представляет собой вводное руководство по использованию модуля датчика отпечатков пальцев с Arduino. Мы покажем вам, как зарегистрировать новый ID отпечатка пальца и как найти совпадение отпечатка.

Смотрите видео-демонстрацию

Знакомство с модулем датчика отпечатков пальцев

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

Модуль датчика отпечатков пальцев

Эти модули поставляются с FLASH-памятью для хранения отпечатков пальцев и работают с любым микроконтроллером или системой с TTL serial. Эти модули можно добавить в системы безопасности, дверные замки, системы учёта рабочего времени и многое другое.

Цены на этот датчик сильно варьируются от $10 до $50. Мы рекомендуем посмотреть модуль датчика отпечатков пальцев на Maker Advisor, где сравниваются цены в разных магазинах. Модули датчиков отпечатков пальцев, представленные на Maker Advisor, должны быть совместимы с этим руководством.

Характеристики

Вот характеристики модуля датчика отпечатков пальцев, который мы используем (вам следует проверить даташит вашего датчика или характеристики, предоставленные вашим поставщиком — они не должны сильно отличаться от этих):

  • Напряжение питания: DC 3.6–6.0 В

  • Потребляемый ток: <120 мА

  • Цвет подсветки: зелёный

  • Интерфейс: UART

  • Скорость передачи данных: 9600

  • Уровень безопасности: пять (от низкого к высокому: 1, 2, 3, 4, 5)

  • Коэффициент ложного допуска (FAR): <0.001% (уровень безопасности 3)

  • Коэффициент ложного отказа (FRR): <1.0% (уровень безопасности 3)

  • Возможность хранения 127 различных отпечатков пальцев

Распиновка датчика

Датчик имеет шесть выводов, которые обозначены на рисунке ниже.

Распиновка модуля датчика отпечатков пальцев

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

  • DNC — белые провода

  • VCC — красный провод

  • TX — синий провод

  • RX — зелёный провод

  • GND — чёрный провод

Припаянные провода к модулю датчика отпечатков пальцев

В следующей таблице показано, как подключить датчик к Arduino.

Датчик отпечатков пальцев

Arduino

VCC

5V (также работает с 3.3V)

TX

RX (цифровой пин 2, software serial)

RX

TX (цифровой пин 3, software serial)

GND

GND

Установка библиотеки Adafruit Fingerprint Sensor

Самый простой способ управления модулем датчика отпечатков пальцев с помощью Arduino — использование библиотеки Adafruit для этого датчика. Следуйте приведённым ниже инструкциям для установки библиотеки:

  1. Нажмите здесь, чтобы скачать библиотеку Adafruit Fingerprint Sensor. В папке Downloads у вас должен появиться .zip-файл

  2. Распакуйте .zip-файл, и вы получите папку Adafruit-Fingerprint-Sensor-Library-master

  3. Переименуйте папку из Adafruit-Fingerprint-Sensor-Library-master в Adafruit_Fingerprint_Sensor_Library

  4. Переместите папку в папку библиотек вашей Arduino IDE

  5. Наконец, перезапустите Arduino IDE

Регистрация нового отпечатка пальца

Подключив модуль датчика отпечатков пальцев к Arduino, выполните следующие шаги для регистрации нового отпечатка. Убедитесь, что вы предварительно установили библиотеку Adafruit Fingerprint Sensor.

1. В Arduino IDE перейдите в File > Examples > Adafruit Fingerprint Sensor Library > Enroll.

2. Загрузите код и откройте монитор порта на скорости 9600 бод.

3. Вам нужно ввести ID для отпечатка пальца. Так как это ваш первый отпечаток, введите 1 в верхнем левом углу, а затем нажмите кнопку Send.

Монитор порта — регистрация отпечатка пальца

4. Приложите палец к сканеру и следуйте инструкциям в мониторе порта.

Регистрация отпечатка пальца на датчике

Вам будет предложено приложить один и тот же палец к сканеру дважды. Если вы получите сообщение «Prints matched!», как показано ниже, ваш отпечаток пальца был успешно сохранён. Если нет, повторите процесс, пока не добьётесь успеха.

Монитор порта — отпечатки совпали

Сохраните столько отпечатков пальцев, сколько хотите, используя этот метод.

Поиск совпадения

Теперь у вас должно быть несколько отпечатков пальцев, сохранённых под разными ID. Чтобы найти совпадение с помощью датчика отпечатков пальцев, следуйте приведённым ниже инструкциям.

1. В Arduino IDE перейдите в File > Examples > Adafruit Fingerprint Sensor Library > Fingerprint и загрузите код на плату Arduino.

2. Откройте монитор порта на скорости 9600 бод. Вы должны увидеть следующее сообщение:

Монитор порта — ожидание отпечатка пальца

3. Приложите палец, который нужно идентифицировать, к сканеру.

4. В мониторе порта вы увидите ID, соответствующий отпечатку пальца. Также отображается уверенность (confidence) — чем выше уверенность, тем более похож отпечаток на сохранённый.

Монитор порта — найдено совпадение отпечатка пальца

Пример проекта — отображение совпадения отпечатка на OLED-дисплее

В этом примере проекта мы зарегистрируем два отпечатка пальцев от двух разных людей. Затем мы отобразим приветственное сообщение в соответствии с найденным совпадением на OLED-дисплее.

Чтобы узнать больше об OLED-дисплее, прочитайте: Руководство по OLED-дисплею с Arduino

Необходимые компоненты

Для этого примера вам понадобятся следующие компоненты:

Необходимые компоненты для проекта с датчиком отпечатков пальцев и OLED

Вы можете использовать ссылки выше или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

Схема подключения

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

Схема подключения датчика отпечатков пальцев и OLED-дисплея к Arduino

Установка библиотек для OLED-дисплея 0.96 дюйма

Для управления OLED-дисплеем вам нужны библиотеки adafruit_SSD1306.h и adafruit_GFX.h. Следуйте приведённым ниже инструкциям для установки этих библиотек.

  1. Откройте Arduino IDE и перейдите в Sketch > Include Library > Manage Libraries. Должен открыться менеджер библиотек.

  2. Введите «SSD1306» в поле поиска и установите библиотеку SSD1306 от Adafruit.

Установка библиотеки SSD1306 OLED для Arduino
  1. После установки библиотеки SSD1306 от Adafruit введите «GFX» в поле поиска и установите библиотеку.

Установка библиотеки GFX для Arduino
  1. После установки библиотек перезапустите Arduino IDE.

Код

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

Затем измените код так, чтобы ID отпечатков соответствовали именам зарегистрированных людей — прокрутите страницу вниз для объяснения кода. Наконец, вы можете загрузить предоставленный код.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com
*********/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int fingerprintID = 0;
String IDname;

void setup(){
  //Fingerprint sensor module setup
  Serial.begin(9600);
  // set the data rate for the sensor serial port
  finger.begin(57600);

  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  }
  else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }

  //OLED display setup
  Wire.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  //displays main screen
  displayMainScreen();
}

void loop(){
  displayMainScreen();
  fingerprintID = getFingerprintIDez();
  delay(50);
  if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
    IDname = "Sara";
    displayUserGreeting(IDname);
  }
  else if(fingerprintID == 2){
    IDname = "Rui";
    displayUserGreeting(IDname);
  }
}

// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
  uint8_t p = finger.getImage();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.image2Tz();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.fingerFastSearch();
  if (p != FINGERPRINT_OK)  return -1;

  // found a match!
  Serial.print("Found ID #");
  Serial.print(finger.fingerID);
  Serial.print(" with confidence of ");
  Serial.println(finger.confidence);
  return finger.fingerID;
}

void displayMainScreen(){
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(7,5);
  display.println("Waiting fingerprint");
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(52,20);
  display.println("...");
  display.display();
  delay(2000);
}

void displayUserGreeting(String Name){
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(0,0);
  display.print("Hello");
  display.setCursor(0,15);
  display.print(Name);
  display.display();
  delay(5000);
  fingerprintID = 0;
}

Посмотреть исходный код

Импорт библиотек

Код начинается с импорта необходимых библиотек для записи на OLED-дисплей и создания объекта Adafruit_SSD1306 с именем display.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

Нам также нужно импортировать библиотеки, необходимые для датчика отпечатков пальцев: Adafruit_Fingerprint.h и SoftwareSerial.h.

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>

Следующая строка устанавливает программный serial на пинах 2 и 3. Пин 2 как RX, а пин 3 как TX.

SoftwareSerial mySerial(2, 3);

Затем мы создаём объект Adafruit_Fingerprint с именем finger на ранее заданных serial-пинах.

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

Следующие две строки создают переменные для хранения ID отпечатка пальца и IDname.

int fingerprintID = 0;
String IDname;

setup()

В setup() инициализируются как датчик отпечатков пальцев, так и OLED-дисплей. Мы также выводим сообщение в монитор порта, чтобы знать, был ли датчик отпечатков пальцев успешно обнаружен.

void setup(){
 //Fingerprint sensor module setup
 Serial.begin(9600);
 // set the data rate for the sensor serial port
 finger.begin(57600);

 if (finger.verifyPassword()) {
   Serial.println("Found fingerprint sensor!");
 }
 else {
   Serial.println("Did not find fingerprint sensor :(");
   while (1) { delay(1); }
 }

//OLED display setup
 Wire.begin();
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 //displays main screen
 displayMainScreen();
}

Рекомендуемое чтение: Руководство по I2C OLED-дисплею с Arduino

loop()

В loop() код отображает главный экран на OLED-дисплее — это выполняется функцией displayMainScreen(). Затем код постоянно проверяет входящие отпечатки пальцев. Если датчик находит сохранённый отпечаток, Arduino сохраняет соответствующий ID в переменной fingerprintID.

Затем код использует оператор if/else для проверки, какому ID соответствует отпечаток. Вам следует отредактировать следующие строки кода с соответствующими ID и именами.

if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
  IDname = "Sara";
  displayUserGreeting(IDname);
}
else if(fingerprintID == 2){
  IDname = "Rui";

Иногда датчик лучше распознаёт отпечаток пальца, если он сохранён несколько раз под разными ID. После идентификации имени ID OLED-дисплей показывает приветствие — это выполняется функцией displayUserGreeting().

Демонстрация

Теперь, когда человек с сохранённым отпечатком пальца прикладывает палец к датчику, на дисплее отображается приветственное сообщение.

Демонстрация проекта — приветствие на OLED-дисплее по отпечатку пальца

Подведение итогов

В этой статье мы показали вам, как использовать модуль датчика отпечатков пальцев: регистрировать отпечатки и находить совпадения.

Иногда датчику сложно идентифицировать отпечаток пальца, если вы не прикладываете палец очень похоже на то, как вы его сохраняли — особенно женские отпечатки пальцев (мы понятия не имеем, почему так происходит). Мы заметили, что датчик работает лучше, если вы прикладываете палец к сканеру медленно.

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

Вам также могут понравиться следующие проекты:

Спасибо за чтение.