- Components necessaris
- Descripció del Projecte:
- Mòdul FingerPrint:
- Funcionament del sistema d’assistència basat en empremta digital
- Diagrama del circuit i descripció del projecte de sistema d’assistència d’empremtes digitals
- Explicació del codi:
Els sistemes d’assistència són sistemes que s’utilitzen habitualment per marcar la presència a oficines i escoles. Des de marcar manualment l'assistència als registres d'assistència fins a utilitzar aplicacions d'alta tecnologia i sistemes biomètrics, aquests sistemes han millorat significativament. En els nostres projectes anteriors, hem tractat pocs altres projectes de sistemes d’assistència electrònica mitjançant microcontroladors RFID i AVR, 8051 i raspberry Pi. En aquest projecte, hem utilitzat el mòdul d’empremtes digitals i Arduino per agafar i guardar dades i registres d’assistència. En utilitzar el sensor d’empremtes digitals, el sistema serà més segur per als usuaris. A les seccions següents s’expliquen els detalls tècnics de la creació d’un sistema d’assistència biomètric basat en empremtes digitals mitjançant Arduino.
Components necessaris
- Arduino -1
- Mòdul d’empremta digital -1
- Polsador: 4
- LED -1
- Resistència 1K -2
- Resistència de 2,2K -1
- Potència
- Connexió de cables
- Caixa
- Buzzer -1
- LCD de 16 x 2 -1
- Taula de pa -1
- Mòdul RTC -1
Descripció del Projecte:
En aquest circuit del sistema d’assistència d’empremtes digitals, hem utilitzat el mòdul Sensor d’empremtes digitalsper autenticar una persona o un empleat de debò prenent les dades del sistema. Aquí fem servir 4 botons policials per registrar-nos, Suprimeix, AMUNT / A baix. La tecla ENROLL i DEL té funcions triples. La clau ENROLL s'utilitza per inscriure una nova persona al sistema. Per tant, quan l'usuari vol registrar un dit nou, ha de prémer la tecla ENROLL i, a continuació, el LCD demana la identificació, on l'usuari vol emmagatzemar la imatge de l'empremta digital. Ara bé, si en aquest moment l'usuari no vol continuar més, pot tornar a prémer la tecla ENROLL per tornar enrere. Aquesta vegada la tecla ENROLL es comporta com a tecla Enrere, és a dir, la tecla ENROLL té la funció d'inscripció i enrere. A més, la clau d'inscripció també s'utilitza per descarregar dades d'assistència a través del monitor sèrie. De la mateixa manera, la tecla DEL / OK també té la mateixa doble funció que quan l'usuari registra un dit nou,a continuació, ha de seleccionar l'identificador de dit mitjançant una altra tecla de dos, és a dir, AMUNT i ABAIX. Ara l'usuari ha de prémer la tecla DEL / OK (aquesta vegada es comporta com OK) per continuar amb l'identificador seleccionat. I la tecla Del s'utilitza per restablir o eliminar dades de l'EEPROM d'Arduino.

Mòdul FingerPrint:

