احتمالا شما هم سنسورهای اثر انگشت را دیدهاید و راجع به نحوه عملکرد آنها فکر کردهاید. استفاده از ماژول اثر انگشت یکی از ارزانترین و بهترین راهها برای تشخیص هویت، شناسایی و برای مقاصد امنیتی است.
هرفرد میتواند با آموزش و تجهیزات درست، ماژول اثر انگشت مخصوص خودش را درست کند. ما در این مقاله روش استفاده از ماژول اثر انگشت R308 و راهاندازی آن با استفاده از آردوینو را برای شما شرح دادهایم.
ماژول اثر انگشت چیست؟
ماژول اثر انگشت دستگاهی است که برای بیومتریک، امنیت و تشخیص هویت استفاده میشود. قطعا تابهحال از این ماژولها استفاده کردهاید. سنسور اثر انگشتی که در گوشیهای هوشمند وجود دارد، درواقع همین ماژول است.
و بازتاب این نور توسط سنسور دریافت میشود. با تطبیق دادن این سیگنال دریافتی با سیگنال اولیه، اثر انگشت تشخیص داده میشود.
شما می توانید برای خرید تبدیل و کانکتور USB از جم ترونیک کلیک کنید.
ساختار ماژول اثر انگشت
در ماژول اثر انگشت قطعات زیادی مانند سنسور، LED، میکروکنترلر built-in و تاچ آیسی وجود دارد. هر یک از این قطعات با یکدیگر کار کرده و درنهایت اثر انگشت پردازش میشود.
انگشت روی سنسور ماژول کشیده میشود و نوری از سمت LED به سمت انگشت تابیده میشود. این نور از یک صفحه مخصوص عبور میکند و اثر انگشت روی سنسور را روشن میکند.
سنسور تصویر داخلی نور بازتابشده را دریافت میکند و میکروکنترلر ۳۲ بیتی داخل ماژول این تصویر را پردازش میکند. این پردازش با یک الگوریتم اتفاق میافتد و درنتیجه هر اثر انگشت از دیگری متمایز شناخته میشود.
در این ماژول از کانکتور UART برای ارتباط با دستگاههای خارجی استفاده میشود. همچنین یک تاچ آیسی وجود دارد؛ زمانیکه انگشت قاب فلزی سنسور را لمس میکند، یک سیگنال High-Level از این آیسی خارج میشود. کنترلر خارجی این سیگنال را قبل از روشن شدن سنسور اثر انگشت ماژول دریافت میکند و صرفهجویی زیادی در انرژی صورت میپذیرد.
پایههای ماژول اثر انگشت
در ماژول اثر انگشت پایهها و پینهای متعددی وجود دارد که در زمان راهاندازی، آنها را به آردوینو وصل میکنید. در این ماژول شش نوع پین مختلف وجود دارد؛ ما توصیه میکنیم برای اتصال هر پین از سیمی با رنگ متفاوت استفاده کنید.
بهدلیل اینکه پینها اندازه کوچکی دارند و بسیار نزدیک به هم طراحی شدهاند، باید از سیمهای جامپر برای اتصال ماژول به آردوینو استفاده کنید.
پین | رنگ سیم |
DNC | سفید |
VCC | قرمز |
TX | آبی |
RX | سبز |
GND | سیاه |
اتصال ماژول اثر انگشت به آردوینو
حالا که با نحوه کار ماژول اثر انگشت و پینهای آن آشنا شدید، نوبت به راه اندازی ماژول اثر انگشت با آردوینو میرسد که ما در ادامه مراحل آن را برایتان شرح دادیم.
- سیم سیاه را از پین GND ماژول به پین زمین یا GND آردوینو وصل کنید.
- سیم قرمز را از پین VCC به پین ۵ ولت آردوینو وصل کنید.
- پین TX سنسور را به پین دیجیتال شماره ۲ در آردوینو وصل کنید.
- پین RX سنسور را به پین دیجیتال شماره ۳ در آردوینو وصل کنید.
برای اتصال ماژول به آردوینو به قطعات زیر نیاز خواهید داشت:
- آردوینو (مدل UNO بهتر است)
- ماژول اثر انگشت
- برد برد Bread Board
- نمایشگر ۰.۹۶ اینچی
- سیمهای جامپر
نحول اتصال نمایشگر به آردوینو
- اتصال پین VCC نمایشگر به پین ۵ ولت آردوینو
- اتصال پینهای GND به یکدیگر
- اتصال پین RST به پین دیجیتال ۹ آردوینو
- اتصال پین A0 به پین دیجیتال ۸
- اتصال پین CS به پین دیجیتال ۱۰
- اتصال پین SDA به پین دیجیتال ۱۱
- اتصال پین SCK به پین دیجیتال ۱۳
- اتصال پین LED به پین ۳.۳ ولت آردوینو
برنامهنویسی
پس از وصل کردن سختافزاری ماژول به آردوینو نوبت به کدنویسی آن میرسد.
نصب کتابخانههای ضروری
راحتترین راه برای کنترل ماژول با آردوینو، استفاده از کتابخانه Adafruit است که میتوانید آن را از گیتهاب دانلود کنید.
پس از دانلود کردن این کتابخانه آن را اکسترکت کرده و اسم پوشهای که ایجاد میشود را به Adafruit_Fingerprint_Sensor_Library تغییر دهید. پوشه را به محل نصب IDE آردوینو منتقل کنید و IDE را ریستارت کنید.
ثبت یک اثرانگشت جدید
پس از نصب کتابخانه و راه اندازی ماژول اثر انگشت با آردوینو، نوبت به ثبت یک اثر انگشت جدید در سیستم میرسد. در IDE این مسیر را File > Examples > Adafruit Fingerprint Sensor Library > Enroll باز کنید. پس از آن کد زیر را میتوانید وارد کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
#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; } |
توضیح کد
ابتدا با وارد کردن کتابخانههای مورد نیاز با دستور #include شروع میکنیم. با این کار میتوانیم روی نمایشگر بنویسیم. همچنین کتابخانههای مورد نیاز سنسور اثر انگشت را هم ایمپورت میکنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#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> |
خط زیر از کد، سریال نرمافزار را روی پینهای ۲ و ۳ تنظیم میکند.
1 |
SoftwareSerial mySerial(2, 3); |
پس از آن با خط زیر از کد، روی سریال پینهایی که تعیین کردهایم، یک شی برای اثر انگشت ایجاد میکنیم.
1 |
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); |
دو خط زیر هم متغیرهایی ایجاد میکنند که شناسه اثر انگشت و نام شناسه را ذخیره کنند.
1 2 3 |
int fingerprintID = 0; String IDname; |
بعد از این مراحل، با تابع setup، به سنسور و نمایشگر یک مقدار اولیه میدهیم. همچنین کدی مینویسیم تا درصورت شناسایی سنسور اثر انگشت، پیامی را نمایش دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
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، صفحه اصلی را روی نمایشگر نمایش میدهیم. این کار با استفاده از تابع displayMainScreen() انجام میشود. با نوشتن این خطها، کد دائما در حال چک کردن اثر انگشتهای دریافتی است. اگر اثر انگشتی پیدا شود که از قبل ذخیره شده بود، آردوینو آن را در متغیر fingerprintID ذخیره میکند.
در آخر کد یک دستور if/else مینویسیم تا شناسه هر اثر انگشت بررسی شود. شما باید این مقدارها را با توجه به پروژه خودتان عوض کنید.
1 2 3 4 5 6 7 8 9 10 11 |
if(fingerprintID == 1 || fingerprintID == 3 || fingerprintID == 4 || fingerprintID == 5){ IDname = "Sara"; displayUserGreeting(IDname); } else if(fingerprintID == 2){ IDname = "Rui"; |
پس از این کار، اگر سیستم یک اثر انگشت ذخیرهشده را شناسایی کند، یک پیام خوشآمد نمایش خواهد داد. این کار با تابع displayUserGreeting() انجام میشود.
جمعبندی
ما در این مقاله به شما نحوه راه اندازی ماژول اثر انگشت با آردوینو، کار با آن و کدنویسی آن برای ثبت و تشخیص اثر انگشت را آموزش دادیم. با این روش و تجهیزات، میتوانید به آسانی و با هزینهای کم، بیومتریک را به پروژهتان اضافه کنید و امنیت آن را بالاتر ببرید.
برای خرید قطعات لازم برای انجام این پروژه و سایر پروژههای الکترونیکی میتوانید از محصولات ما در فروشگاه جم ترونیک دیدن کنید. همچنین خواندن مقالههای مجله جم ترونیک را از یاد نبرید!
برای تهیه انواع ماژول اثر انگشت روی خرید ماژول اثر انگشت کلیک کنید.
ببخشید در زمینه برنامه نویسی اردوینو یه پروژه دربازکن اثر انگشتی برای دانشگاه میتونید کمکم کنید …. هزینه اش هم پرداخت میکنم
با سلام همکارانم برای هماهنگی با شما تماس خواهند گرفت