Мазмұны:

Arduino көмегімен саусақ ізіне негізделген биометриялық дауыс беру машинасы: 4 қадам (суреттермен)
Arduino көмегімен саусақ ізіне негізделген биометриялық дауыс беру машинасы: 4 қадам (суреттермен)

Бейне: Arduino көмегімен саусақ ізіне негізделген биометриялық дауыс беру машинасы: 4 қадам (суреттермен)

Бейне: Arduino көмегімен саусақ ізіне негізделген биометриялық дауыс беру машинасы: 4 қадам (суреттермен)
Бейне: Arduino бағдаршамы 2024, Шілде
Anonim
Arduino көмегімен саусақ ізіне негізделген биометриялық дауыс беру машинасы
Arduino көмегімен саусақ ізіне негізделген биометриялық дауыс беру машинасы

Біз барлығына электронды дауыс беру машинасы туралы білеміз, онда қолданушы дауыс беру үшін түймені басуы керек. Бірақ бұл машиналар басынан бері шыңдалғаны үшін сынға алынды. Сондықтан үкімет саусақ ізіне негізделген дауыс беру машинасын енгізуді жоспарлап отыр, онда қолданушылар оның саусақ ізінен алған әсеріне қарай дауыс бере алады. Бұл жүйе дауыстардың қайталануын болдырмайды, сонымен қатар кез келген манипуляцияның алдын алады.

Бұл жобада біз Arduino Uno, TFT дисплейі мен саусақ ізі сенсоры көмегімен биометриялық дауыс беру машинасының прототипін құрастырмақпыз. Біз бұрын NodeMCU көмегімен R305 саусақ ізі сенсорын биометрикалық келу жүйесін құру үшін қолдандық, бірақ біз мұнда Arduino-мен бірге GT-511C3 жетілдірілген саусақ ізі сенсорын қолданамыз.

1 -қадам: Биометриялық дауыс беру машинасын жасау үшін қажет компоненттер

  • Ардуино Уно
  • 2,4 дюймдік TFT СКД дисплей қалқаны
  • GT-511C3 саусақ ізі сенсоры

Бұл 2,4 дюймдік TFT дисплейі Arduino -мен бұрын IoT негізіндегі мейрамхана мәзіріне тапсырыс беру жүйесін құру үшін қолданылған.

2 -қадам: Arduino көмегімен биометриялық дауыс беру машинасының схемасы

Arduino көмегімен биометриялық дауыс беру машинасының схемасы
Arduino көмегімен биометриялық дауыс беру машинасының схемасы

Бұл жобаның схемасы өте қарапайым, өйткені біз тек TFT дисплейі мен саусақ ізі сенсорының модулін Arduino Uno -мен байланыстырамыз. Саусақ ізі сенсорының VCC және GND түйреуіштері Arduino 5V және GND түйреуіштеріне, ал TX және RX түйреуіштері Arduino Uno 11 және 12 цифрлық түйреуіштеріне қосылады.

2.4 дюймдік TFT СКД экраны Arduino Shield болып табылады және оны төмендегі суретте көрсетілгендей Arduino Uno -ға тікелей орнатуға болады. TFT дисплейінде Arduino Uno -ға өте жақсы сәйкес келетін 28 түйреуіш бар, сондықтан саусақ ізі сенсорын Arduino -ның артқы жағына дәнекерлеуге тура келді.

3 -қадам: Бастапқы код және қадамдық кодты түсіндіру

Arduino қолданатын саусақ ізі бойынша дауыс беру жүйесі жобасының толық коды мақаланың соңында келтірілген; мұнда біз кодтың кейбір маңызды функцияларын түсіндіреміз.

Код SPFD5408, Software Serial және FPS_GT511C3 кітапханаларын қолданады. SPFD5408 кітапханасы - түпнұсқа Adafruit кітапханасының өзгертілген нұсқасы. Бұл кітапхана файлдарын төмендегі сілтемелерден жүктеуге болады:

  • SPFD5408 кітапханасы
  • Бағдарламалық қамтамасыз ету сериясы
  • FPS_GT511C3

Кітапханаларды қосып, кейбір маңызды параметрлерді анықтағаннан кейін біз бағдарламалау бөлігіне кіре аламыз. Бұл бағдарламада үш бөлім бар. Бірі-дауыс беру машинасының интерфейсін жасау, екіншісі-түймелердің сенсорлық нүктелерін алу және сенсорға негізделген түймелерді анықтау, ақырында нәтижелерді есептеп, оларды Arduino жадына сақтау.

1. UI құру:

Мен үш түйме мен жобаның атауымен қарапайым 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 тіктөртбұрыштың бастапқы нүктесінің Y координаты

w = тіктөртбұрыштың ені

h = Төртбұрыштың биіктігі

радиус = дөңгелек бұрыштың радиусы

түс = Рект түсі.

void drawHome ()

{

tft.fillScreen (АҚ);

tft.drawRoundRect (0, 0, 319, 240, 8, АҚ); // Бет жиегі

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, АҚ); // Тіркелу

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // Нәтиже

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

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 Coordinates түрлендіріледі.

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: «);

//Serial.print (p.x);

//Serial.print( Y: «);

//Serial.print (p.y);

Енді біз әр батырманың X және Y координаттарын білетіндіктен, 'if' операторының көмегімен пайдаланушының қай жерге тигенін болжай аламыз.

егер (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println («1 -үміткер»);

Сайлаушы кандидат батырмасын басқанда, саусақ ізі сенсорындағы саусақты сканерлеу сұралады. Егер саусақ идентификаторы рұқсат етілсе, онда сайлаушы дауыс беруге құқылы. Егер кез келген тіркелмеген қолданушы дауыс бергісі келсе, онда саусақ ізі модулі жүйеде оның идентификаторын анықтамайды және дисплейде «Кешіріңіз, сіз дауыс бере алмайсыз» жазуы көрсетіледі.

if (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 экранында көрсетілмейді.

дауыс1 = EEPROM.read (0);

voice2 = EEPROM.read (1);

voice3 = EEPROM.read (2);

егер (дауыс)

{

егер ((дауыс1> дауыс2 && дауыс1> дауыс3))

{

Serial.print («Can1 жеңеді»);

кешіктіру (2000);

}

4 -қадам: Arduino көмегімен саусақ ізі бойынша дауыс беру жүйесін тексеру

Жобаны тексеру үшін Arduino Uno -ны ноутбукке қосып, берілген кодты жүктеңіз. Код жүктелгеннен кейін TFT дисплейі үміткердің атын көрсетуі керек. Біреу кандидаттың атын түрткенде, құрылғы саусақ ізін сканерлеуді сұрайды. Егер саусақ ізі жарамды болса, онда пайдаланушылардың дауысы есептеледі, бірақ егер үлгі деректер базасының жазбаларына сәйкес келмесе, дауыс беруге рұқсат берілмейді. Әрбір кандидатқа берілген дауыстардың жалпы саны EEPROM -де сақталады және ең көп дауыс жинаған кандидат жеңіске жетеді.

Сізге оқулық ұнады және пайдалы нәрсе білдіңіз деп үміттенемін. Егер сізде қандай да бір сұрақтар туындаса, төмендегі түсініктеме бөлімінде бізге хабарлаңыз, сонымен қатар осындай қызықты жобалар үшін нұсқаулықта бізді қадағалаңыз.

Ұсынылған: