보안은 일상 생활에서 주요 관심사이며 디지털 잠금 은 이러한 보안 시스템의 중요한 부분이되었습니다. PIR 기반 보안 시스템, RFID 기반 보안 시스템, 레이저 보안 경보, 바이오 매트릭스 시스템 등과 같이 우리의 위치를 보호하는 데 사용할 수있는 많은 유형의 기술이 있습니다.
우리는 이전에 Arduino를 사용하고 8051을 사용하여 암호로 디지털 잠금을 구축했습니다. 여기서는 사용자 정의 암호로 Raspberry Pi를 사용 하여이 디지털 잠금 을 구축 할 것 입니다. 비밀번호를 설정하면 정확한 비밀번호로만 출입이 가능합니다.
Raspberry Pi에 익숙하지 않은 경우 Raspberry Pi를 배우기위한 일련의 자습서를 만들었습니다. 모든 기본 구성 요소 및 몇 가지 간단한 프로젝트와 인터페이스하여 시작할 수 있습니다.
사용 된 구성 요소:
- Raspberry Pi (부팅 된 SD 카드 포함)
- 키패드 모듈
- 부저
- 16x2 LCD
- 10k 냄비
- 10k 저항 팩 (풀업)
- LED
- 1k 저항기
- 브레드 보드
- 게이트로서의 CD / DVD 트롤리
- 전원 5V
- 모터 드라이버 L293D
- 12 볼트 배터리
- 전선 연결
멀티플렉싱을 사용하여 4x4 키패드를 Raspberry Pi와 연결:
이 회로에서는 멀티플렉싱 기법 을 사용 하여 시스템에 암호를 입력하기 위해 키패드를 인터페이스했습니다. 여기 에서는 16 개의 키가있는 4x4 다중 키패드를 사용 합니다. 일반적으로 16 개의 키를 사용하려면 Arduino에 연결하기 위해 16 개의 핀이 필요하지만 다중화 기술에서는 16 개의 키를 인터페이스하기 위해 8 개의 핀만 필요합니다. 따라서 키패드 모듈을 인터페이스하는 현명한 방법입니다. 8051을 사용하는이 Digital Lock에서 멀티플렉싱 기술과 그 작동에 대해 자세히 알아보십시오.
멀티플렉싱 기술은 입력 또는 암호 또는 숫자를 제공하기 위해 마이크로 컨트롤러와 함께 사용되는 핀 수를 줄이는 매우 효율적인 방법입니다. 기본적으로이 기술은 두 가지 방식으로 사용됩니다. 하나는 행 스캔이고 다른 하나는 열 스캔입니다. 우리가 사용하는 경우 키패드 라이브러리 (#INCLUDE
그러나이 프로젝트에서는 키패드 라이브러리를 사용하지 않고 동일한 키패드에 대해 짧은 코딩 방법을 구현했습니다. 아래 프로그래밍 섹션에서 확인하십시오.
회로 설명:
이 라즈베리 파이 디지털 도어록의 회로는 라즈베리 파이 3, 키패드 모듈, 부저, DVD / CD 트롤리를 게이트 및 LCD로 포함하는 매우 간단 합니다. 여기에서 Raspberry Pi는 키패드 모듈에서 비밀번호 가져 오기, 비밀번호 비교, 부저 구동, 게이트 열기 / 닫기, LCD 디스플레이로 상태 전송과 같은 전체 프로세스를 제어합니다. 키패드는 비밀번호 입력에 사용됩니다. 부저는 표시에 사용되며 내장 NPN 트랜지스터에 의해 구동됩니다. LCD는 상태 또는 메시지를 표시하는 데 사용됩니다.
키패드 모듈의 Column 핀은 GPIO 핀 22, 23, 24, 25에 직접 연결되고 Row 핀은 Raspberry Pi의 wringPi 핀 21, 14, 13, 12에 연결됩니다. 16 × 2의 LCD는 4 비트 모드 라즈베리 파이로 접속된다. LCD의 제어 핀 RS, RW 및 En은 GPIO 핀 11, GND 및 10에 직접 연결됩니다. 데이터 핀 D4-D7은 GPIO 핀 6, 15, 4 및 1 에 연결됩니다. 하나의 부저 는 GPIO 핀 8에 연결됩니다. 모터 드라이버 L293D 는 Raspberry Pi의 GPIO 핀 28 및 29에 연결됩니다. 12 볼트 배터리가 접지에 대한 L293D의 핀 (8)에 접속된다.
작동 설명:
이 프로젝트의 작업은 간단합니다. 사용자가 Raspberry Pi에서 코드를 실행하면 LCD에 환영 메시지가 표시되고 "A- Input Password"와 두 번째 줄에 B- Change Passkey "가 표시됩니다. 이제 사용자는 키패드에서 A와 B를 눌러 선택을 할 수 있습니다.
이제 사용자가 게이트를 열려면 키패드에서 'A'를 눌러야합니다. 그러면 시스템에서 암호를 요청합니다. 기본 비밀번호는“1234”입니다. 이제 사용자는 암호를 입력해야하며이 시스템은 암호가 유효한지 여부를 확인합니다.
1. 사용자가 올바른 비밀번호를 입력하면 시스템이 게이트를 엽니 다.
2. 사용자가 잘못된 암호를 입력하면 시스템은 신호음을 울리도록 부저에 명령을 보내고 LCD에 "액세스 거부"를 표시합니다.
이제 사용자가 암호를 변경하기를 원하고 키패드에서 'B'를 눌러야한다고 가정하면 사용자는 "현재 암호"또는 "현재 암호"를 묻는 메시지가 표시됩니다. 이제 사용자는 현재 암호를 입력 한 다음 시스템이 올바른지 확인하고 주어진 작업 중 하나를 수행해야합니다.
1. 사용자가 올바른 암호를 입력하면 시스템이“새 암호”를 요청하고 이제 사용자는 새 암호를 입력하여 암호를 변경할 수 있습니다.
2. 사용자가 잘못된 암호를 입력하면 시스템이 부저를 울리고 LCD에“Wrong Password:”가 표시됩니다.
이제 사용자는 암호를 변경하기 위해 전체 프로세스를 다시 반복해야합니다.
기본적으로 게이트를 열고 닫는 것은 모터를 시계 방향과 반 시계 방향으로 돌려 문을 열고 닫는 것입니다. 작은 프로젝트의 경우 DC 모터를 추가하여 문을 열고 닫을 수 있습니다. 서보 또는 스테퍼 모터를 사용할 수도 있지만 그에 따라 코드를 변경해야합니다.
또한 CD 트롤리 대신 적절한 전자 도어 잠금 장치 (온라인에서 쉽게 구할 수 있음)를 사용할 수 있습니다. Lock (개방 회로)에 전류가 흐르지 않을 때 Door를 잠긴 상태로 유지하는 전자 자석이 있으며, 전류가 흐르면 Lock이 해제되고 Door가 열릴 수 있습니다. 그에 따라 코드가 변경되며 공유 프로젝트 검토도 확인하십시오: Arduino RFID Door Lock
프로그래밍 설명:
프로그래밍은 Arduino와 매우 유사합니다. Arduino 함수는 클래스를 사용하지만 여기서는 클래스없이 c 프로그래밍을 사용하여이 코드를 수행했습니다. GPIO 용 wirePi 라이브러리 도 설치했습니다.
이제 먼저 필요한 라이브러리를 포함시킨 다음 LCD, 버저, LED 및 모터에 대한 핀을 정의해야합니다.
#포함
키패드의 행 및 열에 대한 핀을 정의하고 암호 및 키패드 번호를 저장하기위한 배열을 정의한 후.
숯불 패스; char pass1 = { '1', '2', '3', '4'}; int n = 0; 문자 행 = {21, 14, 13, 12}; char col = {22, 23, 24, 25}; char num = {{ '1', '2', '3', 'A'}, { '4', '5', '6', 'B'}, { '7', '8', ' 9 ','C '}, {'* ','0 ','# ','D '}};
그 후 LCD 구동을위한 몇 가지 기능을 작성했습니다.
기능 공극 lcdcmd는 LCD와 명령 전송에 사용되는 공극 기록 LCD에 데이터를 전송하기 위해 사용되는 기능.
기능 void print 는 LCD에 문자열을 보내는 데 사용됩니다.
void print (char * str) {while (* str) {write (* str); str ++; }}
기능 void setCursor 는 LCD에서 커서 위치를 설정하는 데 사용됩니다.
void setCursor (int x, int y) {int set = 0; if (y == 0) 세트 = 128 + x; if (y == 1) set = 192 + x; lcdcmd (세트); }
void clear () 함수 는 LCD를 지우는 데 사용되며 void buzzer () 는 부저음을 울리는 데 사용됩니다.
함수 void gate_open (), void gate_stop () 및 void gate_close () 는 게이트 (CD 트롤리) 구동에 사용됩니다.
void gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, HIGH); 지연 (2000); } void gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); 지연 (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); 지연 (2000); }
주어진 기능은 4 비트 모드에서 LCD를 초기화하는 데 사용됩니다.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
주어진 void 키패드 () 함수는 '짧은 방법'으로 Raspberry Pi와 키패드 모듈을 인터페이스하는 데 사용됩니다.
void 키패드 () {int i, j; int x = 0, k = 0; 지연 (2000); while (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {if (digitalRead (row) == 0) {setCursor (x, 1);…………………
아래 의 전체 코드 에서 모든 기능을 확인하십시오. 코드는 쉽고 자명합니다.