- المواد المطلوبة
- وحدة مستشعر بصمة الإصبع GT511C3 (FPS)
- توصيل مستشعر بصمة الإصبع GT511C3 بالاردوينو
- اردوينو مع GT511C3
- برمجة Arduino لمستشعر بصمة الإصبع GT511C3
- يعمل مستشعر بصمة الإصبع GT511C3 مع الأردوينو
تم استخدام المقاييس الحيوية كنظام مصادقة موثوق به لفترة طويلة الآن. توجد اليوم أنظمة قياس حيوية معقدة يمكنها التعرف على الشخص من خلال ضربات قلبه أو حتى عن طريق الحمض النووي الخاص به. تشمل الطرق الأخرى الممكنة التعرف على الصوت والتعرف على الوجوه ومسح قزحية العين ومسح بصمات الأصابع. من بينها التعرف على بصمات الأصابع هو الطريقة الأكثر استخدامًا ، يمكننا العثور عليها من نظام الحضور البسيط إلى الهواتف الذكية إلى فحوصات الأمان وغير ذلك الكثير.
في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام مستشعر بصمة الإصبع GT511C3 (FPS) مع Arduino. هناك العديد من FPS المتاحة وتعلمنا بالفعل كيفية استخدامها لبناء تصميمات مثل نظام الحضور وآلة التصويت ونظام الأمان وما إلى ذلك ، لكن GT511C3 أكثر تقدمًا بدقة عالية ووقت استجابة أسرع ، لذلك سوف نتعلم كيفية استخدامه مع Arduino لتسجيل بصمات الأصابع عليها ثم الكشف عن بصمات الأصابع كلما لزم الأمر. اذا هيا بنا نبدأ.
المواد المطلوبة
- اردوينو نانو / أونو
- مستشعر بصمة الإصبع GT511C3
- شاشة LCD مقاس 16 × 2
- وعاء - مقاومات 10k و 1 k و 10 k و 22 k
- اضغط الزر
- توصيل الأسلاك
- لوح الخبز
وحدة مستشعر بصمة الإصبع GT511C3 (FPS)
قبل الغوص في المشروع ، دعنا نفهم وحدة مستشعر بصمات الأصابع GT511C3 وكيف تعمل. هذا المستشعر مختلف تمامًا عن مستشعر بصمات الأصابع بالسعة والموجات فوق الصوتية الذي يشيع استخدامه في هواتفنا الذكية. و GT511C3 هو جهاز استشعار بصمة البصرية ، وهذا يعني أنها تعتمد على صور بصمتك الاعتراف نمطها. نعم ، لقد قرأت ذلك بشكل صحيح ، فالمستشعر يحتوي بالفعل على كاميرا بداخله تلتقط صورًا لبصمة إصبعك ثم تعالج هذه الصور باستخدام ARM Cortex M3 IC المدمج القوي. تُظهر الصورة أدناه الجانب الأمامي والخلفي من المستشعر مع pinouts.
كما ترى ، يحتوي المستشعر على كاميرا (بقعة سوداء) محاطة بمصابيح LED زرقاء ، يجب إضاءة هذه المصابيح لالتقاط صورة واضحة لبصمة الإصبع. ثم تتم معالجة هذه الصور وتحويلها إلى قيمة ثنائية باستخدام متحكم ARM المقترن بـ EEPROM. تحتوي الوحدة أيضًا على SMD LED أخضر اللون للإشارة إلى الطاقة. تبلغ كل صورة بصمة إصبع 202 × 258 بكسل بدقة 450 نقطة في البوصة. و استشعار يمكن الالتحاق تصل 200 بصمات الأصابع ولكل بصمات قالب يقوم بتعيين شكل ID 0-199. ثم أثناء الاكتشاف ، يمكنه مقارنة بصمة الإصبع الممسوحة ضوئيًا تلقائيًا مع جميع القوالب البالغ عددها 200 ، وإذا تم العثور على تطابق ، فإنه يعطي رقم معرف تلك البصمة المعينة باستخدام Smack Finger 3.0خوارزمية على متحكم ARM. يمكن أن يعمل المستشعر من 3.3 فولت إلى 6 فولت ويتواصل من خلال الاتصال التسلسلي عند 9600. ويقال إن دبابيس الاتصال (Rx و Tx) تتحمل 3.3 فولت فقط ، ومع ذلك لا تحدد ورقة البيانات الكثير عنها. يظهر أدناه دبوس الخروج من GT511C3 FPS.
بصرف النظر عن الاتصال التسلسلي ، يمكن أيضًا توصيل الوحدة مباشرة بالكمبيوتر من خلال اتصال USB باستخدام المسامير الموضحة في الصورة السابقة. بمجرد توصيلها بجهاز الكمبيوتر ، يمكن التحكم في الوحدة النمطية باستخدام تطبيق SDK_DEMO.exe الذي يمكن تنزيله من الرابط. يتيح هذا التطبيق للمستخدم تسجيل / التحقق من / حذف بصمات الأصابع وكذلك التعرف على بصمات الأصابع. يمكن أن يساعدك البرنامج أيضًا على قراءة الصورة التي تم التقاطها بواسطة المستشعر والتي تستحق التجربة. بدلاً من ذلك ، يمكنك أيضًا استخدام هذا البرنامج حتى إذا كان المستشعر متصلاً بـ Arduino ، سنناقش هذا لاحقًا في هذه المقالة.
ميزة أخرى مثيرة للاهتمام حول المستشعر هي الغلاف المعدني حول منطقة الاستشعار. كما قلت سابقًا ، يجب تشغيل مؤشر LED الأزرق حتى يعمل المستشعر. ولكن في التطبيقات التي يجب أن ينتظر فيها المستشعر بصمة الإصبع ، لا يمكن إبقاء مؤشر LED قيد التشغيل دائمًا لأنه سيؤدي إلى تسخين المستشعر وبالتالي إتلافه. ومن ثم في هذه الحالات ، يمكن توصيل الغلاف المعدني بدبوس إدخال سعوي يعمل باللمس لوحدة MCU لاكتشاف ما إذا كان قد تم لمسه. إذا كانت الإجابة بنعم ، يمكن تشغيل مؤشر LED ويمكن بدء عملية الاستشعار. لم يتم توضيح هذه الطريقة هنا لأنها خارج نطاق هذه المقالة.
عند التشغيل عند 3.3 فولت ، يستهلك المستشعر حوالي 130 مللي أمبير. يتطلب الأمر ما يقرب من 3 ثوانٍ لتسجيل الإصبع وثانية واحدة للتعرف عليه. ومع ذلك ، إذا كان عدد القوالب المسجلة أقل ، فستكون سرعة التعرف عالية. لمزيد من التفاصيل حول المستشعر ، يمكنك الرجوع إلى ورقة البيانات هذه من ADH-Tech وهي الشركة المصنعة الرسمية للوحدة.
توصيل مستشعر بصمة الإصبع GT511C3 بالاردوينو
يحتوي GT511C3 FPS على دبابيس طاقة يمكن تشغيلهما بواسطة دبوس + 5V من Arduino ودبوسين اتصال Rx و Tx يمكن توصيلهما بأي دبوس رقمي من Arduino للاتصال التسلسلي. بالإضافة إلى ذلك ، أضفنا أيضًا زر ضغط وشاشة LCD لعرض حالة المستشعر. يمكن العثور أدناه على مخطط الدائرة الكامل لربط GT511C3 FPS مع Arduino.
نظرًا لأن دبابيس Rx و Tx تتحمل 3.3 فولت ، فقد استخدمنا مقسمًا محتملاً على جانب Rx لتحويل 5 فولت إلى 3.3 فولت. يقوم المقاوم 10 كيلو والمقاوم 22 كيلو بتحويل إشارة 5 فولت من دبوس Arduino Tx إلى 3.3 فولت قبل أن تصل إلى دبوس Rx الخاص بـ FPS. يمكن أيضًا تشغيل المستشعر بجهد 3.3 فولت ولكن تأكد من أن Arduino الخاص بك يمكنه توفير تيار كافٍ للمستشعر. لقد قمنا بتوصيل شاشة LCD في وضع 4 بت مدعومًا بدبوس 5 فولت من Arduino. يتم توصيل زر الضغط بالدبوس D2 والذي عند الضغط عليه سيضع البرنامج في وضع التسجيل حيث يمكن للمستخدم تسجيل إصبع جديد. بعد التسجيل ، سيبقى البرنامج في وضع المسح للبحث عن أي إصبع يلمس المستشعر.
اردوينو مع GT511C3
كما ذكرنا سابقًا ، يتصل GT511C3 FPS من خلال الاتصال التسلسلي ، ويتفهم المستشعر الكود السداسي ، ويتم تنفيذ عملية معينة لكل رمز سداسي. يمكنك التحقق من ورقة البيانات لمعرفة جميع القيم السداسية والوظيفة المقابلة لها إذا كنت مهتمًا. ولكن ، من حسن حظنا أن bboyho قد أنشأت بالفعل مكتبة يمكن استخدامها مباشرة مع Arduino لتسجيل بصمات الأصابع واكتشافها. يمكن تنزيل مكتبة Github لـ GT511C3 FPS من الرابط أدناه
مكتبة اردوينو GT511C3
سيقوم الرابط بتنزيل ملف ZIP ، ثم يتعين عليك إضافته إلى Arduino IDE الخاص بك باتباع الأمر Sketch -> Include Library -> Add.ZIP Library. بمجرد إضافة المكتبة ، قم بإعادة تشغيل IDE الخاص بك ويجب أن تكون قادرًا على العثور على برامج e xample لـ GT511C3 FSP ضمن ملف -> مثال -> Fingerprint Scanner TTL كما هو موضح أدناه
يجب أن تشاهد أربعة أمثلة من البرامج ، سيومض برنامج الوميض باللون الأزرق على FPS ، ويمكن استخدام برنامج إصبع التسجيل والمعرف لتسجيل وتحديد الأصابع وفقًا لذلك. لاحظ أنه بمجرد تسجيل الإصبع سيتم تذكره دائمًا بواسطة الوحدة حتى إذا تم إيقاف تشغيله.
يمكن تحميل برنامج Serial Pass-through إلى Arduino لاستخدام تطبيق Demo_SDK.exe الذي ناقشناه سابقًا في هذه المقالة. لحذف أي قالب لبصمات الأصابع أو لحفظ نسخة على جهاز الكمبيوتر الخاص بك ، يمكن استخدام تطبيق SDK هذا.
برمجة Arduino لمستشعر بصمة الإصبع GT511C3
هدفنا هنا هو كتابة برنامج يسجل إصبعًا عند الضغط على زر ويعرض رقم معرف الإصبع المسجل بالفعل. يجب أن نكون قادرين أيضًا على عرض جميع المعلومات على شاشة LCD لتمكين المشروع من أن يكون مستقلاً. و يتم إعطاء رمز كاملة أن تفعل الشيء نفسه في أسفل هذه الصفحة. هنا أقوم بتقسيم الشيء نفسه إلى مقتطفات صغيرة لمساعدتك على فهم أفضل.
كما هو الحال دائمًا نبدأ البرنامج من خلال تضمين المكتبات المطلوبة ، سنحتاج هنا إلى مكتبة FPS_GT511C3 لوحدة FPS الخاصة بنا ، ومسلسل البرامج لاستخدام D4 و D5 في الاتصال التسلسلي والبلور السائل لواجهة LCD. ثم نحتاج إلى ذكر المسامير التي تم توصيل FPS و LCD بها. إذا كنت قد اتبعت مخطط الدائرة على هذا النحو ، فستكون 4 و 5 لـ FPS و D6 إلى D11 لشاشة LCD. يظهر رمز نفسه أدناه
#include "FPS_GT511C3.h" // احصل على مكتبة من https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // مكتبة البرامج التسلسلية #include
داخل وظيفة الإعداد ، نعرض بعض الرسائل التمهيدية على شاشة LCD ثم نقوم بتهيئة وحدة FPS. يعمل الأمر fps.SetLED (صحيح) على تشغيل مؤشر LED الأزرق على المستشعر ، ويمكنك إيقاف تشغيله بواسطة fps.SetLED (خطأ) عندما لا يكون مطلوبًا لأنه سيسخن المستشعر إذا ترك قيد التشغيل باستمرار لقد صنعنا أيضًا الدبوس D2 كدبوس إدخال وقمنا بتوصيله بمقاوم سحب داخلي لتوصيل زر ضغط بالدبوس.
إعداد باطل () { Serial.begin (9600) ؛ lcd.begin (16 ، 2) ؛ // تهيئة 16 * 2 LCD.print ("GT511C3 FPS") ؛ // سطر رسالة المقدمة 1 lcd.setCursor (0 ، 1) ؛ lcd.print ("مع Arduino") ؛ // تأخير سطر الرسالة 2 (2000) ؛ lcd.clear () ؛ fps.pen () ، // أرسل الأمر التسلسلي لتهيئة fp fps.SetLED (صحيح) ؛ // قم بتشغيل LED بحيث يمكن لـ fps رؤية بصمة pinMode (2 ، INPUT_PULLUP) ؛ // الاتصال بمقاومة سحب داخلية مثل دبوس الإدخال }
داخل وظيفة الحلقة الفارغة ، يتعين علينا التحقق مما إذا كان الزر مضغوطًا ، وإذا تم الضغط عليه ، فسنقوم بتسجيل إصبع جديد وحفظ القالب الخاص به برقم معرف باستخدام وظيفة التسجيل. إذا لم يكن الأمر كذلك ، فسوف نستمر في انتظار الضغط على إصبع في المستشعر. إذا تم الضغط عليه ، فسنحدد بصمة الإصبع عن طريق مقارنتها بجميع قوالب بصمات الأصابع المسجلة باستخدام طريقة 1: N. بمجرد اكتشاف رقم الهوية ، سنعرض ترحيبًا متبوعًا برقم الهوية. إذا لم تتطابق بصمة الإصبع مع أي من الأصابع المسجلة ، فسيكون عدد المعرف 200 ، وفي هذه الحالة سنعرض ترحيبًا مجهولًا.
إذا (digitalRead (2)) // إذا تم الضغط على الزر { Enroll () ؛ // Enroll a fingerprint } // تحديد اختبار بصمة الإصبع إذا (fps.IsPressFinger ()) { fps.CaptureFinger (false) ؛ معرف int = fps.Identify1_N () ، lcd.clear () ؛ lcd.print ("مرحبًا:") ؛ إذا (المعرف == 200) lcd.print ("غير معروف") ؛ // إذا لم يتم التعرف على lcd.print (معرف) ؛ تأخير (1000) ؛ }
و تسجل أن وظيفة يجب أن تأخذ ثلاثة مداخل عينة للتسجيل إصبع واحد بنجاح. بمجرد التسجيل ، سيتم إنشاء نموذج لهذا الإصبع المعين والذي لن يتم حذفه ما لم يجبره المستخدم على ذلك من خلال أوامر HEX. يظهر رمز تسجيل الإصبع أدناه. يتم استخدام طريقة IsPressFinger للتحقق مما إذا تم اكتشاف إصبع ، وإذا كانت الإجابة بنعم ، فسيتم التقاط الصورة باستخدام CaptureFinger ثم في النهاية يتم استخدام Enroll1 و Enroll2 و Enroll3 لثلاث عينات مختلفة لتسجيل إصبع واحد بنجاح. تعرض شاشة LCD رقم معرف الإصبع إذا تم التسجيل بنجاح وإلا ستعرض رسالة فشل مع رمز. يعني الرمز 1 أن بصمة الإصبع لم يتم التقاطها بوضوح وبالتالي عليك المحاولة مرة أخرى. الرمز 2 هو إشارة إلى فشل الذاكرة والرمز 3 يشير إلى أن الإصبع قد تم تسجيله بالفعل.
void Enroll () // Enroll function من مكتبة exmaple program { int قيد = 0؛ bool usedid = صحيح ؛ while (usedid == true) { usedid = fps.CheckEnrolled (إنجيد) ؛ if (usedid == true) إنجيد ++ ؛ } fps.EnrollStart (مسجل) ، // تسجيل lcd.print ("Enroll #") ؛ lcd.print (إنجيد) ؛ while (fps.IsPressFinger () == false) تأخير (100) ؛ منطقية = fps.CaptureFinger (صحيح) ؛ int iret = 0 ؛ إذا (bret! = false) { lcd.clear () ؛ lcd.print ("إزالة الإصبع") ؛ fps.Enroll1 () ، while (fps.IsPressFinger () == true) تأخير (100) ؛ lcd.clear () ؛ lcd.print ("اضغط مرة أخرى") ؛ while (fps.IsPressFinger () == false) تأخير (100) ؛ بريت = fps.CaptureFinger (صحيح) ؛ إذا (bret! = false) { lcd.clear () ؛ lcd.print ("إزالة الإصبع") ؛ fps.Enroll2 () ، while (fps.IsPressFinger () == true) تأخير (100) ؛ lcd.clear () ؛ lcd.print ("اضغط مرة أخرى") ؛ while (fps.IsPressFinger () == false) تأخير (100) ؛ بريت = fps.CaptureFinger (صحيح) ؛ إذا (bret! = false) { lcd.clear () ؛ lcd.print ("إزالة الإصبع") ؛ iret = fps.Enroll3 () ، إذا (iret == 0) { lcd.clear () ؛ lcd.print ("تسجيل النجاح") ؛ } else { lcd.clear ()؛ lcd.print ("فشل التسجيل:") ؛ lcd.print (iret) ؛ } } else lcd.print ("فشل 1") ؛ } else lcd.print ("فشل 2") ؛ } else lcd.print ("فشل 3") ؛ }
يعمل مستشعر بصمة الإصبع GT511C3 مع الأردوينو
الآن بعد أن أصبحت أجهزتنا وكودنا جاهزًا ، حان الوقت لاختبار مشروعنا. قم بتحميل الكود إلى Arduino وقم بتشغيله ، أنا فقط أستخدم منفذ micro-USB لتشغيل المشروع. عند التمهيد ، يجب أن نرى رسالة المقدمة على شاشة LCD ثم يجب أن تعرض "Hi!..". هذا يعني أن FPS جاهز للبحث عن الإصبع ، إذا تم الضغط على أي إصبع مسجل ، فسيظهر "مرحبًا" متبوعًا برقم معرف هذا الإصبع كما هو موضح أدناه.
إذا كان لابد من تسجيل إصبع جديد ، فيمكننا استخدام زر الضغط للوصول إلى وضع التسجيل واتباع تعليمات LCD لتسجيل إصبع. بعد اكتمال عملية التسجيل ، ستعرض شاشة LCD رسالة "Hi!.." مرة أخرى للإشارة إلى أنه تمت قراءتها لتعريف الأصابع مرة أخرى. و يمكن الاطلاع على استكمال العمل في الفيديو مرتبطة أدناه.
من هنا يمكنك تطوير العديد من الأشياء المثيرة للاهتمام في الأعلى باستخدام وحدة مستشعر بصمة الإصبع. آمل أن تكون قد فهمت البرنامج التعليمي واستمتعت ببناء شيء مفيد ، إذا كان لديك أي أسئلة اتركها في قسم التعليقات أو استخدم المنتديات لأسئلة فنية أخرى.