El mòdul del sensor d’empremta digital captura la imatge d’impressió digital i la converteix en la plantilla equivalent i les guarda a la memòria segons Arduino seleccionat per l’identificador. Arduino mana tot el procés com prendre una imatge d’empremta digital, convertir-la en plantilles i emmagatzemar-la com a identificador, etc. Podeu consultar alguns projectes més mitjançant el mòdul d’empremta digital:
Sistema de seguretat basat en empremta digital
Màquina de vot biomètric basada en empremta digital
Aquí hem afegit un LED groc que indica que el mòdul d’empremtes digitals està preparat per fer una imatge del dit. També s’utilitza un timbre per a diverses indicacions. Arduino és el component principal d’aquest sistema, és responsable del control de tot el sistema.
Funcionament del sistema d’assistència basat en empremta digital
Funcionament d’aquest projecte de sistema d’assistència d’empremtes digitalsés bastant senzill. En primer lloc, l’usuari ha de registrar les empremtes digitals de l’usuari amb l’ajut de botons. Per fer-ho, l'usuari ha de prémer la tecla ENROLL i, a continuació, el LCD demana que introduïu l'identificador de l'empremta digital per desar-lo a la memòria pel nom de l'identificador. Per tant, ara l’usuari ha d’introduir l’identificador mitjançant les tecles AMUNT / BAIX. Després de seleccionar ID, l'usuari ha de prémer la tecla OK (tecla DEL). Ara el LCD us demanarà que col·loqueu el dit sobre el mòdul d’empremtes digitals. Ara l’usuari ha de col·locar el dit sobre el mòdul d’empremta digital i després el mòdul pren la imatge digital. Ara la pantalla LCD indicarà que heu de treure el dit del mòdul d’empremtes digitals i que tornareu a demanar que col·loqueu el dit. Ara l’usuari ha de tornar a posar el dit i el mòdul pren una imatge i la converteix en plantilles i l’emmagatzema mitjançant l’identificador seleccionat a la memòria del mòdul d’empremta digital.Ara l’usuari estarà registrat i podrà alimentar l’assistència posant el dit sobre el mòdul d’empremta digital. Mitjançant el mateix mètode, es registraran tots els usuaris al sistema.
Ara bé, si l'usuari vol eliminar o eliminar qualsevol identificació o empremta digital emmagatzemada, ha de prémer la tecla DEL. Un cop premuda la tecla d'esborrar, el LCD us demanarà que seleccioneu l'identificador que cal esborrar. Ara l'usuari ha de seleccionar ID i prémer la tecla D'acord (la mateixa tecla DEL). Ara, el LCD us indicarà que l’empremta digital s’ha suprimit correctament.

Com funciona l'assistència en aquest projecte de sistema d'assistència a empremtes digitals:
Sempre que l'usuari col·loca el dit sobre el mòdul d'empremtes digitals, el mòdul d'empremtes digitals captura la imatge del dit i busca si hi ha alguna identificació associada amb aquesta empremta digital al sistema. Si es detecta una identificació d'empremta digital, el LCD mostrarà l'assistència registrada i, al mateix temps, el zumbador emetrà un so i el LED s'apagarà fins que el sistema estigui a punt per tornar a introduir l'entrada.
Juntament amb el mòdul d’empremtes digitals, també hem utilitzat un mòdul RTC per a l’hora i la data. L’hora i la data s’executen contínuament al sistema. Per tant, Arduino pren la data i l’hora sempre que un usuari real col·loca el dit sobre l’empremta digital i el guarda a la EEPROM a la ranura de memòria assignada.
Aquí hem creat 5 espais d'usuari en aquest sistema durant 30 dies. En prémer el botó RESET a Arduino i, a continuació, la tecla d'inscripció serà responsable de descarregar les dades d'assistència a través del monitor sèrie des de la memòria Arduino EEPROM.
Gestió de la memòria:
Tenim 1023 bytes de memòria a Arduino UNO, dels quals tenim 1018 bytes per emmagatzemar dades i hem pres 5 dades d’assistència d’usuaris durant 30 dies. I cada assistència registrarà l'hora i la data, de manera que es converteixen en dades de 7 bytes.
Per tant, la memòria total necessària és
5 * 30 * 7 = 1050, de manera que aquí necessitem més 32 bytes
Però si farem servir 4 usuaris, és necessari
4 * 30 * 7 = 840
Aquí hem fet aquesta demostració del projecte agafant memòria de 5 usuaris. Per això, no podrem emmagatzemar 32 bytes o 5 registres d'assistència de la 5 ª usuari.
Podeu provar-ho per 4 usuaris canviant algunes línies de codi. He fet els comentaris al codi on calen els canvis.
Diagrama del circuit i descripció del projecte de sistema d’assistència d’empremtes digitals
El circuit d’aquest projecte de sistema d’assistència basat en empremtes digitals, tal com es mostra al diagrama anterior, és força senzill. Compta amb Arduino per controlar tot el procés del projecte, polsador per registrar-se, suprimir, seleccionar identificadors i assistència, un brunzidor per alertar, LEDs d’indicació i LCD per instruir l’usuari i mostrar els missatges resultants.

