- חומרים נדרשים
- מודול חיישן טביעות אצבע (FPS) GT511C3
- חיבור חיישן הדפסת אצבע GT511C3 עם Arduino
- ארדואינו עם GT511C3
- תכנות Arduino עבור חיישן הדפסת אצבע GT511C3
- עבודה של חיישן הדפסת אצבע GT511C3 עם Arduino
ביומטריה שימשה כבר זמן רב כמערכת אימות אמינה. כיום קיימות מערכות ביומטריות מורכבות אשר יכולות לזהות אדם לפי קצב פעימות ליבו או אפילו על ידי ה- DNA שלו. שיטות אפשריות אחרות כוללות זיהוי קול, זיהוי פנים, סריקת קשתית העין וסריקת אצבע. מתוכה זיהוי טביעת האצבע הוא השיטה הנפוצה ביותר, אנו יכולים למצוא אותה ממערכת נוכחות פשוטה לטלפונים חכמים לבדיקות אבטחה ועוד.
במדריך זה נלמד כיצד להשתמש בחיישן הדפסת האצבע GT511C3 הפופולרי (FPS) עם Arduino. יש הרבה FPS זמין וכבר למדנו כיצד להשתמש בהם לבניית עיצובים כמו מערכת נוכחות, מכונת הצבעה, מערכת אבטחה וכו '. אבל GT511C3 מתקדם יותר עם דיוק גבוה וזמן תגובה מהיר יותר, אז נלמד כיצד להשתמש בו עם Arduino לרשום עליו טביעות אצבע ואז לזהות את טביעות האצבעות בכל צורך. אז בואו נתחיל.
חומרים נדרשים
- ארדואינו ננו / UNO
- חיישן הדפסת אצבע GT511C3
- מסך LCD 16x2
- סיר - נגדים של 10k ו- 1k, 10k, 22k
- לחץ על הכפתור
- חוטי חיבור
- לוח לחם
מודול חיישן טביעות אצבע (FPS) GT511C3
לפני שנצלול לפרויקט נבין על מודול חיישן האצבע GT511C3 ואיך זה עובד. חיישן זה שונה מאוד מחיישן טביעות האצבע קיבולי ואולטרסאונד הנפוץ בטלפונים החכמים שלנו. ה- GT511C3 הוא חיישן טביעות אצבע אופטי, כלומר הוא מסתמך על תמונות של טביעת האצבע שלך כדי לזהות את התבנית שלו. כן קראתם נכון, החיישן כולל בתוכו מצלמה שמצלמת את טביעת האצבע שלכם ואז מעבדת את התמונות הללו באמצעות ARM Cortex M3 IC מובנה חזק. התמונה למטה מציגה את החלק הקדמי והאחורי של החיישן עם פינים.
כפי שאתה יכול לראות שלחיישן יש מצלמה (נקודה שחורה) המוקפת בנורות LED כחולות, יש להדליק נוריות אלה כדי לצלם תמונה ברורה של טביעת האצבע. לאחר מכן מעבדים תמונות אלו ומוסרות לערך בינארי באמצעות מיקרו-בקר ARM יחד עם EEPROM. המודול כולל גם נורית SMD בצבע ירוק כדי לציין כוח. כל תמונה עם טביעת אצבע היא בגודל 202x258 פיקסלים ברזולוציה של 450 דפי. חיישן יכול לרשום upto 200 טביעות אצבעות ולכל טביעות אצבע תבנית אותו מקצה טופס מזהה 0 כדי 199. ואז במהלך הגילוי הוא יכול להשוות באופן אוטומטי את טביעת האצבע הסרוקה עם כל 200 התבניות ואם נמצא התאמה זה נותן את מספר הזיהוי של טביעת האצבע המסוימת באמצעות ה- Smack Finger 3.0אלגוריתם במיקרו-בקר ARM. החיישן יכול לפעול מ -3.3 וולט ל -6 וולט ומתקשר באמצעות תקשורת טורית ב 9600. סיכות התקשורת (Rx ו- Tx) אמורות להיות סובלניות רק 3.3V, אולם גיליון הנתונים אינו מציין הרבה לגביו. הצמצום של FPS GT511C3 מוצג להלן.
מלבד תקשורת סדרתית, ניתן לממשק ישירות למחשב באמצעות חיבור USB באמצעות הפינים שהוצגו בתמונה הקודמת. לאחר חיבורו למחשב ניתן לשלוט על המודול באמצעות יישום SDK_DEMO.exe אותו ניתן להוריד מהקישור. יישום זה מאפשר למשתמש לרשום / לאמת / למחוק טביעות אצבע וגם לזהות טביעות אצבע. התוכנה יכולה גם לעזור לך לקרוא את התמונה שצולמה על ידי החיישן שכדאי לנסות אותה. לחלופין תוכלו גם להשתמש בתוכנה זו גם אם החיישן מחובר לארדואינו, נדון בהמשך מאמר זה.
תכונה מעניינת נוספת לגבי החיישן היא מעטפת המתכת סביב אזור החישה. כפי שאמרתי קודם יש להדליק את הנורית הכחולה כדי שהחיישן יעבוד. אך ביישומים בהם החיישן אמור להמתין באופן פעיל לטביעת אצבע, לא ניתן להחזיק את ה- LED דולק תמיד מכיוון שהוא יחמם את החיישן וכך יפגע בו. מכאן שבמקרים אלה ניתן לחבר את מעטפת המתכת לסיכת קלט מגע קיבולי של MCU כדי לזהות אם נוגעים בו. אם כן ניתן להדליק את הנורית ולהתחיל את תהליך החישה. שיטה זו אינה מודגמת כאן מכיוון שהיא מחוץ לתחום מאמר זה.
כאשר הוא פועל ב -3.3 וולט החיישן צורך כ -130 mA. נדרשות כמעט 3 שניות לרישום אצבע ושנייה אחת לזיהוי. עם זאת, אם ספירת התבניות הרשומה נמוכה יותר, מהירות הזיהוי תהיה גבוהה. לפרטים נוספים אודות החיישן ניתן לעיין בגליון נתונים זה של ADH-Tech שהיא היצרנית הרשמית של המודול.
חיבור חיישן הדפסת אצבע GT511C3 עם Arduino
ל- GT511C3 FPS שני פינים חשמליים שניתן להפעיל באמצעות סיכה + 5V של Arduino ושני סיכות תקשורת Rx ו- Tx שניתן לחבר לכל סיכה דיגיטלית של Arduino לתקשורת סדרתית. בנוסף הוספנו גם כפתור לחיצה ו- LCD כדי להציג את מצב החיישן. תרשים המעגל השלם לממשק GT511C3 FPS עם Arduino נמצא למטה.
מכיוון שהסיכות של Rx ו- Tx הם 3.3V סובלניים השתמשנו במחלק פוטנציאלי בצד Rx כדי להמיר 5V ל- 3.3V. הנגד 10k והנגד 22k ממירים את האות 5V מסיכת הארדואינו Tx ל 3.3V לפני שהוא מגיע לסיכת Rx של ה- FPS. החיישן יכול גם להיות מופעל על ידי 3.3 וולט, אך וודא שהארדואינו שלך יכול לספק מספיק זרם לחיישן. חיברנו את ה- LCD במצב 4 סיביות המופעל באמצעות פינת 5V של Arduino. לחצן לחיצה מחובר לסיכה D2 אשר בעת לחיצהו תכניס את התוכנית למצב הרשמה בו המשתמש יכול לרשום אצבע חדשה. לאחר ההרשמה התוכנית תישאר במצב סריקה כדי לסרוק כל אצבע שנוגעת בחיישן.
ארדואינו עם GT511C3
כפי שצוין קודם לכן ה- FPS GT511C3 מתקשר באמצעות תקשורת טורית, החיישן מבין קוד hex ולכל קוד hex מבצעים פעולה מסוימת. אתה יכול לבדוק את גליון הנתונים כדי לדעת את כל ערכי ה- hex ואת הפונקציה המתאימה לו אם אתה מעוניין בכך. אבל, למזלנו bboyho כבר יצר ספרייה שבה ניתן להשתמש ישירות עם Arduino כדי להירשם ולאתר טביעות אצבע. ניתן להוריד את ספריית Github עבור GT511C3 FPS מהקישור למטה
ספריית ארדואינו GT511C3
הקישור יוריד קובץ ZIP, ואז תצטרך להוסיף אותו ל- Arduino IDE שלך על ידי ביצוע הפקודה Sketch -> Include Library -> Add.ZIP Library. לאחר שהוספת את הספרייה, הפעל מחדש את ה- IDE שלך ואתה אמור להיות מסוגל למצוא את תוכניות הדוגמא עבור GT511C3 FSP תחת קובץ -> דוגמה -> סורק טביעות אצבע TTL כמוצג להלן
אתה אמור לראות ארבע תוכניות לדוגמא, תוכנית ההבהוב תמצמץ את הוביל הכחול ב- FPS, ניתן להשתמש בתכנית הרשמה ובאצבעות מזהה כדי לרשום ולזהות את האצבעות בהתאם. שים לב שאצבע שנרשמה פעם אחת תיזכר תמיד במודול גם אם היא כבויה.
ניתן להעלות את תוכנית ה- Serial Pass-through לארדואינו בכדי להשתמש ביישום Demo_SDK.exe עליו דנו קודם במאמר זה. כדי למחוק כל תבנית טביעת אצבע או לשמור עותק במחשב שלך ניתן להשתמש ביישום SDK זה.
תכנות Arduino עבור חיישן הדפסת אצבע GT511C3
מטרתנו כאן היא לכתוב תוכנית שתירשם אצבע כאשר לוחצים על כפתור ומציגים את מספר הזהות של האצבע שכבר רשומה. עלינו להיות מסוגלים להציג את כל המידע על גבי LCD כדי לאפשר לפרויקט להיות עצמאי. הקוד השלם לעשות את אותו הדבר הוא לתת בתחתית דף זה. כאן אני מפרק אותו לקטעים קטנים כדי לעזור לך להבין טוב יותר.
כמו תמיד אנו מתחילים את התוכנית על ידי הכללת הספריות הנדרשות, כאן נצטרך את ספריית FPS_GT511C3 עבור מודול FPS שלנו, סדרת תוכנה לשימוש ב- D4 ו- D5 בתקשורת טורית ובגביש נוזלי לממשק LCD. ואז עלינו להזכיר לאילו פינים מחוברים ה- FPS וה- LCD. אם פעלת לפי דיאגרמת המעגל ככזו, אז זה 4 ו -5 עבור FPS ו- D6 ל- D11 עבור LCD. הקוד עבור אותו מוצג להלן
# כלול "FPS_GT511C3.h" // קבל ספרייה מ https://github.com/sparkfun/Fingerprint_Scanner-TTL # כלול " SoftwareSerial.h" // ספריית סדרת תוכנה # כלול
בתוך פונקציית ההתקנה , אנו מציגים הודעת היכרות על גבי LCD ואז אתחל את מודול FPS. הפקודה fps.SetLED (נכון) תדליק את נורית ה- LED הכחולה בחיישן, תוכל לכבות אותה על ידי fps. SetLED (false) כאשר היא לא נדרשת מכיוון שהיא תחמם את החיישן אם תישאר ברציפות. עשינו גם את הפין D2 כסיכת כניסה וחיברנו אותו לנגד משיכה פנימי כדי לחבר כפתור לדחיפה לסיכה.
הגדרת חלל () { Serial.begin (9600); lcd.begin (16, 2); // אתחל 16 * 2 LCD lcd.print ("GT511C3 FPS"); // שורת הודעות מבוא 1 lcd.setCursor (0, 1); lcd.print ("עם Arduino"); // עיכוב קו 2 הודעה מבוא (2000); lcd.clear (); fps.Open (); // שלח פקודה טורית לאתחל fp fps.SetLED (נכון); // הפעל נורית כך ש- fps יוכלו לראות pinMode של טביעת אצבע (2, INPUT_PULLUP); // התחבר לנגד משיכה פנימי כפין קלט }
בתוך פונקציית הלולאה הריקנית עלינו לבדוק אם הכפתור נלחץ, אם לוחצים עליו נרשום אצבע חדשה ונשמור את התבנית שלה עם מספר זהות באמצעות פונקציית ההרשמה. אם לא נמשיך להמתין ללחיצה על אצבע בחיישן. אם נלחץ נזהה את טביעת האצבע על ידי השוואה לכל תבנית טביעות האצבע הרשומות בשיטת 1: N. לאחר גילוי מספר הזהות נציג קבלת פנים ואחריו מספר תעודת הזהות. אם טביעת האצבע לא התאימה לאף אחת מהאצבעות הרשומות ספירת הזיהוי תהיה 200, במקרה זה נציג ברוך הבא לא ידוע.
אם (digitalRead (2)) // אם לחצן לחוץ { Enroll (); // רשום טביעת אצבע } // זהה בדיקת טביעות אצבע אם (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("ברוך הבא:"); אם (id == 200) lcd.print ("לא ידוע"); // אם לא מזוהה lcd.print (id); עיכוב (1000); }
ורשם הפונקציה תצטרך לקחת שלוש כניסות מדגם לרשום אצבע אחת בהצלחה. לאחר ההרשמה תיווצר תבנית עבור אותה אצבע מסוימת אשר לא תימחק אלא אם כן המשתמש כפה עליה למרות שפקודות HEX. הקוד לרישום אצבע מוצג להלן. השיטה IsPressFinger משמשת לבדיקה אם מתגלה אצבע, אם כן אז התמונה נלכדת באמצעות CaptureFinger ואז לבסוף Enroll1, Enroll2 ו- Enroll3 משמש לשלוש דוגמאות שונות כדי לרשום בהצלחה אצבע אחת. LCD מציג את מספר הזיהוי של האצבע אם נרשם בהצלחה אחרת הוא יציג הודעת כשל עם קוד. קוד 1 פירושו כי טביעת האצבע לא נלכדה בצורה ברורה ולכן עליכם לנסות שוב. קוד 2 הוא אינדיקציה לכשל בזיכרון וקוד 3 הוא כדי לציין שהאצבע כבר נרשמה.
void Enroll () // הרשמת פונקציה מתוכנית exmaple הספרייה { introllid = 0; bool usedid = נכון; בעוד (usedid == true) { usedid = fps.CheckEnrolled (rollid); אם (usedid == true)rollid ++; } fps.EnrollStart (נרשם); // הירשם lcd.print ("הירשם מספר"); lcd.print (נרשם); בזמן (fps.IsPressFinger () == false) עיכוב (100); bret bret = fps.CaptureFinger (נכון); int iret = 0; אם (bret! = false) { lcd.clear (); lcd.print ("הסר אצבע"); fps.Enroll1 (); בזמן (fps.IsPressFinger () == true) עיכוב (100); lcd.clear (); lcd.print ("לחץ שוב"); בזמן (fps.IsPressFinger () == false) עיכוב (100); bret = fps.CaptureFinger (נכון); אם (bret! = false) { lcd.clear (); lcd.print ("הסר אצבע"); fps.Enroll2 (); בזמן (fps.IsPressFinger () == true) עיכוב (100); lcd.clear (); lcd.print ("לחץ שוב"); בזמן (fps.IsPressFinger () == false) עיכוב (100); bret = fps.CaptureFinger (נכון); אם (bret! = false) { lcd.clear (); lcd.print ("הסר אצבע"); iret = fps.Enroll3 (); אם (iret == 0) { lcd.clear (); lcd.print ("הרשמת הצלחה"); } אחר { lcd.clear (); lcd.print ("ההרשמה נכשלה:"); lcd.print (iret); } } אחר lcd.print ("נכשל 1"); } אחר lcd.print ("נכשל 2"); } אחר lcd.print ("נכשל 3"); }
עבודה של חיישן הדפסת אצבע GT511C3 עם Arduino
עכשיו שהחומרה והקוד שלנו מוכנים הגיע הזמן לבדוק את הפרויקט שלנו. העלה את הקוד לארדואינו והפעל אותו, אני פשוט משתמש ביציאת מיקרו-usb להפעלת הפרויקט. בעת האתחול עלינו לראות את הודעת המבוא על גבי ה- LCD ואז עליו להציג "היי!..". פירוש הדבר ש- FPS מוכן לסרוק אחר אצבע, אם נלחץ על אצבע כלשהי, היה אומר "ברוך הבא" ואחריו מספר הזהות של האצבע כפי שמוצג להלן.
אם יש לרשום אצבע חדשה, נוכל להשתמש בלחצן הלחיצה בכדי להיכנס למצב הרשמה ולעקוב אחר הוראות LCD כדי לרשום אצבע. לאחר סיום תהליך ההרשמה LCD יציג שוב "היי!.." כדי לציין שהוא נקרא בכדי לאמת את האצבעות שוב. את העבודה המלאה תוכלו למצוא בסרטון המקושר למטה.
מכאן אתה יכול לפתח דברים מעניינים רבים על גבי זה באמצעות מודול חיישן הדפסת האצבע. מקווה שהבנתם את ההדרכה ונהניתם לבנות משהו שימושי, אם יש לכם שאלות השאירו אותן בסעיף ההערות או השתמשו בפורומים לשאלות טכניות אחרות.