Jelszóbiztonsági zár áramkör 4 × 4 billentyűzettel és Arduino-val

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben egy jelszóval ellátott biztonsági zár áramkört fogunk létrehozni, amelyhez 6 jegyű jelszóval lehet hozzáférni. Pontosabban alfa-numerikus jelszó.

Hardver ehhez a projekthez

4x4-es billentyűzetet fogunk használni, amely 0–9 tizedesértékből, két speciális karakterből álló „#” és „*”, valamint A – D ábécéből áll. Ezeknek a karaktereknek a kombinációja használható jelszóként.



Az Arduino a rendszer agya, egy relé kapcsolódik az Arduino-hoz az aktiváláshoz és deaktiváláshoz, amikor a helyes jelszót parancsolják. Két jelzőlámpát használunk itt a zárrendszer állapotának jelzésére.

Ha még nem ismeri a 4x4-es kezelőt, olvassa el korábbi cikkemet, amely átfogóan tárgyalta a 4x4-es mátrix billentyűzet alapjai



A javasolt projekt meglehetősen minimalista hardveres kialakítású. Csak egy billentyűzetből, reléből, arduino-ból és néhány LED-ből áll, még az arduino-ban lévő noob is könnyedén meg tudja valósítani.

Az egyetlen, ami kissé nehéz ebben a projektben, az a kódolás, nem kell aggódnia, hogy a kódot ebben a projektben adják meg. A programot úgy kell megírni, hogy bolondbiztos legyen, és egyetlen gépeltérítő sem tudja feltörni a rendszert.

De légy óvatos, ha kiteszed a hardvert vagy a projekt hardvere könnyen hozzáférhető, a relét könnyedén feltörhetjük. Tehát tartsa ezt a projektet jól védett alvázban.

Hogyan működik

Megjegyzés: A tranzisztor aljához egy 4.7K áramkorlátozó ellenállást kell csatlakoztatni, amelyet a diagram nem mutat be.

Most nézzük meg, hogyan működik ez az Arduino jelszóval ellátott biztonsági zár áramkör, kérjük, olvassa el figyelmesen az alábbi utasításokat az áramkör működtetése érdekében.

Kördiagramm

Arduino jelszavas biztonsági zár áramkör 4x4-es billentyűzettel

A billentyűzet és az Arduino interfészének két illusztrációja:

Arduino jelszó biztonsági zár teszt teszt eredményei

• Ha az áramkör be van kapcsolva, akkor jelszót kér, amelyet a soros monitoron láthat (a soros monitor nem kötelező, de tesztelésre használható).

• A fordítás előtt írja be a programban megadott jelszót.

• Amíg lenyomja a gombokat, a zöld LED villog egy tized másodpercig, jelezve, hogy a felhasználó megnyomott valamilyen gombot.

• Miután megadta a 6 jegyű jelszót, nyomja meg a „D” gombot a billentyűzeten, amely „Enter” néven működik. Ha a jelszava helyes, a relé aktiválódik, a zöld LED kigyullad.

• A relé kikapcsolásához nyomja meg a „C” gombot a kezelőn. Ha ez megtörtént, a zöld LED kikapcsol és a relé kikapcsol. Semmilyen más kulcs nem tudja kikapcsolni a relét.

• Ha a felhasználó nem megfelelő jelszót adott meg, akkor a piros LED kigyullad, és a felhasználónak 30 másodpercet kell várnia a következő kísérletre. A 30 másodperc letelte után a piros LED kialszik, tájékoztatva a felhasználót arról, hogy a rendszer készen áll arra, hogy bemenetet kapjon a felhasználótól.

• Ha a relét a sikeres aktiválás után deaktiválják, a relé újbóli aktiválásához a felhasználónak újra meg kell adnia a jelszót, és nyomja meg a „D” gombot.

Itt van egy különleges eset:

