- Wymagane komponenty
- Opis Projektu:
- Moduł FingerPrint:
- Działanie systemu obecności na podstawie linii papilarnych
- Schemat obwodu i opis projektu systemu obecności odcisków palców
- Objaśnienie kodu:
Systemy obecności to powszechnie stosowane systemy do oznaczania obecności w biurach i szkołach. Od ręcznego oznaczania obecności w rejestrach obecności po korzystanie z zaawansowanych technologicznie aplikacji i systemów biometrycznych, systemy te znacznie się poprawiły. W naszych poprzednich projektach zajmowaliśmy się kilkoma innymi projektami elektronicznego systemu obecności z wykorzystaniem mikrokontrolera RFID i AVR, 8051 i raspberry Pi. W tym projekcie użyliśmy modułu odcisków palców i Arduino do pobierania i przechowywania danych i zapisów obecności. Dzięki zastosowaniu czytnika linii papilarnych system stanie się bezpieczniejszy dla użytkowników. W poniższych sekcjach wyjaśniono szczegóły techniczne tworzenia biometrycznego systemu obecności na podstawie odcisków palców przy użyciu Arduino.
Wymagane komponenty
- Arduino -1
- Moduł odcisków palców -1
- Przycisk - 4
- Diody LED -1
- Rezystor 1 K -2
- Rezystor 2,2 K -1
- Moc
- Przewody łączące
- Pudełko
- Brzęczyk -1
- LCD 16x2 -1
- Deska do chleba -1
- Moduł RTC -1
Opis Projektu:
W tym obwodzie systemu obecności odcisków palców użyliśmy modułu czujnika odcisków palcówdo uwierzytelnienia prawdziwej osoby lub pracownika poprzez pobranie ich palca w systemie. Tutaj używamy 4 przycisków do rejestracji, usuwania, w górę / w dół. Klawisze ENROLL i DEL mają potrójne funkcje. Klucz ENROLL służy do wpisania nowej osoby do systemu. Więc kiedy użytkownik chce zarejestrować nowy palec, musi nacisnąć klawisz ENROLL, a następnie wyświetlacz LCD zapyta o ID, w którym użytkownik chce zapisać obraz odcisków palców. Teraz, jeśli w tym momencie użytkownik nie chce kontynuować, może ponownie nacisnąć klawisz ENROLL, aby wrócić. Tym razem klawisz ENROLL zachowuje się jak klawisz Back, tj. Klawisz ENROLL ma zarówno funkcję rejestracji, jak i funkcji powrotu. Poza tym klucz rejestracji służy również do pobierania danych dotyczących obecności na monitorze szeregowym. Podobnie klawisz DEL / OK ma również tę samą podwójną funkcję, jak przy wpisywaniu nowego palca przez użytkownika,następnie musi wybrać identyfikator palca za pomocą kolejnych dwóch klawiszy, mianowicie GÓRA i DÓŁ. Teraz użytkownik musi nacisnąć klawisz DEL / OK (tym razem ten klawisz zachowuje się jak OK), aby kontynuować z wybranym ID. A klawisz Del służy do resetowania lub usuwania danych z pamięci EEPROM Arduino.
Moduł FingerPrint:
Moduł czujnika odcisków palców przechwytuje obraz odcisku palca, a następnie konwertuje go na równoważny szablon i zapisuje w swojej pamięci zgodnie z wybranym identyfikatorem przez Arduino. Cały proces jest zarządzany przez Arduino, jak zrobienie obrazu odcisku palca, przekształcenie go w szablony i zapisanie jako ID itp. Możesz sprawdzić więcej projektów za pomocą modułu odcisków palców:
System bezpieczeństwa oparty na odciskach palców
Biometryczna maszyna do głosowania oparta na odciskach palców
Tutaj dodaliśmy żółtą diodę LED, która wskazuje, że moduł linii papilarnych jest gotowy do zrobienia zdjęcia palca. Do różnych wskazań używany jest również brzęczyk. Arduino jest głównym komponentem tego systemu i odpowiada za sterowanie całym systemem.
Działanie systemu obecności na podstawie linii papilarnych
Działanie tego projektu systemu obecności odcisków palcówjest dość prosta. Przede wszystkim użytkownik musi zarejestrować odciski palców użytkownika za pomocą przycisków. Aby to zrobić, użytkownik musi nacisnąć klawisz ENROLL, a następnie wyświetlacz LCD poprosi o wprowadzenie identyfikatora odcisku palca, aby zapisać go w pamięci według nazwy identyfikatora. Teraz użytkownik musi wprowadzić identyfikator za pomocą klawiszy GÓRA / DÓŁ. Po wybraniu ID należy wcisnąć OK (klawisz DEL). Teraz LCD poprosi o umieszczenie palca na module linii papilarnych. Teraz użytkownik musi nałożyć palec na moduł odcisków palców, a następnie moduł wykonuje obraz palca. Teraz wyświetlacz LCD powie, aby usunąć palec z modułu linii papilarnych i ponownie poprosi o ponowne umieszczenie palca. Teraz użytkownik musi ponownie przyłożyć palec, a moduł pobiera obraz i konwertuje go na szablony i zapisuje według wybranego identyfikatora w pamięci modułu odcisków palców.Teraz użytkownik zostanie zarejestrowany i będzie mógł przekazać informacje o obecności, przykładając palec do modułu czytnika linii papilarnych. W ten sam sposób wszyscy użytkownicy zostaną zarejestrowani w systemie.
Teraz, jeśli użytkownik chce usunąć lub skasować którykolwiek z zapisanych identyfikatorów lub odcisku palca, musi nacisnąć klawisz DEL. Po naciśnięciu klawisza kasowania LCD poprosi o wybranie identyfikatora, który ma zostać usunięty. Teraz użytkownik musi wybrać ID i nacisnąć klawisz OK (ten sam klawisz DEL). Teraz wyświetlacz LCD poinformuje Cię, że odcisk palca został pomyślnie usunięty.
Jak działa obecność w tym projekcie systemu obecności na odciskach palców:
Za każdym razem, gdy użytkownik umieści swój palec na module odcisków palców, moduł odcisków palców przechwytuje obraz palca i wyszukuje, czy jakikolwiek identyfikator jest powiązany z tym odciskiem palca w systemie. Jeśli wykryty zostanie odcisk palca, na wyświetlaczu LCD pojawi się zarejestrowana obecność, a jednocześnie brzęczyk wyda jeden sygnał dźwiękowy, a dioda LED zgaśnie, dopóki system nie będzie gotowy do ponownego wprowadzenia danych.
Wraz z modułem linii papilarnych użyliśmy również modułu RTC dla godziny i daty. Czas i data są stale wyświetlane w systemie. Tak więc Arduino bierze czas i datę za każdym razem, gdy prawdziwy użytkownik kładzie palec na odciskach palców i zapisuje je w pamięci EEPROM w przydzielonym gnieździe pamięci.
Tutaj stworzyliśmy 5 przestrzeni użytkownika w tym systemie na 30 dni. Naciśnięcie przycisku RESET w Arduino a następnie natychmiastowa rejestracja klucza będzie odpowiadać za pobranie danych obecności przez monitor szeregowy z pamięci Arduino EEPROM.
Zarządzanie pamięcią:
Mamy 1023 bajty pamięci w Arduino UNO, z czego 1018 bajtów na przechowywanie danych i pobraliśmy 5 danych dotyczących obecności użytkowników przez 30 dni. Każda obecność będzie rejestrować godzinę i datę, więc otrzymają dane 7-bajtowe.
Zatem całkowita wymagana pamięć wynosi
5 * 30 * 7 = 1050, więc tutaj potrzebujemy więcej 32 bajtów
Ale jeśli będziemy używać 4 użytkowników, to wymagaliśmy
4 * 30 * 7 = 840
Tutaj zrobiliśmy demonstrację tego projektu, biorąc pamięć 5 użytkowników. W ten sposób nie będziemy w stanie przechowywać 32-bajtowych lub 5 rekordów obecności piątego użytkownika.
Możesz wypróbować to przez 4 użytkowników, zmieniając niektóre linie w kodzie. Dodałem komentarze w kodzie, w których potrzebne są zmiany.
Schemat obwodu i opis projektu systemu obecności odcisków palców
Obwód tego projektu systemu obecności opartego na odciskach palców, jak pokazano na powyższym schemacie, jest dość prosty. Posiada Arduino do sterowania całym procesem projektu, przycisk do wpisywania, usuwania, wybierania identyfikatorów i obecności, brzęczyk do alarmowania, diody LED do wskazywania oraz LCD do instruowania użytkownika i pokazania wynikowych komunikatów.
Jak pokazano na schemacie obwodu, przycisk jest bezpośrednio podłączony do pinu A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) Arduino w odniesieniu do masy, a żółta dioda LED jest podłączona do pinu cyfrowego D7 Arduino względem masy przez rezystor 1k. Rx i Tx modułu linii papilarnych są bezpośrednio podłączone do pinów szeregowych D2 i D3 (szeregowe oprogramowanie) Arduino. Zasilanie 5v służy do zasilania modułu linii papilarnych pobranego z płytki Arduino. Brzęczyk jest również podłączony do pinu A5. Wyświetlacz LCD 16x2 jest skonfigurowany w trybie 4-bitowym, a jego RS, EN, D4, D5, D6 i D7 są bezpośrednio podłączone do cyfrowych pinów D13, D12, D11, D10, D9 i D8 Arduino.
Objaśnienie kodu:
Kod systemu frekwencja linii papilarnych dla Arduino jest podane w kolejnych rozdziałach. Chociaż kod jest dobrze wyjaśniony komentarzami, omawiamy tutaj kilka ważnych części kodu. Wykorzystaliśmy bibliotekę linii papilarnych do połączenia modułu linii papilarnych z płytką Arduino.
Przede wszystkim dołączamy plik nagłówkowy i definiujemy pin wejściowy i wyjściowy oraz definiujemy makro i zadeklarowane zmienne. Następnie w funkcji konfiguracji podajemy kierunek zdefiniowanemu pinowi i uruchamiamy moduł LCD i czytnik linii papilarnych
Następnie musimy napisać kod do pobierania danych dotyczących obecności.
void setup () {opóźnienie (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (rejestracja, INPUT_PULLUP); pinMode (w górę, INPUT_PULLUP); pinMode (dół, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (mecz, INPUT_PULLUP); pinMode (buzzer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (buzzer, LOW); if (digitalRead (enroll) == 0) {digitalWrite (buzzer, HIGH); opóźnienie (500); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("Proszę czekać"); lcd.setCursor (0,1); lcd.print ("Pobieranie danych");
Po zakończeniu musimy napisać kod do usuwania danych dotyczących obecności z EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Proszę czekać"); lcd.setCursor (0,1); lcd.print ("Resetowanie….."); for (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); for (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Reset systemu"); opóźnienie (1000); }
Następnie uruchamiamy moduł odcisków palców, pokazując wiadomość powitalną na wyświetlaczu LCD, a także zainicjowany moduł RTC.
Następnie w funkcji pętli odczytaliśmy czas RTC i wyświetliliśmy go na LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Czas->"); lcd.print (now.hour (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Data->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Następnie czeka na wejście odcisków palców i porównanie przechwyconego obrazu ID z zapisanymi identyfikatorami. Jeśli dojdzie do zgodności, przejdź do następnego kroku. Sprawdzam również rejestrację kluczy del
int wynik = getFingerprintIDez (); if (wynik> 0) {digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); opóźnienie (100); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (wynik); lcd.setCursor (0,1); lcd.print ("Proszę czekać…."); opóźnienie (1000); frekwencja (wynik); lcd.clear (); lcd.print ("Obecność"); lcd.setCursor (0,1); lcd.print ("Zarejestrowany"); opóźnienie (1000); digitalWrite (indFinger, HIGH); powrót; }
Podana funkcja void checkKeys () służy do sprawdzania, czy klawisz Enroll czy DEL jest wciśnięty czy nie i co zrobić po naciśnięciu. Jeśli naciśnięto klawisz ENROLL, wywoływana jest funkcja Enroll (), a następnie naciśnięcie klawisza DEL, a następnie funkcja delete () .
Funkcja void delet () służy do wprowadzania identyfikatora do usunięcia i wywołania funkcji uint8_t deleteFingerprint (uint8_t id) , która usunie palec z rekordów.
Podana funkcja służy do pobrania obrazu odcisków palców i przekształcenia ich w szablon oraz zapisania wybranego identyfikatora do pamięci modułu odcisków palców.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("identyfikator palca:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Umieść palec"); opóźnienie (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Podana funkcja służy do przechowywania czasu i daty obecności w przydzielonym slocie pamięci EEPROM
void attance (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; user = user1 ++; } else if (id == 2) {eepLoc = 210; user = user2 ++; } else if (id == 3)………….
Podana funkcja służy do pobierania danych z EEPROM i przesyłania ich do monitora szeregowego
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….