Category (Click)
개발보드 덕질하기

그래도 아두이노 컨셉은 지켰다, Arduino UNO Q 핸즈온

 차완기 - @11/2/2025, 1:42:00 AM

큰거온다!!!

Arduino NANO R4 출시 후 한동안 별다른 소식 없이 빽투스쿨 세일 스팸만 보내던 아두이노에서 지난 9월 27일, 예고장을 하나 던지고 UNO Q를 출시했습니다.
퀄컴이 아두이노를 도대체 왜..? 그런데 데이터시트 하나 안주는 퀄컴에서 오픈소스는 도대체 무슨소리니, 이제 아두이노는 IC칩 발사대인가, 그나저나 이자식들 PMIC로 MCU인척 낚아먹었네... 또 우노야 젠장 엔트리 라인업에 무슨 시련을 … 뭐 이런 생각도 잠시 프리오더 글씨를 보고 결제부터 갈겼습니다.
시간이 조금 지나 지난 수요일(10월 29일) UNO Q가 도착했습니다.
퀄컴의 Dragonwing 색상이죠. 박스의 보라색 포인트가 인상적입니다. 아두이노에서 SBC 시리즈를 계속 밀어준다면 퀄컴의 고성능 프로세서인 Snapdragon을 집어넣고 빨간색 박스로 나올지도 모르겠습니다.
설명서, 스티커가 함께 있습니다. 특이하게 아두이노 보드가 방전비닐에 들어있네요. 스티커도 항상 주던 아두이노 로고 스티커가 아닌 UNO Q의 튜토리얼 바로가기 스티커입니다.
얼른 비닐을 뜯고 보드를 살펴봤습니다.

UNO Q 자세히 살펴보기

살펴볼게 메인 MCU뿐인 이전까지 아두이노 보드들과 다르게 이녀석은 SBC라고 무언가를 잔뜩 달고 있습니다. 전원을 집어넣기 전에 구석구석 훓어보기로 했습니다.

MPU

RPi 5에 Broadcom BCM2712가 있다면 UNO Q에는 Qualcomm Dragonwing QRB2210가 있습니다. 퀄컴이야 회사 이름이고, Dragonwing은 퀄컴의 IoT 및 산업 분야 라인업입니다. 또 다른 대표적인 라인업으로는 모바일 AP인 Snapdragon이 있죠. 그나저나 퀄컴 드래곤 참 좋아하네요.
아두이노와 라즈베리파이를 항상 비교하는것처럼 아두이노에서 SBC가 나온 이상 비교는 피할 수 없습니다. 바로 줄세웠습니다. (RPi 5의 BCM2712은 SoC에 대한 스펙은 찾을수가 없어서 RPi 5 사양에서 최대한 SoC에 대한 것이라 생각되는 부분만 뽑았습니다)
QRB2210 (UNO Q)
BCM2712 (RPi 5)
프로세서 구성
4x Arm Cortex-A53 @ 2.0 GHz
4x Arm Cortex-A76 @ 2.4 GHz
GPU
Qualcomm Adreno 702 @ 845 MHz OpenGL ES 3.1, Vulkan 1.1 OpenCL 2.0
VideoCore VII GPU @ 960 MHz OpenGL ES 3.1, Vulkan 1.3
디스플레이 지원
MIPI DSI, HD+ (720x1680) 60 Hz
HDMI, RPi5 기준 듀얼 4K(3840x2160) 60 Hz
PCIe 지원
-
PCIe 2.0, 비공식적으로 3.0 지원
QRB2210가 저전력을 지향하다 보니 라즈베리파이를 옆에 두면 이렇다할 강점이 없어보입니다. 지향하는 방향이 다른 것이죠. 5V 5A라는 생소한 PD 규격까지 사용하며 전기를 퍼먹는 라즈베리파이보다는 그래도 컴퓨터 USB 포트에 꽂아도 충분한 UNO Q가 더 아두이노스럽습니다. 마지막 컨셉만은 지켜준 아두이노가 대견하다고 해야할까요
참고로 UNO Q의 QRB2210은 MPU입니다. 포스팅을 작성하며 BCM2712의 분류에 해당하는 SoC와 아주 햇갈려 찾아봐도 명확하게 구분을 지어주는곳이 없었습니다. 예전에는 명확한 구분이 가능하지만 점점 기능을 통합하며 구분이 애매모호해졌나봅니다. 무언가 기능이 더 통합되있으면 SoC 이정도로 정리해봤습니다.
Qualcomm - QRB2210 Hardware [링크]
(정작 퀄컴에서도 MPU라 했다가 SoC라 했다가 오락가락합니다)

MCU

MCU는 보드 뒷편으로 쫒겨났습니다. 항상 MCU가 얼굴이 되곤 했는데 어쩌다가 이런 신세가.. 그래도 복잡한 MPU 대신 MCU를 보고 있으니 안정감이 듭니다.
이번에는 같은 우노 라인업인 UNO R4와 비교해봤습니다.
STM32U585 (UNO Q)
RA4M1 (UNO R4)
프로세서
1x Arm Cortex-M33 @ 160 MHz
1x Arm Cortex-M4 @ 48 MHz
SRAM
786 kB
32 kB
Flash
2 MB
256 kB
논리전압
3.3 V; 5 V 입력 호환
3.3 V; 5 V 입력 호환
ST - STM32U785/585 [링크]
STM32U 시리즈는 처음 다뤄보는것 같습니다. 초저전력 라인업이라 합니다. 앞서 MPU쪽에서 저전력 라인업인 Dragonwing을 사용했듯이 MCU쪽도 저전력으로 맞춰준 느낌입니다. 프로세서로는 Cortex-M33, 어디서 많이 봤다 했더니 RP2350의 것과 같습니다. 벌써부터 친밀감이 생기네요 ㅎㅎㅎ
UNO R4에서 Arm을 사용하며 AVR과의 논리전압 문제(5V-3.3V)를 5V 입력 호환핀으로 해결했듯이 UNO Q에 사용된 STM32U585 역시 5V 호환핀을 지원합니다. UNO 폼팩터의 전면 모든 핀(D0~D13, A0~A5)이 5V 호환입니다.

eMMC

아두이노의 표현 그대로 두개의 브레인을 모두 훓었으니 주변장치를 훓어볼 차례입니다. MCU 바로 옆에 MPU를 위한 eMMC가 있습니다. Kingston 제품이네요. 글을 작성하는 지금 시점으로는 16GB 모델만이 출시되어 있습니다.

PMIC

보드 전면에 보면 무언가 주렁주렁 많이 달고있는 칩이 눈에 띕니다. MPU와 퀄컴 제품으로 깔맞춤..은 아니고 저걸 써라고 퀄컴에서 정해뒀을겁니다.
Arduino UNO Q Datasheet - Power Tree [링크]
보통 UNO R4처럼 MCU 하나만 있는 경우에는 외부전압을 5V 또는 3.3V로 바꾸는 강압 컨버터(DC-DC 벅 컨버터)를 사용하는 반면, UNO Q에는 MPU, SRAM, eMMC, 무선 모듈 등 식구가 많습니다. 골때리게도 전부 다른 전압을 사용하는데, PMIC가 이걸 모두 해결해줍니다. 위의 파워트리를 보면 USB의 5V 전원을 받아 전부 뿌려주는것을 볼 수 있습니다. 전원 공급 말고도 음성 오디오 관련된 기능이 있는것 같은데 데이터시트를 안보여주네요 ^퀄컴^
아, 물론 MCU는 PMIC 안쓰고 5V to 3.3V 스텝다운 컨버터를 혼밥합니다 ㅋㅋ..
Arduino - UNO Q 티저
그나저나 이녀석이 예고장에서 어그로를 담당하던 녀석이죠. 직사각형 MCU도 있나..? 하면서 머리를 엄청 굴렸는데..ㅎㅎ.. 재대로 낚였죠

무선 모듈

마찬가지로 퀄컴의 무선 모듈입니다. Wi-Fi 5(802.11 a/b/g/n/ac)와 Bluetooth 5.1을 지원합니다. 다 좋은데 외부 전원 공급을 위한 배럴잭을 날려버렸네요. 우노의 아이덴티티.. 너무 아쉽습니다.

DSI to DP Alt IC

앞에서 MPU인 STM32U585는 HDMI조차 내보내지 못했는데요, USB Type-C 커넥터로 디스플레이 연결이 가능하도록 만들기 위해 MPU의 DSI 신호와 USB 3.1를 합쳐주는 ANX7625가 있습니다. 크기도 그렇고 위치도 그렇고 UNO R3의 USB to UART칩(ATmega16u2)처럼 위장한 모습입니다.

qwiic 포트

SparkFun에서 만든 I2C 커넥터 규격인 qwiic입니다. 센서 모듈을 소시지처럼 줄줄이 연결할 수 있습니다.
아두이노에서 이걸 활용해 키트도 만들어줄 만큼 밀어주고 있는데요, I2C 버스를 활용하다 보니 모듈마다 MCU가 들어가서 말도안되는 가격을 자랑합니다. NANO R4에도 집어넣더니 UNO Q에도 들어갔네요.

Arduino App Lab 맛보기

이제 볼만큼 본것같습니다. 슬슬 전기 먹이고 LED 꽂고 커봐야겠습니다.
Arduino - Arduino App Lab [링크]
UNO Q는 MPU+MCU 구성인 만큼 두 환경에서 프로그래밍을 모두 진행해야 합니다. 새로운 IDE인 Arduino App Lab을 사용하면 한 프로그램에서 동시에 프로그램을 업로드할 수 있습니다.
전원을 꽂고 프로그램을 실행하면..
업데이트하라고 튕겨냅니다. 배송하면서 패치할만큼 급했나봅니다 ㅋㅋ..
튜토리얼을 참고해 새로운 이미지를 구워줍니다. 라즈베리파이의 micro SD카드에 OS를 굽는 작업과 비슷해보입니다.
이름을 입력하고.. (그와중에 보드 이름은 수동으로 입력하면 빠꾸먹입니다. 주사위 굴려서 정해주는 랜덤으로 강제,, 그럴거면 텍스트 입력창 왜만들었니...)
Wi-Fi 접속정보 입력해주면..
갑자기 오류를 뿜어줍니다.
침착하게 재실행..
업데이트를 하라고 하네요. 분명히 처음에 했는데.. 아무튼 업데이트 버튼 눌러두고 한참 기다려줍니다.
이 시점에서 UNO Q의 IP주소가 보입니다.
??? 뭐하니...
다시 껐다가 켜면 또 됩니다. 뭔가뭔가...이상하네요..
아무튼 리눅스 계정 패스워드 만들어줍니다. 이렇게 만든 패스워드는 앞으로 App Lab에 로그인하거나 SSH-in할때 등 자주 사용하게됩니다.
마침내 App Lab 화면이 나옵니다. 예제가 쭈욱 있네요.

Blink 예제 맛보기

LED 켤줄알면 MCU 다 배운거죠. 곧장 마스터하러 가봅시다.
예제 중 “Blink LED”를 클릭하면 나오는 화면입니다.
VSCode처럼 왼쪽에는 디렉토리가 나오고 오른쪽에는 코드가 나오나봅니다. 왼쪽 상단의 Run 버튼을 눌러 deploy하거나 Copy and edit app 버튼을 클릭하면 예제를 복사해와서 수정이 가능한가봅니다.
이어서 코드 설명입니다. 파이썬 코드에서 Bridge.call 메소드를 날리면 RPC를 통해 MCU로 날라가고, MCU에서는 callback으로 받는 느낌입니다. 데이터는 MQTT처럼 Topic-Data 페어이고 데이터 타입은 알잘딱깔센하게 변환되나봅니다.
각 코드는 이렇게 생겼습니다.
아 그런데 이거 App Lab 코드에디터는 조금더 깎아야할것같습니다. 기존 IDE 2.0의 단축키들이 하나도 안먹네요.. cmd+d 안되는건 그러려니 하는데 auto format조차 안되는건 도대체 무슨...
언젠가 고쳐지겠지 하면서 Run 버튼을 클릭합니다.
??? 빌드 시간이..
처음에는 고장났나 하면서 C언어 코드의 LED_BUILTIN가 어떤 LED인지 찾아헤맸는데요, (심지어 Docs 어디에도 안나와있음) 잠시 방치해뒀더니 실행이 되어있었습니다.
SSH로 UNO Q에 접속해서 확인해보니 MCU쪽 코드를 무려 싱글코어로 빌드하고 있었습니다. Zephyr OS를 말이죠.. 심지어 증분컴파일도 아닌지 두 번 연속으로 실행해도 똑같았습니다. 이부분 관련해서는 나중에 시간을 내어서 조금 더 살펴봐야할것같습니다. 증분빌드 하는데도 단순히 프로세서가 느려서 링크단계가 늦는건지..
참고로 IDE 2.0을 실행해보면 Wi-Fi로 UNO Q의 MCU에 펌웨어를 업로드할 수 있습니다. 로컬에서 하는 만큼 순식간이죠. App Lab에 로컬 크로스컴파일-업로드 기능을 넣던지 뭔가 개선이 필요해보입니다.
아무튼 작동은 잘 합니다. 인내심이 필요했네요.
기존 아두이노에서는 Serial.print를 활용해 간단한 디버깅을 하곤 했는데, 여기서는 Monitor 객체를 사용하면 RPC를 통해 MPU에서 로그를 확인할 수 있다고 합니다. 기존의 Serial 객체는 MCU의 UART포트(0, 1번)에 연결되어 있습니다.
또 30초 기다리고 실행했는데 뭔가 이상합니다. 아두이노에서 print 메소드는 뉴라인을 하지 않는데, 여기서는 뉴라인을 해버립니다. 포럼에 관련 이슈 내용이 있던데 언젠가 고쳐주겠죠.. 해줘

웹서버 예제 맛보기

