Mündəricat:

Arduino istifadə edərək barmaq izi əsaslı biometrik səsvermə maşını: 4 addım (şəkillərlə)
Arduino istifadə edərək barmaq izi əsaslı biometrik səsvermə maşını: 4 addım (şəkillərlə)

Video: Arduino istifadə edərək barmaq izi əsaslı biometrik səsvermə maşını: 4 addım (şəkillərlə)

Video: Arduino istifadə edərək barmaq izi əsaslı biometrik səsvermə maşını: 4 addım (şəkillərlə)
Video: Arduino - Robojax istifadə edərək aktuatoru necə idarə etmək olar 2024, Noyabr
Anonim
Arduino istifadə edərək barmaq izi əsaslı biometrik səsvermə maşını
Arduino istifadə edərək barmaq izi əsaslı biometrik səsvermə maşını

Hamımız, istifadəçinin səs vermək üçün bir düyməni basması lazım olan elektron səsvermə maşınından xəbərdarıq. Amma bu maşınlar əvvəldən bərkidilməsi üçün tənqid olunurdu. Hökumət, istifadəçilərin barmaq izi təəssüratına əsasən səs verə biləcəyi barmaq izi əsaslı bir səsvermə maşını təqdim etməyi planlaşdırır. Bu sistem təkcə səslərin təkrarlanma ehtimalını yox edəcək, həm də hər cür manipulyasiyanın qarşısını alacaq.

Beləliklə, bu layihədə Arduino Uno, TFT ekranı və Parmak İzi Sensorundan istifadə edərək Biometrik səsvermə maşınının prototipini hazırlayacağıq. Əvvəllər NodeMCU ilə R305 Parmak İzi Sensorundan istifadə edərək Biometrik əsaslı İştirak Sistemi qururduq, ancaq burada Arduino ilə birlikdə inkişaf etmiş GT-511C3 barmaq izi sensorundan istifadə edəcəyik.

Addım 1: Biometrik səsvermə maşını qurmaq üçün lazım olan komponentlər

  • Arduino Uno
  • 2.4 "TFT LCD Ekran Qalxanı
  • GT-511C3 Barmaq izi sensoru

Bu 2.4 düymlük TFT ekranı əvvəllər Arduino ilə IoT əsaslı Restoran Menyu Sifariş Sistemini qurmaq üçün istifadə edilmişdir.

Addım 2: Arduino istifadə edərək biometrik səsvermə maşını üçün dövrə diaqramı

Arduino istifadə edərək biometrik səsvermə maşını üçün dövrə diaqramı
Arduino istifadə edərək biometrik səsvermə maşını üçün dövrə diaqramı

Yalnız TFT ekranı və barmaq izi sensoru modulunu Arduino Uno ilə bağladığımız üçün bu layihənin dövrə diaqramı çox sadədir. Barmaq izi sensorunun VCC və GND pinləri Arduinonun 5V və GND sancaqlarına, TX və RX pinləri isə Arduino Uno 11 və 12 rəqəmsal pininə qoşulur.

2.4 TFT LCD ekranı bir Arduino Shield -dir və aşağıdakı şəkildə göstərildiyi kimi birbaşa Arduino Uno üzərində quraşdırıla bilər. TFT ekranında Arduino Uno -ya mükəmməl uyğun olan 28 pin var, buna görə barmaq izi sensorunu Arduinonun arxasına lehimləməli oldum.

Addım 3: Mənbə Kodu və Addım -addım Kod Şərhi

Arduino istifadə edən bu Parmak İzi Səs Sistemi Layihəsinin tam kodu məqalənin sonunda verilmişdir; burada kodun bəzi vacib funksiyalarını izah edirik.

Kod SPFD5408, Software Serial və FPS_GT511C3 kitabxanalarından istifadə edir. SPFD5408 kitabxanası, orijinal Adafruit Kitabxanasının dəyişdirilmiş versiyasıdır. Bu kitabxana faylları aşağıdakı linklərdən yüklənə bilər:

  • SPFD5408 Kitabxanası
  • Proqram Serialı
  • FPS_GT511C3

Kitabxanaları daxil etdikdən və bəzi vacib parametrləri təyin etdikdən sonra proqramlaşdırma hissəsinə daxil ola bilərik. Bu proqramda üç hissə iştirak edir. Biri səsvermə maşını UI yaratmaq, ikincisi düymələr üçün toxunma nöqtələrini əldə etmək və toxunuşa əsaslanan düymələri aşkar etmək və nəticədə nəticələri hesablamaq və Arduinonun yaddaşına saxlamaqdır.

1. UI yaradılması:

Üç düyməli və layihənin adı olan sadə bir UI yaratdım. TFT ekran kitabxanası Xəttlər, Dikdörtgen, Dairələr, Simvollar, Simlər və daha çox istənilən rəng və ölçüdə çəkməyə imkan verir. Burada fillRoundRect və drawRoundRect funksiyalarından istifadə edərək iki düzbucaqlı düymə yaradılmışdır. Tft.drawRoundRect funksiyasının sintaksisi aşağıda verilmişdir:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t rəng)

