아두이노 우노 Q DC 모터 실드
Motor Shield Rev3는 Arduino UNO Q 헤더에 직접 연결됩니다 — 클래식 Uno와 동일한 핀 레이아웃입니다. 이 가이드에서는 다음을 수행합니다:
- Motor Shield Rev3을 Arduino UNO Q 보드에 스택합니다.
- DC 모터와 외부 전원 공급장치를 배선합니다.
- 모터를 앞뒤로 회전시키는 코드를 작성합니다.
- PWM 값(0–255)을 통해 모터 속도를 조정합니다.
- 전자 제동을 적용하고 해제합니다.
- Channel A 및 Channel B를 사용하여 두 개의 모터를 동시에 작동합니다.

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | Arduino Uno Q용 USB 케이블 | 아마존 | |
| 1 | × | Arduino용 Motor Shield | 쿠팡 | 아마존 | |
| 1 | × | DC 모터 | 아마존 | |
| 1 | × | 전원(예: 9V 파워 어댑터) | 아마존 | |
| 1 | × | DC 파워 잭 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
Motor Shield Rev3 개요
Motor Shield Rev3의 핵심에는 L298P 이중 풀브릿지 드라이버가 있습니다. 이 칩은 두 개의 DC 모터를 독립적으로 제어할 수 있게 해줍니다 — 각각 자체 방향선, PWM 속도선, 제동선 및 전류 감지 아날로그 입력이 있습니다.
다음은 각 제어선이 하는 일입니다:
- 방향 — 회전 방향을 설정하는 디지털 출력입니다. HIGH를 쓰면 한 방향으로 회전하고, LOW를 쓰면 다른 방향으로 회전합니다.
- PWM — 듀티 사이클을 설정하는 아날로그(PWM) 출력입니다. 값의 범위는 0(정지)에서 255(최대 속도)까지입니다.
- 제동 — 디지털 출력입니다. HIGH로 설정하면 모터 샤프트가 잠기고, LOW로 설정하면 모터가 자유롭게 회전합니다.
- 전류 감지 — 모터가 소비하는 전류량을 보고하는 아날로그 입력입니다.
Arduino UNO Q가 클래식 Uno와 동일한 헤더 위치를 유지하기 때문에 모든 핀이 자동으로 정렬됩니다:
| 기능 | Channel A | Channel B |
|---|---|---|
| 방향 | D12 | D13 |
| PWM (속도) | D3 | D11 |
| 제동 | D9 | D8 |
| 전류 감지 | A0 | A1 |
모터 전원 공급
모터는 USB가 제공할 수 있는 것보다 더 많은 전류가 필요합니다. 6–12V 외부 전원을 실드의 전원 스크류 터미널에 연결하세요. Arduino UNO Q 자체는 USB에서 계속 작동합니다.
배선 다이어그램
Motor Shield Rev3을 Arduino UNO Q 헤더에 올려놓되, 모든 핀이 제대로 삽입되도록 하세요. DC 모터 리드를 Channel A 스크류 터미널에 연결하세요. 외부 전원 공급장치를 전원 스크류 터미널에 연결하세요.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Channel A의 단일 모터
MCU 코드
Arduino UNO Q에는 두 개의 프로세서가 있습니다: STM32 MCU(실시간 하드웨어 제어 처리) 및 Qualcomm MPU(Debian Linux 실행). 이 섹션에서는 STM32 MCU만 프로그래밍되고 — Linux 측은 유휴 상태로 유지됩니다. 나중 섹션에서는 두 프로세서가 함께 어떻게 작동하는지 보여줄 것입니다.
아래 코드는 모터 방향을 2초마다 전환하며, 사이에 제동을 적용합니다:
빠른 단계
- Arduino UNO Q를 처음 사용합니까? 계속하기 전에 아두이노 우노 Q 시작하기 자습서를 따라 개발 환경을 준비하세요.
- 실드를 스택하세요: Motor Shield Rev3을 Arduino UNO Q 헤더에 단단히 누르세요.
- 모터를 배선하세요: DC 모터를 Channel A 스크류 터미널에 연결하세요.
- 전원을 연결하세요: 외부 전원 공급장치를 실드의 전원 터미널에 연결하세요.
- 연결하세요: Arduino UNO Q를 USB-C 케이블로 컴퓨터에 연결하세요.
- Arduino App Lab을 열어주세요: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다리세요.
- 새 앱을 만드세요: Create New App 버튼을 클릭하세요.