웹서버를 실행해서 LED를 조작하는 예제도 있어서 열어봤습니다. 여기서 “Bricks”라는 개념이 등장하는데요, 특정 기능을 구현해서 Python에 물릴 수 있도록 엄청나게 추상화해둔것으로 보입니다.
예를 들어 이 예제의 WebUI - HTML 브릭은 정적 웹페이지를 호스팅하고 웹소켓으로 프론트와 통신해 데이터를 전송하거나 이벤트가 발생하면 파이썬 콜백으로 알려준다고 합니다.
파이썬 코드를 살펴보면 ui.send_message가 웹서버 프론트로의 데이터 전송, ui.on_message가 프론트에서 데이터 수신 콜백을 등록하는 과정으로 보입니다.
아두이노 코드는 비슷할테니 스킵하고, 프론트에서 웹소켓 부분을 보러 왔는데.. 이거 뭐죠...?
기본 예제인데...하이라이트조차 안되있는거..도대체 뭘까요..
눈이 멀어버릴것같아서 스킵합니다,,,
실행하면 이런 창이 튀어나옵니다. 원래는 아두이노의 IP주소로 접속해야하는데, App Lab 자체적으로 이걸 연결해주나봅니다. (근데 이거 어쩔때는 또 안됨 ㅋㅋ)
마찬가지로 작동은 잘됩니다.

인공지능 예제

그렇게 AI AI 노래를 불렀는데 빠뜨릴수는 없죠. UNO Q에 USB 동글을 연결한 후 USB 카메라를 연결해 테스트해봤습니다.
여기서는 웹서버를 위한 브릭과 객체인식을 위한 브릭을 사용합니다.
AI는 MPU의 GPU에서 가속된다고 합니다. 전력소모치고 성능이 꽤 괜찮은것 같습니다.

App 직접 만들어보기

AI 예제를 실행했는데 MPU만 작동하고 MCU는 작동하지 않더라고요. MCU 혼자 소외된게 뭔가 안쓰러워, AI 인식결과에 따라 LED를 켜주는 App을 직접 만들어봤습니다.
우선 App을 만들어줍니다. 대충 test로 이름지었습니다.
AI를 위한 브릭을 추가했습니다. 방금 직전에 사용한 “Video Object Detection” 브릭입니다.
기존 예제의 파이썬 코드를 그대로 복사해와서 AI 인식 결과가 어떻게 출력되는지 확인해봤습니다.
object 이름이 string으로 나오는것 같습니다. enum 안쓰고 string을 던져주다니.. 메모리 많아서 부럽네요 🫠
컵이 인식되면 RPC를 통해 MCU측에 데이터를 던지도록 파이썬 코드를 짜봤습니다.
MCU쪽 C언어 코드는 기존 Blink 예제 코드를 그대로 사용했습니다. LED가 잘보이도록 2번핀에 달아줘서 핀번호만 바꾸고 HIGH, LOW 순서를 바꿨습니다. (온보드 LED는 LOW에 켜짐)
잘 되네요.

마무리

AI라는 트랜드는 따라가야하고 그러면서 아두이노라는 정체성은 지킨, 그러다 보니 너무 애매한 UNO Q가 탄생하게 된 것 같습니다.
보통 아두이노 하면 떠오르는것 - 컴퓨터에 USB 꽂고 IDE 켜서 예제 업로드하면 바로 LED 작동하는것을 SBC 버전으로 정말 잘 만들었습니다. 버튼 몇번 클릭만으로 AI에 웹서버까지 바로 켜지고 곧바로 피지컬하게 활용할 수 있는건 정말 아두이노스럽죠. 반면 라즈베리파이에서 이걸 할 생각을 하면 벌써부터 머리가 아픕니다. 학생들 앞에서 터미널 켜고 apt install 어쩌고저쩌고 100줄 입력 하세요 ^^ 하면.. 어우 상상만 해도 끔찍하네요.
이론상으로는 정말 완벽한데.. 은은하게 느껴지는 똥맛.. Samsung ARTIK, intel Edison, Arduino yun의 향기가 느껴집니다. 브랜드 인수처럼 빅 이벤트로 만들어진 개발보드인데도 불구하고 소프트웨어(App Lab)가 엉성한 점, 기본 예제를 제외하면 자료가 너무 없는 점 등의 이유가 아닌가 싶습니다. 뭔가 복잡한걸 시도하면 허들이 높아지는 아두이노인 만큼 자료가 부족한건 큰 문제라 생각합니다.
아직 출시 초기이니.. 하면서 그러려니 하지만 재대로 써먹으려면 아직 갈길이 먼것 같습니다.
UNO/NANO R4를 보며 아두이노는 도대체 무슨 생각인가 했는데, 그래도 UNO Q를 통해 아두이노의 정체성을 찾아가고 있는것 같아 한편으로는 다행이다 싶기도 합니다.
시간이 나면 UNO Q의 SBC, MCU 파트를 각각 자세히 파볼까 합니다.