배우면서 만드는 곳
그 코드, 회로로 만들면 뭐가 빠질까요?
스케치를 올리면 어떤 부품을 몇 번 핀에 썼는지 읽어내고, 브라우저에서 그대로 돌립니다. 그다음 브레드보드에 옮길 때 빠지기 쉬운 것을 채워 넣습니다. LED 앞의 330Ω, 버튼의 풀다운 저항 같은 것들입니다. 무엇을 왜 넣었는지 항상 같이 적습니다.
지금까지 만든 것
스케치 한 장이 어디까지 가는지, 실제 화면 그대로
아래 여섯 장면은 목업이 아닙니다. 이 사이트가 예제 uno_temp_relay.ino(온실 컨트롤러: DS18B20 · 릴레이 · OLED · 초음파)를 다루면서 실제로 만든 화면입니다. 앞의 넷은 지금 바로 써 보실 수 있고, 기판을 만드는 뒤의 둘은 아직 열지 않았습니다.
스케치를 그대로 실행한다
arduino-cli 가 빌드한 .hex 를 브라우저 속 ATmega328P(avr8js)가 실행합니다. DS18B20 과 HC-SR04 는 가상 센서가 1-Wire 와 에코 펄스로 진짜처럼 응답해서, 시리얼에 T=25.1C dist=42cm 가 흐릅니다.
캡처: 2026-09-08 · 소스 Arduino Uno → 타겟 ESP32-WROOM-32E · 검증 P1–P5 PASS · 보드 63×49 mm · KiCad DRC 0 위반
4레벨 연속체
시뮬레이터에서 브레드보드까지, 지금 열려 있는 구간
프로젝트 하나가 시뮬레이터에서 시작해 브레드보드 배선도까지 이어집니다. 핀 이름은 레벨이 바뀌어도 그대로 둡니다. 기판을 만드는 L2 · L3 는 만들어는 뒀지만 아직 열지 않았습니다.
부품을 사지 않아도 됩니다. 브라우저에서 바로 돌아가고, ESP32 는 서버에서 돌립니다.
실행 가능 시뮬 · 핀 파형
코드에서 찾아낸 부품을 개발보드에 어떻게 연결하는지 그림으로 보여줍니다. 시뮬레이터와 연동됩니다.
배선도 · 부품 목록
첫 기판입니다. 크기와 커넥터 위치가 규격으로 정해져 있어서 고민할 게 적습니다.
Gerber · BOM · 보드 렌더
ESP32-WROOM 이나 RP2040 같은 모듈을 기판에 직접 붙입니다. 무선 인증(KC·技適)은 모듈이 이미 받아둔 것을 씁니다.
Gerber · BOM · CPL · 인증 체크리스트
같은 프로젝트 · 같은 코드 · 같은 핀 이름
작동 방식
회로도 대신 .ino 파일을 올리세요
#include 목록이 곧 부품 목록입니다. 새로 만들 건 없고, 이미 짜 놓은 스케치만 있으면 됩니다.
#include 목록이 곧 부품 목록
라이브러리 include 와 생성자에서 부품을 찾고, #define·pinMode·Wire.beginTransmission 에서 핀 배치와 I²C 주소를 읽습니다. 코드만 봐서 알 수 없는 것만 되묻습니다.
DallasTemperature.h → DS18B20빠진 회로를 채우고, 왜 넣었는지 알려줍니다
개발보드를 MCU 모듈과 지원회로로 바꿉니다. 전원 트리, 디커플링, 풀업, 플라이백 다이오드, 레벨 시프터를 채우고, 자동으로 들어간 부품마다 "왜?"를 붙입니다. 배우면서 만드는 게 목적이니까요.
D1 1N4148 — 릴레이 코일 역기전력AI 는 제안만 하고, 판정은 규칙이 합니다
AI 제안은 카탈로그에 없는 부품을 쓸 수 없습니다. 골든 패턴, ERC, 핀 배치, N샘플 합의, KiCad DRC 를 전부 통과해야 채택되고, 하나라도 걸리면 규칙 기반 확장기로 되돌아갑니다. 검사하는 쪽에는 AI 가 없습니다.
adopted_source: ai | deterministic무엇이 빠졌는지, 왜 필요한지
브레드보드 그림에 빠진 부품을 채워 넣고 이유를 붙입니다. LED 에는 330Ω 직렬 저항이, pinMode(INPUT) 으로 읽는 버튼에는 10kΩ 풀다운이 들어갑니다. 스케치가 INPUT_PULLUP 을 쓰면 반대로 GND 쪽으로 붙입니다. 코드를 보고 정하기 때문에 회로가 코드와 어긋나지 않습니다.
R1 330Ω — D13 의 LED 전류 제한
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4 // DS18B20 data
#define RELAY_PIN 7 // heater relay
#define LED_PIN 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float c = sensors.getTempCByIndex(0);
digitalWrite(RELAY_PIN, c < 24.0);
digitalWrite(LED_PIN, c < 24.0);
delay(1000);
}- DS18B20 온도 센서DallasTemperature.h · D4R3 4.7 kΩ 1-Wire 풀업 자동 삽입 (데이터시트 권장값)
- 릴레이 1채널RELAY_PIN 7 · OUTPUTQ1 NPN 드라이버 + D1 플라이백. GPIO 는 코일 전류를 감당 못 하고, 꺼질 때 나오는 역기전력이 트랜지스터를 태웁니다
- LEDSTATUS_LED 9 · OUTPUT직렬 저항 330 Ω 으로 전류 제한
- ESP32-WROOM-32E (L3 타겟)Arduino Uno → 모듈 치환EN 10 kΩ 풀업 + 0.1 µF, 3V3 10 µF + 0.1 µF. Espressif 하드웨어 설계 가이드 기준이고 Olimex 보드 4개에서 확인했습니다
3중 검증
시뮬레이터가 통과해도, 실제로 되는지는 따로 봅니다
로직, 전기, 실물은 언제나 세 칸으로 따로 표시합니다. 이 셋을 초록불 하나로 합치는 순간, 브레드보드에서는 되던 게 기판에서 안 되는 그 상황이 그대로 반복됩니다.
코드가 의도대로 도는가. 브라우저 시뮬레이터에서 핀 방향과 토글을 기록하고, 서버가 스케치에서 다시 뽑아낸 기대값과 대조한 뒤에만 통과시킵니다.
태워먹지 않는가. 전압 도메인, I²C 주소 충돌, 전류 예산, 플라이백, 디커플링, 부트 스트랩 핀을 검사하고 마지막에 KiCad DRC 를 돌립니다.
진짜로 작동하는가. 전원 노이즈, EMI, 센서 타이밍 편차, 부품 공차는 시뮬레이터가 잡지 못합니다. 이 칸은 사용자가 실제 보드에서 확인하고 직접 체크해야만 켜집니다.
전기 검증 8단계전부 규칙 기반
| # | 단계 | 검사하는 것 | 도구 |
|---|---|---|---|
| P1 | 스키마 | 부품·넷·핀 구조가 맞는가 | Pydantic |
| P2 | 카탈로그 접지 | 모든 부품 ID·핀 이름이 카탈로그에 실존하는가. 없는 부품이면 즉시 거부 | catalog |
| P3 | 골든 패턴 | MCU·레귤레이터·인터페이스별 필수 지원회로. 실제 오픈소스 회로에서 뽑아낸 것 | corpus/patterns.yaml |
| P4 | ERC 규칙 | 전압 도메인 · I²C 충돌 · 풀업 · 전류 예산 · 플라이백 · 디커플링 · 부트 스트랩 핀 | rule engine |
| P5 | 핀 계약 | 논리 핀 1:1 매핑 · PWM/ADC/인터럽트 능력 일치 | pin contract |
| P6 | 합의 | AI 샘플 N개의 정규화 토폴로지 과반 일치. 과반이 없으면 폴백 | N-sample vote |
| P7 | KiCad DRC | 보드 생성 → Freerouting 배선 → kicad-cli pcb drc exit 0 | KiCad 9 · 별도 컨테이너 |
| P8 | 시뮬 회귀 | 같은 스케치를 pins.h 적용 상태로 타겟용 재컴파일, 변환 전후 핀 활동 대조 | avr8js · rp2040js · QEMU |
P1–P6 은 KiCad 없이 단위 테스트로 돌고, P7 은 KiCad 9 컨테이너에서, P8 은 브라우저 시뮬과 서버 대조로 돕니다. 어느 단계든 error 가 나오면 채택하지 않습니다.
실제로 돌아갑니다
지금 브라우저에서 바로 돌려보세요
로그인은 필요 없습니다. 컴파일은 서버가 하고 실행은 브라우저가 합니다. 핀 상태와 시리얼 모니터, 가상 센서까지 붙어 있습니다.
지원 보드 · 모듈
개발보드 2종에서 시작해 양산 타겟 4종까지, 모듈 22종과 함께
무선 인증(KC · 技適)을 이미 받아 둔 모듈을 먼저 권합니다. 설계 단계에서 인증 부담을 덜기 위해서입니다.
시작 보드 (L0–L2)
양산 타겟 (L3 · 모듈 온보드)
모듈 22종마다 KiCad 심볼·풋프린트와 함께, 디커플링·풀업·보호소자가 이미 들어간 레퍼런스 회로와 한국어 설명이 붙어 있습니다.
가격
지금은 전부 무료입니다
시뮬레이터, 스케치 분석, 검증 리포트, 브레드보드 배선도까지 계정만 있으면 전부 쓰실 수 있습니다. 기판 파일이 열릴 때 가격을 정합니다.
Free
지금 쓸 수 있음지금 쓰실 수 있는 전부
- 시뮬레이터 무제한
- 스케치 분석 · 검증 리포트
- 브레드보드 배선도 · 왜 필요한지
- 예제 53개
Maker
준비 중Shield / HAT 기판
- L2 변환
- Gerber · BOM
Production
준비 중모듈 온보드
- L3 변환
- CPL · 인증 체크리스트
기판 쪽 요금은 아직 받지 않습니다. 열리는 시점에 다시 공지드립니다.
자주 묻는 질문
궁금한 것
회로를 그려야 하나요?
아니요. 회로도 편집기가 아예 없습니다. 이미 짜 놓은 .ino 를 올리거나 모듈 카탈로그에서 체크하면, 핀 배치와 부품 목록을 코드에서 읽어냅니다. 코드만 봐서 알 수 없는 것만 되묻습니다.
AI가 만든 회로를 믿어도 되나요?
AI 출력을 그대로 쓰는 일은 없습니다. AI 는 제안만 하고, 카탈로그 접지, 골든 패턴(실제 오픈소스 회로), ERC, 핀 배치, N샘플 합의, KiCad DRC 를 전부 통과해야 채택됩니다. 하나라도 걸리면 규칙 기반 확장기로 되돌아가고, 검사하는 코드에는 AI 가 들어가 있지 않습니다. 어떤 제안이 채택됐는지도 리포트에 남깁니다.
어떤 보드를 지원하나요?
시작 보드는 Arduino Uno 와 XIAO ESP32C3 입니다. L3 양산 타겟은 ESP32-WROOM-32E, ESP32-C3-WROOM-02, ATmega328P-AU, Raspberry Pi Pico(RP2040) 입니다. 브라우저 시뮬레이터는 AVR 과 RP2040 을 돌리고, ESP32 는 서버의 Espressif QEMU 로 돕니다. Raspberry Pi HAT 은 이후 단계입니다.
코드를 바꿔야 하나요?
핀 이름은 그대로 유지됩니다. MCU 가 바뀌어 물리적인 핀이 달라지면 pins.h 를 자동으로 만들어 드리고, 바뀐 점은 diff 로 보여 드립니다. 고칠 것은 #include "pins.h" 한 줄이 목표이고, P8 회귀 시뮬이 변환 전후의 핀 활동을 대조해서 이를 확인합니다.
생성된 파일은 어디서 쓸 수 있나요?
Gerber, 드릴, BOM, CPL 은 표준 포맷이라 어떤 PCB 도구나 제조사 뷰어에서든 그대로 열립니다. KiCad 프로젝트도 함께 드리니 KiCad 에서 이어서 편집해도 됩니다.
실물 검증은?
자동으로 통과시키지 않습니다. 시뮬레이터와 ERC/DRC 가 잡지 못하는 것이 있기 때문입니다. 전원 노이즈, EMI, 센서 타이밍 편차, 부품 공차 같은 것들입니다. 실물 검증 칸은 사용자가 실제 보드에서 확인한 뒤 직접 체크해야만 켜지고, 그 사실을 화면에 항상 따로 표시합니다.
시작
스케치 하나면 됩니다. 시작해 볼까요?
예제가 53개 들어 있어서 빈손으로 오셔도 됩니다. 올리면 부품과 핀을 읽어내고, 빠진 회로를 바로 짚어 드립니다.





