الرئيسية / متحكمات / أردوينو / مشروع حساس بصمة الأصبع مع الاردوينو
FPS

مشروع حساس بصمة الأصبع مع الاردوينو

عمل نظام حماية او عمل نظام دخول لمكان او لقاعدة بيانات معينة , من أكثر الحساسات شيوعاً في الأستخدام هو حساس بصمة الأصبع , بحيث يعتمد التأكد من شخص ما على بصمة اصبعه .

سنقوم اليوم باستعراض هذا الحساس و كيفية توصيله مع الأردوينو .

في البداية سنتعرف على الحساس الذي سنستخدمه و هوSEN04172P

Grove - Fingerprint Sensor-3-500x500

 

 Module Type : SEN04172P
Supply voltage: 3.6~6.0 V
Operating current(Max) : 120 mA
Storage capacity: 162 templates
Baud rate :9600, 19200, 28800, 38400, 57600bps (default is 57600)
Interface:TTL Serial
Work Temperature:-20 ~ +50 ℃
هذا الحساس يعتمد على البروتوكول UART Serial .
 adafruit-fingerprint-sensor-2-large
يأتي هذا الحساس عادة مع سلك خاص لتوصيله به ذو الألوان :

الأحمر : تغذية 5V
الأسود : الأضي Gnd
الأبيض: سلك Rx للحساس TTL
الأخضر”احياناً اصفر”: سلك Tx للحساس TTL

القطع المستخدمة في هذه التجربة :
ro 125

1) بطاقة أردوينو “أونو ”

2)حساس البصمة
3)اسلاك توصيل Jumper

سنقوم في البداية بتخزين البصمات التي نريد التعرف عليها مسبقا , و هذا يتم عن طريق الخطوات التالية :

1) نحمل برنامج فارغ Blank على الأردوينو “يحتوي على setip, loop فقط “
//Blank code 
//http://www.genotronex.com
//Code for finger print sensor
void setup() {}
void loop() {}
2) نوصل الحساس مباشرة إلى ال (Hardware serial (D0,D1  نقوم بتشغيل برنامج SF Demo و يمكن تحميله من هنا 
finger print_schem
ro 140
connection
3) نقوم بأختيار رقم المنفذ الصحيح ” كتنويه أذا لم يفتح معك البرنامج و يرتبط مع السنسور بشكل صحيح فأجعل رقم المنفذ الخاص بالأردوينو بين 2-10 عن طريق اعدادات المنافذ ” كما في الصورة .
op com
بعد الربط بشكل صحيح مع الحساس ستعطي المعلومات و البيانات المتعلقة بالحساس , و حتى البصمات المخزنة مسبقاص “أن وجدت” ستظهر على الشاشة .
الآن سنضيف بصمة جديدة ليتعرف الحساس لاحقاً عليها .
نذهب للخيار Enroll و نضغط عليه لتظهر لدينا شاشة , هذه الشاشة تطلب منا تحديد مكان تخزين البصمة الحالية “من 0 – 162 بصمة “
enroll

“بعد تحديد مكان تخزين البصمة , نضغط OK ثم نضع الاصبع على الحساس , سيظهر لون أحمر على الحساس , أبقي يدك موضوعه عليه و ستظهر رسالة على الشاشة ترشدك للخطوات .

plz

 

 

sucess

هذه هي الطريقة لتخزين بصمة جديدة “يمكنك تخزين 162 بصمة مختلفة “.

طريقة سريعة للتأكد من أن تخزينك للبصمة صحيحة و مكان تخزين البصمة نختار الأمر ( بحث search ) ثم نضع الأصبع على الحساس و أن كانت البصمة مخزنة مسبقاً سيعطي الحساس انها موجودة و المكان المخزنة فيه هذه البصمة .

هكذا نكون قد تعرفنا على طريقة تخزين بصمة جديدة لهذا الحساس .

search

ro 141
الخطوة الثانية : ربطه مع الأردوينو مباشرة .
الخطوة التالية تتلخص في عمل مقارنة للبصمات التي سيتم ادخالها لهذا الحساس و توظيفها لعمل وظائف مختلفة “تشغيل محرك , السماح بدخول قاعدة بيانات , السماح بتلقي اوامر من هذا المستخدم …ألخ “
ro 138
التوصيل سيتغير  كما في المخطط .
SW finger print_schem
و هذا هو البرنامج المستخدم لهذا الحساس .

/*************************************************** 
  This is an example sketch for our optical Fingerprint sensor

  Designed specifically to work with the Adafruit BMP085 Breakout 
  ----> http://www.adafruit.com/products/751
 Modified By : Mohannad Rawashdeh
   http://www.genotronex.com
   Code for finger print sensor

*/

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
int getFingerprintIDez();
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()  
{
  Serial.begin(9600);
  Serial.println("fingertest");

  // 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);
  }
  Serial.println("Waiting for valid finger...");
}

void loop()                     // run over and over again
{
  getFingerprintIDez();
}

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;
  }   
  
  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); Serial.println(finger.confidence); 
}

// 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.println(finger.fingerID); 
  Serial.print("This Finger print related to : "); 
  switch(finger.fingerID){
   case 0:  
  Serial.println("Mohannad Rawashdeh "); 
    break;
   case 1 :  
  Serial.println("Ali Rawashdeh "); 
    break;
  
  }  

  return finger.fingerID; 
  
}


يقوم هذا البرنامج بمقارنة البصمات المخزنة فيه بالبصمات التي يتم وضعها على الحساس و ادخالها , و طباعة اسم صاحب البصمة
id
المصادر :
  •  Genotronex

عن حمزة الخزاعلة

مدير موقع كهربجي | مهندس بور ( هندسة القوى الكهربائية ) وباحث في مواضيع التحكم الالكتروني

شاهد أيضاً

Neonode-Airbar-8

كيف تحول أي شاشة عادية الى شاشة تعمل باللمس؟

تريد شراء جهاز كمبيوتر محمول شاشة تعمل باللمس، ولكن لا يمكن تحمله؟ ولكن ماذا لو …

تعليق واحد

  1. روووووووووووووووووعه

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

error: thank you for using Kahrabje website ^^