با سنسور اثر انگشت و آردوینو امنیت هارد دیسک خود را افزایش دهید

فهرست مطالب

مقدمه

اثر انگشت افراد منحصر به فرد است. پس یکی از بهترین روش ها برای جلوگیری از استفاده ی یک وسیله ی شخصی توسط دیگران، استفاده از اثر انگشت است.

در این پروژه راه جدیدی برای افزایش امنیت هارد و دستگاه های مشابه آن پیشنهاد شده است. در این آموزش با نحوه ی اضافه کردن سنسور اثر انگشت به یک هارد آشنا می شوید.

آنچه در این آموزش یاد می گیرید

ماژول اثر انگشت R301T

ماژول اثر انگشت R301 ماژولی با دقت زیاد، سرعت پردازش بالا و الگوریتم تطبیق دقیق است. روی این ماژول یک تراشه ی فلش برای ذخیره ی اثر انگشت ها وجود دارد. این سنسور قابلیت ذخیره ی حدود 1700 اثر انگشت را دارد. ولتاژ کاری این ماژول، 5 ولت و جریان مورد نیاز آن حدود 50 میلی آمپر است. پروتکل ارتباطی این ماژول سریال است و بادریت پیش فرض آن 57600 است. به همین جهت، به راحتی می توان این مازول را با پردازنده های متدوال مثل بردهای آردوینو و رزبری پای راه اندازی کرد.

لوازمی که به آن احتیاج دارید

سخت افزارهای مورد نیاز

آردوینو پرو مینی × 1
ماژول سنسور اثر انگشت R301T × 1
رله ی 5 ولت × 1
ال ای دی RGB × 1
کانکتور Micro USB 3.0 × 1

نرم افزارهای مورد نیاز

Arduino IDE

سیم بندی

کد

ابتدا کتابخانه ی سنسور را از لینک زیر دانلود کرده و نصب کنید و سپس کد زیر را روی آردوینو آپلود کنید.

اگر اولین بار است که از آردوینو استفاده می کنید، نگران نباشید! کافیست مراحل زیر را دنبال کنید:

  1. به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
  2. نرم افزار Arduino IDE را اجرا کنید. تمام کد های پیش فرض را پاک کرده و کد زیر را به جای آن کپی کنید.
  3. برای نصب کتابخانه ها، از پنجره ی Sketch و بخش Include Library، گزینه ی Add .ZIP Library را انتخاب کنید و فایل های کتابخانه ای که دانلود کردید را انتخاب کنید.
  4. نوع آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
  5. پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
  6. دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
  7. شما با موفقیت کد خود را روی آردوینو ریختید.

دانلود کتابخانه ی مورد نیاز:

#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 بسازید. دقت کنید که ترتیب سیم ها را رعایت کنید.

برای ساخت جعبه میتوانید از پلکسی گلس استفاده کنید.

رله را از برد خود جدا کرده و مستقیما به آردوینو متصل کنید.

یک گام جلوتر

پروژه ی خود را ارتقا دهید:

  • زمان دسترسی هر کاربر به هارد را ذخیره کنید.
  • حجم انتقال داده توسط هر کاربر را ذخیره کنید.

از این مطلب خوشتان آمد؟

آخرین مطالت و آموزش ها را در ایمیلتان دریافت کنید:

مطالب بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.