La sicurezza è una delle principali preoccupazioni nella nostra vita quotidiana e le serrature digitali sono diventate una parte importante di questi sistemi di sicurezza. Uno di questi blocchi di codice digitale è imitato in questo progetto utilizzando la scheda Arduino e una tastiera a matrice.
Componenti
- Arduino
- Modulo tastiera
- Cicalino
- LCD 16x2
- Transistor BC547
- Resistenza (1k)
- Tagliere per il pane
- Energia
- Cavi di collegamento
In questo circuito abbiamo utilizzato la tecnica del multiplexing per interfacciare la tastiera per l'inserimento della password nel sistema. Qui stiamo usando la tastiera 4x4 che contiene 16 tasti. Se vogliamo usare 16 chiavi, allora abbiamo bisogno di 16 pin per la connessione ad arduino ma nella tecnica del multiplexing dobbiamo usare solo 8 pin per interfacciare 16 chiavi. In modo che sia un modo intelligente per interfacciare un modulo tastiera.
Tecnica di multiplexing: la tecnica di multiplexing è un modo molto efficiente per ridurre il numero di pin utilizzati con il microcontrollore per fornire input, password o numeri. Fondamentalmente questa tecnica viene utilizzata in due modi: uno è la scansione delle righe e l'altro è la scansione del colon. Ma in questo progetto basato su Arduino abbiamo utilizzato la libreria della tastiera, quindi non è necessario creare alcun codice multiplexing per questo sistema. Abbiamo solo bisogno di utilizzare la libreria della tastiera per fornire input.
Descrizione del circuito
Il circuito di questo progetto è molto semplice che contiene Arduino, modulo tastiera, buzzer e LCD. Arduino controlla i processi completi come prendere il modulo della tastiera dal modulo della password, confrontare le password, guidare il cicalino e inviare lo stato al display LCD. La tastiera viene utilizzata per acquisire la password. Il cicalino viene utilizzato per le indicazioni e il display LCD viene utilizzato per visualizzare lo stato oi messaggi su di esso. Il buzzer è pilotato utilizzando un transistor NPN.
I pin della colonna del modulo tastiera sono collegati direttamente ai pin 4, 5, 6, 7 e i pin Row sono collegati a 3, 2, 1, 0 di arduino uno. Un LCD 16x2 è collegato ad arduino in modalità 4 bit. I pin di controllo RS, RW ed En sono collegati direttamente al pin 13, GND e 12 di arduino. E il pin dati D4-D7 è collegato ai pin 11, 10, 9 e 8 di arduino. E un buzzer è collegato al pin 14 (A1) di arduino tramite un transistor NPN BC547.
Lavorando
Abbiamo utilizzato la EEPROM di arduino incorporata per salvare la password, quindi quando eseguiamo questo programma per la prima volta del circuito, leggiamo i dati spazzatura dalla EEPROM di arduino incorporata e la confrontiamo con la password di input e forniamo un messaggio sul display LCD che è Accesso negato perché la password non corrisponde. Per risolvere questo problema è necessario impostare per la prima volta una password predefinita utilizzando la programmazione fornita di seguito:
for (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); for (int j = 0; j <4; j ++) pass = EEPROM.leggi (j);
Questo imposterà la password "1234" su EEPROM di Arduino.
Dopo averlo eseguito la prima volta, dobbiamo rimuoverlo dal programma e scrivere di nuovo il codice su arduino ed eseguire. Ora il tuo sistema funzionerà correttamente. E per la seconda volta la password utilizzata è ora "1234". Ora puoi cambiarlo premendo il pulsante #, quindi inserisci la password corrente e quindi inserisci la nuova password.
Quando inserirai la tua password, il sistema confronterà la password inserita con quella password che è memorizzata nella EEPROM di arduino. Se si verifica una corrispondenza, il display LCD mostrerà "accesso concesso" e se la password è errata, il display visualizzerà "Accesso negato" e il cicalino emetterà un segnale acustico continuo per un po 'di tempo. Inoltre, il cicalino emette un segnale acustico una volta ogni volta che l'utente preme un pulsante qualsiasi dalla tastiera.
Descrizione della programmazione
Nel codice abbiamo utilizzato la libreria della tastiera per interfacciare la tastiera con arduino.
#includere
const byte ROWS = 4; // quattro righe const byte COLS = 4; // quattro colonne char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // connettersi alle piedinature delle righe del byte della tastiera colPins = {4, 5, 6, 7}; // connettersi alle piedinature della colonna della tastiera // inizializza un'istanza della classe NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Abbiamo incluso la libreria LCD per l'interfacciamento LCD e per l'interfacciamento EEPROM abbiamo incluso la libreria EEPROM.h., Quindi variabile inizializzata e pin definiti per i componenti.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); password char; char pass, pass1; int i = 0; char customKey = 0;
Quindi abbiamo inizializzato l'LCD e dato la direzione ai pin nella funzione di configurazione
void setup () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (buzzer, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("Elettronico"); lcd.setCursor (0,1); lcd.print ("Blocco tastiera"); ritardo (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Successivamente leggiamo la funzione keypad in loop
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {password = customKey; lcd.print (customKey); beep (); }
Quindi confronta la password con il salvataggio della password utilizzando il metodo di confronto delle stringhe.
se (i == 4) {ritardo (200); for (int j = 0; j <4; j ++) pass = EEPROM.leggi (j); if (! (strncmp (password, pass, 4))) {digitalWrite (led, HIGH); beep (); lcd.clear (); lcd.print ("Passkey Accepted"); ritardo (2000); lcd.setCursor (0,1); lcd.print ("#. Change Passkey"); ritardo (2000); lcd.clear (); lcd.print ("Inserisci passkey:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Questa è la funzione di modifica della password e la funzione del segnale acustico del cicalino
void change () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); if (chiave) {pass1 = chiave; lcd.print (chiave); void beep () {digitalWrite (buzzer, HIGH); ritardo (20); digitalWrite (buzzer, LOW); }