- Componenti richiesti
- Descrizione del progetto:
- Modulo FingerPrint:
- Funzionamento del sistema di presenza basato sulle impronte digitali
- Schema del circuito e descrizione del progetto del sistema di presenza delle impronte digitali
- Spiegazione del codice:
I sistemi di presenza sono sistemi comunemente usati per segnalare la presenza negli uffici e nelle scuole. Dalla marcatura manuale delle presenze ai registri delle presenze all'utilizzo di applicazioni high-tech e sistemi biometrici, questi sistemi sono migliorati in modo significativo. Nei nostri progetti precedenti, abbiamo coperto pochi altri progetti di sistemi elettronici di presenza utilizzando RFID e microcontrollore AVR, 8051 e Raspberry Pi. In questo progetto, abbiamo utilizzato il modulo fingerprint e Arduino per acquisire e conservare i dati e le registrazioni delle presenze. Utilizzando il sensore di impronte digitali, il sistema diventerà più sicuro per gli utenti. Le sezioni seguenti spiegano i dettagli tecnici per creare un sistema di presenza biometrico basato sulle impronte digitali utilizzando Arduino.
Componenti richiesti
- Arduino -1
- Modulo impronte digitali -1
- Pulsante - 4
- LED -1
- Resistenza 1K -2
- Resistenza da 2.2K -1
- Energia
- Cavi di collegamento
- Scatola
- Buzzer -1
- LCD 16x2 -1
- Tagliere -1
- Modulo RTC -1
Descrizione del progetto:
In questo circuito del sistema di rilevamento delle impronte digitali, abbiamo utilizzato il modulo del sensore di impronte digitaliper autenticare una persona o un dipendente vero prendendo il loro input dito nel sistema. Qui stiamo usando 4 pulsanti per registrare, Elimina, SU / Giù. I tasti ENROLL e DEL hanno tre funzioni. La chiave ENROLL viene utilizzata per l'iscrizione di una nuova persona nel sistema. Quindi, quando l'utente desidera registrare un nuovo dito, deve premere il tasto REGISTRAZIONE, quindi il display LCD chiede l'ID, dove l'utente desidera memorizzare l'immagine dell'impronta digitale. Ora se in questo momento l'utente non vuole procedere oltre, può premere nuovamente il tasto REGISTRAZIONE per tornare indietro. Questa volta il tasto ENROLL si comporta come il tasto Back, ovvero il tasto ENROLL ha sia la funzione di registrazione che quella di ritorno. Oltre alla chiave di registrazione, viene utilizzata anche per scaricare i dati di presenza sul monitor seriale. Allo stesso modo, il tasto DEL / OK ha anche la stessa doppia funzione come quando l'utente registra un nuovo dito,quindi deve selezionare l'ID del dito utilizzando altri due tasti, ovvero SU e GIÙ. Ora l'utente deve premere il tasto DEL / OK (questa volta questo tasto si comporta come OK) per procedere con l'ID selezionato. E il tasto Del viene utilizzato per ripristinare o eliminare i dati dalla EEPROM di Arduino.
Modulo FingerPrint:
Il modulo del sensore di impronte digitali acquisisce l'immagine dell'impronta digitale e quindi la converte nel modello equivalente e la salva nella sua memoria secondo l'ID selezionato da Arduino. Tutto il processo è comandato da Arduino come prendere un'immagine dell'impronta digitale, convertirla in modelli e archiviarla come ID ecc. Puoi controllare altri progetti utilizzando il modulo impronta digitale:
Sistema di sicurezza basato sulle impronte digitali
Macchina per il voto biometrico basato su impronte digitali
Qui abbiamo aggiunto un LED giallo che indica che il modulo di impronte digitali è pronto per acquisire un'immagine del dito. Un buzzer viene utilizzato anche per varie indicazioni. Arduino è il componente principale di questo sistema ed è responsabile del controllo dell'intero sistema.
Funzionamento del sistema di presenza basato sulle impronte digitali
Lavoro di questo progetto di sistema di presenza di impronte digitaliè abbastanza semplice. Prima di tutto, l'utente deve registrare le impronte digitali dell'utente con l'aiuto dei pulsanti. Per fare ciò, l'utente deve premere il tasto ENROLL e quindi il display LCD chiede di inserire l'ID per l'impronta digitale per salvarlo in memoria in base al nome dell'ID. Quindi ora l'utente deve inserire l'ID utilizzando i tasti SU / GIÙ. Dopo aver selezionato l'ID, l'utente deve premere il tasto OK (tasto DEL). Ora il display LCD chiederà di posizionare il dito sul modulo delle impronte digitali. Ora l'utente deve posizionare il dito sul modulo di impronte digitali e quindi il modulo acquisisce l'immagine del dito. Ora il display LCD dirà di rimuovere il dito dal modulo delle impronte digitali e di nuovo chiederà di posizionare di nuovo il dito. Ora l'utente deve mettere di nuovo il dito e il modulo prende un'immagine e la converte in modelli e la memorizza in base all'ID selezionato nella memoria del modulo di impronte digitali.A questo punto l'utente sarà registrato e potrà alimentare le presenze mettendo il dito sul modulo delle impronte digitali, con lo stesso metodo tutti gli utenti verranno registrati nel sistema.
Ora, se l'utente desidera rimuovere o eliminare qualsiasi ID o impronta digitale memorizzati, deve premere il tasto CANC. Una volta premuto il tasto di cancellazione, il display chiederà di selezionare l'ID da eliminare. Ora l'utente deve selezionare ID e premere il tasto OK (stesso tasto CANC). Ora il display LCD ti informerà che l'impronta digitale è stata eliminata correttamente.
Come funziona la presenza in questo progetto del sistema di presenza delle impronte digitali:
Ogni volta che l'utente posiziona il dito sul modulo dell'impronta digitale, il modulo dell'impronta digitale acquisisce l'immagine del dito e cerca se un ID è associato a questa impronta digitale nel sistema. Se viene rilevata l'ID dell'impronta digitale, il display LCD mostrerà la presenza registrata e allo stesso tempo il cicalino emetterà un segnale acustico e il LED si spegnerà fino a quando il sistema non sarà di nuovo pronto a ricevere l'input.
Insieme al modulo delle impronte digitali, abbiamo utilizzato anche un modulo RTC per l'ora e la data. L'ora e la data vengono eseguite continuamente nel sistema. Quindi Arduino prende l'ora e la data ogni volta che un vero utente posiziona il dito sull'impronta digitale e le salva nella EEPROM nello slot di memoria assegnato.
Qui abbiamo creato 5 spazi utente in questo sistema per 30 giorni. Premendo il pulsante RESET in Arduino e quindi la chiave di registrazione immediatamente sarà responsabile del download dei dati di presenza sul monitor seriale dalla memoria EEPROM di Arduino.
Gestione della memoria:
Abbiamo 1023 byte di memoria in Arduino UNO di cui 1018 byte per memorizzare i dati e abbiamo preso 5 dati di presenza degli utenti per 30 giorni. E ogni partecipazione registrerà l'ora e la data, quindi questo diventa dati a 7 byte.
Quindi la memoria totale richiesta è
5 * 30 * 7 = 1050 quindi qui abbiamo bisogno di più 32 byte
Ma se useremo 4 utenti, allora abbiamo richiesto
4 * 30 * 7 = 840
Qui abbiamo fatto questa dimostrazione del progetto prendendo la memoria di 5 utenti. In questo modo, non saremo in grado di memorizzare 32 byte o 5 record di presenza del 5 ° utente.
Puoi provarlo da 4 utenti modificando alcune righe nel codice. Ho inserito i commenti nel codice in cui sono necessarie le modifiche.
Schema del circuito e descrizione del progetto del sistema di presenza delle impronte digitali
Il circuito di questo progetto di sistema di presenza basato su impronte digitali, come mostrato nello schema sopra è abbastanza semplice. Dispone di Arduino per il controllo di tutto il processo del progetto, pulsante per la registrazione, l'eliminazione, la selezione degli ID e per la presenza, un cicalino per gli avvisi, LED per l'indicazione e LCD per istruire l'utente e mostrare i messaggi risultanti.
Come mostrato nello schema elettrico, un pulsante è direttamente collegato al pin A0 (ENROLL), A1 (DEL), A2 (SU), A3 (GIÙ) di Arduino rispetto alla massa e il LED giallo è collegato al pin digitale D7 di Arduino rispetto alla massa tramite una resistenza da 1k. Rx e Tx del modulo di impronte digitali collegati direttamente ai pin seriali D2 e D3 (software seriale) di Arduino. L'alimentazione 5v viene utilizzata per alimentare il modulo di impronte digitali preso dalla scheda Arduino. Un buzzer è anche collegato al pin A5. Un LCD 16x2 è configurato in modalità 4 bit e le sue RS, EN, D4, D5, D6 e D7 sono collegate direttamente al pin digitale D13, D12, D11, D10, D9 e D8 di Arduino.
Spiegazione del codice:
Il codice del sistema di presenza delle impronte digitali per arduino è fornito nelle sezioni successive. Sebbene il codice sia spiegato bene con i commenti, stiamo discutendo qui alcune parti importanti del codice. Abbiamo utilizzato la libreria di impronte digitali per interfacciare il modulo di impronte digitali con la scheda Arduino.
Prima di tutto, includiamo il file di intestazione e definiamo i pin di input e output e definiamo la macro e le variabili dichiarate. Dopodiché, nella funzione di configurazione, diamo la direzione al pin definito e iniziamo il modulo LCD e impronte digitali
Dopo di ciò, dobbiamo scrivere il codice per scaricare i dati di presenza.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (registrazione, INPUT_PULLUP); pinMode (su, INPUT_PULLUP); pinMode (giù, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (match, INPUT_PULLUP); pinMode (buzzer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (buzzer, LOW); if (digitalRead (iscriviti) == 0) {digitalWrite (buzzer, HIGH); ritardo (500); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("Attendere"); lcd.setCursor (0,1); lcd.print ("Downloding dei dati");
Dopodiché, dobbiamo scrivere il codice per cancellare i dati di presenza dalla EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Attendere"); lcd.setCursor (0,1); lcd.print ("Reseting….."); per (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 ("System Reset"); ritardo (1000); }
Dopo di ciò, iniziamo il modulo di impronte digitali, mostrando il messaggio di benvenuto su LCD e anche il modulo RTC avviato.
Dopo di ciò, in funzione loop, abbiamo letto l'ora RTC e visualizzata sul display LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Time->"); 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);
Successivamente, in attesa che l'impronta digitale prenda l'input e confronti l'ID dell'immagine acquisita con gli ID memorizzati. Se si verifica una corrispondenza, procedere con il passaggio successivo. E controllando anche la registrazione delle chiavi
int risultato = getFingerprintIDez (); if (risultato> 0) {digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); ritardo (100); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (risultato); lcd.setCursor (0,1); lcd.print ("Attendere…"); ritardo (1000); presenza (risultato); lcd.clear (); lcd.print ("Presenze"); lcd.setCursor (0,1); lcd.print ("Registrato"); ritardo (1000); digitalWrite (indFinger, HIGH); ritorno; }
Data la funzione void checkKeys () viene utilizzata per controllare che il tasto Enroll o DEL sia premuto o meno e cosa fare se premuto. Se viene premuto il tasto ENROLL , viene chiamata la funzione Enroll () e viene premuto il tasto DEL, viene chiamata la funzione delete () .
La funzione void delet () viene utilizzata per inserire l'ID da eliminare e chiamare la funzione uint8_t deleteFingerprint (uint8_t id) che eliminerà il finger dai record.
La funzione data viene utilizzata per acquisire immagini di impronte digitali e convertirle nel modello e salvarle anche tramite ID selezionato nella memoria del modulo di impronte digitali.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("finger ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Posiziona dito"); ritardo (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
La funzione data viene utilizzata per memorizzare l'ora e la data di presenza nello slot assegnato di EEPROM
void attendance (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; utente = utente1 ++; } altrimenti se (id == 2) {eepLoc = 210; utente = utente2 ++; } altrimenti se (id == 3)………….
La funzione data viene utilizzata per recuperare i dati dalla EEPROM e inviarli al monitor seriale
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 ++));………….