산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

키패드와 LCD가 있는 Arduino 키리스 도어록 시스템

구성품 및 소모품

Arduino UNO
× 1
SparkFun 버튼 패드 4x4 - LED 호환
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
× 1
릴레이(일반)
× 1
9V 배터리(일반)
× 1
단일 회전 전위차계 - 10k 옴
× 1
저항 10k 옴
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

키패드 및 LCD가 있는 Arduino 키리스 도어록 시스템

0

0

알리 함자

이 프로젝트에서는 4X4 키패드를 사용하여 키를 입력하고 DC 잠금을 사용하여 문을 열거나 닫는 키리스 도어록 시스템을 만들 것입니다. 디스플레이에는 16X2 LCD가 사용됩니다.

필수 구성요소

이 프로젝트에 필요한 구성 요소는 다음과 같습니다.

<울>
  • 아두이노
  • 4X4 키패드
  • LCD
  • DC 잠금
  • 릴레이
  • 9V 배터리
  • 10k 전위차계
  • 220옴 저항기
  • 어떻게 작동합니까?

    키를 누를 때마다 이미 저장된 키와 일치합니다. 누른 키가 EEPROM에 저장된 초기 비밀번호 '1234'와 일치하면 잠금 장치가 열립니다. 비밀번호가 일치하지 않으면 LCD에 "액세스 거부됨"이 인쇄됩니다.

    '#' 키를 누르면 현재 비밀번호를 입력하라는 메시지가 표시되고 일치하면 새 비밀번호를 입력하라는 메시지가 표시되고 비밀번호가 변경됩니다.

    회로도

    먼저 4X4 키패드를 Arduino에 연결합니다. 4X4 키패드의 처음 6개 핀을 Arduino의 A0 및 A5 핀에 연결합니다. 그런 다음 4X4 키패드 모듈의 마지막 두 핀을 Arduino의 디지털 핀 3과 2에 연결합니다.

    그런 다음 LCD를 Arduino에 연결하십시오. LCD와 Arduino를 연결하기 위한 연결은 다음과 같습니다.

    <울>
  • VSS 핀인 LCD의 핀 1을 Arduino의 GND에 연결합니다.
  • VDD 핀인 2번 핀을 Arduino의 5V 핀에 연결합니다.
  • V0인 핀 3을 10k 전위차계의 중간에 연결하고 전위차계의 다른 두 핀을 Arduino의 5V 및 GND에 연결합니다. LCD의 명암을 설정하는 핀입니다.
  • RS 핀인 4번 핀을 Arduino의 7번 핀에 연결합니다.
  • R/W 핀인 5번 핀을 Arduino의 GND 핀에 연결합니다.
  • Enable 핀인 6번 핀을 Arduino의 6번 핀에 연결합니다.
  • 데이터 핀인 핀 11, 12, 13, 14를 Arduino의 핀 5, 4, 3, 2에 연결합니다.
  • 220옴 저항을 통해 LCD의 백라이트 핀인 핀 15를 Arduino의 5V에 연결합니다.
  • 백라이트의 마이너스 핀인 Arduino의 16번 핀을 Arduino의 GND에 연결합니다.
  • 마지막으로 DC 잠금 장치를 Arduino와 연결합니다. Lock은 7~12V의 전압에서 작동하므로 Arduino에 직접 연결할 수 없습니다. Arduino에 연결하려면 릴레이와 배터리가 필요합니다.

    릴레이의 신호 핀을 Arduino의 핀 10에 연결하고 잠금 장치의 VCC 및 GND를 Arduino의 5V 및 GND에 연결합니다. 그런 다음 릴레이의 다른 쪽 끝에서 배터리의 음극을 릴레이의 공통 부분에 연결하고 릴레이의 NO(Normally open)를 잠금 장치의 한쪽에 연결합니다. 그런 다음 잠금 장치의 다른 쪽을 배터리의 양극 단자에 연결합니다.

    Arduino 키패드 잠금 코드

    초기 비밀번호는 1234입니다.

    #include #include#includeLiquidCrystal liquid_crystal_display(9,8,7,6,5,4,);char 암호[4]; char initial_password[4],new_password[4];int i=0;int relay_pin =10;char key_pressed=0;const 바이트 행 =4; const 바이트 열 =4; char hexaKeys[행][열] ={{'1','2','3','A'},{'4','5','6','B'},{'7' ,'8','9','C'},{'*','0','#','D'}};바이트 row_pins[행] ={A0,A1,A2,A3};바이트 column_pins[열] ={A4,A5,3,2}; 키패드 키패드 키 =키패드( makeKeymap(hexaKeys), row_pins, column_pins, 행, 열); 무효 설정(){ pinMode(relay_pin, OUTPUT); liquid_crystal_display.begin(16,2); liquid_crystal_display.print(" DIYhacking.com"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("전자 잠금 장치"); 지연(2000); liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요"); liquid_crystal_display.setCursor(0,1); initialpassword();}무효 루프(){ digitalWrite(relay_pin, HIGH); key_pressed =키패드_키.getKey(); if(key_pressed=='#') change(); if (key_pressed) { 비밀번호[i++]=key_pressed; liquid_crystal_display.print(key_pressed); } if(i==4) { delay(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(비밀번호, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("합격 승인됨"); digitalWrite(relay_pin, LOW); 지연(2000); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("변경하려면 #를 누르세요"); 지연(2000); liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요:"); liquid_crystal_display.setCursor(0,1); 나는 =0; } 그 외 { digitalWrite(relay_pin, HIGH); liquid_crystal_display.clear(); liquid_crystal_display.print("잘못된 비밀번호"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("변경하려면 #를 누르세요"); 지연(2000); liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요"); liquid_crystal_display.setCursor(0,1); 나는 =0; } }}변경 무효(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("현재 비밀번호"); liquid_crystal_display.setCursor(0,1); 동안(j<4) { char key=keypad_key.getKey(); if(키) { new_password[j++]=키; liquid_crystal_display.print(키); } 키=0; } 지연(500); if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("잘못된 비밀번호"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("다시 시도하세요"); 지연(1000); } 기타 { j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("새 비밀번호:"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(키) { initial_password[j]=키; liquid_crystal_display.print(키); EEPROM.write(j, 키); j++; } } liquid_crystal_display.print("통과 변경됨"); 지연(1000); } liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요"); liquid_crystal_display.setCursor(0,1); key_pressed=0;}void initialpassword(){ for(int j=0;j<4;j++) EEPROM.write(j, j+49); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j);}  

    코드 설명

    먼저 4X4 키패드용 라이브러리, LCD용 라이브러리, 비밀번호 저장용 라이브러리를 포함합니다. EEPROM 라이브러리는 암호를 저장하는 데 사용됩니다. 저장된 기본 비밀번호는 '1234'입니다.

    #include #include#include  

    루프 기능에서 누른 키는 'key_pressed ' 변수를 입력하고 다른 키와 비교합니다. 누른 키가 '#'이면 변경 기능이 호출되어 새 비밀번호를 묻습니다.

    <사전><코드>key_pressed =키패드_키.getKey(); if(key_pressed=='#') change();

    누른 키는 '비밀번호에 저장됩니다. ' 변수로 나타나며 키를 눌렀을 때 LCD에 표시됩니다. 그런 다음 이 키는 EEPROM에 저장된 초기 암호와 일치합니다. 누른 키가 초기 암호와 일치하면 잠금 장치가 열리고 LCD에 "Pass accepted"가 인쇄됩니다. 비밀번호가 일치하지 않으면 비밀번호를 다시 입력하라는 메시지가 표시됩니다.

    if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display.print(key_pressed); }if(i==4) { delay(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(비밀번호, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("합격 승인됨"); digitalWrite(relay_pin, LOW); 지연(2000); 

    '#' 키를 누르면 'change() ' 기능. 변경 기능에서 현재 암호를 입력하라는 메시지가 표시됩니다. 현재 암호가 정확하면 새 암호를 입력하라는 메시지가 표시됩니다. 새 비밀번호를 입력하면 비밀번호가 변경됩니다.

    void change(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("현재 비밀번호"); liquid_crystal_display.setCursor(0,1); 동안(j<4) { char key=keypad_key.getKey(); if(키) { new_password[j++]=키; liquid_crystal_display.print(키); } 키=0; } 지연(500); 

    태그:4x4 키패드, Arduino, DC 잠금, Keylock, 키패드, LCD, 잠금

    추천 게시물

    실시간 시계와 LCD 화면을 이용한 아두이노 알람시계

    Arduino 자체 균형 로봇을 만드는 방법

    Arduino와 솔레노이드를 사용하여 토스터 댄스 만들기

    Arduino로 DIY 자동 관개 시스템 만들기

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 코드 스니펫 #1
  • 코드 스니펫 #2
  • 코드 스니펫 #3
  • 코드 스니펫 #4
  • 코드 스니펫 #5
  • 코드 스니펫 #1일반 텍스트
    #include #include#includeLiquidCrystal liquid_crystal_display(9,8,7,6,5,4,);char 암호[4];char initial_password[ 4],new_password[4];int i=0;int relay_pin =10;char key_pressed=0;const 바이트 행 =4; const 바이트 열 =4; char hexaKeys[행][열] ={{'1','2','3','A'},{'4','5','6','B'},{'7' ,'8','9','C'},{'*','0','#','D'}};바이트 row_pins[행] ={A0,A1,A2,A3};바이트 column_pins[열] ={A4,A5,3,2}; 키패드 키패드 키 =키패드( makeKeymap(hexaKeys), row_pins, column_pins, 행, 열); 무효 설정(){ pinMode(relay_pin, OUTPUT); liquid_crystal_display.begin(16,2); liquid_crystal_display.print(" DIYhacking.com"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("전자 잠금 장치"); 지연(2000); liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요"); liquid_crystal_display.setCursor(0,1); initialpassword();}무효 루프(){ digitalWrite(relay_pin, HIGH); key_pressed =키패드_키.getKey(); if(key_pressed=='#') change(); if (key_pressed) { 비밀번호[i++]=key_pressed; liquid_crystal_display.print(key_pressed); } if(i==4) { delay(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(비밀번호, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("합격 승인됨"); digitalWrite(relay_pin, LOW); 지연(2000); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("변경하려면 #를 누르세요"); 지연(2000); liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요:"); liquid_crystal_display.setCursor(0,1); 나는 =0; } 그 외 { digitalWrite(relay_pin, HIGH); liquid_crystal_display.clear(); liquid_crystal_display.print("잘못된 비밀번호"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("변경하려면 #를 누르세요"); 지연(2000); liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요"); liquid_crystal_display.setCursor(0,1); 나는 =0; } }}변경 무효(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("현재 비밀번호"); liquid_crystal_display.setCursor(0,1); 동안(j<4) { char key=keypad_key.getKey(); if(키) { new_password[j++]=키; liquid_crystal_display.print(키); } 키=0; } 지연(500); if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("잘못된 비밀번호"); liquid_crystal_display.setCursor(0,1); liquid_crystal_display.print("다시 시도하세요"); 지연(1000); } 기타 { j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("새 비밀번호:"); liquid_crystal_display.setCursor(0,1); while(j<4) { char key=keypad_key.getKey(); if(키) { initial_password[j]=키; liquid_crystal_display.print(키); EEPROM.write(j, 키); j++; } } liquid_crystal_display.print("통과 변경됨"); 지연(1000); } liquid_crystal_display.clear(); liquid_crystal_display.print("비밀번호를 입력하세요"); liquid_crystal_display.setCursor(0,1); key_pressed=0;}void initialpassword(){ for(int j=0;j<4;j++) EEPROM.write(j, j+49); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j);}
    코드 스니펫 #2일반 텍스트
    #include #include#include
    코드 스니펫 #3일반 텍스트
    <사전>key_pressed =키패드_키.getKey(); if(key_pressed=='#') change();
    코드 스니펫 #4일반 텍스트
    if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display.print(key_pressed); }if(i==4) { delay(200); for(int j=0;j<4;j++) initial_password[j]=EEPROM.read(j); if(!(strncmp(비밀번호, initial_password,4))) { liquid_crystal_display.clear(); liquid_crystal_display.print("합격 승인됨"); digitalWrite(relay_pin, LOW); 지연(2000);
    코드 스니펫 #5일반 텍스트
    <사전> 무효 변경(){ int j=0; liquid_crystal_display.clear(); liquid_crystal_display.print("현재 비밀번호"); liquid_crystal_display.setCursor(0,1); 동안(j<4) { char key=keypad_key.getKey(); if(키) { new_password[j++]=키; liquid_crystal_display.print(키); } 키=0; } 지연(500);

    회로도

    Arduino를 사용하여 올바른 키 조합으로 열 수 있는 솔레노이드 도어록을 제어합니다.

    제조공정

    1. MPU-6050을 사용한 Arduino 자이로스코프 게임
    2. Python과 함께 Arduino 및 RFID를 사용한 출석 시스템
    3. DHT11 센서(LED 및 피에조 스피커 포함)
    4. LCD 애니메이션 및 게임
    5. Unopad - Ableton이 포함된 Arduino MIDI 컨트롤러
    6. 온도 및 습도 데이터 로거
    7. Arduino를 사용한 간단한 장애물 센서
    8. 4x4x4 LED 큐브(Arduino Uno 및 1쉴드 포함
    9. 새롭고 더 빠른 알고리즘이 포함된 Arduino 기반 RPM 카운터
    10. Arduino 및 Google 스프레드시트 기반 출석 시스템