مقدمه
اثر انگشت افراد منحصر به فرد است. پس یکی از بهترین روش ها برای جلوگیری از استفاده ی یک وسیله ی شخصی توسط دیگران، استفاده از اثر انگشت است.
در این پروژه راه جدیدی برای افزایش امنیت هارد و دستگاه های مشابه آن پیشنهاد شده است. در این آموزش با نحوه ی اضافه کردن سنسور اثر انگشت به یک هارد آشنا می شوید.
آنچه در این آموزش یاد می گیرید
- نحوه ی کار و راه اندازی سنسور اثر انگشت با آردوینو
- ساخت یک واسط امنیتی برای هارد اکسترنال
- تعریف اثر انگشت مجاز برای استفاده از هارد
ماژول اثر انگشت R301T
ماژول اثر انگشت R301 ماژولی با دقت زیاد، سرعت پردازش بالا و الگوریتم تطبیق دقیق است. روی این ماژول یک تراشه ی فلش برای ذخیره ی اثر انگشت ها وجود دارد.
این سنسور قابلیت ذخیره ی حدود 1700 اثر انگشت را دارد.
ولتاژ کاری این ماژول، 5 ولت و جریان مورد نیاز آن حدود 50 میلی آمپر است.
پروتکل ارتباطی این ماژول سریال است و بادریت پیش فرض آن 57600 است. به همین جهت، به راحتی می توان این مازول را با پردازنده های متدوال مثل بردهای آردوینو و رزبری پای راه اندازی کرد.
لوازمی که به آن احتیاج دارید
سخت افزارهای مورد نیاز
نرم افزارهای مورد نیاز
سیم بندی
کد
ابتدا کتابخانه ی سنسور را از لینک زیر دانلود کرده و نصب کنید و سپس کد زیر را روی آردوینو آپلود کنید.
اگر اولین بار است که از آردوینو استفاده می کنید، نگران نباشید! کافیست مراحل زیر را دنبال کنید:
- به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
- نرم افزار Arduino IDE را اجرا کنید. تمام کد های پیش فرض را پاک کرده و کد زیر را به جای آن کپی کنید.
- برای نصب کتابخانه ها، از پنجره ی Sketch و بخش Include Library، گزینه ی Add .ZIP Library را انتخاب کنید و فایل های کتابخانه ای که دانلود کردید را انتخاب کنید.
- نوع آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
- پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
- دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
- شما با موفقیت کد خود را روی آردوینو ریختید.
دانلود کتابخانه ی مورد نیاز:
Fingerprint Library
1 file(s) 2.30 MB
#include "Adafruit_Fingerprint.h"
#include "SoftwareSerial.h"
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int cc=0;
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); }
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(9,HIGH);
}
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
{
getFingerprintIDez();
delay(50); //don't ned to run this at full speed.
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println("No finger detected");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK success!
p = finger.image2Tz();
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!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
digitalWrite(9,LOW);
// found a match!
for (int i=0;i>5;i++)
{digitalWrite(10,LOW);
delay(10);
digitalWrite(10,HIGH);
delay(10);}
Serial.print("Found ID #");
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");
Serial.println(finger.confidence);
for (int i=255;i>1;i--)
{analogWrite(11,i); delay(10);}
digitalWrite(13,HIGH);
return finger.fingerID;
}
// 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;
}
سرهم بندی
ابتدا یک کابل کوچک با سوکت micro USB 3 بسازید. دقت کنید که ترتیب سیم ها را رعایت کنید.
برای ساخت جعبه میتوانید از پلکسی گلس استفاده کنید.
رله را از برد خود جدا کرده و مستقیما به آردوینو متصل کنید.
یک گام جلوتر
پروژه ی خود را ارتقا دهید:
- زمان دسترسی هر کاربر به هارد را ذخیره کنید.
- حجم انتقال داده توسط هر کاربر را ذخیره کنید.