- רכיבים נדרשים
- תיאור פרויקט:
- מודול FingerPrint:
- עבודה של מערכת נוכחות מבוססת טביעות אצבע
- תרשים מעגל ותיאור לפרויקט מערכת נוכחות טביעות אצבע
- הסבר קוד:
מערכות נוכחות הן מערכות נפוצות לציון הנוכחות במשרדים ובבתי ספר. החל מסימון ידני של הנוכחות ברשומות הנוכחות ועד לשימוש באפליקציות היי-טק ומערכות ביומטריות, מערכות אלו השתפרו משמעותית. בפרויקטים הקודמים שלנו, סקרנו כמה פרויקטים אחרים של מערכת נוכחות אלקטרונית באמצעות מיקרו בקר RFID ו- AVR, 8051 ו- raspberry Pi. בפרויקט זה השתמשנו במודול טביעות האצבע ובארדואינו כדי לקחת ולשמור נתוני נוכחות ורשומות. באמצעות חיישן טביעות אצבע, המערכת תהפוך לאבטחה יותר עבור המשתמשים. הפרקים הבאים מסבירים פרטים טכניים לייצור מערכת נוכחות ביומטרית מבוססת טביעות אצבע באמצעות Arduino.
רכיבים נדרשים
- ארדואינו -1
- מודול הדפסת אצבע -1
- לחצן כפתור - 4
- נוריות נוריות -1
- נגד 1K -2
- נגן 2.2K -1
- כּוֹחַ
- חוטי חיבור
- קופסא
- זמזם -1
- 16x2 LCD -1
- לוח לחם -1
- מודול RTC -1
תיאור פרויקט:
בכך מעגל מערכת נוכחות טביעת אצבע, השתמשנו במודול חיישן טביעות אצבעלאמת אדם או עובד אמיתי על ידי הכנסת קלט האצבע שלהם למערכת. כאן אנו משתמשים בארבעה כפתורי לחיצה כדי להירשם, מחק, למעלה / למטה. מקש ENROLL ו- DEL כולל תכונות משולשות. מפתח ENROLL משמש להרשמה של אדם חדש למערכת. אז כאשר המשתמש רוצה לרשום אצבע חדשה אז הוא / היא צריך ללחוץ על מקש ENROLL ואז LCD מבקש את המזהה, שם המשתמש רוצה לאחסן את תמונת טביעת האצבע. כעת, אם בשלב זה המשתמש לא רוצה להמשיך הלאה, אז הוא / היא יכול ללחוץ על מקש ENROLL שוב כדי לחזור. הפעם מקש ENROLL מתנהג כמפתח Back, כלומר למפתח ENROLL יש גם הרשמה וגם פונקצית גב. מלבד הרשמת מפתח משמש גם להורדת נתוני נוכחות דרך צג סדרתי. באופן דומה, למפתח DEL / OK יש גם אותה פונקציה כפולה כמו כאשר המשתמש רושם אצבע חדשה,ואז הוא / היא צריכים לבחור מזהה אצבע באמצעות מקש שני נוסף, כלומר UP ו- DOWN. כעת המשתמש צריך ללחוץ על מקש DEL / OK (הפעם מקש זה מתנהג כמו OK) כדי להמשיך עם המזהה שנבחר. ומפתח Del משמש לאיפוס או למחיקת נתונים מ- EEPROM של Arduino.
מודול FingerPrint:
מודול חיישן טביעות אצבע לוכד את תמונת הדפסת האצבע ואז ממיר אותה לתבנית המקבילה ושומר אותם בזיכרונו לפי המזהה שנבחר על ידי ארדואינו. כל התהליך מצווה על ידי ארדואינו כמו צילום תמונה של הדפסת אצבע, המרה לתבניות ושמירה בתור מזהה וכו '. ניתן לבדוק כמה פרויקטים נוספים באמצעות מודול טביעות האצבע:
מערכת אבטחה מבוססת טביעות אצבע
מכונת הצבעה ביומטרית מבוססת טביעות אצבע
כאן הוספנו נורית LED צהובה המציינת שמודול טביעות האצבע מוכן לצלם את האצבע. זמזם משמש גם לאינדיקציות שונות. ארדואינו הוא המרכיב העיקרי של מערכת זו והוא אחראי על השליטה במערכת כולה.
עבודה של מערכת נוכחות מבוססת טביעות אצבע
עבודה של פרויקט מערכת נוכחות טביעות אצבע זוהוא פשוט למדי. קודם כל, המשתמש צריך לרשום טביעות אצבע של המשתמש בעזרת כפתורי לחיצה. לשם כך, המשתמש צריך ללחוץ על מקש ENROLL ואז LCD מבקש להזין מזהה לטביעת האצבע כדי לשמור אותו בזיכרון לפי שם מזהה. אז עכשיו המשתמש צריך להזין מזהה באמצעות מקשי UP / DOWN. לאחר בחירת המזהה, המשתמש צריך ללחוץ על מקש OK (מקש DEL). כעת LCD יבקש להניח אצבע מעל מודול טביעות האצבע. כעת המשתמש צריך למקם את אצבעו מעל מודול הדפסת האצבע ואז המודול לוקח תמונה באצבע. כעת LCD יגיד להסיר את האצבע ממודול טביעות האצבע, ושוב יבקש להציב את האצבע שוב. כעת המשתמש צריך לשים את אצבעו שוב והמודול לוקח תמונה ולהמיר אותה לתבניות ולאחסן אותה על ידי מזהה שנבחר בזכרון מודול האצבע.כעת המשתמש יהיה רשום והוא יכול להאכיל את הנוכחות על ידי הנחת האצבע על מודול טביעות האצבע. באותה שיטה כל המשתמשים יירשמו למערכת.
כעת, אם המשתמש מעוניין להסיר או למחוק כל אחד מהזהות המאוחסנות או מטביעת האצבע, עליו ללחוץ על מקש DEL. לאחר לחיצה על מקש המחיקה LCD יבקש לבחור מזהה שיש למחוק. כעת המשתמש צריך לבחור מזהה ולחץ על מקש אישור (אותו מקש DEL). כעת LCD יודיע לך שטביעת האצבע נמחקה בהצלחה.
כיצד עובדת הנוכחות בפרויקט זה של מערכת נוכחות טביעות אצבע:
בכל פעם שמשתמש מניח את האצבע מעל מודול טביעות האצבע, אז מודול טביעות האצבע לוכד את תמונת האצבע, וחפש אם מזהה כלשהו משויך לטביעת אצבע זו במערכת. אם מזהה טביעות אצבע אז LCD יציג רישום נוכחות ובאותו זמן זמזם יצלצל פעם אחת והנורית תיכבה עד שהמערכת תהיה מוכנה לקבל קלט שוב.
יחד עם מודול טביעות האצבע, השתמשנו גם במודול RTC לזמן ותאריך. זמן ותאריך פועלים ברציפות במערכת. אז ארדואינו לוקחים זמן ותאריך בכל פעם שמשתמש אמיתי מניח את אצבעו מעל טביעת האצבע ושומר אותם ב- EEPROM בחריץ הזיכרון המוקצב.
כאן יצרנו 5 מרחבי משתמשים במערכת זו למשך 30 יום. על ידי לחיצה על כפתור RESET בארדואינו ואז מפתח ההרשמה מיד יהיה אחראי על הורדת נתוני הנוכחות על גבי צג סדרתי מזיכרון EEPROM של Arduino.
ניהול זיכרון:
יש לנו זיכרון בתים של 1023 בארדואינו UNO שמתוכם יש לנו 1018 בתים לאחסון נתונים ולקחנו 5 נתוני נוכחות משתמשים במשך 30 יום. וכל נוכחות תתעד זמן ותאריך כך שזה הופך לנתונים של 7 בתים.
אז נדרש זיכרון כולל
5 * 30 * 7 = 1050 אז הנה אנחנו צריכים יותר 32 בתים
אבל אם נשתמש בארבעה משתמשים אז דרשנו
4 * 30 * 7 = 840
כאן עשינו הדגמת פרויקט זו על ידי לקיחת זיכרון של 5 משתמשים. על ידי זה, לא נוכל לאחסן 32 בתים או 5 רשומות נוכחות של המשתמש החמישי.
אתה יכול לנסות את זה על ידי 4 משתמשים על ידי שינוי כמה שורות בקוד. העליתי את ההערות בקוד במקום בו יש צורך בשינויים.
תרשים מעגל ותיאור לפרויקט מערכת נוכחות טביעות אצבע
המעגל של פרויקט מערכת הנוכחות מבוסס טביעות האצבע, כפי שמוצג בתרשים לעיל הוא פשוט למדי. יש לו Arduino לשליטה בכל תהליך הפרויקט, לחיצת כפתור להרשמה, מחיקה, בחירת תעודות זהות ולהשתתפות, זמזם להתראה, נוריות לאינדיקציה ו- LCD להוראות המשתמש ולהצגת ההודעות שהתקבלו.
כפי שמוצג בתרשים המעגל, לחצן לחיצה מחובר ישירות לסיכה A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) של Arduino ביחס לקרקע ונורית צהובה מחוברת בסיכה דיגיטלית D7 של ארדואינו ביחס לקרקע דרך נגד 1k. Rx ו- Tx של מודול טביעות האצבע מחוברים ישירות בסיכה D2 ו- D3 (תוכנת סידורי) של Arduino. אספקת 5V משמשת להפעלת מודול טביעת אצבע שנלקח מלוח Arduino. זמזם מחובר גם בסיכה A5. LCD 16x2 מוגדר במצב 4 סיביות וה- RS, EN, D4, D5, D6 ו- D7 מחוברים ישירות בסיכה הדיגיטלית 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 (התאמה, INPUT_PULLUP); pinMode (זמזם, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (זמזם, LOW); אם (digitalRead (להירשם) == 0) {digitalWrite (זמזם, HIGH); עיכוב (500); digitalWrite (זמזם, LOW); lcd.clear (); lcd.print ("אנא המתן"); lcd.setCursor (0,1); lcd.print ("נתוני downloding");
לאחר מכן עלינו לכתוב קוד לניקוי נתוני הנוכחות מ- 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);
אחרי זה, מחכה לטביעת האצבע כדי לקבל קלט ולהשוות בין מזהה תמונה שנתפס עם מזהים מאוחסנים. אם מתרחשת התאמה, המשך לשלב הבא. ובודק גם את מפתחות ההרשמה
int result = getFingerprintIDez (); אם (תוצאה> 0) {digitalWrite (indFinger, LOW); digitalWrite (זמזם, HIGH); עיכוב (100); digitalWrite (זמזם, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (תוצאה); lcd.setCursor (0,1); lcd.print ("אנא המתן…."); עיכוב (1000); נוכחות (תוצאה); lcd.clear (); lcd.print ("נוכחות"); lcd.setCursor (0,1); lcd.print ("רשום"); עיכוב (1000); digitalWrite (indFinger, HIGH); לַחֲזוֹר; }
בהתחשב ומבוטל checkKeys () פונקציה משמשת לבדיקת המפתח להירשם או DEL נלחץ או לא ומה לעשות אם נלחץ. אם מקש ENROLL לחץ על הפונקציה Enroll () נקרא ולחץ על מקש DEL ואז נקראת פונקציית delete () .
פונקציה מחיקת ריק () משמשת להזנת המזהה למחיקה וקריאה לפונקציה uint8_t deleteFingerprint (uint8_t id) שתמחק את האצבע מהרשומות.
פונקציה נתונה משמשת לצילום טביעת אצבע ולהמרה לתבנית ולשמירה גם על ידי מזהה נבחר בזיכרון מודול האצבע.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("מזהה אצבע:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("מקום אצבע"); עיכוב (2000); בעוד (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
הפונקציה הנתונה משמשת לאחסון זמן ותאריך הנוכחות בחריץ המוקצה של EEPROM
נוכחות בטלנית (int id) {int user = 0, eepLoc = 0; אם (id == 1) {eepLoc = 0; משתמש = משתמש 1 ++; } אחר אם (id == 2) {eepLoc = 210; user = user2 ++; } אחר אם (id == 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 ++));………….