ESP32 C3 Super Mini 키패드 4x4

4x4 키패드는 얇은 패드 하나로 ESP32 C3 Super Mini에 16개의 버튼을 제공합니다. 사용자가 숫자나 PIN 코드를 입력하게 하는 가장 쉬운 방법입니다. 이 ESP32 C3 Super Mini 키패드 4x4 튜토리얼에서는 배선, 코드, 그리고 실제로 동작하는 비밀번호 확인 기능을 보여줍니다.

이 튜토리얼에서 배울 내용:

ESP32 C3 Super Mini - 키패드 4x4

필요한 하드웨어

1×ESP32 C3 Super Mini 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×키패드 4x4 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

4x4 키패드 소개

4x4 키패드는 4행 4열로 배치된 16개의 버튼이 있는 멤브레인 입력 패드입니다.

주요 특징:

  • 16개의 키: 0-9, A, B, C, D, 별표(*), 샵(#)
  • 전선 8가닥만 사용: 행 핀 4개와 열 핀 4개
  • 전원 핀 없음: 키패드에는 VCC와 GND가 필요 없습니다.
  • 얇고 평평함: 뒷면이 스티커로 되어 있어 상자에 붙일 수 있습니다.
  • 3.3V 호환: ESP32 C3 Super Mini의 로직 레벨로 바로 동작합니다.

기술 사양:

  • 배열: 4행 x 4열
  • 핀: 8개 (R1, R2, R3, R4, C1, C2, C3, C4)
  • 접점 종류: 각 키 아래에 있는 단순한 순간 스위치
  • 동작 전압: 보드에 따라 정해집니다. ESP32 C3 Super Mini에서는 3.3V입니다.
  • 소비 전류: 거의 0이므로 별도의 전원이 필요 없습니다.

키 스캔의 작동 원리

키패드 내부에는 칩이 없으므로, ESP32 C3 Super Mini가 스캔으로 키를 찾습니다.

  • 키마다 스위치 하나: 각 키는 행 전선 하나와 열 전선 하나를 연결합니다.
  • 한 행씩: 보드가 한 번에 한 행씩 LOW로 만듭니다.
  • 열 읽기: 그런 다음 4개의 열 핀을 모두 읽습니다.
  • 일치: LOW인 열을 보고 어떤 키가 눌렸는지 알 수 있습니다.
  • 빠름: 전체 스캔이 1밀리초도 걸리지 않으므로 즉각적으로 느껴집니다.
  • 라이브러리가 처리: DIYables_Keypad 라이브러리가 이 스캔을 대신 실행합니다.

핀 배치

4x4 키패드에는 두 그룹으로 나뉜 8개의 핀이 있습니다.

  • R1 핀: 1행, 맨 위 줄의 키 (1, 2, 3, A)
  • R2 핀: 2행, 두 번째 줄의 키 (4, 5, 6, B)
  • R3 핀: 3행, 세 번째 줄의 키 (7, 8, 9, C)
  • R4 핀: 4행, 맨 아래 줄의 키 (*, 0, #, D)
  • C1 핀: 1열, 왼쪽 열 (1, 4, 7, *)
  • C2 핀: 2열, 두 번째 열 (2, 5, 8, 0)
  • C3 핀: 3열, 세 번째 열 (3, 6, 9, #)
  • C4 핀: 4열, 오른쪽 열 (A, B, C, D)
4x4 키패드 핀 배치

WARNING

4x4 키패드는 GPIO 핀 8개가 필요하며, 이는 ESP32 C3 Super Mini의 빈 핀 거의 전부입니다. 연결한 후에는 디스플레이, 릴레이, 센서에 사용할 핀이 거의 남지 않습니다.

다른 부품에 사용할 핀이 필요하다면, 대신 다음 중 하나를 사용하세요:

  • SDA GPIO10과 SCL GPIO8만 필요한 I2C 키패드
  • 키패드와 보드 사이에 PCF8574 I/O 확장기를 사용하는 방법 (이것도 SDA GPIO10과 SCL GPIO8 사용)

두 방법 모두 전선 2가닥만으로 같은 16개의 키를 사용할 수 있습니다.

배선도

키패드의 4개 행 핀과 4개 열 핀을 ESP32 C3 Super Mini의 빈 GPIO 핀 8개에 연결합니다.

ESP32 C3 Super Mini 키패드 4x4 배선도

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

키패드 핀 ESP32 C3 Super Mini 핀
R1 GPIO2
R2 GPIO3
R3 GPIO4
R4 GPIO5
C1 GPIO6
C2 GPIO7
C3 GPIO10
C4 GPIO1
  • 참고: 키패드에는 VCC와 GND 선이 없습니다. 8개의 핀 모두 GPIO 핀에 연결합니다.
  • 참고: GPIO8(내장 LED 및 부트 핀), GPIO9(부트 핀), GPIO20 또는 GPIO21(시리얼 모니터 UART)은 절대 사용하지 마세요.
  • 참고: 키패드는 3.3V에서 안전합니다. 어떤 핀도 5V에 연결하지 마세요.
  • 참고: 각 점퍼선을 브레드보드에 끝까지 꽂으세요. 헐거운 선은 키 입력이 누락되는 가장 흔한 원인입니다.
  • 참고: 키가 위를 향하도록 키패드를 들고 리본 선을 왼쪽부터 세어 보세요. 첫 번째가 R1이고 마지막이 C4입니다.

ESP32 C3 Super Mini 코드 - 키패드 4x4

첫 번째 스케치는 누른 키를 모두 출력하기만 합니다.

이 코드가 하는 일:

  • 16개 키의 배치를 4x4 배열로 만듭니다.
  • 행과 열이 연결된 GPIO 핀을 라이브러리에 알려 줍니다.
  • 루프 안에서 키패드를 계속 스캔합니다.
  • 눌린 키를 115200 보드레이트로 시리얼 모니터에 출력합니다.
  • 눌린 키가 없으면 아무것도 출력하지 않습니다.
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-keypad-4x4 */ #include <DIYables_Keypad.h> // DIYables_Keypad library #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns 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] = {2, 3, 4, 5}; // The ESP32 C3 SuperMini pin GPIO2, GPIO3, GPIO4, GPIO5 connect to the row pins byte pin_column[COLUMN_NUM] = {6, 7, 10, 1}; // The ESP32 C3 SuperMini pin GPIO6, GPIO7, GPIO10, GPIO1 connect to the column pins DIYables_Keypad keypad = DIYables_Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(115200); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

빠른 단계

  • ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
  • 부품 연결: 위의 배선도에 따라 4x4 키패드를 ESP32 C3 Super Mini에 연결합니다.
  • 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.
  • IDE 열기: Arduino IDE 소프트웨어를 실행합니다.
  • 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
  • 포트 선택: Tools > Port에서 보드의 COM 포트를 선택합니다.
  • 라이브러리 매니저 열기: Arduino IDE 왼쪽 바의 Libraries 아이콘을 클릭합니다.
  • 라이브러리 검색: 검색창에 "DIYables_Keypad"를 입력합니다.
  • 라이브러리 설치: DIYables.io의 키패드 라이브러리를 찾은 다음, Install을 클릭합니다.
  • Search for DIYables_Keypad created by DIYables.io and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Library Manager
Type:
All
Topic:
All
DIYables_Keypad by DIYables.io
The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima More info
1.0.1
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32C3 Dev Module on COM15
1
  • 코드 복사: 위의 키패드 코드를 복사하여 Arduino IDE에 붙여넣습니다.
  • 코드 업로드: Upload 버튼을 클릭하여 스케치를 ESP32 C3 Super Mini에 업로드합니다.
  • 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
  • 테스트: 키패드의 키를 하나씩 몇 개 눌러 봅니다.
  • 출력 확인: 누른 키가 각각 한 줄씩 나타납니다.
  • 전문가 팁: 잘못된 키가 출력되면 코드에서 행 핀과 열 핀을 서로 바꿔 보세요. 키패드 리본 케이블의 배선은 제조사마다 다를 수 있습니다.

시리얼 모니터 출력

1, 4, A, # 키를 차례로 누릅니다.

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
1 4 A #
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

키패드와 비밀번호

두 개의 키를 제어 키로 사용하면 키패드가 PIN 패드가 됩니다.

  • 별표 키: * 키는 입력한 내용을 지워서 다시 시작할 수 있게 합니다.
  • 샵 키: # 키는 입력을 끝내고 저장된 비밀번호와 비교합니다.
  • 그 외의 키: 입력 중인 비밀번호 끝에 추가됩니다.
  • 결과: 스케치가 ACCESS GRANTED 또는 ACCESS DENIED를 출력한 다음, 입력을 지웁니다.
  • 나만의 코드: 코드에 DO YOUR WORK HERE라고 적힌 곳에 잠금 해제와 같은 원하는 동작을 넣으세요.

ESP32 C3 Super Mini 코드 - 키패드 비밀번호

두 번째 스케치는 ESP32 C3 Super Mini 키패드를 비밀번호 확인기로 바꿉니다.

이 코드가 하는 일:

  • 스케치에 비밀번호를 저장하며, 기본값은 7890A입니다.
  • 누른 키를 하나씩 입력 문자열에 모읍니다.
  • * 키를 누르면 입력을 지웁니다.
  • # 키를 누르면 입력을 비밀번호와 비교합니다.
  • 비밀번호가 맞는지 출력한 다음, 입력을 지웁니다.
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-keypad-4x4 */ #include <DIYables_Keypad.h> // DIYables_Keypad library #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns 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] = {2, 3, 4, 5}; // The ESP32 C3 SuperMini pin GPIO2, GPIO3, GPIO4, GPIO5 connect to the row pins byte pin_column[COLUMN_NUM] = {6, 7, 10, 1}; // The ESP32 C3 SuperMini pin GPIO6, GPIO7, GPIO10, GPIO1 connect to the column pins DIYables_Keypad keypad = DIYables_Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "7890A"; // change your password here String input_password; void setup() { Serial.begin(115200); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // clear input password } else if (key == '#') { if (password == input_password) { Serial.println("The password is correct, ACCESS GRANTED!"); // DO YOUR WORK HERE } else { Serial.println("The password is incorrect, ACCESS DENIED!"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }

빠른 단계 (비밀번호 예제)

  • 코드 업로드: 비밀번호 스케치를 ESP32 C3 Super Mini에 업로드합니다.
  • 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
  • 틀린 코드 입력: 1234BC를 누른 다음 #를 누릅니다.
  • 올바른 코드 입력: 7890A를 누른 다음 #를 누릅니다.
  • 출력 확인: 시리얼 모니터에서 결과 줄을 읽습니다.
  • 전문가 팁: 입력을 잘못했을 때는 언제든지 *를 누르세요. 비밀번호 오류 메시지 없이 입력을 지웁니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
1 2 3 4 B C # The password is incorrect, ACCESS DENIED! 7 8 9 0 A # The password is correct, ACCESS GRANTED!
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ 주의:

비밀번호는 스케치 안에 일반 텍스트로 들어 있습니다. 학습용으로는 괜찮습니다. 실제 잠금장치라면 새로 업로드하지 않고도 바꿀 수 있도록 NVS 플래시에 저장하세요.

라인별 코드 설명

위의 ESP32 C3 Super Mini 코드에는 라인별 설명이 포함되어 있습니다. 코드의 주석을 읽어 보세요!

응용/프로젝트 아이디어

키패드는 거의 모든 작은 보안 또는 메뉴 프로젝트의 입력 장치입니다.

  • 도어락: PIN이 맞으면 ESP32 C3 Super Mini - 솔레노이드 락를 엽니다.
  • 금고: 상자를 열기 전에 더 긴 키 입력을 요구합니다.
  • 경보 키패드: 코드로 경보를 설정하고 해제합니다.
  • 출입 기록: 모든 키 입력을 시간과 함께 SD 카드에 저장합니다.
  • 간단한 계산기: 0-9는 숫자로, A-D는 더하기, 빼기, 곱하기, 나누기로 사용합니다.
  • 메뉴 제어: 번호를 입력하여 LCD의 메뉴 항목을 선택합니다.

도전해 보기

4x4 키패드와 ESP32 C3 Super Mini로 다음 작은 프로젝트를 연습해 보세요.

  • 쉬움: 비밀번호를 자신만의 6자리 숫자로 바꾸고 테스트해 보세요.
  • 쉬움: 키를 누를 때마다 GPIO8의 내장 LED를 한 번 깜박여 보세요.
  • 보통: SDA GPIO10과 SCL GPIO8을 사용하여 시리얼 모니터 대신 I2C LCD에 각 키를 표시해 보세요.
  • 보통: 3번 틀리면 30초 동안 키패드를 잠가 보세요.
  • 어려움: 전원이 꺼져도 유지되도록 비밀번호를 NVS 플래시에 저장하고, 비밀번호를 바꾸는 키 입력 순서를 추가해 보세요.
  • 어려움: 직접 배선 대신 PCF8574 I/O 확장기를 사용하여 키패드에 핀 2개만 필요하게 만들어 보세요.

댓글