ESP32 C3 Super Mini DIP 스위치
DIP(Dual In-line Package) 스위치는 손으로 설정하는 작은 슬라이드 스위치 묶음입니다. 장치 주소, 통신 설정, 보안 코드, 동작 모드 등에 사용됩니다. 이 튜토리얼에서는 ESP32 C3 Super Mini에서 DIP 스위치를 사용하는 방법을 보여줍니다.
이 튜토리얼에서 배울 내용:
- DIP 스위치란 무엇이며 각 포지션이 어떻게 동작하는지
- DIP 스위치를 ESP32 C3 Super Mini에 연결하는 방법
- 코드에서 각 포지션의 ON/OFF 상태를 읽는 방법
- 포지션들을 하나의 숫자로 바꾸는 방법 (이진 인코딩)
- DIP 스위치를 사용하는 프로젝트 아이디어

필요한 하드웨어
| 1 | × | ESP32 C3 Super Mini | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | DIP 스위치 | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 |
DIP 스위치 소개
DIP 스위치는 하나의 패키지에 들어 있는 작은 슬라이드 스위치 묶음이며, 각각의 작은 스위치를 "포지션"이라고 부릅니다.
주요 특징:
- 하나의 부품에 여러 스위치: 각 포지션이 독립적인 ON/OFF 스위치입니다
- 손으로 설정: 펜 끝이나 작은 드라이버로 포지션을 밉니다
- 설정 유지: 전원을 꺼도 값이 유지됩니다
- 극성 없음: 한 포지션의 두 핀은 서로 바꿔 연결해도 됩니다
- 초보자 친화적: ESP32 C3 Super Mini의 3.3V 로직과 함께 동작합니다
기술 사양:
- 일반적인 크기: 2, 4, 5, 6, 8, 10 포지션
- 핀 수: 포지션당 2개의 핀, 각 줄에 절반씩
- 스위치 종류: 포지션당 기계식 SPST
- 접촉 저항: ON일 때 거의 0옴, OFF일 때 매우 높음
- 여기서 사용하는 로직 레벨: ESP32 C3 Super Mini의 3.3V
각 포지션은 숫자의 한 비트를 나타냅니다. 포지션을 ON과 OFF 사이로 밀어서 원하는 숫자를 설정합니다.
핀 배치
DIP 스위치에는 두 줄의 핀이 있으며, 각 줄의 핀 수는 포지션 수와 같습니다.

