AEGLOSLAB Arduino UNO Q 완전 가이드

제11부 3D 프린팅 활용

11.1 인클로저 설계 원칙 — 포트 배치와 방열

UNO Q는 노출된 보드 상태로 쓰면 정전기·먼지·낙하 충격에 취약하고, 로봇·거치형 프로젝트에서는 인클로저 자체가 필요하다. 이 장은 UNO Q의 실제 포트 배치와 발열 특성을 근거로 인클로저(외함) 설계의 원칙을 다룬다. "어떤 케이스를 쓸까"(공개 STL 활용 vs 커스텀 설계)는 11.2에서, "마운트·거치대를 어떻게 만들까"는 11.3에서 이어간다.

이 장은 3D 프린터 조작법 자체는 다루지 않는다. FDM(용융적층조형) 프린터로 인클로저를 출력한다는 전제 아래, 필요한 용어(공차, 서포트 등)는 등장하는 곳에서 그때그때 짧게 설명한다.

11.1.1 보드 치수와 마운팅홀 — 공식 데이터시트 기준

UNO Q는 2GB RAM/16GB eMMC 구성(ABX00162)과 4GB RAM/32GB eMMC 구성(ABX00173)의 두 SKU가 있지만, PCB 외형과 커넥터 배치는 동일하다. 이하 수치는 Arduino 공식 데이터시트(ABX00162-ABX00173-datasheet.pdf, 2026-08-17 개정본) 12장 "Mechanical Information"에서 직접 확인한 값이다.

  • 보드 외곽 치수: 68.58 mm × 53.34 mm — 데이터시트가 "클래식 UNO 폼팩터와 호환되는 외곽·홀 패턴"이라고 명시한 값과 일치한다(클래식 UNO R3의 2.7in × 2.1in과 동일).
  • 바닥면 부품 높이 제한: 바닥면(하부) 부품은 모두 2 mm 미만으로 유지된다 — 캐리어 보드(카메라·디스플레이 확장 보드 등) 위에 스택할 수 있도록 한 설계다. 인클로저 바닥판 여유 공간을 확보할 때 이 수치를 그대로 스탠드오프 최소 높이의 기준으로 쓸 수 있다.
  • 마운팅홀: 4개, 반지름 R1.6 mm(지름 3.2 mm) — 그중 2개는 3.6 mm × 45° 모따기가 표기되어 있다(방향 구분용 키잉으로 추정).
  • 동작 온도(T_OP): -10 ℃ ~ 60 ℃(보드 주변 공기 기준) — 이 값은 방열 설계에서 다시 쓴다(11.1.4).

확인 필요: 데이터시트의 기계도면에는 이 외에도 15.24 mm·17.78 mm·7.62 mm·12.45 mm·13.97 mm 등 세부 치수가 함께 표기되어 있다(대부분 2.54 mm의 배수 — 클래식 아두이노 격자 치수의 흔적이다). 렌더링된 PDF 이미지에서 눈으로 읽은 값이라 소수점 이하 오독 가능성을 배제할 수 없다. 정밀 컷아웃(홀 좌표를 mm 단위로 정확히 맞춰야 하는 설계)은 이 장의 수치를 그대로 CAD에 입력하지 말고, ① 실물 보드를 캘리퍼스로 재실측하거나 ② Arduino의 공식 문서 저장소(github.com/arduino/docs-content, content/hardware/02.uno/boards/uno-q/downloads 경로)에 STEP 등 CAD 원본이 있는지 직접 확인해 대조하길 권한다.

아래는 위 확인된 수치를 바탕으로 한 개념도다(홀 좌표는 근사치이며, 실제 4개 홀이 완전한 직사각형을 이루는지는 확인되지 않았다 — 클래식 아두이노 UNO 계열 보드는 전통적으로 홀 하나가 완벽한 직사각형에서 약간 벗어나 있는 경우가 흔하다는 점도 참고).

68.58 mm 53.34 mm USB-C + 전원버튼 + JCTL1 JDIGITAL1 (18핀, 3.3V) LED 매트릭스 8×13 JANALOG1 (14핀, 3.3V) 마운팅홀 ⌀3.2 mm × 4 JSPI1(ICSP) QWIIC1

11.1.2 포트·커넥터 인벤토리와 컷아웃 배치

인클로저 설계의 실질적인 작업은 "어느 벽면에 어떤 구멍을 얼마나 뚫을 것인가"다. 데이터시트 4~9장에서 확인한 커넥터 목록을 정리한다(핀아웃·인터페이스 세부는 2.2·2.3 참고).

커넥터대략적 위치(클래식 UNO 배치 기준)전압핀수용도
JUSB1 (USB-C)상단 모서리VBUS 5V, USB 3.1 신호—전원 입력, 데이터, DisplayPort Alt-Mode 겸용
JBTN1 (전원 버튼)USB-C 옆——5초 이상 길게 눌러 MPU(Linux) 재부팅
JCTL1상단, USB-C 인근1.8V10핀디버그 UART 콘솔, USB 강제 부트, PMIC 리셋, VBUS 전원스위치 비활성화
JDIGITAL1상단 긴 변3.3V18핀SPI·I2C·UART·PWM·CAN 등 디지털 I/O
JANALOG1하단 긴 변3.3V14핀아날로그 입력(ADC), 5V 핀, VIN(7-24V DC) 입력
JSPI1 (ICSP)우측3.3V 로직 + 5V VBUS6핀전용 SPI, MCU 리셋(NRST)
QWIIC1우측3.3V4핀(JST-SH)I2C — Qwiic·Modulino 생태계(10.3 참고)
JMEDIA1바닥면(하부)1.8V60핀MIPI-CSI-2(카메라)·MIPI-DSI(디스플레이), 카메라 I2C·클럭
JMISC1바닥면(하부)1.8/3.3V 혼합60핀MCU 주변장치, 오디오 단자, MPU GPIO 뱅크
LED 매트릭스상단 중앙부—8×13(104픽셀)부팅 로고(약 20~30초) 및 상태 표시
RGB LED ×4 / 전원 LED상단, 매트릭스 인근——상태 표시(사용자 제어 가능, 4.3 참고)

설계 시 유의할 점을 커넥터별로 정리한다.

  • USB-C(JUSB1): 컷아웃은 커넥터 셸 자체보다 여유를 크게 확보한다. 시판 USB-C 케이블 플러그 하우징의 폭·두께가 제품마다 상당히 달라서(특히 자석형·각도형 케이블), 표준 규격 여유만 믿으면 케이블이 삽입되지 않는 경우가 흔하다. 진입부에 모따기(챔퍼)를 주면 삽입이 쉬워진다.
  • 전원 버튼(JBTN1): 5초 이상 눌러야 동작하므로 순간 터치가 아니라 지그시 누르는 조작이 필요하다 — 벽 두께만큼 액추에이터(돌출 핀)를 세우거나, 버튼 위치를 완전히 개방하는 편이 실전에서 더 실용적이다.
  • JDIGITAL1 / JANALOG1: 실드(shield)를 장착할 계획이면 해당 면을 완전히 개방해야 한다(10.2 실드 호환성 참고). 실드를 안 쓴다면 필요한 핀만 골라 슬롯을 낼 수도 있다.
  • JSPI1(ICSP): 펌웨어 재프로그래밍·디버깅에 가끔 쓰인다. 11.2에서 소개하는 schreinerman 설계처럼 "모든 커넥터를 노출한다"는 원칙을 따르는 케이스가 많다.
  • QWIIC1: 커넥터 자체는 작지만, Qwiic 케이블을 데이지체인으로 계속 연결해 나가는 것이 이 생태계의 핵심이므로 완전히 밀봉하지 않는다.
  • LED 매트릭스: 부팅 로고와 사용자 정의 표시를 겸하므로 반드시 창(윈도우)을 낸다. 빛 확산이 필요하면 얇은 반투명 인서트를 부착하는 방식이 실전에서 쓰인다(11.2.2의 jonathanberi 설계 참고).
  • JMEDIA1 / JMISC1(바닥면): 여기가 인클로저 설계의 분기점이다. UNO Q 단독으로만 쓸 것인지, 카메라·디스플레이 캐리어 보드를 스택해서 쓸 것인지를 먼저 정해야 한다. 단독 사용이면 바닥판을 막아도 되지만, 캐리어를 장착할 계획이면 바닥면 전체를 개방하거나 보드 사이 간격을 확보하는 샌드위치형 구조를 택해야 한다(카메라 마운트는 11.3.4에서 별도로 다룬다).

11.1.3 컷아웃 공차와 스탠드오프

FDM 프린터는 설계 치수와 실제 출력 치수가 완전히 일치하지 않는다. 잘 캘리브레이션된 0.4 mm 노즐 프린터라도 대체로 ±0.1~0.2 mm 오차가 흔하므로, 커넥터 컷아웃 치수는

$$ w_{cutout} = w_{connector} + 2 \times c $$

형태로 여유(clearance) $c$를 더해 설계한다. USB-C·Qwiic처럼 작고 정밀하게 맞아야 하는 구멍은 $c \approx 0.2$–$0.3\,\text{mm}$, 케이블을 여러 번 탈착하는 큰 개구부(USB-C 케이블 진입부 등)는 $c \approx 0.3$–$0.5\,\text{mm}$ 정도를 기본값으로 설정하고, 첫 출력 후 실측 보정하는 방식을 권한다.

마운팅홀도 마찬가지다. 데이터시트 스펙 그대로 ⌀3.2 mm로 뚫으면 M3 나사(공칭 지름 3.0 mm)가 프린터 공차 때문에 안 들어가는 경우가 잦다. 통과홀은 보통 ⌀3.4~3.5 mm로 여유 있게 설계하고, 나사로 나사산을 직접 형성할 경우(셀프탭)에는 오히려 ⌀2.5~2.8 mm로 좁게 설정한다.

스탠드오프 높이는 앞서 확인한 "바닥면 부품 높이 2 mm 미만" 스펙을 기준 삼는다.

$$ h_{standoff} \geq h_{bottom\ parts}(<2\,\text{mm}) + t_{clear} $$

여유 $t_{clear}$를 1 mm 정도 더하면 3 mm 안팎의 스탠드오프면 충분히 부품과 케이스 바닥 사이 간섭을 피할 수 있다. 다만 이는 UNO Q 단독 장착 기준이며, JMEDIA1/JMISC1에 캐리어 보드를 장착하는 구성이라면 그 보드의 커넥터 높이만큼 별도로 더해야 한다(캐리어 보드 자체 치수는 공식 자료가 없어 실측 필요 — 11.2.2, 11.3.4 참고).

지금까지 다룬 수치(보드 외곽, 마운팅홀 통과지름, 스탠드오프 높이 공식)와 11.1.2의 컷아웃 배치(캐리어 스택 여부)를 그대로 반영한 파라메트릭 바닥판(baseplate) OpenSCAD 예시다. stack_carrier를 false로 바꾸면 JMEDIA1/JMISC1 개방부 없이 UNO Q 단독용 바닥판이 된다.

// ================================================================
// 11.1 파라메트릭 바닥판(baseplate) — Arduino UNO Q 인클로저
// 치수 출처: Arduino 공식 데이터시트(ABX00162-ABX00173-datasheet.pdf,
//            2026-08-17 개정본) 12장 "Mechanical Information"
//            — 보드 외곽 68.58×53.34mm, 마운팅홀 4×R1.6mm(⌀3.2mm)
// ⚠️ 마운팅홀 XY 좌표는 데이터시트 기계도면을 눈으로 읽은 근사치다.
//    정밀 좌표는 실측 또는 공식 STEP 파일 대조가 필요하다(11.1.1).
// ================================================================
$fn = 64;

// ── 보드 치수 (데이터시트 확정값, 11.1.1) ──────────────────
board_x = 68.58;
board_y = 53.34;

// ── 마운팅홀 좌표 (근사치 — 확인 필요, 11.1.1) ───────────────
hole_inset_x = 3.0;   // mm, 확인 필요 — 실측 대조 전 근사값
hole_inset_y = 2.7;   // mm, 확인 필요

// ── 통과홀 지름 (11.1.3: 스펙 3.2mm + 프린터 공차 여유) ─────
hole_dia_clear = 3.4;

// ── 바닥판 · 스탠드오프 ───────────────────────────────────────
plate_margin  = 4.0;                          // 보드 외곽~바닥판 테두리 여유
plate_x       = board_x + 2 * plate_margin;
plate_y       = board_y + 2 * plate_margin;
plate_t       = 2.4;                          // 바닥판 두께
standoff_dia  = 7.0;                          // 스탠드오프 바깥지름
bottom_parts_h  = 2.0;                        // 데이터시트: 바닥면 부품 높이 <2mm
clearance_t     = 1.0;                        // 11.1.3 여유값
standoff_h      = bottom_parts_h + clearance_t;  // 11.1.3 공식: h >= 2mm + 1mm

// ── 캐리어 스택 옵션 (11.1.2: JMEDIA1/JMISC1 바닥면 커넥터) ──
// true  = 캐리어 보드 확장을 위해 바닥면 중앙을 개방
// false = UNO Q 단독 사용, 바닥판을 막음
stack_carrier = true;
carrier_cut_w = 40;   // mm, 확인 필요 — 캐리어 보드 공식 치수 미공개(11.1.2·11.3.3)
carrier_cut_h = 18;   // mm, 확인 필요

module mounting_hole_positions() {
    for (x = [hole_inset_x, board_x - hole_inset_x])
        for (y = [hole_inset_y, board_y - hole_inset_y])
            translate([x, y, 0]) children();
}

module baseplate() {
    difference() {
        union() {
            // 바닥판 본체
            translate([-plate_margin, -plate_margin, 0])
                cube([plate_x, plate_y, plate_t]);
            // 스탠드오프 보스 4개
            mounting_hole_positions()
                cylinder(d = standoff_dia, h = plate_t + standoff_h);
        }
        // 나사 통과홀 — 스탠드오프까지 관통
        mounting_hole_positions()
            translate([0, 0, -1])
                cylinder(d = hole_dia_clear, h = plate_t + standoff_h + 2);

        // 바닥면 커넥터(JMEDIA1/JMISC1) 개방부 — 캐리어 스택 시에만
        if (stack_carrier)
            translate([(board_x - carrier_cut_w) / 2,
                       (board_y - carrier_cut_h) / 2, -1])
                cube([carrier_cut_w, carrier_cut_h, plate_t + 2]);
    }
}

baseplate();

11.1.4 방열 설계 — QRB2210과 팬리스 인클로저

정직하게 밝혀 둘 부분: Arduino 공식 데이터시트(20개 장 구성)에는 열설계 전용 장이 없다. 확인 가능한 열 관련 스펙은 "3.2 Recommended Operating Conditions"의 동작 온도(T_OP) -10 ℃ ~ 60 ℃(보드 주변 공기 기준) 하나뿐이며, QRB2210의 TDP(열설계전력)나 방열판 권장 사양은 Arduino 데이터시트에도, Qualcomm의 QRB2210 제품 브리프에도 구체적인 수치로는 실려 있지 않았다(Qualcomm은 QRB2210을 "열적으로 제약이 큰(thermally constrained), 배터리 구동·소형 기기에 최적화된" 프로세서로 소개하는 정성적 설명만 제공한다). 즉 "섭씨 몇 도에서 스로틀링이 시작된다"는 식의 구체 수치는 이 시점에서 검증할 수 없다 — 인클로저를 설계할 때는 이 불확실성을 전제로 여유 있게 접근해야 한다.

커뮤니티 쪽 증언도 이 판단을 뒷받침한다. UNO Q 전용 모듈형 인클로저를 만든 danpeirce는(11.2.2 참고) Arduino 포럼에서, Arduino가 공개한 UNO Q의 공식 3D 모델(STEP)조차 "부품이 단순화·부정확하게 표현되어 있고, 방열을 고려한 설계가 반영되어 있지 않다"고 밝혔다. 커뮤니티 방법(비공식) 관찰이지만, 공식 CAD 데이터만 믿고 밀폐형 케이스를 설계하면 안 된다는 시사점은 유효하다.

