
Lamp rev a
laminarforge/laminarforge-cad
Parametric CAD models (Rust + vcad) for LaminarForge open-source LAMP diagnostics device

Parametric CAD models (Rust + vcad) for LaminarForge open-source LAMP diagnostics device
Lamp rev b controller is an open-source printed circuit board by laminarforge, from the laminarforge/laminarforge-cad repository on GitHub. It is a 4-layer board of 118 × 94 mm with 153 parts on 73 nets, routed with 1,003 tracks and 173 vias.
It is built around the ESP32-S3-WROOM-1-N16, ADS1115IDGSR and CD74HC4051M, with the DB128H-5.08-2P-BK-S among its other parts. Its parts include 37 resistors, 20 connectors, 17 capacitors, 8 ICs and 3 diodes. It belongs with the lEDs and displays boards and the ESP32 boards of this library.
This directory is the source package for the real one-board LAMP PCBA.
The goal is one 4-layer ESP32-S3 board that can be checked, laid out in KiCad, exported for JLCPCB, and iterated without going back to the old generated-layout workflow.
contract.toml: board requirements, rails, nets, GPIO map, test points, and verification gates.parts.toml: selected schematic parts plus explicit fab-blocking part-selection gaps.power_architecture.toml: locked Rev A power topology and the explicit no-buck decision.optical_architecture.toml: locked Rev A optical topology, wavelength, detector, and front-end decision.optical_mode.md: human-readable optical-mode decision and bench validation gate.placement.toml: locked starting refs, coordinates, test points, and eight-slot optical geometry.pin_nets.toml: conservative footprint pad-to-net assignments for known package pinouts.firmware_handoff.toml: ESP32-S3 module-pin to SoC-GPIO handoff, slot map, and firmware bring-up notes.electrical_validation.toml: pre-fab electrical validation assumptions, derating gates, current-path checks, and simulation handoff sources.routing_plan.toml: routing phase order, current unrouted count, autorouter policy, and release gates.routing_seed.toml: DRC-clean starter traces emitted into the materialized board.copper_zones.toml: controlled KiCad copper pours, starting with front/back GND zones.fab_release.toml: repeatable KiCad CLI export contract for Gerbers, drill files, assembly files, STEP, and release reports.lamp_rev_a.kicad_sch: KiCad schematic shell for the one-board Rev A electrical architecture.lamp_rev_a.kicad_pcb: materialized KiCad board with the Rev A outline, 4-layer stack, placed footprints, test points, and optical-slot guides.lamp_rev_a.kicad_pro: KiCad project shell.sym-lib-table / fp-lib-table: project-local library tables pointing at the locked pcb/lib/lcsc symbols and footprints.lamp_rev_a.kicad_dru: custom KiCad design rules for power, heater, analog, and USB constraints.kibot.yaml: intended fab/report export pipeline once the schematic and placed board exist.Rust should validate contracts and automate exports. KiCad should own the schematic and PCB layout.
contract.toml + parts.toml
-> cargo run --release --bin lamp_pcba_check
-> placement.toml refs and zone checks
-> pin_nets.toml trusted pad assignments
-> firmware_handoff.toml firmware pin/slot handoff checks
-> electrical_validation.toml power, derating, heater, GPIO, USB, and simulation checks
-> cargo run --release --bin lamp_rev_a_materialize_board
-> cargo run --release --bin lamp_rev_a_seed_routes_from_drc when reseeding short safe traces
-> cargo run --release --bin lamp_rev_a_route_greedy for DRC-gated route iteration
-> kicad-cli pcb drc --refill-zones for zone-connected routing checks
-> KiCad schematic capture in lamp_rev_a.kicad_sch
-> KiCad ERC
-> footprint/BOM/JLC field lock
-> KiCad placement cleanup from the materialized board
-> KiCad interactive routing
-> KiCad DRC + schematic/PCB parity
-> KiBot/KiKit fab outputs
-> physical bring-up measurements
-> update contract.toml for the next revisionF.Cu, In1.Cu ground plane, In2.Cu power plane, B.Cu.placement.toml: 91 top-side footprints, 16 test points, and 8 optical slots at 12 mm pitch.Run:
cargo run --release --bin lamp_pcba_check
cargo run --release --bin lamp_rev_a_electrical_validate
cargo run --release --bin lamp_rev_a_spice_check
cargo run --release --bin lamp_rev_a_materialize_board
cargo run --release --bin lamp_rev_a_fab_preview
cargo run --release --bin lamp_rev_a_fab_release
cargo run --release --bin lamp_rev_a_route_report
cargo build --release --bin lamp_rev_a_materialize_board --bin lamp_rev_a_route_greedy
LAMP_ROUTE_MAX_ACCEPTS=10 LAMP_ROUTE_MAX_TRIALS=160 target/release/lamp_rev_a_route_greedylamp_rev_a_spice_check requires ngspice. main CI installs it, runs the
operating-point check against the generated power-path netlist, then runs
lamp_rev_a_fab_release on a KiCad-enabled macOS runner and uploads
lamp-rev-a-pcba-fab-release-<commit> containing the validated fab release
directory and upload bundles.
The current schematic is an architecture shell, not a fabrication-ready circuit.
The checker should not report fab-blocking part-selection gaps. The board now
materializes all selected parts into KiCad with zero physical DRC violations
with a DRC-clean starter route seed and GND copper pours. The route seed is
currently at 112 accepted segments, zero real unrouted ratlines after KiCad zone
refill, and one ignored KiCad self-zone report item for the front GND pour. The
active work is schematic completion, schematic/PCB parity, fab export validation,
and bench validation.
lamp_rev_a_fab_release emits JLCPCB machine-assembly BOM/CPL files separately
from through-hole/manual-install parts, then verifies that required Gerbers,
drills, reports, position files, review STEP output, and the order audit report
are present and non-empty. It also emits validated upload bundles under
fab_release/bundles/: fabrication Gerbers/drills, assembly CSVs, and review
artifacts. The release also includes a source snapshot bundle with the exact
KiCad and TOML inputs used to generate the fab package. The review package
includes a bring-up checklist generated from the configured Rev A test points
and a firmware handoff generated from the checked ESP32-S3 pin map. It also
emits an electrical-validation report, a first-order SPICE power-path handoff,
a machine-checked full-speed USB DP/DN routing sanity gate, a
simulation/analysis handoff, generated PDN current-path and thermal power CSVs,
a structured first-article measurement CSV for current-limited rail bring-up,
component derating/stress CSVs for the high-risk electrical parts,
an EMC/ESD pre-compliance CSV for USB, heater, 12 V, Wi-Fi, and analog noise risks,
a USB-C power-budget CSV for Rd/default-current, VBUS/+5V/+3V3 current, inrush linkage, and first-article rail coverage,
a procurement-readiness CSV for critical part ordering, machine/manual assembly, and external safety-component evidence,
a procurement-substitution CSV locking safety-critical LCSC order codes and requiring engineering review for swaps,
a schematic source/parity CSV tying the architecture-shell KiCad schematic to contract modules, selected parts, and required nets,
a connector/polarity CSV for USB-C, manual connectors, diodes, MOSFETs, and orientation-sensitive IC pinouts,
an assembly-orientation CSV for machine-placed ICs, polarity-sensitive parts, CPL centroids, and pin-1 evidence,
an assembly-inspection CSV requiring AOI/photo evidence, linked validation gates, and stop/rework actions for critical parts,
an assembly-fixture/readability CSV requiring visible silkscreen labels, fixture references, photo evidence, and rework actions for critical connectors/test points,
a machine-checked assembly-parity CSV for BOM/CPL/manual/position reference consistency,
a fabrication-capability CSV for board-house stackup, geometry, drill, via, and routing process limits,
an I2C/ADS1115 bus validation CSV for pull-up, rise-time, device identity, and stuck-low coverage,
a heater-protection coordination CSV for PTC, terminal, MOSFET, TVS, external cutoff, and current-limit coverage,
an external-harness safety CSV for 12 V adapter, heater leads, inline cutoff, wire gauge, polarity, and strain relief,
a mechanical-access CSV for service connector, heater terminal, MOSFET, boot/reset, analog, and I2C probe reachability,
an ESP32-S3 startup-safety CSV for boot straps, reset, and heater fail-closed defaults,
a manufacturing-test coverage CSV for critical test points, firmware diagnostics, and release traceability,
a calibration-readiness CSV for heater, ADC, optical, sensor-bus, negative-control, and firmware identity records,
a validation-traceability CSV tying each gate to artifacts, manifest evidence, CI steps, and pass criteria,
a simulation-input CSV for PDN, electrothermal, USB/SI, and EMC handoff readiness,
the first routed-geometry DC PDN simulation CSV for voltage drop and I2R loss,
a lumped thermal-margin simulation CSV for component and routed-copper steady-state estimates,
a heater/reaction-block thermal transient CSV for warm-up, hold, duty, overshoot, and energy estimates,
an ngspice ESP32-S3 reset/boot-strap timing netlist/CSV for EN, GPIO0, and boot-sensitive output startup checks,
an ngspice USB/VBUS hot-plug and 3.3 V startup/inrush netlist/CSV for rail startup envelope checks,
an ngspice 3.3 V rail load-step transient netlist/CSV for ESP32 burst-load sag,
an ngspice power-domain fault/backfeed netlist/CSV for 12 V heater-domain isolation assumptions,
an ngspice optical analog front-end transient netlist/CSV for TIA/ADC signal-envelope range,
an optical crosstalk/mux-settling CSV for slot isolation and ADC sampling assumptions,
an optical signal/noise margin CSV for threshold and negative-control drift assumptions,
and a thermistor/ADC transfer CSV for heater temperature-sense range, sensitivity, and fault coverage,
and a checksum manifest for the fabrication, assembly, and source bundles.
It also mirrors the board STEP review model to output/lamp_rev_a_board.stp;
run the CAD conversion for lamp_rev_a_board to create
output/lamp_rev_a_board.usdz for the Agentic FlowState CAD tab.
Current KiCad checks:
kicad-cli sch erc pcb/lamp_rev_a/lamp_rev_a.kicad_sch \
-o pcb/lamp_rev_a/reports/erc.json --format json
kicad-cli pcb drc --refill-zones --format json \
--output pcb/lamp_rev_a/reports/drc.json \
pcb/lamp_rev_a/lamp_rev_a.kicad_pcbExpected DRC state at this stage: 0 violations and no real unrouted
connections. KiCad may still report one self-referential front-GND-zone
unconnected_items entry; lamp_rev_a_route_report ignores only that exact
self-zone artifact and still reports real ratlines by net.
lamp_rev_a_seed_routes_from_drc is intentionally conservative: it only seeds
short direct routes that preserve zero physical DRC violations. Longer routes
must be added deliberately in routing_seed.toml, accepted by
lamp_rev_a_route_greedy, or finished in KiCad. lamp_rev_a_route_greedy
mechanically tries candidate routes, runs KiCad DRC, and keeps only candidates
that reduce unconnected_items while preserving zero physical DRC violations.
Do not accept autorouter output by itself. Use it to expose bad placement or constraint problems, then finish and review the layout in KiCad.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100nF | lcsc:C0603 | C10, C11, C12, C13, C14, C15, C16, C17 |
| 8 | 10k 0.1% | lcsc:R0805 | R10, R11, R12, R13, R14, R15, R16, R17 |
| 8 | 2-pin NTC header | lcsc:PINHEADER_1X02_2.54MM | J4, J5, J6, J7, J8, J9, J10, J11 |
| 8 | 4.7k | lcsc:R0805 | R40, R41, R42, R43, R44, R45, R46, R47 |
| 5 | 10k | lcsc:R0805 | R22, R23, R24, R48, R49 |
| 4 | DB128H-5.08-2P-BK-S | lcsc:TERM-BLOCK-5.08-2P | J2, J12, J13, J15 |
| 3 | 22uF rail bulk | lcsc:C1206 | C1, C5, C6 |
| 2 | 100k/100k VBUS sense | lcsc:R0805 | R3, R4 |
| 2 | 1k | lcsc:R0805 | R30, R31 |
| 2 | 22uF AP63203 output | lcsc:C1206 | C7, C8 |
| 2 | 33R | lcsc:R0805 | R20, R21 |
| 2 | 5.1k | lcsc:R0805 | R1, R2 |
| 2 | 50mR DNP option | lcsc:R0805 | R25, R26 |
| 2 | AUX_ANALOG_IN | lcsc:TESTPOINT_SMD_1.5MM | TP_ADS_AIN3, TP_AUX_ANALOG |
| 2 | IRLB3813PBF TO-220 12V prototype | lcsc:TO-220-3_VERTICAL | Q1, Q2 |
| 2 | LED0603 status | lcsc:LED0603-RD | D2, D3 |
| 2 | LED_CURRENT_SENSE | lcsc:TESTPOINT_SMD_1.5MM | TP_ADS_AIN2, TP_LED_SENSE |
| 2 | THERM_MUX_OUT | lcsc:TESTPOINT_SMD_1.5MM | TP_ADS_AIN0, TP_THERM_OUT |
| 1 | +3V3 | lcsc:TESTPOINT_SMD_1.5MM | TP_3V3 |
| 1 | +3V3_ANA | lcsc:TESTPOINT_SMD_1.5MM | TP_3V3A |
| 1 | +5V | lcsc:TESTPOINT_SMD_1.5MM | TP_5V |
| 1 | 0.1R 1% >=1W LED current shunt | lcsc:R2512 | R53 |
| 1 | 0805 ferrite bead / approved analog rail link from +3V3 to +3V3_ANA | lcsc:R0805 | FB1 |
| 1 | 0R LED_SUPPLY feed link from VIN_PROTECTED | lcsc:R0805 | R52 |
| 1 | 0R VDRV feed link from VIN_PROTECTED, 12 V population only | lcsc:R0805 | R55 |
| 1 | 100R LED DIM series | lcsc:R0805 | R50 |
| 1 | 100k LED DIM pulldown | lcsc:R0805 | R51 |
| 1 | 100nF bootstrap | lcsc:C0603 | C9 |
| 1 | 10k LED_FAULT_N pull-up | lcsc:R0805 | R54 |
| 1 | 22uF 50V VIN buck input | lcsc:C1206 | C4 |
| 1 | 22uF >=10V +5V buck output | lcsc:C1206 | C2 |
| 1 | 22uF AP63203 input | lcsc:C1206 | C3 |
| 1 | 2x3 UART/programming header | lcsc:PINHEADER_2X03_2.54MM | J21 |
| 1 | ADS1115IDGSR | lcsc:MSOP-10_L3.0-W3.0-P0.50-LS5.0-BL | U4 |
| 1 | AUX_IO0_THERMAL_CUTOFF_OK | lcsc:TESTPOINT_SMD_1.5MM | TP_CUTOFF |
| 1 | Analog optical diagnostic header | lcsc:PINHEADER_1X06_2.54MM | J23 |
| 1 | CAM_CS_N | lcsc:TESTPOINT_SMD_1.5MM | TP_CAM_CS |
| 1 | CAM_FRAME_INT | lcsc:TESTPOINT_SMD_1.5MM | TP_CAM_FRAME |
| 1 | CAM_PWDN_N | lcsc:TESTPOINT_SMD_1.5MM | TP_CAM_PWDN |
| 1 | CAM_RESET_N | lcsc:TESTPOINT_SMD_1.5MM | TP_CAM_RESET |
| 1 | CART_PRESENT_N | lcsc:TESTPOINT_SMD_1.5MM | TP_CART |
| 1 | CD74HC4051M | lcsc:SOIC-16_L9.9-W3.9-P1.27-LS6.0-BL | U5 |
| 1 | CUI/Bel P7805-2000-S 5V 2A 8-36V buck module; hand-place no-substitution | lcsc:P78-2000-S_SIP3 | U7 |
| 1 | DB128H-5.08-2P high-current heater cutoff loop/link | lcsc:TERM-BLOCK-5.08-2P | J24 |
| 1 | Diodes AP63203WU-7 fixed 3.3V 2A buck | lcsc:TSOT26_AP63203WU | U3 |
| 1 | ESP32-S3-WROOM-1-N16 | lcsc:WIFIM-SMD_ESP32-S3-WROOM-1-N8 | U1 |
| 1 | ESP_EN | lcsc:TESTPOINT_SMD_1.5MM | TP_EN |
| 1 | ESP_GPIO0_BOOT | lcsc:TESTPOINT_SMD_1.5MM | TP_BOOT |
| 1 | EXPOSURE_ACTIVE_IN | lcsc:TESTPOINT_SMD_1.5MM | TP_EXPOSURE |
| 1 | External camera sync header | lcsc:PINHEADER_1X06_2.54MM | J17 |
| 1 | FAN_PWM | lcsc:TESTPOINT_SMD_1.5MM | TP_FAN_PWM |
| 1 | FAN_TACH | lcsc:TESTPOINT_SMD_1.5MM | TP_FAN_TACH |
| 1 | FRAME_TRIG_OUT | lcsc:TESTPOINT_SMD_1.5MM | TP_FRAME_TRIG |
| 1 | Fan PWM/tach header | lcsc:PINHEADER_1X04_2.54MM | J20 |
| 1 | GND | lcsc:TESTPOINT_SMD_1.5MM | TP_GND |
| 1 | HEATER0_GATE | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER0_GATE |
| 1 | HEATER0_LOW | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER0_LOW |
| 1 | HEATER0_PWM | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER0_PWM |
| 1 | HEATER1_GATE | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER1_GATE |
| 1 | HEATER1_LOW | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER1_LOW |
| 1 | HEATER1_PWM | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER1_PWM |
| 1 | HEATER_ARM | lcsc:TESTPOINT_SMD_1.5MM | TP_HEATER_ARM |
| 1 | I2C expansion header | lcsc:PINHEADER_1X04_2.54MM | J22 |
| 1 | I2C_SCL | lcsc:TESTPOINT_SMD_1.5MM | TP_I2C_SCL |
| 1 | I2C_SDA | lcsc:TESTPOINT_SMD_1.5MM | TP_I2C_SDA |
| 1 | INA180A1IDBVR gain 20 LED current sense | lcsc:SOT-23-5 | U10 |
| 1 | LATCH_LOCKED_N | lcsc:TESTPOINT_SMD_1.5MM | TP_LATCH |
| 1 | LED NTC/ID header | lcsc:PINHEADER_1X04_2.54MM | J16 |
| 1 | LED_EXC_EN | lcsc:TESTPOINT_SMD_1.5MM | TP_LED_EN |
| 1 | LED_EXC_PWM | lcsc:TESTPOINT_SMD_1.5MM | TP_LED_PWM |
| 1 | LED_SUPPLY | lcsc:TESTPOINT_SMD_1.5MM | TP_LED_SUPPLY |
| 1 | LED_SYNC_OUT | lcsc:TESTPOINT_SMD_1.5MM | TP_LED_SYNC |
| 1 | LID_CLOSED_N | lcsc:TESTPOINT_SMD_1.5MM | TP_LID |
| 1 | Lid/cartridge/cutoff interlock header | lcsc:PINHEADER_1X06_2.54MM | J19 |
| 1 | Mean Well LDD-700H 700mA CC buck LED driver; LDD-1000H C17529736 DNP thermal-validation alternate | lcsc:MEANWELL_LDD-300-1000H_THT | U8 |
| 1 | RUEF500K/PTC | lcsc:FUSE2920 | F1 |
| 1 | SD_CS_N | lcsc:TESTPOINT_SMD_1.5MM | TP_SD_CS |
| 1 | SMBJ18A footprint option | lcsc:SMB_L4.6-W3.6-LS5.3-RD | D1 |
| 1 | SN74LVC1G08DBVR LED_EXC_PWM AND LED_EXC_EN | lcsc:SOT-23-5 | U9 |
| 1 | SPARE_GPIO42 | lcsc:TESTPOINT_SMD_1.5MM | TP_SPARE42 |
The 128 most common of 153 parts.

