Съдържание:

Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino: 4 стъпки (със снимки)
Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino: 4 стъпки (със снимки)

Видео: Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino: 4 стъпки (със снимки)

Видео: Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino: 4 стъпки (със снимки)
Видео: Изборният ден в Албания премина с няколко регистрирани инцидента 2024, Юли
Anonim
Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino
Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino

Всички сме наясно със съществуващата електронна машина за гласуване, при която потребителят трябва да натисне бутон, за да гласува. Но тези машини са критикувани за темпериране от самото начало. Така че правителството планира да въведе машина за гласуване, базирана на пръстови отпечатъци, където потребителите могат да гласуват въз основа на неговия/нейния отпечатък. Тази система не само ще премахне възможността за дублиране на гласовете, но също така ще предотврати всякакъв вид манипулации.

Така че в този проект ще изградим прототип на биометрична машина за гласуване, използвайки Arduino Uno, TFT дисплей и сензор за пръстови отпечатъци. Преди това използвахме сензор за пръстови отпечатъци R305 с NodeMCU за изграждане на биометрична система за присъствие, но тук ще използваме усъвършенствания сензор за пръстови отпечатъци GT-511C3 с Arduino.

Стъпка 1: Компоненти, необходими за изграждане на биометрична машина за гласуване

  • Arduino Uno
  • 2.4”TFT LCD дисплей щит
  • GT-511C3 Сензор за пръстови отпечатъци

Този 2,4 -инчов TFT дисплей преди е бил използван с Arduino за изграждане на IoT базирана система за поръчка на менюта в ресторанти.

Стъпка 2: Схема за биометрична машина за гласуване, използваща Arduino

Схема за биометрична машина за гласуване, използваща Arduino
Схема за биометрична машина за гласуване, използваща Arduino

Схемата за този проект е много проста, тъй като свързваме само TFT дисплея и модула на сензора за пръстови отпечатъци с Arduino Uno. Пиновете VCC и GND на сензора за пръстови отпечатъци са свързани към 5V и GND щифтовете на Arduino, докато пиновете TX и RX са свързани към цифров пин 11 и 12 на Arduino Uno.

2.4 -инчовият TFT LCD екран е Arduino Shield и може да се монтира директно на Arduino Uno, както е показано на изображението по -долу. TFT дисплеят има 28 пина, които перфектно се вписват в Arduino Uno, така че трябваше да запоя сензора за пръстови отпечатъци на гърба на Arduino.

Стъпка 3: Изходен код и Стъпка по стъпка Обяснение на кода

Пълният код за този проект за система за гласуване на пръстови отпечатъци, използващ Arduino, е даден в края на статията; тук обясняваме някои важни функции на кода.

Кодът използва библиотеките SPFD5408, Software Serial и FPS_GT511C3. Библиотеката SPFD5408 е модифицираната версия на оригиналната библиотека Adafruit. Тези библиотечни файлове могат да бъдат изтеглени от връзките, дадени по -долу:

  • Библиотека SPFD5408
  • Софтуерен сериен
  • FPS_GT511C3

След като включим библиотеките и дефинираме някои важни параметри, можем да влезем в програмиращата част. В тази програма участват три раздела. Едното е създаването на потребителски интерфейс на машина за гласуване, второто получаване на точки за докосване за бутони и откриване на бутоните въз основа на докосването и накрая изчисляване на резултатите и запазването им в паметта на Arduino.

1. Създаване на потребителски интерфейс:

Създадох прост потребителски интерфейс с три бутона и името на проекта. Библиотеката на TFT дисплея ви позволява да рисувате линии, правоъгълник, кръгове, символи, низове и много други от всеки предпочитан цвят и размер. Тук са създадени два правоъгълни бутона с помощта на функции fillRoundRect и drawRoundRect. Синтаксисът за функцията tft.drawRoundRect е даден по -долу:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t радиус, uint16_t цвят)

Където:

x0 = X координата на началната точка на правоъгълник

y0 = Y координата на началната точка на правоъгълник

w = Ширина на правоъгълника

h = Височина на правоъгълника

радиус = Радиус на кръглия ъгъл

color = Цвят на Rect.

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 стойности след това се преобразуват в пикселни координати с помощта на функцията на картата.

TSPoint p = ts.getPoint ();

if (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 екрана.

vote1 = EEPROM.прочетено (0);

vote2 = EEPROM.прочетете (1);

vote3 = EEPROM.read (2);

ако (гласувайте)

{

ако ((гласуване1> гласуване2 && гласуване1> гласуване3))

{

Serial.print ("Can1 печели");

забавяне (2000);

}

Стъпка 4: Тестване на системата за гласуване на пръстови отпечатъци с помощта на Arduino

За да тествате проекта, свържете Arduino Uno към лаптопа и качете дадения код. След като кодът бъде качен, TFT дисплеят трябва да показва името на кандидата. Когато някой докосне името на кандидата, машината ще поиска да сканира скенера за пръстови отпечатъци. Ако пръстовият отпечатък е валиден, тогава гласът на потребителя ще се брои, но в случай, че моделът не съвпада с записите в базата данни, достъпът за гласуване ще бъде отказан. Общият брой гласове за всеки кандидат ще се съхранява в EEPROM и ще спечели кандидат с най -голям брой гласове.

Надявам се, че урокът ви е харесал и сте научили нещо полезно. Ако имате някакви въпроси, моля, уведомете ни в секцията за коментари по -долу, а също така ни последвайте на Instructable за още такива интересни проекти.

Препоръчано: