سنسور حسگر اثر انگشت FPM10A یکی از ماژولهای رایج برای تشخیص و پردازش اثر انگشت است که در پروژههای امنیتی و احراز هویت بیومتریک مورد استفاده قرار میگیرد. این ماژول دارای یک سنسور نوری با قابلیت ثبت تصویر دقیق از اثر انگشت و پردازش داخلی آن به کمک پردازندهی تعبیهشده در ماژول است. همچنین، از الگوریتمهای پردازش تصویر پیشرفته برای استخراج ویژگیهای منحصربهفرد اثر انگشت و تطبیق آن با دادههای ذخیرهشده استفاده میکند. ارتباط این سنسور از طریق UART یا TTL انجام شده و با استفاده از دستورات سادهی سریال، میتوان عملیاتهایی نظیر ثبت، حذف و تطبیق اثر انگشت را کنترل کرد.
FPM10A به دلیل سادگی در راهاندازی، مصرف توان پایین و دقت مناسب، در کاربردهای مختلفی مانند قفلهای هوشمند، سیستمهای کنترل دسترسی، حضور و غیاب و پروژههای مبتنی بر Arduino و Raspberry Pi مورد استفاده قرار میگیرد. این سنسور دارای حافظه داخلی برای ذخیرهی اثر انگشتهای ثبتشده است و میتواند دادهها را با سرعت و دقت بالا پردازش کند. همچنین، به دلیل طراحی ماژولار و پشتیبانی از پروتکلهای استاندارد، یک انتخاب ایدهآل برای پروژههای امنیتی و سیستمهای تشخیص هویت محسوب میشود.


نصب کتابخانه حسگر
برای دانلود کتابخانه Adafruit Fingerprint Sensor تو قسمت دانلود فایل های پایین. بعد از دانلود، یک فایل .zip توی پوشه Downloads خواهید داشت.
حالا فایل .zip رو از حالت فشرده خارج کنید. بعد از اکسترکت، یه پوشه به اسم Adafruit-Fingerprint-Sensor-Library-master ایجاد میشه.
اسم این پوشه رو تغییر بدید و به Adafruit_Fingerprint_Sensor_Library تبدیل کنید.
بعد، این پوشه رو به فولدر libraries در محل نصب Arduino IDE منتقل کنید.
در نهایت، Arduino IDE رو ببندید و دوباره باز کنید تا کتابخانه شناسایی بشه. 🚀
نصب کتابخانه حسگر
با اتصال ماژول حسگر اثر انگشت به آردوینو، مراحل بعدی را برای ثبت اثر انگشت جدید دنبال کنید. مطمئن شوید که قبلاً کتابخانه Adafruit Fingerprint Sensor را نصب کرده اید.
1. در Arduino IDE، به File > Examples > Adafruit Fingerprint Sensor Library > Enroll بروید.
2. کد را آپلود کنید و مانیتور سریال را با نرخ باود 9600 باز کنید.
3. برای اثر انگشت باید شناسه وارد کنید. از آنجایی که این اولین اثر انگشت شماست، 1 را در گوشه بالا سمت چپ تایپ کنید و سپس روی دکمه ارسال کلیک کنید.

4. انگشت خود را روی اسکنر قرار دهید و دستورالعمل های روی نمایشگر سریال را دنبال کنید


با استفاده از این روش هر تعداد اثر انگشت را که می خواهید ذخیره کنید.
بررسی الگریتم های اثرانگشت
اکنون باید چندین اثر انگشت در شناسه های مختلف ذخیره کنید. برای یافتن مطابقت با حسگر اثر انگشت، دستورالعملهای بعدی را دنبال کنید.
1. در Arduino IDE، به File > Examples > Adafruit Fingerprint Sensor Library > Fingerprint بروید و کد را در برد آردوینو خود آپلود کنید.
2. مانیتور سریال را با نرخ باود 9600 باز کنید. باید پیام زیر را مشاهده کنید:
3. انگشتی را که باید شناسایی شود روی اسکن قرار دهید.
4. در مانیتور سریال می توانید شناسه مطابق با اثر انگشت را مشاهده کنید. همچنین این کد میزان اطمینان را نشان می دهد – هرچه اطمینان بیشتر باشد، اثر انگشت مشابه با اثر انگشت ذخیره شده است.


بررسی الگریتم های اثرانگشت
Arduino UNO
ماژول حسگر اثر انگشت
صفحه نمایش 0.96 اینچی OLED
برد بورد
سیم های جامپر

مدار سنسور FPM10A با آردوینو

نصب کتابخانه OLED:
برای کنترل نمایشگر OLED به کتابخانههای adafruit_SSD1306.h و adafruit_GFX.h نیاز دارید. دستورالعمل های بعدی را برای نصب آن کتابخانه ها دنبال کنید.
1. Arduino IDE خود را باز کنید و به Sketch > Include Library > Manage Libraries بروید. مدیر کتابخانه باید باز شود.
2. “SSD1306” را در کادر جستجو تایپ کنید و کتابخانه SSD1306 را از Adafruit نصب کنید.
3. پس از نصب کتابخانه SSD1306 از Adafruit، سپس “GFX” را در کادر جستجو تایپ کرده و کتابخانه را نصب کنید.
4. پس از نصب کتابخانه ها، Arduino IDE خود را مجددا راه اندازی کنید.
کد آردوینو برای ماژول اثرانگشت
کد کامل در انتهاب صفحه قرار دارد
کد با وارد کردن کتابخانه های مورد نیاز برای نوشتن در صفحه نمایش OLED شروع می شود و یک آبجکت از Adafruit_SSD1306 به نام display ایجاد می کند.
#include
#include
#include
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
همچنین باید کتابخانه های مورد نیاز برای حسگر اثر انگشت را وارد کنیم: Adafruit_Fingerprint.h و SoftwareSerial.h.
#include
#include
خط زیر ارتباط سریال نرم افزاری را روی پین های 2 و 3 تنظیم می کند. پین 2 به عنوان RX و پین 3 به عنوان TX.
SoftwareSerial mySerial(2, 3);
سپس، یک آبجکت از Adafruit_Fingerprint به نام finger روی پین های سریالی که قبلا تنظیم کرده بودیم ایجاد می کنیم.
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
دو خط بعدی متغیرهایی را برای نگه داشتن شناسه اثر انگشت و نام شناسه ایجاد می کنند.
int fingerprintID = 0;
String IDname;
در setup()، هر دو حسگر اثر انگشت و نمایشگر OLED مقداردهی اولیه می شوند. ما همچنین پیامی را روی سریال مانیتور چاپ می کنیم تا بدانیم که آیا حسگر اثر انگشت با موفقیت پیدا شده است یا خیر.
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); }
}
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
displayMainScreen();
}
سپس، کد دارای یک عبارت شرطی برای بررسی شناسه مربوط به اثر انگشت است. شما باید خطوط کد زیر را با شناسه ها و نام های مربوطه ویرایش کنید.
if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){
IDname = "Sara";
displayUserGreeting(IDname);
} else if(fingerprintID == 2){
IDname = "Rui";
تظاهرات

دانلود پروژه
#include
#include
#include
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#include
#include
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;
}