Სარჩევი:

თითის ანაბეჭდზე დაფუძნებული ბიომეტრიული ხმის აპარატი Arduino– ს გამოყენებით: 4 ნაბიჯი (სურათებით)
თითის ანაბეჭდზე დაფუძნებული ბიომეტრიული ხმის აპარატი Arduino– ს გამოყენებით: 4 ნაბიჯი (სურათებით)

ვიდეო: თითის ანაბეჭდზე დაფუძნებული ბიომეტრიული ხმის აპარატი Arduino– ს გამოყენებით: 4 ნაბიჯი (სურათებით)

ვიდეო: თითის ანაბეჭდზე დაფუძნებული ბიომეტრიული ხმის აპარატი Arduino– ს გამოყენებით: 4 ნაბიჯი (სურათებით)
ვიდეო: ომის Cash 2024, ივლისი
Anonim
თითის ანაბეჭდზე დაფუძნებული ბიომეტრული ხმის აპარატი არდუინოს გამოყენებით
თითის ანაბეჭდზე დაფუძნებული ბიომეტრული ხმის აპარატი არდუინოს გამოყენებით

ჩვენ ყველამ ვიცით არსებული ელექტრონული ხმის მიცემის მანქანა, სადაც მომხმარებელმა უნდა დააჭიროს ღილაკს ხმის მისაცემად. მაგრამ ეს მანქანები თავიდანვე გააკრიტიკეს წრთობისთვის. ასე რომ, მთავრობა გეგმავს თითის ანაბეჭდზე დაფუძნებული კენჭისყრის აპარატის დანერგვას, სადაც მომხმარებლებს შეეძლებათ ხმის მიცემა მისი თითის ანაბეჭდის შთაბეჭდილების საფუძველზე. ეს სისტემა არა მხოლოდ ამოიღებს ხმების დუბლიკატის შესაძლებლობას, არამედ ხელს შეუშლის ყოველგვარ მანიპულირებას.

ამ პროექტში ჩვენ ვაპირებთ ავაშენოთ ბიომეტრიული ხმის აპარატის პროტოტიპი Arduino Uno– ს, TFT დისპლეის და თითის ანაბეჭდის სენსორის გამოყენებით. ჩვენ ადრე გამოვიყენეთ R305 თითის ანაბეჭდის სენსორი NodeMCU– სთან ბიომეტრზე დაფუძნებული დასწრების სისტემის შესაქმნელად, მაგრამ აქ ჩვენ გამოვიყენებთ მოწინავე GT-511C3 თითის ანაბეჭდის სენსორს Arduino– სთან ერთად.

ნაბიჯი 1: კომპონენტები, რომლებიც საჭიროა ბიომეტრიული ხმის მიცემის შესაქმნელად

  • არდუინო უნო
  • 2.4”TFT LCD ეკრანის ფარი
  • GT-511C3 თითის ანაბეჭდის სენსორი

ეს 2.4 დიუმიანი TFT დისპლეი ადრე გამოიყენება Arduino– სთან IoT– ზე დაფუძნებული რესტორნის მენიუს შეკვეთის სისტემის შესაქმნელად.

ნაბიჯი 2: სქემატური დიაგრამა ბიომეტრული ხმის აპარატისთვის არდუინოს გამოყენებით

მიკროსქემის დიაგრამა ბიომეტრიული ხმის მიცემისათვის არდუინოს გამოყენებით
მიკროსქემის დიაგრამა ბიომეტრიული ხმის მიცემისათვის არდუინოს გამოყენებით

ამ პროექტისთვის სქემის დიაგრამა ძალიან მარტივია, რადგან ჩვენ მხოლოდ TFT ეკრანს და თითის ანაბეჭდის სენსორის მოდულს ვუკავშირებთ Arduino Uno– ს. თითის ანაბეჭდის სენსორის VCC და GND ქინძისთავები დაკავშირებულია Arduino– ს 5V და GND ქინძისთავებთან, ხოლო TX და RX ქინძისთავები უკავშირდება Arduino Uno– ს ციფრულ პინებს 11 და 12.

2.4”TFT LCD ეკრანი არის Arduino Shield და მისი პირდაპირ დამონტაჟება შესაძლებელია Arduino Uno– ზე, როგორც ეს მოცემულია ქვემოთ მოცემულ სურათზე. TFT ეკრანს აქვს 28 ქინძისთავები, რომლებიც შესანიშნავად ჯდება Arduino Uno– ში, ასე რომ მე მომიწია თითის ანაბეჭდის სენსორის მიმაგრება Arduino– ს უკანა მხარეს.

ნაბიჯი 3: წყაროს კოდი და ეტაპობრივად კოდის ახსნა

თითის ანაბეჭდის ხმის მიცემის სისტემის პროექტის სრული კოდი Arduino– ს საშუალებით მოცემულია სტატიის ბოლოს; აქ ჩვენ განვმარტავთ კოდის რამდენიმე მნიშვნელოვან ფუნქციას.

კოდი იყენებს SPFD5408, პროგრამული სერიის და FPS_GT511C3 ბიბლიოთეკებს. SPFD5408 ბიბლიოთეკა არის ორიგინალური ადაფრუტის ბიბლიოთეკის შეცვლილი ვერსია. ბიბლიოთეკის ფაილების გადმოწერა შესაძლებელია ქვემოთ მოცემული ბმულებიდან:

  • ბიბლიოთეკა SPFD5408
  • პროგრამული სერია
  • FPS_GT511C3