- 위쪽 줄 핀: 각 슬라이드 스위치의 한쪽
- 아래쪽 줄 핀: 같은 슬라이드 스위치의 다른 쪽
- 핀 쌍: 서로 마주 보는 두 핀이 하나의 포지션을 이룹니다
- 정해진 순서 없음: 양쪽을 서로 바꿔 사용할 수 있습니다
- 예: 4포지션 DIP 스위치에는 총 8개의 핀이 있으며, 양쪽에 4개씩 있습니다
작동 원리
DIP 스위치의 각 포지션은 열거나 닫을 수 있는 전선처럼 동작합니다.
- ON 포지션: 스위치가 닫혀 있어 전류가 흐를 수 있습니다
- OFF 포지션: 스위치가 열려 있어 전류가 차단됩니다
포지션의 한쪽을 GND에, 다른 쪽을 풀업 입력으로 설정한 ESP32 C3 Super Mini 핀에 연결합니다. 아래 표는 읽히는 값을 보여줍니다:
| DIP 스위치 포지션 | 이진 표현 | 회로 상태 | ESP32 C3 Super Mini 핀 상태 |
|---|---|---|---|
| ON | 1 | 닫힘 | LOW |
| OFF | 0 | 열림 | HIGH |
※ 주의:
ESP32 C3 Super Mini는 3.3V 로직만 사용합니다. 어떤 GPIO 핀에도 5V 신호를 연결하지 마세요.
다음 부분에서는 4포지션 DIP 스위치를 예로 사용합니다. 같은 방법을 2포지션, 3포지션, 5포지션, 6포지션, 8포지션, 10포지션 DIP 스위치에도 적용할 수 있습니다.
배선도
각 포지션의 한쪽을 GPIO 핀에 연결하고, 모든 포지션의 다른 쪽을 GND에 연결합니다.
- 참고: 3.3V 로직만 사용하세요. GPIO 핀에 5V를 넣지 마세요.
- 참고: GPIO8과 GPIO9는 부트 스트래핑 핀입니다. 보드에 전원을 넣거나 리셋하기 전에 포지션 3과 4를 OFF로 밀어 두세요. 그렇지 않으면 보드가 정상적으로 시작되지 않습니다.
- 참고: GPIO20이나 GPIO21은 사용하지 마세요 — 시리얼 모니터가 이 핀들을 사용합니다.
- 참고: 한 포지션의 두 핀은 서로 바꿔 연결해도 됩니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| DIP 스위치 핀 | ESP32 C3 Super Mini 핀 |
|---|---|
| 포지션 1 (A쪽) | GPIO6 |
| 포지션 2 (A쪽) | GPIO7 |
| 포지션 3 (A쪽) | GPIO8 |
| 포지션 4 (A쪽) | GPIO9 |
| 포지션 1~4 (B쪽) | GND |
ESP32 C3 Super Mini 코드 - DIP 스위치
두 개의 코드로 배워 봅니다:
- DIP 스위치 각 포지션의 ON/OFF 상태 읽기
- 포지션들을 숫자로 인코딩하기
ESP32 C3 Super Mini 코드 - DIP 스위치의 ON/OFF 상태 읽기
첫 번째 스케치는 포지션마다 한 줄씩 모든 포지션의 상태를 출력합니다.
이 코드가 하는 일:
- GPIO6, GPIO7, GPIO8, GPIO9를 내부 풀업이 켜진 입력으로 설정합니다
- 0.5초마다 DIP 스위치의 각 포지션을 읽습니다
- 핀이 LOW로 읽히면 스위치가 닫힌 것이므로 ON을 출력합니다
- 핀이 HIGH로 읽히면 스위치가 열린 것이므로 OFF를 출력합니다
- 시리얼 모니터를 읽기 쉽도록 짧은 지연을 추가합니다
빠른 단계
- ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
- 부품 연결: 위의 배선도에 따라 DIP 스위치를 ESP32 C3 Super Mini에 연결합니다.
- 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.
- Arduino IDE 열기: Arduino IDE 소프트웨어를 실행합니다.
- 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
- 포트 선택: Tools > Port에서 ESP32 C3 Super Mini의 COM 포트를 선택합니다.
- 코드 업로드: 위 코드를 복사하여 Arduino IDE에 붙여넣은 다음, Upload 버튼을 클릭합니다.
- 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
- 포지션 밀기: DIP 스위치의 각 포지션을 하나씩 ON으로 옮깁니다.
- 결과 확인: 시리얼 모니터에 새 상태가 출력되는 것을 확인합니다.
- 전문가 팁: 어떤 포지션이 항상 ON으로 읽힌다면, 그 포지션의 GND 선이 GPIO 선에 닿아 있지 않은지 확인하세요.
ESP32 C3 Super Mini 코드 - DIP 스위치의 상태를 숫자로 인코딩하기
두 번째 스케치는 네 개의 포지션을 하나의 십진수로 바꿉니다.
이 코드가 하는 일:
- 같은 네 개의 핀 GPIO6, GPIO7, GPIO8, GPIO9를 읽습니다
- 포지션 1을 최상위 비트로, 포지션 4를 최하위 비트로 사용합니다
- 포지션이 ON이면 해당 비트를 1로 설정합니다
- 최종 숫자를 출력하며, 4포지션 DIP 스위치의 경우 0부터 15까지입니다
- 0.5초마다 읽기를 반복합니다
빠른 단계
- ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
- 같은 배선 유지: 위의 배선도는 바뀌지 않습니다.
- 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 PC에 연결합니다.
- Arduino IDE 열기: Arduino IDE 소프트웨어를 실행합니다.
- 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
- 포트 선택: Tools > Port에서 ESP32 C3 Super Mini의 COM 포트를 선택합니다.
- 코드 업로드: 위의 두 번째 코드를 복사하여 Arduino IDE에 붙여넣은 다음, Upload 버튼을 클릭합니다.
- 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
- 포지션 밀기: DIP 스위치의 각 포지션을 하나씩 ON으로 옮깁니다.
- 결과 확인: 포지션을 밀 때마다 출력되는 숫자가 바뀝니다.
- 전문가 팁: 8포지션 DIP 스위치를 사용하면 0부터 255까지 얻을 수 있습니다. POSITION_NUM만 바꾸고 핀을 더 추가하면 됩니다.
값은 각 슬라이드 스위치의 위치에 따라 달라집니다. 아래 표는 4포지션 DIP 스위치에서 ON/OFF 위치와 정수 값의 대응 관계를 보여줍니다:
| 포지션-1 | 포지션-2 | 포지션-3 | 포지션-4 | 이진 값 | 십진 값 |
|---|---|---|---|---|---|
| OFF | OFF | OFF | OFF | 0000 | 0 |
| OFF | OFF | OFF | ON | 0001 | 1 |
| OFF | OFF | ON | OFF | 0010 | 2 |
| OFF | OFF | ON | ON | 0011 | 3 |
| OFF | ON | OFF | OFF | 0100 | 4 |
| OFF | ON | OFF | ON | 0101 | 5 |
| OFF | ON | ON | OFF | 0110 | 6 |
| OFF | ON | ON | ON | 0111 | 7 |
| ON | OFF | OFF | OFF | 1000 | 8 |
| ON | OFF | OFF | ON | 1001 | 9 |
| ON | OFF | ON | OFF | 1010 | 10 |
| ON | OFF | ON | ON | 1011 | 11 |
| ON | ON | OFF | OFF | 1100 | 12 |
| ON | ON | OFF | ON | 1101 | 13 |
| ON | ON | ON | OFF | 1110 | 14 |
| ON | ON | ON | ON | 1111 | 15 |
라인별 코드 설명
위의 ESP32 C3 Super Mini 코드에는 라인별 설명이 포함되어 있습니다. 코드의 주석을 읽어 보세요!
응용/프로젝트 아이디어
ESP32 C3 Super Mini에서 DIP 스위치를 활용하는 간단한 방법입니다.
- 장치 주소: 각 보드에 번호를 부여하여 여러 보드가 하나의 버스를 공유하게 합니다.
- 모드 선택기: 코드를 바꾸지 않고 16가지 프로그램 모드 중 하나를 선택합니다.
- 비밀 코드 잠금: 올바른 패턴이 설정되었을 때만 릴레이를 엽니다.
- 센서 보정: 센서 측정값의 임계값 단계를 선택합니다.
- Wi-Fi 프로필 선택기: 보드가 연결할 저장된 Wi-Fi 네트워크를 선택합니다.
- LED 패턴 선택기: 포지션 하나를 밀어서 조명 애니메이션을 바꿉니다.
도전해 보기
ESP32 C3 Super Mini와 DIP 스위치로 한 단계 더 나아가 보세요.
- 쉬움: 포지션 1이 ON일 때 GPIO3에 연결된 외부 LED를 켜 보세요.
- 쉬움: Serial.println(encoded_state, BIN)으로 값을 이진수로 출력해 보세요.
- 보통: 인코딩된 숫자가 바뀔 때만 메시지를 출력해 보세요.
- 보통: 숫자를 사용하여 깜박임 속도를 빠르게부터 느리게까지 설정해 보세요.
- 어려움: GPIO2와 GPIO4에 5번째와 6번째 포지션을 추가하여 0부터 63까지의 값을 사용해 보세요.
- 어려움: DIP 스위치 값을 Wi-Fi로 웹 페이지에 보내 보세요.