انواع حساسات بصمة الإصبع وعمل كل نوع
حساس بصمة الإصبع هو حساس يقوم بعمل نظام حماية او عمل نظام دخول لمكان او لقاعدة بيانات معينة حيث تستخدم بصمة الإصبع وتعرض على الجهاز فيقوم هذا الحساس بقراءة البصمة وإدخالها إلى جهاز الكمبييوتر.
هناك أنواع كثيرة وطرق كثيرة لطريقة عمل حساسات بصمة الأصابع، ولكن ياتي أشهرها كما يلي:
1 - حساس بصري Optical
هو أقدم أنواع حساسات البصمة المتعارف عليها، ويتواجد على بوابات الشركات وفكرته بسيطة جدًا، فهو يقوم بقراءة بصمة أصبعك ضوئيًا عن طريق تسليط شعاع ضوئي على اصبعك ومن ثم قراءة انعكاس هذا الضوء على العدسة ثم الشروع بتحليله، حيث يرى الضوء الأماكن الفاتحة والأماكن الأقل فتحانًا في بصمتك، أي الارتفاعات والانخفاضات الموجودة، ويتوفر هذا النوع من الحساسات حتى وقتنا هذا نظرًا لسهولة إنتاجها و ثمنه الرخيص نسبيًا.
2 - حساس بصمة الاصبع Scanner
إن هذا النوع من الحساسات هو عبارة عن كاميرا معدلة تلتقط صور 2D ثنائية الأبعاد للبصمة ولكن لهذا النوع العديد من العيوب لأن حجمه كبير جدًا وبالتالي يصعب استخدامه في الأجهزة اللوحية والهواتف الذكية، كما أن الآلية التي يعمل بها تجعل خداعه أمرًا سهلًا، حيث يمكنك إعطاءه صورة للبصمة وسيتعامل الحساس معها على إنها حقيقية.
3 - حساس بصمة الاصبع CAPACITIVE
هو النوع الأكثر انتشارًا في الهواتف الذكية، وتقوم فكرته على وجود عدد كبير من المكثفات الكهربائية الصغيرة التي عندما يتم توصيلها بأي شئ موصل للكهرباء تقوم هي باستقبال تلك الإشارات.
فتقوم تباعًا بتوصيل الكهرباء في أماكن ارتفاعات البصمة في جلد الإنسان، ولا تقوم بالتوصيل في أماكن الانخفاضات، كما أن حجمها الصغير جدًا يجعلها مثالية للهواتف الذكية ويجعل التحايل عليها أمرًا صعبًا لأنها غاية في الدقة وتعتمد على تضاريس البصمة.ولا يتوقف الأمر عند ذلك، فهي موفرة للطاقة بشكل كبير، وتعمل بمجرد لمس اصبعك لها، كما تقوم بقراءة البصمة من أي زاوية.
4 - قارئ البصمة ثلاثي الأبعاد
هي تقنية جديدة مقدمة من شركة كوالكوم الشهيرة بصناعة معالجات الهواتف الذكية، وقامت كوالكوم بتقديم النوع الأحدث في مجال حساسات بصمة الأصابع وهو Sense ID والتي تعتمد على تقنية ثلاثية الأبعاد في التقاط البصمة.
إن حساسات البصمات التقليدية تقوم بالتقاط شريحة واحدة فقط من طبقة الجلد الملامسة للحساس، أما هذه التقنية فتقوم بالتقاط أكثر من طبقة، أي أنها تقوم بالتقاط جميع التفاصيل الدقيقة والعميقة الخاصة بالجلد. وتعتمد تلك التقنية على فكرة عبقرية للغاية، حيث بدلًا من استخدام المستقبل Capacitive الذي تحدثنا عن في السابق.
تقوم باستخدام مستقبل ومرسل صوتي، وهما ببساطة ميكروفون وسبيكر بالغين في الصغر و حساسين للغاية، حيث يقوم المرسل بإرسال وبث موجات صوتية بتردد عالي، وتقوم تلك الموجات بالاصطدام مع البصمة ومن ثم ترتد إلى المستقبل، وفي خلال تلك العملية يقوم المعالج بحساب الزمن ما بين الإرسال والاستقبال ومن ثم رسم نموذج ثلاثي الأبعاد للبصمة.
وتعتبر تلك التقنية ثورة في عالم حساسات بصمات الأصابع لأسباب كثيرة، حيث أنها لا تتأثر بالماء أو العرق والكريمات مثل الحساسات الأخرى بل ويمكن استخدامها مع القفازات مما يجعلها ملائمة جدًا للدول الباردة والجليدية، كما ستعد تلك التقنية هي الأكثر أمنًا على الإطلاق.
فحتى ومع دقة عمل حساسات بصمات الأصابع، استطاع بعض المخترقين بمحاكاة بصمات الأصابع الخاصة بأشخاص مختلفين عن طريق صور فوتوغرافية عالية الدقة مطبوعة على سطح سيليكون مماثل تمامًا للجلد البشري واستخدامها في فتح الحساسات، ولكن باستخدام التقنية الجديدة والتي تعتمد بالأساس على منظور ثلاثي الأبعاد لأعماق البصمة، سيكون من الصعب بل من المستحيل تقليدها او اختراقها.
توصيل حساس بصمة الإصبع من النوع البصري للأردوينو
يمكن استخدام مستشعر بصمة الإصبع البصري AS608 لمسح بصمات الأصابع ويمكنه أيضًا إرسال البيانات المعالجة إلى متحكم دقيق عبر الاتصال التسلسلي أيضًا. يتم تخزين جميع بصمات الأصابع المسجلة في هذه الوحدة. AS608 قادر على تخزين ما يصل إلى 127 بصمة إصبع فردية.
أهم مميزات القفل الالكتروني حساس بصمة الاصبع
- جهد الإمداد: 3.3 فولت.
- العرض الحالي الأقصى: 60mA.
- القرار: 500 نقطة في البوصة.
- AS608 مستشعر بصمة الإصبع البصري تحتوي هذه الوحدة على 4 دبابيس مفيدة.
- V +: وحدة إمداد الطاقة - 3.3 فولت.
- GND: الأرض.
- TX: جهاز الإرسال التسلسلي.
- RX: جهاز استقبال تسلسلي.
فنقوم بتوصيل جهد 3.3 في الحساس إلى جهد 3.3 في الأردوينو وتوصيل لأرضي في جهاز الحساس إلى الأرضي في الأردوينو ومن ثم نقوم بتوصيل الجهاز الإرسال التسلسلي في الحساس إلى بين الاستقبال في الأردوينو ،نستطيع توصيل أيضا البين الاستقبال في الحساس مع البين الارسال في الأردوينو فهذا أمر اختياري لا إجباري.
الكود البرمجي القفل الالكتروني حساس بصمة الاصبع
code to Arduino.
/*
AS608-Optical-Fingerprint-Sensor-enroll
Home
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;
}
من خلال هذا المقال عرفنا أهمية بصمة الإصبع في حماية بعض الخصوصية وفوائده وكوده البرمجي لكي يستطيع أي مبرمج عمل أو برمجة حساس بصمة الإصبع بسهولة ويسر فيصبح قادرا على عمل مشروع أكبر بذلك ويتوسع ويضيف أفكار أكثر إفادة