Схема за заключване на парола за защита с помощта на 4 × 4 клавиатура и Arduino

Опитайте Нашия Инструмент За Премахване На Проблемите





В този пост ще изградим верига за заключване на защитата с парола, която може да бъде достъпна чрез 6-цифрена парола. За да бъдем по-точни, това е буквено-цифрова парола.

Хардуер за този проект

Ще използваме клавиатура 4x4, която се състои от 0 до 9 десетични стойности, два специални символа „#“ и „*“ и азбуки A до D. Комбинацията от тези знаци може да се използва като парола.



Arduino е мозъкът на системата, релето е свързано с Arduino, за да се активира и деактивира, когато е зададена правилната парола. Тук са използвани два индикаторни светодиода за индикация на състоянието на заключващата система.

Ако не сте запознати с клавиатурата 4x4, моля, обърнете се към по-ранната ми статия, която обсъди подробно основи на матричната клавиатура 4x4



Предложеният проект има доста минималистичен хардуерен дизайн. Той просто се състои от клавиатура, реле, arduino и няколко светодиода, дори noob в arduino може да го изпълни с лекота.

Единствената част, която е малко трудна в този проект, е кодирането, не е нужно да се притеснявате, че кодът е даден в този проект. Програмата трябва да бъде написана по такъв начин, че да е глупава и никой похитител да не може да хакне системата.

Но бъдете внимателни, ако изложите хардуера или хардуерът на този проект е лесно достъпен, релето може да бъде хакнато с лекота. Така че дръжте този проект в добре защитено шаси.

Как работи

Забележка: Резистор за ограничаване на тока 4.7K трябва да бъде свързан към основата на транзистора, което не е показано на диаграмата.

Сега да видим как функционира тази верига за заключване на защитата с парола на Arduino, моля, прочетете внимателно инструкциите, дадени по-долу, за да управлявате веригата.

Електрическа схема

Верига за заключване на защитата на паролата Arduino с помощта на клавиатура 4x4

Ето двете илюстрации как да свързваме клавиатура и Arduino:

Резултати от теста за заключване на сигурността на паролата на Arduino

• Когато веригата е включена, тя иска парола, която можете да видите на серийния монитор (серийният монитор не е задължителен, но може да се използва за тестване).

• Въведете паролата, която сте въвели в програмата, преди да я съставите.

• Докато натискате клавишите, зеленият светодиод мига за една десета от секундата, което показва, че някой клавиш е натиснат от потребителя.

• След като въведете 6-цифрената парола, натиснете „D“ на клавиатурата, която действа като „Enter“. Ако паролата ви е правилна, релето се активира, зеленият светодиод се включва.

• За да деактивирате релето, натиснете ‘C’ на клавиатурата. Когато това е направено, зеленият светодиод се изключва и релето се деактивира. Никой друг ключ не може да деактивира релето.

• Ако паролата, въведена от потребителя, е неправилна, тогава светва червеният светодиод и потребителят трябва да изчака 30 секунди, за да въведе следващия опит. Когато 30 секунди изтекат, червеният светодиод се изключва, информирайки потребителя, че системата е готова да получи вход от потребителя.

• Когато релето е деактивирано след успешно активиране, за да активира релето отново, потребителят трябва отново да въведе паролата и да натисне „D“.

Ето един специален случай:

• Когато се въведе правилната парола, релето се активира и след успешното деактивиране, когато потребителят натисне някое грешно натискане на клавиш (не цялата парола), програмата разпознава като неправилна парола и потребителят трябва да изчака още 30 секунди. Ако това беше похитител, това ще забави броя на опитите, извършени от похитителя.

• Когато при първия опит се натисне правилно натискане на клавиш, само тогава позволява да се влезе в следващия клавиш. Това е само за първо натискане на клавиш, а не за всички последователни натискания на клавиши.

• Мотото на горната обяснена концепция е да се забави броят на опитите, извършени от похитителя.

Код на програмата:

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

}
}
друго
{
отидете да зарежете
}
ДА СЕ:
key2 = keypad.waitForKey ()
ако (key2 == pass [1])
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
{
z = 2
Serial.print ('*')
отидете на B
}
}
друго
{
отидете да зарежете
}
Б:
key3 = keypad.waitForKey ()
ако (key3 == pass [2])
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
{
z = 3
Serial.print ('*')
отидете на C
}
}
друго
{
отидете да зарежете
}
° С:
key4 = keypad.waitForKey ()
ако (key4 == пас [3])
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
{
z = 4
Serial.print ('*')
отидете на D
}
}
друго
{
отидете да зарежете
}
Д:
key5 = keypad.waitForKey ()
ако (key5 == пропуск [4])
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
{
z = 5
Serial.print ('*')
отидете на E
}
}
друго
{
отидете да зарежете
}
ИС:
key6 = keypad.waitForKey ()
ако (key6 == пас [5])
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
{
z = 6
Serial.print ('*')
отиди добре
}
}
друго
{
отидете да зарежете
}
Добре:
keyOK = keypad.waitForKey ()
ако (keyOK == добре [0])
{
digitalWrite (OP, HIGH)
digitalWrite (зелено, ВИСОКО)
Serial.println ('')
Serial.println („Реле активирано, натиснете„ C “, за да деактивирате.n“)
}
друго
{
Serial.println ('')
Serial.println („Натиснете„ D “, за да влезете“)
отиди добре
}
изключено:
offkey = keypad.waitForKey ()
ако (изключен == изключен [0])
{
digitalWrite (OP, LOW)
digitalWrite (зелено, НИСКО)
Serial.println ('Реле деактивирано.n')
отидете отгоре
}
друго
{
Serial.println („Натиснете„ C “, за да деактивирате“)
тръгвам
}
изхвърляне:
ако (z == 0)
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
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 ('*')
отидете грешка
}
ако (z == 1)
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
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 ('*')
отидете грешка
}
ако (z == 2)
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
отидете грешка
}
ако (z == 3)
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
отидете грешка
}
ако (z == 4)
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
отидете грешка
}
ако (z == 5)
{
digitalWrite (зелено, ВИСОКО)
забавяне (100)
digitalWrite (зелено, НИСКО)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
отидете грешка
}
грешка:
Serial.println ('')
Serial.print („Грешна парола, изчакайте 30 секунди.“)
digitalWrite (червено, ВИСОКО)
забавяне (10000)
забавяне (10000)
забавяне (10000)
digitalWrite (червено, НИСКО)
отидете отгоре
}
// --------------------------------- Програма, разработена от R.Girish --------- ----------------- //

ЗАБЕЛЕЖКА: За задаване на парола: char pass [] = '123ABC' // само 6-цифрена парола (не по-малко или не повече)
Променете “123ABC” със собствената си парола, в кавичка.

Уверете се, че паролата, зададена в програмата, е САМО 6-цифрена, не по-малко или не повече, но точно 6-цифрена. В противен случай програмата няма да функционира правилно.

Ако имате някакви допълнителни съмнения относно обяснената схема за заключване на защитата с парола, моля не се колебайте да ги публикувате чрез вашите коментари




Предишна: Светодиодна верига на Sunrise Simulator Simulator Напред: Bluetooth верига на моторния контролер