Adds Purchase column to bom.csv with verified sourcing links and a
companion BOM.md with grouped tables, combo-kit recommendations, and
critical pre-order notes.
Flagged during research:
- U1 package description was wrong (3.5x3.5mm); TPS61088 RHL is
actually VQFN-20 4.5x3.5mm. KiCad footprint is correct, only the
BOM description was off.
- PCB silkscreen shows TPS61088QRHLRQ1 (auto Q1) but the non-Q1
TPS61088RHLR is a drop-in substitute with the same RHL pinout and
is ~5x cheaper at LCSC.
- Pinout verified: schematic pins 1/3/4/5/6/7/8/9/11/12/15 match the
TI datasheet RHL pinout.
Combo kits collapse R1-R5 (E96 sample book), C6/C8/C9 (0805 ceramic
kit), and C4/C5/C10/C11 (22uF 1206 50-pack) into single orders.
Constraint: ESP32 module excluded per user — sourced separately.
Constraint: L1 must handle >=10A; no-name AliExpress inductors avoided.
Directive: If swapping L1 to TDK SPM10065 from Bourns SRP1265, verify
KiCad footprint matches before ordering (10.5x10mm vs 12.6x12.6mm).
Confidence: high
Scope-risk: narrow
Not-tested: actual delivery/fitment of recommended AliExpress parts
* firstpcb.step regenerated from current PCB (DRC-clean board with
four M2 mounting holes). Two component 3D models (R_0805 and
JST_XH_B4B-XH-A) fail to decompress under the Nix-packaged KiCad;
affected components are missing 3D shapes but board body and other
models are present.
* pcbway_export/ contains gerbers (RS-274X Protel, 4.6 mm), separate
PTH/NPTH Excellon drill files, drill maps, gbrjob, and a README
with the stackup/spec.
* firstpcb_pcbway.zip is the upload-ready archive for PCBWay.
* .gitignore updated to drop KiCad autosaves and *.pre-drc-fix locals.
Constraint: PCBWay accepts gerbers with Protel extensions and Excellon
drills, separate PTH/NPTH preferred
Directive: regenerate this package whenever the PCB changes -- the zip
is a derived artifact; the source of truth is firstpcb.kicad_pcb
Insets uniformly 3.00 mm from each board edge. Hole pattern is
75.00 mm (X) x 54.00 mm (Y) center-to-centre on the 81 x 60 mm board.
Hole specs per location:
MH1 (63, 43) - top-left
MH2 (138, 43) - top-right
MH3 (63, 97) - bottom-left
MH4 (138, 97) - bottom-right
drill 2.2 mm (M2 medium-fit clearance), copper keep-out 4.0 mm dia,
NPTH, no solder-mask opening.
Constraint: M2 clearance hole, NPTH (no electrical connection)
Constraint: board outline gr_rect (60,40)-(141,100) -> 81 x 60 mm
Rejected: 2.5 mm inset | pad edge sits exactly on board edge clearance min
Rejected: solder-mask opening on the pad | ESP32 silk at y=96.36
near MH3 produced two silk_over_copper warnings; bare drill (no mask
opening) keeps DRC clean at the cost of less-visible holes
Rejected: putting holes outside Edge.Cuts as silkscreen markers |
user asked for real mounting holes, not indicators
Confidence: high
Scope-risk: narrow
Directive: hole positions are coupled to the board outline -- if the
outline changes, the 3.00 mm uniform inset must be recomputed
Drop 68 errors + 2 unconnected to 0 + 0. Key changes:
* U2 (TPS61088 RHL0020A) footprint: 8 internal "V" stitching vias
re-numbered to 21 (thermal pad), drill widened 0.2032 -> 0.3 mm,
pad 0.5 -> 0.6 mm, net set to GND with solid zone_connect. Two
unnetted internal fp_poly graphics (F.Cu and F.Mask) deleted.
* U2 reference silk moved off the thermal pad (0,-3.5).
* Bridge segment added between U2 pad 20 (AGND) and pad 21 (PGND).
* MotorPower1 pad 2 and A4988 pad 8 set to solid zone_connect.
* +12V zone (B.Cu) connect_pads clearance 0.5 -> 0.2 mm and
thermal_gap 0.5 -> 0.2 mm so fill can pass between A4988 pad
rows and merge the orphan +12V island around pad 8.
* Orphan 0.1 mm F.Cu GND stub at (118.975, 75.325) removed.
Constraint: kicad-cli DRC clean is the acceptance bar
Constraint: U2 RHL0020A footprint edited inline only, source
library copy untouched (causes a lib_footprint_mismatch warning)
Rejected: route a long F.Cu +12V trace pad8 -> U2 area | adds
~28 mm of routing across multiple components; clearance reduction
is a one-line change with no clearance violations
Rejected: drop a stitching via near pad 8 | still leaves a small
B.Cu island; zone clearance fix solves the root cause
Confidence: high
Scope-risk: moderate
Directive: do not raise the +12V zone clearance back to 0.5 mm
without first re-routing pad 8 to merge the islands; otherwise
the unconnected error returns
Not-tested: high-current behavior with 0.2 mm clearance on +12V
(acceptable for the design's 12 V / sub-amp load, may need
review if the load grows)
Snapshot the PDF and SVG exports plus ERC report for the standalone
TPS61088 boost reference schematic used as the integration source.
Confidence: high
Scope-risk: narrow
Snapshot the post-boost-integration design outputs: BOM CSV, schematic
PDF and SVG exports, and the ERC report against the current schematic.
Confidence: high
Scope-risk: narrow
Directive: These are regenerated outputs - refresh them when the schematic changes
Capture ERC outputs from the incremental schematic-build test harness used
during boost integration: per-feature slices (bins, junctions, labels,
no-connects, symbols 0-21, texts, wires) and cumulative/incremental runs.
The generating script lives in __pycache__ only (gitignored); these
reports document which slices were ERC-clean at integration time.
Confidence: medium
Scope-risk: narrow
Capture the working test schematics produced while iterating on the
boost-converter integration: firstpcb_test through firstpcb_test5 plus
firstpcb_a3 (A3 sheet variant) and firstpcb_nolib (stand-alone copy
with no external lib references). Includes ERC reports for the first
three test variants.
Confidence: medium
Scope-risk: narrow
Directive: These are exploration artifacts, not the production design - do not edit; treat as historical references
Drop 24 stale Feb-Mar snapshots and add today's 29 KiCad autosave zips
produced during the boost-converter integration session.
Confidence: high
Scope-risk: narrow
Open and save the board, project, and project-local state files under
KiCad 10. Bumps board format version 20241229 -> 20260206 with the new
tenting/covering/plugging/capping/filling stackup directives, drops the
removed HPGL plot params, and adds the KiCad 10 schema additions to the
project file (component class settings, IPC-2581 revision fields, ERC
rule keys, tuning-profile DRC keys, netclass meta version 5). Also
captures live editor UI state (active layer, column widths, hierarchy
collapsed list) in the .kicad_prl.
Constraint: Project is now opened with KiCad 10 - cannot be downgraded
Confidence: high
Scope-risk: broad
Directive: Do not edit these files with KiCad 9.x - format is one-way
Replace the 3-pos MaiXu MX126-5.0 terminal block footprint on the power
input connector with a 3-pos JST EH vertical header, matching the actual
battery harness. Namespace the RHL0020A footprint reference as
Project:RHL0020A so it resolves through the project-local Project.pretty
library rather than the previous unqualified bare name.
Constraint: RHL0020A footprint lives in the project-local library
Confidence: high
Scope-risk: narrow
Ignore KiCad lock files, the regenerated fp-info-cache, Python bytecode,
and editor/tooling local state (.history, .omc). Delete the previously
tracked fp-info-cache since KiCad regenerates it from the active library
tables on demand.
Confidence: high
Scope-risk: narrow
Previously fp-lib-table only contained a project-local Library.pretty entry
and sym-lib-table only contained the TPS61088 symbol library, which made
the project unable to resolve standard KiCad footprints/symbols on this
machine. Repopulate both tables with the full KICAD10 standard library
set, and add a project-local "Project" footprint library so footprints
like RHL0020A can be referenced via the Project: prefix.
Constraint: KiCad 10 uses KICAD10_FOOTPRINT_DIR/KICAD10_SYMBOL_DIR env vars
Confidence: high
Scope-risk: narrow
Add complete 5V-to-12V boost converter reference design around U2
(TPS61088QRHLRQ1) matching U1's circuit: input caps, compensation
network, soft-start cap, inductor, bootstrap cap, output caps, and
feedback voltage divider. Fix SW/BOOT pin types from power_in to
passive to resolve ERC errors. Update sym-lib-table to point to the
Q1 variant symbol library.
Constraint: Pin types must match U1's passive designation for SW/BST
Rejected: Leaving SW/BOOT as power_in | causes ERC "not driven" errors
Confidence: medium
Scope-risk: moderate
Not-tested: full ERC pass with both U1 and U2 present
Replace THT resistor footprints with 0805 SMD, assign 0805 caps for
small values, 1206 for 22uF bulk caps, SMD electrolytic for C3, Bourns
SRR1260 for L1, and QFN-20 for U1 TPS61088.
Remove the L7805 linear regulator (12V→5V) and its input/output caps,
replacing it with a TPS61088 boost converter circuit (5V→12V) for the
A4988 stepper driver. The ESP32 is now powered directly from the 5V
input rail. Includes integration script and project sym-lib-table for
the custom TPS61088 symbol library.