- المكونات المطلوبة
- وصف المشروع:
- وحدة بصمة الإصبع:
- عمل نظام الحضور بالبصمة
- مخطط ووصف الدائرة لمشروع نظام الحضور بالبصمة
- شرح الكود:
أنظمة الحضور هي أنظمة شائعة الاستخدام لتمييز التواجد في المكاتب والمدارس. لقد تحسنت هذه الأنظمة بشكل كبير من وضع علامات الحضور في سجلات الحضور يدويًا إلى استخدام التطبيقات عالية التقنية وأنظمة القياسات الحيوية. في مشاريعنا السابقة ، قمنا بتغطية عدد قليل من مشاريع نظام الحضور الإلكتروني الأخرى باستخدام متحكم RFID و AVR ، 8051 و Raspberry Pi. في هذا المشروع ، استخدمنا وحدة بصمة الإصبع و Arduino لأخذ وحفظ بيانات الحضور والسجلات. باستخدام مستشعر بصمات الأصابع ، سيصبح النظام أكثر أمانًا للمستخدمين. توضح الأقسام التالية التفاصيل الفنية لإنشاء نظام الحضور البيومتري المستند إلى بصمات الأصابع باستخدام Arduino.
المكونات المطلوبة
- اردوينو -1
- وحدة بصمات الأصابع -1
- زر الضغط - 4
- المصابيح -1
- 1 كيلو المقاوم -2
- 2.2 كيلو المقاوم -1
- قوة
- توصيل الأسلاك
- صندوق
- الجرس -1
- 16x2 LCD -1
- مجلس الخبز -1
- وحدة RTC -1
وصف المشروع:
في دائرة نظام الحضور ببصمة الإصبع ، استخدمنا وحدة مستشعر بصمة الإصبعلمصادقة شخص أو موظف حقيقي من خلال أخذ مدخلات أصابعهم في النظام. نحن هنا نستخدم 4 أزرار ضغط للتسجيل ، الحذف ، لأعلى / لأسفل. مفتاح ENROLL و DEL له ميزات ثلاثية. يُستخدم مفتاح ENROLL لتسجيل شخص جديد في النظام. لذلك عندما يريد المستخدم تسجيل إصبع جديد ، فعليه / عليها الضغط على مفتاح ENROLL ثم تطلب شاشة LCD المعرف ، حيث يريد المستخدم تخزين صورة بصمة الإصبع. الآن إذا كان المستخدم لا يريد المضي قدمًا في هذا الوقت ، فيمكنه / يمكنها الضغط على مفتاح ENROLL مرة أخرى للعودة. هذه المرة ، يتصرف مفتاح ENROLL كمفتاح رجوع ، أي أن مفتاح ENROLL لديه وظيفة التسجيل والعودة. بالإضافة إلى مفتاح التسجيل ، يُستخدم أيضًا لتنزيل بيانات الحضور عبر الشاشة التسلسلية. وبالمثل ، فإن مفتاح DEL / OK له نفس الوظيفة المزدوجة مثل عندما يقوم المستخدم بتسجيل إصبع جديد ،ثم يحتاج إلى تحديد معرف الإصبع باستخدام مفتاحين آخرين هما UP و DOWN. يحتاج المستخدم الآن إلى الضغط على مفتاح DEL / OK (هذه المرة يتصرف هذا المفتاح مثل موافق) للمتابعة مع المعرف المحدد. ويستخدم مفتاح Del لإعادة تعيين البيانات أو حذفها من EEPROM الخاص بـ Arduino.
وحدة بصمة الإصبع:
تلتقط وحدة مستشعر بصمة الإصبع صورة بصمة الإصبع ثم تحولها إلى قالب مكافئ وتحفظها في ذاكرتها وفقًا للمعرف المحدد بواسطة Arduino. يتم تنفيذ جميع العمليات بواسطة Arduino مثل التقاط صورة لبصمة الإصبع وتحويلها إلى قوالب وتخزينها كمعرف وما إلى ذلك. يمكنك التحقق من بعض المشاريع الأخرى باستخدام وحدة بصمة الإصبع:
نظام الأمن القائم على بصمات الأصابع
آلة التصويت البيومترية القائمة على بصمات الأصابع
أضفنا هنا مؤشر LED أصفر يشير إلى أن وحدة البصمة جاهزة لالتقاط صورة للإصبع. يستخدم الجرس أيضًا للإشارات المختلفة. Arduino هو المكون الرئيسي لهذا النظام فهو مسؤول عن التحكم في النظام بأكمله.
عمل نظام الحضور بالبصمة
العمل على مشروع نظام الحضور والانصراف بالبصمةبسيط إلى حد ما. بادئ ذي بدء ، يحتاج المستخدم إلى تسجيل بصمات أصابع المستخدم بمساعدة أزرار الضغط. للقيام بذلك ، يحتاج المستخدم إلى الضغط على مفتاح ENROLL ثم تطلب شاشة LCD إدخال معرف لبصمة الإصبع لحفظها في الذاكرة باسم المعرف. لذا يحتاج المستخدم الآن إلى إدخال المعرف باستخدام مفاتيح UP / DOWN. بعد تحديد المعرف ، يحتاج المستخدم إلى الضغط على مفتاح OK (مفتاح DEL). ستطلب شاشة LCD الآن وضع إصبعك على وحدة البصمة. يحتاج المستخدم الآن إلى وضع إصبعه على وحدة البصمة ثم تأخذ الوحدة صورة الإصبع. ستقول شاشة LCD الآن إزالة الإصبع من وحدة البصمة ، واطلب مرة أخرى وضع الإصبع مرة أخرى. يحتاج المستخدم الآن إلى وضع إصبعه مرة أخرى وتقوم الوحدة بأخذ صورة وتحويلها إلى قوالب وتخزينها بواسطة المعرف المحدد في ذاكرة وحدة بصمات الأصابع.الآن سيتم تسجيل المستخدم ويمكنه / يمكنها تغذية الحضور عن طريق وضع بصمة الإصبع الخاصة بهم وبنفس الطريقة ، سيتم تسجيل جميع المستخدمين في النظام.
الآن إذا أراد المستخدم إزالة أو حذف أي من المعرفات المخزنة أو بصمة الإصبع ، فعليه الضغط على مفتاح DEL بمجرد الضغط على مفتاح الحذف ، ستطلب شاشة LCD تحديد المعرف المطلوب حذفه. يحتاج المستخدم الآن إلى تحديد المعرف والضغط على مفتاح OK (نفس مفتاح DEL). ستعلمك شاشة LCD الآن أنه تم حذف بصمة الإصبع بنجاح.
كيف يعمل الحضور في مشروع نظام الحضور بالبصمة هذا:
عندما يضع المستخدم إصبعه على وحدة بصمة الإصبع ، تلتقط وحدة البصمة صورة الإصبع ، وتبحث عما إذا كان أي معرف مرتبطًا ببصمة الإصبع هذه في النظام. إذا تم الكشف عن معرف بصمة الإصبع ، فستظهر شاشة LCD تسجيل الحضور وفي نفس الوقت يصدر صوت صفير مرة واحدة وسيتم إيقاف تشغيل مؤشر LED حتى يصبح النظام جاهزًا لأخذ الإدخال مرة أخرى.
إلى جانب وحدة البصمة ، استخدمنا أيضًا وحدة RTC للوقت والتاريخ. الوقت والتاريخ يعملان بشكل مستمر في النظام. لذلك يستغرق Arduino الوقت والتاريخ عندما يضع مستخدم حقيقي إصبعه على بصمة الإصبع ويحفظها في EEPROM في الفتحة المخصصة للذاكرة.
هنا قمنا بإنشاء 5 مساحة مستخدم في هذا النظام لمدة 30 يومًا. بالضغط على زر RESET في Arduino ثم على الفور ، سيكون مفتاح التسجيل مسؤولاً عن تنزيل بيانات الحضور عبر الشاشة التسلسلية من Arduino EEPROM Memory.
إدارة الذاكرة:
لدينا ذاكرة 1023 بايت في Arduino UNO ولدينا منها 1018 بايت لتخزين البيانات وأخذنا 5 بيانات حضور مستخدمين لمدة 30 يومًا. وسوف يسجل كل حضور الوقت والتاريخ بحيث تصبح هذه بيانات 7 بايت.
لذا فإن إجمالي الذاكرة المطلوبة هو
5 * 30 * 7 = 1050 لذلك نحن هنا بحاجة إلى 32 بايت
ولكن إذا كنا سنستخدم 4 مستخدمين ، فسنطلب
4 * 30 * 7 = 840
هنا قمنا بعمل هذا العرض التوضيحي للمشروع من خلال أخذ ذاكرة 5 مستخدمين. من خلال ذلك ، لن نتمكن من تخزين سجلات حضور 32 بايت أو 5 سجلات حضور للمستخدم الخامس.
يمكنك تجربتها بواسطة 4 مستخدمين عن طريق تغيير بعض الأسطر في الكود. لقد قدمت التعليقات في الكود حيث يلزم إجراء التغييرات.
مخطط ووصف الدائرة لمشروع نظام الحضور بالبصمة
دائرة مشروع نظام الحضور القائم على بصمات الأصابع ، كما هو موضح في الرسم البياني أعلاه ، بسيطة للغاية. يحتوي على Arduino للتحكم في جميع عمليات المشروع ، وزر ضغط للتسجيل ، والحذف ، واختيار المعرفات والحضور ، وجرس للتنبيه ، ومصابيح LED للإشارة ، وشاشات الكريستال السائل لتوجيه المستخدم وإظهار الرسائل الناتجة.
كما هو موضح في الرسم التخطيطي للدائرة ، يتم توصيل زر الضغط مباشرة بالدبوس A0 (ENROLL) ، A1 (DEL) ، A2 (UP) ، A3 (DOWN) من Arduino فيما يتعلق بالأرض ، ويتم توصيل مؤشر LED الأصفر في Digital pin D7 من Arduino فيما يتعلق بالأرض من خلال المقاوم 1k. تم توصيل Rx و Tx لوحدة بصمة الإصبع مباشرة في Serial pin D2 و D3 (Software Serial) في Arduino. يستخدم مصدر 5 فولت لتشغيل وحدة بصمات الأصابع المأخوذة من لوحة Arduino. يتم توصيل صفارة أيضًا في دبوس A5. تم تكوين شاشة LCD مقاس 16 × 2 في وضع 4 بت ويتم توصيل RS و EN و D4 و D5 و D6 و D7 مباشرةً في Digital pin D13 و D12 و D11 و D10 و D9 و D8 من Arduino.
شرح الكود:
يتم تقديم رمز نظام الحضور ببصمة الإصبع لـ arduino في الأقسام التالية. على الرغم من شرح الكود جيدًا بالتعليقات ، إلا أننا نناقش هنا بعض الأجزاء المهمة من الكود. استخدمنا مكتبة بصمات الأصابع لربط وحدة بصمات الأصابع بلوحة Arduino.
بادئ ذي بدء ، نقوم بتضمين ملف الرأس وتحديد المدخلات والمخرجات وتحديد الماكرو والمتغيرات المعلنة. بعد ذلك ، في وظيفة الإعداد ، نعطي توجيهًا للدبوس المحدد ونبدأ وحدة LCD وبصمة الإصبع
بعد ذلك ، يتعين علينا كتابة رمز لتنزيل بيانات الحضور.
إعداد باطل () {تأخير (1000) ؛ lcd.begin (16.2) ؛ Serial.begin (9600) ؛ pinMode (تسجيل ، INPUT_PULLUP) ؛ pinMode (أعلى ، INPUT_PULLUP) ؛ pinMode (أسفل ، INPUT_PULLUP) ؛ pinMode (del، INPUT_PULLUP) ، pinMode (match، INPUT_PULLUP) ؛ pinMode (الجرس ، الإخراج) ؛ pinMode (indFinger ، الإخراج) ؛ الكتابة الرقمية (الجرس ، منخفضة) ؛ إذا (digitalRead (تسجيل) == 0) {digitalWrite (الجرس ، عالية) ؛ تأخير (500) ؛ الكتابة الرقمية (الجرس ، منخفضة) ؛ lcd.clear () ؛ lcd.print ("الرجاء الانتظار") ؛ lcd.setCursor (0،1) ؛ lcd.print ("بيانات التنزيل") ؛
بعد ذلك ، يتعين علينا كتابة رمز لمسح بيانات الحضور من EEPROM.
إذا (digitalRead (del) == 0) {lcd.clear () ؛ lcd.print ("الرجاء الانتظار") ؛ lcd.setCursor (0،1) ؛ lcd.print ("إعادة حذف…..") ؛ لـ (int i = 1000 ؛ i <1005 ؛ i ++) EEPROM.write (i ، 0) ؛ لـ (int i = 0 ؛ i <841 ؛ i ++) EEPROM.write (i ، 0xff) ؛ lcd.clear () ؛ lcd.print ("إعادة تعيين النظام") ؛ تأخير (1000) ؛ }
بعد ذلك ، بدأنا وحدة بصمات الأصابع ، والتي تظهر رسالة ترحيب على شاشة LCD وأيضًا وحدة RTC غير محددة.
بعد ذلك ، في وظيفة الحلقة ، قرأنا وقت RTC وعرضناه على شاشة LCD
حلقة باطلة () {now = rtc.now () ؛ lcd.setCursor (0،0) ؛ lcd.print ("الوقت->") ؛ lcd.print (now.hour ()، DEC) ؛ lcd.print (':') ؛ lcd.print (now.minute ()، DEC) ؛ lcd.print (':') ؛ lcd.print (now.second () ، DEC) ؛ lcd.print ("") ؛ lcd.setCursor (0،1) ؛ lcd.print ("التاريخ->") ؛ lcd.print (now.day () ، DEC) ؛ lcd.print ('/') ؛ lcd.print (now.month ()، DEC) ؛ lcd.print ('/') ؛ lcd.print (now.year ()، DEC) ؛
بعد ذلك ، في انتظار بصمة الإصبع لأخذ الإدخال ومقارنة معرف الصورة الملتقطة بالمعرفات المخزنة. إذا حدث تطابق ، فتابع إلى الخطوة التالية. والتحقق من تسجيل مفاتيح del أيضًا
نتيجة int = getFingerprintIDez () ، if (النتيجة> 0) {digitalWrite (indFinger، LOW) ؛ الكتابة الرقمية (الجرس ، عالية) ؛ تأخير (100) ؛ الكتابة الرقمية (الجرس ، منخفضة) ؛ lcd.clear () ؛ lcd.print ("المعرف:") ؛ lcd.print (نتيجة) ؛ lcd.setCursor (0،1) ؛ lcd.print ("الرجاء الانتظار….") ؛ تأخير (1000) ؛ الحضور (النتيجة) ؛ lcd.clear () ؛ lcd.print ("الحضور") ؛ lcd.setCursor (0،1) ؛ lcd.print ("مسجلة") ؛ تأخير (1000) ؛ digitalWrite (indFinger ، عالية) ؛ إرجاع؛ }
نظرًا لاستخدام وظيفة checkKeys () باطلة للتحقق من الضغط على مفتاح Enroll أو DEL أو لا وماذا تفعل إذا تم الضغط عليه. إذا ضغط مفتاح ENROLL على وظيفة Enroll () ، ثم اضغط على مفتاح DEL ، ثم يتم استدعاء وظيفة delete () .
يتم استخدام وظيفة void delet () لإدخال المعرف المراد حذفه واستدعاء وظيفة uint8_t deleteFingerprint (uint8_t id) التي ستحذف الإصبع من السجلات.
تُستخدم الوظيفة المحددة لأخذ صورة بصمات الأصابع وتحويلها إلى القالب وحفظها أيضًا بواسطة المعرف المحدد في ذاكرة وحدة بصمات الأصابع.
uint8_t getFingerprintEnroll () {int p = -1 ؛ lcd.clear () ؛ lcd.print ("معرف الإصبع:") ؛ lcd.print (معرف) ؛ lcd.setCursor (0،1) ؛ lcd.print ("وضع الإصبع") ؛ تأخير (2000) ؛ while (p! = FINGERPRINT_OK) {p = finger.getImage () ؛……………………
تُستخدم الوظيفة المعطاة لتخزين وقت الحضور والتاريخ في الفتحة المخصصة لـ EEPROM
حضور باطل (معرف int) {int user = 0، eepLoc = 0؛ إذا (معرف == 1) {eepLoc = 0 ؛ المستخدم = user1 ++ ؛ } else if (id == 2) {eepLoc = 210 ؛ المستخدم = user2 ++ ؛ } وإلا إذا (معرف == 3)………….
يتم استخدام الوظيفة المعينة لجلب البيانات من EEPROM وإرسالها إلى الشاشة التسلسلية
تنزيل باطل (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->") ؛ إذا (EEPROM.read (eepIndex) <10) Serial.print ('0') ؛ Serial.print (EEPROM.read (eepIndex ++)) ؛ Serial.print (':') ؛ إذا (EEPROM.read (eepIndex) <10) Serial.print ('0') ؛ Serial.print (EEPROM.read (eepIndex ++)) ؛………….