4 × 4 키패드 및 Arduino를 사용한 암호 보안 잠금 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 글에서는 6 자리 암호로 접근 할 수있는 암호 보안 잠금 회로를 구성 할 것입니다. 더 정확하게 말하면 영숫자 암호입니다.

이 프로젝트를위한 하드웨어

0 ~ 9 개의 십진수 값, 두 개의 특수 문자‘#’및‘*’및 A ~ D 알파벳으로 구성된 4x4 키패드를 사용하겠습니다. 이러한 문자의 조합을 암호로 사용할 수 있습니다.

Arduino는 시스템의 두뇌이며 릴레이는 Arduino와 인터페이스되어 올바른 암호가 명령 될 때 활성화 및 비활성화됩니다. 잠금 시스템의 상태를 표시하기 위해 여기에 두 개의 표시기 LED가 사용됩니다.

4x4 키패드에 익숙하지 않은 경우 포괄적으로 논의한 이전 기사를 참조하십시오. 4x4 매트릭스 키패드의 기본

제안 된 프로젝트는 매우 최소한의 하드웨어 디자인을 가지고 있습니다. 키패드, 릴레이, arduino 및 몇 개의 LED로 구성되며 arduino의 멍청한 사람도 쉽게 수행 할 수 있습니다.

이 프로젝트에서 약간 어려운 부분은 코딩뿐입니다.이 프로젝트에서 제공되는 코드는 걱정할 필요가 없습니다. 이 프로그램은 어리석은 증거이며 어떤 하이재커도 시스템을 해킹 할 수 없도록 작성되어야합니다.

단,이 프로젝트의 하드웨어를 노출하거나이 프로젝트의 하드웨어에 쉽게 접근 할 수 있다면 릴레이가 쉽게 해킹 될 수 있으니주의하세요. 따라서이 프로젝트를 잘 보호 된 섀시에 보관하십시오.

작동 원리

참고 : 전류 제한 저항 4.7K는 다이어그램에 표시되지 않은 트랜지스터의베이스에 연결되어야합니다.

이제이 Arduino 암호 보안 잠금 회로가 어떻게 작동하는지 살펴 보겠습니다. 회로를 작동하려면 아래 지침을주의 깊게 읽으십시오.

회로도

4x4 키패드를 사용하는 Arduino 암호 보안 잠금 회로

다음은 키보드와 Arduino를 인터페이스하는 방법에 대한 두 가지 그림입니다.

Arduino 암호 보안 잠금 테스트 결과

• 회로에 전원이 들어 오면 암호를 묻고 시리얼 모니터에서 확인할 수 있습니다 (시리얼 모니터는 필수는 아니지만 테스트 목적으로 사용할 수 있음).

• 컴파일하기 전에 프로그램에 입력 한 암호를 입력하십시오.

• 키를 누르는 동안 녹색 LED가 1/10 초 동안 깜박이며 사용자가 일부 키를 눌렀 음을 나타냅니다.

• 6 자리 비밀번호를 입력 한 후 'Enter'역할을하는 키패드에서 'D'를 누릅니다. 비밀번호가 정확하면 릴레이가 활성화되고 녹색 LED가 켜집니다.

• 릴레이를 비활성화하려면 키패드에서‘C’를 누릅니다. 이 작업이 완료되면 녹색 LED가 꺼지고 릴레이가 비활성화됩니다. 다른 키는 릴레이를 비활성화 할 수 없습니다.

• 사용자가 입력 한 비밀번호가 올바르지 않으면 빨간색 LED가 켜지고 사용자는 다음 시도를 입력하기 위해 30 초를 기다려야합니다. 30 초가 지나면 빨간색 LED가 꺼져 시스템이 사용자로부터 입력을받을 준비가되었음을 사용자에게 알립니다.

• 활성화 성공 후 릴레이가 비활성화 된 경우 릴레이를 다시 활성화하려면 사용자가 비밀번호를 다시 입력하고 '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 ()
if (key2 == pass [1])
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
{
z = 2
Serial.print ( '*')
B로 이동
}
}
그밖에
{
고토 덤프
}
비:
key3 = keypad.waitForKey ()
if (key3 == pass [2])
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
{
z = 3
Serial.print ( '*')
C로 이동
}
}
그밖에
{
고토 덤프
}
씨:
key4 = keypad.waitForKey ()
if (key4 == pass [3])
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
{
z = 4
Serial.print ( '*')
고토 D
}
}
그밖에
{
고토 덤프
}
디:
key5 = keypad.waitForKey ()
if (key5 == 통과 [4])
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
{
z = 5
Serial.print ( '*')
goto E
}
}
그밖에
{
고토 덤프
}
IS :
key6 = keypad.waitForKey ()
if (key6 == 통과 [5])
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
{
z = 6
Serial.print ( '*')
괜찮아
}
}
그밖에
{
고토 덤프
}
확인:
keyOK = 키패드 .waitForKey ()
if (keyOK == 확인 [0])
{
digitalWrite (OP, HIGH)
digitalWrite (녹색, HIGH)
Serial.println ( '')
Serial.println ( '릴레이 활성화 됨, 비활성화하려면'C '를 누르십시오 .n')
}
그밖에
{
Serial.println ( '')
Serial.println ( 'Enter'D '를 누르십시오')
괜찮아
}
떨어져서:
offkey = keypad.waitForKey ()
if (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (녹색, 낮음)
Serial.println ( '릴레이 비활성화 됨 .n')
맨 위로 이동
}
그밖에
{
Serial.println ( '비활성화하려면'C '를 누르십시오.)
떠나다
}
덤프:
if (z == 0)
{
digitalWrite (녹색, HIGH)
지연 (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 ( '*')
goto 오류
}
if (z == 1)
{
digitalWrite (녹색, HIGH)
지연 (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 ( '*')
goto 오류
}
if (z == 2)
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
goto 오류
}
if (z == 3)
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
goto 오류
}
if (z == 4)
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
goto 오류
}
if (z == 5)
{
digitalWrite (녹색, HIGH)
지연 (100)
digitalWrite (녹색, 낮음)
Serial.print ( '*')
dumpkey = keypad.waitForKey ()
Serial.print ( '*')
goto 오류
}
오류:
Serial.println ( '')
Serial.print ( '잘못된 비밀번호, 30 초간 기다립니다.')
digitalWrite (빨간색, 높음)
지연 (10000)
지연 (10000)
지연 (10000)
digitalWrite (빨간색, 낮음)
맨 위로 이동
}
//---------------------------------R.Girish가 개발 한 프로그램 --------- ----------------- //

노트: 비밀번호 설정 : char pass [] = '123ABC'// 6 자리 비밀번호 만 (적거나 더 이상 없음)
따옴표 안에있는 자신의 암호로 '123ABC'를 변경합니다.

프로그램에 설정된 암호가 6 자리로만되어 있는지 확인하십시오. 그 이하도 아니고 더도 아니고 정확히 6 자리 여야합니다. 그렇지 않으면 프로그램이 제대로 작동하지 않습니다.

설명 된 암호 보안 잠금 회로에 대해 더 궁금한 점이 있으면 의견을 통해 자유롭게 게시하십시오.




이전 : 일출 일몰 시뮬레이터 LED 회로 다음 : 블루투스 모터 컨트롤러 회로