ბიბლიოთეკების ჩართვისა და მნიშვნელოვანი პარამეტრების განსაზღვრის შემდეგ, ჩვენ შეგვიძლია შევიდეთ პროგრამირების ნაწილში. ამ პროგრამაში სამი განყოფილებაა ჩართული. ერთი არის კენჭისყრის აპარატის ინტერფეისის შექმნა, მეორე არის ღილაკების შეხების წერტილების მიღება და ღილაკების გამოვლენა შეხების საფუძველზე და ბოლოს გამოთვლა შედეგებით და მათი შენახვა არდუინოს მეხსიერებაში.

1. შექმენით UI:

მე შევქმენი მარტივი ინტერფეისი სამი ღილაკით და პროექტის სახელით. TFT ჩვენების ბიბლიოთეკა საშუალებას გაძლევთ დახაზოთ ხაზები, მართკუთხედი, წრეები, სიმბოლოები, სტრიქონები და ბევრად მეტი ნებისმიერი სასურველი ფერი და ზომა. აქ ორი მართკუთხა ღილაკი იქმნება fillRoundRect და drawRoundRect ფუნქციების გამოყენებით. სინტაქსი tft.drawRoundRect ფუნქციისთვის მოცემულია ქვემოთ:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t სთ, int16_t რადიუსი, uint16_t ფერი)

სად:

x0 = მართკუთხედის საწყისი წერტილის X კოორდინატი

y0 = მართკუთხედის საწყისი წერტილის Y კოორდინატი

w = მართკუთხედის სიგანე

h = მართკუთხედის სიმაღლე

რადიუსი = მრგვალი კუთხის რადიუსი

ფერი = ფერი რექტის.

void drawHome ()

{

tft.fillScreen (WHITE);

tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // გვერდის საზღვარი

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

tft.drawRoundRect (10, 70, 220, 50, 8, თეთრი); // ხმის მიცემა

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 იძლევა Raw ADC მნიშვნელობებს შეხებული ფართობისათვის. ეს RAW ADC მნიშვნელობები გადაიქცევა Pixel კოორდინატებად რუქის ფუნქციის გამოყენებით.

TSPoint p = ts.getPoint ();

თუ (p.z> ts.pressureThreshhold)

{

p.x = რუკა (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = რუკა (p.y, TS_MAXY, TS_MINY, 0, 240);

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

// სერიული. ბეჭდვა (p.x);

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

//Serial.print(p.y);

ახლა, ვინაიდან ჩვენ ვიცით X და Y კოორდინატები თითოეული ღილაკისთვის, ჩვენ შეგვიძლია წინასწარ განვსაზღვროთ, თუ სად შეეხო მომხმარებელი "if" განცხადების გამოყენებით.

if (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("კანდიდატი 1");

როდესაც ამომრჩეველი დააჭერს კანდიდატის ღილაკს, მას სთხოვენ თითის ანაბეჭდის სენსორზე სკანირებას. თუ თითის ID უფლებამოსილია, ამომრჩეველს უფლება აქვს ხმის მიცემა. თუ რომელიმე დარეგისტრირებულ მომხმარებელს სურს ხმის მიცემა, მაშინ თითის ანაბეჭდის მოდული არ აღმოაჩენს მის პირადობის მოწმობას სისტემაში და ეკრანზე გამოჩნდება "უკაცრავად, ხმას ვერ იღებ".

თუ (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);

ხმა 2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

თუ (ხმა)

{

თუ ((ხმა 1> ხმა 2 && ხმა 1> ხმა 3))

{

Serial.print ("Can1 იგებს");

დაგვიანება (2000);

}

ნაბიჯი 4: თითის ანაბეჭდის ხმის მიცემის სისტემის ტესტირება არდუინოს გამოყენებით

პროექტის შესამოწმებლად, დაუკავშირეთ Arduino Uno ლეპტოპს და ატვირთეთ მოცემული კოდი. როდესაც კოდი აიტვირთება, TFT ეკრანზე უნდა იყოს ნაჩვენები კანდიდატის სახელი. როდესაც ვინმე ირჩევს კანდიდატის სახელს, მანქანა ითხოვს თითის ანაბეჭდის სკანერის სკანირებას. თუ თითის ანაბეჭდი მართებულია, მაშინ მომხმარებლის ხმა ჩაითვლება, მაგრამ იმ შემთხვევაში, თუ ნიმუში არ ემთხვევა მონაცემთა ბაზის ჩანაწერებს, ხმის მიცემის უფლებაზე უარს იტყვიან. თითოეული კანდიდატის ხმების საერთო რაოდენობა ინახება EEPROM– ში და გაიმარჯვებს კანდიდატი, რომელსაც აქვს ყველაზე მეტი ხმა.

ვიმედოვნებ, რომ ისიამოვნეთ გაკვეთილით და ისწავლეთ რაიმე სასარგებლო. თუ თქვენ გაქვთ რაიმე შეკითხვები, გთხოვთ შეგვატყობინოთ ქვემოთ მოცემულ კომენტარებში და ასევე მოგვყევით Instructable– ზე უფრო საინტერესო პროექტებისთვის.

გირჩევთ: