코디와 함께하는 R2D2 제작 🤖 5편
에피소드 5: 희망의 프로젝터
“Help Me, Codey Online — You’re My Only Hope” 📽️
작업실은 조용합니다. R2‑D2가 구석에 앉아 돔 안의 LED가 부드럽게 파란‑흰빛으로 숨을 쉬고 있습니다. 그러다 갑자기 — 그의 차체 안쪽 어딘가에서 홀로그램 투사가 깜빡입니다. 레아 공주. 키는 18 cm. 조용히 루프를 돌고 있습니다.
루크가 바라봅니다.
LUKE: “그게 내가 원하는 거야. 바로 그거야. 돔에 OLED 화면을 달아 상태 메시지를 표시하고, 임무 브리핑 같은 텍스트를 투사하도록 말이야. 그가… 살아있는 느낌을 받을 수 있게 말이야.”
R2‑D2는 이번 에피소드를 오래 기다해 온 듯 비프음으로 반응합니다.
LUKE: “하지만 오비‑완이 먼저 뇌를 업그레이드하라고 했어. 더 큰 보드로 옮기라고.”
오비‑완의 목소리가 새벽처럼 다가옵니다.
OBI‑WAN: “아두이노 UNO는 네 에피소드 동안 우리를 잘 도와줬지, 젊은 친구. 하지만 앞으로는—모션 시스템, 음성 응답, 무선 기능—이 모두 더 강력한 기반이 필요해. 이제 ESP32‑S3 N16R8을 만나야 할 때야.”
🗂️ SIPOC — 대규모 업그레이드
| 공급자 | 입력 | 프로세스 | 출력 | 고객 |
|---|---|---|---|---|
| 당신(제작자) | “ESP32‑S3 N16R8으로 마이그레이션하고 SSD1306 OLED를 I2C로 추가” | Codey가 새 보드를 인식하고 핀 매핑을 업데이트하며 I2C 주소를 재작성하고 3.3 V 전압 영향을 표시 | 올바른 ESP32‑S3 펌웨어와 Adafruit_SSD1306, 새로운 I2C 핀 | OLED와 기존 시스템을 구동하는 ESP32‑S3 N16R8 |
| Codey 전압 안전 검사 | NeoPixel(5 V 로직), OLED(3.3 V 또는 5 V), HC‑SR04(5 V) vs ESP32‑S3(3.3 V GPIO) | 부품 전압 요구사항을 ESP32‑S3 GPIO 레벨과 교차 확인 | 부품별 경고와 레벨 시프터 또는 우회 방법 권장 | 당신 – 이 비싼 보드에 연기가 나지 않게 |
| SSD1306 OLED (128×64) | 3.3 V 전원, I2C(SDA/SCL) | I2C 프로토콜을 통해 디스플레이 명령 수신 | 128×64 픽셀의 선명한 화면에 R2 상태와 메시지 표시 | R2‑D2 돔 – 홀로그램 투사 시스템 |
| 마일스톤 & 롤백 | 에피소드 4 마일스톤 시점의 정상 동작 코드 | 클릭 한 번으로 코드와 채팅 기록 복구 | 보드 마이그레이션에 문제가 생길 경우 알려진 정상 상태로 복귀 | 당신 – 언제든 되돌릴 수 있음 |
새로운 두뇌를 만나보세요: ESP32‑S3 N16R8 🧠
C‑3PO가 성배를 품은 듯한 패딩 케이스를 들고 등장합니다.
C‑3PO: “ESP32‑S3 N16R8. 사십일 번이나 사양을 계산했어요. 기술적인 내용을 이해하기 쉬운 말로 바꿔 드릴게요:”
| 기능 | ESP32‑S3 N16R8 | Arduino UNO R3 |
|---|---|---|
| 프로세서 | 듀얼코어 Xtensa LX7 @ 240 MHz | 싱글코어 ATmega328P @ 16 MHz |
| 플래시 저장소 | 16 MB | 32 KB |
| PSRAM | 8 MB | 0 |
| GPIO 핀 | 45 | 14 디지털 |
| 논리 전압 | 3.3 V | 5 V |
| Wi‑Fi | 있음 (802.11b/g/n) | 없음 |
| Bluetooth | 있음 (BLE 5.0 + Classic) | 없음 |
| USB | 네이티브 USB‑CDC (두 포트!) | CH340/FTDI 칩을 통한 USB |
| PWM | LEDC — 8채널, 14‑bit 해상도 | 6 PWM 핀, 8‑bit |
| DAC | 2× 8‑bit DAC 출력 | 없음 |
C‑3PO: “훨씬 강력하죠. 하지만 — 강조하고 싶어요 — GPIO 출력 전압은 3.3 V이고 5 V가 아닙니다. 기존 부품 중 몇 개는 5 V 신호를 기대하고 있어요. 이는 가장 심각한 문제이며 하나씩 해결할 겁니다.”
R2‑D2가 초조하게 비프음.
C‑3PO: “아투, 전압 호환성은 사소한 디테일이 아니라, 작동하는 드로이드와 아주 비싼 문턱 사이의 차이입니다.”
3.3 V 마이그레이션: C‑3PO의 부품 검토 ⚡
다스 베이더의 목소리가 환기구를 타고 울려 퍼집니다.
VADER: “레벨 시프터가 없다는 것이… 불쾌하군.”
C‑3PO가 몸을 돌려 자신이 어디에 있는지 떠올립니다.
C‑3PO: “그렇군요. ESP32‑S3와 각 부품의 전압 상황을 검토해 보죠:”
부품 전압 호환성 표
| 부품 | 필요 VCC | 필요 신호 레벨 | ESP32‑S3 GPIO (3.3 V) | 필요 조치 |
|---|---|---|---|---|
| SSD1306 OLED | 3.3 V 또는 5 V | 3.3 V I2C | ✅ 호환 | 별도 조치 필요 없음 — 3.3 V에서 정상 동작 |
| 피에조 버저 | 3.3 V–5 V | 3.3 V PWM | ✅ 호환 | 별도 조치 필요 없음 |
| NeoPixel WS2812B | 5 V | 5 V 데이터 신호 | ⚠️ 한계 | 74AHCT125 레벨 시프터 추가 또는 470Ω + 3V3‑to‑5V 시프터 사용 |
| HC‑SR04 | 5 V | 5 V ECHO 출력 | ⚠️ 위험 | ECHO 핀이 5 V를 출력 — 전압 분배기 사용 |
| PIR HC‑SR501 | 5 V | 5 V 출력 | ⚠️ 위험 | 출력 핀에 전압 분배기(10k + 20k) 사용 |
C‑3PO: “Codey가 레벨 시프터와 전압 분배기 회로를 배선도에 자동으로 생성할 겁니다. 바로 이런 상황을 위해 Codey의 전압 안전 검사가 설계됐죠.”
Codey는 ESP32‑S3가 선택된 것을 감지하고, 프로젝트 내 호환되지 않는 부품마다 전압 경고를 자동으로 추가합니다.
Codey에서 새 보드 선택하기 🔄
한 솔로가 점프 중에 함선을 급히 교체하듯 자신감 있게 시연합니다.
HAN: “간단해. Codey 프로젝트에서 상단의 보드 선택기를 클릭하고, Arduino UNO R3에서 ESP32‑S3 N16R8으로 바꾸면 돼. 끝. 나머지는 Codey가 알아서 해줄 거야.”
- Codey 인터페이스 상단의 보드 이름 드롭다운을 클릭
- ESP32‑S3 N16R8 선택
Codey가 즉시 표시:
⚠️ 보드 변경: Arduino UNO R3 → ESP32‑S3 N16R8
이 보드는 3.3 V GPIO 로직을 사용합니다.
프로젝트에 영향을 받을 수 있는 부품을 감지했습니다:
• NeoPixel WS2812B (핀 6): 레벨 시프터 필요 — 업데이트된 배선도 확인
• HC‑SR04 (핀 9/10): ECHO 핀이 5 V 출력 — 전압 분배기 필요