Harada:

x0 = X düzbucaqlı başlanğıc nöqtəsinin koordinatı

y0 = Y düzbucaqlının başlanğıc nöqtəsinin Y koordinatı

w = Düzbucağın eni

h = Dikdörtgənin hündürlüyü

radius = Dairəvi küncün radiusu

color = Rektin Rengi.

void drawHome ()

{

tft.fillScreen (BEYAZ);

tft.drawRoundRect (0, 0, 319, 240, 8, BEYAZ); // Səhifə sərhədi

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

tft.drawRoundRect (10, 70, 220, 50, 8, BEYAZ); // Səs ver

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

tft.drawRoundRect (10, 160, 220, 50, 8, BEYAZ); // Qeydiyyat

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // Nəticə

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Səsvermə");

tft.setCursor (57, 29);

tft.print ("Maşın");

tft.setTextSize (3);

tft.setTextColor (BEYAZ);

tft.setCursor (25, 82);

tft.print ("Namizəd 1");

tft.setCursor (25, 172);

tft.print ("Namizəd 2");

tft.setCursor (25, 262);

tft.print ("Namizəd 3");

}

2. Toxunma Nöqtələrinin Alınması və Algılama Düymələri:

İndi kodun ikinci hissəsində düymənin toxunma nöqtələrini aşkar edəcəyik və sonra düyməni proqnozlaşdırmaq üçün bu nöqtələrdən istifadə edəcəyik. ts.getPoint () funksiyası istifadəçinin TFT ekranında toxunmasını aşkar etmək üçün istifadə olunur. ts.getPoint, toxunulan sahə üçün Raw ADC dəyərlərini verir. Bu RAW ADC dəyərləri daha sonra xəritə funksiyasından istifadə edərək Pixel Koordinatlarına çevrilir.

TSPoint p = ts.getPoint ();

əgər (p.z> ts.pressureThreshhold)

{

p.x = xəritə (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = xəritə (p.y, TS_MAXY, TS_MINY, 0, 240);

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

//Serial.print (p.x);

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

//Serial.print (p.y);

İndi, hər bir düymə üçün X və Y koordinatlarını bildiyimiz üçün, 'if' ifadəsini istifadə edərək istifadəçinin hara toxunduğunu təxmin edə bilərik.

əgər (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("Namizəd 1");

Seçici namizədin düyməsini basdıqda, barmağını barmaq izi sensoru üzərində taraması tələb olunacaq. Barmaq kimliyi təsdiqlənərsə, seçicinin səs verməsinə icazə verilir. Qeydiyyatdan keçməmiş hər hansı bir istifadəçi səs vermək istəsə, barmaq izi modulu sistemdəki şəxsiyyətini algılamayacaq və ekranda 'Bağışla səs verə bilməzsən' yazısı görünəcək.

əgər (fps. IsPressFinger ())

{

fps. CaptureFinger (yanlış);

int id = fps. Identify1_N ();

əgər (id <200)

{

msg = "Namizəd 1";

səs1 ++;

EEPROM.write (0, səs1);

tft.setCursor (42, 170);

tft.print ("Təşəkkür edirəm");

gecikmə (3000);

drawHome ();

3. Nəticə:

Son addım EEPROM yaddaşından səslərin sayını əldə etmək və hər üç namizədin səslərini müqayisə etməkdir. Ən çox səs toplayan namizəd qalib gəlir. Nəticə yalnız serial monitordan əldə edilə bilər və TFT ekranında göstərilməyəcək.

səs1 = EEPROM.read (0);

səs2 = EEPROM.read (1);

səs3 = EEPROM.read (2);

əgər (səs)

{

əgər ((səs1> səs2 && səs1> səs3))

{

Serial.print ("Can1 Qazanır");

gecikmə (2000);

}

Addım 4: Arduino istifadə edərək barmaq izi səsvermə sisteminin sınanması

Layihəni sınamaq üçün Arduino Uno noutbuka qoşun və verilən kodu yükləyin. Kod yükləndikdən sonra TFT ekranında namizədin adı göstərilməlidir. Kimsə bir namizədin adına toxunduqda, maşın barmaq izi skanerini taramağı xahiş edəcək. Barmaq izi etibarlı olarsa, istifadəçi səsi sayılacaq, ancaq nümunə verilənlər bazası qeydləri ilə uyğun gəlmirsə, səs vermək hüququ rədd ediləcək. Hər bir namizəd üçün ümumi səs sayı EEPROM -da saxlanılacaq və ən çox səs toplayan namizəd qalib gələcək.

Ümid edirəm dərsdən zövq aldınız və faydalı bir şey öyrəndiniz. Hər hansı bir sualınız varsa, aşağıdakı şərh bölməsində bizə bildirin və daha maraqlı layihələr üçün Təlimatlandırıcıda bizi izləyin.

Tövsiyə: