Spisu treści:

Biometryczna maszyna do głosowania oparta na odciskach palców przy użyciu Arduino: 4 kroki (ze zdjęciami)
Biometryczna maszyna do głosowania oparta na odciskach palców przy użyciu Arduino: 4 kroki (ze zdjęciami)

Wideo: Biometryczna maszyna do głosowania oparta na odciskach palców przy użyciu Arduino: 4 kroki (ze zdjęciami)

Wideo: Biometryczna maszyna do głosowania oparta na odciskach palców przy użyciu Arduino: 4 kroki (ze zdjęciami)
Wideo: TyfloPrzegląd Odcinek nr 163 2024, Lipiec
Anonim
Biometryczna maszyna do głosowania oparta na odciskach palców za pomocą Arduino
Biometryczna maszyna do głosowania oparta na odciskach palców za pomocą Arduino

Wszyscy wiemy o istnieniu elektronicznego automatu do głosowania, w którym użytkownik musi nacisnąć przycisk, aby oddać głos. Ale te maszyny od początku były krytykowane za temperowanie. Dlatego rząd planuje wprowadzić maszynę do głosowania opartą na odciskach palców, w której użytkownicy będą mogli oddać głos na podstawie odcisku palca. System ten nie tylko usunie możliwość duplikowania głosów, ale także zapobiegnie wszelkiego rodzaju manipulacji.

Tak więc w tym projekcie zbudujemy prototyp maszyny do głosowania biometrycznego z wykorzystaniem Arduino Uno, wyświetlacza TFT i czytnika linii papilarnych. Poprzednio używaliśmy czytnika linii papilarnych R305 z NodeMCU do budowy biometrycznego systemu obecności, ale tutaj użyjemy zaawansowanego czujnika linii papilarnych GT-511C3 z Arduino.

Krok 1: Komponenty wymagane do zbudowania biometrycznej maszyny do głosowania

  • Arduino Uno
  • Osłona wyświetlacza LCD TFT o przekątnej 2,4 cala
  • GT-511C3 Czytnik linii papilarnych

Ten 2,4-calowy wyświetlacz TFT był wcześniej używany z Arduino do budowy systemu zamawiania menu restauracji opartego na IoT.

Krok 2: Schemat obwodu biometrycznej maszyny do głosowania za pomocą Arduino

Schemat obwodu biometrycznej maszyny do głosowania za pomocą Arduino
Schemat obwodu biometrycznej maszyny do głosowania za pomocą Arduino

Schemat obwodu dla tego projektu jest bardzo prosty, ponieważ łączymy tylko wyświetlacz TFT i moduł czytnika linii papilarnych z Arduino Uno. Piny VCC i GND czujnika odcisków palców są podłączone do pinów 5V i GND Arduino, podczas gdy piny TX i RX są podłączone do pinów cyfrowych 11 i 12 Arduino Uno.

Ekran LCD TFT 2,4” to tarcza Arduino i może być montowany bezpośrednio na Arduino Uno, jak pokazano na poniższym obrazku. Wyświetlacz TFT ma 28 pinów, które idealnie pasują do Arduino Uno, więc musiałem przylutować czytnik linii papilarnych z tyłu Arduino.

Krok 3: Kod źródłowy i objaśnienie kodu krok po kroku

Pełny kod tego projektu systemu głosowania odcisków palców przy użyciu Arduino znajduje się na końcu artykułu; tutaj wyjaśniamy kilka ważnych funkcji kodu.

Kod wykorzystuje biblioteki SPFD5408, Software Serial i FPS_GT511C3. Biblioteka SPFD5408 jest zmodyfikowaną wersją oryginalnej Biblioteki Adafruit. Te pliki biblioteki można pobrać z linków podanych poniżej:

  • Biblioteka SPFD5408
  • Oprogramowanie szeregowe
  • FPS_GT511C3

Po dołączeniu bibliotek i zdefiniowaniu kilku ważnych parametrów, możemy przejść do części programowania. Program ten obejmuje trzy sekcje. Jednym z nich jest tworzenie interfejsu użytkownika maszyny do głosowania, drugim jest uzyskiwanie punktów dotykowych dla przycisków i wykrywanie przycisków na podstawie dotyku, a na koniec obliczanie wyników i zapisywanie ich w pamięci Arduino.

1. Tworzenie interfejsu użytkownika:

Stworzyłem prosty interfejs użytkownika z trzema przyciskami i nazwą projektu. Biblioteka wyświetlaczy TFT umożliwia rysowanie linii, prostokątów, okręgów, znaków, ciągów i wielu innych w dowolnym preferowanym kolorze i rozmiarze. Tutaj tworzone są dwa prostokątne przyciski za pomocą funkcji fillRoundRect i drawRoundRect. Składnia funkcji tft.drawRoundRect jest podana poniżej:

tft.drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t promień, uint16_t kolor)

Gdzie:

x0= współrzędna X punktu początkowego prostokąta

y0= współrzędna Y punktu początkowego prostokąta

