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
A billentyűzet és az Arduino interfészének két illusztrációja:
• 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