Spisu treści:
- Krok 1: Komponenty wymagane do zbudowania biometrycznej maszyny do głosowania
- Krok 2: Schemat obwodu biometrycznej maszyny do głosowania za pomocą Arduino
- Krok 3: Kod źródłowy i objaśnienie kodu krok po kroku
- Krok 4: Testowanie systemu głosowania odcisków palców za pomocą Arduino
Wideo: Biometryczna maszyna do głosowania oparta na odciskach palców przy użyciu Arduino: 4 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
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 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:
System obecności oparty na odciskach palców i RFID przy użyciu Raspberry Pi i bazy danych MySQL: 5 kroków
System obecności oparty na odciskach palców i RFID przy użyciu Raspberry Pi i bazy danych MySQL: wideo tego projektu
Pierwsze kroki z Digispark Attiny85 przy użyciu Arduino IDE: 4 kroki
Rozpoczęcie pracy z Digispark Attiny85 przy użyciu Arduino IDE: Digispark to oparta na Attiny85 płytka rozwojowa mikrokontrolera podobna do linii Arduino, tylko tańsza, mniejsza i nieco mniej wydajna. Z całą gamą osłon rozszerzających jego funkcjonalność i możliwością korzystania ze znanego identyfikatora Arduino
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
Maszyna fletowa oparta na Arduino: 10 kroków (ze zdjęciami)
Arduino Based Flute Player Machine: W tej instrukcji staram się przedstawić projekt, który łączy sztukę z inżynierią. Maszyna grająca na flecie. Kontroluje notatki za pomocą Arduino. Na Arduino można zaprogramować różne melodie lub piosenki, które Arduino gra na flecie. Nie ma
DIY lutownica na gorące powietrze przy użyciu 12-18 woltów prądu stałego przy 2-3 amperach: 18 kroków (ze zdjęciami)
DIY lutownica na gorące powietrze przy użyciu 12-18 woltów prądu stałego przy 2-3 amperach: to moja pierwsza publikacja eva artykułu o majsterkowaniu w Internecie. Więc przepraszam za literówki, protokoły itp. Poniższe instrukcje pokazują, jak zrobić PRACOWĄ lutownicę na gorące powietrze odpowiednią do WSZYSTKICH zastosowań wymagających lutowania. To lutowanie gorącym powietrzem