Com es mostra al diagrama del circuit, un polsador està connectat directament al pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) d’Arduino respecte a terra i el LED groc es connecta al pin digital D7 d'Arduino respecte a terra mitjançant una resistència de 1 k. Rx i Tx del mòdul d’empremta digital connectats directament al pin sèrie D2 i D3 (Software Serial) d’Arduino. El subministrament de 5v s’utilitza per alimentar el mòdul d’empremta digital extret de la placa Arduino. També es connecta un brunzidor al pin A5. Una pantalla LCD de 16x2 està configurada en mode de 4 bits i els seus RS, EN, D4, D5, D6 i D7 es connecten directament al pin digital D13, D12, D11, D10, D9 i D8 d’Arduino.
Explicació del codi:
El codi del sistema d’assistència d’empremtes digitals per a arduino es dóna a les seccions següents. Tot i que el codi s’explica bé amb comentaris, aquí estem discutint algunes parts importants del codi. Hem utilitzat la biblioteca d’empremtes digitals per a la interfície del mòdul d’ empremta digital amb la placa Arduino.
Primer de tot, incloem el fitxer de capçalera i defineix el pin d'entrada i sortida i definim la macro i les variables declarades. Després d'això, en la funció de configuració, donem direcció al pin definit i iniciem el mòdul LCD i l'empremta digital
Després d'això, hem d'escriure codi per descarregar dades d'assistència.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (inscripció, INPUT_PULLUP); pinMode (amunt, INPUT_PULLUP); pinMode (avall, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (coincidència, INPUT_PULLUP); pinMode (buzzer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (brunzidor, BAIX); if (digitalRead (enroll) == 0) {digitalWrite (brunzidor, ALT); retard (500); digitalWrite (brunzidor, BAIX); lcd.clear (); lcd.print ("Si us plau, espereu"); lcd.setCursor (0,1); lcd.print ("Dades Downloding");
Després, hem d’escriure codi per esborrar les dades d’assistència de l’EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Si us plau, espereu"); lcd.setCursor (0,1); lcd.print ("Restablint….."); per a (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); per a (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Restabliment del sistema"); retard (1000); }
Després d’ell, iniciem el mòdul d’empremta digital, mostrant el missatge de benvinguda a través del LCD i també el mòdul RTC iniciat.
Després, en funció de bucle, hem llegit l’hora RTC i l’hem mostrat a la pantalla LCD
bucle buit () {ara = rtc.now (); lcd.setCursor (0,0); lcd.print ("Temps->"); 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);
Després, espereu que l'empremta digital prengui l'entrada i compareu l'identificador de la imatge capturada amb els identificadors emmagatzemats. Si es produeix una coincidència, continueu amb el següent pas. I comprovant també les claus de registre
int result = getFingerprintIDez (); if (resultat> 0) {digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); retard (100); digitalWrite (brunzidor, BAIX); lcd.clear (); lcd.print ("ID:"); lcd.print (resultat); lcd.setCursor (0,1); lcd.print ("Si us plau, espereu…"); retard (1000); assistència (resultat); lcd.clear (); lcd.print ("Assistència"); lcd.setCursor (0,1); lcd.print ("Enregistrat"); retard (1000); digitalWrite (indFinger, HIGH); tornar; }
Donada la funció checkKeys () nul·la, s’utilitza per comprovar que es prem o no la tecla INSCRIPCIÓ o DEL i què fer si es prem. Si es prem la tecla ENROLL , es crida la funció Enroll () i es prem la tecla DEL, llavors es crida la funció delete () .
La funció void delet () s’utilitza per introduir l’identificador que se suprimeix i trucar a la funció uint8_t deleteFingerprint (uint8_t id) que eliminarà el dit dels registres.
La funció donada s’utilitza per fer una imatge d’empremta digital i convertir-la a la plantilla i guardar-la també mitjançant la identificació seleccionada a la memòria del mòdul d’empremta digital.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("identificació del dit:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Col·loca el dit"); endarreriment (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
La funció donada s'utilitza per emmagatzemar l'hora i la data d'assistència a la ranura assignada d'EEPROM
assistència nul·la (int id) {int usuari = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; usuari = usuari1 ++; } else if (id == 2) {eepLoc = 210; usuari = usuari2 ++; } else if (id == 3)………….
La funció donada s'utilitza per obtenir dades de l'EEPROM i enviar-les al monitor sèrie
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 ++));………….
