6단계 조립 가이드
전 부품 도착 시 평균 핸즈온 6–10 시간 + 3D 프린트 14시간
Cite as: mecha4wd assembly v26.06a · wiki/assembly
0. 준비물
- 3D 프린터 (PETG · TPU 듀얼 출력 가능 추천: Bambu A1·P1S)
- 드라이버 세트 (M3/M2 Phillips + Hex)
- 인두·납땜 60W (M2 header 작업시)
- 점퍼 케이블 M-F / M-M / F-F (dupont, 10 cm)
- JST-XH 2.54 mm 압착기 + JST-XH kit
- 멀티미터 · Loctite · 양면테이프(BNO055용)
- PC(x86, NVIDIA RTX 3070+) — 3D 모델링 및 SLAM 검증
1단계 — 3D 프린트 부품
| 파트 | 수량 | 재료 | 예상 시간 |
|---|---|---|---|
| chassis_bottom | 1 | PETG | 4h |
| chassis_top | 1 | PETG | 3h |
| motor_mount ×4 (chassis 섀시 양쪽) | 4 | PETG | 1.5h |
| wheel_pulley ×4 (timing belt 60T) | 4 | PETG | 1h |
| suspension_spring ×4 | 4 | TPU 95A | 0.8h |
| bumper (전/후) | 2 | TPU 95A | 0.5h |
| camera_bumper (Pi Camera v3 lens housing) | 1 | PETG | 0.4h |
| Battery_holder (3S 2200mAh) | 1 | PETG | 0.6h |
| ToF_housing ×4 with top cover | 4 | PETG | 0.4h |
| SBC_plate (Rock5C + camera) | 1 | PETG | 1h |
| Pico2_plate | 1 | PETG | 0.7h |
| LED_ring_diffuser_octagonal | 1 | PETG (tr 80%) | 0.5h |
| 총 예상: 14h · 1.5 kg PETG + 100 g TPU | |||
인쇄 팁 PETG 출력은 layer 0.2 mm, infill 30%, Bambu Lab 슬라이서 기본 TPU 95A로 출력 권장. suspension_spring은 받은 방향성(Z축 캐릭터)에서 infill 방향 재설정 권장.
2단계 — Bottom chassis + 모터 + 휠
BLDC 모터 (1624N 또는 1306) 4개 mounting
- chassis_bottom 위쪽 무게중심의 4 monologue point에 BLDC 모터를 각각 M2×4 볼트로 고정
- 각 모터 shaft에서 16T 출력 풀리 → timing belt → 60T wheel pulley
- tensioner design: chassis_bottom에 design에서 미리 spring-pending 톱니장치 print, 1.5 mm slope으로 belt 장력 유지
Wheel + 타이어
- 4 wheel_pulley(60T PETG 출력)에 rubber tire(65 mm × 30 mm)삽입
- 축 방향으로 4 mm 너트로 wheel pulley를シャフト에 고정
- 체조 모든 축이 동일한 wheelbase 120 mm을 유지하도록 후면 chassis_bottom의 wheel axle hole 가공
3단계 — Top chassis electronics mounting
Rock 5C, Pico 2, BNO055
- Rock 5C Lite 8GB: M2.5의 4 spacer를 사용해 top chassis 안쪽에 mounting
- Pico 2 + PCA9685 stacked board: top chassis 하부 wall에 M2.5 ×2로
- BNO055 IMU: chassis geometric center 근처에 양면테이프 + M2.5 ×2
- Pi Camera v3: front bumper에 설정된 lens dome 안에 MIPI-CSI 케이블로 Rock 5C에 직접
4단계 — BeagleBone + 센서 wiring
ToF ×4 wiring
[VL53L0X Front (addr 0x29)] ─┐
[VL53L0X Back (addr 0x29)] ─── [TCA9548A 8-channel mux I2C 0x70] ── Rock 5C I2C bus
[VL53L0X Left (addr 0x29)] ─┘
[VL53L0X Right (addr 0x29)] ─┘
(일부 주소 변경 가능: 각기 XSHUT 연결 후 reset 주소 재지정)
RGB LED ring (WS2812B ×8)
GPIO 14 (TX) · 1-wire 방식으로 Rock 5C의 3.3V 출력. Python WS2812 driver (rpi_ws281x 호환)로 제어. 상태 명령:
- 네온: combat (Blockly 실행 대기)
- 파란색: imperative (명령 수신)
- 노란색: warning (저배터리 또는 ToF 경고)
- 빨간색: error (E-stop 또는 통신 사고)
5단계 — Battery + power wiring
전원 분배
[3S 11.1V 2200mAh LiPo] ── [XT60 anti-spark] ── [5V BEC UBEC 5A]
│
┌────────────────────┼──────────────────────┐
▼ ▼ ▼
[Buck regulator 5V 4A] [Battery direct — 11.1V] [5V BEC to LED ring]
│ │
┌────────┼────────┐ │
▼ ▼ ▼ ▼
Rock 5C Pico 2 BNO055 [DRV8871 / L298N] ── 4 BLDC × 4
(5V) (5V) (3.3V) (11.1V direct)
ToF hub Camera v3
(USB) (CSI)
안티스파크: XT60 종종 적용. M sw 또는 전자 안티스파크 ($10) 추가.
6단계 — 펌웨어 flash + 첫 시운전
첫 Fw 쓰기
# Pico 2: Block code runner firmware (MicroPython)
picotool load firmware/robot_lin.py -f
# Rock 5C: ONNX inference + block parser (Python)
sudo apt-get install -y python3-pip python3-rclpy
pip3 install --break-system-packages 'onnxruntime==1.18' rknn-toolkit2
# Camera streaming
ros2 launch camera_ros camera_left.yaml
첫 동작 검사:
- 3S LiPo 연결 → 5V/3.3V rail 출력 확인 (멀티미터)
- Pico 2 단독 부팅: LED 점등
- Rock 5C boot: SSH 진입 →
i2cdetect -y 1로 BNO055(0x28), PCA9685(0x40), TCA9548A(0x70) 확인 - BLDC 테스트: 단독 시 PWM 50% 인가 · 양쪽 방향 respective
- 블록코딩 화면 사전 render: 크롬·Blockly workspace 열기 → 전진·후진·저장
- E-stop 단축키 (블록)
- '안전한 시야' : 차를 교탁 위 빈 박스에 들어가서 블록 코드 전진 1초 진행
⚠ 안전 펜스 첫 시동 시 반드시 교탁 위·혹은 isolated zone에서 테스트. 항상 우측 의도 후·정의 후 real ‘전진 test'로 들어가세요. 보통 1/2 시동 해 charge 안에서 LiPo singular damage 한 단계.