Съдържание:
- Стъпка 1: Компоненти, необходими за изграждане на биометрична машина за гласуване
- Стъпка 2: Схема за биометрична машина за гласуване, използваща Arduino
- Стъпка 3: Изходен код и Стъпка по стъпка Обяснение на кода
- Стъпка 4: Тестване на системата за гласуване на пръстови отпечатъци с помощта на Arduino
Видео: Биометрична машина за гласуване на пръстови отпечатъци, използваща Arduino: 4 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Всички сме наясно със съществуващата електронна машина за гласуване, при която потребителят трябва да натисне бутон, за да гласува. Но тези машини са критикувани за темпериране от самото начало. Така че правителството планира да въведе машина за гласуване, базирана на пръстови отпечатъци, където потребителите могат да гласуват въз основа на неговия/нейния отпечатък. Тази система не само ще премахне възможността за дублиране на гласовете, но също така ще предотврати всякакъв вид манипулации.
Така че в този проект ще изградим прототип на биометрична машина за гласуване, използвайки Arduino Uno, TFT дисплей и сензор за пръстови отпечатъци. Преди това използвахме сензор за пръстови отпечатъци R305 с NodeMCU за изграждане на биометрична система за присъствие, но тук ще използваме усъвършенствания сензор за пръстови отпечатъци GT-511C3 с Arduino.
Стъпка 1: Компоненти, необходими за изграждане на биометрична машина за гласуване
- Arduino Uno
- 2.4”TFT LCD дисплей щит
- GT-511C3 Сензор за пръстови отпечатъци
Този 2,4 -инчов TFT дисплей преди е бил използван с Arduino за изграждане на IoT базирана система за поръчка на менюта в ресторанти.
Стъпка 2: Схема за биометрична машина за гласуване, използваща 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 за още такива интересни проекти.
Препоръчано:
Система за присъствие на пръстови отпечатъци и RFID, използваща база данни Raspberry Pi и MySQL: 5 стъпки
Система за присъствие на пръстови отпечатъци и RFID, използваща база данни Raspberry Pi и MySQL: Видео на този проект
Електрическа брава за врата със скенер за пръстови отпечатъци и RFID четец: 11 стъпки (със снимки)
Електрическо заключване на врата със скенер за пръстови отпечатъци и RFID четец: Проектът е проектиран, за да се избегне необходимостта от използване на ключове, за да постигнем целта си, използвахме оптичен сензор за пръстови отпечатъци и Arduino. Има обаче хора, които имат нечетлив пръстов отпечатък и сензорът няма да го разпознае. След това мислене за
Онлайн система за гласуване по пръстови отпечатъци (FVOS): 5 стъпки
Онлайн система за гласуване по пръстови отпечатъци (FVOS): Онлайн системата за гласуване по пръстови отпечатъци позволява на избирателите да гласуват по напълно дигитализиран начин, като събират и потвърждават неговата/нейната информация чрез сканиране на пръстовия отпечатък през устройството и запазване на данните на сървър. Той има удобен за потребителя G
Използване на сензор за пръстови отпечатъци за присъствие на време в комбинация с решение XAMP: 6 стъпки (със снимки)
Използване на сензор за пръстови отпечатъци за посещаемост в комбинация с решение XAMP: За училищен проект търсехме решение как да проследим посещаемостта на учениците. Много от нашите студенти идват късно. Досадна работа е да се проверява тяхното присъствие. От друга страна, има много дискусии, защото учениците често ще казват
Урок за сензор за пръстови отпечатъци на Arduino: 6 стъпки (със снимки)
Урок за сензора за пръстови отпечатъци на Arduino: Скъпи приятели, добре дошли в друг урок! Днес ще изградим интересен проект на Arduino, който използва модул за сензор за пръстови отпечатъци. Без по -нататъшно забавяне, нека започнем! Винаги съм искал да опитам модул за сензор за пръстови отпечатъци в