در این سری از پروژه های آموزشی آردوینو، نحوه استفاده و راه اندازی ماژول اثر انگشت توسط برد آردوینو به طور کامل شرح داده شده است. اثر انگشت هر شخص به صورت یکتا و منحصر به فرد است، همین ویژگی باعث شده تا از این تکنولوژی و ماژول به صورت متعدد از جمله کنترل افراد، ورود و خروج، امنیت بیشتر در تلفن های همراه و …. استفاده شود. اگر به دنبال پروژه ای برای کنترل ورود و خروج افراد و ….. هستید پشنهاد می کنیم مطالب زیر که در وب سایت الکترونیک98 منتشر گردیده است را مطالعه بفرمائید.
به منظور نشان دادن و عملکرد ماژول اثر انگشت، مطالب زیر نوشته شده است. در این پروژه همانطور که در شکل فوق مشاهده می کنید، از یک برد آردوینو نانو و صفحه نمایش رنگی کوچک 1.44 اینچ استفاده کرده ایم. زمانی که انگشت خود را در مقابل ماژول قرار می دهیم، سنسور، اثر انگشت را تشخیص می دهد و اجازه ورود داده می شود.
ماژول اثر انگشت FPM10A
ماژول اثر انگشت FPM10A دارای ساختمانی کوچک و در عین حال پرکاربرد است، این ماژول دارای یک سنسور نوری می باشد که وظیفه خواندن اثر انگشت را بر عهده دارد و بعد از تحلیل آن تصویر متناسب ذخیره شده برای آن اثر انگشت را ارائه می دهد. همچنین این ماژول دارای پردازنده DSP با سرعت بالا، الگوریتم های تطبیق اثر انگشت با عملکرد فوق العاده، چیپ های فلش با ظرفیت مناسب و ترکیبی از سایر سخت افزارها می باشد. امروزه به دلیل اینکه هر اثر انگشت منحصر به فرد و امکان شباهت دو اثر انگشت زیر صفر است کاربرد سنسور اثر انگشت بسیار زیاد شده است، طوری که در اکثر ارگان ها، شرکت ها، ادارات، کارخانه ها و ….. به صورت وسیع استفاده می شود.
مشخصات ماژول اثر انگشت FPM10A
1. فرکانس کاری 433MHz – 868MHz – 915MHz
2. محدوده ولتاژ کاری 1.9 تا 3.6 ولت
3. منبع تغذیه 3.6 تا 6 ولت
4. محدوده جریان کاری 120 تا 140 میلی آمپر
5. محدوده دمای کاری 20- تا 50+ درجه سانتی گراد
6. زمان ورود اثر انگشت کمتر از 1 ثانیه
7. ابعاد پنجره 14×18 میلی متر
ویژگی و کاربردهای ماژول اثر انگشت FPM10A
1. پایداری بالا
2. کاربردی و قابل اطمینان
3. ثبت انواع توابع اثر انگشت
4. تطبیق اثر انگشت
5. جستجوی اثر انگشت
6. استفاده در ماژول های اثر انگشت
7. سیستم های شناسایی اثر انگشت
دانلود دیتا شیت ماژول اثر انگشت FPM10A
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول اثر انگشت FPM10A | 1 عدد |
ماژول صفحه نمایش 1.44 اینچی 128X128 ال. سی. دی | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
اتصال تجهیزات
نحوه اتصال تجهیزات به یکدیگر و برد آردوینو بسیار ساده و راحت است به طوری که با توجه به توضیحات زیر می توانید این اتصالات را به سرعت انجام دهید.
الف: نحوه اتصال ماژول اثر انگشت به برد آردوینو
1. ابتدا سیم مشکی ماژول اثر انگشت را به پین زمین برد آردوینو متصل کنید.
2. سیم قرمز ماژول را به پین 5 ولت آردوینو اتصال دهید.
3. سیم سبز ماژول اثر انگشت را به پین دیجیتال شماره 2 برد آردوینو متصل نمائید.
4. سیم سبز ماژول اثر انگشت را به پین D3 برد آردوینو وصل کنید.
ب: نحوه اتصال ماژول صفحه نمایش به برد آردوینو
1. پایه Vcc ماژول صفحه نمایش را به پین 5 ولت برد آردوینو متصل کنید.
2. پایه زمین ماژول را به پین زمین برد آردوینو وصل نمائید.
3. پایه A0 را به D8 برد آردوینو اتصال دهید.
4. پایه RST را به پین D9 برد آردوینو متصل کنید.
5. پایه CS را به پین D10 برد آردوینو وصل نمائید.
6. پایه SDA را به پین D11 برد آردوینو اتصال دهید.
7. پایه SCK را به پین D12 برد آردوینو وصل کنید.
8. پایه LED را به پین 3.3 ولت برد آردوینو متصل نمائید.
برنامه نویسی پروژه
قبل از برنامه نویسی در نرم افزار آردوینو ابتدا کتابخانه های Fingerprint Sensor و TFT ILI9163C و GFX را از لینک های زیر دانلود نموده و طبق توضیحات زیر، آن ها را به صورت جداگانه به زیرمجموعه های کتابخانه خود در نرم افزار آردوینو اضافه کنید.
دانلود کتابخانه Fingerprint Sensor
نصب کتابخانه
لازم به ذکر است که نرم افزار برنامه نویسی آردوینو به صورت پیش فرض توانایی پشتیبانی از Fingerprint Sensor و TFT ILI9163C و GFX را ندارد بنابراین ما باید library (کتابخانه یا برنامه) مورد نیاز را بر روی آن نصب کنیم. این فرآیند بسیار ساده و راحت است که در زیر نحوه استفاده از آن را توضیح داده ایم.
1. در مرحله اول ابتدا آخرین (جدیدترین) نسخه کتابخانه (Fingerprint Sensor و TFT ILI9163C و GFX) را از لینک های فوق دانلود کنید.
2. پس از دانلود فایل، نرم افزار آردوینو را باز کنید.
3. مسیر زیر را دنبال کنید و در پنجره باز شده فایل کتابخانه های Fingerprint Sensor و TFT ILI9163C و GFX را که قبلا دانلود کرده اید را انتخاب نمائید:
…Sketch > Include Library > Add .ZIP Library
برنامه کامل پروژه در محیط نرم افزار آردوینو
بعد از اتصال قطعات به یکدیگر و نصب کتابخانه های مربوطه، کدهای زیر را در نرم افزار آردوینو کپی نموده سپس به برد آردوینو آپلود کنید.
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 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
////////////////////////////////////////////////////////////////// // Arduino Fingerprint Sensor Tutorial // ////////////////////////////////////////////////////////////////// #include <SPI.h> #include <Adafruit_GFX.h> #include <TFT_ILI9163C.h> #include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> // Color definitions #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define __CS 10 #define __DC 9 static const uint8_t icon [] PROGMEM = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x3f,0xc0,0x0,0x0,0x0, 0x0,0x0,0x3,0xff,0xf8,0x0,0x0,0x0, 0x0,0x0,0x7,0xff,0xfe,0x0,0x0,0x0, 0x0,0x0,0x1f,0xc0,0x7f,0x80,0x0,0x0, 0x0,0x0,0x3e,0x0,0x7,0xc0,0x0,0x0, 0x0,0x0,0x7c,0x0,0x3,0xe0,0x0,0x0, 0x0,0x0,0xfd,0xff,0x81,0xf0,0x0,0x0, 0x0,0x0,0xff,0xff,0xe0,0xf0,0x0,0x0, 0x0,0x1,0xff,0xff,0xf8,0x78,0x0,0x0, 0x0,0x1,0xff,0x80,0x7c,0x38,0x0,0x0, 0x0,0x3,0xfc,0x0,0xe,0x3c,0x0,0x0, 0x0,0x3,0xf0,0x0,0x7,0x1c,0x0,0x0, 0x0,0x7,0xc0,0x7f,0x83,0x8e,0x0,0x0, 0x0,0x7,0x83,0xff,0xe0,0xe,0x0,0x0, 0x0,0x7,0xf,0xff,0xf8,0xf,0x0,0x0, 0x0,0x6,0x1f,0x80,0xfc,0x7,0x0,0x0, 0x0,0x4,0x7e,0x0,0x3f,0x7,0x0,0x0, 0x0,0x0,0xf8,0x0,0xf,0x7,0x0,0x0, 0x0,0x0,0xf0,0x3e,0x7,0x87,0x0,0x0, 0x0,0x1,0xe1,0xff,0x83,0x83,0x80,0x0, 0x0,0x3,0xc3,0xff,0xc3,0xc3,0x80,0x0, 0x0,0x3,0xc7,0xc3,0xe1,0xc3,0x80,0x0, 0x0,0x3,0x8f,0x0,0xf1,0xe3,0x80,0x0, 0x0,0x7,0x1e,0x0,0x78,0xe3,0x80,0x0, 0x0,0x7,0x1e,0x3c,0x38,0xe3,0x80,0x0, 0x0,0x7,0x1c,0x7e,0x38,0xe3,0x80,0x0, 0x0,0xf,0x1c,0x7f,0x38,0xe3,0x80,0x0, 0x0,0xe,0x3c,0xf7,0x38,0x71,0x80,0x0, 0x0,0xe,0x38,0xe7,0x38,0x71,0xc0,0x0, 0x0,0xe,0x38,0xe7,0x38,0x71,0xc0,0x0, 0x0,0xe,0x38,0xe7,0x38,0x73,0xc0,0x0, 0x0,0xe,0x38,0xe3,0x98,0xe3,0xc0,0x0, 0x0,0xe,0x38,0xe3,0xb8,0xe3,0x80,0x0, 0x0,0x0,0x38,0xe3,0xf8,0xe3,0x80,0x0, 0x0,0x0,0x38,0xe3,0xf8,0xe3,0x80,0x0, 0x0,0x0,0x3c,0xf1,0xf1,0xe3,0x80,0x0, 0x0,0x6,0x1c,0x70,0x1,0xc7,0x80,0x0, 0x0,0xe,0x1c,0x78,0x3,0xc7,0x80,0x0, 0x0,0xf,0x1c,0x3e,0x7,0x87,0x0,0x0, 0x0,0xf,0x1e,0x3f,0xff,0x8f,0x0,0x0, 0x0,0xf,0x1e,0x1f,0xff,0x1f,0x0,0x0, 0x0,0xf,0xf,0x7,0xfc,0x3e,0x0,0x0, 0x0,0x7,0x87,0x80,0x0,0x7c,0x0,0x0, 0x0,0x7,0x87,0xe0,0x0,0xfc,0x0,0x0, 0x0,0x3,0xc3,0xf8,0x7,0xf8,0x0,0x0, 0x0,0x3,0xe1,0xff,0xff,0xe1,0x0,0x0, 0x0,0x1,0xe0,0x7f,0xff,0x83,0x0,0x0, 0x0,0x1,0xf8,0xf,0xfe,0x7,0x0,0x0, 0x0,0x0,0xfc,0x0,0x0,0xe,0x0,0x0, 0x0,0x0,0x3f,0x0,0x0,0x3c,0x0,0x0, 0x0,0x0,0x1f,0xe0,0x1,0xf8,0x0,0x0, 0x0,0x0,0x7,0xff,0xff,0xf0,0x0,0x0, 0x0,0x0,0x1,0xff,0xff,0xc0,0x0,0x0, 0x0,0x0,0x0,0x1f,0xfc,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; TFT_ILI9163C display = TFT_ILI9163C(__CS,8, __DC); SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); int fingerprintID = 0; void setup(void) { startFingerprintSensor(); display.begin(); displayLockScreen(); } void loop() { fingerprintID = getFingerprintID(); delay(50); if(fingerprintID == 1) { display.drawBitmap(30,35,icon,60,60,GREEN); delay(2000); displayUnlockedScreen(); displayIoanna(); delay(5000); display.fillScreen(BLACK); displayLockScreen(); } if(fingerprintID == 2) { display.drawBitmap(30,35,icon,60,60,GREEN); delay(2000); displayUnlockedScreen(); displayNick(); delay(5000); display.fillScreen(BLACK); displayLockScreen(); } } void displayUnlockedScreen() { display.fillScreen(BLACK); display.drawRect(0,0,128,128,WHITE); display.setCursor(18,10); display.setTextColor(GREEN); display.setTextSize(2); display.print("UNLOCKED"); display.setCursor(20,50); display.setTextColor(WHITE); display.setTextSize(2); display.print("WELCOME"); } void displayNick() { display.setCursor(35,75); display.setTextColor(WHITE); display.setTextSize(2); display.print("NICK!"); } void displayIoanna() { display.setCursor(25,75); display.setTextColor(WHITE); display.setTextSize(2); display.print("IOANNA!"); } void displayLockScreen() { display.drawRect(0,0,128,128,WHITE); display.setCursor(30,10); display.setTextColor(RED); display.setTextSize(2); display.print("LOCKED"); display.setCursor(10,100); display.setTextColor(WHITE); display.setTextSize(1); display.print("Waiting for valid \n fingerprint."); display.drawBitmap(30,35,icon,60,60,WHITE); } void startFingerprintSensor() { Serial.begin(9600); finger.begin(57600); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor"); } Serial.println("Waiting for valid finger..."); } int getFingerprintID() { 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; } |
با سلام چگونه میشود تعداد اثر انگشت های ورودی را زیاد کرد؟مثلا برای 4نفر
سلام نحوه اضاف کردن اثر انگشت به چه شکل هست ممنون میشم یه توضیح مختصر بدید
سلام.هیچ دکمه ای برای منو برا اضافه و حذف اثر انگشت جدید وجود نداره؟