이 글에서는 6 자리 암호로 접근 할 수있는 암호 보안 잠금 회로를 구성 할 것입니다. 더 정확하게 말하면 영숫자 암호입니다.
“TV 리모컨 작동 원리 ”
이 프로젝트를위한 하드웨어
0 ~ 9 개의 십진수 값, 두 개의 특수 문자‘#’및‘*’및 A ~ D 알파벳으로 구성된 4x4 키패드를 사용하겠습니다. 이러한 문자의 조합을 암호로 사용할 수 있습니다.
Arduino는 시스템의 두뇌이며 릴레이는 Arduino와 인터페이스되어 올바른 암호가 명령 될 때 활성화 및 비활성화됩니다. 잠금 시스템의 상태를 표시하기 위해 여기에 두 개의 표시기 LED가 사용됩니다.
4x4 키패드에 익숙하지 않은 경우 포괄적으로 논의한 이전 기사를 참조하십시오. 4x4 매트릭스 키패드의 기본
제안 된 프로젝트는 매우 최소한의 하드웨어 디자인을 가지고 있습니다. 키패드, 릴레이, arduino 및 몇 개의 LED로 구성되며 arduino의 멍청한 사람도 쉽게 수행 할 수 있습니다.
이 프로젝트에서 약간 어려운 부분은 코딩뿐입니다.이 프로젝트에서 제공되는 코드는 걱정할 필요가 없습니다. 이 프로그램은 어리석은 증거이며 어떤 하이재커도 시스템을 해킹 할 수 없도록 작성되어야합니다.
단,이 프로젝트의 하드웨어를 노출하거나이 프로젝트의 하드웨어에 쉽게 접근 할 수 있다면 릴레이가 쉽게 해킹 될 수 있으니주의하세요. 따라서이 프로젝트를 잘 보호 된 섀시에 보관하십시오.
작동 원리
참고 : 전류 제한 저항 4.7K는 다이어그램에 표시되지 않은 트랜지스터의베이스에 연결되어야합니다.
이제이 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 회로 다음 : 블루투스 모터 컨트롤러 회로