תוכן עניינים:

מכונת הצבעה ביומטרית המבוססת על טביעות אצבע באמצעות Arduino: 4 שלבים (עם תמונות)
מכונת הצבעה ביומטרית המבוססת על טביעות אצבע באמצעות Arduino: 4 שלבים (עם תמונות)

וִידֵאוֹ: מכונת הצבעה ביומטרית המבוססת על טביעות אצבע באמצעות Arduino: 4 שלבים (עם תמונות)

וִידֵאוֹ: מכונת הצבעה ביומטרית המבוססת על טביעות אצבע באמצעות Arduino: 4 שלבים (עם תמונות)
וִידֵאוֹ: Part 2 - Triplanetary Audiobook by E. E. Smith (Chs 5-8) 2024, יולי
Anonim
מכונת הצבעה ביומטרית המבוססת על טביעות אצבע באמצעות Arduino
מכונת הצבעה ביומטרית המבוססת על טביעות אצבע באמצעות Arduino

כולנו מודעים למכונת ההצבעה האלקטרונית הקיימת שבה המשתמש צריך ללחוץ על כפתור כדי להצביע. אך המכונות הללו זכו לביקורת על הרפיה מאז תחילת הדרך. אז הממשלה מתכננת להציג מכונת הצבעה מבוססת טביעות אצבע שבה משתמשים יכולים להעלות את ההצבעה על סמך רושם טביעת האצבע שלו. מערכת זו לא רק תסיר את האפשרות של הצבעה כפולה אלא גם תמנע מניפולציות כלשהן.

אז בפרויקט זה, אנו הולכים לבנות אב טיפוס של מכונת הצבעה ביומטרית באמצעות Arduino Uno, צג TFT וחיישן טביעות אצבע. בעבר השתמשנו בחיישן טביעות אצבע R305 עם NodeMCU לבניית מערכת נוכחות מבוססת ביומטרית אך כאן נשתמש בחיישן טביעות האצבע המתקדם GT-511C3 עם Arduino.

שלב 1: רכיבים הנדרשים לבניית מכונת הצבעה ביומטרית

  • ארדואינו אונו
  • מגן תצוגה TFT LCD בגודל 2.4 אינץ '
  • חיישן טביעות אצבע GT-511C3

צג TFT זה בגודל 2.4 אינץ 'משמש בעבר עם Arduino לבניית מערכת הזמנת תפריטים מבוססת IoT.

שלב 2: תרשים מעגלים למכונת הצבעה ביומטרית באמצעות Arduino

תרשים מעגלים למכונת הצבעה ביומטרית באמצעות Arduino
תרשים מעגלים למכונת הצבעה ביומטרית באמצעות Arduino

תרשים המעגלים לפרויקט זה הוא פשוט מאוד מכיוון שאנו מחברים רק את תצוגת TFT ומודול חיישן טביעות האצבע עם Arduino Uno. סיכות VCC ו- GND של חיישן טביעות האצבע מחוברות לסיכות 5V ו- GND של Arduino ואילו סיכות TX ו- RX מחוברות לסיכה 11 ו -12 דיגיטלית של Arduino Uno.

מסך TFT LCD בגודל 2.4 אינץ 'הוא מגן Arduino וניתן להתקין אותו ישירות על Arduino Uno, כפי שמוצג בתמונה למטה. לתצוגת TFT יש 28 סיכות שמתאימות בצורה מושלמת ל- Arduino Uno, כך שהייתי צריך להלחם את חיישן טביעות האצבע בצד האחורי של Arduino.

שלב 3: קוד מקור והסבר קוד שלב אחר שלב

הקוד המלא של פרויקט מערכת ההצבעה של טביעות אצבע באמצעות Arduino ניתן בסוף המאמר; כאן אנו מסבירים כמה פונקציות חשובות של הקוד.

הקוד משתמש בספריות SPFD5408, Software Serial ו- FPS_GT511C3. ספריית SPFD5408 היא הגרסה ששונתה של ספריית Adafruit המקורית. ניתן להוריד קבצי ספרייה אלה מהקישורים המופיעים להלן:

  • ספריית SPFD5408
  • תוכנה סדרתית
  • FPS_GT511C3

לאחר הכללת הספריות והגדרת כמה פרמטרים חשובים, נוכל להיכנס לחלק התכנות. ישנם שלושה חלקים המעורבים בתכנית זו. האחד יוצר ממשק משתמש של מכונת הצבעה, השני הוא קבלת נקודות המגע לכפתורים וזיהוי הכפתורים על סמך המגע ולבסוף חישוב התוצאות ושמירתם בזיכרון של ארדואינו.

1. יצירת ממשק משתמש:

יצרתי ממשק משתמש פשוט עם שלושה כפתורים ושם הפרויקט. ספריית התצוגה של TFT מאפשרת לך לצייר קווים, מלבנים, עיגולים, תווים, מחרוזות והרבה יותר מכל צבע וגודל מועדפים. כאן נוצרים שני לחצנים מלבניים באמצעות פונקציות fillRoundRect ו- drawRoundRect. תחביר לפונקציה tft.drawRoundRect ניתן להלן:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)

איפה:

x0 = קואורדינטת X של נקודת ההתחלה של מלבני

y0 = קואורדינטת Y של נקודת ההתחלה של מלבני

w = רוחב המלבני

h = גובה המלבני

רדיוס = רדיוס הפינה העגולה

color = צבע של הזקן.

void drawHome ()

{

tft.fillScreen (לבן);

tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // גבול עמוד

tft.fillRoundRect (10, 70, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 70, 220, 50, 8, WHITE); //הַצבָּעָה

tft.fillRoundRect (10, 160, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 160, 220, 50, 8, WHITE); //לְהִרָשֵׁם

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); //תוֹצָאָה

tft.drawRoundRect (10, 250, 220, 50, 8, WHITE);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("הצבעה");

tft.setCursor (57, 29);

tft.print ("מכונה");

tft.setTextSize (3);

tft.setTextColor (לבן);

tft.setCursor (25, 82);

tft.print ("מועמד 1");

tft.setCursor (25, 172);

tft.print ("מועמד 2");

tft.setCursor (25, 262);

tft.print ("מועמד 3");

}

2. קבלת נקודות המגע וגילוי לחצנים:

כעת בחלק השני של הקוד, נזהה את נקודות המגע בכפתורים ולאחר מכן נשתמש בנקודות אלה לחיזוי הכפתור. הפונקציה ts.getPoint () משמשת לזיהוי מגע המשתמש בתצוגת TFT. ts.getPoint נותן את ערכי ADC הגולמיים לאזור הנגוע. ערכי RAW ADC אלה מומרים לאחר מכן לקואורדינטות פיקסל באמצעות פונקציית המפה.

TSPoint p = ts.getPoint ();

אם (p.z> ts.pressureThreshhold)

{

p.x = מפה (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = map (p.y, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X: ");

//Serial.print(p.x);

//Serial.print("Y: ");

//Serial.print(p.y);

כעת, מכיוון שאנו מכירים את קואורדינטות ה- X וה- Y עבור כל כפתור, אנו יכולים לחזות היכן המשתמש נגע באמצעות הצהרת 'אם'.

אם (px> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("מועמד 1");

כאשר בוחר לוחץ על כפתור המועמד, הוא יתבקש לסרוק את האצבע על חיישן טביעות האצבע. אם מזהה אצבע מאושר אז הבוחר רשאי להצביע. אם משתמש כלשהו שאינו רשום רוצה להצביע, מודול טביעת האצבע לא יזהה את המזהה שלו במערכת והתצוגה תציג 'מצטערים שאי אפשר להצביע'.

אם (fps. IsPressFinger ())

{

fps. CaptureFinger (שקר);

int id = fps. Identify1_N ();

אם (id <200)

{

msg = "מועמד 1";

הצבעה 1 ++;

EEPROM.write (0, הצבעה 1);

tft.setCursor (42, 170);

tft.print ("תודה");

עיכוב (3000);

drawHome ();

3. תוצאה:

השלב האחרון הוא קבלת ספירת הקולות מזיכרון EEPROM והשוואת הקולות של כל שלושת המועמדים. מועמד בעל הקולות הגבוהים ביותר זוכה. ניתן לגשת לתוצאה רק מהצג הטורי ולא תוצג על מסך TFT.

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

אם (הצבע)

{

אם ((הצבעה 1> הצבעה 2 && הצבעה 1> הצבעה 3))

{

Serial.print ("Can1 מנצח");

עיכוב (2000);

}

שלב 4: בדיקת מערכת הצבעת טביעות האצבע באמצעות Arduino

כדי לבדוק את הפרויקט, חבר את ה- Arduino Uno למחשב הנייד והעלה את הקוד הנתון. לאחר העלאת הקוד, צג TFT צריך להציג את שם המועמד. כאשר מישהו מקיש על שם מועמד, המכונה תבקש לסרוק את סורק טביעות האצבע. אם טביעת האצבע תקפה, הצבעת המשתמש תיספר, אך במקרה שהתבנית לא תואמת את רשומות מסד הנתונים, הגישה להצבעה תימנע. מספר הקולות הכולל לכל מועמד יישמר ב- EEPROM ומועמד בעל מספר הקולות הגבוה ביותר יזכה.

אני מקווה שנהנית מהדרכה ולמדת משהו שימושי. אם יש לך שאלות, אנא יידע אותנו בסעיף ההערות להלן, ועקוב אחרינו ב- Instructable לפרויקטים מעניינים נוספים כאלה.

מוּמלָץ: