Mô-đun cảm biến vân tay với Arduino (FPM10A)

Bài đăng này là một hướng dẫn giới thiệu về cách sử dụng Mô-đun cảm biến vân tay với Arduino. Chúng tôi sẽ chỉ cho bạn cách đăng ký ID vân tay mới và tìm vân tay.

Xem video demo:

Giới thiệu Mô-đun cảm biến vân tay


Các mô-đun cảm biến vân tay, giống như mô-đun trong hình dưới đây, giúp nhận dạng vân tay dễ tiếp cận hơn và dễ dàng thêm vào các dự án. Điều này có nghĩa là siêu dễ dàng để thực hiện thu thập, đăng ký, so sánh và tìm kiếm dấu vân tay.

Các mô-đun này đi kèm với bộ nhớ FLASH để lưu trữ dấu vân tay và hoạt động với bất kỳ vi điều khiển hoặc hệ thống nào có nối tiếp TTL. Các mô-đun này có thể được thêm vào hệ thống an ninh, khóa cửa, hệ thống chấm công và nhiều hơn nữa.

Giá cho cảm biến này thay đổi rất nhiều từ $ 10 đến $ 50. Chúng tôi khuyên bạn nên kiểm tra mô-đun cảm biến vân tay trên Maker Advisor để so sánh giá ở các cửa hàng khác nhau.

Thông số kỹ thuật


Dưới đây là thông số kỹ thuật của mô-đun cảm biến vân tay mà chúng tôi đang sử dụng (bạn nên kiểm tra dữ liệu cảm biến hoặc thông số kỹ thuật do nhà cung cấp của bạn cung cấp – chúng không nên khác nhiều so với các thông số này):

  • Nguồn điện: DC 3.6 đến 6.0V
  • Dòng điện: <120mA
  • Màu đèn nền: xanh
  • Giao diện: UART
  • Tỷ lệ: 9600
  • Mức an toàn: năm (từ thấp đến cao: 1,2,3,4,5)
  • Sai số (FAR): <0,001% (mức bảo mật 3)
  • Tỷ lệ từ chối sai (FRR): <1,0% (mức bảo mật 3)
  • Có thể lưu trữ 127 dấu vân tay khác nhau

Đầu ra cảm biến


Cảm biến có sáu chân được dán nhãn trong hình bên dưới.

Mô-đun cảm biến vân tay được sử dụng trong dự án này đi kèm với các dây mỏng, do đó, cần hàn dây phù hợp với breakboard. Chúng tôi khuyên bạn nên sử dụng các màu khác nhau theo chức năng chân. Trong trường hợp của tôi:

  • DNC – dây trắng
  • VCC – dây đỏ
  • TX – dây xanh
  • RX – dây xanh lá cây
  • GND – dây đen

Bảng dưới đây cho thấy cách nối dây cảm biến với Arduino.


Cảm biến dấu vân tay     Arduino


VCC                               5V (nó cũng hoạt động với 3,3V)

TX                                 RX (chân digital 2, phần mềm nối tiếp)

RX                                 TX (chân digital 3, phần mềm nối tiếp)

GND                              GND


Cài đặt thư viện cảm biến vân tay Adafruit


Cách dễ nhất để điều khiển mô-đun cảm biến vân tay với Arduino là sử dụng thư viện Adafruit cho cảm biến này. Thực hiện theo các hướng dẫn tiếp theo để cài đặt thư viện:

  1. Nhấn vào đây để tải về Adafruit Fingerprint Sensor library.
  2. Giải nén thư mục .zip và bạn sẽ nhận được thư mục Adafruit-Fingerprint-Sensor-Library-master
  3. Đổi tên thư mục của bạn từ Adafbean-Fingerprint-Sensor-Library-master thành thư mục Adafruit_Fingerprint_Sensor_Library
  4. Di chuyển thư mục vào thư mục cài đặt thư viện Arduino IDE của bạn
  5. Cuối cùng, mở lại Arduino IDE

Đăng ký một dấu vân tay mới


Lắp mô-đun cảm biến vân tay có dây với Arduino, hãy làm theo các bước tiếp theo để đăng ký một dấu vân tay mới. Hãy chắc chắn rằng bạn đã cài đặt thư viện Cảm biến vân tay.

  1. Trong Arduino IDE, đi đến FileExamplesAdafruit Fingerprint Sensor Library > Enroll.
  2. Tải code và mở màn hình nối tiếp với tốc độ baud là 9600.
  3. Bạn nên nhập ID cho dấu vân tay. Vì đây là dấu vân tay đầu tiên của bạn, nhập 1 ở góc trên cùng bên trái và sau đó, nhấp vào nút Send.

4. Đặt ngón tay của bạn trên máy quét và làm theo hướng dẫn trên màn hình nối tiếp.

Bạn sẽ được yêu cầu đặt cùng một ngón tay hai lần vào máy quét. Nếu bạn nhận được tin nhắn “Prints matched!”, như hiển thị bên dưới, dấu vân tay của bạn đã được lưu trữ thành công. Nếu không, lặp lại quá trình, cho đến khi bạn thành công.

Lưu trữ nhiều dấu vân tay bạn muốn bằng phương pháp này.

Tìm dấu vân tay


Bây giờ bạn nên lưu một số dấu vân tay với các ID khác nhau. Để tìm một kết quả khớp với cảm biến vân tay, hãy làm theo các hướng dẫn tiếp theo.

  1. Trong Arduino IDE, đi đến FileExamplesAdafruit Fingerprint Sensor Library > Fingerprint  và tải code lên board Arduino của bạn.
  2. Mở Màn hình nối tiếp ở tốc độ baud là 9600. Bạn sẽ thấy thông báo sau:

  1. Đặt ngón tay cần xác định khi quét.
  2. Trên màn hình nối tiếp, bạn có thể thấy ID khớp với dấu vân tay. Nó cũng cho thấy độ tin cậy cao, dấu vân tay tương tự với dấu vân tay được lưu trữ.

