1장 Arduino UNO Q 주요 특징 및 사양 한눈에 보기

Arduino UNO Q 정리 노트
Arduino UNO Q 개요
Arduino UNO Q는 리눅스를 실행하는 고성능 MPU(퀄컴 QRB2210)와 실시간 제어용 MCU(STM32U585)를 한 보드에 통합한 하이브리드 싱글보드 컴퓨터이다.1 QRB2210은 Debian Linux, GPU(Adreno 702), 듀얼 ISP를 활용해 카메라·그래픽·에지 컴퓨팅을 담당하고, STM32U585는 Zephyr OS 위에서 Arduino 스케치를 실행하며 센서·모터 제어 등 하드 리얼타임 I/O를 처리한다. 이 구조 덕분에 AIoT, 머신러닝, 고급 자동화처럼 연산량이 많은 작업과 정밀 제어를 동시에 처리할 수 있다.
UNO Q는 16/32GB eMMC, 2/4GB LPDDR4 메모리를 탑재해 OS·애플리케이션·데이터를 보드 단독으로 저장·실행할 수 있으며, 폼팩터는 클래식 UNO와 동일해 대부분의 UNO용 실드와 호환된다. 보드 하단에는 고속 커넥터(JMISC 등)가 있어 캐리어 보드를 통한 확장도 가능하다.
강사과정 모집 -> 아두이노 강의 | Arduino Uno로 배우는 임베디드 개발 | Arduino Uno Club
하드웨어·소프트웨어 요구사항 및 전원 옵션
준비물 요약1
필수 하드웨어
UNO Q 보드 1개
USB‑C 케이블
외부 전원 전달(PD) 기능이 있는 USB‑C 멀티포트 어댑터(Apple 일부 동글 제외 권장)
SBC(단독 PC) 모드 추가 준비
HDMI 또는 DisplayPort 전용 모니터(USB‑C 동글 경유)
USB 키보드·마우스
소프트웨어
Arduino App Lab 0.1.23+ (UNO Q에는 기본 설치, PC-hosted용 데스크톱 앱 별도 설치 가능)
(선택) Arduino IDE 2.x - MCU(STM32) 전용 개발용
전원 공급 방식
UNO Q는 다음 3가지 방식으로 전원 공급이 가능하다.1
USB‑C 포트: 5V 3A(15W) 입력
5V 핀: 외부 5V 직결
VIN 핀: 7-24V 입력
퀄컴 PM4145 PMIC가 통합 전원 관리를 담당하며, 항상 연결된 IoT 동작에 최적화되어 있다. 전원이 인가되면 자동 부팅되며, 전원 버튼을 따로 누를 필요는 없다. 상단 전원 버튼은 5초 이상 길게 누르면 리눅스(MPU) 부분만 재부팅한다.
보드 아키텍처와 주요 구성요소
UNO Q는 다음과 같은 주요 하드웨어로 구성된다.1
Microprocessor (MPU - Qualcomm QRB2210)
쿼드코어 Arm Cortex-A53 @ 2.0GHz
Adreno 702 GPU (845MHz) - 3D 그래픽 가속
듀얼 ISP - 최대 25MP @ 30fps 카메라 지원
Debian Linux OS 실행, 엣지 컴퓨팅·임베디드 비전에 최적
Microcontroller (MCU - STM32U585)
Arm Cortex-M33 @ 최대 160MHz
2MB Flash, 786KB SRAM
Zephyr OS 기반, 실시간·저전력 임베디드 애플리케이션용
Arduino 스케치 실행, 센서·모터·일반 I/O 제어 담당
무선 모듈 (WCBN3536A)
듀얼 밴드 Wi‑Fi 5 (2.4/5GHz)
Bluetooth 5.1
온보드 안테나 내장
메모리
eMMC 16GB 또는 32GB
LPDDR4 2GB 또는 4GB
멀티미디어 코덱
ANX7625 - USB‑C를 통한 영상/오디오 출력, 고속 디스플레이·사운드 인터페이스 제공
전원 관리
Qualcomm PM4145 PMIC - 항상 연결형 IoT 동작을 위한 전원 시퀀싱·전력 관리 담당
폼팩터
클래식 UNO 폼팩터 - 대부분의 Arduino UNO 실드와 기계적·전기적 호환
개발 환경과 워크플로 (App Lab · Arduino IDE)
1) Arduino App Lab - MPU+MCU 통합 개발 환경1
개념
Arduino 스케치(MCU), Python 스크립트, 컨테이너 기반 Linux 앱을 하나의 App 안에서 블록(Brick)처럼 조합
고성능 연산(MPU)과 실시간 I/O(MCU)를 함께 설계하기 위한 주 개발 도구
모드
SBC 모드
UNO Q에 모니터·키보드·마우스를 USB‑C 동글로 직접 연결
UNO Q를 소형 데스크톱 PC처럼 사용 (App Lab가 보드에 기본 설치)
단독 사용 경험을 위해서는 4GB RAM 모델 권장
PC-hosted 모드
PC(Windows/macOS/Linux)에 App Lab 설치 후 USB‑C 또는 네트워크로 UNO Q 접속
PC 성능을 활용해 개발, 보드는 실행·I/O만 담당
네트워크 모드
같은 LAN에 있는 UNO Q를 App Lab 데스크톱 앱에서 Network 태그로 인식
USB‑C 없이도 앱 업로드·실행·모니터링 가능 (SSH 비슷한 개념)
2) App Lab로 Hello World (Blink) 실행 흐름
UNO Q를 PC에 USB‑C로 연결(또는 SBC 모드로 부팅)
Arduino App Lab 실행 → 처음 화면의 Examples 섹션에서 Blink LED 예제를 선택
예제 설명을 읽고 Run 버튼 클릭
업로드 후, 보드의 내장 RGB LED 중 빨간색이 1초 간격으로 깜빡이는지 확인 → STM32 MCU가 Zephyr+Arduino 스케치를 통해 LED를 제어함을 검증
3) Arduino IDE 2.x - MCU(STM32) 전용 개발1
UNO Q의 MCU(STM32U585)를 일반 Arduino 보드처럼 다루고 싶을 때 사용하는 경로이다. 이 경우 MPU(Linux)는 건드리지 않는다.
UNO Q Zephyr Core 설치
Arduino IDE 실행
Tools > Board > Boards Manager...에서 "UNO Q" 검색"Arduino UNO Q Zephyr Core" 설치
검색되지 않을 경우,
File > Preferences의 Additional Boards Manager URLs에 다음 주소 추가 후 재시도:https://downloads.arduino.cc/packages/package_zephyr_index.json
Blink 예제 업로드
Tools > Board에서 Arduino UNO Q 선택USB‑C로 보드 연결 후
Tools > Port에서 해당 포트 선택File > Examples > 01.Basics > Blink열기Upload(▶) 버튼 클릭 → 컴파일 후 STM32 MCU에 업로드
내장 RGB LED의 빨간색이 1초 간격으로 깜빡이면 정상 동작
주의: Arduino IDE는 MCU(STM32)만 프로그래밍한다. Qualcomm MPU(Linux)를 개발하려면 App Lab 또는 일반 Linux 개발 도구를 사용해야 한다.1
온보드 사용자 인터페이스(LED 매트릭스·RGB LED·디버그 UART)
LED 매트릭스 (8×13 Blue LED)1
8×13 블루 LED 매트릭스, STM32 MCU가 제어
3비트 그레이스케일(8단계 밝기) 지원
Arduino 스케치에서
Arduino_LED_Matrix라이브러리를 사용해:8×13 배열(0/1~7 값)로 이미지·아이콘 표시
프레임을 순차 출력해 간단한 애니메이션·게임 구현 가능
matrix.setGrayscaleBits(3)로 3비트(0-7),matrix.draw(...)로 프레임 출력
RGB LED 4개 - MPU/MCU 분할 제어1
LED #1, #2 - MPU(Linux) 제어
Linux의
/sys/class/leds인터페이스를 통해 제어각 색 세그먼트 이름
LED1:
red:user,green:user,blue:userLED2:
red:panic,green:wlan,blue:bt
CLI 예:
echo 1 | tee /sys/class/leds/red:user/brightness # 켜기 echo 0 | tee /sys/class/leds/red:user/brightness # 끄기Python에서도 파일 쓰기로 제어 가능
LED2는 기본적으로 시스템 상태(PANIC, WLAN, BT)를 표시하지만, 사용자가 재정의해 사용할 수 있다.
LED #3, #4 - MCU(Arduino) 제어
Arduino 스케치에서 전용 핀 상수(LED3_R, LED3_G, LED3_B 등)를
pinMode/digitalWrite로 제어Active Low:
LOW가 켜짐,HIGH가 꺼짐예) 빨간색만 켜기:
digitalWrite(LED3_R, LOW); digitalWrite(LED3_G, HIGH); digitalWrite(LED3_B, HIGH);
하드웨어 디버그 UART (JCTL)
SoC 메인 콘솔(TTY)에 직접 연결되는 저수준 디버그 포트1
용도
부트로더(SPL, U‑Boot) 및 커널 초기화 로그 확인
전원 협상, 초기 하드웨어 초기화 문제 분석
SSH/ADB 이전 단계에서의 콘솔 접근 및 로그인
사양
커넥터: JCTL
논리 레벨: 1.8V
속도: 115200bps
필요 장비
1.8V USB‑TTL 변환기 (예: DSD Tech SH-U09C5)
주의: 5V/3.3V USB‑TTL을 직접 연결하면 보드가 손상될 수 있다.
전원 버튼 동작
전원 인가 시 자동 부팅, 전원 버튼 누를 필요 없음
5초 이상 길게 누르기: 보드의 Linux(MPU) 부분만 재부팅1
디지털·아날로그 핀 및 타이밍 기능
디지털 핀 개요
총 47개 디지털 핀 - STM32 MCU에 연결
UNO 스타일 헤더: D0-D21 (22개)
하단 JMISC 커넥터: 25개
모든 디지털 핀은 다음처럼 사용 가능:
pinMode(pin, INPUT / OUTPUT / INPUT_PULLUP); int v = digitalRead(pin); digitalWrite(pin, HIGH/LOW);일부 핀은 UART, SPI, I2C, CAN, PWM, OPAMP 등 다른 기능과 겹쳐 배치되어 있으므로, 실드/외부 회로 설계 시 핀 기능표를 확인해야 한다.1
D14-D19는 아날로그 기능(A0-A5)과 겸용이다.
ADC(아날로그 입력) - A0~A5
채널 수: 6채널 (A0-A5), 14비트 ADC1
기본 매핑
A0 (PA4): ADC + DAC0
A1 (PA5): ADC + DAC1
A2 (PA6), A3 (PA7): ADC + OPAMP 입력
A4 (PC1): ADC + I2C SDA
A5 (PC0): ADC + I2C SCL
해상도 설정
analogReadResolution(14); // 8/10/12/14비트 선택 가능 int value = analogRead(A0);기본 기준 전압(Vref): 3.3V 소프트웨어로 내부/외부 레퍼런스를 바꿀 수 있다:
analogReference(AR_INTERNAL2V5); // 2.5V 내부 기준 // AR_INTERNAL1V5, AR_INTERNAL1V8, AR_INTERNAL2V05, AR_EXTERNAL 등AR_EXTERNAL 사용 시 AREF 핀으로 외부 기준전압 인가 가능
DAC(아날로그 출력) - DAC0, DAC1
채널 수: 2채널
DAC0: A0 (PA4)
DAC1: A1 (PA5)
해상도 설정 및 출력1
analogWriteResolution(12); // 8~12비트 analogWrite(DAC0, value); // 실제 전압 출력예: LUT를 이용해 60Hz 사인파를 생성하면 DAC0에서 연속적인 아날로그 파형을 출력 가능
일반 GPIO에
analogWrite→ PWM DAC 핀(DAC0/DAC1)에analogWrite→ 진짜 아날로그 전압
PWM 핀 - D3, D5, D6, D9, D10, D11
PWM 지원 핀: 6개
D3, D5, D6, D9, D10, D11 (SPI SS/MOSI 등의 기능과 겸용)1
기본 사양
주파수: 500Hz 고정
기본 해상도: 8비트 (0-255)
사용 예
analogWriteResolution(10); // 0~1023 analogWrite(D3, duty); // D3 핀에서 PWM 출력예: A0에서 읽은 포텐셔미터 값을 PWM 듀티로 매핑해 밝기 제어 등 구현 가능
유선 통신 인터페이스 (UART·SPI·I2C·Qwiic)
UART (하드웨어 시리얼)
핀 매핑
D0: RX (PB7)
D1: TX (PB6)
사용 예
Serial.begin(115200); Serial.println("Hello UNO Q");이 Serial 포트는 물리적인 D0/D1 핀으로 나가며, App Lab의 Serial Monitor와는 별개이다. 외부 장치와 통신할 때 사용하고, App Lab Serial Monitor에는 Monitor 객체를 사용한다(아래 참조).
SPI
핀 매핑1
D10: SS
D11: MOSI
D12: MISO
D13: SCK
기본 사용 패턴
#include <SPI.h> void setup() { pinMode(D10, OUTPUT); digitalWrite(D10, HIGH); // 비선택 상태 SPI.begin(); } void loop() { digitalWrite(D10, LOW); SPI.transfer(0x35); // 주소 등 SPI.transfer(0xFA); // 데이터 digitalWrite(D10, HIGH); }
I2C (Wire / Wire1)
메인 I2C 버스 - UNO 헤더(Wire)1
SDA: D20 (PB11)
SCL: D21 (PB10)
사용 예:
#include <Wire.h> void setup() { Wire.begin(); // D20/D21 }
서브 I2C 버스 - Qwiic 커넥터(Wire1)
SCL: I2C4_SCL (PD12)
SDA: I2C4_SDA (PD13)
Wire1.begin()으로 초기화3.3V 전용, Qwiic/Modulino 같은 퀵 커넥트 모듈 연결용
Qwiic 커넥터
SparkFun의 Qwiic 생태계를 따르는 4핀 I²C 커넥터1
장점
무(無) 납땜, 점퍼선 없이 센서·액추에이터 연결
극성(Polarized) 커넥터로 역삽입 방지
데이지체인으로 여러 장치를 직렬 연결 가능
내장 풀업 저항
UNO Q에서는 Wire1(I2C4)에 연결, 3.3V 전용
Arduino Modulino 시리즈 등 다양한 노드를 쉽게 연결할 수 있다.
Serial Monitor용 Monitor 객체
UNO Q에서는 클래식 Serial Monitor와 구조가 다르다.
Serial은 D0/D1 UART 하드웨어에 연결되며, App Lab의 Serial Monitor에 직접 표시되지 않는다.대신
Arduino_RouterBridge라이브러리의 Monitor 객체를 사용하면 MCU의 출력이 Bridge를 통해 Linux → App Lab Serial Monitor로 전달된다.#include <Arduino_RouterBridge.h> void setup() { Monitor.begin(); } void loop() { Monitor.println("Hello UNO Q"); delay(1000); }
USB‑C 포트와 주변기기 확장
UNO Q의 USB‑C 포트는 전원 및 프로그래밍 포트를 넘어 다목적 고속 인터페이스를 제공한다.1
전원
5V 3A (15W) 입력 - 보드 전원 공급
데이터
USB 3.1 Gen 1 (5Gbps) - 고속 데이터 전송
디스플레이
DisplayPort over USB‑C 지원
USB‑C 멀티포트 어댑터를 통해 HDMI 모니터 연결 가능
주요 활용 (USB‑C 동글/허브 필요)
비디오 출력: HDMI 모니터
비디오 입력: USB 카메라
오디오: USB 오디오 디바이스, 3.5mm 헤드셋(오디오 어댑터 경유)
네트워크: 유선 LAN 포트가 있는 허브를 통한 Ethernet
입력장치: 키보드·마우스·게임패드 등 USB HID
저장장치: USB 메모리, 외장 SSD, microSD 카드 리더
동글은 전원 전달(PD) 지원 제품 사용을 권장하며, Apple 일부 동글은 전원/디스플레이 호환 문제가 보고되었다.
MCU-MPU Bridge/RPC 구조
UNO Q의 핵심 특징 중 하나는 MCU와 MPU 사이의 고수준 통신을 담당하는 Bridge/RPC 구조이다.1
Arduino Router (Linux 서비스)
Linux 측에서
arduino-router라는 백그라운드 서비스가 동작기능
/dev/ttyHS1(Linux)와Serial1(MCU)를 통해 MessagePack RPC 기반 양방향 채널 유지Star Topology로 여러 Linux 프로세스와 MCU를 동시에 연결
서비스 디스커버리: 각 프로세스/MCU가 제공하는 RPC 함수들을 중앙에서 관리하고 라우팅
Linux↔MCU 뿐 아니라 Linux↔Linux 간 RPC도 가능
예약 리소스 (주의)
Linux:
/dev/ttyHS1MCU:
Serial1이 인터페이스는 arduino-router가 독점하므로 사용자 코드에서 직접 열면 안 된다. (열면 Bridge가 고장난다.)
관리 명령어 예
systemctl status arduino-router # 상태 확인 sudo systemctl restart arduino-router # 재시작 journalctl -u arduino-router -f # 실시간 로그 보기필요 시 서비스 파일의
ExecStart에--verbose옵션을 추가해 상세 로그를 볼 수 있다.
MCU 측 - Arduino_RouterBridge 라이브러리
주요 객체:
BridgeBridge.begin()- 통신 초기화Bridge.call("method", args...)- Linux 측 함수 호출 후 결과 대기Bridge.notify("method", args...)- 결과를 기다리지 않는 단방향 호출Bridge.provide("name", func)- MCU 함수를 RPC로 등록 (백그라운드 스레드에서 실행, 짧고 스레드 안전한 함수에 적합)Bridge.provide_safe("name", func)- 등록된 함수가 메인loop()문맥에서 실행되도록 보장 (Arduino API 사용 시 권장)
동작 방식
별도의 백그라운드 스레드가 RPC 메시지를 상시 폴링해 처리
내부적으로 Zephyr의 뮤텍스를 사용해 다중 접근을 보호
주의 사항
provide()로 등록된 함수 안에서는Bridge.call()이나Monitor.print()를 호출하지 말 것 - 응답 처리 중 추가 RPC를 시작하면 데드락 가능
Serial Monitor 연동용
Monitor객체Monitor.begin()이후Monitor.print/println사용 시, 출력이 Router를 통해 App Lab Serial Monitor에 전달된다.
Linux 측 - Python/기타 언어에서의 사용
App Lab Python API:
arduino.app_utils에서 제공하는Bridge객체 사용예: MPU 쪽 Python에서 MCU의
set_led_state(bool)함수를 RPC로 호출
고급 사용 - Unix Domain Socket
소켓 경로:
/var/run/arduino-router.sockMessagePack RPC를 지원하는 언어(Python, C++, Rust, Go 등)에서 직접 연결해
MCU의 RPC 함수 호출
다른 Linux 프로세스와의 RPC 교환 가능
예: 일반 Python 스크립트에서
msgpack을 사용해set_led_state호출
무선 통신 (Wi‑Fi 5 · Bluetooth 5.1)
UNO Q의 무선 통신 기능은 WCBN3536A 모듈을 통해 제공되며, 모두 MPU(Linux) 측에 연결되어 있다.1 MCU에서 직접 무선을 제어하지 않고, Bridge를 통해 간접적으로 사용한다.
Wi‑Fi (무선 LAN)
Linux(MPU)에서의 Wi‑Fi 설정
GUI (SBC 모드)
화면 우측 상단 네트워크 아이콘 클릭 → SSID 선택 → 비밀번호 입력
CLI - nmcli 사용
연결:
sudo nmcli d wifi connect <SSID> password <비밀번호>현재 네트워크에서 끊기:
sudo nmcli d disconnect wlan0 # 인터페이스 이름은 nmcli device로 확인저장된 네트워크 삭제(자동 연결 방지):
sudo nmcli connection delete <SSID>
WPA2-Enterprise / Eduroam 등 고급 인증
nmcli con add ...명령으로 EAP(PEAP, TTLS 등), phase2 인증(MSCHAPv2, PAP 등), 도메인 매칭 등을 포함한 프로파일을 생성할 수 있다.비밀번호를 평문으로 저장하기 싫다면:
nmcli --ask con up <network_name>를 사용해 인터랙티브하게 비밀번호를 입력할 수 있다.1
MCU에서 Wi‑Fi 활용 - BridgeTCPClient 예
MCU는 직접 Wi‑Fi 스택을 가지지 않고, Linux의 소켓을 Bridge를 통해 프록시한다.
BridgeTCPClient<>클래스를 사용하면 MCU 코드에서:예:
time.nist.gov에 TCP로 접속해 UTC 시간을 받아와 Monitor로 출력
네트워크 접근이 필요한 대부분의 MCU 코드에서 이 패턴을 통해 인터넷/클라우드에 접근 가능하다.
Bluetooth 5.1
SBC 모드에서의 관리
화면 우측 상단 Bluetooth 아이콘을 통해:
전원 켜기/끄기
주변 기기 스캔
페어링 및 연결
기기 신뢰 설정, 파일 전송 등 수행
터미널에서 bluetoothctl 사용
전원 관리:
bluetoothctl power on # 켜기 bluetoothctl power off # 끄기bluetoothctl인터랙티브 쉘 내에서:power on/off # 전원 제어 scan on/off # 주변 기기 검색 connect <MAC_ADDR> # 특정 기기와 연결/페어링UNO Q는 상황에 따라 Bluetooth 호스트(키보드·마우스·헤드셋 연결) 또는 주변기기(스마트폰 앱과 통신)로 동작할 수 있다.
첫 사용 및 Hello World 절차 요약
UNO Q를 처음 사용할 때의 전체 흐름을 간단히 정리하면 다음과 같다.1
하드웨어 준비
UNO Q, USB‑C 케이블, PD 지원 USB‑C 멀티포트 동글
SBC 모드: HDMI 모니터 + 키보드·마우스
PC-hosted 모드: 인터넷 연결된 PC
전원 연결 및 부팅
USB‑C 동글을 통해 모니터·키보드·마우스를 연결하고, PD 어댑터/PC에 USB‑C 연결
보드는 자동으로 부팅되며, 데스크톱 환경과 Arduino App Lab이 실행 가능
개발 모드 선택
SBC 모드: UNO Q 화면에서 직접 App Lab 실행
PC-hosted 모드: PC에 설치된 App Lab에서 USB‑C 또는 Network 모드로 UNO Q 접속
Hello World - Blink 실행 (App Lab)
App Lab 실행 → Examples > Blink LED 선택 → Run
내장 RGB LED의 빨간색이 1초 간격으로 점멸하면 통신·업로드·MCU 동작이 모두 정상
(선택) Arduino IDE로 MCU Blink
UNO Q Zephyr Core 설치
Board/Port 설정 후
01.Basics > Blink업로드동일하게 내장 LED 점멸 확인
추가 자료 및 지원 채널
UNO Q 사용 중 문제가 생기거나 더 자세한 하드웨어 정보를 확인하고 싶을 때 참고할 수 있는 자료이다.1
하드웨어 문서 (Arduino 공식 문서 사이트)
UNO Q Full Pinout - 모든 핀의 기능·멀티플렉싱 정보
UNO Q Datasheet - 전기적 특성, 타이밍, 메모리 구성 등 기술 사양
UNO Q Schematics - 회로도
UNO Q STEP Files - 3D CAD 모델(기구 설계/케이스 제작용)
온라인 지원
Arduino Help Center의 UNO Q 관련 문서
Arduino Forum의 UNO Q 카테고리 - 다른 사용자들과 Q&A, 팁 공유
개별 지원이 필요할 경우 Arduino Contact us 페이지를 통해 문의
참고
1[UNO Q User Manual _ Arduino Documentation-1장.pdf](UNO Q User Manual _ Arduino Documentation-1장.pdf)
2title - url

