
Encoder
byrantech/laptop
anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

ESP32-C3 SuperMini · ST7789 1.69" LCD · MAX3232(4핀) 모듈을 얹는 캐리어 보드다. 세 모듈 모두 완제품을 헤더에 꽂는 구조라 이 기판에는 능동소자가 없다.
PlotBridge is an open-source printed circuit board by zinzza, from the zinzza/PlotBridge repository on GitHub. It is a 2-layer board of 70 × 45 mm with 7 parts on 10 nets, routed with 42 tracks and 0 vias.
It belongs with the ESP32 and RISC-V boards of this library.
ESP32-C3 SuperMini · ST7789 1.69" LCD · MAX3232(4핀) 모듈을 얹는 캐리어 보드다. 세 모듈 모두 완제품을 헤더에 꽂는 구조라 이 기판에는 능동소자가 없다.
보드는 70 × 45 mm, 2층, 배선 완료 상태다. ERC·DRC 모두 0건이다.
| 파일 | 내용 |
|---|---|
PlotBridge.kicad_pro | 프로젝트 파일 — KiCad에서 이걸 연다 |
PlotBridge.kicad_sch | 회로도 (심볼 내장, 외부 라이브러리 불필요) |
PlotBridge.kicad_pcb | 보드 — 외곽 70×45 mm, 부품 배치, 넷, 배선 완료, M3 홀 4개 |
PlotBridge-schematic.pdf | 회로도 출력본 |
PlotBridge.kicad_sym | 심볼 라이브러리 |
PlotBridge.pretty/ | 풋프린트 라이브러리 (.kicad_mod 4종) |
sym-lib-table / fp-lib-table | 프로젝트 로컬 라이브러리 등록 |
tools/ | 이 프로젝트를 생성·검증한 스크립트 |
KiCad 10.0.5의 kicad-cli / pcbnew로 실제 실행한 결과다.
| 항목 | 결과 | 도구 |
|---|---|---|
| ERC (회로도) | 0 violations | kicad-cli sch erc |
| DRC (보드) | 0 violations | kicad-cli pcb drc |
| 미연결 패드 | 0 | 〃 |
| 보드 패드↔넷 vs 회로도 넷리스트 | 10/10 넷 일치 | tools/verify_board.py |
| 심볼 핀번호 ↔ 풋프린트 패드 위치 | 28/28 일치 | tools/verify_fp.py |
| 같은 층 다른 넷 교차(단락) | 0 | tools/verify_cross.py |
| 넷 | ESP32-C3 | 상대 | 배선층 |
|---|---|---|---|
+3V3 | 3V3 (pin 6) | LCD VCC, MAX3232 VCC | B.Cu |
GND | GND (pin 7) | LCD GND, MAX3232 GND | B.Cu |
LCD_SCL | GPIO4 | LCD SCL | B.Cu |
LCD_SDA | GPIO6 | LCD SDA | F.Cu |
LCD_RST | GPIO1 | LCD RES | F.Cu |
LCD_DC | GPIO3 | LCD DC | B.Cu |
LCD_CS | GPIO2 | LCD CS | B.Cu |
LCD_BL | GPIO5 | LCD BLK | B.Cu |
UART_TX | GPIO0 | MAX3232 RX | B.Cu |
UART_RX | GPIO7 | MAX3232 TX | F.Cu |
미사용: 5V, GPIO10, GPIO20, GPIO21 (no-connect 처리).
GPIO8(내장 LED), GPIO9(BOOT 버튼)는 모듈 온보드라 기판에서 연결하지 않는다.
| 부품 | 위치 | 방향 |
|---|---|---|
| U1 ESP32-C3 SuperMini | (45, 47.5) | 세로, USB-C가 위 |
| U2 ST7789 LCD | (70, 47.5) | 세로 8핀, U1 오른쪽 |
| U3 MAX3232 | (45, 63) | 가로 4핀, U1 아래 (90° 회전) |
| H1–H4 M3 홀 | 네 모서리 | — |
U3는 왼쪽부터 VCC(41.19) · GND(43.73) · RX(46.27) · TX(48.81) 순으로 놓인다.
B.Cu가 주 배선층이다 — 모듈 본체가 윗면에 있어 아랫면이 통째로 비어 있고,
U1의 두 패드 열 사이 공간도 양면 모두 자유롭게 쓸 수 있다. 서로 교차하는
3개 넷(LCD_SDA, LCD_RST, UART_RX)만 F.Cu로 올렸다. 관통(THT) 패드가
양면을 잇기 때문에 비아는 하나도 없다. 트랙 폭 0.25 mm.
작업하면서 실제로 확인하거나 판단한 것들을 남긴다.
풋프린트는 윗면(부품면) 기준, USB-C가 −Y 방향이다. 이 기준에서 전원핀은 오른쪽이다.
| 왼쪽 열 (위→아래) | 오른쪽 열 (위→아래) |
|---|---|
| GPIO5, 6, 7, 8, 9, 10, 20, 21 | 5V, GND, 3V3, GPIO4, 3, 2, 1, 0 |
웹에 널리 퍼진 "전원이 왼쪽" 핀아웃 그림은 뒷면(bottom) 뷰가 앞면으로 잘못 재배포된 것이다. 이 그림을 그대로 믿고 기판을 뜨면 좌우가 뒤집힌 보드가 나온다.
실물 확인법(10초): USB-C를 위로 두고 칩이 보이는 면에서, 아래쪽 실크에
왼쪽 21 / 오른쪽 0 이 찍혀 있으면 맞다.
근거는 세 갈래다.
괜찮다. 빨강은 F.Cu(윗면 동박), 파랑은 B.Cu(아랫면 동박)이고 사이에는
1.6 mm 두께의 FR4 기판이 있다. 도면에서 겹쳐 보이는 건 위에서 내려다본
투영일 뿐, 실제로는 육교와 그 아래 도로처럼 만나지 않는다. 2층 기판을 쓰는 이유가
바로 이것이다.
문제가 되는 건 같은 층에서 다른 넷이 교차하는 경우다. tools/verify_cross.py가
트랙 42개의 모든 쌍을 계산해 분류한다.
| 분류 | 개수 | |
|---|---|---|
| F.Cu ↔ B.Cu 교차 | 13 | 다른 층 — 무해 |
| 같은 층, 같은 넷 접촉 | 32 | 의도된 것 (모서리·분기) |
| 같은 층, 다른 넷 교차 | 0 | 단락 없음 |
| 같은 층, 다른 넷 간격 0.2 mm 미만 | 0 | 규칙 위반 없음 |
아니다. 소량에서는 오히려 2층이 더 싸거나 같다.
요즘 PCB 업체의 표준 제품이 양면(2층)이다. 단면(1층)은 별도 옵션으로 없거나, 있어도 같은 값이거나, 비표준 공정이라 더 비싸다. 단가표의 기준 가격 자체가 2층이다.
단면이 실제로 싸지는 건 수천 장 단위 양산에서 FR-1/CEM-1 같은 저가 기판재를 쓸 때다. 리모컨이나 저가 완구 기판이 그 경우다. 시제품 5~10장에는 해당 없다.
이 보드는 70 × 45 mm라 대부분 업체의 최저가 구간(100 × 100 mm 이하)에 넉넉히 들어간다.
굳이 1층으로 내리려면 F.Cu를 쓰는 3개 넷(LCD_SDA, LCD_RST, UART_RX)을
점퍼선이나 0옴 저항으로 공중 배선해야 한다. 가격 이득 없이 조립 수고와 실수 여지만
늘어나므로 권하지 않는다.
가능하다. 난이도로 치면 가장 쉬운 축이다.
층수는 납땜 난이도와 무관하다. 층수는 제조사가 하는 일이고, 난이도를 좌우하는 건 부품 패키지와 패드 크기다. 오히려 공장에서 만든 2층 기판은 홀 내벽에 구리가 도금되어 나오므로(PTH, plated through-hole), 한쪽 면만 납땜해도 납이 구멍을 타고 올라가 양쪽 층이 자동으로 연결된다. 윗면에 따로 손댈 필요가 없다. (집에서 직접 에칭한 2층 기판이라면 양면 납땜이 필요하지만, 발주 기판은 해당 없다.)
| 항목 | 값 | 평가 |
|---|---|---|
| 부품 | 전부 THT (핀헤더) | SMD 0개 |
| 패드 지름 | 1.8 mm | 넉넉함 |
| 드릴 | 1.0 mm | 2.54 mm 헤더 핀(0.64 mm 각)에 여유 |
| 애뉼러 링 | 0.4 mm | 인두 팁 닿을 면적 충분 |
| 인접 패드 간격 | 0.74 mm | 브리지 위험 낮음 |
| 납땜할 핀 | 28개 (16+8+4) | — |
암 헤더를 쓰면 모듈을 뺐다 꽂을 수 있다. MAX3232 핀 순서가 다른 제품으로 바꿔야 할 때를 대비해서도 소켓 방식이 안전하다.
인두는 320350 °C에 핀당 23초면 충분하다.
둘 다 무료로 시작할 수 있지만 성격이 다르다.
| KiCad | EasyEDA | |
|---|---|---|
| 라이선스 | 완전 무료·오픈소스(GPL), 기능 제한 없음 | 웹 버전 무료, 비공개 프로젝트 개수 제한 |
| 유료 등급 | 없음 | EasyEDA Pro (데스크톱) |
| 강점 | 어느 제조사에나 통하는 범용 거버 출력 | JLCPCB 부품 소싱·주문 연동 |
이 프로젝트는 KiCad를 골랐다. 국내 업체(devicemart 등)에 거버로 넘기기에 무난하고, 특정 제조사 생태계에 묶이지 않기 때문이다.
발주 페이지가 요구하는 건 배선도(개념 회로도)가 아니라 실제 동박 패턴이 담긴
거버(Gerber) 파일과 드릴 파일이다. Docs/wiring_diagram.html은 연결 관계를
보여주는 문서일 뿐 발주용이 아니다.
kicad-cli pcb export gerbers --output gerber/ PlotBridge.kicad_pcb
kicad-cli pcb export drill --output gerber/ PlotBridge.kicad_pcbVCC, GND, RX, TX (pin 1 = VCC) 기준이다.GND VCC SCL SDA RES DC CS BLK)도 실물 실크와 대조한다.tools/gen_kicad.py가 회로도·보드·라이브러리를 전부 생성한다. 배치나 배선을 바꾸려면
스크립트의 PLACE / ROUTES를 고치고 다시 돌린다.
tools/normalize_pcb.py는 KiCad 자체 엔진(pcbnew)으로 보드의 모든 풋프린트를
라이브러리에서 다시 불러와 같은 자리에 재배치한다. 손으로 쓴 사본은 부품을 회전시키는
순간 라이브러리와 어긋나므로(KiCad는 풋프린트 텍스트 각도를 보드 절대각으로 저장한다)
이 단계가 없으면 DRC가 lib_footprint_mismatch를 낸다. KiCad 번들 파이썬으로 돌린다.
python tools/gen_kicad.py
"C:/Program Files/KiCad/10.0/bin/python.exe" tools/normalize_pcb.py
python tools/verify_net.py && python tools/verify_fp.py && python tools/verify_board.py
python tools/verify_cross.py검증기는 서로 독립적이다.
| 스크립트 | 확인하는 것 |
|---|---|
verify_net.py | 회로도 기하학에서 넷리스트를 재구성해 의도와 대조 |
verify_fp.py | 심볼 핀번호 ↔ 풋프린트 패드 물리 위치 |
verify_board.py | 보드의 패드↔넷이 회로도와 일치하는지 |
verify_cross.py | 같은 층에서 다른 넷이 닿는 곳이 있는지 |
DRC는 보드가 "자기모순이 없음"만 보장하지 "맞다"는 것은 보장하지 않는다. 넷을 잘못 할당해도 DRC는 통과한다. 그래서 위 대조가 따로 필요하다.
주의: 재생성은
.kicad_sch/.kicad_pcb를 덮어쓴다. KiCad에서 프로젝트를 열어둔 상태로 돌렸다면, KiCad를 닫았다가 다시 열어야 새 내용이 보인다. 열린 창에서 저장하면 재생성한 내용이 지워진다.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole_M3 | PlotBridge:MountingHole_M3 | H1, H2, H3, H4 |
| 1 | ESP32-C3 SuperMini | PlotBridge:ESP32-C3_SuperMini | U1 |
| 1 | MAX3232 module 4P | PlotBridge:MAX3232_MODULE_4P | U3 |
| 1 | ST7789 1.69in 240x280 | PlotBridge:ST7789_169_8P | U2 |
It measures 70 × 45 mm and has 2 copper layers, 1.6 mm thick.
7 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the zinzza/PlotBridge repository on GitHub, at the commit this page was made from: the board is Hardware/PlotBridge.kicad_pcb and its schematic Hardware/PlotBridge.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask zinzza before reusing the design.

byrantech/laptop
anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.



AxxAxx/AxxSolder
STM32 Based soldering station for JBC cartridges, 9-24 VDC and USB-PD power


jamro/tiny-engineer
A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.

hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
