Lösenordssäkerhetslåskrets med 4 × 4-knappsats och Arduino

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi konstruera en lösenordssäkerhetslåskrets, som kan nås med ett 6-siffrigt lösenord. För att vara mer exakt är det alfanumeriskt lösenord.

Maskinvara för detta projekt

Vi kommer att använda 4x4-knappsatsen, som består av 0 till 9 decimalvärden, två specialtecken '#' och '*' och A till D-alfabet. Kombinationen av dessa tecken kan användas som lösenord.



Arduino är hjärnan i systemet, ett relä är gränssnittet med Arduino för att aktivera och avaktivera, när rätt lösenord kommenderas. Två indikatorlampor används här för att indikera låssystemets status.

Om du inte känner till 4x4-knappsatsen, hänvisa till min tidigare artikel, som omfattande diskuterades grunderna för 4x4 matris tangentbord



Det föreslagna projektet har ganska minimalistisk hårdvarudesign. Det består bara av ett knappsats, relä, arduino och ett par lysdioder, även en noob i arduino kan göra det enkelt.

Den enda delen som är lite svår i detta projekt är kodningen, behöver inte oroa dig för att koden ges i detta projekt. Programmet bör skrivas på ett sådant sätt att det är dumt bevis och ingen kapare kan hacka systemet.

Men var försiktig om du exponerar hårdvaran eller hårdvaran i detta projekt är lättillgänglig, reläet kan hackas med lätthet. Så håll det här projektet i ett väl skyddat chassi.

Hur det fungerar

Obs! Ett strömbegränsningsmotstånd 4.7K måste anslutas till transistorns bas, vilket inte visas i diagrammet.

Låt oss nu se hur den här Arduino-säkerhetslåskretsen fungerar, läs instruktionerna nedan noggrant för att kunna hantera kretsen.

Kretsschema

Arduino lösenordsskyddslåskrets med 4x4-knappsats

Här är de två illustrationerna hur man gränssnitt tangentbord och Arduino:

Arduino lösenordssäkerhetslås Testresultat

• När kretsen är påslagen frågar den efter lösenord, du kan se på seriell bildskärm (seriell bildskärm är inte obligatorisk men kan användas för teständamål).

• Ange lösenordet som du angav i programmet innan du kompilerade det.

• Medan du trycker på knapparna blinkar den gröna lysdioden i en tiondels sekund, vilket indikerar att någon knapp trycks ned av användaren.

• När du har angett det sexsiffriga lösenordet trycker du på 'D' i knappsatsen som fungerar som 'Enter'. Om ditt lösenord är korrekt aktiveras reläet, den gröna lysdioden tänds.

• För att avaktivera reläet, tryck på “C” i knappsatsen. När detta är gjort, släcks den gröna lysdioden och reläet inaktiveras. Ingen annan knapp kan inaktivera reläet.

• Om lösenordet som användaren anger är felaktigt lyser den röda lysdioden och användaren måste vänta 30 sekunder för att gå in i nästa försök. När 30 sekunder är över slocknar den röda lysdioden och informerar användaren om att systemet är redo att få inmatning från användaren.

• När reläet är avaktiverat efter lyckad aktivering måste användaren ange lösenordet igen för att aktivera reläet igen och trycka på 'D'.

Här är ett specialfall:

• När rätt lösenord matas in aktiveras reläet och efter att avaktiveringen lyckats, när användaren träffar ett fel tangenttryckning (inte hela lösenordet), känner programmet igen som felaktigt lösenord och användaren måste vänta ytterligare 30 sekunder. Om detta var en kapare kommer det att fördröja antalet försök som kaparen gjort.

• När korrekt tangenttryckning trycks in vid första försöket, bara då kan du ange nästa knapp. Detta är endast för första tangenttryckning och inte för alla efterföljande tangenttryckningar.

• Mottoet för det ovan förklarade konceptet är att fördröja antalet försök som kaparen gjort.

Programkod:

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

}
}
annan
{
goto dump
}
TILL:
key2 = tangentbord.waitForKey ()
if (key2 == pass [1])
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
{
z = 2
Serial.print ('*')
goto B
}
}
annan
{
goto dump
}
B:
key3 = tangentbord.waitForKey ()
if (key3 == passera [2])
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
{
z = 3
Serial.print ('*')
till C
}
}
annan
{
goto dump
}
C:
key4 = tangentbord.waitForKey ()
if (key4 == pass [3])
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
{
z = 4
Serial.print ('*')
goto D
}
}
annan
{
goto dump
}
D:
key5 = tangentbord.waitForKey ()
if (key5 == passera [4])
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
{
z = 5
Serial.print ('*')
goto E
}
}
annan
{
goto dump
}
ÄR:
key6 = tangentbord.waitForKey ()
if (key6 == pass [5])
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
{
z = 6
Serial.print ('*')
går ok
}
}
annan
{
goto dump
}
ok:
keyOK = keypad.waitForKey ()
om (keyOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (grön, HÖG)
Serial.println ('')
Serial.println ('Relä aktiverat, tryck på' C 'för att avaktivera.n')
}
annan
{
Serial.println ('')
Serial.println ('Tryck' D 'för att gå in')
går ok
}
av:
offkey = tangentbord.waitForKey ()
if (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (grön, LÅG)
Serial.println ('Relä avaktiverat.n')
gå till toppen
}
annan
{
Serial.println ('Tryck' C 'för att avaktivera')
gå av
}
dumpa:
om (z == 0)
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
goto-fel
}
om (z == 1)
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
goto-fel
}
om (z == 2)
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
goto-fel
}
om (z == 3)
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
goto-fel
}
om (z == 4)
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
goto-fel
}
om (z == 5)
{
digitalWrite (grön, HÖG)
fördröjning (100)
digitalWrite (grön, LÅG)
Serial.print ('*')
dumpkey = tangentbord.waitForKey ()
Serial.print ('*')
goto-fel
}
fel:
Serial.println ('')
Serial.print ('Fel lösenord, vänta i 30 sekunder.')
digitalWrite (röd, HÖG)
fördröjning (10000)
fördröjning (10000)
fördröjning (10000)
digitalWrite (röd, LÅG)
gå till toppen
}
// --------------------------------- Program utvecklat av R.Girish --------- ----------------- //

NOTERA: För att ställa in lösenord: char pass [] = '123ABC' // Endast 6-siffrigt lösenord (inte mindre eller inget mer)
Ändra “123ABC” med ditt eget lösenord, inuti citattecken.

Se till att lösenordet som ställts in i programmet är ENDAST 6-siffrigt, inte mindre eller inte mer men exakt 6-siffrigt. Annars fungerar inte programmet korrekt.

Om du har några ytterligare tvivel angående den förklarade lösenordssäkerhetslåskretsen är du välkommen att skicka dem via dina kommentarer




Tidigare: Sunrise Sunset Simulator LED Circuit Nästa: Bluetooth Motor Controller Circuit