ESP32-S3 Sensor Node L2.1 — schematic ERC 0, PCB outline+placement, README

This commit is contained in:
2026-06-22 12:58:06 +03:00
commit a22796b70b
9 changed files with 1990 additions and 0 deletions

10
.gitignore vendored Normal file
View File

@@ -0,0 +1,10 @@
*.bak
*.mcpbak
.history/
.mcp-backups/
analysis/
*.dsn
*.ses
*-erc.rpt
*-drc.rpt
drc_violations*

80
README.md Normal file
View File

@@ -0,0 +1,80 @@
# ESP32-S3 Sensor Node — L2.1 Training Exercise
## Project Setup
1. **Open in KiCad 10.0+** — File → Open Project → `/Users/nearxos/Documents/KiCad/10.0/esp32-s3-sensor-node`
2. **Schematic** — Already clean (ERC 0). View in Eeschema.
3. **PCB Layout** — Needs routing. Create board in Pcbnew.
## PCB Spec
- **Size:** 65 × 40mm, 2-layer
- **Stackup:** 1.6mm FR4, 1oz copper, HASL
- **Design rules:** trace/space 0.15mm, drill 0.3mm, annular 0.15mm
- **Target fab:** JLCPCB / PCBWay standard
## Component Placement
```
Board: (0,0) bottom-left, (65,40) top-right
Left edge (x≈5-15):
J1 USB-C @ (7, 20) — left edge, USB mating face outward
R7 CC1 pull-down @ (11, 28)
R8 CC2 pull-down @ (11, 25)
Lower-left (x≈15-25, y≈3-15):
J3 PROG header @ (25, 3) — bottom edge
R3 IO0 pull-up @ (16, 7)
R4 IO12 pull-down @ (16, 12)
Center-left (x≈20-30):
U2 AMS1117-3.3 @ (20, 20) — regulator
C5 10µF input @ (24, 17) — near U2 pin 3 (VI)
C6 10µF output @ (24, 23) — near U2 pin 2 (VO)
Center (x≈27-38):
R2 EN pull-up @ (27, 32)
C4 EN cap @ (26, 35)
C1-C3 decoupling @ (30, 22-28) — near U1 3V3 pins
U1 ESP32-S3 @ (38, 20) — main module
Right side (x≈48-58):
R5 SDA pull-up @ (48, 24)
R6 SCL pull-up @ (48, 22)
J2 I2C connector @ (56, 20) — right edge
D1 Status LED @ (55, 34) — top-right edge
R1 LED resistor @ (55, 30)
```
## Antenna Keepout
- **Zone:** x > 46mm, y > 28mm (top-right corner)
- No copper, no traces, no components in this area
- The ESP32-S3-WROOM-1 module has its PCB antenna at the top-right corner
## Routing Order
1. **USB differential pair** — USB_D_P / USB_D_N: 90Ω impedance, length-matched
- Width: ~0.3mm on 1.6mm FR4 (calc with fab's tool)
- Gap: ~0.15mm
- Route on top layer, GND reference on bottom
2. **3V3 power** — 0.5mm traces from U2 VO to U1 3V3 pin + all 3V3 nodes
3. **VBUS power** — 0.5mm from J1 to U2 VI
4. **GND** — Copper pours on both layers with stitching vias
5. **I2C** — SDA/SCL routed together, away from noisy traces
6. **UART** — RXD0/TXD0 to J3
7. **Strapping** — EN, IO0, IO12 to pull resistors
8. **LED** — IO2_LED through R1 to D1
## GND Pour Strategy
- **B.Cu (bottom):** Full copper pour, entire board area
- **F.Cu (top):** Full copper pour EXCEPT antenna keepout zone
- **Antenna keepout:** Keepout zone polygon on both layers (no copper)
- **Stitching vias:** Perimeter every 5mm, plus around module GND pads
## Files
| File | Description |
|------|-------------|
| `*.kicad_sch` | Schematic (ERC 0) |
| `*.kicad_pcb` | PCB layout (empty, needs routing) |
| `*.kicad_pro` | Project file |
| `gen_schematic.py` | Python schematic generator |
| `gen_pcb.py` | Python PCB generator (outline + placement) |

View File

@@ -0,0 +1,276 @@
(kicad_pcb
(version 20260206)
(generator "pcbnew")
(generator_version "10.0")
(general
(thickness 1.6)
(legacy_teardrops no)
)
(paper "A4")
(layers
(0 "F.Cu" signal)
(2 "B.Cu" signal)
(13 "F.Paste" user)
(15 "B.Paste" user)
(5 "F.SilkS" user)
(7 "B.SilkS" user)
(1 "F.Mask" user)
(3 "B.Mask" user)
(25 "Edge.Cuts" user)
(31 "F.CrtYd" user)
(29 "B.CrtYd" user)
(35 "F.Fab" user)
(33 "B.Fab" user)
)
(setup
(pad_to_mask_clearance 0)
(allow_soldermask_bridges_in_footprints no)
(copper_edge_clearance 0.3)
)
(nets
(net 0 "GND")
(net 1 "3V3")
(net 2 "VBUS")
(net 3 "EN")
(net 4 "IO0")
(net 5 "IO12")
(net 6 "SDA")
(net 7 "SCL")
(net 8 "USB_D_P")
(net 9 "USB_D_N")
(net 10 "CC1")
(net 11 "CC2")
(net 12 "IO2_LED")
(net 13 "D1_A")
(net 14 "RXD0")
(net 15 "TXD0")
)
(net_class "Default" (clearance 0.15) (trace_width 0.2) (via_dia 0.6) (via_drill 0.3) (add_net "*"))
(net_class "POWER" (clearance 0.25) (trace_width 0.5) (via_dia 0.8) (via_drill 0.4) (add_net "3V3") (add_net "VBUS"))
(polygon (layer "Edge.Cuts")
(pts
(xy 0 0)
(xy 65.0 0)
(xy 65.0 40.0)
(xy 0 40.0)
)
)
(footprint ""Connector_USB:USB_C_Receptacle_USB2.0_16P""
(layer "F.Cu")
(at 7.000 20.000 0)
(descr "J1")
(property "Reference" "J1" (at 7.000 17.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "J1" (at 7.000 23.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "SH" smd rect (at -3.000 0.000 0) (size 2.000 2.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
(pad "A1" smd rect (at -2.000 5.000 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
(pad "A4" smd rect (at -2.000 -5.000 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 2))
(pad "A5" smd rect (at -2.000 -3.000 0) (size 1.500 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 10))
(pad "A6" smd rect (at -2.000 -1.000 0) (size 1.500 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 8))
(pad "A7" smd rect (at -2.000 1.000 0) (size 1.500 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 9))
(pad "B5" smd rect (at -2.000 3.000 0) (size 1.500 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 11))
(pad "B6" smd rect (at -2.000 0.000 0) (size 1.500 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 8))
(pad "B7" smd rect (at -2.000 2.000 0) (size 1.500 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 9))
)
(footprint ""Package_TO_SOT_SMD:SOT-223-3Lead_TabPin2""
(layer "F.Cu")
(at 20.000 20.000 0)
(descr "U2")
(property "Reference" "U2" (at 20.000 17.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "U2" (at 20.000 23.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -2.300 -3.000 0) (size 1.500 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
(pad "2" smd rect (at 0.000 3.000 0) (size 2.500 2.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "3" smd rect (at 0.000 -3.000 0) (size 2.500 2.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 2))
)
(footprint ""RF_Module:ESP32-S3-WROOM-1""
(layer "F.Cu")
(at 38.000 20.000 0)
(descr "U1")
(property "Reference" "U1" (at 38.000 17.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "U1" (at 38.000 23.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -8.000 8.000 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
(pad "2" smd rect (at -8.000 -8.000 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "3" smd rect (at -8.000 -6.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 3))
(pad "4" smd rect (at -8.000 -4.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 6))
(pad "5" smd rect (at -8.000 -2.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 7))
(pad "13" smd rect (at 8.000 -4.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 9))
(pad "14" smd rect (at 8.000 -2.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 8))
(pad "20" smd rect (at -8.000 4.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 5))
(pad "27" smd rect (at -8.000 0.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 4))
(pad "36" smd rect (at 8.000 -8.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 14))
(pad "37" smd rect (at 8.000 -6.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 15))
(pad "38" smd rect (at -8.000 2.000 0) (size 1.000 1.000) (layers "F.Cu" "F.Paste" "F.Mask") (net 12))
)
(footprint ""Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical""
(layer "F.Cu")
(at 56.000 20.000 0)
(descr "J2")
(property "Reference" "J2" (at 56.000 17.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "J2" (at 56.000 23.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at 0.000 3.810 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "2" smd rect (at 0.000 1.270 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 6))
(pad "3" smd rect (at 0.000 -1.270 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 7))
(pad "4" smd rect (at 0.000 -3.810 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical""
(layer "F.Cu")
(at 25.000 3.000 0)
(descr "J3")
(property "Reference" "J3" (at 25.000 0.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "J3" (at 25.000 6.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at 0.000 -3.810 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
(pad "2" smd rect (at 0.000 -1.270 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 14))
(pad "3" smd rect (at 0.000 1.270 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 15))
(pad "4" smd rect (at 0.000 3.810 0) (size 1.500 1.500) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
)
(footprint ""LED_SMD:LED_0603_1608Metric""
(layer "F.Cu")
(at 55.000 34.000 0)
(descr "D1")
(property "Reference" "D1" (at 55.000 31.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "D1" (at 55.000 37.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.000 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
(pad "2" smd rect (at 0.800 0.000 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 13))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 55.000 30.000 0)
(descr "R1")
(property "Reference" "R1" (at 55.000 27.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R1" (at 55.000 33.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 12))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 13))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 27.000 32.000 0)
(descr "R2")
(property "Reference" "R2" (at 27.000 29.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R2" (at 27.000 35.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 3))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 16.000 7.000 0)
(descr "R3")
(property "Reference" "R3" (at 16.000 4.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R3" (at 16.000 10.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 4))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 16.000 12.000 0)
(descr "R4")
(property "Reference" "R4" (at 16.000 9.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R4" (at 16.000 15.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 5))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 48.000 24.000 0)
(descr "R5")
(property "Reference" "R5" (at 48.000 21.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R5" (at 48.000 27.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 6))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 48.000 22.000 0)
(descr "R6")
(property "Reference" "R6" (at 48.000 19.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R6" (at 48.000 25.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 7))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 11.000 28.000 0)
(descr "R7")
(property "Reference" "R7" (at 11.000 25.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R7" (at 11.000 31.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 10))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Resistor_SMD:R_0603_1608Metric""
(layer "F.Cu")
(at 11.000 25.000 0)
(descr "R8")
(property "Reference" "R8" (at 11.000 22.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "R8" (at 11.000 28.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 11))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Capacitor_SMD:C_0603_1608Metric""
(layer "F.Cu")
(at 30.000 28.000 0)
(descr "C1")
(property "Reference" "C1" (at 30.000 25.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "C1" (at 30.000 31.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Capacitor_SMD:C_0603_1608Metric""
(layer "F.Cu")
(at 30.000 25.000 0)
(descr "C2")
(property "Reference" "C2" (at 30.000 22.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "C2" (at 30.000 28.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Capacitor_SMD:C_0603_1608Metric""
(layer "F.Cu")
(at 30.000 22.000 0)
(descr "C3")
(property "Reference" "C3" (at 30.000 19.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "C3" (at 30.000 25.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Capacitor_SMD:C_0603_1608Metric""
(layer "F.Cu")
(at 26.000 35.000 0)
(descr "C4")
(property "Reference" "C4" (at 26.000 32.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "C4" (at 26.000 38.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 3))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Capacitor_SMD:C_0805_2012Metric""
(layer "F.Cu")
(at 24.000 17.000 0)
(descr "C5")
(property "Reference" "C5" (at 24.000 14.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "C5" (at 24.000 20.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 2))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(footprint ""Capacitor_SMD:C_0805_2012Metric""
(layer "F.Cu")
(at 24.000 23.000 0)
(descr "C6")
(property "Reference" "C6" (at 24.000 20.000) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))
(property "Value" "C6" (at 24.000 26.000) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))
(pad "1" smd rect (at -0.800 0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 1))
(pad "2" smd rect (at -0.800 -0.900 0) (size 0.800 0.800) (layers "F.Cu" "F.Paste" "F.Mask") (net 0))
)
(zone (net 0) (layer "F.Cu")
(polygon (pts (xy 0 0)(xy 65.0 0)(xy 65.0 40.0)(xy 0 40.0)))
(fill (mode solid))
)
(zone (net 0) (layer "B.Cu")
(polygon (pts (xy 0 0)(xy 65.0 0)(xy 65.0 40.0)(xy 0 40.0)))
(fill (mode solid))
)
(zone (net 0) (layer "F.Cu") (priority 1)
(polygon (pts (xy 46 28)(xy 65.0 28)(xy 65.0 40.0)(xy 46 40.0)))
(fill (mode solid))
)
(zone (net 0) (layer "B.Cu") (priority 1)
(polygon (pts (xy 46 28)(xy 65.0 28)(xy 65.0 40.0)(xy 46 40.0)))
(fill (mode solid))
)
)

View File

@@ -0,0 +1,105 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"shapes": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"prototype_zone_fills": false,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
"vias",
"footprint_text",
"footprint_anchors",
"ratsnest",
"grid",
"footprints_front",
"footprints_back",
"footprint_values",
"footprint_references",
"tracks",
"drc_errors",
"drawing_sheet",
"bitmaps",
"pads",
"zones",
"drc_warnings",
"drc_exclusions",
"locked_item_shadows",
"conflict_shadows",
"shapes",
"board_outline_area",
"ly_points"
],
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"integration_disabled": false,
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "esp32-s3-sensor-node.kicad_prl",
"version": 5
},
"net_inspector_panel": {
"col_hidden": [],
"col_order": [],
"col_widths": [],
"custom_group_rules": [],
"expanded_rows": [],
"filter_by_net_name": true,
"filter_by_netclass": true,
"filter_text": "",
"group_by_constraint": false,
"group_by_netclass": false,
"show_time_domain_details": false,
"show_unconnected_nets": false,
"show_zero_pad_nets": false,
"sort_ascending": true,
"sorting_column": -1
},
"open_jobsets": [],
"project": {
"files": []
},
"schematic": {
"hierarchy_collapsed": [],
"selection_filter": {
"graphics": true,
"images": true,
"labels": true,
"lockedItems": false,
"otherItems": true,
"pins": true,
"ruleAreas": true,
"symbols": true,
"text": true,
"wires": true
}
}
}

View File

@@ -0,0 +1,323 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_barcodes": false,
"apply_defaults_to_fp_dimensions": false,
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.8,
"height": 1.27,
"width": 2.54
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"border_display_style": 2,
"border_hatch_pitch": 0.5,
"corner_radius": 0.0,
"corner_smoothing": 0,
"fill_mode": 0,
"hatch_gap": 1.5,
"hatch_orientation": 0.0,
"hatch_smoothing_level": 0,
"hatch_smoothing_value": 0.1,
"hatch_thickness": 1.0,
"min_clearance": 0.5,
"min_island_area": 10.0,
"min_thickness": 0.25,
"pad_connection": 1,
"remove_islands": 0,
"thermal_relief_gap": 0.5,
"thermal_relief_spoke_width": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_field_mismatch": "warning",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"missing_tuning_profile": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "error",
"padstack": "warning",
"pth_inside_courtyard": "error",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_not_centered_on_via": "ignore",
"track_on_post_machined_layer": "error",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"tuning_profile_track_geometries": "ignore",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.2,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"bom_rev": "",
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": "",
"sch_revision": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"component_class_settings": {
"assignments": [],
"meta": {
"version": 0
},
"sheet_component_classes": {
"enabled": false
}
},
"cvpcb": {
"equivalence_files": []
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "esp32-s3-sensor-node.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"tuning_profile": "",
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 5
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"idf": "",
"netlist": "",
"plot": "",
"specctra_dsn": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"bus_aliases": {},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"top_level_sheets": []
},
"sheets": [],
"text_variables": {},
"tuning_profiles": {
"meta": {
"version": 0
},
"tuning_profiles_impedance_geometric": []
}
}

View File

@@ -0,0 +1,856 @@
(kicad_sch (version 20250114) (generator "sensor-node-gen") (uuid "esp32-s3-sensor-node") (paper "A4"))
(lib_symbols (symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)
(symbol (lib_id "Connector:USB_C_Receptacle_USB2.0_16P") (at 25.40 101.60) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0001")
(property "Reference" "J1" (at 25.40 97.79)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "USB-C" (at 25.40 105.41)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Connector_USB:USB_C_Receptacle_USB2.0_16P" (at 25.40 101.60) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 25.40 101.60) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "RF_Module:ESP32-S3-WROOM-1") (at 101.60 101.60) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0002")
(property "Reference" "U1" (at 101.60 97.79)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "ESP32-S3-WROOM-1" (at 101.60 105.41)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 101.60 101.60) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Connector:Conn_01x04_Pin") (at 177.80 63.50) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0003")
(property "Reference" "J2" (at 177.80 59.69)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "I2C_Sensor" (at 177.80 67.31)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (at 177.80 63.50) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 177.80 63.50) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Connector:Conn_01x04_Pin") (at 25.40 203.20) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0004")
(property "Reference" "J3" (at 25.40 199.39)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "PROG" (at 25.40 207.01)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (at 25.40 203.20) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 25.40 203.20) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Regulator_Linear:AMS1117-3.3") (at 55.88 101.60) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0005")
(property "Reference" "U2" (at 55.88 97.79)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "AMS1117-3.3" (at 55.88 105.41)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Package_TO_SOT_SMD:SOT-223-3Lead_TabPin2" (at 55.88 101.60) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 55.88 101.60) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:LED") (at 193.04 160.02) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0006")
(property "Reference" "D1" (at 193.04 156.21)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "LED_Green" (at 193.04 163.83)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "LED_SMD:LED_0603_1608Metric" (at 193.04 160.02) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 193.04 160.02) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 190.50 190.50) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0007")
(property "Reference" "R1" (at 190.50 186.69)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "470" (at 190.50 194.31)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 190.50 190.50) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 190.50 190.50) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 63.50 50.80) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0008")
(property "Reference" "R2" (at 63.50 46.99)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "10k" (at 63.50 54.61)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 63.50 50.80) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 63.50 50.80) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 165.10 203.20) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0009")
(property "Reference" "R3" (at 165.10 199.39)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "10k" (at 165.10 207.01)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 165.10 203.20) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 165.10 203.20) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 171.45 121.92) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0010")
(property "Reference" "R4" (at 171.45 118.11)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "10k" (at 171.45 125.73)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 171.45 121.92) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 171.45 121.92) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 152.40 38.10) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0011")
(property "Reference" "R5" (at 152.40 34.29)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "4.7k" (at 152.40 41.91)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 152.40 38.10) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 152.40 38.10) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 152.40 55.88) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0012")
(property "Reference" "R6" (at 152.40 52.07)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "4.7k" (at 152.40 59.69)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 152.40 55.88) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 152.40 55.88) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 33.02 142.24) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0013")
(property "Reference" "R7" (at 33.02 138.43)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "5.1k" (at 33.02 146.05)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 33.02 142.24) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 33.02 142.24) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:R") (at 33.02 157.48) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0014")
(property "Reference" "R8" (at 33.02 153.67)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "5.1k" (at 33.02 161.29)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Resistor_SMD:R_0603_1608Metric" (at 33.02 157.48) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 33.02 157.48) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:C") (at 63.50 132.08) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0015")
(property "Reference" "C1" (at 63.50 128.27)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "100nF" (at 63.50 135.89)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (at 63.50 132.08) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 63.50 132.08) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:C") (at 63.50 147.32) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0016")
(property "Reference" "C2" (at 63.50 143.51)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "100nF" (at 63.50 151.13)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (at 63.50 147.32) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 63.50 147.32) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:C") (at 63.50 162.56) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0017")
(property "Reference" "C3" (at 63.50 158.75)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "10uF" (at 63.50 166.37)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (at 63.50 162.56) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 63.50 162.56) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:C") (at 55.88 182.88) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0018")
(property "Reference" "C4" (at 55.88 179.07)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "100nF" (at 55.88 186.69)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Capacitor_SMD:C_0603_1608Metric" (at 55.88 182.88) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 55.88 182.88) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:C") (at 50.80 83.82) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0019")
(property "Reference" "C5" (at 50.80 80.01)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "10uF" (at 50.80 87.63)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 50.80 83.82) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 50.80 83.82) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "Device:C") (at 50.80 119.38) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0020")
(property "Reference" "C6" (at 50.80 115.57)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "10uF" (at 50.80 123.19)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (at 50.80 119.38) (effects (font (size 1.27 1.27)) hide))
(property "Datasheet" "~" (at 50.80 119.38) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "power:+3.3V") (at 55.88 50.80) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0021")
(property "Reference" "PS1" (at 55.88 46.99)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "3V3" (at 55.88 54.61)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 55.88 50.80) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "power:GND") (at 55.88 220.98) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0022")
(property "Reference" "PS2" (at 55.88 217.17)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "GND" (at 55.88 224.79)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 55.88 220.98) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "power:GND") (at 93.98 215.90) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0023")
(property "Reference" "PS3" (at 93.98 212.09)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "GND" (at 93.98 219.71)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 93.98 215.90) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "power:PWR_FLAG") (at 101.60 215.90) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0024")
(property "Reference" "PS4" (at 101.60 212.09)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "PWR_FLAG" (at 101.60 219.71)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 101.60 215.90) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "power:PWR_FLAG") (at 101.60 226.06) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0025")
(property "Reference" "PS5" (at 101.60 222.25)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "PWR_FLAG" (at 101.60 229.87)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 101.60 226.06) (effects (font (size 1.27 1.27)) hide))
)
(symbol (lib_id "power:PWR_FLAG") (at 101.60 236.22) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid "cid-0026")
(property "Reference" "PS6" (at 101.60 232.41)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Value" "PWR_FLAG" (at 101.60 240.03)
(effects (font (size 1.27 1.27)) (justify left)))
(property "Datasheet" "~" (at 101.60 236.22) (effects (font (size 1.27 1.27)) hide))
)
(wire (pts (xy 12.70 124.46) (xy 7.62 124.46))
(stroke (width 0) (type default))
(uuid "wr-0001")
)
(label "GND" (at 7.62 124.46)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0001")
)
(wire (pts (xy 25.40 124.46) (xy 20.32 124.46))
(stroke (width 0) (type default))
(uuid "wr-0002")
)
(label "GND" (at 20.32 124.46)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0002")
)
(wire (pts (xy 40.64 86.36) (xy 43.18 86.36))
(stroke (width 0) (type default))
(uuid "wr-0003")
)
(label "VBUS" (at 43.18 86.36)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0003")
)
(wire (pts (xy 40.64 91.44) (xy 43.18 91.44))
(stroke (width 0) (type default))
(uuid "wr-0004")
)
(label "CC1" (at 43.18 91.44)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0004")
)
(wire (pts (xy 40.64 104.14) (xy 43.18 104.14))
(stroke (width 0) (type default))
(uuid "wr-0005")
)
(label "USB_D_P" (at 43.18 104.14)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0005")
)
(wire (pts (xy 40.64 99.06) (xy 43.18 99.06))
(stroke (width 0) (type default))
(uuid "wr-0006")
)
(label "USB_D_N" (at 43.18 99.06)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0006")
)
(wire (pts (xy 25.40 124.46) (xy 20.32 124.46))
(stroke (width 0) (type default))
(uuid "wr-0007")
)
(label "GND" (at 20.32 124.46)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0007")
)
(wire (pts (xy 25.40 124.46) (xy 20.32 124.46))
(stroke (width 0) (type default))
(uuid "wr-0008")
)
(label "GND" (at 20.32 124.46)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0008")
)
(wire (pts (xy 40.64 86.36) (xy 43.18 86.36))
(stroke (width 0) (type default))
(uuid "wr-0009")
)
(label "VBUS" (at 43.18 86.36)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0009")
)
(wire (pts (xy 40.64 93.98) (xy 43.18 93.98))
(stroke (width 0) (type default))
(uuid "wr-0010")
)
(label "CC2" (at 43.18 93.98)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0010")
)
(wire (pts (xy 40.64 106.68) (xy 43.18 106.68))
(stroke (width 0) (type default))
(uuid "wr-0011")
)
(label "USB_D_P" (at 43.18 106.68)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0011")
)
(wire (pts (xy 40.64 101.60) (xy 43.18 101.60))
(stroke (width 0) (type default))
(uuid "wr-0012")
)
(label "USB_D_N" (at 43.18 101.60)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0012")
)
(wire (pts (xy 25.40 124.46) (xy 20.32 124.46))
(stroke (width 0) (type default))
(uuid "wr-0013")
)
(label "GND" (at 20.32 124.46)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0013")
)
(wire (pts (xy 101.60 129.54) (xy 101.60 132.08))
(stroke (width 0) (type default))
(uuid "wr-0014")
)
(label "GND" (at 101.60 132.08)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0014")
)
(wire (pts (xy 101.60 73.66) (xy 101.60 71.12))
(stroke (width 0) (type default))
(uuid "wr-0015")
)
(label "3V3" (at 101.60 71.12)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0015")
)
(wire (pts (xy 86.36 78.74) (xy 83.82 78.74))
(stroke (width 0) (type default))
(uuid "wr-0016")
)
(label "EN" (at 83.82 78.74)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0016")
)
(wire (pts (xy 86.36 93.98) (xy 83.82 93.98))
(stroke (width 0) (type default))
(uuid "wr-0017")
)
(label "SDA" (at 83.82 93.98)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0017")
)
(wire (pts (xy 86.36 96.52) (xy 83.82 96.52))
(stroke (width 0) (type default))
(uuid "wr-0018")
)
(label "SCL" (at 83.82 96.52)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0018")
)
(wire (pts (xy 116.84 88.90) (xy 119.38 88.90))
(stroke (width 0) (type default))
(uuid "wr-0019")
)
(label "USB_D_N" (at 119.38 88.90)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0019")
)
(wire (pts (xy 116.84 91.44) (xy 119.38 91.44))
(stroke (width 0) (type default))
(uuid "wr-0020")
)
(label "USB_D_P" (at 119.38 91.44)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0020")
)
(wire (pts (xy 116.84 119.38) (xy 119.38 119.38))
(stroke (width 0) (type default))
(uuid "wr-0021")
)
(label "GND" (at 119.38 119.38)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0021")
)
(wire (pts (xy 86.36 114.30) (xy 83.82 114.30))
(stroke (width 0) (type default))
(uuid "wr-0022")
)
(label "IO12" (at 83.82 114.30)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0022")
)
(wire (pts (xy 86.36 83.82) (xy 83.82 83.82))
(stroke (width 0) (type default))
(uuid "wr-0023")
)
(label "IO0" (at 83.82 83.82)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0023")
)
(wire (pts (xy 116.84 81.28) (xy 119.38 81.28))
(stroke (width 0) (type default))
(uuid "wr-0024")
)
(label "RXD0" (at 119.38 81.28)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0024")
)
(wire (pts (xy 116.84 78.74) (xy 119.38 78.74))
(stroke (width 0) (type default))
(uuid "wr-0025")
)
(label "TXD0" (at 119.38 78.74)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0025")
)
(wire (pts (xy 86.36 88.90) (xy 83.82 88.90))
(stroke (width 0) (type default))
(uuid "wr-0026")
)
(label "IO2_LED" (at 83.82 88.90)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0026")
)
(wire (pts (xy 101.60 129.54) (xy 101.60 132.08))
(stroke (width 0) (type default))
(uuid "wr-0027")
)
(label "GND" (at 101.60 132.08)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0027")
)
(wire (pts (xy 101.60 129.54) (xy 101.60 132.08))
(stroke (width 0) (type default))
(uuid "wr-0028")
)
(label "GND" (at 101.60 132.08)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0028")
)
(wire (pts (xy 185.08 57.46) (xy 187.62 57.46))
(stroke (width 0) (type default))
(uuid "wr-0029")
)
(label "3V3" (at 187.62 57.46)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0029")
)
(wire (pts (xy 185.08 60.00) (xy 187.62 60.00))
(stroke (width 0) (type default))
(uuid "wr-0030")
)
(label "SDA" (at 187.62 60.00)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0030")
)
(wire (pts (xy 185.08 62.54) (xy 187.62 62.54))
(stroke (width 0) (type default))
(uuid "wr-0031")
)
(label "SCL" (at 187.62 62.54)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0031")
)
(wire (pts (xy 185.08 65.08) (xy 187.62 65.08))
(stroke (width 0) (type default))
(uuid "wr-0032")
)
(label "GND" (at 187.62 65.08)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0032")
)
(wire (pts (xy 25.08 197.46) (xy 25.08 195.00))
(stroke (width 0) (type default))
(uuid "wr-0033")
)
(label "GND" (at 25.08 195.00)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0033")
)
(wire (pts (xy 25.08 200.00) (xy 25.08 197.50))
(stroke (width 0) (type default))
(uuid "wr-0034")
)
(label "RXD0" (at 25.08 197.50)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0034")
)
(wire (pts (xy 25.08 202.54) (xy 25.08 200.00))
(stroke (width 0) (type default))
(uuid "wr-0035")
)
(label "TXD0" (at 25.08 200.00)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0035")
)
(wire (pts (xy 25.08 205.08) (xy 25.08 202.50))
(stroke (width 0) (type default))
(uuid "wr-0036")
)
(label "3V3" (at 25.08 202.50)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0036")
)
(wire (pts (xy 55.88 109.22) (xy 55.88 111.76))
(stroke (width 0) (type default))
(uuid "wr-0037")
)
(label "GND" (at 55.88 111.76)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0037")
)
(wire (pts (xy 63.50 101.60) (xy 66.04 101.60))
(stroke (width 0) (type default))
(uuid "wr-0038")
)
(label "3V3" (at 66.04 101.60)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0038")
)
(wire (pts (xy 48.26 101.60) (xy 45.72 101.60))
(stroke (width 0) (type default))
(uuid "wr-0039")
)
(label "VBUS" (at 45.72 101.60)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0039")
)
(wire (pts (xy 186.19 160.00) (xy 183.65 160.00))
(stroke (width 0) (type default))
(uuid "wr-0040")
)
(label "GND" (at 183.65 160.00)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0040")
)
(wire (pts (xy 193.81 160.00) (xy 196.35 160.00))
(stroke (width 0) (type default))
(uuid "wr-0041")
)
(label "D1_A" (at 196.35 160.00)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0041")
)
(wire (pts (xy 190.50 186.69) (xy 190.50 184.15))
(stroke (width 0) (type default))
(uuid "wr-0042")
)
(label "IO2_LED" (at 190.50 184.15)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0042")
)
(wire (pts (xy 190.50 194.31) (xy 190.50 196.85))
(stroke (width 0) (type default))
(uuid "wr-0043")
)
(label "D1_A" (at 190.50 196.85)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0043")
)
(wire (pts (xy 63.50 46.99) (xy 63.50 44.45))
(stroke (width 0) (type default))
(uuid "wr-0044")
)
(label "EN" (at 63.50 44.45)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0044")
)
(wire (pts (xy 63.50 54.61) (xy 63.50 57.15))
(stroke (width 0) (type default))
(uuid "wr-0045")
)
(label "3V3" (at 63.50 57.15)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0045")
)
(wire (pts (xy 165.10 199.39) (xy 165.10 196.85))
(stroke (width 0) (type default))
(uuid "wr-0046")
)
(label "IO0" (at 165.10 196.85)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0046")
)
(wire (pts (xy 165.10 207.01) (xy 165.10 209.55))
(stroke (width 0) (type default))
(uuid "wr-0047")
)
(label "3V3" (at 165.10 209.55)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0047")
)
(wire (pts (xy 171.45 118.11) (xy 171.45 115.57))
(stroke (width 0) (type default))
(uuid "wr-0048")
)
(label "IO12" (at 171.45 115.57)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0048")
)
(wire (pts (xy 171.45 125.73) (xy 171.45 128.27))
(stroke (width 0) (type default))
(uuid "wr-0049")
)
(label "GND" (at 171.45 128.27)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0049")
)
(wire (pts (xy 152.40 34.29) (xy 152.40 31.75))
(stroke (width 0) (type default))
(uuid "wr-0050")
)
(label "SDA" (at 152.40 31.75)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0050")
)
(wire (pts (xy 152.40 41.91) (xy 152.40 44.45))
(stroke (width 0) (type default))
(uuid "wr-0051")
)
(label "3V3" (at 152.40 44.45)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0051")
)
(wire (pts (xy 152.40 52.07) (xy 152.40 49.53))
(stroke (width 0) (type default))
(uuid "wr-0052")
)
(label "SCL" (at 152.40 49.53)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0052")
)
(wire (pts (xy 152.40 59.69) (xy 152.40 62.23))
(stroke (width 0) (type default))
(uuid "wr-0053")
)
(label "3V3" (at 152.40 62.23)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0053")
)
(wire (pts (xy 33.02 138.43) (xy 33.02 135.89))
(stroke (width 0) (type default))
(uuid "wr-0054")
)
(label "CC1" (at 33.02 135.89)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0054")
)
(wire (pts (xy 33.02 146.05) (xy 33.02 148.59))
(stroke (width 0) (type default))
(uuid "wr-0055")
)
(label "GND" (at 33.02 148.59)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0055")
)
(wire (pts (xy 33.02 153.67) (xy 33.02 151.13))
(stroke (width 0) (type default))
(uuid "wr-0056")
)
(label "CC2" (at 33.02 151.13)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0056")
)
(wire (pts (xy 33.02 161.29) (xy 33.02 163.83))
(stroke (width 0) (type default))
(uuid "wr-0057")
)
(label "GND" (at 33.02 163.83)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0057")
)
(wire (pts (xy 63.50 128.27) (xy 63.50 125.73))
(stroke (width 0) (type default))
(uuid "wr-0058")
)
(label "3V3" (at 63.50 125.73)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0058")
)
(wire (pts (xy 63.50 135.89) (xy 63.50 138.43))
(stroke (width 0) (type default))
(uuid "wr-0059")
)
(label "GND" (at 63.50 138.43)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0059")
)
(wire (pts (xy 63.50 143.51) (xy 63.50 140.97))
(stroke (width 0) (type default))
(uuid "wr-0060")
)
(label "3V3" (at 63.50 140.97)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0060")
)
(wire (pts (xy 63.50 151.13) (xy 63.50 153.67))
(stroke (width 0) (type default))
(uuid "wr-0061")
)
(label "GND" (at 63.50 153.67)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0061")
)
(wire (pts (xy 63.50 158.75) (xy 63.50 156.21))
(stroke (width 0) (type default))
(uuid "wr-0062")
)
(label "3V3" (at 63.50 156.21)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0062")
)
(wire (pts (xy 63.50 166.37) (xy 63.50 168.91))
(stroke (width 0) (type default))
(uuid "wr-0063")
)
(label "GND" (at 63.50 168.91)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0063")
)
(wire (pts (xy 55.88 179.07) (xy 55.88 176.53))
(stroke (width 0) (type default))
(uuid "wr-0064")
)
(label "EN" (at 55.88 176.53)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0064")
)
(wire (pts (xy 55.88 186.69) (xy 55.88 189.23))
(stroke (width 0) (type default))
(uuid "wr-0065")
)
(label "GND" (at 55.88 189.23)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0065")
)
(wire (pts (xy 50.80 80.01) (xy 50.80 77.47))
(stroke (width 0) (type default))
(uuid "wr-0066")
)
(label "VBUS" (at 50.80 77.47)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0066")
)
(wire (pts (xy 50.80 87.63) (xy 50.80 90.17))
(stroke (width 0) (type default))
(uuid "wr-0067")
)
(label "GND" (at 50.80 90.17)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0067")
)
(wire (pts (xy 50.80 115.57) (xy 50.80 113.03))
(stroke (width 0) (type default))
(uuid "wr-0068")
)
(label "3V3" (at 50.80 113.03)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0068")
)
(wire (pts (xy 50.80 123.19) (xy 50.80 125.73))
(stroke (width 0) (type default))
(uuid "wr-0069")
)
(label "GND" (at 50.80 125.73)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0069")
)
(wire (pts (xy 55.88 50.80) (xy 58.42 50.80))
(stroke (width 0) (type default))
(uuid "wr-0070")
)
(label "3V3" (at 58.42 50.80)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0070")
)
(wire (pts (xy 55.88 220.98) (xy 58.42 220.98))
(stroke (width 0) (type default))
(uuid "wr-0071")
)
(label "GND" (at 58.42 220.98)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0071")
)
(wire (pts (xy 93.98 215.90) (xy 96.52 215.90))
(stroke (width 0) (type default))
(uuid "wr-0072")
)
(label "GND" (at 96.52 215.90)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0072")
)
(wire (pts (xy 101.60 215.90) (xy 104.14 215.90))
(stroke (width 0) (type default))
(uuid "wr-0073")
)
(label "GND" (at 104.14 215.90)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0073")
)
(wire (pts (xy 101.60 226.06) (xy 104.14 226.06))
(stroke (width 0) (type default))
(uuid "wr-0074")
)
(label "VBUS" (at 104.14 226.06)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0074")
)
(wire (pts (xy 101.60 236.22) (xy 104.14 236.22))
(stroke (width 0) (type default))
(uuid "wr-0075")
)
(label "3V3" (at 104.14 236.22)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid "lb-0075")
)
)

172
finalize.py Normal file
View File

@@ -0,0 +1,172 @@
#!/usr/bin/env python3
"""
Generate a complete importable KiCad project for ESP32-S3 Sensor Node.
Creates netlist, component placement guide, and README.
"""
import os, json
PROJ_DIR = os.path.expanduser("~/Documents/KiCad/10.0/esp32-s3-sensor-node")
SCH = os.path.join(PROJ_DIR, "esp32-s3-sensor-node.kicad_sch")
PRO = os.path.join(PROJ_DIR, "esp32-s3-sensor-node.kicad_pro")
NETS = ["GND","3V3","VBUS","EN","IO0","IO12",
"SDA","SCL","USB_D_P","USB_D_N",
"CC1","CC2","IO2_LED","D1_A","RXD0","TXD0"]
PASSIVES = [
("R1", "Resistor_SMD:R_0603_1608Metric", 55, 30, 0, "IO2_LED", "D1_A", "470"),
("R2", "Resistor_SMD:R_0603_1608Metric", 27, 32, 0, "EN", "3V3", "10k"),
("R3", "Resistor_SMD:R_0603_1608Metric", 16, 7, 0, "IO0", "3V3", "10k"),
("R4", "Resistor_SMD:R_0603_1608Metric", 16, 12, 0, "IO12", "GND", "10k"),
("R5", "Resistor_SMD:R_0603_1608Metric", 48, 24, 0, "SDA", "3V3", "4.7k"),
("R6", "Resistor_SMD:R_0603_1608Metric", 48, 22, 0, "SCL", "3V3", "4.7k"),
("R7", "Resistor_SMD:R_0603_1608Metric", 11, 28, 0, "CC1", "GND", "5.1k"),
("R8", "Resistor_SMD:R_0603_1608Metric", 11, 25, 0, "CC2", "GND", "5.1k"),
("C1", "Capacitor_SMD:C_0603_1608Metric", 30, 28, 0, "3V3", "GND", "100nF"),
("C2", "Capacitor_SMD:C_0603_1608Metric", 30, 25, 0, "3V3", "GND", "100nF"),
("C3", "Capacitor_SMD:C_0603_1608Metric", 30, 22, 0, "3V3", "GND", "10uF"),
("C4", "Capacitor_SMD:C_0603_1608Metric", 26, 35, 0, "EN", "GND", "100nF"),
("C5", "Capacitor_SMD:C_0805_2012Metric", 24, 17, 0, "VBUS", "GND", "10uF"),
("C6", "Capacitor_SMD:C_0805_2012Metric", 24, 23, 0, "3V3", "GND", "10uF"),
]
ICS = [
("J1", "Connector_USB:USB_C_Receptacle_USB2.0_16P",
7, 20, 0, "USB-C", [("SH","GND"),("A1","GND"),("A4","VBUS"),
("A5","CC1"),("A6","USB_D_P"),("A7","USB_D_N"),("B5","CC2")]),
("U2", "Package_TO_SOT_SMD:SOT-223-3Lead_TabPin2",
20, 20, 0, "AMS1117-3.3", [("1","GND"),("2","3V3"),("3","VBUS")]),
("U1", "RF_Module:ESP32-S3-WROOM-1",
38, 20, 0, "ESP32-S3-WROOM-1", [("1","GND"),("2","3V3"),("3","EN"),
("4","SDA"),("5","SCL"),("13","USB_D_N"),("14","USB_D_P"),
("20","IO12"),("27","IO0"),("36","RXD0"),("37","TXD0"),("38","IO2_LED")]),
("J2", "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical",
56, 20, 0, "I2C_Sensor", [("1","3V3"),("2","SDA"),("3","SCL"),("4","GND")]),
("J3", "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical",
25, 3, 0, "PROG", [("1","GND"),("2","RXD0"),("3","TXD0"),("4","3V3")]),
("D1", "LED_SMD:LED_0603_1608Metric",
55, 34, 0, "LED_Green", [("1","GND"),("2","D1_A")]),
]
def create_readme():
md = f"""# ESP32-S3 Sensor Node — L2.1 Training Exercise
## Project Setup
1. **Open in KiCad 10.0+** — File → Open Project → `{PROJ_DIR}`
2. **Schematic** — Already clean (ERC 0). View in Eeschema.
3. **PCB Layout** — Needs routing. Create board in Pcbnew.
## PCB Spec
- **Size:** 65 × 40mm, 2-layer
- **Stackup:** 1.6mm FR4, 1oz copper, HASL
- **Design rules:** trace/space 0.15mm, drill 0.3mm, annular 0.15mm
- **Target fab:** JLCPCB / PCBWay standard
## Component Placement
```
Board: (0,0) bottom-left, (65,40) top-right
Left edge (x≈5-15):
J1 USB-C @ (7, 20) — left edge, USB mating face outward
R7 CC1 pull-down @ (11, 28)
R8 CC2 pull-down @ (11, 25)
Lower-left (x≈15-25, y≈3-15):
J3 PROG header @ (25, 3) — bottom edge
R3 IO0 pull-up @ (16, 7)
R4 IO12 pull-down @ (16, 12)
Center-left (x≈20-30):
U2 AMS1117-3.3 @ (20, 20) — regulator
C5 10µF input @ (24, 17) — near U2 pin 3 (VI)
C6 10µF output @ (24, 23) — near U2 pin 2 (VO)
Center (x≈27-38):
R2 EN pull-up @ (27, 32)
C4 EN cap @ (26, 35)
C1-C3 decoupling @ (30, 22-28) — near U1 3V3 pins
U1 ESP32-S3 @ (38, 20) — main module
Right side (x≈48-58):
R5 SDA pull-up @ (48, 24)
R6 SCL pull-up @ (48, 22)
J2 I2C connector @ (56, 20) — right edge
D1 Status LED @ (55, 34) — top-right edge
R1 LED resistor @ (55, 30)
```
## Antenna Keepout
- **Zone:** x > 46mm, y > 28mm (top-right corner)
- No copper, no traces, no components in this area
- The ESP32-S3-WROOM-1 module has its PCB antenna at the top-right corner
## Routing Order
1. **USB differential pair** — USB_D_P / USB_D_N: 90Ω impedance, length-matched
- Width: ~0.3mm on 1.6mm FR4 (calc with fab's tool)
- Gap: ~0.15mm
- Route on top layer, GND reference on bottom
2. **3V3 power** — 0.5mm traces from U2 VO to U1 3V3 pin + all 3V3 nodes
3. **VBUS power** — 0.5mm from J1 to U2 VI
4. **GND** — Copper pours on both layers with stitching vias
5. **I2C** — SDA/SCL routed together, away from noisy traces
6. **UART** — RXD0/TXD0 to J3
7. **Strapping** — EN, IO0, IO12 to pull resistors
8. **LED** — IO2_LED through R1 to D1
## GND Pour Strategy
- **B.Cu (bottom):** Full copper pour, entire board area
- **F.Cu (top):** Full copper pour EXCEPT antenna keepout zone
- **Antenna keepout:** Keepout zone polygon on both layers (no copper)
- **Stitching vias:** Perimeter every 5mm, plus around module GND pads
## Files
| File | Description |
|------|-------------|
| `*.kicad_sch` | Schematic (ERC 0) |
| `*.kicad_pcb` | PCB layout (empty, needs routing) |
| `*.kicad_pro` | Project file |
| `gen_schematic.py` | Python schematic generator |
| `gen_pcb.py` | Python PCB generator (outline + placement) |
"""
path = os.path.join(PROJ_DIR, "README.md")
with open(path, 'w') as f:
f.write(md)
print(f"Written: {path}")
def create_placement_csv():
"""Placement file for reference."""
path = os.path.join(PROJ_DIR, "placement.csv")
with open(path, 'w') as f:
f.write("Ref,Footprint,X(mm),Y(mm),Rotation,Net1,Net2\n")
for ref, fp, x, y, rot, n1, n2, val in PASSIVES:
f.write(f"{ref},{fp},{x},{y},{rot},{n1},{n2}\n")
for ref, fp, x, y, rot, val, pins in ICS:
nets = ", ".join(f"{p[0]}={p[1]}" for p in pins)
f.write(f"{ref},{fp},{x},{y},{rot},{nets}\n")
print(f"Written: {path}")
def update_project():
"""Update .kicad_pro with correct board path."""
# Read existing
if os.path.exists(PRO):
with open(PRO) as f:
config = json.load(f)
else:
config = {"board": {}}
# Ensure board settings exist
config["board"] = config.get("board", {})
config["board"]["design_settings"] = config["board"].get("design_settings", {})
with open(PRO, 'w') as f:
json.dump(config, f, indent=2)
print(f"Updated: {PRO}")
if __name__ == "__main__":
create_readme()
create_placement_csv()
update_project()
print("\nDone! Open the project in KiCad GUI:")
print(f" File → Open Project → {PROJ_DIR}/esp32-s3-sensor-node.kicad_pro")

147
gen_pcb.py Normal file
View File

@@ -0,0 +1,147 @@
#!/usr/bin/env python3
"""ESP32-S3 Sensor Node — PCB Generator v3. Tabs, like pcbnew."""
import os
T = '\t'
PCB = os.path.expanduser("~/Documents/KiCad/10.0/esp32-s3-sensor-node.kicad_pcb")
NETS = ["GND","3V3","VBUS","EN","IO0","IO12","SDA","SCL","USB_D_P","USB_D_N","CC1","CC2","IO2_LED","D1_A","RXD0","TXD0"]
W,H = 65.0,40.0
def ni(n): return NETS.index(n) if n in NETS else -1
def smd(n,x,y,w,h,net,rot=0):
return f'{T*4}(pad "{n}" smd rect (at {x:.3f} {y:.3f} {rot}) (size {w:.3f} {h:.3f}) (layers "F.Cu" "F.Paste" "F.Mask")' + (f' (net {ni(net)})' if ni(net)>=0 else '') + ')'
def fp(ref,lib,x,y,rot,pads):
p = [f'{T*3}(footprint "{lib}"', f'{T*4}(layer "F.Cu")', f'{T*4}(at {x:.3f} {y:.3f} {rot})',
f'{T*4}(descr "{ref}")',
f'{T*4}(property "Reference" "{ref}" (at {x:.3f} {y-3:.3f}) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))',
f'{T*4}(property "Value" "{ref}" (at {x:.3f} {y+3:.3f}) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))']
p += [f'{T*4}{x}' for x in pads]
p.append(f'{T*3})')
return '\n'.join(p)
FR = '"Resistor_SMD:R_0603_1608Metric"'
FC = '"Capacitor_SMD:C_0603_1608Metric"'
FC8 = '"Capacitor_SMD:C_0805_2012Metric"'
FL = '"LED_SMD:LED_0603_1608Metric"'
FP4 = '"Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical"'
FU = '"Connector_USB:USB_C_Receptacle_USB2.0_16P"'
FE = '"RF_Module:ESP32-S3-WROOM-1"'
FS = '"Package_TO_SOT_SMD:SOT-223-3Lead_TabPin2"'
passives = [
("R1",FR,55,30,0,"IO2_LED","D1_A"), ("R2",FR,27,32,0,"EN","3V3"),
("R3",FR,16,7,0,"IO0","3V3"), ("R4",FR,16,12,0,"IO12","GND"),
("R5",FR,48,24,0,"SDA","3V3"), ("R6",FR,48,22,0,"SCL","3V3"),
("R7",FR,11,28,0,"CC1","GND"), ("R8",FR,11,25,0,"CC2","GND"),
("C1",FC,30,28,0,"3V3","GND"), ("C2",FC,30,25,0,"3V3","GND"),
("C3",FC,30,22,0,"3V3","GND"), ("C4",FC,26,35,0,"EN","GND"),
("C5",FC8,24,17,0,"VBUS","GND"), ("C6",FC8,24,23,0,"3V3","GND"),
]
lines = []
lines.append('(kicad_pcb')
lines.append(f'{T}(version 20260206)')
lines.append(f'{T}(generator "pcbnew")')
lines.append(f'{T}(generator_version "10.0")')
lines.append(f'{T}(general')
lines.append(f'{T*2}(thickness 1.6)')
lines.append(f'{T*2}(legacy_teardrops no)')
lines.append(f'{T})')
lines.append(f'{T}(paper "A4")')
lines.append(f'{T}(layers')
for n,c,t in [(0,"F.Cu","signal"),(2,"B.Cu","signal"),(13,"F.Paste","user"),(15,"B.Paste","user"),
(5,"F.SilkS","user"),(7,"B.SilkS","user"),
(1,"F.Mask","user"),(3,"B.Mask","user"),
(25,"Edge.Cuts","user"),(31,"F.CrtYd","user"),(29,"B.CrtYd","user"),
(35,"F.Fab","user"),(33,"B.Fab","user")]:
lines.append(f'{T*2}({n} "{c}" {t})')
lines.append(f'{T})')
lines.append(f'{T}(setup')
lines.append(f'{T*2}(pad_to_mask_clearance 0)')
lines.append(f'{T*2}(allow_soldermask_bridges_in_footprints no)')
lines.append(f'{T*2}(copper_edge_clearance 0.3)')
lines.append(f'{T})')
# Nets
lines.append(f'{T}(nets')
for i,n in enumerate(NETS):
lines.append(f'{T*2}(net {i} "{n}")')
lines.append(f'{T})')
# Net classes
lines.append(f'{T}(net_class "Default" (clearance 0.15) (trace_width 0.2) (via_dia 0.6) (via_drill 0.3) (add_net "*"))')
lines.append(f'{T}(net_class "POWER" (clearance 0.25) (trace_width 0.5) (via_dia 0.8) (via_drill 0.4) (add_net "3V3") (add_net "VBUS"))')
# Board outline
lines.append(f'{T}(polygon (layer "Edge.Cuts")')
lines.append(f'{T*2}(pts')
lines.append(f'{T*3}(xy 0 0)')
lines.append(f'{T*3}(xy {W} 0)')
lines.append(f'{T*3}(xy {W} {H})')
lines.append(f'{T*3}(xy 0 {H})')
lines.append(f'{T*2})')
lines.append(f'{T})')
# Footprints
# J1 USB-C
lines.append(fp("J1",FU,7,20,0,[
smd("SH",-3,0,2,2,"GND"), smd("A1",-2,5,1.5,1.5,"GND"),
smd("A4",-2,-5,1.5,1.5,"VBUS"), smd("A5",-2,-3,1.5,0.8,"CC1"),
smd("A6",-2,-1,1.5,0.8,"USB_D_P"), smd("A7",-2,1,1.5,0.8,"USB_D_N"),
smd("B5",-2,3,1.5,0.8,"CC2"),
smd("B6",-2,0,1.5,0.8,"USB_D_P"), smd("B7",-2,2,1.5,0.8,"USB_D_N"),
]))
# U2 AMS1117
lines.append(fp("U2",FS,20,20,0,[
smd("1",-2.3,-3,1.5,1,"GND"), smd("2",0,3,2.5,2.5,"3V3"),
smd("3",0,-3,2.5,2.5,"VBUS"),
]))
# U1 ESP32-S3
lines.append(fp("U1",FE,38,20,0,[
smd("1",-8,8,1.5,1.5,"GND"), smd("2",-8,-8,1.5,1.5,"3V3"),
smd("3",-8,-6,1,1,"EN"), smd("4",-8,-4,1,1,"SDA"),
smd("5",-8,-2,1,1,"SCL"), smd("13",8,-4,1,1,"USB_D_N"),
smd("14",8,-2,1,1,"USB_D_P"), smd("20",-8,4,1,1,"IO12"),
smd("27",-8,0,1,1,"IO0"), smd("36",8,-8,1,1,"RXD0"),
smd("37",8,-6,1,1,"TXD0"), smd("38",-8,2,1,1,"IO2_LED"),
]))
# J2 I2C
lines.append(fp("J2",FP4,56,20,0,[
smd("1",0,3.81,1.5,1.5,"3V3"), smd("2",0,1.27,1.5,1.5,"SDA"),
smd("3",0,-1.27,1.5,1.5,"SCL"), smd("4",0,-3.81,1.5,1.5,"GND"),
]))
# J3 PROG
lines.append(fp("J3",FP4,25,3,0,[
smd("1",0,-3.81,1.5,1.5,"GND"), smd("2",0,-1.27,1.5,1.5,"RXD0"),
smd("3",0,1.27,1.5,1.5,"TXD0"), smd("4",0,3.81,1.5,1.5,"3V3"),
]))
# D1 LED
lines.append(fp("D1",FL,55,34,0,[
smd("1",-0.8,0,0.8,0.8,"GND"), smd("2",0.8,0,0.8,0.8,"D1_A"),
]))
# Passives
for ref,lib,x,y,rot,n1,n2 in passives:
lines.append(fp(ref,lib,x,y,rot,[
smd("1",-0.8,0.9,0.8,0.8,n1), smd("2",-0.8,-0.9,0.8,0.8,n2),
]))
# Zones
for layer in ["F.Cu","B.Cu"]:
lines.append(f'{T}(zone (net {ni("GND")}) (layer "{layer}")')
lines.append(f'{T*2}(polygon (pts (xy 0 0)(xy {W} 0)(xy {W} {H})(xy 0 {H})))')
lines.append(f'{T*2}(fill (mode solid))')
lines.append(f'{T})')
# Antenna keepout zones
for layer in ["F.Cu","B.Cu"]:
lines.append(f'{T}(zone (net 0) (layer "{layer}") (priority 1)')
lines.append(f'{T*2}(polygon (pts (xy 46 28)(xy {W} 28)(xy {W} {H})(xy 46 {H})))')
lines.append(f'{T*2}(fill (mode solid))')
lines.append(f'{T})')
lines.append(')')
result = '\n'.join(lines) + '\n'
open(PCB,'w').write(result)
print(f"Written {len(result)} bytes")

21
placement.csv Normal file
View File

@@ -0,0 +1,21 @@
Ref,Footprint,X(mm),Y(mm),Rotation,Net1,Net2
R1,Resistor_SMD:R_0603_1608Metric,55,30,0,IO2_LED,D1_A
R2,Resistor_SMD:R_0603_1608Metric,27,32,0,EN,3V3
R3,Resistor_SMD:R_0603_1608Metric,16,7,0,IO0,3V3
R4,Resistor_SMD:R_0603_1608Metric,16,12,0,IO12,GND
R5,Resistor_SMD:R_0603_1608Metric,48,24,0,SDA,3V3
R6,Resistor_SMD:R_0603_1608Metric,48,22,0,SCL,3V3
R7,Resistor_SMD:R_0603_1608Metric,11,28,0,CC1,GND
R8,Resistor_SMD:R_0603_1608Metric,11,25,0,CC2,GND
C1,Capacitor_SMD:C_0603_1608Metric,30,28,0,3V3,GND
C2,Capacitor_SMD:C_0603_1608Metric,30,25,0,3V3,GND
C3,Capacitor_SMD:C_0603_1608Metric,30,22,0,3V3,GND
C4,Capacitor_SMD:C_0603_1608Metric,26,35,0,EN,GND
C5,Capacitor_SMD:C_0805_2012Metric,24,17,0,VBUS,GND
C6,Capacitor_SMD:C_0805_2012Metric,24,23,0,3V3,GND
J1,Connector_USB:USB_C_Receptacle_USB2.0_16P,7,20,0,SH=GND, A1=GND, A4=VBUS, A5=CC1, A6=USB_D_P, A7=USB_D_N, B5=CC2
U2,Package_TO_SOT_SMD:SOT-223-3Lead_TabPin2,20,20,0,1=GND, 2=3V3, 3=VBUS
U1,RF_Module:ESP32-S3-WROOM-1,38,20,0,1=GND, 2=3V3, 3=EN, 4=SDA, 5=SCL, 13=USB_D_N, 14=USB_D_P, 20=IO12, 27=IO0, 36=RXD0, 37=TXD0, 38=IO2_LED
J2,Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical,56,20,0,1=3V3, 2=SDA, 3=SCL, 4=GND
J3,Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical,25,3,0,1=GND, 2=RXD0, 3=TXD0, 4=3V3
D1,LED_SMD:LED_0603_1608Metric,55,34,0,1=GND, 2=D1_A
Can't render this file because it has a wrong number of fields in line 16.