아두이노 우노 Q 장애물 회피 센서
IR 장애물 회피 센서는 적외선을 사용하여 앞의 물체를 감지합니다. 장애물이 있을 때 디지털 LOW 신호를 보내고, 경로가 명확할 때 HIGH를 보냅니다. Bridge와 Telegram을 사용하면, Arduino UNO Q가 감지 영역에 물체가 들어올 때 즉시 경고를 보낼 수 있습니다.
이 자습서에서 배울 내용:
- IR 장애물 회피 센서의 작동 원리
- 센서를 Arduino UNO Q MCU에 연결하는 방법
- 장애물 센서의 디지털 출력을 읽는 방법
- Bridge를 사용하여 장애물 이벤트를 감지하고 Arduino UNO Q의 Python에 상태를 노출하는 방법
- Arduino UNO Q에서 장애물이 감지되었을 때 Telegram 경고를 받는 방법
- Arduino UNO Q와 함께 OpenClaw를 장애물 회피 센서와 사용하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | IR 장애물 회피 센서 | 아마존 | |
| 1 | × | (또는) TCRT5000 Obstacle Avoidance Sensor | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
IR 장애물 회피 센서 정보
적외선 장애물 회피 센서는 IR 송신기와 수신기를 사용하여 물체를 감지합니다. 송신기가 IR 빔을 방출하고, 물체가 빔을 반사하면 수신기가 이를 감지하고 OUT 핀이 LOW가 됩니다.

핀 배치
- VCC 핀: VCC (3.3V 또는 5V)에 연결
- GND 핀: GND (0V)에 연결
- OUT 핀: 디지털 출력 — LOW = 장애물 감지됨, HIGH = 장애물 없음
작동 원리
- 센서 앞에 장애물이 있을 때: OUT 핀 = LOW
- 경로가 명확할 때: OUT 핀 = HIGH
- 감지 범위: 2 cm에서 30 cm — 온보드 포텐셜미터로 조정 가능
- 감지 각도: 약 35°
※ 주의:
배송 중에 IR 송신기와 수신기가 정렬되지 않을 수 있습니다. 센서가 올바르게 반응하지 않으면 서로 평행하도록 부드럽게 구부립니다.
배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| IR Obstacle Sensor Pin | Arduino UNO Q MCU |
|---|---|
| VCC | 3.3V |
| GND | GND |
| OUT | D8 |
IR 장애물 회피 센서 프로그래밍 방법
- 센서 핀을 디지털 입력으로 구성:
- 출력을 읽음 — LOW는 장애물 감지, HIGH는 경로 명확:
Arduino UNO Q 코드
Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:
- STM32 MCU는 100ms마다 센서를 읽고 Serial을 통해 결과를 보냅니다
- Qualcomm MPU는 Wi-Fi가 있는 Debian Linux를 실행합니다 — 이 섹션에서는 MCU만 프로그래밍합니다. 나중 섹션에서 두 프로세서가 Bridge를 통해 함께 작동하는 방법을 보여줍니다.
빠른 단계
Arduino UNO Q를 처음 사용하나요? 계속하기 전에 아두이노 우노 Q 시작하기 자습서를 따르세요.
- 연결: 배선도에 표시된 대로 IR 장애물 센서를 Arduino UNO Q MCU에 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 Arduino UNO Q를 감지할 때까지 기다립니다.
- 새 앱 만들기: Create New App 버튼을 클릭합니다.

- 앱에 이름을 지정합니다(예: ObstacleSensor).
- Create를 클릭하여 확인합니다.

- 스케치 붙여넣기: 위의 MCU 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다.
- 업로드: Arduino App Lab의 Run 버튼을 클릭합니다.

