Circuit de blocare a securității parolei utilizând tastatura 4 × 4 și Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un circuit de blocare a securității parolei, care poate fi accesat printr-o parolă din 6 cifre. Pentru a fi mai precis, este o parolă alfanumerică.

Hardware pentru acest proiect

Vom folosi tastatura 4x4, care constă din 0 până la 9 valori zecimale, două caractere speciale ‘#’ și ‘*’ și alfabete de la A la D. Combinația acestor caractere poate fi utilizată ca parolă.



Arduino este creierul sistemului, un releu este interfațat cu Arduino pentru activare și dezactivare, atunci când parola corectă este comandată. Aici se utilizează două LED-uri indicatoare pentru a indica starea sistemului de blocare.

Dacă nu sunteți familiarizați cu tastatura 4x4, vă rugăm să consultați articolul meu anterior, care a discutat pe larg elementele de bază ale tastaturii cu matrice 4x4



Proiectul propus are un design hardware destul de minimalist. Acesta constă doar dintr-o tastatură, un releu, un arduino și câteva LED-uri, chiar și un noob din arduino îl poate realiza cu ușurință.

Singura parte care este ușor dificilă în acest proiect este codarea, nu trebuie să vă faceți griji că codul este dat în acest proiect. Programul ar trebui să fie scris în așa fel încât să fie o dovadă de nebunie și niciun pirat să nu poată hack sistemul.

Dar, aveți grijă dacă expuneți hardware-ul sau hardware-ul acestui proiect este ușor accesibil, releul poate fi spart cu ușurință. Așadar, păstrați acest proiect într-un șasiu bine protejat.

Cum functioneaza

Notă: Un rezistor de limitare a curentului 4.7K trebuie conectat la baza tranzistorului, ceea ce nu este prezentat în diagramă.

Acum, să vedem cum funcționează acest circuit de blocare a securității parolei Arduino, vă rugăm să citiți cu atenție instrucțiunile de mai jos, pentru a opera circuitul.

Diagrama circuitului

Circuitul de blocare a securității parolei Arduino utilizând tastatura 4x4

Iată cele două ilustrații despre interfața tastaturii și Arduino:

Rezultatele testului de blocare a securității parolei Arduino

• Când circuitul este pornit, solicită parolă, puteți vedea pe monitorul serial (monitorul serial nu este obligatoriu, dar poate fi utilizat în scopul testării).

• Introduceți parola pe care ați introdus-o în program înainte de a o compila.

• În timp ce apăsați tastele, LED-ul verde clipește o zecime de secundă, indicând faptul că o anumită tastă este apăsată de utilizator.

• Odată ce ați introdus parola din 6 cifre, apăsați „D” în tastatura care acționează ca „Enter”. Dacă parola dvs. este corectă, releul se activează, LED-ul verde se aprinde.

• Pentru a dezactiva releul, apăsați „C” din tastatură. Când se face acest lucru, LED-ul verde se stinge și releul se dezactivează. Nicio altă tastă nu poate dezactiva releul.

• Dacă parola introdusă de utilizator este incorectă, atunci LED-ul roșu se aprinde și utilizatorul trebuie să aștepte 30 de secunde pentru a introduce următoarea încercare. Când s-a terminat cea de-a 30-a secundă, LED-ul roșu se stinge, informând utilizatorul că sistemul este pregătit să primească de la utilizator.

• Când releul este dezactivat după activarea cu succes, pentru a activa din nou releul, utilizatorul trebuie să introducă din nou parola și să apese ‘D’.

Iată un caz special:

• Când este introdusă parola corectă, releul se activează și după dezactivarea cu succes, când utilizatorul lovește o singură apăsare de tastă greșită (nu o parolă întreagă), programul recunoaște parola incorectă și utilizatorul trebuie să aștepte încă 30 de secunde. Dacă acesta a fost un pirat, acesta va întârzia numărul de încercări efectuate de pirat.

• Când este apăsată apăsarea corectă a tastei la prima încercare, numai atunci permite introducerea tastei următoare. Aceasta este numai pentru prima apăsare de tastă și nu pentru toate apăsările de taste succesive.

• Motto-ul conceptului explicat mai sus este să întârzie numărul de încercări făcute de pirat.

Codul programului:

//---------------------------------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

}
}
altceva
{
go go dump
}
LA:
key2 = keypad.waitForKey ()
if (cheia2 == trece [1])
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
{
z = 2
Serial.print ('*')
du-te B
}
}
altceva
{
go go dump
}
B:
key3 = keypad.waitForKey ()
if (cheia3 == trece [2])
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
{
z = 3
Serial.print ('*')
mergeți la C
}
}
altceva
{
go go dump
}
C:
key4 = keypad.waitForKey ()
if (cheia4 == trece [3])
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
{
z = 4
Serial.print ('*')
merge la D
}
}
altceva
{
go go dump
}
D:
key5 = keypad.waitForKey ()
if (cheia5 == trece [4])
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
{
z = 5
Serial.print ('*')
du-te E
}
}
altceva
{
go go dump
}
ESTE:
key6 = keypad.waitForKey ()
if (cheia6 == trece [5])
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
{
z = 6
Serial.print ('*')
merg bine
}
}
altceva
{
go go dump
}
Bine:
keyOK = keypad.waitForKey ()
if (cheieOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (verde, HIGH)
Serial.println ('')
Serial.println („Releu activat, apăsați„ C ”pentru a dezactiva.n”)
}
altceva
{
Serial.println ('')
Serial.println („Apăsați„ D ”pentru a intra”)
merg bine
}
oprit:
offkey = keypad.waitForKey ()
if (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (verde, LOW)
Serial.println ('Releu dezactivat.n')
du-te sus
}
altceva
{
Serial.println („Apăsați„ C ”pentru a dezactiva”)
plec
}
depozitare:
dacă (z == 0)
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
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 ('*')
eroare
}
if (z == 1)
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
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 ('*')
eroare
}
if (z == 2)
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
eroare
}
if (z == 3)
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
eroare
}
if (z == 4)
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
eroare
}
if (z == 5)
{
digitalWrite (verde, HIGH)
întârziere (100)
digitalWrite (verde, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
eroare
}
eroare:
Serial.println ('')
Serial.print („Parolă greșită, așteptați 30 de secunde.”)
digitalWrite (roșu, HIGH)
întârziere (10000)
întârziere (10000)
întârziere (10000)
digitalWrite (roșu, LOW)
du-te sus
}
// --------------------------------- Program dezvoltat de R.Girish --------- ----------------- //

NOTĂ: Pentru a seta parola: char pass [] = '123ABC' // numai parola cu 6 cifre (nu mai puțin sau nu mai mult)
Schimbați „123ABC” cu propria parolă, între ghilimele.

Asigurați-vă că parola setată în program are DOAR 6 cifre, nu mai puțin sau nu mai mult, ci exact 6 cifre. În caz contrar, programul nu va funcționa corect.

Dacă aveți alte îndoieli cu privire la circuitul de blocare a securității parolei explicat, vă rugăm să nu ezitați să le postați prin comentariile dvs.




Precedent: Sunrise Sunset Simulator LED Circuit Următorul: Circuitul controlerului de motor Bluetooth