laminarforge/laminarforge-cad
Parametric CAD models (Rust + vcad) for LaminarForge open-source LAMP diagnostics device

jacob-jarick/esp-solar-contoller
esp8266 and esp32 based solar controllers targetting fronius inverter users


gavin4d/dangerDonut
Danger Donut is a work-in-progress 150 gram melty brain combat robot.

wszeto9/ESP32-S3-HUB75-Driver
This board serves as the Matrix Display driver for MIT's 2.007 gameboards in Spring 2024 and Spring 2025. The board can take 4 button inputs, Stemma-QT I2C sensors, and breaks out 8 GPIO pins for future use.

jrtaylor71/Smart-Thermostat-Alt-Firmware
A comprehensive, feature-rich smart thermostat firmware for ESP32-S3 microcontrollers with touch display, web interface, and Home Assistant integration.


sebif2004/WetterStationPCB
Wetterstation controller (Akku+Buck-Boost-converter + ESP32/s3)

AMIFEX-IT/ESP32-S3-SMALL
Custom ESP32-S3 development board designed in KiCad, featuring the ESP32-S3-WROOM-1-N8R8 module, custom schematic, PCB layout, and supporting hardware design files
It measures 118 × 94 mm and has 4 copper layers, 1.6 mm thick.
153 parts, built around the ESP32-S3-WROOM-1-N16, ADS1115IDGSR, CD74HC4051M and DB128H-5.08-2P-BK-S. 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 laminarforge/laminarforge-cad repository on GitHub, at the commit this page was made from: the board is pcb/lamp_rev_b_controller/lamp_rev_b_controller.kicad_pcb and its schematic pcb/lamp_rev_a/lamp_rev_a.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 laminarforge before reusing the design.