Passordsikkerhetslåsekrets med 4 × 4-tastatur og Arduino

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget skal vi konstruere en krets for sikkerhetslås for passord, som er tilgjengelig med et 6-sifret passord. For å være mer presis er det alfanumerisk passord.

Maskinvare for dette prosjektet

Vi skal bruke 4x4-tastaturet, som består av 0 til 9 desimalverdier, to spesialtegn '#' og '*' og A til D-alfabeter. Kombinasjonen av disse tegnene kan brukes som passord.



Arduino er hjernen til systemet, et relé er grensesnittet med Arduino for å aktivere og deaktivere når riktig passord blir kommandert. To indikator-LED-er brukes her for å indikere låsesystemets status.

Hvis du ikke er kjent med 4x4-tastaturet, kan du henvise til den tidligere artikkelen min, som omfattende diskuterte grunnleggende om 4x4 matrise tastatur



Det foreslåtte prosjektet har ganske minimalistisk maskinvaredesign. Den består bare av et tastatur, relé, arduino og et par lysdioder, til og med en noob i arduino kan oppnå det med letthet.

Den eneste delen som er litt vanskelig i dette prosjektet er kodingen, trenger ikke å bekymre deg for at koden er gitt i dette prosjektet. Programmet skal skrives på en slik måte at det er idiotsikkert og ingen kaprer kan hacke systemet.

Men vær forsiktig hvis du utsetter maskinvaren eller maskinvaren til dette prosjektet er lett tilgjengelig, stafetten kan enkelt hackes. Så hold dette prosjektet i et godt beskyttet chassis.

Hvordan det fungerer

Merk: En strømbegrensende motstand 4.7K må kobles til basen til transistoren, som ikke er vist i diagrammet.

La oss nå se hvordan denne Arduino-sikkerhetslåskretsen fungerer, les instruksjonene nedenfor nøye for å kunne betjene kretsen.

Kretsdiagram

Arduino passord sikkerhet lås krets ved hjelp av 4x4 tastatur

Her er de to illustrasjonene hvordan du kan grense tastatur og Arduino:

Testresultater for Arduino passordsikkerhetslås

• Når kretsen er slått på, ber den om passord, du kan se på seriell skjerm (seriell skjerm er ikke obligatorisk, men kan brukes til testformål).

• Skriv inn passordet du skrev inn i programmet før du kompilerte det.

• Mens du trykker på tastene, blinker den grønne lysdioden i en tidel av et sekund, noe som indikerer at noen taster trykkes av brukeren.

• Når du har angitt det 6-sifrede passordet, trykker du på 'D' på tastaturet som fungerer som 'Enter'. Hvis passordet ditt er riktig, blir reléet aktivert, den grønne lysdioden lyser.

• For å deaktivere reléet, trykk ‘C’ på tastaturet. Når dette er gjort, slås den grønne LED AV og reléet deaktiveres. Ingen andre nøkler kan deaktivere reléet.

• Hvis passordet som er angitt av brukeren er feil, lyser rød LED og brukeren må vente 30 sekunder på å gå inn i neste forsøk. Når 30 sekunder er over, slås den røde LED-lampen AV, og informerer brukeren om at systemet er klart til å få input fra brukeren.

• Når reléet er deaktivert etter vellykket aktivering, for å aktivere reléet igjen, må brukeren skrive inn passordet igjen og trykke ‘D’.

Her er et spesielt tilfelle:

• Når riktig passord er tastet inn, blir reléet aktivert, og etter vellykket deaktivering, når brukeren treffer et feil tastetrykk (ikke hele passordet), gjenkjenner programmet som feil passord, og brukeren må vente ytterligere 30 sekunder. Hvis dette var en kaprer, vil det forsinke antall forsøk gjort av kapreren.

• Når du trykker på riktig tastetrykk ved første forsøk, bare da tillater det å angi neste tast. Dette er bare for første tastetrykk og ikke for alle påfølgende tastetrykk.

• Mottoet for det ovenfor forklarte konseptet er å utsette antall forsøk fra kapreren.

Programkode:

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

}
}
ellers
{
gå til dump
}
TIL:
key2 = tastatur.waitForKey ()
hvis (key2 == pass [1])
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
{
z = 2
Serial.print ('*')
gå til B
}
}
ellers
{
gå til dump
}
B:
key3 = tastatur.waitForKey ()
hvis (key3 == pass [2])
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
{
z = 3
Serial.print ('*')
gå til C
}
}
ellers
{
gå til dump
}
C:
key4 = tastatur.waitForKey ()
hvis (key4 == pass [3])
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
{
z = 4
Serial.print ('*')
gå til D
}
}
ellers
{
gå til dump
}
D:
key5 = tastatur.waitForKey ()
hvis (key5 == pass [4])
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
{
z = 5
Serial.print ('*')
gå til E
}
}
ellers
{
gå til dump
}
ER:
key6 = tastatur.waitForKey ()
hvis (key6 == pass [5])
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
{
z = 6
Serial.print ('*')
går ok
}
}
ellers
{
gå til dump
}
ok:
keyOK = tastatur.waitForKey ()
hvis (keyOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (grønn, HØY)
Serial.println ('')
Serial.println ('Relé aktivert, trykk' C 'for å deaktivere.n')
}
ellers
{
Serial.println ('')
Serial.println ('Trykk' D 'for å gå inn')
går ok
}
av:
offkey = tastatur.waitForKey ()
hvis (offkey == av [0])
{
digitalWrite (OP, LOW)
digitalWrite (grønn, LAV)
Serial.println ('Relé Deactivated.n')
gå til toppen
}
ellers
{
Serial.println ('Trykk' C 'for å deaktivere')
gå av
}
dump:
hvis (z == 0)
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto feil
}
hvis (z == 1)
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto feil
}
hvis (z == 2)
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto feil
}
hvis (z == 3)
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto feil
}
hvis (z == 4)
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto feil
}
hvis (z == 5)
{
digitalWrite (grønn, HØY)
forsinkelse (100)
digitalWrite (grønn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto feil
}
feil:
Serial.println ('')
Serial.print ('Feil passord, vent i 30 sekunder.')
digitalWrite (rød, HØY)
forsinkelse (10000)
forsinkelse (10000)
forsinkelse (10000)
digitalWrite (rød, LAV)
gå til toppen
}
// --------------------------------- Program utviklet av R.Girish --------- ----------------- //

MERK: Slik angir du passord: char pass [] = '123ABC' // Bare 6-sifret passord (ikke mindre eller ikke mer)
Endre “123ABC” med ditt eget passord, inne i anførselstegnet.

Forsikre deg om at passordet som er angitt i programmet er KUN 6-sifret, ikke mindre eller ikke mer, men nøyaktig 6-sifret. Ellers fungerer ikke programmet riktig.

Hvis du er i tvil angående den forklarte kretsen for sikkerhetslås for passord, kan du gjerne legge dem ut via dine kommentarer




Forrige: Sunrise Sunset Simulator LED Circuit Neste: Bluetooth Motor Controller Circuit