ESP32 - 키패드 | ESP32 - Keypad

이 튜토리얼은 키패드와 ESP32를 사용하는 방법을 알려줍니다. 자세히 알아볼 내용은 다음과 같습니다:

준비물

1×ESP-WROOM-32 Dev Module 쿠팡 | Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×Keypad 3x4 and 4x4 Kit 쿠팡 | Amazon
1×(Alternative) Keypad 3x4 쿠팡 | Amazon
1×(Alternative) Keypad 4x4 쿠팡 | Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Recommended) Screw Terminal Expansion Board for ESP32 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

키패드 정보

Keypad

키패드는 행렬(행과 열)에 배열된 일련의 버튼으로 구성됩니다. 버튼은 키를 나타냅니다. 여러 종류의 키패드가 있습니다. 키패드 3x4(12개의 키)와 키패드 4x4(16개의 키)는 DIY 프로젝트에서 가장 흔히 사용되는 두 가지입니다.

키패드 핀 배치

키패드 핀은 행과 열 두 그룹으로 분류됩니다.

  • 3x4 키패드에는 7개의 핀이 있습니다:
    • R1, R2, R3, R4: 행 핀
    • C1, C2, C3: 열 핀
  • 4x4 키패드에는 8개의 핀이 있습니다:
    • R1, R2, R3, R4: 행 핀
    • C1, C2, C3, C4: 열 핀
    Keypad Pinout

    키패드 작동 방식

    키패드 작동 방식을 확인하세요

키패드와 ESP32 사이의 배선도

ESP32 - 키패드 3x4 배선도

ESP32 Keypad 3x4 wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

ESP32 - 키패드 4x4 배선도

ESP32 Keypad 4x4 wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP32 코드

키패드 3x4

#include <Keypad.h> #define ROW_NUM 4 // 네 개의 행 #define COLUMN_NUM 3 // 세 개의 열 char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16이 행 핀에 연결됨 byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2가 열 핀에 연결됨 Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

키패드 4x4

#include <Keypad.h> #define ROW_NUM 4 // 네 개의 행 #define COLUMN_NUM 4 // 네 개의 열 char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {19, 18, 5, 17}; // GPIO19, GPIO18, GPIO5, GPIO17가 행 핀에 연결됩니다 byte pin_column[COLUMN_NUM] = {16, 4, 0, 2}; // GPIO16, GPIO4, GPIO0, GPIO2가 열 핀에 연결됩니다 Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

사용 방법

  • ESP32를 처음 사용하는 경우, ESP32를 위한 아두이노 IDE 환경설정 방법을 참조하세요.
  • 아두이노 IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하세요.
  • 검색 상자에 keypad를 입력하고, Mark Stanley, Alexander Brevig에 의한 키패드 라이브러리를 찾아보세요.
  • Install 버튼을 클릭하여 키패드 라이브러리를 설치하세요.
ESP32 keypad library
  • 위의 코드를 복사해서 아두이노 IDE에 붙여넣으세요.
  • 아두이노 IDE에서 Upload 버튼을 클릭하여 코드를 ESP32 보드에 컴파일하고 업로드하세요.
  • 아두이노 IDE에서 시리얼 모니터를 엽니다.
How to open serial monitor on Arduino IDE
  • 키패드에서 몇 개의 키를 누르세요
  • 시리얼 모니터에서 결과를 확인하세요
COM6
Send
1 2 3 4 * #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

키패드와 비밀번호

키패드는 비밀번호로 누군가를 인증하는 데 널리 사용됩니다. 이 튜토리얼에서는 유효한 비밀번호가 코드에 미리 정의되어 있습니다. 사용자가 키패드에서 비밀번호를 입력하면 미리 정의된 비밀번호와 비교됩니다:

  • 일치하는 경우 접근이 허용됩니다.
  • 그렇지 않은 경우 접근이 제한됩니다.

키패드로 비밀번호를 사용하려면, 두 개의 특별한 키를 지정합니다:

  • 비밀번호 입력을 시작하는 키. 예를 들어, 키 "*"
  • 비밀번호 입력을 마치는 키. 예를 들어, 키 "#"

사용자가 입력한 비밀번호는 입력된 비밀번호 문자열이라는 문자열에 저장될 것입니다. 키가 눌릴 때:

  • 입력된 키가 "*"인 경우, 입력된 비밀번호 문자열을 지워서 새로운 비밀번호를 시작합니다.
  • 입력된 키가 "*"이거나 "#"이 아닌 경우, 키를 입력된 비밀번호 문자열에 추가합니다.
  • 입력된 키가 "#"인 경우, 입력된 비밀번호 문자열미리 정의된 비밀번호를 비교합니다.

키패드 - 비밀번호 코드

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-keypad */ #include <Keypad.h> #define ROW_NUM 4 // 네 개의 행 #define COLUMN_NUM 3 // 세 개의 열 char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16이 행 핀에 연결됩니다 byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2가 열 핀에 연결됩니다 Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "7890"; // 여기서 비밀번호를 변경하세요 String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // 최대 입력 문자는 33개입니다, 필요하다면 변경하세요 } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // 입력 비밀번호 지우기 } else if (key == '#') { if (password == input_password) { Serial.println("The password is correct, ACCESS GRANTED!"); // 여기에서 작업을 수행하세요 } else { Serial.println("The password is incorrect, ACCESS DENIED!"); } input_password = ""; // 입력 비밀번호 지우기 } else { input_password += key; // 입력 비밀번호 문자열에 새 문자 추가 } } }
  • 위의 코드를 실행하세요.
  • 아두이노 IDE에서 시리얼 모니터를 엽니다.
How to open serial monitor on Arduino IDE
  • "123456" 키를 누르고 "#"를 누르세요.
  • "7890" 키를 누르고 "#"를 누르세요.
  • 시리얼 모니터에서 결과를 확인하세요. 결과는 아래와 같습니다:
COM6
Send
The password is incorrect, ACCESS DENIED! The password is correct, ACCESS GRANTED!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!