코디와 함께하는 R2D2 제작 🤖 4편

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

출처: Dev.to

에피소드 4: 전지전능한 눈

“인상적이군. 정말 인상적이야.” 👁️

다스 베이더가 들어온다 — 아니, 반대쪽이다.

루크 스카이워커가 작업대에 서서 HC‑SR04 초음파 센서를 빛에 비추며 들고 있다.

루크: “그가 어떻게 알았는지 항상 궁금했어. R2가 언제 무언가가 다가오는지, 장애물이 있는지, 데스 스타 트렌치가 다가오는지를 언제든지 알았지. 그는 사물을 보고, 느꼈어. 다른 사람보다 먼저 말이야.”

R2‑D2가 부드럽게 비프음으로 대답한다. 마치 개인적인 이야기를 하는 듯.

루크: “오늘 우리는 그에게 센서 눈을 줄 거야. 그리고 이번엔—” 스크린을 가리키며 “—코디가 ‘자동 오류 수정’이라는 걸 보여줄 거야. 왜냐면 우리에게 꼭 필요할 것 같은 느낌이 들어서 말이야.”

보이지 않는 어딘가에서 포스가 울려 퍼진다.

베이더: “레벨 변환된 데이터 핀이 없다는 것이… 나를 불편하게 만든다.”

루크: “우린 5V로 동작하고 있어. 괜찮을 거야.”


🗂️ SIPOC — 센서 눈 시스템

공급자입력프로세스출력고객
당신(제작자)
“핀 9/10에 HC‑SR04, 핀 2에 PIR을 연결하고 비프음과 돔 색상 변화를 반응하도록 해 주세요.”
코디가 센서 코드를 작성하고 이전 에피소드의 사운드·돔 시스템과 통합통합 펌웨어: 감지 → 빛·소리로 응답R2‑D2 – 이제 주변 세계에 반응함
HC‑SR04 센서
5V 전원, Arduino에서 TRIG 펄스
초음파 펄스를 발사하고 반사 에코 시간을 측정거리(센티미터)코드 – “너무 가까운” 거리 판단 로직
PIR 모션 센서
5V 전원, Arduino GPIO 입력
움직임 감지 시 디지털 HIGH인터럽트 핀에 HIGH 신호코드 – 알림 시퀀스 트리거
자동 오류 수정
잘못된 코드로 인한 컴파일 오류
코디가 오류 로그를 읽고 문제 라인을 재작성·재컴파일성공적으로 컴파일된 수정 코드당신 – C++ 오류 메시지를 해독하지 않아도 동작하는 펌웨어
비전 기능
브레드보드 사진
코디가 이미지를 분석해 부품 배치를 식별검증 보고서: “배선이 올바릅니다” 혹은 구체적 불일치당신 – 업로드 전 배선을 확인

부품들 🔧

C‑3PO가 정확히 정렬된 부품 트레이를 들고 들어온다.

C‑3PO: “오늘은 R2‑D2에 인식을 추가합니다. HC‑SR04 초음파 센서는 5V에서 동작하므로 레벨 변환 없이 Arduino UNO와 완벽히 호환됩니다—이것은 큰 안도감이죠—그리고 HC‑SR501 PIR 모션 센서도 5V 호환입니다. 혼동을 피하기 위해 높이 순으로 미리 정렬했습니다.”

R2‑D2가 “아무도 부품을 정렬하라고 하지 않았어요” 같은 비프음으로 대답한다.

부품수량비고
Arduino UNO R31우리의 믿음직한 베이스
HC‑SR04 초음파 센서15V, TRIG + ECHO 핀
HC‑SR501 PIR 센서15V, 단일 디지털 출력
10kΩ 저항1PIR 출력 풀‑다운(일부 모듈에 필요)
점퍼 와이어6
USB 케이블1
(에피소드 2의 피에조 버저와 에피소드 3의 NeoPixel 링 포함)전체 시스템을 기반으로 구축합니다.

Codey 프롬프트 — 기존 작업에 추가하기 💬

한 솔로가 화면을 가리킨다.

한: “AI 코딩 도구는 매번 처음부터 시작하는 게 아니에요. 이미 존재하는 것과 추가하고 싶은 것을 알려주면 됩니다. 컨텍스트가 전부죠. 밀수업에서도 마찬가지예요.”

루크: “코디를 밀수와 비교하시는 겁니까?”

한: “컨텍스트가 중요하다는 얘기죠. 강의가 필요하세요, 아니면 센서가 필요하세요?”

Codey 프로젝트(에피소드 3 마일스톤) 를 열고 Agent mode 로 전환합니다.

We're continuing the R2-D2 build from the previous episodes.
Existing systems:
  - Piezo buzzer on pin 8 (tone-based sounds)
  - NeoPixel ring (12 LEDs) on pin 6 (dome animations)

Add these sensor systems:
  1. HC-SR04 ultrasonic sensor
     - TRIG on pin 9, ECHO on pin 10
     - Measure distance every 150ms (non-blocking)
     - If distance 
#include "animations.h"

void setup() {
  Serial.begin(9600);
  initAnimations();

  // Sensor pins
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(PIR_PIN,  INPUT);

  // PIR interrupt — fires on rising edge (motion start)
  attachInterrupt(digitalPinToInterrupt(PIR_PIN), onMotion, RISING);

  Serial.println("R2-D2 sensor eye online!");
}

void loop() {
  updateAnimationsSensors(); // new unified call
}

자동 오류 수정 시연 🛠️

그리고 일이 일어난다.

루크: “컴파일하려다—”

Compilation Error:
  animations.h:47: error: 'IRAM_ATTR' was not declared in this scope
  animations.h:47: note: 'IRAM_ATTR' is an ESP32 attribute, not available on AVR

루크: “그게 무슨 뜻이에요? 나는—”

루크가 당황하기 전에 화면이 자동으로 업데이트된다.

**CODEY AUTO ERROR

0 조회
Back to Blog

관련 글

더 보기 »