아두이노 우노 Q OpenClaw
평문 영어 메시지 대신에 Arduino UNO Q를 제어하고 싶으신가요? 이 튜토리얼에서는 Arduino UNO Q와 함께 OpenClaw를 사용하여 Telegram, WhatsApp, Discord 또는 이미 사용 중인 다른 메시징 앱에서 "LED를 켜기" 또는 "MCU 상태는 어떻게 되나요?"와 같은 메시지를 보낼 수 있는 방법을 배웁니다.
이 튜토리얼에서 배웁니다:
- OpenClaw가 무엇이고 Arduino UNO Q와 어떻게 작동하는지
- Arduino UNO Q Linux 측 (Debian)에 OpenClaw를 설치하는 방법
- OpenClaw용 사용자 정의 Arduino UNO Q 스킬을 만드는 방법
- OpenClaw를 Telegram에 연결하는 방법
- OpenClaw를 제어할 MCU Bridge 스케치를 작성하는 방법
- 자연어 메시지로 Arduino UNO Q 하드웨어를 제어하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
OpenClaw란?
OpenClaw는 자신의 장치에서 실행되는 개인 AI 어시스턴트입니다. 이미 사용 중인 메시징 앱(Telegram, WhatsApp, Discord, Slack 등)에 연결되며 AI 모델(Anthropic Claude, OpenAI 등)을 사용하여 사용자의 말을 이해하고 이에 대해 조치를 취합니다.
Arduino UNO Q에서 OpenClaw는 Linux 측 (Debian Linux를 실행하는 Qualcomm MPU)에서 실행됩니다. Bridge를 통해 MCU 함수를 호출하는 방법을 OpenClaw에 가르치는 사용자 정의 스킬을 만듭니다. 그 후 자연어 메시지를 보낼 수 있고 OpenClaw가 나머지를 처리합니다.
주요 기능:
- 자연어 — 고정 명령어 없음; 같은 말을 여러 방식으로 하고 OpenClaw가 이해함
- 다중 채널 — Telegram, WhatsApp, Discord, Slack 등에서 동시에 작동
- 확장 가능 — Bridge 함수를 더 추가하고 스킬을 업데이트하여 OpenClaw에 알려줌
- 자체 호스팅 — Arduino UNO Q Linux 측에서 실행; 데이터가 장치에 유지됨
OpenClaw vs. Telegram Bot
OpenClaw와 Telegram 봇(다른 튜토리얼에서 다룸)은 모두 원격으로 Arduino UNO Q를 제어할 수 있습니다. 핵심 차이점은 명령어의 작동 방식입니다:
| 기능 | Telegram Bot | OpenClaw | |
|---|---|---|---|
| 명령 스타일 | 고정 (예 | /led_on) | 자연어 ("LED를 켜기") |
| 이해 | 정확한 명령어 일치 | AI 기반 의도 감지 | |
| 메시징 채널 | Telegram만 | Telegram, WhatsApp, Discord, Slack 등 | |
| AI 모델 필요 | 아니오 | 예 (Anthropic, OpenAI 등의 API 키) | |
| 설정 복잡성 | 간단 | 중간 |
사전 요구 사항
시작하기 전에 다음을 확인하세요:
- Arduino UNO Q가 실행 중: 먼저 아두이노 우노 Q 시작하기 튜토리얼을 따르세요
- Arduino App Lab: 설치 및 작동 중
- Bridge에 대한 숙련도: 아두이노 우노 Q - Linux와 MCU 간의 통신 튜토리얼 참조
- 메시징 계정: 이 튜토리얼은 Telegram을 사용하지만, OpenClaw는 WhatsApp, Discord, Slack, iMessage 등도 지원합니다. 다른 채널의 설정은 유사합니다.
- Telegram 봇 토큰: 아래 아두이노 우노 Q - 텔레그램 봇 섹션에서 @BotFather를 사용하여 생성합니다
- AI 제공자 API 키: 이 튜토리얼은 Anthropic (Claude)을 사용합니다. OpenAI 또는 기타 지원되는 제공자를 사용할 수도 있습니다. 설정 단계는 유사합니다. console.anthropic.com에서 가입하고, API 키를 만들고, 복사합니다. OpenClaw 온보딩 단계 중에 붙여넣을 것입니다.
OpenClaw + Arduino UNO Q가 함께 작동하는 방식
※ 주의:
OpenClaw는 Qualcomm MPU (Linux 측)에서 실행됩니다. MCU는 Arduino Bridge를 통해 하드웨어 제어 함수를 노출하며, 다른 Bridge 튜토리얼과 정확히 같습니다. OpenClaw는 Arduino UNO Q Linux 측에서 실행되는 WebUI HTTP bridge를 통해 해당 함수를 호출합니다.
각 사용자 메시지에 대한 흐름은 다음과 같습니다:
- 사용자가 Telegram (또는 다른 연결된 채널)을 통해 메시지를 보냅니다: *"LED 토글"*
- OpenClaw가 Telegram (또는 다른 채널)에서 메시지를 받고, Anthropic Claude AI 모델에 보내면, 모델이 의도를 이해하고 일치하는 Arduino UNO Q 스킬을 선택합니다
- 스킬은 OpenClaw에 다음을 실행하도록 지시합니다: curl http://localhost:7000/api/toggle_led
- WebUI bridge — Arduino UNO Q Linux 측에서 웹 서버로 실행되는 Python 스크립트 — HTTP 요청을 받으면 Bridge.call("toggle_led", "")를 호출하여 MCU에 연결합니다
- MCU (STM32)가 LED를 토글하고 Bridge를 통해 Python 웹 서버로 결과를 반환합니다
- OpenClaw가 결과를 받으면 사용자에게 답장을 보냅니다: *"LED는 이제 켜져 있습니다"*

OpenClaw 설치
이 튜토리얼을 작성하는 시점에 OpenClaw 설치는 간단하지 않습니다. 온보딩 마법사 중 무한 루프, 진행되지 않는 프롬프트, 또는 설치하는 OpenClaw 버전에 따라 다르게 작동하는 단계 등의 문제가 발생할 수 있습니다. 이 섹션은 작성 시점에 작동한 주요 단계를 제공합니다 — 설치하는 버전에 따라 정확한 단계가 다를 수 있습니다. 무언가가 멈추면 종료 (Ctrl+C)하고, OpenClaw 문서를 확인한 후 다시 시도하세요.
Arduino UNO Q에 SSH로 연결하려면 IP 주소가 필요합니다. Arduino App Lab을 열고 설정으로 이동하여 IP 주소 필드를 찾으세요.

Node.js 설치
OpenClaw에는 Node.js 22 이상이 필요합니다. Arduino UNO Q Linux 측은 Debian을 실행하므로 NodeSource 패키지를 통해 설치합니다.
Arduino App Lab 내 SSH 터미널을 사용하지 마세요 (최소 버전 0.7.0) — 불안정하고 자주 시간 초과되며 예상치 못한 입력을 주입할 수 있습니다. 대신 외부 SSH 클라이언트를 사용하세요.
- Windows에서는 PowerShell 또는 Windows Terminal을 열고 다음을 실행하세요:
- Linux 암호를 입력하라는 메시지가 표시됩니다. Arduino Uno Q를 처음 설정할 때 설정한 암호입니다.
- 그런 다음 SSH 터미널은 다음과 같이 표시됩니다:
- SSH 터미널에서 이 명령을 실행하세요:
- Repository configured successfully.로 끝나는 출력이 표시됩니다. 그런 다음 실행하세요:
설치 중에 "어떤 서비스를 다시 시작해야 합니까?" 대화 상자가 나타날 수 있습니다. 기본 선택을 그대로 두고 Enter를 눌러 계속하세요.

그런 다음 실행하세요:
마지막 명령은 v22.x.x 이상을 인쇄해야 합니다. 그렇다면 Node.js는 준비되었습니다.
OpenClaw 설치
- OpenClaw를 전역적으로 설치하세요:
- 설정 디렉토리 만들기:
Setup complete: local config, workspace, and session directories are ready.가 표시되어야 합니다.
- 온보딩 마법사 실행 — 이것이 Anthropic API 키를 저장하는 가장 안정적인 방법입니다:
마법사는 짧은 일련의 프롬프트를 안내합니다:
- Yes를 선택하여 설정 시작
- QuickStart 선택
- 모델 제공자로 Anthropic 선택
- Anthropic API 키 선택
- Anthropic API 키를 붙여넣고 Enter 누르기
- 모델로 Keep current 선택 (Claude 3.5 Sonnet은 기본값이고 잘 작동함)
마법사 후에 SSH 세션이 종료되면 다시 연결하여 다음 단계부터 계속하세요.
- Gateway를 백그라운드에서 시작하세요:
다음과 같은 출력이 표시됩니다:
이것은 정상입니다. [1] 뒤의 숫자는 작업 번호이고 35925는 프로세스 ID입니다. 한 번 Enter를 눌러 프롬프트로 돌아갑니다.
- Gateway가 실행 중인지 확인하세요:
출력에서 이 두 줄을 찾으세요:
Connectivity probe: failed도 표시될 수 있습니다 — 이것은 systemd 대신 nohup을 사용할 때 정상입니다. Gateway already running locally가 보이고 포트 18789 옆에 PID가 나열되어 있으면 gateway는 여전히 작동 중입니다.
OpenClaw를 Telegram에 연결
단계 1 — Telegram 봇 토큰 가져오기
Telegram 봇이 없으면 계속하기 전에 아두이노 우노 Q - 텔레그램 봇을 참조하여 봇 토큰을 가져오세요. 해당 튜토리얼을 완료한 후 다음 형식의 봇 토큰을 가집니다:
단계 2 — OpenClaw에 봇 토큰 추가
Arduino UNO Q Linux 측 (SSH를 통해) OpenClaw 설정 파일을 열기:
"channels" 섹션을 찾아 다음으로 바꾸세요:
YOUR_BOT_TOKEN_HERE를 BotFather에서 복사한 토큰으로 바꾸세요. 저장하고 nano 종료 (Ctrl+O, Enter, Ctrl+X).
단계 3 — Gateway 다시 시작
nohup 출력이 표시된 후 한 번 Enter를 눌러 프롬프트로 돌아갑니다.
단계 4 — 자신을 승인하기
Telegram을 열고 봇을 사용자 이름으로 찾은 후 메시지를 보내세요 (예: hello).
처음에는 OpenClaw가 페어링 코드를 포함하는 "접근이 구성되지 않음" 메시지로 회신합니다:
ArduinoBot
해당 Telegram 메시지에서 페어링 코드를 복사한 다음 Arduino UNO Q Linux 측 (MWS8F4WK를 실제 코드로 바꿈)에서 이 명령을 실행하세요:
단계 5 — 연결 테스트
Telegram에서 봇에 다른 메시지를 보내세요. OpenClaw가 이제 정상적으로 회신해야 합니다.
ArduinoBot
※ 주의:
정규 Telegram 봇이 승인을 필요로 하지 않는데 OpenClaw는 왜 승인이 필요한가요?
표준 Telegram 봇은 메시지를 보내는 모든 사람에게 응답합니다 — 접근 제어는 직접 코드를 작성하는 경우에만 추가됩니다. OpenClaw는 다릅니다: 자신의 하드웨어에서 자신의 API 키로 실행되는 개인 AI 어시스턴트입니다. 모든 메시지는 유료 AI API 호출을 트리거하고 스킬은 Linux 측에서 셸 명령을 실행할 수 있습니다. 지갑과 장치를 모두 보호하기 위해 OpenClaw는 기본적으로 접근을 제한하고 상호 작용하기 전에 각 사용자를 명시적으로 승인하도록 요구합니다.
※ 주의:
OpenClaw는 WhatsApp, Discord, Slack, iMessage 등도 지원합니다. 다른 채널의 설정 가이드는 OpenClaw 채널 문서를 참조하세요.
이 시점에서 OpenClaw는 Arduino UNO Q에서 실행 중이고 Telegram에 연결되어 있습니다. 이미 이와 채팅할 수 있지만 하드웨어에 대해 알 수 없습니다.
다음 단계는 해당 연결을 구축합니다:
- MCU Bridge 스케치 — Bridge를 통해 하드웨어 제어 함수 (LED, 센서 등)를 노출하는 Arduino 스케치
- Python WebUI Bridge — Arduino App Lab에서 실행되는 Python 스크립트로, OpenClaw에서 HTTP 요청을 받아 Bridge를 통해 MCU로 전달합니다
- Arduino UNO Q 스킬 — OpenClaw에 명령을 실행할 때와 사용 시기를 가르치는 작은 설정 파일
세 가지가 모두 준비되면 평문 메시지로 하드웨어를 제어할 수 있습니다.
Arduino UNO Q 코드
Arduino UNO Q 코드는 두 부분으로 구성됩니다:
- Linux 측의 Python 코드 — Qualcomm MPU (Debian Linux)에서 실행; OpenClaw에서 요청을 받아 Bridge를 통해 MCU로 전달하는 WebUI HTTP 서버를 시작합니다
- MCU의 Arduino C/C++ 스케치 — STM32에서 실행; Bridge를 통해 Python 스크립트가 호출할 수 있도록 하드웨어 제어 함수 (LED, 센서 등)를 노출합니다
MCU Bridge 스케치
MCU는 Bridge를 통해 하드웨어 제어 함수를 노출합니다. OpenClaw는 WebUI bridge (다음 섹션)를 통해 이 함수들을 호출합니다.
빠른 단계
Arduino UNO Q를 처음 사용하나요? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼에 따라 개발 환경을 준비하세요.
- 연결: USB-C 케이블로 Arduino UNO Q를 컴퓨터에 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다립니다. 처음 실행할 때 몇 분이 걸릴 수 있습니다.
- 새 앱 만들기: 새 앱 만들기 버튼을 클릭합니다.