수치가 불확실한 상태에서는 팬리스(무팬) SBC 인클로저의 일반 설계 원칙을 그대로 적용하는 것이 현실적이다.

  • 자연 대류를 활용한다: 하단(흡기)과 상단·측면(배기)에 슬롯을 나눠 배치하면 내부 발열이 데워진 공기를 위로 밀어올리는 굴뚝 효과(chimney effect)로 자연스럽게 순환한다.
  • SoC 바로 위를 막지 않는다: QRB2210(MPU)은 보드 중앙부에 있고 LED 매트릭스도 그 인근이다. 이 구역 위쪽에 통풍 슬롯을 집중 배치하면 효과적이다.
  • 완전 밀폐를 피한다: 여름철 실내 온도가 30 ℃대에 이르면 밀폐 케이스 내부 온도는 그보다 확실히 높아진다. 공식 동작 상한이 60 ℃라는 점을 감안하면, 밀폐형 설계는 마진을 스스로 줄이는 선택이다.
  • 소재 선택이 뜻밖의 함정이 된다: PLA의 유리전이온도는 대략 55~60 ℃대로, UNO Q의 동작 온도 상한(60 ℃)과 거의 겹친다. 직사광선이 드는 창가나 밀폐된 공간에 놓인 PLA 케이스는 여름철에 물러지거나 변형될 수 있다. 방열이 중요한 인클로저는 PETG(유리전이 약 80 ℃ 안팎) 또는 ABS/ASA를 권장한다.
  • 통풍 슬롯을 발열원 근처에 분산 배치한다: danpeirce의 모듈형 설계도 USB 동글 수납부 주변에 별도 통풍 슬롯을 두는 방식을 택했다.
  • 캐리어 보드를 스택하는 구성에서는 보드 사이 간격 자체가 통풍로가 된다: 완전히 맞닿게 쌓지 말고 스탠드오프로 최소 간격을 확보한다.

아래는 이 원칙을 반영한 단면 개념도다.

QRB2210 (MPU) 상단 배기 슬롯 하단 흡기 슬롯
자연 대류(개념도) — 정확한 온도·풍량은 실측 필요

마지막으로, 자신의 인클로저에서 실제 온도를 확인하는 방법도 알아두면 좋다. Debian Linux를 쓰는 대부분의 ARM SBC처럼 UNO Q도 /sys/class/thermal/thermal_zone*/temp 경로로 SoC 온도를 노출할 가능성이 높다(밀리°C 단위인 것이 일반적). 확인 필요: 이는 ARM Linux 계열의 일반적인 관례이며, UNO Q Debian 이미지에서 실제 thermal zone 이름·개수·정확도는 보드에서 직접 확인해야 한다. 인클로저를 완성한 뒤 이 값을 부하 상태(카메라 추론 등, 9.1~9.5 참고)로 몇 시간 모니터링해 보는 것이 데이터시트에 없는 수치를 스스로 보완하는 가장 확실한 방법이다.

11.1.5 설계 체크리스트

항목확인할 것
외곽·마운팅홀68.58×53.34 mm, ⌀3.2 mm 홀 4개 — 정밀 작업 전 실측/공식 CAD 대조
USB-C케이블 플러그 하우징 여유(다양한 케이블 형태 고려), 진입부 모따기
전원 버튼5초 롱프레스 조작 가능한 액추에이터 또는 개방 구조
JDIGITAL1/JANALOG1실드 사용 여부에 따라 전면 개방 또는 선택적 슬롯
ICSP/Qwiic노출 여부 결정(디버깅·확장 빈도에 따라)
LED 매트릭스창(윈도우) 필수, 확산 인서트는 선택
JMEDIA1/JMISC1(바닥면)단독 사용 vs 캐리어 스택 여부를 먼저 결정
통풍 슬롯상단(배기)·하단(흡기) 분리, SoC 상부 집중 배치, 완전 밀폐 지양
소재방열이 중요하면 PETG/ABS/ASA, PLA는 여름철 유리전이온도 근접 주의
스탠드오프바닥면 부품 높이(<2 mm) + 여유 1 mm 이상, 캐리어 스택 시 추가 계산

다음 장(11.2)에서는 이 원칙을 실제로 어떻게 구현할지 — 이미 나와 있는 공개 STL을 쓸지, 처음부터 설계할지를 견줘 본다. 실전 마운트·거치대·카메라 마운트는 11.3에서 이어진다.