Obvod zámku hesla pomocí 4 × 4 klávesnice a Arduina

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto příspěvku zkonstruujeme obvod bezpečnostního zámku hesla, ke kterému lze přistupovat pomocí šestimístného hesla. Přesněji to je alfanumerické heslo.

Hardware pro tento projekt

Budeme využívat klávesnici 4x4, která se skládá z 0 až 9 desetinných hodnot, dvou speciálních znaků „#“ a „*“ a A až D abeced. Kombinaci těchto znaků lze použít jako heslo.



Arduino je mozek systému, relé je propojeno s Arduino pro aktivaci a deaktivaci, když je zadáno správné heslo. Zde se používají dvě kontrolky LED pro indikaci stavu systému zámku.

Pokud nejste obeznámeni s klávesnicí 4x4, přečtěte si můj předchozí článek, který je podrobně popsán základy maticové klávesnice 4x4



Navrhovaný projekt má docela minimalistický design hardwaru. Skládá se pouze z klávesnice, relé, arduina a několika LED diod, dokonce i noob v arduino to snadno zvládne.

Jedinou částí, která je v tomto projektu mírně obtížná, je kódování, nemusíte se bát, že kód je uveden v tomto projektu. Program by měl být napsán tak, aby byl bláznivý a žádný únosce nemohl hacknout systém.

Buďte však opatrní, pokud odhalíte hardware nebo hardware tohoto projektu je snadno přístupný, relé lze snadno hacknout. Udržujte tedy tento projekt v dobře chráněném podvozku.

Jak to funguje

Poznámka: K základně tranzistoru musí být připojen odpor omezující proud 4,7 K, který není na schématu zobrazen.

Nyní se podívejme, jak tento obvod bezpečnostního zámku Arduino funguje. Přečtěte si prosím pozorně níže uvedené pokyny, abyste mohli obvod provozovat.

Kruhový diagram

Okruh bezpečnostního zámku Arduino pomocí klávesnice 4x4

Zde jsou dvě ilustrace, jak propojit klávesnici a Arduino:

Výsledky testu bezpečnostního zámku Arduino

• Když je obvod zapnutý, vyžaduje heslo, které vidíte na sériovém monitoru (sériový monitor není povinný, ale může být použit pro účely testování).

• Zadejte heslo, které jste zadali v programu před jeho sestavením.

• Během stisknutí kláves bliká po dobu jedné desetiny sekundy zelená LED, což znamená, že uživatel stiskl některé tlačítko.

• Jakmile zadáte šestimístné heslo, stiskněte na klávesnici klávesu „D“, která funguje jako „Enter“. Pokud je vaše heslo správné, relé se aktivuje, rozsvítí se zelená LED.

• Chcete-li deaktivovat relé, stiskněte na klávesnici tlačítko „C“. Když je to hotové, zelená LED zhasne a relé se deaktivuje. Žádný jiný klíč nemůže deaktivovat relé.

• Pokud je zadání hesla uživatelem nesprávné, rozsvítí se červená LED a uživatel musí čekat 30 sekund na zadání dalšího pokusu. Po uplynutí 30 sekund červená LED zhasne a informuje uživatele, že systém je připraven získat vstup od uživatele.

• Když je relé deaktivováno po úspěšné aktivaci, je nutné znovu aktivovat relé, uživatel musí znovu zadat heslo a stisknout „D“.

Zde je zvláštní případ:

• Po zadání správného hesla se relé aktivuje a po úspěšné deaktivaci, když uživatel stiskne jedno nesprávné stisknutí klávesy (ne celé heslo), program rozpozná jako nesprávné heslo a uživatel musí počkat dalších 30 sekund. Pokud se jednalo o únosce, oddálí počet pokusů únosce.

• Je-li při prvním pokusu stisknuto správné stisknutí klávesy, umožňuje teprve poté zadat další klávesu. Toto je pouze pro první stisk klávesy a ne pro všechny následující stisknutí klávesy.

• Mottem výše vysvětleného konceptu je oddálit počet pokusů únosce.

Programový 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

}
}
jiný
{
jdi na výpis
}
NA:
key2 = keypad.waitForKey ()
if (key2 == pass [1])
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
{
z = 2
Serial.print ('*')
jdi B
}
}
jiný
{
jdi na výpis
}
B:
key3 = keypad.waitForKey ()
if (key3 == pass [2])
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
{
z = 3
Serial.print ('*')
přejděte na C.
}
}
jiný
{
jdi na výpis
}
C:
key4 = keypad.waitForKey ()
if (key4 == pass [3])
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
{
z = 4
Serial.print ('*')
jdi D
}
}
jiný
{
jdi na výpis
}
D:
key5 = keypad.waitForKey ()
if (key5 == pass [4])
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
{
z = 5
Serial.print ('*')
přejděte na E
}
}
jiný
{
jdi na výpis
}
JE:
key6 = keypad.waitForKey ()
if (key6 == projít [5])
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
{
z = 6
Serial.print ('*')
jdi ok
}
}
jiný
{
jdi na výpis
}
OK:
keyOK = keypad.waitForKey ()
if (keyOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (zelená, VYSOKÁ)
Serial.println ('')
Serial.println ('Relay Activated, Press' C 'to Deactivate.n')
}
jiný
{
Serial.println ('')
Serial.println ('Stiskněte' D 'pro vstup')
jdi ok
}
vypnuto:
offkey = keypad.waitForKey ()
if (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (zelená, NÍZKÁ)
Serial.println ('Relé deaktivováno.n')
jdi nahoru
}
jiný
{
Serial.println ('D' D 'D' Deactivaten ')
jdi pryč
}
výpis:
if (z == 0)
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
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 ('*')
chyba goto
}
if (z == 1)
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
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 ('*')
chyba goto
}
if (z == 2)
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
chyba goto
}
if (z == 3)
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
chyba goto
}
if (z == 4)
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
chyba goto
}
if (z == 5)
{
digitalWrite (zelená, VYSOKÁ)
zpoždění (100)
digitalWrite (zelená, NÍZKÁ)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
chyba goto
}
chyba:
Serial.println ('')
Serial.print ('Chybné heslo, počkejte 30 sekund.')
digitalWrite (červená, VYSOKÁ)
zpoždění (10 000)
zpoždění (10 000)
zpoždění (10 000)
digitalWrite (červená, NÍZKÁ)
jdi nahoru
}
// --------------------------------- Program vyvinutý R.Girishem --------- ----------------- //

POZNÁMKA: Nastavení hesla: char pass [] = '123ABC' // pouze šestimístné heslo (ne méně ani více)
Změňte „123ABC“ pomocí vlastního hesla v uvozovkách.

Ujistěte se, že heslo nastavené v programu je POUZE šestimístné, ne méně nebo více, ale přesně šestimístné. Jinak program nebude fungovat správně.

Máte-li jakékoli další pochybnosti ohledně vysvětleného obvodu bezpečnostního zámku hesla, neváhejte je zveřejnit prostřednictvím svých komentářů




Předchozí: Sunrise Sunset Simulator LED Circuit Další: Obvod ovladače motoru Bluetooth