EasyEDA로 내보내기
한 줄 요약 —
circuit.yaml에서 EasyEDA Standard가 읽을 수 있는.json을 생성합니다. 열자마자 Ctrl+R로 시뮬레이션까지 됩니다.
사용법
circuit export my.yaml --format easyeda -o my.jsonEasyEDA에서 열기:
- easyeda.com/editor 접속
- File → Open → EasyEDA…
- 생성된
.json선택
💡 EasyEDA Pro에서도 임포트 가능합니다. Pro의 “EasyEDA(Standard) 가져오기”로 같은 파일을 읽습니다.
왜 EasyEDA Standard JSON인가
| 이유 | 설명 |
|---|---|
| 포맷이 공개됨 | 공식 문서 |
| Std에서 바로 열림 | File → Open → EasyEDA |
| Pro에서도 임포트 | 하나로 양쪽 대응 |
| 시뮬레이션 엔진이 ngspice | 로컬 검증값과 일치 |
| 시뮬 설정을 파일에 포함 | 열자마자 Ctrl+R |
생성되는 파일 구조
EasyEDA Standard 스키매틱은 JSON이고, 도형을 틸드(~)로 구분된 문자열로 표현합니다.
{
"head": "1~1.11.3~~TRAN`1u`1m`0`{AC`dec``0`0`{DC`0``0`0`{TF```",
"canvas": "CA~1200~1200~#FFFFFF~yes~#CCCCCC~10~1200~1200~line~10~pixel~5",
"shape": [ "LIB~...", "W~...", "N~...", "F~..." ],
"BBox": {"x":170,"y":100,"width":200,"height":130},
"colors": {}
}| 접두어 | 의미 |
|---|---|
LIB | 부품 (심볼 + 핀) |
W | 와이어 |
N | 넷라벨 |
F | 넷플래그 (GND, VCC, 전압 프로브) |
J | 정션 |
P | 핀 (LIB 안에) |
★ 넷라벨 방식 — 왜 이렇게 하는가
부품을 격자에 배치하고, 각 핀에서 짧은 와이어를 뽑아 넷라벨을 붙입니다.
부품 심볼(예: R1)의 양쪽 핀에서 짧은 와이어를 하나씩만 뽑고, 그 끝에 넷라벨(VIN, OUT)을 붙입니다. 부품끼리 직접 잇는 긴 와이어는 아예 그리지 않습니다.
| 그리는 것 | 안 그리는 것 |
|---|---|
| 부품 심볼 (격자 위 고정 좌표) | 부품과 부품을 잇는 배선 |
| 핀에서 나오는 짧은 와이어 1개 | 배선이 갈라지는 정션(J~) |
| 와이어 끝의 넷라벨 | 배선 교차·우회 경로 |
같은 이름의 넷라벨끼리는 EasyEDA가 알아서 같은 노드로 취급하므로, 전선을 안 그려도 연결이 성립합니다.
| ✅ 장점 | ⚠️ 단점 |
|---|---|
| 자동 배선기 없이 연결이 100% 정확 | 회로도가 예쁘지 않음 |
정션(J~)이 원리적으로 불필요 | 신호 흐름이 눈에 덜 보임 |
| 3점 접합이 없어 연결 버그 없음 | |
| 구현이 단순하고 검증 가능 |
자동 배선기의 버그로 연결이 틀리는 것보다, 못생기지만 정확한 것이 낫습니다.
실제 배선(직교 라우팅)은 이후 단계에서 단순한 회로에만 적용할 예정입니다.
★ 전압 프로브 자동 부착
expect에 나오는 노드마다 EasyEDA의 전압 프로브를 자동으로 붙입니다.
expect:
- {measure: v, node: OUT, value: 1.667, tol: 1%}→ OUT 노드에 F~part_netLabel_volProbe 부착
결과: EasyEDA에서 파일을 열고 Ctrl+R만 누르면, 우리가 검증한 그 노드가 이미 프로브되어 있습니다.
시뮬 설정 포함
analyses를 head 문자열에 심습니다.
analyses:
- {type: tran, tstep: 1u, tstop: 5m}→ head에 TRAN\1u`5m`0“ 포함
EasyEDA에서 Simulate 대화상자를 열면 값이 이미 채워져 있습니다.
지원 심볼
| 1단계 | 2단계 |
|---|---|
| 저항, 커패시터, 전해 커패시터, 인덕터 | BJT (NPN/PNP) |
| 다이오드, LED, 제너 | MOSFET (N/P) |
| 전압원 (DC/AC/SIN/PULSE) | OP앰프 |
| 전류원 | 스위치 |
| GND, VCC 플래그 | 커넥터·헤더 |
| 전압 프로브 |
★ 검증 방법
1. 기하 자기검사 (자동)
EasyEDA 없이도 파일의 정합성을 확인합니다.
- 최상위 키가 정확히 {head, canvas, shape, BBox, colors}
- 모든 gge id가 유일
- 모든 핀 dot이 10 그리드 위
- 모든 와이어 끝점이 핀/넷라벨/플래그 dot과 정확히 일치
- 모든 핀 dot이 정확히 하나의 와이어 끝점과 일치
- BBox가 모든 좌표를 포함
- 도형 문자열의 필드 개수가 타입별 기대값과 일치
2. 왕복 테스트 (자동)
넷리스트 해시가 같으면 연결이 보존된 것입니다.
3. 수동 확인 (1회, 절차 문서화)
| # | 할 일 | 통과 기준 |
|---|---|---|
| 1 | circuit export examples/01-dc-basics/loaded-divider.yaml -o out.json | 파일 생성 |
| 2 | EasyEDA Std → File → Open → EasyEDA… → out.json | 열림 |
| 3 | 심볼 확인 | 저항·전원이 정상 모양 |
| 4 | 넷라벨 확인 | 핀에 붙어 있음 (떨어져 있으면 미연결) |
| 5 | Design → Check Netlist | 미연결 경고 0 |
| 6 | Ctrl+R (Simulate) | 결과가 circuit sim과 일치 ★ |
| 7 | EasyEDA Pro에서 임포트 | 열리는지 확인 |
💡 6번이 핵심입니다. EasyEDA도 ngspice를 쓰므로 값이 일치해야 정상입니다. 다르면 넷리스트 변환이나 심볼 매핑에 문제가 있는 것입니다.
⚠️ 알려진 위험
| 위험 | 설명 | 대응 |
|---|---|---|
| 시뮬 심볼 이름 | EasyEDA Std 시뮬레이터는 특정 spiceSymbolName만 인식. 임의 값을 쓰면 파일은 열려도 Ctrl+R 실패 | R/C/L/V/I부터 실측으로 확인해 표로 고정 |
head의 AC/DC 필드 | 문서화가 부실 | EasyEDA UI에서 설정 후 저장한 파일과 diff |
| 심볼 기하 | BJT·MOSFET·opamp는 핀이 3~5개라 손으로 그려야 함 | circuit preview SVG로 검증 |
| 값 표시와 속성 불일치 | Value(Ω) 속성과 표시 텍스트가 다르면 시뮬이 화면과 다른 값을 씀 | 한 소스에서 둘 다 채움 |
⚠️ 시뮬 심볼 이름 문제로 막히면, “EasyEDA는 그리기용, 시뮬은 로컬 ngspice”로 목표를 분리합니다. 그래도 요구사항의 절반(파일 생성)은 달성됩니다.
SVG 미리보기
circuit preview my.yaml -o my.svg같은 심볼 정의를 써서 SVG를 그립니다. 미리보기가 이상하면 EasyEDA 출력도 이상하다는 뜻이므로, 심볼 디버깅이 훨씬 빨라집니다.
⚖️ 트레이드오프
| 선택 | ✅ | ⚠️ |
|---|---|---|
| 넷라벨 방식 | 연결 100% 정확, 구현 단순 | 못생김 |
| 자동 배선 | 보기 좋음 | 복잡, 버그 위험 |
| EasyEDA Std JSON | 공개 포맷, Std+Pro 대응 | Pro 전용 기능 사용 불가 |
| KiCad 넷리스트 | 오픈소스 생태계 | EasyEDA에서 추가 변환 필요 |
| 프로브 자동 부착 | 즉시 시뮬 가능 | 노드가 많으면 복잡 |
🔌 전체 흐름
“측정이 잘 되는지”가 두 지점에서 확인됩니다:
- 로컬
circuit test(자동, CI) - EasyEDA Ctrl+R (수동, 최종 확인)
연습문제
문제 1. 생성한 JSON이 EasyEDA에서 열리는데 부품이 안 보입니다. 무엇을 확인합니까?
exercises/17-04-export-sample.yaml풀이
BBox를 확인하세요.
BBox가 모든 도형을 감싸지 않으면, 파일은 열리지만 뷰가 빈 곳을 비춥니다.
"BBox": {"x":170, "y":100, "width":200, "height":130}확인:
- 모든 도형의 좌표 범위를 계산
- BBox가 그 범위를 포함하는가
- 여유를 두었는가 (심볼 텍스트 포함)
그 외 확인:
canvas의 뷰박스 크기- 도형 좌표가 캔버스 범위 안인가
- EasyEDA에서 “Fit to screen”(Ctrl+Shift+F) 시도
문제 2. 파일은 열리는데 Ctrl+R(시뮬레이션)이 실패합니다. 원인은?
exercises/17-04-value-notation.yaml풀이
spiceSymbolName 속성이 EasyEDA 시뮬레이터가 인식하는 값이 아닐 가능성이 큽니다.
EasyEDA Std의 시뮬레이터는 특정 시뮬레이션 라이브러리 심볼만 인식합니다:
- 저항 →
Resistor - 커패시터(capacitor) →
Capacitor - 정현파 전압원 →
VSIN - 등
확인 방법:
- EasyEDA에서 직접 부품을 배치하고 저장
- 그 파일의
LIB~문자열에서spiceSymbolName값 확인 - 우리 생성기의 값과 비교
그 외 확인:
spicePre속성 (R, C, L, V, I)- 값 속성(
Value(Ω))과 표시 텍스트가 일치하는가 - 접지(GND)접지 ground회로의 모든 전압을 재는 기준점으로, 여기가 흔들리면 모든 측정이 같이 흔들립니다.자세히 보기 → 플래그가 있는가 — 없으면 시뮬 불가
- 시뮬 설정(
head의 TRAN/AC/DC)이 올바른가
막히면 “EasyEDA는 회로도 작성·PCB용, 시뮬은 로컬 ngspice”로 분리해도 됩니다. 두 도구가 같은 엔진을 쓰므로 값은 어차피 같습니다.
이전 ← 03 시뮬레이션으로 측정 확인 | 다음 → 05 채팅으로 회로 만들기