- 앱 이름: OpenClawBridge
- 생성을 클릭하여 확인합니다.
- 새 앱 내에서 생성된 폴더 및 파일 집합이 표시됩니다.

- 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로 컴파일 및 업로드합니다.

- 전문가 팁: Arduino App Lab을 백그라운드에서 계속 실행합니다. Python WebUI bridge는 OpenClaw가 MCU에 도달하기 위해 실행 중이어야 합니다.
App Lab 콘솔 출력
Python WebUI Bridge
Python 스크립트는 Arduino UNO Q Linux 측에서 실행됩니다. 포트 7000에서 WebUI HTTP 서버를 시작합니다. OpenClaw는 curl을 통해 이 서버를 호출하고; 서버는 각 요청을 Bridge.call()을 통해 MCU로 전달합니다.
WebUI Brick 추가
Python 스크립트에는 WebUI - HTML Brick이 필요합니다 — Arduino UNO Q Linux 측에서 Docker 컨테이너로 실행되고 HTTP 서버 인프라를 제공하는 미리 빌드된 서비스입니다. 스크립트를 실행하기 전에 Arduino App Lab에서 앱에 이를 추가해야 합니다.
- Arduino App Lab에서 OpenClawBridge 앱을 엽니다.
- 편집기 사이드바의 Brick 추가 버튼을 클릭하여 Brick 카탈로그를 엽니다.

- 목록에서 WebUI - HTML을 찾아 선택한 후 구성 프롬프트를 따릅니다.

- Arduino App Lab은 자동으로 app.yaml 파일에 Brick 항목을 추가합니다 — 해당 항목을 수동으로 편집하지 마세요.
※ 주의:
Brick은 Arduino UNO Q Linux 측에서 실행되는 미리 빌드되고 플러그 앤 플레이 서비스입니다. WebUI - HTML Brick은 HTTP 서버를 처리하므로 Flask 또는 다른 웹 프레임워크를 수동으로 설치할 필요가 없습니다. 자세한 내용은 Brick 정보를 참조하세요.
Python 코드
실행
- 업로드 및 실행: Arduino App Lab의 Run 버튼을 클릭합니다. 이 단일 버튼은 둘 다 수행합니다: Arduino 스케치를 STM32 MCU로 컴파일 및 업로드하고 동시에 Linux 측에서 Python WebUI bridge를 시작합니다.

- Python 콘솔을 확인합니다 — WebUI started on http://0.0.0.0:7000이 표시되어야 하며, 이는 HTTP 서버가 실행 중이고 OpenClaw가 호출할 준비가 되었음을 확인합니다.
- 전문가 팁: Arduino App Lab을 백그라운드에서 계속 실행합니다. Python WebUI bridge는 OpenClaw가 MCU에 도달하기 위해 실행 중이어야 합니다.
Arduino UNO Q 스킬 만들기
스킬은 OpenClaw에 Arduino UNO Q를 사용하는 방법과 시기를 가르치는 SKILL.md 파일이 있는 작은 폴더입니다.
- 스킬 폴더 생성:
- SKILL.md 생성:
이 내용을 붙여넣습니다:
저장하고 nano 종료 (Ctrl+O, Enter, Ctrl+X).
- OpenClaw 다시 로드:
- 스킬이 로드되었는지 확인하세요:
목록에서 arduino-uno-q가 표시되어야 합니다.
테스트
MCU Bridge 스케치가 업로드되었고 Python WebUI bridge가 Arduino UNO Q Linux 측에서 실행 중인지 확인합니다. 그런 다음 Telegram (또는 선택한 채널)을 열고 OpenClaw 봇에 메시지를 보내세요:
- "LED 토글" — OpenClaw가 LED를 토글하고 "LED는 이제 ON입니다" 또는 "LED는 이제 OFF입니다"로 회신해야 합니다
- "MCU 상태는 어떻게 되나요?" — OpenClaw가 "MCU가 실행 중입니다. LED: ON"으로 회신해야 합니다
- "LED를 켜기" — 토글과 동일; OpenClaw는 다양한 표현을 이해합니다
- "Arduino가 실행 중인가요?" — OpenClaw가 이를 상태 확인으로 매핑합니다
OpenClaw가 MCU에 도달할 수 없다고 회신하면 Arduino App Lab이 열려 있고 Python bridge 스크립트가 실행 중인지 확인합니다.