아두이노 우노 Q 초음파 센서로 LED 제어하기
이 자습서에서는 물체까지의 거리에 따라 초음파 센서로 LED를 제어하는 방법을 배웁니다:
- 물체가 센서에 가까우면, LED가 켜집니다.
- 물체가 멀어지면, LED가 꺼집니다.

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | 초음파 센서 | 쿠팡 | 아마존 | |
| 1 | × | LED | 쿠팡 | 아마존 | |
| 1 | × | LED Module | 아마존 | |
| 1 | × | 220Ω Resistor | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
MCU 코드
Arduino UNO Q는 두 개의 프로세서를 가지고 있습니다: STM32 MCU (실시간 하드웨어 제어 담당)와 Qualcomm MPU (Debian Linux 실행). 이 섹션에서는 STM32 MCU만 프로그래밍하며, Linux 쪽은 유휴 상태로 둡니다. 나중 섹션에서 두 프로세서가 함께 작동하는 방법을 보여줄 것입니다.
빠른 단계
- Arduino UNO Q를 처음 사용하시나요? 계속하기 전에 아두이노 우노 Q 시작하기 자습서를 따라 개발 환경을 준비하세요.
- 컴포넌트 배선: TRIG → 핀 8, ECHO → 핀 7, LED (220 Ω 저항 포함) → 핀 3으로 연결하세요.
- 연결: USB-C 케이블로 Arduino UNO Q를 컴퓨터에 연결하세요.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다리세요.
- 새 App 만들기: 새 App 만들기 버튼을 클릭하세요.

- App에 이름을 지정하세요. 예: DIYables_UltrasonicLED
- 만들기를 클릭하여 확인하세요.
- 새 App 내에서 생성된 폴더 및 파일 세트를 보게 됩니다.

- 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.
- 업로드: Arduino App Lab의 Run 버튼을 클릭하여 STM32에 컴파일 및 업로드하세요.

