아두이노 우노 Q TM1637 4자리 7-세그먼트 디스플레이
Arduino UNO Q로 밝은 LED 디스플레이에 숫자와 시간을 표시하고 싶으신가요? 이 초보자 친화적 튜토리얼은 Arduino UNO Q와 함께 TM1637 4자리 7-세그먼트 디스플레이를 사용하는 방법을 단계별로 보여줍니다.
이 튜토리얼에서 배울 내용:
- TM1637 4자리 7-세그먼트 디스플레이가 무엇이며 어떻게 작동하는지
- TM1637 디스플레이를 Arduino UNO Q에 배선하는 방법
- MCU (C/C++ Arduino 코드)를 프로그래밍하여 정수, 실수 및 카운트 값을 표시하는 방법
- Linux 측 (Python)과 MCU 측 (C/C++)을 모두 프로그래밍하여 Bridge를 통해 디스플레이를 원격으로 제어하는 방법
- Arduino UNO Q로 Telegram 메시지를 전송하여 7-세그먼트 디스플레이를 업데이트하는 방법
- Arduino UNO Q에서 OpenClaw를 사용하여 7-세그먼트 디스플레이를 제어하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | TM1637 4-digit 7-segment 디스플레이 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
TM1637 4자리 7-세그먼트 디스플레이 소개
TM1637 4자리 7-세그먼트 디스플레이는 전용 드라이버 IC를 사용하여 디스플레이 데이터를 내부에 저장하므로 MCU에서 2개의 신호 와이어만 필요합니다.
주요 사양 및 기능:
- 자릿수: 4자리 7-세그먼트, 소수점 포함
- 콜론 LED: 자릿수 1과 2 사이 — 시계 스타일 HH:MM 디스플레이에 완벽
- 드라이버 IC: TM1637 — 자체 메모리에 데이터 저장, 지속적인 업데이트 불필요
- 인터페이스: 2-와이어 직렬 (CLK + DIO) — 간단하고 최소한의 배선
- 밝기: 8단계 조정 가능한 밝기
- 전원: 3.3V 또는 5V 호환
- 라이브러리: DIYables_4Digit7Segment_TM1637 — 정수, 실수, 텍스트, 온도 및 시간 지원
| 핀 | 기능 | 설명 |
|---|---|---|
| CLK | Clock Signal | Serial clock input |
| DIO | Data I/O | Serial data input/output |
| VCC | Power | 3.3V or 5V supply |
| GND | Ground | Common ground |
핀아웃

- CLK: 클록 신호 — MCU와 TM1637 간 데이터 전송 동기화
- DIO: 데이터 입력/출력 — 드라이버 IC와 직렬 데이터 전송
- VCC: 전원 공급 — 3.3V 또는 5V 연결
- GND: 접지 — 공통 접지
배선 다이어그램
TM1637 4자리 7-세그먼트 디스플레이를 Arduino UNO Q MCU에 표시된 대로 연결합니다:

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| TM1637 핀 | Arduino UNO Q MCU 핀 | 설명 |
|---|---|---|
| CLK | D9 | Clock signal |
| DIO | D10 | Data input/output |
| VCC | 5V | Power supply |
| GND | GND | Ground |
Arduino UNO Q 코드
Arduino UNO Q는 함께 작동하는 두 개의 프로세서를 가지고 있습니다:
- STM32 MCU는 두 개의 디지털 핀을 통해 TM1637 7-세그먼트 디스플레이를 직접 구동합니다
- Qualcomm MPU는 Debian Linux를 실행하며 Wi-Fi, Python 및 클라우드 연결을 처리합니다
- 이 섹션에서는 MCU만 프로그래밍됩니다 — Linux 측은 유휴 상태입니다. 나중 섹션에서 Bridge를 통해 두 프로세서가 함께 작동하는 방법을 보여줍니다.
아래 스케치는 7-세그먼트 디스플레이에서 0부터 9999까지 카운트하며 매초 증가합니다.
참고: 74HC595 디스플레이와 달리 TM1637은 내부 메모리에 데이터를 저장합니다 — loop() 새로고침 함수를 호출할 필요가 없습니다. delay()를 자유롭게 사용할 수 있습니다.
빠른 단계
Arduino UNO Q를 처음 사용하시나요? 계속 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따라 개발 환경을 준비하세요.
- 연결: TM1637 디스플레이를 표시된 대로 Arduino UNO Q에 배선한 후 USB-C 케이블을 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 보드를 감지할 때까지 기다립니다 — 첫 실행 시 몇 분이 걸릴 수 있습니다.
- 새로운 앱 생성: Create New App 버튼을 클릭합니다.

- 앱에 이름을 지정합니다 (예: DIYables_7SegTM1637).
- Create를 클릭하여 확인합니다.
- 새로운 앱 내에 폴더 및 파일 집합이 생성됩니다.

- sketch/sketch.ino 파일을 찾습니다 — MCU 스케치를 붙여넣을 위치입니다.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Search for DIYables_4Digit7Segment_TM1637 created by DIYables.io and click the Install button.
- 업로드: Arduino App Lab의 Run 버튼을 클릭하여 STM32로 컴파일하고 업로드합니다.

TM1637 디스플레이가 0부터 9999까지 카운트하기 시작하며 매초 증가합니다!
- 유용한 팁: setup()에서 display.setBrightness(7)을 사용하여 최대 밝기 수준을 설정합니다 (0 = 가장 어둡게, 7 = 가장 밝게).
Bridge: Linux + MCU
이 섹션은 Arduino UNO Q의 두 프로세서를 모두 프로그래밍하여 Linux 측에서 TM1637 디스플레이를 원격으로 제어하는 방법을 보여줍니다:
- TM1637 7-세그먼트 디스플레이는 MCU (STM32)에 연결됩니다 — MCU는 2-와이어 직렬을 통해 값을 씁니다
- MPU는 디스플레이를 직접 제어할 수 없습니다 — Bridge.call()을 통해 MCU에 업데이트 값을 요청해야 합니다
- MPU에는 Wi-Fi가 있습니다 — 전체 Debian Linux를 실행하며 인터넷에 연결하고 디스플레이 업데이트를 원격으로 푸시할 수 있습니다
- Arduino_RouterBridge는 두 프로세서 간 RPC 통신을 가능하게 합니다
- ⚠️ /dev/ttyHS1 (Linux)과 Serial1 (MCU)는 라우터에 예약되어 있습니다 — 사용자 코드에서 절대 열지 마세요
요약: MCU가 TM1637 디스플레이를 구동 → MPU가 값을 전송 → MPU가 인터넷을 통해 어디서나 디스플레이를 업데이트할 수 있습니다.
MCU 코드 (Bridge)
Python 코드 (Bridge)
빠른 단계
- 연결: TM1637 디스플레이를 Arduino UNO Q에 배선하고 USB-C 케이블을 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 보드가 감지될 때까지 기다립니다.
- 새로운 앱 생성: Create New App을 클릭하고 DIYables_7SegTM1637Bridge라고 이름을 지정한 후 Create를 클릭합니다.
- MCU 스케치 붙여넣기: 위의 MCU Bridge 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다.
- Python 코드 붙여넣기: 위의 Python Bridge 코드를 복사하여 앱의 Python 파일에 붙여넣습니다.
- 업로드: Arduino App Lab의 Run 버튼을 클릭합니다.

App Lab 콘솔 출력
Telegram
Telegram을 사용하여 TM1637 7-세그먼트 디스플레이를 어디서나 제어합니다. 휴대폰에서 숫자를 보내면 디스플레이가 즉시 업데이트됩니다.
MCU 스케치: 이전 Bridge 섹션의 동일한 MCU 스케치를 유지합니다.
Python 코드 (Telegram)
빠른 단계
- YOUR_TELEGRAM_BOT_TOKEN을 BotFather로부터 얻은 실제 봇 토큰으로 바꿉니다.
- YOUR_CHAT_ID를 Telegram 채팅 ID로 바꿉니다.
- 이 Python 코드를 앱의 Python 파일에 붙여넣습니다 (동일한 MCU 스케치 유지).
- Run 버튼을 클릭합니다. Telegram을 열고 봇에 명령을 보냅니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial
프로젝트 아이디어
Arduino UNO Q와 함께 TM1637 7-세그먼트 디스플레이를 사용하여 많은 유용한 프로젝트를 구축할 수 있습니다:
- 인터넷 시계: Python이 NTP를 통해 현재 시간을 가져와 MCU로 보내 콜론이 깜빡이는 HH:MM 형식으로 표시
- 원격 카운터: Telegram을 통해 디스플레이에 카운트 값을 보냅니다 — 생산 카운터 또는 스코어보드에 유용합니다
- 실시간 온도 디스플레이: MCU의 센서에서 온도를 가져와 Bridge를 통해 7-세그먼트 디스플레이에 표시
- 카운트다운 타이머: Python이 Bridge를 통해 시작 값을 보내고 MCU는 디스플레이에서 0까지 카운트다운
- 포모도로 타이머: TM1637 디스플레이에 작업/휴식 간격을 표시하며 Telegram을 통해 제어 및 추적