w = Szerokość prostokąta

h = Wysokość prostokąta

promień= Promień zaokrąglonego narożnika

color = Kolor Rekt.

void drawHome()

{

tft.fillScreen(BIAŁY);

tft.drawRoundRect(0, 0, 319, 240, 8, BIAŁY); //Brzeg strony

tft.fillRoundRect(10, 70, 220, 50, 8, ZŁOTO);

tft.drawRoundRect(10, 70, 220, 50, 8, BIAŁY); //Głosować

tft.fillRoundRect(10, 160, 220, 50, 8, ZŁOTO);

tft.drawRoundRect(10, 160, 220, 50, 8, BIAŁY); //Zapisać

tft.fillRoundRect(10, 250, 220, 50, 8, ZŁOTO); //Wynik

tft.drawRoundRect(10, 250, 220, 50, 8, BIAŁY);

tft.setCursor(65, 5);

tft.setRozmiarTekstu(3);

tft.setTextColor(CYAN);

tft.print("Głosowanie");

tft.setCursor(57, 29);

tft.print("Maszyna");

tft.setRozmiarTekstu(3);

tft.setTextColor(BIAŁY);

tft.setCursor(25, 82);

tft.print("Kandydat 1");

tft.setCursor(25, 172);

tft.print("Kandydat 2");

tft.setCursor(25, 262);

tft.print("Kandydat 3");

}

2. Uzyskiwanie punktów dotykowych i przycisków wykrywania:

Teraz w drugiej części kodu wykryjemy punkty styku przycisku, a następnie użyjemy tych punktów do przewidzenia przycisku. Funkcja ts.getPoint() służy do wykrywania dotyku użytkownika na wyświetlaczu TFT. ts.getPoint podaje surowe wartości ADC dla dotkniętego obszaru. Te wartości RAW ADC są następnie konwertowane na współrzędne pikseli przy użyciu funkcji mapy.

TSPoint p = ts.getPoint();

if (p.z > ts.pressurePróg)

{

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

p.y = mapa(p.y, TS_MAXY, TS_MINY, 0, 240);

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

//Serial.print(p.x);

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

//Serial.print(s.y);

Teraz, ponieważ znamy współrzędne X i Y dla każdego przycisku, możemy przewidzieć, gdzie użytkownik dotknął, używając instrukcji „if”.

jeśli (p.x > 70 && p.x 10 && p.y MINCIŚNIENIE && p.z < MAKS. CIŚNIENIE)

{

Serial.println("Kandydat 1");

Kiedy wyborca naciśnie przycisk kandydata, zostanie poproszony o zeskanowanie palca na czytniku linii papilarnych. Jeśli identyfikator palca jest autoryzowany, wyborca może głosować. Jeśli dowolny niezarejestrowany użytkownik chce głosować, moduł linii papilarnych nie wykryje jego identyfikatora w systemie, a na wyświetlaczu pojawi się komunikat „Przepraszam, nie można głosować”.

if (fps. IsPressFinger())

{

fps. CaptureFinger(fałsz);

int id = fps. Identyfikuj1_N();

jeśli (id <200)

{

msg = "Kandydat 1";

głos1++;

EEPROM.write(0, głos1);

tft.setCursor(42, 170);

tft.print("Dziękuję");

opóźnienie(3000);

narysujDom();

3. Wynik:

Ostatnim krokiem jest zliczenie głosów z pamięci EEPROM i porównanie głosów wszystkich trzech kandydatów. Wygrywa Kandydat z największą liczbą głosów. Wynik jest dostępny tylko z monitora szeregowego i nie będzie wyświetlany na ekranie TFT.

głosuj1=EEPROM.odczyt(0);

voice2=EEPROM.odczyt(1);

głosu3=EEPROM.odczyt(2);

jeśli(głosuj)

{

if((głos1 > głos2 && głos1 > głos3))

{

Serial.print("Can1 wygrywa");

opóźnienie (2000);

}

Krok 4: Testowanie systemu głosowania odcisków palców za pomocą Arduino

Aby przetestować projekt należy podłączyć Arduino Uno do laptopa i wgrać podany kod. Po przesłaniu kodu wyświetlacz TFT powinien wyświetlić nazwisko kandydata. Gdy ktoś kliknie nazwisko kandydata, maszyna poprosi o zeskanowanie skanera linii papilarnych. Jeśli odcisk palca jest poprawny, głos użytkownika zostanie policzony, ale w przypadku niezgodności wzorca z zapisami w bazie danych dostęp do oddania głosu zostanie odmówiony. Łączna liczba głosów na każdego kandydata zostanie zapisana w EEPROM i wygra kandydat z największą liczbą głosów.

Mam nadzieję, że podobał Ci się samouczek i nauczyłeś się czegoś przydatnego. Jeśli masz jakieś pytania, daj nam znać w sekcji komentarzy poniżej, a także śledź nas na Instructable, aby uzyskać więcej takich interesujących projektów.

Zalecana: