Circuito di blocco di sicurezza con password utilizzando la tastiera 4 × 4 e Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post costruiremo un circuito di blocco della sicurezza della password, a cui è possibile accedere tramite una password di 6 cifre. Per essere più precisi è una password alfanumerica.

Hardware per questo progetto

Utilizzeremo la tastiera 4x4, che consiste di valori decimali da 0 a 9, due caratteri speciali '#' e '*' e alfabeti da A a D. La combinazione di questi caratteri può essere utilizzata come password.



Arduino è il cervello del sistema, un relè è interfacciato con Arduino per attivarlo e disattivarlo, quando viene comandata la password corretta. Due LED di segnalazione vengono utilizzati qui per indicare lo stato del sistema di blocco.

Se non hai familiarità con la tastiera 4x4, fai riferimento al mio precedente articolo, che ha discusso in modo esauriente basi della tastiera a matrice 4x4



Il progetto proposto ha un design hardware piuttosto minimalista. Consiste solo di una tastiera, un relè, un arduino e un paio di LED, anche un noob in arduino può farlo con facilità.

L'unica parte leggermente difficile in questo progetto è la codifica, non c'è bisogno di preoccuparsi che il codice sia dato in questo progetto. Il programma dovrebbe essere scritto in modo tale da essere infallibile e nessun dirottatore può hackerare il sistema.

Ma fai attenzione se esponi l'hardware o l'hardware di questo progetto è facilmente accessibile, il relè può essere violato con facilità. Quindi mantieni questo progetto in un telaio ben protetto.

Come funziona

Nota: un resistore limitatore di corrente 4.7K deve essere collegato alla base del transistor, che non è mostrato nel diagramma.

Ora vediamo come funziona questo circuito di blocco della sicurezza della password di Arduino, leggi attentamente le istruzioni fornite di seguito, al fine di far funzionare il circuito.

Schema elettrico

Circuito di blocco di sicurezza con password Arduino utilizzando la tastiera 4x4

Ecco le due illustrazioni su come interfacciare tastiera e Arduino:

Risultati del test del blocco di sicurezza della password di Arduino

• Quando il circuito è acceso, richiede la password, è possibile vedere sul monitor seriale (il monitor seriale non è obbligatorio ma può essere utilizzato a scopo di test).

• Immettere la password immessa nel programma prima di compilarlo.

• Mentre si premono i tasti, il LED verde lampeggia per un decimo di secondo, indicando che un tasto è stato premuto dall'utente.

• Dopo aver immesso la password di 6 cifre, premere 'D' sulla tastiera che funge da 'Invio'. Se la password è corretta, il relè si attiva, il LED verde si accende.

• Per disattivare il relè, premere 'C' sulla tastiera. Al termine, il LED verde si spegne e il relè viene disattivato. Nessun altro tasto può disattivare il relè.

• Se la password inserita dall'utente non è corretta, il LED rosso si accende e l'utente deve attendere 30 secondi per accedere al tentativo successivo. Trascorsi i 30 secondi, il LED rosso si spegne, informando l'utente che il sistema è pronto a ricevere input dall'utente.

• Quando il relè viene disattivato dopo l'attivazione riuscita, per riattivare il relè, l'utente deve inserire nuovamente la password e premere 'D'.

Ecco un caso speciale:

• Quando viene inserita la password corretta, il relè viene attivato e dopo la disattivazione riuscita, quando l'utente preme un tasto qualsiasi (non l'intera password), il programma riconosce come password errata e l'utente deve attendere altri 30 secondi. Se questo è stato un dirottatore, ritarderà il numero di tentativi effettuati dal dirottatore.

• Quando si preme il tasto corretto al primo tentativo, solo allora si consente di inserire il tasto successivo. Questo è solo per la prima pressione di un solo tasto e non per tutte le sequenze di tasti successive.

• Il motto del concetto sopra spiegato è quello di ritardare il numero di tentativi effettuati dal dirottatore.

