보안은 일상 생활에서 주요 관심사이며 디지털 잠금 은 이러한 보안 시스템의 중요한 부분이되었습니다. PIR 기반 보안 시스템, RFID 기반 보안 시스템, 레이저 보안 경보, 바이오 매트릭스 시스템 등과 같이 우리의 위치를 보호하기 위해 사용할 수있는 많은 유형의 기술이 있습니다. 지금도 스마트 폰을 사용하여 작동 할 수있는 디지털 잠금 장치가 있습니다. 다른 키를 유지해야하는 더 많은 필요, 단 하나의 스마트 폰으로 모든 잠금 장치를 작동 할 수 있습니다.이 개념은 사물 인터넷을 기반으로합니다.
이 프로젝트에서는 미리 정의 된 코드로만 잠금 해제 할 수있는 8051 Microcontorller를 사용 하는 간단한 전자 코드 잠금에 대해 설명했습니다. 잘못된 코드를 입력하면 시스템이 부저를 울려 경고합니다. Arduino를 사용하여 이미 디지털 잠금 장치를 만들었습니다.
작동 설명:
이 시스템은 주로 AT89S52 마이크로 컨트롤러, 키패드 모듈, 부저 및 LCD를 포함합니다. At89s52 마이크로 컨트롤러는 키패드 모듈에서 암호 가져 오기, 미리 정의 된 암호 비교, 부저 구동 및 LCD 디스플레이에 상태 전송과 같은 전체 프로세스를 제어합니다. 키패드는 마이크로 컨트롤러에 암호를 삽입하는 데 사용됩니다. 부저는 잘못된 암호를 표시하는 데 사용되며 LCD는 상태 또는 메시지를 표시하는 데 사용됩니다. 부저에는 NPN 트랜지스터를 사용하여 드라이버가 내장되어 있습니다.
구성품:
- 8051 마이크로 컨트롤러 (AT89S52)
- 4X4 키패드 모듈
- 부저
- 16x2 LCD
- 저항기 (1k, 10k)
- 풀업 저항 (10K)
- 커패시터 (10uf)
- 레드 LED
- 브레드 보드
- IC 7805
- 11.0592MHz 크리스탈
- 전원 공급
- 전선 연결
멀티플렉싱 기법을 사용하여 4X4 키패드 매트릭스에서 입력:
이 회로에서는 시스템에 암호를 입력하기 위해 키패드를 8051 마이크로 컨트롤러에 인터페이스하는 다중화 기술을 사용했습니다. 여기에서는 16 개의 키가있는 4x4 키패드를 사용합니다. 16 개의 키를 사용하려면 89s52에 연결하기 위해 16 개의 핀이 필요하지만 다중화 기술에서는 16 개의 키를 인터페이스하는 데 8 개의 핀만 사용하면됩니다. 따라서 키패드 모듈을 인터페이스하는 현명한 방법입니다.
멀티플렉싱 기술 은 입력 또는 암호를 제공하기 위해 마이크로 컨트롤러와 함께 사용되는 핀 수를 줄이는 매우 효율적인 방법입니다. 기본적으로이 기술은 두 가지 방식으로 사용됩니다. 하나는 행 스캔 이고 다른 하나는 열 스캔 입니다.
여기에서 행 스캔에 대해 설명하겠습니다.
먼저 키패드 모듈에 대해 8 핀을 정의해야합니다. 처음 4 개의 핀은 열이고 마지막 4 개의 핀은 행입니다.
행 스캔의 경우 데이터 또는 신호를 열 핀에 제공하고 해당 데이터 또는 신호를 행 핀에서 읽어야합니다. 이제 아래 데이터를 열 핀에 제공한다고 가정합니다.
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
그리고이 데이터를 행 핀에서 읽습니다 (기본적으로 행 핀은 풀업 저항으로 인해 HIGH입니다).
사용자가 키 번호 '1'을 누르면 R1이 HIGH를 LOW로 변경하면 R1 = 0을 의미합니다. 컨트롤러는 사용자가 키 '1'을 눌렀 음을 인식합니다. 그리고 LCD에 '1'을 출력하고 배열에 '1'을 저장합니다. 따라서 R1에서 HIGH에서 LOW 로의 변화는 컨트롤러가 Column 1에 해당하는 일부 키가 눌려 졌음을 이해하는 주요한 것입니다.
이제 사용자가 키 번호 '2'를 누르면 C1과 R1이 모두 이미 HIGH에 있으므로 R1은 HIGH로 유지됩니다. 따라서 변경 사항이 없으며 마이크로 컨트롤러가 열 1에서 아무것도 눌리지 않았 음을 이해합니다. 마찬가지로이 원칙은 다른 모든 핀에도 적용됩니다. 따라서이 단계에서 컨트롤러는 '1', '4', '7'및 '*'열 1의 키만 기다립니다.
이제 다른 열 (예: col 2)의 키를 추적하려면 열 핀에서 데이터를 변경해야합니다.
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
이 시간 컨트롤러는 열 2의 키인 '2', '5', '8'및 '0'만 기다립니다. 변경 (HIGH에서 LOW로)은 열 2 키를 누를 때만 발생하기 때문입니다. 열 1, 3 또는 4에서 아무 키나 누르면 이러한 열이 HIGH에 있고 행이 이미 HIGH에 있으므로 변경이 발생하지 않습니다.
따라서 C3 및 C4 열의 키도 한 번에 0으로 만들어 추적 할 수 있습니다. 여기에서 자세한 설명을 확인하십시오: Keypad Interfacing with 8051. 또한 논리를 올바르게 이해하려면 아래 코드 섹션을 참조하십시오.
회로 설명:
8051 을 사용 하는이 디지털 잠금 장치의 회로도는 아래에 나와 있으며 쉽게 이해할 수 있습니다. 키패드 모듈의 Column 핀은 P0.0, P0.1, P0.2, P0.3 핀에 직접 연결되고 Row 핀은 89s52 마이크로 컨트롤러의 포트 0의 P0.4, P0.5, P0.6, P0.7에 연결됩니다. 16x2 LCD는 4 비트 모드에서 89s52 마이크로 컨트롤러와 연결됩니다. 제어 핀 RS, RW 및 En은 핀 P1.0, GND 및 P1.2에 직접 연결됩니다. 그리고 데이터 핀 D4-D7은 89s52의 P1.4, P1.5, P1.6 및 P1.7 핀에 연결됩니다. 그리고 하나의 부저는 저항을 통해 핀 P2.6에 연결됩니다.
프로그램 설명:
프로그램에서 미리 정의 된 암호를 사용했으며,이 암호는 아래 코드에서 사용자가 정의 할 수 있습니다. 사용자가 시스템에 암호를 입력 할 때, 시스템은 사용자가 입력 한 암호를 프로그램 코드에 저장된 또는 미리 정의 된 암호와 비교합니다. 일치가 발생하면 LCD에 "Access Grated"가 표시되고 암호가 일치하지 않으면 LCD에 "Access Denied"가 표시되고 일정 시간 동안 부저음이 계속 울립니다. 여기에서는 string.h 라이브러리를 사용했습니다. 이 라이브러리를 사용하면 "strncmp"함수를 사용하여 두 문자열을 비교하거나 일치시킬 수 있습니다.
프로그램에서 먼저 헤더 파일을 포함하고 키패드 및 LCD에 대한 변수 및 입력 및 출력 핀을 정의합니다.
#포함
LCD 초기화, 문자열 인쇄, 명령 등 일부 LCD 기능과 함께 1 초 지연 생성 기능이 생성되었습니다. 코드에서 쉽게 찾을 수 있습니다. 8051과 LCD 인터페이스 및 기능에 대해서는이 문서를 확인하십시오.
그 후 메인 프로그램에서 LCD를 초기화 한 다음 키패드 () 함수를 사용하여 키패드에서 입력을 읽고 입력 키를 배열에 저장 한 다음 strncmp를 사용하여 미리 정의 된 배열 데이터와 비교합니다.
void main () {부저 = 1; lcd_init (); lcdstring ("전자 코드"); lcdcmd (0xc0); lcdstring ("잠금 시스템"); 지연 (400); lcdcmd (1); lcdstring ("회로 다이제스트"); 지연 (400); while (1) {i = 0; 키패드 (); if (strncmp (pass, "4201", 4) == 0)
입력 한 암호가 일치하면 accept () 함수가 호출됩니다.
void accept () {lcdcmd (1); lcdstring ("환영합니다"); lcdcmd (192); lcdstring ("비밀번호 수락"); 지연 (200); }
그리고 암호가 틀리면 wrong () 함수가 호출됩니다.
void wrong () {buzzer = 0; lcdcmd (1); lcdstring ("잘못된 패스 키"); lcdcmd (192); lcdstring ("PLZ 다시 시도"); 지연 (200); 부저 = 1; }
키패드 모듈의 입력 양식을 읽는 코드에서 아래의 키패드 기능을 확인하십시오.