Password Security Lock Circuit ved hjælp af 4 × 4 tastatur og Arduino

Password Security Lock Circuit ved hjælp af 4 × 4 tastatur og Arduino

I dette indlæg skal vi konstruere et adgangskodesikkerhedslåsekredsløb, som kan fås med en 6-cifret adgangskode. For at være mere præcis er det alfanumerisk kodeord.



Hardware til dette projekt

Vi skal bruge 4x4-tastatur, der består af 0 til 9 decimalværdier, to specialtegn '#' og '*' og A til D-alfabeter. Kombinationen af ​​disse tegn kan bruges som adgangskode.

Arduino er hjernen i systemet, et relæ er grænseflade med Arduino for at aktivere og deaktivere, når den korrekte adgangskode er kommanderet. To indikator-LED'er bruges her til at indikere låsesystemets status.





Hvis du ikke er fortrolig med 4x4-tastaturet, skal du henvise til min tidligere artikel, som udførligt diskuterede grundlæggende om 4x4 matrix tastatur

Det foreslåede projekt har ret minimalistisk hardware-design. Det består bare af et tastatur, relæ, arduino og et par lysdioder, selv en noob i arduino kan udføre det med lethed.



Den eneste del, der er lidt vanskelig i dette projekt, er kodningen, behøver ikke bekymre dig, koden er angivet i dette projekt. Programmet skal skrives på en sådan måde, at det er dårligt bevis, og ingen flykaprer kan hacke systemet.

Men vær forsigtig, hvis du udsætter hardwaren eller hardwaren i dette projekt er let tilgængelig, relæet kan hackes med lethed. Så hold dette projekt i et godt beskyttet chassis.

Hvordan det virker

Bemærk: En strømbegrænsende modstand 4.7K skal forbindes til transistorens bund, hvilket ikke er vist i diagrammet.

Lad os nu se, hvordan dette Arduino-sikkerhedslåsekredsløb fungerer, skal du læse instruktionerne nedenfor omhyggeligt for at betjene kredsløbet.

Kredsløbsdiagram

Arduino adgangskode sikkerhedslås kredsløb ved hjælp af 4x4 tastatur

Her er de to illustrationer, hvordan interface interface tastatur og Arduino:

Arduino adgangskodesikkerhedslås testresultater

• Når kredsløbet er tændt, beder det om adgangskode, du kan se på den serielle skærm (seriel skærm er ikke obligatorisk, men kan bruges til testformål).

• Indtast den adgangskode, du indtastede i programmet, før du kompilerede den.

• Mens du trykker på tasterne, blinker den grønne LED i en tiendedels sekund, hvilket indikerer, at brugeren trykker på en eller anden tast.

• Når du har indtastet det 6-cifrede kodeord, skal du trykke på 'D' i tastaturet, der fungerer som 'Enter'. Hvis dit kodeord er korrekt, aktiveres relæet, den grønne LED lyser.

• For at deaktivere relæet skal du trykke på 'C' i tastaturet. Når dette er gjort, slukkes den grønne LED og relæet deaktiveres. Ingen anden nøgle kan deaktivere relæet.

• Hvis den adgangskode, som brugeren indtaster, er forkert, lyser den røde LED og brugeren skal vente 30 sekunder på at gå ind i næste forsøg. Når det 30 sekund er overstået, slukker den røde LED og informerer brugeren om, at systemet er klar til at få input fra brugeren.

• Når relæet er deaktiveret efter vellykket aktivering, skal brugeren indtaste adgangskoden igen for at aktivere relæet igen og trykke på 'D'.

Her er et specielt tilfælde:

• Når den korrekte adgangskode indtastes, aktiveres relæet, og efter en vellykket deaktivering, når brugeren rammer et forkert tastetryk (ikke hele adgangskoden), genkender programmet som forkert adgangskode, og brugeren skal vente yderligere 30 sekunder. Hvis dette var en flykaprer, vil det forsinke antallet af forsøg, der blev udført af flykapreren.

• Når der trykkes på korrekt tastetryk ved første forsøg, er det kun derefter, der gør det muligt at indtaste næste tast. Dette er kun for første tastetryk og ikke for alle successive tastetryk.

• Mottoet for det ovenfor forklarede koncept er at forsinke antallet af flykaprernes forsøg.

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

}
}
andet
{
goto dump
}
TIL:
key2 = tastatur.waitForKey ()
hvis (key2 == bestå [1])
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
{
z = 2
Serial.print ('*')
goto B
}
}
andet
{
goto dump
}
B:
key3 = tastatur.waitForKey ()
hvis (key3 == bestå [2])
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
{
z = 3
Serial.print ('*')
til C
}
}
andet
{
goto dump
}
C:
key4 = tastatur.waitForKey ()
hvis (key4 == bestå [3])
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
{
z = 4
Serial.print ('*')
til D
}
}
andet
{
goto dump
}
D:
key5 = tastatur.waitForKey ()
hvis (key5 == bestå [4])
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
{
z = 5
Serial.print ('*')
gå til E
}
}
andet
{
goto dump
}
ER:
key6 = tastatur.waitForKey ()
hvis (key6 == bestå [5])
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
{
z = 6
Serial.print ('*')
går ok
}
}
andet
{
goto dump
}
Okay:
keyOK = tastatur.waitForKey ()
hvis (keyOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (grøn, HIGH)
Serial.println ('')
Serial.println ('Relæ aktiveret, tryk på' C 'for at deaktivere.n')
}
andet
{
Serial.println ('')
Serial.println ('Tryk' D 'for at komme ind')
går ok
}
af:
offkey = tastatur.waitForKey ()
hvis (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (grøn, LAV)
Serial.println ('Relæ deaktiveret.n')
goto top
}
andet
{
Serial.println ('Tryk' C 'for at deaktivere')
gå af
}
dump:
hvis (z == 0)
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, 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-fejl
}
hvis (z == 1)
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, 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-fejl
}
hvis (z == 2)
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto-fejl
}
hvis (z == 3)
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto-fejl
}
hvis (z == 4)
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto-fejl
}
hvis (z == 5)
{
digitalWrite (grøn, HIGH)
forsinkelse (100)
digitalWrite (grøn, LAV)
Serial.print ('*')
dumpkey = tastatur.waitForKey ()
Serial.print ('*')
goto-fejl
}
fejl:
Serial.println ('')
Serial.print ('Forkert adgangskode, vent i 30 sekunder.')
digitalWrite (rød, HØJ)
forsinkelse (10000)
forsinkelse (10000)
forsinkelse (10000)
digitalWrite (rød, LAV)
goto top
}
// --------------------------------- Program udviklet af R.Girish --------- ----------------- //

BEMÆRK: Sådan indstilles adgangskode: char pass [] = '123ABC' // Kun 6-cifret adgangskode (ikke mindre eller ikke mere)
Skift “123ABC” med dit eget kodeord, inde i anførselstegn.

Sørg for, at den adgangskode, der er indstillet i programmet, KUN er 6-cifret, ikke mindre eller ikke mere, men nøjagtigt 6-cifret. Ellers fungerer programmet ikke korrekt.

Hvis du er i tvivl om det forklarede adgangskodesikkerhedslåsekredsløb, er du velkommen til at sende dem via dine kommentarer




Forrige: Sunrise Sunset Simulator LED Circuit Næste: Bluetooth Motor Controller Circuit