Codice del programma:

//---------------------------------Program Developed by R.Girish--------------------------//
#include
const byte ROWS = 4
const byte COLS = 4
char pass[] = '123ABC' // 6 digit password only (no less or no more)
int OP=10
int green=12
int red=11
char key1
char key2
char key3
char key4
char key5
char key6
char dumpkey
char keyOK
char ok[]='D'
char offkey
char off[]='C'
int z
char keys[ROWS][COLS] =
{
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
}
byte rowPins[ROWS] = {6,7,8,9} //connect to the row pinouts of the keypad
byte colPins[COLS] = {2,3,4,5} //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS )
void setup()
{
Serial.begin(9600)
pinMode(OP,OUTPUT)
pinMode(green,OUTPUT)
pinMode(red,OUTPUT)
digitalWrite(OP,LOW)
}
void loop()
{
top:
Serial.println('')
Serial.println('[Press D = Enter]')
Serial.print('Enter the password: ')
key1=keypad.waitForKey()
if(key1 == pass[0])
{
digitalWrite(green,HIGH)
delay(100)
digitalWrite(green,LOW)
{
z=1
Serial.print('*')
goto A

}
}
altro
{
goto dump
}
PER:
key2 = keypad.waitForKey ()
if (key2 == pass [1])
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
{
z = 2
Serial.print ('*')
vai a B
}
}
altro
{
goto dump
}
B:
key3 = keypad.waitForKey ()
if (key3 == pass [2])
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
{
z = 3
Serial.print ('*')
vai a C
}
}
altro
{
goto dump
}
C:
key4 = keypad.waitForKey ()
if (key4 == pass [3])
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
{
z = 4
Serial.print ('*')
goto D
}
}
altro
{
goto dump
}
D:
key5 = keypad.waitForKey ()
if (key5 == pass [4])
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
{
z = 5
Serial.print ('*')
goto E
}
}
altro
{
goto dump
}
E:
key6 = keypad.waitForKey ()
if (key6 == pass [5])
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
{
z = 6
Serial.print ('*')
vai a ok
}
}
altro
{
goto dump
}
ok:
keyOK = keypad.waitForKey ()
if (keyOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (verde, ALTO)
Serial.println ('')
Serial.println ('Relay attivato, premere' C 'per disattivare.n')
}
altro
{
Serial.println ('')
Serial.println ('Premi' D 'per entrare')
vai a ok
}
spento:
offkey = keypad.waitForKey ()
if (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (verde, BASSO)
Serial.println ('Relay Deactivated.n')
vai in alto
}
altro
{
Serial.println ('Premi' C 'per disattivare')
andare via
}
discarica:
if (z == 0)
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto errore
}
se (z == 1)
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto errore
}
se (z == 2)
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto errore
}
se (z == 3)
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto errore
}
se (z == 4)
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto errore
}
se (z == 5)
{
digitalWrite (verde, ALTO)
ritardo (100)
digitalWrite (verde, BASSO)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto errore
}
errore:
Serial.println ('')
Serial.print ('Password errata, attendere 30 secondi.')
digitalWrite (rosso, ALTO)
ritardo (10000)
ritardo (10000)
ritardo (10000)
digitalWrite (rosso, BASSO)
vai in alto
}
// --------------------------------- Programma sviluppato da R.Girish --------- ----------------- //

NOTA: Per impostare la password: char pass [] = '123ABC' // solo password a 6 cifre (né meno né più)
Cambia '123ABC' con la tua password, tra virgolette.

Assicurati che la password impostata nel programma sia SOLO a 6 cifre, non di meno o non di più ma esattamente di 6 cifre. In caso contrario, il programma non funzionerà correttamente.

Se hai ulteriori dubbi sul circuito di blocco della sicurezza della password spiegato, sentiti libero di pubblicarli tramite i tuoi commenti




Precedente: Circuito LED Sunrise Sunset Simulator Avanti: Circuito del controller del motore Bluetooth