아두이노 나노 - 키패드 도어락 | Arduino Nano - Keypad Door Lock
이 튜토리얼은 Arduino Nano, 키패드, 솔레노이드 잠금장치 또는 전자기 잠금장치, 그리고 LCD 디스플레이를 사용하여 비밀번호로 보호된 문 잠금 시스템을 구축하는 방법을 안내합니다. 아래는 문 잠금 시스템이 작동하는 방법입니다:
- 사용자는 키패드를 사용하여 비밀번호를 입력합니다.
- 아두이노 나노는 비밀번호가 올바른지 확인할 것입니다.
- 입력된 비밀번호가 올바르면, 아두이노 나노는 솔레노이드 잠금장치를 비활성화하여 문을 열 것입니다. 문은 설정된 시간(예: 20초) 동안 열린 상태로 유지된 후 자동으로 다시 잠길 것입니다.
쉽게 하기 위해, 이 튜토리얼은 여러 단계로 나뉘어져 있으며, 쉬운 것부터 어려운 것까지 있습니다:
- 부분 1: 아두이노 나노, 키패드, 솔레노이드 잠금장치 또는 전자기 잠금장치를 사용한 간단한 키패드 도어 잠금 시스템.
- 부분 2: (선택사항) 다중 비밀번호 지원 추가
- 부분 3: (선택사항) 키패드 도어 잠금에 LCD 디스플레이 추가
- 부분 4: (선택사항) 키패드를 누를 때 비프음 추가
- 부분 5: (선택사항) 키패드 도어 잠금에 문 센서 추가
- 부분 6: (선택사항) 아두이노 나노의 내부 EEPROM에 유효한 비밀번호 관리 및 저장
- 부분 7: (선택사항) 접근 이력을 SD 카드에 저장
준비물
1 | × | Arduino Nano | Amazon | |
1 | × | USB A to Mini-B USB cable | 쿠팡 | Amazon | |
1 | × | Keypad 3x4 and 4x4 Kit | 쿠팡 | Amazon | |
1 | × | Relay | Amazon | |
1 | × | Solenoid Lock | Amazon | |
1 | × | 12V Power Adapter | Amazon | |
1 | × | DC Power Jack | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) Electromagnetic Lock | Amazon | |
1 | × | (Optional) LCD I2C | 쿠팡 | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
키패드, 솔레노이드 잠금장치, 전자기 잠금장치, 및 LCD 디스플레이에 대하여
솔레노이드 잠금장치와 전자기 잠금장치 모두 문을 잠그거나 열기 위해 사용됩니다. 그들은 주로 기계적 설계 측면에서 서로 다릅니다. 아두이노 나노에 연결하는 배선은 비슷합니다. 그것들을 제어하기 위한 아두이노 나노 코드는 같습니다.
키패드, 솔레노이드 잠금장치, 전자기 잠금장치, LCD 디스플레이(핀아웃, 작동 방식, 프로그래밍 방법 등)에 익숙하지 않은 경우, 다음 튜토리얼이 학습에 도움이 될 수 있습니다:
선연결
아두이노 나노, 키패드 및 솔레노이드 잠금장치를 사용한 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 나노, 키패드 및 전자기 잠금장치가 있는 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 나노 코드 - 키패드 도어락
※ NOTE THAT:
LCD의 주소는 제조업체에 따라 다를 수 있습니다. 우리 코드에서는 DIYables에서 지정한대로 0x27을 사용했습니다.
사용 방법
- 아두이노 나노와 PC에 USB 케이블을 연결하십시오.
- 아두이노 IDE를 열고 적절한 보드와 포트를 선택하십시오.
- 아두이노 IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하십시오.
- “keypad”를 검색한 다음, Mark Stanley와 Alexander Brevig이 만든 keypad 라이브러리를 찾으십시오.
- Install 버튼을 눌러 keypad 라이브러리를 설치하십시오.
위의 코드를 복사한 뒤, 아두이노 IDE로 열어주세요.
Upload 버튼을 클릭하여 코드를 아두이노 나노에 업로드하세요.
시리얼 모니터를 엽니다.
12345 키를 누른 뒤, # 기호를 누르세요.
그 다음, 1234 키를 누른 뒤, # 기호를 누르세요.
20초 동안 자물쇠 혀의 상태를 확인하세요.
시리얼 모니터에서 결과를 확인하세요.
코드 설명
유효한 비밀번호는 아두이노 나노 코드에 미리 정의되어 있습니다. 사용자가 입력한 비밀번호를 저장하기 위해 문자열이 사용되며, 이는 입력 문자열로 언급됩니다. 키패드에서 두 개의 키(*와 #)는 특별한 목적을 위해 사용됩니다: 비밀번호를 지우고 비밀번호 입력을 종료하기 위해서입니다. 시스템은 다음과 같이 작동합니다:
- 두 개의 특별한 키를 제외하고, 다른 키가 눌리면 입력 문자열에 추가됩니다.
- *가 눌리면, 입력 문자열이 지워집니다. 이는 비밀번호의 입력을 시작하거나 재시작하는 데 사용할 수 있습니다.
- #가 눌렸을 때:
- Arduino Nano는 입력 문자열을 미리 정의된 비밀번호와 비교합니다. 만약 일치하는 비밀번호가 있다면, Arduino Nano는 릴레이를 제어하여 문을 엽니다.
- 비밀번호가 정확하든 아니든, Arduino Nano는 다음 입력을 위해 입력 문자열을 지웁니다.
아두이노 나노 코드 - 여러 키
RFID 도어록에 LCD 디스플레이 추가하기
사용자에게 상태(예: 허용/거부)를 표시하기 위해 선택적으로 LCD 디스플레이를 추가할 수 있습니다.
배선도 - 키패드, 솔레노이드 잠금장치 또는 전자기 잠금장치, 그리고 LCD 디스플레이를 사용하는 문 잠금 시스템
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
위의 배선도에서, 릴레이와 LCD가 전력 부족으로 인해 작동하지 않거나 불안정하게 작동할 수 있음을 알려드립니다. 릴레이와 LCD 모두에 외부 전원을 사용하시기를 강력히 권장합니다. 다음 배선도를 참조하시기 바랍니다:
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 나노 코드 - 키패드 도어락
※ NOTE THAT:
LCD의 주소는 제조업체에 따라 다를 수 있습니다. 우리는 DIYables에서 명시한 대로 코드에서 0x27을 사용하였습니다.
키패드를 누를 때 비프 소리 추가하기.
키패드의 키를 누를 때마다 짧은 비프음을 생성하기 위해 압전 부저를 추가함으로써 도어 락이 반응하는 것처럼 보이게 할 수 있습니다.
추가하는 것은 매우 간단합니다. 그래서, 이 부분은 여러분의 창의력에 맡기겠습니다. 더 많은 안내가 필요하다면 아두이노 나노 - 키패드 비프 튜토리얼을 확인해 보세요.
키패드 도어락에 도어 센서 추가하기
앞서 언급한 코드에서, Arduino Nano는 잠금을 해제한 후 일정 시간이 지나면 문을 잠근다. 하지만 실제 응용에서는 보통 문 센서가 시스템에 추가된다. Arduino Nano가 문이 닫혔다고 감지하면, 타임아웃을 기다리는 대신 바로 문을 잠근다.
당신을 압도하지 않기 위해, 우리는 배선도와 코드에 문 센서를 포함시키지 않았습니다. 대신, 이 부분은 여러분의 창의력에 맡깁니다. 더 많은 지침을 위해 Arduino Nano - Door Sensor와 Arduino Nano - Door Sensor control Relay 튜토리얼을 확인해보세요.
EEPROM에 유효한 비밀번호 관리 및 저장하기
위의 코드는 아두이노 나노 코드에 하드코딩된 유효한 비밀번호(UID)를 가지고 있습니다. 이는 비밀번호를 추가하거나 제거하고 싶다면 코드를 변경한 후 다시 아두이노 나노에 업로드해야 한다는 것을 의미합니다. 이는 불편합니다.
실제 응용 프로그램에서는 코드를 매번 수정하고 업로드하지 않고도 비밀번호를 관리할 필요가 있습니다. 이를 달성하기 위해, 비밀번호를 하드코딩하는 대신 EEPROM에 저장할 수 있습니다. 그 결과, EEPROM에서 비밀번호를 쉽게 관리할 수 있는 방법이 필요합니다.
EEPROM에서 비밀번호를 관리하는 두 가지 방법이 있습니다:
마스터 비밀번호 사용
- 비밀번호를 ADD 마스터 비밀번호로 사용함으로써, 새로운 비밀번호를 시스템에 추가할 수 있습니다. Arduino Nano가 ADD 마스터 비밀번호를 감지하면, ADD 모드와 OPERATION 모드 사이를 전환합니다.
- ADD 모드에서 Arduino Nano는 감지한 새로운 비밀번호를 EEPROM에 추가합니다.
- DELETE 마스터 비밀번호와 DELETE 모드에 대해서도 유사한 접근법이 사용됩니다.
- 시리얼/블루투스/IR을 통한 ADD/DELETE 명령 사용
- 명령어는 시리얼 모니터, 블루투스 앱 또는 IR 컨트롤러와 같은 도구를 사용하여 시리얼/블루투스/IR을 통해 전송됩니다.
- 명령어는 지시문(ADD/DELETE)과 비밀번호로 구성됩니다.
위의 두 가지 방법 중 하나를 사용하려면 상당한 양의 아두이노 나노 코드를 추가해야 합니다. 프로그래밍이 처음인 사람들에게 이것은 어려운 작업이 될 수 있습니다. 따라서 이 튜토리얼은 복잡한 코드로 초보자를 압도하지 않고 도어락 시스템에 대한 기본적인 이해를 제공하려고 합니다. 이 시스템을 실제로 구현하고 싶으시다면, 저희 유료 프로그래밍 서비스를 통해 문의해 주십시오.
SD 카드에 접근 이력 저장하기
접근 이력을 추적하기 위해, 접근 상태(GRANTED/DENIED)와 날짜 및 시간을 저장하는 것이 필요할 수 있습니다. EEPROM은 전체 이력을 저장하기에 용량이 부족하기 때문에, 대신 SD 카드를 사용할 수 있습니다. 이에 대한 안내는 Arduino Nano - SD 카드에 타임스탬프와 함께 데이터 로그하기 튜토리얼에서 찾을 수 있습니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.