Dự án mẫu – Hiển thị vân tay đúng trên màn hình OLED


Trong ví dụ này, chúng tôi sẽ đăng ký hai dấu vân tay từ hai người khác nhau. Sau đó, chúng tôi sẽ hiển thị thông báo lời chào phù hợp được tìm thấy, trên màn hình OLED.

Linh kiện cần thiết

Trong ví dụ này, bạn sẽ cần các linh kiện sau:

  • Arduino UNO
  • Module cảm biến vân tay
  • Màn hình OLED 0,96 inch
  • Breakboard
  • Dây dẫn

Bạn có thể tham khảo linh kiện tại cachdung.com

Sơ đồ mạch

Đây là sơ đồ nối dây bạn nên tuân theo để tạo mạch cho dự án này.

Cài đặt thư viện OLED 0.96 inch

Để điều khiển màn hình OLED, bạn cần có thư viện “Adafruit_GFX.h” và Thư viện “Adafruit_SSD1306.h”. Thực hiện theo các bước tiếp theo để cài đặt các thư viện đó:

Cài đặt thư viện Adafruit_GFX

  1. Nhấn vào đây để tải xuống thư viện Adafruit_GFX.
  2. Giải nén thư mục .zip và bạn sẽ nhận thư mục Adafruit-GFX-Library-master
  3. Đổi tên thư mục của bạn thành Adafruit_GFX_Library
  4. Di chuyển thư mục Adafruit_GFX_Library vào thư mục thư viện cài đặt Arduino IDE của bạn
  5. Cuối cùng, mở lại Arduino IDE

Cài đặt thư viện  adafruit_SSD1306

  1. Nhấn vào đây để tải xuống thư viện adafruit_SSD1306.
  2. Giải nén thư mục .zip và bạn sẽ nhận thư mục Adafruit-GFX-Library-master
  3. Đổi tên thư mục của bạn thành Adafruit_SSD1306
  4. Di chuyển thư mục Adafruit_SSD1306 vào thư mục thư viện cài đặt Arduino IDE của bạn
  5. Cuối cùng, mở lại Arduino IDE

Code

Trước khi tải code, bạn cần đăng ký dấu vân tay khác nhau từ những người khác nhau. Truy cập vào Đăng ký một Dấu vân tay mới ở trên, tải lên code đã cho và làm theo hướng dẫn để đăng ký hai dấu vân tay.

Sau đó, sửa code sao cho ID vân tay khớp với tên của những người đã đăng ký – cuộn trang xuống để được giải thích về code. Cuối cùng, bạn có thể tải lên code được cung cấp.

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

Nhập thư viện

Code bắt đầu bằng cách nhập các thư viện cần thiết để ghi vào màn hình OLED và tạo một đối tượng Adafruit_SSD1306 được hiển thị.

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

Chúng ta cũng cần nhập các thư viện cần thiết cho cảm biến vân tay: Adafruit_Fingerprint.h và SoftwareSerial.h.

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

Dòng sau thiết lập nối tiếp trên các chân 2 và 3. Chân 2 là RX và Chân 3 là TX.

SoftwareSerial mySerial(2, 3);

Sau đó, tạo một đối tượng Adafruit_Fingerprint được gọi là ngón tay trên các chân nối tiếp mà chúng tôi đã đặt trước đó.

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

Hai dòng tiếp theo tạo các biến để giữ ID vân tay và IDname.

int fingerprintID = 0;
String IDname;

setup()

Trong setup(), cả cảm biến vân tay và màn hình OLED đều được khởi tạo. Chúng tôi cũng in một tin nhắn trên serial monitor để biết nếu cảm biến vân tay được tìm thấy thành công.

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

loop ()

Trong loop (), code hiển thị màn hình chính trên màn hình OLED – điều này được thực hiện trong hàm displayMainScreen(). Sau đó, code liên tục kiểm tra dấu vân tay đến. Nếu cảm biến tìm thấy dấu vân tay đã lưu, Arduino sẽ lưu ID tương ứng trong biến fingerprintID.

Sau đó, code có một câu lệnh if /else để kiểm tra ID dấu vân tay tương ứng. Bạn nên chỉnh sửa các dòng code sau với ID và tên tương ứng.

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

Đôi khi, cảm biến sẽ nhận dạng dấu vân tay tốt hơn nếu nó được lưu nhiều lần với các ID khác nhau. Sau khi xác định tên ID, OLED sẽ hiển thị lời chào – điều này được thực hiện trong hàm displayUserGreet() ,

DEMO


Bây giờ, khi đã có dấu vân tay được lưu lên cảm biến, nó sẽ hiển thị thông báo lời chào.

Tóm lại


Trong bài đăng này, chúng tôi đã chỉ cho bạn cách sử dụng mô-đun cảm biến vân tay: đăng ký và tìm dấu vân tay.

Đôi khi, cảm biến gặp khó khăn trong việc xác định dấu vân tay nếu bạn không đặt ngón tay của mình tương tự như khi bạn lưu nó – đặc  biệt dấu vân tay của nữ (chúng tôi không biết tại sao điều này xảy ra). Chúng tôi đã nhận thấy rằng cảm biến hoạt động tốt hơn nếu bạn đặt ngón tay từ từ trên máy quét.

Theo chúng tôi, mô-đun cảm biến vân tay hoạt động khá tốt và đó là một cách hợp lý để thêm nhận dạng sinh trắc học cho các dự án của bạn.

Dịch từ: https://randomnerdtutorials.com/fingerprint-sensor-module-with-arduino/

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *