코디와 함께 만든 R2D2 🤖 8편

발행: (2026년 6월 7일 PM 11:14 GMT+9)
9 분 소요
원문: Dev.to

출처: Dev.to

Episode 8: 완전한 드로이드

“포스가 너와 함께하리라. 언제나.” 🌟

전체 승무원들이 작업실에 모여 있다. 한 솔로는 팔짱을 끼고, 루크는 씩씩하게 웃으며, C‑3PO는 손을 꼭 잡고 억제된 불안감을 드러낸다. 프린세스 레이아의 메시지가 OLED에 반복 재생되고 있다 — 텍스트만으로 재현된 것이지만, 말은 정확하다: “도와줘, 오비‑완 케노비.”

그리고 중앙에, 돔이 천천히 회전하고 파란‑흰색 LED가 숨을 쉬며, 스피커에서 조용한 환경 휘슬이 흐른다 — R2‑D2.

오비‑완: 조용히 “일곱 개의 에피소드. 일곱 개의 시스템. 이제 드로이드는 거의 완성됐어. 남은 건 하나, 최종 통합이야. 모든 시스템이 병렬로 동작을 멈추고 하나의 일관된 전체로 작동하기 시작하는 순간. R2‑D2가 부품들의 집합이 아니라 은하계 최고의 드로이드가 되는 순간 말이야.”

R2‑D2가 한 번 삑 소리를 낸다. 자신감 넘치고, 준비됐다.

오비‑완: “그리고… 포스. 와이파이.”

한 솔로가 코웃음한다.

한: “와이파이? 아주 신비롭군.”


🗂️ SIPOC — 완전한 드로이드

공급자입력프로세스출력고객
당신(제작자)“모든 시스템을 통합하고 와이파이 원격 명령 인터페이스 추가”Codey Deep Think 모드가 전체 아키텍처를 설계 후 코드 작성모든 시스템이 통신하는 통합 상태 머신, 원격 명령용 와이파이 엔드포인트완전한 R2‑D2 — 하나의 펌웨어, 모든 시스템이 조율된 형태
ESP32‑S3 N16R816 MB 플래시, 8 MB PSRAM, 듀얼‑코어, 와이파이듀얼‑코어 운영: 코어 0은 와이파이/네트워킹, 코어 1은 실시간 센서/모터/오디오 루프와이파이가 실시간 제어 루프를 방해하지 않는 부드러운 동작모든 R2‑D2 시스템 — 프로세서 시간 부족 없음
Codey Deep Think 모드복합 다파일 통합 프롬프트응답에 시간이 더 걸리며 전체 아키텍처를 먼저 고민시리즈 중 가장 깔끔하고 구조적으로 일관된 코드장기 유지보수성
최종 배선도7개 시스템 부품 목록Codey가 모든 연결, 보호 회로, 전원 레일을 포함한 마스터 다이어그램을 그림완전한 R2‑D2 구축을 보여주는 단일 PDF작업실 벽 — 당신의 제작 로그 중 최고의 보석

최종 부품 목록 — R2‑D2의 모든 조각 🔧

C‑3PO가 일곱 에피소드를 기다리며 이 목록을 읽는 듯한 표정을 짓는다.

C‑3PO: “여덟 개의 영광스러운 — 때로는 무서운 — 에피소드에 걸쳐 축적된 완전한 재고 목록이야:”

부품추가된 에피소드용도
ESP32‑S3 N16R85두뇌 — 모든 시스템이 여기 연결
SSD1306 OLED 128×645홀로그램 디스플레이 — I2C (GPIO8/9)
NeoPixel 링 12 LED3돔 라이트 — GPIO6 (레벨 시프터)
HC‑SR04 초음파4거리 감지 눈 — GPIO9/10
PIR HC‑SR5014움직임 감지 — GPIO2 (인터럽트)
SG90 서보6돔 회전 — GPIO14 (레벨 시프터)
DC 기어 모터 × 26휠 구동 — L298N 통해
L298N 모터 드라이버6모터 제어, 5 V 레일 제공
DFPlayer Mini7오디오 재생 — UART2 (GPIO16/17)
스피커 4Ω/8Ω7음성 출력
microSD 카드 (FAT32)7오디오 파일 0001–0007.mp3
74AHCT125 레벨 시프터3/6NeoPixel + 서보: 3.3 V → 5 V
470Ω 저항3NeoPixel 데이터 보호
1kΩ 저항7DFPlayer RX 보호
100Ω 저항(버저, 현재 제거)
100µF 커패시터3NeoPixel 전원 디커플링
10µF 커패시터7DFPlayer 전원 필터링
전압 분배기 (10k + 20k)5HC‑SR04 ECHO + PIR 출력: 5 V → 3.3 V
9V 배터리 또는 2S LiPo6모터 전원 레일
USB 케이블전체프로그래밍 + 로직 전원

C‑3PO: “R2‑D2. 부품들로, 브레드보드 위에. 나는 이게 인상적이면서도 약간은 섬뜩하다고 생각한다.”

R2‑D2가 자부심 섞인 삑 소리를 낸다.


Deep Think 모드: 가장 현명한 길 🧠

요다가 의자에 몸을 기댄다.

요다: “이 프롬프트는 복잡하구나. 건드려야 할 파일이 많고, 통합해야 할 시스템도 많다. 그래서 — Deep Think 모드를 사용해야 한다. 시간이 더 걸리지만 결과는 더 현명해진다.”

루크: “Deep Think 모드가 뭐죠?”

요다: “Plan 모드의 형님이다. 단순히 계획만 하는 게 아니라 먼저 아키텍처를 깊게 분석한다. 엣지 케이스를 고려하고, 시스템 간 충돌을 찾아낸다. 그런 다음에야 코드를 쓴다.”

Codey에서 모드 드롭다운을 클릭하고 Deep Think(Pro 기능)를 선택한다. 그리고 최종 통합 프롬프트를 입력한다:

FINAL R2-D2 INTEGRATION — Deep Think mode

We have these existing header files for the ESP32-S3 N16R8:
  - animations.h  (NeoPixel dome: GPIO6 via 74AHCT125)
  - sensors.h     (HC-SR04: GPIO9 TRIG / GPIO10 ECHO; PIR: GPIO2)
  - display.h     (SSD1306 OLED: I2C SDA=GPIO8 / SCL=GPIO9 — NOTE: conflict!)
  - motion.h      (Servo: GPIO14; L298N: GPIO25-27, GPIO32-34)
  - voice.h       (DFPlayer Mini: UART2 TX=GPIO17 / RX=GPIO16)
  - sounds.h      (LEDC buzzer: now removed, GPIO freed)

CONFLICT TO RESOLVE:
  HC-SR04 TRIG uses GPIO9. OLED I2C SCL also uses GPIO9.
  These cannot share! Remap one of them.
  Suggestion: Move HC-SR04 TRIG to GPIO11, ECHO to GPIO12.
  Update sensors.h and the wiring diagram accordingly.

NEW FEATURE — Wi-Fi remote control:
  Use ESP32-S3 Wi-Fi to create a simple HTTP server.
  Endpoints:
    GET /status    → JSON with distance, motion, dome angle, current sound
    GET /command/forward   → drive forward for 2 seconds
    GET /command/backward  → drive backward for 2 seconds
    GET /command/left      → turn left for 1 second
    GET /command/right     → turn right for 1 second
    GET /command/stop      → stop motors immediately
    GET /command/sound/N   → play sound N (1-7)
    GET /command/dome/N    → move dome to angle N degrees

  Use WiFiAP mode (R2-D2 creates its own access point):
    SSID: "R2-D2"
    Password: "beepboop"

  Run HTTP server on Core 0. Real-time systems on Core 1.

FINAL r2d2-main.ino:
  - Resolve the GPIO conflict
  - Add wifi.h header for Wi-Fi + HTTP server
  - Clean unified loop with clear comments
  - All systems operational
  - Serial output at 115200 showing all state transitions

Please think through the architecture fully before writing.

Deep Think 모드 분석 (Codey 응답)

[Deep Think analysis in progress...]

Architecture review:

1. GPIO CONFLICT IDENTIFIED:
   GPIO9 cannot serve both HC-SR04 TRIG and I2C SCL.
   Resolution: Remap I2C to SDA=GPIO4, SCL=GPIO5 (available on ESP32-S3).
   This avoids touching sensors.h; only display.h changes:
     Wire.begin(4, 5
0 조회
Back to Blog

관련 글

더 보기 »