• A helyes jelszó megadásakor a relé aktiválódik, és a sikeres deaktiválás után, amikor a felhasználó bármelyik rossz billentyűt lenyomja (nem teljes jelszót), a program hibás jelszónak ismeri fel, és a felhasználónak további 30 másodpercet kell várnia. Ha ez gépeltérítő volt, késlelteti az eltérítő által végrehajtott kísérletek számát.

• Ha az első próbálkozáskor megnyomja a megfelelő billentyűleütést, csak akkor engedi be a következő billentyűt. Ez csak az első billentyűleütésekre vonatkozik, és nem az összes egymást követő billentyűleütésre.

• A fent kifejtett koncepció mottója az, hogy késleltesse az eltérítő próbálkozásainak számát.

Program kód:

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

}
}
más
{
goto dump
}
NAK NEK:
key2 = billentyűzet.waitForKey ()
if (kulcs2 == passz [1])
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
{
z = 2
Serial.print ('*')
goto B
}
}
más
{
goto dump
}
B:
key3 = billentyűzet.waitForKey ()
if (kulcs3 == passz [2])
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
{
z = 3
Serial.print ('*')
goto C
}
}
más
{
goto dump
}
C:
key4 = billentyűzet.waitForKey ()
if (kulcs4 == passz [3])
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
{
z = 4
Serial.print ('*')
goto D
}
}
más
{
goto dump
}
D:
key5 = billentyűzet.waitForKey ()
if (kulcs5 == passz [4])
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
{
z = 5
Serial.print ('*')
goto E
}
}
más
{
goto dump
}
IS:
key6 = billentyűzet.waitForKey ()
if (kulcs6 == passz [5])
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
{
z = 6
Serial.print ('*')
megy rendben
}
}
más
{
goto dump
}
rendben:
keyOK = billentyűzet.waitForKey ()
if (kulcsOK == rendben [0])
{
digitalWrite (OP, HIGH)
digitalWrite (zöld, HIGH)
Serial.println ('')
Serial.println ('Relé aktiválva, nyomja meg a' C 'billentyűt a deaktiváláshoz.n')
}
más
{
Serial.println ('')
Serial.println ('Nyomja meg a' D 'gombot az belépéshez)
megy rendben
}
ki:
offkey = billentyűzet.waitForKey ()
if (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (zöld, LOW)
Serial.println ('Relé deaktiválva.n')
goto top
}
más
{
Serial.println ('Deaktiváláshoz nyomja meg a' C 'billentyűt)
menj ki
}
lerak:
ha (z == 0)
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, 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 ('*')
goto hiba
}
ha (z == 1)
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, 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 ('*')
goto hiba
}
ha (z == 2)
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto hiba
}
ha (z == 3)
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto hiba
}
ha (z == 4)
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto hiba
}
ha (z == 5)
{
digitalWrite (zöld, HIGH)
késés (100)
digitalWrite (zöld, LOW)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto hiba
}
hiba:
Serial.println ('')
Serial.print ('Helytelen jelszó, várjon 30 másodpercet.')
digitalWrite (piros, HIGH)
késés (10000)
késés (10000)
késés (10000)
digitalWrite (piros, LOW)
goto top
}
// --------------------------------- A programot R.Girish fejlesztette ki --------- ----------------- //

JEGYZET: Jelszó beállítása: char pass [] = '123ABC' // csak 6 jegyű jelszó (nem kevesebb vagy nem több)
Változtassa meg a „123ABC” szót saját jelszavával, idézőjelben.

Győződjön meg arról, hogy a programban megadott jelszó CSAK 6 jegyű, nem kevesebb vagy nem több, de pontosan 6 jegyű. Ellenkező esetben a program nem fog megfelelően működni.

Ha további kétségei vannak a magyarázott jelszóval ellátott biztonsági zár áramkörével kapcsolatban, kérjük, nyugodtan tegye meg észrevételein keresztül




Előző: Sunrise Sunset Simulator LED áramkör Következő: Bluetooth motorvezérlő áramkör