- 테스트: 센서를 향해 손을 밀어넣으세요. 50cm 이내에 있으면 LED가 켜집니다.
※ 주의:
이 코드는 학습용입니다. 초음파 센서는 노이즈에 민감합니다. 실제 사용을 위해서는 초음파 센서 자습서에서 노이즈 필터를 적용하세요.
Linux + MCU Bridge 프로그래밍
Arduino UNO Q는 두 프로세서가 함께 작동합니다: MPU (Qualcomm, Debian Linux 실행) 및 MCU (STM32, Zephyr OS에서 Arduino 스케치 실행). 이들은 Arduino_RouterBridge 라이브러리를 통해 RPC로 통신합니다. 원본 직렬 포트로는 절대 안 됩니다.
- 초음파 센서와 LED는 MCU(STM32)에 연결됩니다 — TRIG는 핀 8, ECHO는 핀 7, LED는 핀 3.
- MPU는 직접 제어할 수 없습니다 — MCU에서 Bridge.call("check_distance")를 호출하면 거리를 측정하고 LED를 그에 따라 설정합니다.
- MPU는 Wi-Fi를 가지고 있습니다 — MPU는 Wi-Fi가 있는 Debian Linux를 실행하므로 Telegram을 실행하고 자동으로 루프 검사를 할 수 있습니다.
- 통신: Linux 쪽의 Bridge.call()은 MCU 쪽의 Bridge.provide_safe()를 호출합니다. (digitalWrite()는 하드웨어 API이므로)
- ⚠️ 예약됨: /dev/ttyHS1 (Linux) 및 Serial1 (MCU)은 Arduino Router에서 사용합니다. 직접 열면 안 됩니다.
요약하면: Python은 check를 호출 → MCU가 거리를 측정 → MCU가 LED를 설정하고 Monitor에 인쇄합니다.
MCU 스케치 — Bridge를 사용한 초음파 센서 LED 제어 및 Monitor 출력:
Python 스크립트 (Arduino App Lab) — Linux에서 거리 확인 루프 실행:
- 참고: MCU 스케치에서 Bridge.begin()이 호출되고 스케치가 업로드된 후 Linux 쪽에서 Python 스크립트를 실행하세요.
- ⚠️ 경고: 코드에서 /dev/ttyHS1 (Linux) 또는 Serial1 (MCU)을 직접 열면 안 됩니다. 이들은 Arduino Router에서 예약한 것이며, 접근하면 Bridge가 손상됩니다.
빠른 단계
- MCU 스케치 업로드: Arduino App Lab을 열고, 새 App을 만들고, Bridge MCU 스케치를 sketch/sketch.ino에 붙여넣고, Arduino_RouterBridge 라이브러리를 설치하고, Run을 클릭하세요.
- Python 스크립트 추가: 위의 Python 코드를 같은 App의 Python 탭에 붙여넣으세요.
- App 실행: Run을 클릭하세요. Python은 500ms마다 check_distance를 호출합니다. MCU는 거리를 측정하고 LED를 제어합니다.
- 콘솔 확인: Console 탭을 열기 → MCU Monitor 서브탭에서 거리 및 LED 상태를 확인하세요.
App Lab 콘솔 출력
Telegram 통합
Telegram을 통해 초음파 센서 및 LED 상태를 원격으로 모니터링하세요.
아직 Telegram 봇이 없다면, 계속하기 전에 아두이노 우노 Q - 텔레그램 봇을 참조하여 봇 토큰을 받으세요.
MCU 스케치: 이전 Bridge 섹션의 같은 MCU 스케치를 유지하세요 — 변경 필요 없습니다. STM32에서 이미 업로드되고 실행 중인지 확인하세요.
Python 스크립트 (Arduino App Lab) — 초음파 LED 모니터링용 Telegram 봇:
- 참고: YOUR_BOT_TOKEN을 Telegram의 @BotFather에서 얻은 토큰으로 바꾸세요.
- 봇은 계속해서 거리를 확인하고 LED를 제어하면서 Telegram 명령어를 수신합니다.
- /read를 보내 상태가 MCU Monitor에 기록되었음을 확인합니다.
빠른 단계
- MCU 스케치 업로드: 이전 섹션의 Bridge MCU 스케치를 사용하세요. (아직 업로드하지 않았으면 먼저 업로드하세요)
- Telegram 스크립트 붙여넣기: 위의 Python 코드를 Arduino App Lab의 App의 Python 탭에 복사하여 붙여넣으세요.
- 토큰 설정: 스크립트의 YOUR_BOT_TOKEN을 실제 봇 토큰으로 바꾸세요.
- App 실행: Run을 클릭하세요. 봇이 LED를 제어하고 Telegram 메시지를 수신하기 시작합니다.
- 테스트: /read를 보내세요. 봇이 현재 거리 및 LED 상태로 응답합니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw 통합
Arduino Uno Q - OpenClaw 자습서의 아두이노 우노 Q - OpenClaw 자습서를 참조하여 OpenClaw를 이 자습서에 맞게 조정할 수 있습니다.
응용 프로젝트 아이디어
- 근접성 경고 조명: 물체가 센서에 가까워질수록 LED를 깜빡입니다. (거리 임계값과 결합)
- 자동 야간 조명: 밤에 누군가가 센서에 접근할 때 LED를 켭니다.
- 장애물 표시기: 로봇이 벽에 너무 가까울 때 표시하는 LED를 사용합니다.
- 자녀 안전 경고: 서랍 또는 캐비닛에 부착하면, 누군가가 안에 손을 넣을 때 LED가 켜집니다.
- 디스플레이 밝기 트리거: 근처에서 사용자가 감지되면 백라이트를 활성화합니다.
도전 과제
- 쉬움: DISTANCE_THRESHOLD를 50cm에서 20cm로 변경하고 차이를 관찰하세요.
- 중간: 여러 임계값 추가 — 50cm에서 천천히 깜빡이고, 30cm에서 빠르게 깜빡이고, 15cm에서 계속 켜집니다.
- 고급: 실제 거리 값 (cm)을 Telegram 사용자에게 메시지로 직접 다시 보냅니다.