- 센서 앞에 손을 올려놓고 Serial Monitor를 관찰합니다.
- 포텐셜미터를 조정하여 감지 범위를 변경합니다.
App Lab 콘솔 출력
Bridge: Linux + MCU
이 섹션에서는 Linux 측이 Bridge를 통해 장애물 상태를 읽고 이벤트를 수신할 수 있도록 Arduino UNO Q의 두 프로세서를 프로그래밍하는 방법을 보여줍니다:
- 장애물 센서는 MCU에 연결됩니다 — MCU는 100ms마다 센서를 읽습니다
- MPU는 센서 핀을 직접 읽을 수 없습니다 — Bridge 함수를 호출하여 현재 상태를 얻거나 이벤트를 수신합니다
- MPU는 Wi-Fi를 가지고 있습니다 — 전체 Debian Linux를 실행하며 장애물이 감지되면 즉시 Telegram 경고를 보낼 수 있습니다
- Arduino_RouterBridge는 두 프로세서 간 RPC 통신을 가능하게 합니다
- ⚠️ /dev/ttyHS1 (Linux)과 Serial1 (MCU)은 라우터에서 예약됨 — 사용자 코드에서 절대 열지 마세요
MCU 코드 (Bridge)
Python 코드 (Bridge)
빠른 단계
- 연결: 배선도에 표시된 대로 IR 장애물 센서를 Arduino UNO Q에 연결합니다.
- Arduino App Lab 열기하고 ObstacleSensorBridge라는 이름의 새 앱을 만듭니다.
- MCU 스케치를 붙여넣기하여 sketch/sketch.ino에 넣습니다.
- Python 코드를Python 파일에 붙여넣습니다.
- 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.
- 업로드: Run 버튼을 클릭합니다.

- 센서 앞에 물체를 놓고 두 콘솔을 관찰합니다.
App Lab 콘솔 출력
Telegram
센서 앞의 장애물이 감지되었을 때 즉시 Telegram 경고를 받고 원격으로 상태를 쿼리합니다.
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와 함께 IR 장애물 회피 센서로 많은 유용한 프로젝트를 구축할 수 있습니다:
- 출입문 방문자 카운터: 출입문에 센서를 장착합니다 — 장애물 (사람)이 지나갈 때마다 이벤트 카운터가 증가합니다; MPU는 /count를 보낼 때 일일 집계가 포함된 Telegram 요약을 보냅니다
- 배송 알림자: 센서를 우편함이나 배송 영역을 향하게 설정합니다 — 소포가 떨어지고 감지되면, Python은 Telegram 경고 "Package delivered!"를 휴대폰으로 보냅니다
- 로봇 장애물 정지: 센서를 모터 구동 로봇에 연결합니다 — MCU가 장애물을 감지하면 즉시 모터를 정지합니다; MPU는 장애물 이벤트 시간이 포함된 Telegram 알림을 보냅니다
- 자동 게이트 트리거: 센서를 사용하여 차량이 접근하는 것을 감지합니다 — 장애물이 200ms 이상 연속으로 감지되면, MCU가 릴레이를 트리거하여 게이트를 열고, Python이 Telegram 로그 항목을 보냅니다
- 산업용 부품 카운터: 조립 라인 컨베이어에 센서를 장착합니다 — 분당 통과하는 부품의 수를 세고 Python 타이머를 사용하여 5분마다 Telegram으로 집계를 보냅니다
직접 도전해보세요
Arduino UNO Q의 IR 장애물 회피 센서로 더 나아갈 준비가 되셨나요? 다음 과제를 시도해 보세요:
- 쉬움: 프로그램이 시작된 이후 발생한 장애물 감지 이벤트의 수를 반환하는 /count Telegram 명령을 추가합니다 — Python 코드에서 카운터로 추적됩니다.
- 중간: 디바운스 필터를 구현합니다: 이벤트가 등록되고 Telegram 경고가 전송되기 전에 장애물이 최소 300ms 동안 연속으로 감지되어야 합니다 — 진동이나 반사 깜빡임으로 인한 거짓 트리거를 제거합니다.
- 고급: 양방향 사람 카운터를 구축합니다: 출입문에 몇 센티미터 떨어진 두 개의 IR 장애물 센서를 설치합니다 — 먼저 어느 센서가 트리거되는지를 기반으로 들어오는지 나가는지를 결정하고, 현재 점유 수와 함께 Telegram 업데이트를 보냅니다.