الرئيسية / متحكمات / أردوينو / مشروع حساس بصمة الأصبع مع الاردوينو
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

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

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

شاهد أيضاً

arduinoynlead01

كيف تحمي الأردوينو من التلف بأبسط المكونات !!

إذا كنت تريد أن تحمي دائرة الأردوينو من التلف عند توصيل المحركات والمرحلات Relays او …

تعليق واحد

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

أضف تعليقاً

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

error: thank you for using Kahrabje website ^^