כולנו מכירים היטב את מכונות ההצבעה האלקטרוניות, בהן ההצבעה שלך נרשמת באופן אלקטרוני ואינך צריך להשתמש בנייר הצבעה כדי להצביע בבחירות. כיום האבטחה היא דאגה מרכזית ויש גם לוודא שמישהו לא יכול להצביע פעמיים, כך שניתן לפתור את הבעיה על ידי הצגת הצבעה מבוססת טביעות אצבעות, שם ניתן לאשר אדם על בסיס טביעת האצבע שלו. זה גם יפסיק הצבעה מזויפת. אז היום אנו בונים מכונת הצבעה ביומטרית מבוססת FingerPrint באמצעות Arduino.
בדוק גם את הפרויקטים הקודמים שלנו של מכונות הצבעה באמצעות מיקרו-בקרים שונים:
- מכונת הצבעה אלקטרונית באמצעות פטל פטל
- מכונת הצבעה מבוססת RFID
- פרוייקט מכונת הצבעה אלקטרונית מבוססת מיקרו-בקר
- מכונת הצבעה אלקטרונית באמצעות ארדואינו
רכיבים נדרשים:
- ארדואינו אונו
- מודול חיישן הדפסת אצבע
- ללחוץ על כפתורים
- נוריות -2
- נגד 1K -3
- נגד 2.2K
- כּוֹחַ
- חוטי חיבור
- זַמזָם
- LCD בגודל 16x2
- לוח לחם
מודול חיישן הדפסת אצבע במכונת ההצבעה:
מודול חיישן הדפסת אצבע או סורק הדפסת אצבעות הוא מודול אשר לוכד את תמונת הדפסת האצבע ואז ממיר אותה לתבנית המקבילה ושומר אותם בזיכרון בזיהוי (מיקום) שנבחר על ידי Arduino. כאן כל התהליך מצווה על ידי ארדואינו כמו צילום תמונה של טביעת אצבע, המרה לתבניות ואחסון מיקום וכו '.
בכך מעגל טביעות אצבע הצבעת מכונית, השתמשנו מודול חיישן טביעות אצבע כדי לאמת בוחר אמיתי ידי לקיחת קלט האצבע שלהם במערכת. כאן אנו משתמשים ב -5 לחצני כפתור להתאמה, הרשמה / חזרה, מחיקה / אישור, למעלה ולמטה. מקש ההרשמה וה- Del כולל תכונות כפולות כאן. מקש ההרשמה משמש גם לרישום הופעת אצבע חדשה למערכת ולתפקוד הגב. פירוש הדבר כאשר המשתמש רוצה לרשום אצבע חדשה ואז הוא / היא צריך ללחוץ על מקש ההרשמה ואז LCD מבקש את המזהה או המיקום שבו המשתמש רוצה לאחסן את פלט טביעת האצבע. כעת, אם בשלב זה המשתמש לא רוצה להמשיך הלאה אז הוא / היא יכולים ללחוץ על מקש ההרשמה שוב כדי לחזור אחורה (הפעם מפתח ההרשמה מתנהג כמפתח חזרה). אמצעי ההרשמה כולל פונקציה הרשמה וגב. מקש DEL / OK יש גם אותה פונקציה כפולה כמו כאשר המשתמש רושם אצבע חדשה אז הוא / היא צריכים לבחור מזהה אצבע או מיקום באמצעות מקש שני נוסף כלומר למעלה ולמטה כעת המשתמש צריך ללחוץ על מקש DEL / OK (הפעם מקש זה מתנהג כמו אישור) כדי המשך עם המזהה או המיקום שנבחרו. מפתח התאמה משמש לכל פעם שהמצביע רוצה להצביע אז הוא / היא צריכים לאמת תחילה עבור המצביע האמיתי על ידי החזקת אצבע על חיישן הדפסת האצבע, אם הוא / היא העבירו את האימות הזה הוא / היא יכול / ה להצביע.
למידע נוסף על רישום טביעות אצבע ודברים אחרים, עיין בהדרכה הקודמת שלנו בנושא ממשק חיישן הדפסת אצבע עם Arduino, ובדוק גם בסרטון ההדגמה שלנו בסוף הדרכה זו.
הסבר עבודה:
עבודה של מערכת הצבעה ביומטרית זו לבחירות הוא מעט מורכב למתחילים. ראשית כל, המשתמש צריך לרשום אצבע או מצביעים (בקוד זה מגבלת הצבעה המרבית היא 25) בעזרת לחצנים / מקשים. לשם כך המשתמש צריך ללחוץ על מקש ENROLL ואז LCD מבקש להזין מיקום / מזהה שבו האצבע תהיה חנות. אז עכשיו המשתמש צריך להזין מזהה (מיקום) באמצעות מקשי UP / DOWN. לאחר בחירת מיקום / מזהה המשתמש צריך ללחוץ על מקש אישור (מקש DEL). כעת LCD יבקש להניח אצבע מעל מודול הדפסת האצבע. כעת המשתמש צריך לשים את האצבע על מודול הדפסת האצבע. ואז LCD יבקש להסיר את האצבע ממודול טביעת האצבע ושוב לבקש להניח את האצבע. כעת המשתמש צריך לשים את אצבעו שוב מעל מודול הדפסת האצבע. כעת מודול טביעת האצבע לוקח תמונה וממיר אותה לתבניות ומאחסן אותה על ידי מזהה שנבחר בזכרון מודול טביעת האצבע.כעת הבוחר יירשם והוא / היא יכולים להצביע. באותה שיטה כל הבוחר יכול להירשם למערכת.
כעת, אם המשתמש רוצה להסיר או למחוק כל אחד מהזהות המאוחסנות אז הוא / היא צריך ללחוץ על מקש DEL, לאחר לחיצה על מקש DEL, LCD יבקש לבחור מיקום פירושו בחר מזהה שיש למחוק. כעת המשתמש צריך לבחור מזהה ולחץ על מקש אישור (אותו מקש DEL). כעת LCD יודיע לך שהאצבע נמחקה בהצלחה.
תהליך הצבעה:
כעת כאשר המשתמש רוצה להצביע אז הוא / היא צריכים ללחוץ על מקש ההתאמה ואז הזמזם יצפצף והנורית גם זוהרת ו- LCD יבקש להניח את האצבע מעל למודול טביעות האצבע. עכשיו ארדואינו ייתן לך שלושה ניסיונות לשים את האצבע. לאחר הנחת אצבע מעל מודול טביעות אצבע מודול טביעות אצבע לוכד תמונת אצבע מצא את תעודות הזהות שלהם במערכת. אם זיהוי אצבע מזוהה אז LCD יציג בוחר מורשה. פירוש הדבר שהמשתמש מורשה להצביע. ואז המערכת עוברת לשלב הבא להצבעה. עכשיו נורית LED ירוקה זה אומר שעכשיו הבוחר יכול להצביע למועמדים שלהם על ידי לחיצה על מקש שנבחר (מלוח הלחם האדום בהפגנה זו). עכשיו, אם אותו הבוחר ירצה להצביע שוב, המערכת תראה את זה 'כבר הצביע' . פירושו שאותו הבוחר לא יכול להצביע שוב וזמזם יצפצף למשך 5 שניות. אם משתמש שאינו רשום כלשהו מעוניין להצביע, מודול טביעת האצבע לא יזהה את זיהויו במערכת ו- LCD יראה ' לא נמצא טביעת אצבע' .
CAN1, CAN2, CAN3 מייצג כאן את המועמד 1, המועמד 2 והמועמד 3, שהתמודדו עם הבחירות.
הסבר מעגל:
המעגל של פרויקט מכונת הצבעה מבוססת FingerPrint זה פשוט מאוד המכיל Arduino לשליטה על כל תהליך הפרויקט, לחצן כניסה להרשמה, מחיקה, בחירת תעודות זהות ומטרת הצבעה, זמזם להתראה, נוריות לאינדיקציה ו- 16x2 LCD להנחיות. בוחר ומציג גם את התוצאה. נורית LED צהובה מצביעה על כך שמודול טביעות האצבע מוכן לצלם את האצבע ונורית ירוקה מציינת כי המערכת מוכנה לקבל הצבעה או לראות תוצאות.
לחצן הלחיצה מחובר ישירות לסיכה A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) ו- A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (תוצאה) של ארדואינו ביחס לקרקע. נורית LED צהובה מחוברת בסיכה הדיגיטלית D7 של Arduino ביחס לאדמה באמצעות נגד 1k ו- LED ירוק מחובר ל- D6 של Arduino באותה שיטה. Rx ו- Tx של מודול טביעות האצבע מחוברים ישירות בסיכה טורית Tx ו- Rx של Arduino. אספקת 5V משמשת להפעלת מודול טביעת אצבע שנלקח מלוח Arduino. זמזם מחובר גם ב- A5. LCD 16x2 מוגדר במצב 4 סיביות וה- RS, EN, D4, D5, D6 ו- D7 מחוברים ישירות בסיכה הדיגיטלית D13, D12, D11, D10, D9 ו- D8 של Arduino.
הסבר לתכנית:
בתוכנית השתמשנו בספריית חיישני טביעות האצבע של Adafruit לצורך ממשק מודול טביעות האצבע ללוח Arduino. אתה יכול לבדוק את הקוד השלם למטה. כאן אנו מסבירים את הפונקציות העיקריות של תוכנית Arduino.
בפונקציית ההתקנה, נתנו הוראות לסיכות מוגדרות ופתחנו את מודול ה- LCD וטביעת האצבע.
לאחר מכן, בפונקציה loop () ריק , חיכינו למקש הסימון ולחץ על מקש התאמה כדי להפעיל את טביעת האצבע כדי לקבל קלט ולהשוות מזהה תמונה שנתפס עם מזהים מאוחסנים. אם מתרחשת התאמה, המשך לשלב הבא.
לולאה בטלה () {lcd.setCursor (0,0); lcd.print ("לחץ על מקש התאמה"); lcd.setCursor (0,1); lcd.print ("להפעלת המערכת"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); אם (digitalRead (התאמה) == 0) {digitalWrite (זמזם, HIGH); עיכוב (200); digitalWrite (זמזם, LOW); digitalWrite (indFinger, HIGH); עבור (int i = 0; i <3; i ++)…………………
בהתחשב ומבוטל checkKeys () פונקציה משמשת לבדיקת המפתח להירשם או DEL נלחץ או לא ומה לעשות אם נלחץ. אם מקש ENROLL לחץ על הפונקציה Enroll () נקרא ולחץ על מקש DEL ואז נקראת פונקציית delete () .
void checkKeys () {if (digitalRead (roll) == 0) {lcd.clear (); lcd.print ("אנא המתן"); עיכוב (1000); בעוד (digitalRead (הרשמה) == 0); לְהִרָשֵׁם(); } אחר אם (digitalRead (del) == 0) {lcd.clear (); lcd.print ("אנא המתן"); עיכוב (1000); מחק (); }}
הפונקציה הנתונה משמשת להזנת מזהה למחיקה וקריאה לפונקציה uint8_t deleteFingerprint (uint8_t id) שתמחק את האצבע מהרשומות.
מחיקה בטלה () ספירת int = 0; lcd.clear (); lcd.print ("מחק אצבע"); lcd.setCursor (0,1); lcd.print ("מיקום:"); ואילו (1) {lcd.setCursor (9,1); lcd.print (ספירה); אם (digitalRead (up) == 0) {count ++; אם (ספירה> 25) ספירה = 0; עיכוב (500); }……………….
הפונקציה הנתונה משמשת למחיקת טביעת אצבע מתוך הרשומה של הזיהוי שנבחר.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("אנא המתן"); p = finger.deleteModel (id); אם (p == FINGERPRINT_OK) {Serial.println ("נמחק!"); lcd.clear (); lcd.print ("פיגר נמחק"); lcd.setCursor (0,1); lcd.print ("בהצלחה"); עיכוב (1000); } אחר {Serial.print ("משהו לא בסדר"); lcd.clear (); lcd.print ("משהו לא בסדר"); lcd.setCursor (0,1); lcd.print ("נסה שוב מאוחר יותר"); עיכוב (2000); החזר p; }}
פונקציה נתונה משמשת לצילום טביעת אצבע ולהמרה לתבנית ולשמירה על ידי מזהה נבחר בזיכרון מודול האצבע.
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 ();…………………
הפונקציה הנתונה משמשת לתוצאות הצבעה ותצוגה:
בטל הצבעה () {lcd.clear (); lcd.print ("אנא מקום"); lcd.setCursor (0,1); lcd.print ("ההצבעה שלך"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (זמזם, HIGH); עיכוב (500); digitalWrite (זמזם, LOW); עיכוב (1000); ואילו (1) {אם (digitalRead (sw1) == 0)…………………
בדוק את הקוד המלא ואת סרטון ההדגמה להלן.