홍쌤의 인포클래스AI + X · 기술 블로그

← 목록

AI가 쓴 피코 코드, 반은 돌지 않았다: 가상 피코 검증과 2호기 점검 기록

작성 2026.10.16 · 수정 2026.10.31 · 홍창민

지난 글 이후 일주일 동안 고친 것들을 적는다. 피코 웹 IDE는 sinabro10에서 sinabro14까지 올라갔고, 시나브로 AI(school-ai)도 여러 군데를 손봤다.
이번에는 "기능을 더했다"보다 "AI가 틀린 것을 서버가 먼저 잡게 했다"가 중심이다. 숫자는 모두 내가 직접 돌린 시험에서 나왔다.


피코 AI가 쓴 코드, 반은 피코에서 안 돌았다

피코 IDE에는 AI 도우미가 있다. "버튼을 누르면 LED가 켜지는 코드" 같은 걸 물으면 MicroPython 코드를 써 준다. 그런데 이 코드가 실제 피코에서 돌아가는지는 한 번도 재 본 적이 없었다.

그래서 과제 30개를 만들었다. LED 깜빡이기부터 HC-SR04 초음파, NeoPixel, OLED, MPU6050, 타이머 인터럽트까지. 학생이 쓰는 것과 똑같은 경로(같은 시스템 프롬프트, 같은 API)로 물어보고, 답을 다섯 가지로 채점했다.

  1. 코드 블록이 딱 하나 있는가
  2. 파이썬 문법이 맞는가
  3. 가짜 피코에서 돌렸을 때 오류가 없는가
  4. 요청한 핀을 썼는가
  5. 핀맵 설명(GP 번호와 물리 핀 번호)이 맞는가

가짜 피코(picosim)는 엄격하게 만들었다. 실제 rp2 포트에 없는 메서드를 부르면 바로 오류를 낸다. 예를 들어 oled.clear()는 없다. oled.fill(0)이 맞다.

결과는 30개 중 15개 통과였다. 틀린 방식이 재미있을 정도로 비슷했다.

고친 방법: 서버가 먼저 돌려 본다

두 가지를 했다.

첫째, 시스템 프롬프트에 API 규칙을 넣었다. 틀린 이름과 맞는 이름을 짝으로 적었다. "OLED 지우기는 fill(0) 후 show()", "PWM은 duty_u16(0~65535)", "HC-SR04는 time_pulse_us(echo, 1, 30000)" 같은 식이다.

둘째, 서버에 가상 피코 검증을 붙였다. AI 답에 파이썬 코드가 있으면 서버가 네트워크가 막힌 도커 컨테이너에서 가짜 피코로 실행해 본다. 오류가 나면 그 오류를 모델에게 보여 주고 딱 한 번 다시 쓰게 한다. 학생 화면에는 "코드를 더 정확하게 다듬는 중"이라고만 보인다.

몇 가지 함정이 있었다.

다시 돌린 결과는 30개 중 28개였다. 실패 2개는 코드 문제가 아니라 분당 요청 한도(20회)에 걸린 것이었다. 고치는 단계가 요청을 하나 더 쓰기 때문이다. 그 2개를 다시 돌리니 둘 다 통과했다. 사실상 30/30이고, 30개 중 6개는 서버가 한 번 고쳐서 통과했다. 평균 응답은 13초쯤이다.

센서 가이드에 없는 센서를 물으면

센서 가이드에는 30종이 있다. 학생들은 그 밖의 것도 묻는다. BME280, DS18B20, HX711 로드셀, MAX30102 심박, MQ-2 가스, VL53L0X, TCS34725, 홀 센서, 사운드 센서, HC-05 블루투스, 진동 센서, 빗물 센서. 이 12개를 물어보고 꼭 맞아야 할 사실(I2C 주소, 전압, 풀업 저항, 예열 같은 주의점)을 확인했다.

처음엔 12개 중 8개가 답 대신 "어떤 센서인가요?"라고 되물었다. 원인은 모델이 아니었다. 배선 질문인데 센서 이름이 없으면 "어떤 센서인가요?"라고 되묻는 안전장치가 있다. 그런데 이 장치가 아는 센서 목록이 22개뿐이었다. HX711이나 MQ-2라고 분명히 써도 "센서 이름을 알려 주세요"라고 되물었다. 이제는 부품 번호 모양(영문+숫자)이나 "○○ 센서"라는 말이 있으면 이름을 말한 것으로 본다.

고친 뒤에는 12개 중 11개가 핵심 사실을 모두 맞혔다. 나머지 하나인 HC-05 답에는 통신 속도(기본 9600)가 빠져 있었다. BME280 답의 "5V 연결 금지"는 처음에 채점기가 오답으로 잡았는데, 읽어 보니 경고문이었다. 채점기가 틀렸다.

센서 가이드 검색도 고쳤다. 학생이 실제로 칠 만한 말 46개로 시험했더니 33개만 찾았다. "DHT22", "PM2.5", "MH-Z19", "SG90", "가변저항", "스피커" 같은 말이 설명에 없었기 때문이다. 센서마다 별칭(부품 번호, 일상어)을 붙였더니 46/46이 됐다. 가이드에 없는 부품을 치면 "AI에게 물어보기" 버튼이 나와서 위 질문을 바로 보낸다.

그 밖에 피코 IDE

실제 피코 연결은 가상 피코 다리로 시험했다. 진짜 MicroPython 인터프리터를 웹소켓 뒤에 두고, 브라우저의 Web Serial 자리에 끼워 넣었다. 연결, 코드 실행, 출력, 그래프 그리기까지 실제 사이트에서 돌아갔다. 진짜 USB 피코로는 이번에 시험하지 못했다. 서버들에 피코가 꽂혀 있지 않았다. 다음 수업 전에 직접 꽂아 봐야 한다.

회귀 시험은 실제 사이트 기준으로 통합 45/45, 블록 57/57, 데이터 스튜디오 74/74, 머신러닝 핵심 34/34, 내보내기 10/10이다.

시나브로 AI(school-ai)

학교 서버의 Cloudflare 터널은 로스앤젤레스(LAX) 거점으로 나간다. 요청마다 0.5~2초가 더 붙는다. 수십 초 걸리는 AI 답에서는 크지 않지만, 숫자로 남겨 둔다.

2호기 점검

학생 실습용 GPU 서버(2호기)와 1호기의 서비스도 하나씩 들어가 봤다. 로그인 설정과 서비스를 열어 둔 범위를 다시 정리하고, 바꾼 뒤 브라우저로 다시 확인했다. 서버 보안 설정은 자세히 적지 않는다.

배운 것

AI 답이 맞는지 걱정만 하는 것보다, 맞는지 기계가 먼저 돌려 보게 하는 쪽이 훨씬 싸다. 30개 과제와 가짜 피코 하나로 실패율이 50%에서 거의 0으로 내려갔다. 그리고 이번에도 내 채점기와 내 안전장치가 먼저 틀렸다. 되묻기 장치는 센서 이름을 못 알아봤고, 채점기는 경고문을 오답으로 봤다. 숫자를 믿기 전에 답을 직접 읽어야 한다.