цифровая электроника
вычислительная техника
встраиваемые системы

 

Arduino и сканер отпечатков пальцев

Автор: Mike(admin) от 11-02-2018, 18:05

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


сканер отпечатков пальцев

Популярная микроконтроллерная платформа Arduino может взаимодействовать с такими сканерами отпечатков, и в данном материале мы покажем пример взаимодействия Arduino с модулем сканера FPM10A.


Модули датчиков отпечатков пальцев, безусловно, сделали распознавание отпечатков более доступным и легким процессом, который без больших усилий можно добавить в ваши проекты. Это означает, что очень легко сделать сбор, регистрацию, сравнение и поиск отпечатков пальцев. Эти модули поставляются с FLASH-памятью для хранения отпечатков пальцев и работы с любым микроконтроллером или системой с последовательным интерфейсом. Данные модули могут быть добавлены в системы безопасности, дверные замки, системы учета времени и т.п. Характеристики модуля следующие:


  • Напряжение питания: от 3.6 до 6.0 В
  • Потребление тока: менее 120 мА
  • Цвет подсветки: зеленый
  • Интерфейс: UART
  • Скорость передачи данных: 9600
  • Уровень безопасности: 5 (от низкого до высокого: 1,2,3,4,5)
  • Вероятность ложного принятия отпечатка: менее 0,001%
  • Вероятность ложного отклонения отпечатка: менее 1,0%
  • Возможность хранения 127 различных отпечатков пальцев

Модуль имеет 6 проводов (как показано на изображении ниже), два из которых не нужно подключать. TX и RX это линии передачи и приема данных UART соответственно, которые можно подключить ко 2-му и 3-му цифровому выводу платы Arduino соответственно.


сканер отпечатков пальцев

Для работы с модулем сканера отпечатков пальцев необходимо добавить в Arduino IDE специальную библиотеку. В нашем случае возьмем библиотеку Adafruit Fingerprint Sensor (https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/archive/master.zip). Разархивируйте zip-архив, после чего вы должны получить папку Adafruit-Fingerprint-Sensor-Library-master. Переименуйте ее в Adafruit_Fingerprint_Sensor_Library. Потом поместите ее в папку установленных библиотек Arduino IDE. Затем откройте Arduino IDE.


После того, как модуль датчика отпечатков пальцев подключен к Arduino, выполните следующие шаги, чтобы зарегистрировать новый отпечаток пальца. В среде разработки Arduino перейдите в меню и выберете File – Examples – Adafruit Fingerprint Sensor Library – Enroll. Загрузите код в Arduino и откройте последовательный монитор со скоростью передачи 9600 бит. Вы должны ввести идентификатор (ID) для отпечатка пальца. Поскольку это ваш первый отпечаток пальца, введите 1 в верхнем левом углу, а затем нажмите кнопку «Send».


Arduino и сканер отпечатков пальцев

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


Arduino и сканер отпечатков пальцев

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


Arduino и сканер отпечатков пальцев

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


В среде разработки Arduino IDE перейдите в меню File – Examples – Adafruit Fingerprint Sensor Library – Fingerprint и загрузите этот скетч в плату Arduino. Откройте последовательный монитор со скоростью передачи 9600. Вы должны увидеть следующее сообщение:


Arduino и сканер отпечатков пальцев

Поместите на сканер палец, который нужно идентифицировать. На серийном мониторе вы можете увидеть идентификатор, который соответствует отпечатку пальца. Он также показывает уверенность (confidence) – чем она выше, тем вероятнее ваш отпечаток пальца совпадает с сохраненным отпечатком.


Arduino и сканер отпечатков пальцев

Отображение информации на мониторе последовательной передачи данных – это, конечно, хорошо, но минимизирует мобильность нашего устройства. Поэтому усовершенствуем проект, добавив к нему компактный OLED-дисплей, на котором будет отображаться информация сос сканера отпечатков пальцев. Для этого нам также придется скачать библиотеки Adafruit GFX library (https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip) и Adafruit_SSD1306 library (https://github.com/adafruit/Adafruit_SSD1306/archive/master.zip) и установить их тем же образом, что и библиотеку Adafruit Fingerprint Sensor. Схема подключения Arduino, сканера отпечатков пальцев и OLED-дисплея показана ниже.


Arduino и сканер отпечатков пальцев

Теперь скопируйте в Arduino IDE приведенный ниже код (скетч) и загрузите его в микроконтроллер Arduno. После этого у вас будет полноценное автономное устройство проверки отпечатков пальцев.


#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(){
  Serial.begin(9600);
  finger.begin(57600);
  
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } 
  else {
    Serial.println("Did not find fingerprint sensor :(");
    while (1) { delay(1); }
  }

  Wire.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  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);            
  }
}

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;
  
  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; 
}



© digitrode.ru


Теги: Arduino, сканер отпечатков пальцев




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий