ESP32 C3 Super Mini 리미트 스위치
리미트 스위치는 움직이는 부품이 이동 끝 지점에 도달했을 때 ESP32 C3 Super Mini에 알려줍니다. 모터, 문, 슬라이더, 3D 프린터 축을 보호하는 저렴하고 매우 신뢰할 수 있는 방법입니다. 이 ESP32 C3 Super Mini 리미트 스위치 튜토리얼에서는 배선과 코드를 간단한 단계로 보여줍니다.
이 튜토리얼에서 배울 내용:
- 리미트 스위치가 무엇이며 어떻게 작동하는지
- C, NO, NC 핀의 역할
- 리미트 스위치를 ESP32 C3 Super Mini에 연결하는 방법
- 코드에서 TOUCHED / UNTOUCHED 상태를 읽는 방법
- EzButton 라이브러리로 스위치를 디바운스하는 방법

이 튜토리얼은 리미트 스위치만 다룹니다. 다음과 혼동하지 마세요:
필요한 하드웨어
| 1 | × | ESP32 C3 Super Mini | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | 리미트 스위치 Limit Switch (KW12-3) | 쿠팡 | 아마존 | |
| 1 | × | 리미트 스위치 Limit Switch Module | 아마존 | |
| 1 | × | 리미트 스위치 Limit Switch (V-153-1C25) | 아마존 | |
| 1 | × | 리미트 스위치 Limit Switch (V-155-1C25) | 아마존 | |
| 1 | × | 리미트 스위치 Limit Switch (V-156-1C25) | 쿠팡 | 아마존 | |
| 1 | × | Wires | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (옵션) DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 |
리미트 스위치에 대하여
리미트 스위치는 움직이는 물체가 한계 지점에 도달했을 때 그 물체에 의해 눌리는 기계식 스위치입니다.
주요 특징:
- 기계식: 금속 레버나 롤러가 접점을 누릅니다.
- 전원 불필요: 스위치 자체에는 공급 전압이 필요 없습니다.
- 두 가지 모드: 상시 개방(NO) 또는 상시 폐쇄(NC)로 작동합니다.
- 긴 레버: 천천히 움직이는 부품으로도 쉽게 누를 수 있습니다.
- 높은 신뢰성: 기계, 문, 이동 레일용으로 만들어졌습니다.
기술 사양:
- 일반 모델: KW12-3 및 V-156-1C25.
- 핀: 3핀 (C, NO, NC).
- 접점 유형: SPDT (공통 핀 하나, 출력 두 개).
- ESP32 C3 Super Mini용 신호: 3.3V 로직만 사용합니다. 스위치를 GND 또는 3.3V에 연결하고, 절대 5V에 연결하지 마세요.
- 출력: 간단한 개방 또는 폐쇄 접점으로, 어떤 디지털 핀으로도 읽을 수 있습니다.
핀아웃
리미트 스위치에는 여러 종류가 있습니다. KW12-3과 V-156-1C25가 가장 인기 있습니다. 둘 다 핀이 세 개입니다.
- C 핀: 공통 핀입니다. 상시 개방 모드와 상시 폐쇄 모드 모두에서 사용됩니다.
- NO 핀: 상시 개방 핀입니다. 상시 개방 모드에서 사용됩니다.
- NC 핀: 상시 폐쇄 핀입니다. 상시 폐쇄 모드에서 사용됩니다.

작동 원리
리미트 스위치는 보통 두 개의 핀만 사용합니다: C 핀과 나머지 두 핀 중 하나입니다.
- 눌리지 않음: C가 NC에 연결됩니다. C는 NO에 연결되지 않습니다.
- 눌림: C가 NO에 연결됩니다. C는 NC에 연결되지 않습니다.
이로써 리미트 스위치를 사용하는 방법은 네 가지가 됩니다. 아래 표는 각 방법의 배선과 ESP32 C3 Super Mini가 읽는 상태를 보여줍니다.
| C 핀 | NO 핀 | NC 핀 | ESP32 C3 Super Mini 입력 핀의 상태 | |
|---|---|---|---|---|
| 1 | GND | ESP32 C3 Super Mini 입력 핀 (풀업 사용) | 연결 안 함 | 눌리지 않으면 HIGH, 눌리면 LOW |
| 2 | GND | 연결 안 함 | ESP32 C3 Super Mini 입력 핀 (풀업 사용) | 눌리지 않으면 LOW, 눌리면 HIGH |
| 3 | 3.3V | ESP32 C3 Super Mini 입력 핀 (풀다운 사용) | 연결 안 함 | 눌리지 않으면 LOW, 눌리면 HIGH |
| 4 | 3.3V | 연결 안 함 | ESP32 C3 Super Mini 입력 핀 (풀다운 사용) | 눌리지 않으면 HIGH, 눌리면 LOW |
네 가지 방법 각각에서 GND 핀과 ESP32 C3 Super Mini 입력 핀을 서로 바꾸면, ESP32 C3 Super Mini를 리미트 스위치에 연결하는 방법은 총 여덟 가지가 됩니다.
이 튜토리얼에서는 추가 저항이 필요 없는 첫 번째 방법만 사용합니다. ESP32 C3 Super Mini에는 칩 안에 내부 풀업 저항이 내장되어 있습니다.
WARNING
ESP32 C3 Super Mini는 3.3V 로직에서만 작동합니다. C 핀을 절대 5V 전원에 연결하지 마세요. GPIO 핀에 5V가 들어가면 보드가 손상될 수 있습니다. GND 또는 3.3V 핀만 사용하세요.
배선 다이어그램
C 핀을 GND에, NO 핀을 ESP32 C3 Super Mini의 빈 GPIO 핀에 연결합니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| 리미트 스위치 핀 | ESP32 C3 Super Mini 핀 |
|---|---|
| C | GND |
| NO | GPIO7 |
| NC | 연결 안 함 |
- 참고: GPIO7은 빈 핀입니다. GPIO8(내장 LED), GPIO9(부트 핀), GPIO20 또는 GPIO21(시리얼 모니터 UART)은 사용하지 마세요.
- 참고: 외부 저항은 필요 없습니다. 코드에서 내부 풀업 저항을 켭니다.
- 참고: 스위치 전선은 짧게 유지하세요. 긴 전선은 노이즈를 받아 잘못된 값을 읽게 됩니다.
ESP32 C3 Super Mini 코드 - 리미트 스위치
버튼과 마찬가지로 리미트 스위치도 디바운싱이 필요하며, ezButton 라이브러리가 이 작업을 대신 해줍니다.
- 디바운스가 필요한 이유: 금속 접점이 튀기 때문에 한 번의 접촉이 여러 번의 접촉처럼 보일 수 있습니다. 버튼/리미트 스위치에 디바운스가 필요한 이유는?을 참조하세요.
- ezButton을 사용하는 이유: ezButton 라이브러리는 디바운싱을 처리하고 내부 풀업 저항을 대신 켜줍니다.
이 코드가 하는 일:
- GPIO7을 내부 풀업 저항이 있는 입력으로 설정합니다.
- 50 ms 필터로 리미트 스위치를 디바운스합니다.
- 매 루프마다 TOUCHED 또는 UNTOUCHED를 출력합니다.
- 상태가 UNTOUCHED에서 TOUCHED로 바뀌면 메시지를 출력합니다.
- 상태가 TOUCHED에서 UNTOUCHED로 바뀌면 메시지를 출력합니다.
※ 주의:
리미트 스위치의 일반적인 두 가지 사용 사례는 다음과 같습니다:
- 첫 번째 사용 사례: 스위치가 TOUCHED이면 특정 동작을 수행합니다. 입력 상태가 UNTOUCHED이면 반대 동작을 수행합니다.
- 두 번째 사용 사례: 스위치 상태가 UNTOUCHED에서 TOUCHED로(또는 TOUCHED에서 UNTOUCHED로) 바뀌면 특정 동작을 수행합니다.
빠른 단계
- ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
- 부품 연결: 위의 배선 다이어그램에 따라 리미트 스위치를 ESP32 C3 Super Mini에 연결합니다.
- 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.
- IDE 열기: Arduino IDE 소프트웨어를 실행합니다.
- 라이브러리 설치: ezButton 라이브러리를 설치합니다. 설치 방법을 참조하세요.
- 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
- 포트 선택: Tools > Port에서 보드의 COM 포트를 선택합니다.
- 코드 업로드: Arduino IDE에서 Upload 버튼을 클릭합니다.
- 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
- 테스트: 리미트 스위치 레버를 몇 번 눌렀다 놓습니다.
- 출력 확인: 시리얼 모니터의 메시지를 확인합니다.
- 전문가 팁: 상태가 전혀 바뀌지 않으면 NO 핀과 NC 핀을 바꿔보세요. 저렴한 스위치 중에는 라벨이 반대로 인쇄된 것이 많습니다.
코드 라인별 설명
위의 ESP32 C3 Super Mini 코드에는 라인별 설명이 포함되어 있습니다. 코드의 주석을 읽어보세요!
응용/프로젝트 아이디어
리미트 스위치는 움직이는 부품이 안전한 지점에서 멈춰야 할 때마다 사용됩니다.
- 3D 프린터 엔드스톱: 축이 프레임에 부딪히기 전에 멈춥니다.
- 자동문: 미닫이문이 완전히 열렸는지 또는 완전히 닫혔는지 감지합니다.
- 서랍 알람: 서랍이나 캐비닛이 열리면 알림을 보냅니다.
- 모터 보호: 리니어 액추에이터가 이동 끝에 도달하면 전원을 차단합니다.
- 물체 카운터: 작은 컨베이어 벨트 위를 지나가는 상자 수를 셉니다.
- 안전 덮개: 기계의 뚜껑이 열리면 기계를 멈춥니다.
도전 과제
리미트 스위치와 ESP32 C3 Super Mini로 연습할 수 있는 작은 프로젝트들을 해보세요.
- 쉬움: 리미트 스위치가 눌려 있는 동안 GPIO8의 내장 LED를 켜보세요.
- 쉬움: 스위치가 눌린 횟수를 세고 총합을 출력해보세요.
- 보통: GPIO6과 GPIO7에 리미트 스위치 두 개를 사용하여 레일의 양쪽 끝을 감지해보세요.
- 보통: 리미트 스위치가 눌리자마자 서보 모터를 멈춰보세요.
- 고급: NO 모드 대신 NC 모드를 사용하여 전선이 끊어진 경우에도 알람으로 알리도록 해보세요.