مهمترین ویژگی های این ماژول عبارت اند از:
- ولتاژ تغذیه: 3.3 ولت
- جریان تغذیه: حداکثر 60 میلیآمپر
- رزولوشن: 500 dpi
- حداکثر زمان ثبت تصویر اثرانگشت: 1 ثانیه
معرفی پایه های (Pinout) سنسور اثر انگشت نوری AS608
4 پایه مهم این ماژول به شرح زیر است:
- V+: تغذیه ماژول – 3.3 ولت
- GND: زمین
- TX: فرستنده سریال
- RX: گیرنده سریال
*پین اوت (Pinout) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
آیتم های مورد نیاز: آردوینو UNO R3 + سنسور اثر انگشت نوری AS608 + نرم افزار آردوینو IDE
راه اندازی سنسور اثر انگشت نوری AS608 با آردوینو:
گام اول: سیم بندی
گام دوم: نصب کتابخانه
به Library manager رفته و با سرچ کلمه Fingerprint، کتابخانه زیر را نصب کنید.
گام سوم: ثبت اثرانگشت
کد زیر را روی برد آردوینو آپلود کنید
/* AS608-Optical-Fingerprint-Sensor-enroll Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=DWQ9d7kVdA" data-secret="DWQ9d7kVdA" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> based on Adafruit Library */ #include <Adafruit_Fingerprint.h> SoftwareSerial mySerial(2, 3); // TX/RX Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); uint8_t id; void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... delay(100); Serial.println("\n\nAdafruit Fingerprint sensor enrollment"); // 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); } } } uint8_t readnumber(void) { uint8_t num = 0; while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); } return num; } void loop() // run over and over again { Serial.println("Ready to enroll a fingerprint!"); Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as..."); id = readnumber(); if (id == 0) {// ID #0 not allowed, try again! return; } Serial.print("Enrolling ID #"); Serial.println(id); while (! getFingerprintEnroll() ); } uint8_t getFingerprintEnroll() { int p = -1; Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } } // OK success! p = finger.image2Tz(1); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } Serial.println("Remove finger"); delay(2000); p = 0; while (p != FINGERPRINT_NOFINGER) { p = finger.getImage(); } Serial.print("ID "); Serial.println(id); p = -1; Serial.println("Place same finger again"); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } } // OK success! p = finger.image2Tz(2); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } // OK converted! Serial.print("Creating model for #"); Serial.println(id); p = finger.createModel(); if (p == FINGERPRINT_OK) { Serial.println("Prints matched!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_ENROLLMISMATCH) { Serial.println("Fingerprints did not match"); return p; } else { Serial.println("Unknown error"); return p; } Serial.print("ID "); Serial.println(id); p = finger.storeModel(id); if (p == FINGERPRINT_OK) { Serial.println("Stored!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_BADLOCATION) { Serial.println("Could not store in that location"); return p; } else if (p == FINGERPRINT_FLASHERR) { Serial.println("Error writing to flash"); return p; } else { Serial.println("Unknown error"); return p; } } |
برنامه بالا برای ثبت اثر انگشت میباشد. شما توسط این برنامه میتوانید 127 اثر انگشت متفاوت را ثبت کنید. برنامه را اجرا کرده و Serial Monitor را باز کنید. سپس برای ثبت هر اثر انگشت بایستی مراحل زیر را طی کنید:
1- وارد کردن ID اثر انگشت
2- قراردادن انگشت
در مرحله بعد شما بایستی انگشت خود را برای نخستین تصویربرداری بر روی سنسور قرار دهید.
3- قراردادن دوبارهی انگشت
در این مرحله برای تصویربرداری مجدد بایستی انگشت خود را دوباره بر روی سنسور قرار دهید. بعد از اتمام صحیح این مرحله عبارت Stored ظاهر میگردد.
گام چهارم : تست و تطابق اثر انگشت
در ابتدا برنامه زیر را بر روی آردینو آپلود کنید.
/* AS608-Optical-Fingerprint-Sensor-enroll Modified on 06 Jan 2021 by Amir Mohammad Shojaee @ Electropeak Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=DWQ9d7kVdA" data-secret="DWQ9d7kVdA" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> based on Adafruit Library */ #include <Adafruit_Fingerprint.h> volatile int finger_status = -1; SoftwareSerial mySerial(2, 3); // TX/RX on fingerprint sensor Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... delay(100); Serial.println("\n\nAdafruit finger detect test"); // 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); } } finger.getTemplateCount(); Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates"); Serial.println("Waiting for valid finger..."); } void loop() // run over and over again { finger_status = getFingerprintIDez(); if (finger_status!=-1 and finger_status!=-2){ Serial.print("Match"); } else{ if (finger_status==-2){ for (int ii=0;ii<5;ii++){ Serial.print("Not Match"); } } } delay(50); //don't ned to run this at full speed. } // returns -1 if failed, otherwise returns ID # int getFingerprintIDez() { uint8_t p = finger.getImage(); if (p!=2){ Serial.println(p); } if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p!=2){ Serial.println(p); } if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -2; // found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } |
توسط برنامه بالا تست و تطابق اثر انگشت انجام میشود. ابتدا برنامه را اجرا کنید و سپس Serial Monitor را باز کنید.
در این مرحله برنامه منتظر میماند تا یک انگشت برای شناسایی بر روی سنسور قرار گیرد. پس از قرارگیری یک انگشت بر روی سنسور، اگر اثر انگشت آن از قبل ذخیره شده باشد عبارت Match و در صورتی که اثر انگشت شناسایی نشود، عبارت Not Match ظاهر میگردد.
در ضمن در صورت شناسایی اثر انگشت، ID متناظر با آن نیز مشخص میشود.
دیدگاه خود را بنویسید