ESP32 MicroPython TM1637 4자리 7세그먼트 디스플레이
ESP32는 IoT 및 임베디드 프로젝트에 널리 사용되는 강력한 Wi-Fi 지원 마이크로컨트롤러입니다. MicroPython과 DIYables TM1637 4자리 7세그먼트 디스플레이 모듈을 결합하면 밝은 LED 디스플레이에 숫자, 텍스트, 온도, 시간을 손쉽게 표시할 수 있습니다.
이 튜토리얼에서 다루는 내용:
- TM1637 4자리 7세그먼트 디스플레이를 ESP32에 연결하기 — 데이터 핀 2개만 필요합니다.
- 선택적 0 채우기로 정수 표시하기.
- 텍스트 및 특수 문자(도수 기호) 표시하기.
- 콜론 구분자로 HH:MM 형식 시간 표시하기.
- 밝기 조절하기 (8단계).
- Off()/on()으로 디스플레이 깜빡이기.

필요한 부품
| 1 | × | 38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow | 쿠팡 | 아마존 | |
| 1 | × | (또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 쿠팡 | 아마존 | |
| 1 | × | (또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 아마존 | |
| 1 | × | (또는) ESP32 Uno-form board | 아마존 | |
| 1 | × | (또는) ESP32 S3 Uno-form board | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | TM1637 4-digit 7-segment 디스플레이 | 쿠팡 | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Breakout Expansion Board for ESP32 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 |
TM1637 4자리 7세그먼트 디스플레이 모듈
TM1637은 최대 6자리의 멀티플렉싱과 세그먼트 구동을 모두 처리하는 전용 LED 드라이버 IC입니다. 이 모듈은 두 번째와 세 번째 자릿수 사이에 콜론 구분자가 있는 4자리 7세그먼트 LED 디스플레이를 구동하며, 시계 및 타이머 애플리케이션에 이상적입니다.
74HC595와 같은 시프트 레지스터 기반 디스플레이와 달리, TM1637에는 내장 디스플레이 메모리가 있습니다. 칩에 데이터를 쓰면 타이머 인터럽트나 갱신 루프 없이 자동으로 디스플레이를 켜진 상태로 유지합니다. TM1637은 또한 8단계 밝기(0–7)를 지원하며 통신에 GPIO 핀 2개(CLK와 DIO)만 사용합니다.
모듈은 I2C와 유사한(단 표준 I2C는 아님) 2선 시리얼 프로토콜로 통신합니다. 라이브러리가 모든 프로토콜 세부 사항을 처리하므로 print()나 print_time()과 같은 간단한 메서드만 호출하면 됩니다.
핀 설명
| 핀 | 용도 | ESP32 연결 |
|---|---|---|
| CLK | 직렬 클럭 입력 | GPIO21에 연결 |
| DIO | 직렬 데이터 입력/출력 | GPIO22에 연결 |
| VCC | 3.3V~5V 전원 입력 | 3.3V에 연결 |
| GND | 접지 | GND에 연결 |

배선
ESP32는 3.3V 로직으로 동작합니다. TM1637 모듈은 3.3V와 5V 모두 지원하므로 레벨 시프터 없이 ESP32와 직접 호환됩니다.
| TM1637 모듈 | ESP32 | 비고 |
|---|---|---|
| CLK | GPIO21 | 클럭 라인 |
| DIO | GPIO22 | 데이터 I/O 라인 |
| VCC | 3.3V | 전원 |
| GND | GND | 접지 |

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
팁: ESP32의 사용 가능한 GPIO 핀을 자유롭게 사용할 수 있습니다. 코드에서 핀 번호만 업데이트하면 됩니다.
빠른 시작
Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법:
- Thonny IDE가 컴퓨터에 설치되어 있는지 확인합니다.
- ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인합니다.
- ESP32에서 MicroPython을 처음 사용하는 경우, ESP32 마이크로파이썬 - 시작하기 가이드를 참조하세요.
- 제공된 배선도에 따라 ESP32 보드를 TM1637 모듈에 연결합니다.
- USB 케이블로 ESP32 보드를 컴퓨터에 연결합니다.
- 컴퓨터에서 Thonny IDE를 엽니다.
- Thonny IDE에서 Tools Options로 이동합니다.
- Interpreter 탭에서 드롭다운 메뉴의 MicroPython (ESP32)를 선택합니다.
- 올바른 포트가 선택되어 있는지 확인합니다. Thonny IDE가 자동으로 감지하지만, 수동으로 선택해야 할 수도 있습니다(Windows에서는 COM3, Linux에서는 /dev/ttyUSB0).
- Thonny IDE의 Tools Manage packages로 이동합니다.
- "DIYables-MicroPython-4Digit7Segment-TM1637"를 검색하여 DIYables에서 만든 TM1637 4자리 7세그먼트 디스플레이 라이브러리를 찾습니다.
- DIYables-MicroPython-4Digit7Segment-TM1637를 클릭한 후 Install 버튼을 클릭하여 라이브러리를 설치합니다.

- 제공된 MicroPython 코드를 복사하여 Thonny 편집기에 붙여넣습니다.
- 다음 방법으로 코드를 ESP32에 저장합니다:
- Save 버튼을 클릭하거나 Ctrl+S를 누릅니다.
- 저장 대화상자에서 MicroPython device를 선택합니다.
- 파일 이름을 main.py로 지정합니다.
- 녹색 Run 버튼을 클릭하거나 F5를 눌러 스크립트를 실행합니다.
- 결과를 관찰합니다 — 4자리 7세그먼트 디스플레이에 숫자, 텍스트, 시간이 예제에 따라 표시됩니다.
기본 코드 템플릿
ESP32 코드 — 정수 표시
실행해보기
- 모듈을 배선하고 USB로 ESP32를 연결합니다.
- Thonny IDE로 코드를 업로드합니다.
- 디스플레이가 여러 정수(0, 42, 1234, -5, -123, 9999)를 순환하고 0으로 채워진 42를 "0042"로 표시합니다.
정수 표시 참조
| 메서드 호출 | 디스플레이 표시 | 비고 |
|---|---|---|
| display.print(0) | 0 | 오른쪽 정렬 단일 자리 |
| display.print(42) | 42 | 오른쪽 정렬 |
| display.print(1234) | 1234 | 4자리 전체 사용 |
| display.print(-5) | -5 | 음수 기호 + 자리 |
| display.print(-123) | -123 | 최대 3자리 음수 |
| display.print(9999) | 9999 | 최대 표시 가능 값 |
| display.print(10000) | Err | 오버플로 오류 |
| display.print(42, zero_pad=True) | 0042 | 4자리로 0 채우기 |
ESP32 코드 — 텍스트, 도수 기호, 온도 표시
텍스트 및 온도 참조
| 메서드 호출 | 디스플레이 표시 | 비고 |
|---|---|---|
| display.print("HELP") | HELP | 텍스트 표시 |
| display.print("Hi") | Hi | 왼쪽 정렬, 2자 |
| display.print("COOL") | COOL | 4자 |
| display.print_temperature(25, 'C') | 25°C | 도수 기호와 함께 섭씨 |
| display.print_temperature(72, 'F') | 72°F | 화씨 |
| display.print_temperature(-5, 'C') | -5°C | 음수 온도 |
| display.print_temperature(100) | 100° | 3자리, 단위 공간 없음 |
도수 기호는 display.DEGREE 상수를 통해 문자열에서 직접 사용할 수도 있습니다.
ESP32 코드 — 깜빡이는 콜론으로 시간 표시
시간 표시 참조
| 메서드 호출 | 디스플레이 표시 | 비고 | |
|---|---|---|---|
| display.print_time(12, 30) | 12 | 30 | 콜론 켜짐 |
| display.print_time(9, 5) | 09 | 05 | 시·분 0 채우기 |
| display.print_time(12, 30, colon=False) | 12 30 | 콜론 꺼짐 (깜빡임 효과) |
시계 디스플레이에서 일반적으로 볼 수 있는 깜빡이는 콜론 효과를 만들려면 500ms마다 colon 파라미터를 토글합니다.
ESP32 코드 — 개별 자릿수 및 콜론 설정
개별 자릿수 참조
| 메서드 호출 | 설명 |
|---|---|
| display.set_number(position, number) | 위치 0-3에 단일 자리(0-9) 설정 |
| display.set_char(position, char) | 위치 0-3에 문자 설정 |
| display.set_colon(True) | 1번과 2번 자릿수 사이의 콜론 켜기 |
| display.set_colon(False) | 콜론 끄기 |
set_number(), set_char(), set_colon()을 혼합하여 자릿수별로 사용자 정의 디스플레이를 구성할 수 있습니다.
ESP32 코드 — 디스플레이 깜빡이기
깜빡임 참조
display.off()로 디스플레이를 끄고 display.on()으로 다시 켭니다. 디스플레이 데이터가 유지됩니다 — on()을 호출하면 print()를 다시 호출하지 않아도 이전 내용이 복원됩니다.
라이브러리 참조
전체 API 문서(모든 생성자, 메서드, 상수 포함)는 DIYables_MicroPython_4Digit7Segment_TM1637 라이브러리 참조를 확인하세요.
다음 단계
- DS3231 RTC 모듈과 결합하여 실시간 시계를 만들어보세요.
- DHT11/DHT22 센서를 추가하여 실시간 온도 측정값을 표시해보세요.
- 버튼을 사용하여 시계 모드와 온도 모드 사이를 전환해보세요.