- 앱에 이름을 지정하세요(예: DIYables_DCMotorShield).
- 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 DIYables_DC_Motor created by DIYables.io and click the Install button.
- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- 업로드하세요: Arduino App Lab의 Run 버튼을 클릭하여 STM32로 컴파일 및 업로드하세요.

- 관찰하세요: 모터는 2초마다 앞뒤로 전환되고, 각 방향 변경 사이에 2초 동안 제동합니다.
메서드 빠른 참조
| 메서드 | 수행 작업 | 사용법 |
|---|---|---|
| run(dir, speed) | 지정된 방향으로 지정된 속도로 모터를 회전합니다 | motor.run(MOTOR_FORWARD, 100) |
| setSpeed(speed) | 방향이나 제동을 건드리지 않고 속도를 변경합니다 | motor.setSpeed(200) |
| setDirection(dir) | 속도나 제동을 건드리지 않고 방향을 변경합니다 | motor.setDirection(MOTOR_BACKWARD) |
| brake() | 제동을 인터락하고 속도를 0으로 떨어뜨립니다 | motor.brake() |
| release() | 제동을 해제합니다 | motor.release() |
| readCurrent() | 전류 감지 핀에서 원시 ADC를 반환합니다 | motor.readCurrent() |
Channel B의 단일 모터
Channel A와 동일한 동작이지만 Channel B에서 — 채널 상수만 바꾸면 됩니다.
빠른 단계
- 모터를 Channel B 스크류 터미널에 배선하세요.
- Channel A 섹션과 동일한 빠른 단계를 따르세요(앱 만들기, 스케치 붙여넣기, 라이브러리 설치, 업로드).
- 모터는 동일한 방식으로 방향을 전환하고 제동합니다 — 기본 핀만 다릅니다.
두 개의 모터 — 두 채널 모두
두 모터를 독립적으로 구동합니다: 둘 다 앞으로, 둘 다 뒤로, 반대 방향.
빠른 단계
- 한 모터를 Channel A 스크류 터미널에, 다른 모터를 Channel B 스크류 터미널에 연결하세요.
- Channel A 섹션과 동일한 빠른 단계를 따르세요(앱 만들기, 스케치 붙여넣기, 라이브러리 설치, 업로드).
- 스케치는 둘 다 앞으로, 둘 다 뒤로, 반대 방향 패턴을 순환합니다.
Linux + MCU Bridge 프로그래밍
Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다: MPU(Qualcomm, Debian Linux 실행) 및 MCU(STM32, Arduino 스케치로 Zephyr OS 실행). 이들은 RPC via Arduino_RouterBridge 라이브러리를 사용하여 통신합니다 — 절대 원시 직렬 포트를 통하지 않습니다.
- Motor Shield는 MCU(STM32)에 연결됩니다 — 방향, PWM 및 제동 핀이 모두 Arduino UNO Q 헤더에 있으며 STM32에서 구동됩니다.
- MPU는 모터 실드를 직접 제어할 수 없습니다 — Bridge.call()을 통해 MCU의 함수를 호출하여 앞뒤로 회전하거나 제동해야 합니다.
- MPU는 Wi-Fi를 가지고 있습니다 — MPU가 Wi-Fi가 있는 전체 Debian Linux를 실행하기 때문에 Telegram 명령을 수신하고 모터를 원격으로 제어할 수 있습니다.
- 통신: Linux 측의 Bridge.call()은 MCU 측의 Bridge.provide_safe() 함수를 호출합니다(MCU motor.run() 및 motor.brake()가 하드웨어 API를 사용하기 때문).
- ⚠️ 예약됨: /dev/ttyHS1(Linux) 및 Serial1(MCU)은 Arduino Router에서 사용됩니다 — 절대 직접 열지 마세요.
간단히 말해서: MPU는 명령을 보냅니다 → MCU는 Motor Shield를 구동합니다 → Motor Shield는 DC 모터를 제어합니다.
MCU 스케치 — Bridge 및 Monitor 출력을 사용한 Motor Shield 제어:
Python 스크립트(Arduino App Lab) — Linux에서 모터 제어:
- 참고: MCU 스케치에서 Bridge.begin()이 호출되고 Linux 측에서 Python 스크립트를 실행하기 전에 스케치가 업로드되어 있는지 확인하세요.
- ⚠️ 경고: 코드에서 /dev/ttyHS1(Linux)을 직접 열거나 Serial1(MCU)을 사용하지 마세요 — 이들은 Arduino Router에서 예약되어 있으며 이들에 접근하면 Bridge가 손상됩니다.
빠른 단계
- MCU 스케치를 업로드하세요: Arduino App Lab을 열고 새 앱을 만들고 Bridge MCU 스케치를 sketch/sketch.ino에 붙여넣고 DIYables_DC_Motor 및 Arduino_RouterBridge 라이브러리를 모두 설치한 다음 Run을 클릭하세요.
- Python 스크립트를 추가하세요: 위의 Python 코드를 동일한 앱의 Python 탭에 붙여넣으세요.
- 앱을 실행하세요: Run을 클릭하세요 — Python은 모터를 앞으로, 제동, 뒤로, 제동 자동으로 순환합니다.
- 콘솔을 확인하세요: Console 탭 → MCU Monitor 서브탭을 열어 모터 상태 메시지를 확인하세요.
App Lab 콘솔 출력
Telegram 통합
Telegram을 통해 어디서나 DC 모터를 원격으로 제어하세요.
아직 Telegram 봇이 없다면, 계속하기 전에 아두이노 우노 Q - 텔레그램 봇을 참조하여 봇 토큰을 얻으세요.
MCU 스케치: 이전 Bridge 섹션의 동일한 MCU 스케치를 유지하세요 — 변경할 필요가 없습니다. STM32에서 이미 업로드되고 실행 중인지 확인하세요.
Python 스크립트(Arduino App Lab) — 모터 실드 제어용 Telegram 봇:
- 참고: YOUR_BOT_TOKEN을 Telegram의 @BotFather에서 얻은 토큰으로 바꾸세요.
- /forward를 보내 모터를 앞으로 회전시키세요.
- /backward를 보내 모터를 뒤로 회전시키세요.
- /brake를 보내 모터를 제동하세요.
빠른 단계
- MCU 스케치를 업로드하세요: 이전 섹션의 Bridge MCU 스케치를 사용하세요(아직 완료되지 않았으면 먼저 업로드하세요).
- Telegram 스크립트를 붙여넣으세요: 위의 Python 코드를 Arduino App Lab의 앱 Python 탭에 복사하세요.
- 토큰을 설정하세요: 스크립트의 YOUR_BOT_TOKEN을 실제 봇 토큰으로 바꾸세요.
- 앱을 실행하세요: Run을 클릭하세요 — 봇은 Telegram 메시지를 수신 대기하기 시작합니다.
- 테스트하세요: /forward를 보내세요 — 모터가 회전합니다. /brake를 보내세요 — 하드 정지됩니다. /backward를 보내세요 — 역방향입니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw 통합
아두이노 우노 Q - OpenClaw 자습서의 지시를 참조하여 이 자습서에 OpenClaw를 적용할 수 있습니다.
응용프로그램/프로젝트 아이디어
- 원격 로봇 드라이브: Channel A 및 Channel B를 함께 사용하여 Telegram을 통해 제어되는 이중 모터 차동 구동 로봇을 구축합니다.
- 자동 컨베이어: MPU의 Linux cron을 사용하여 일정에 따라 Channel A 모터를 앞으로 또는 뒤로 구동합니다.
- 동력식 카메라 슬라이더: 정확한 PWM 속도 제어를 사용하여 카메라를 트랙을 따라 부드럽게 이동시킵니다.
- 이중축 회전대: Telegram 명령을 통해 팬 및 틸트 모션을 위해 두 모터를 동시에 제어합니다.
- 스마트 팬 컨트롤러: Telegram에서 원격으로 팬 속도를 조정하세요 — 느림, 중간 또는 전속 설정.
도전 과제
- 쉬움: 현재 모터 상태(앞으로, 뒤로 또는 제동)를 보고하는 /status Telegram 명령을 추가합니다.
- 중간: PWM 속도를 회전하기 전에 설정하는 /speed <0-255> Telegram 명령을 추가합니다.
- 고급: /a forward, /b backward, /a brake 같은 명령을 사용하여 Telegram에서 Channel A 및 Channel B를 독립적으로 제어합니다.
Arduino UNO Q DC Motor Shield - 전체 데모
아래는 DC Motor Shield의 모든 예제를 시연하는 단계별 비디오 자습서입니다: