Integrate Measured ESP32 PCB Geometry

- Add measured F.Fab bounds and USB mouth markers
- Add guarded preservation and regression validation
- Refresh review exports and remove draft presentation labels
This commit is contained in:
2026-09-21 22:54:37 +02:00
parent ab6a8010ba
commit 901afbe754
25 changed files with 20490 additions and 850 deletions
+35 -5
View File
@@ -78,10 +78,38 @@ centre (pad 1), **not a PCB corner**.
- Numbering follows the project's explicit convention, not a generic dual-row
connector's alternating or counterclockwise numbering. Physical numbers do
**not** establish GPIO, supply, or ground assignments.
- Only pads and annotation text are present. **No PCB outline, antenna keepout,
courtyard, USB envelope, mounting holes, or 3D model is guessed.** Text positions
are annotations, not dimensional evidence. Outline registration, antenna extent,
connector offsets/overhang, and assembly height remain unknown.
- User-measured planar geometry is now drawn on `F.Fab`, relative to pad 1:
| Feature | Start (X, Y), mm | End (X, Y), mm |
|---|---|---|
| Main PCB rectangle | (-1.365, -1.365) | (26.725, 54.705) |
| Projecting antenna rectangle | (4.045, -8.255) | (21.675, -1.365) |
| Left USB-C shell mouth span | (2.795, 54.705) | (11.665, 54.705) |
| Right USB-C shell mouth span | (14.195, 54.705) | (23.065, 54.705) |
Main PCB is 28.09 mm wide × 56.07 mm long; antenna projection adds 6.89 mm,
giving 62.96 mm overall. Antenna left/right insets are 5.41/5.05 mm, giving
17.63 mm width and a centre 0.18 mm right of the PCB centre. Both shell widths
are 8.87 mm, with outer-edge offsets 4.16 mm left / 3.66 mm right; mouths are
flush with the bottom PCB edge. Lines indicate mouth spans, not shell depth.
- User accepted approximate 1.365 mm top/bottom pin-centre offsets and supplied
approximately the same left offset. Nominal pin pitch/row spacing are retained;
resulting right margin is 1.325 mm. This 0.04 mm asymmetry follows the selected
modelling datum, not a precision measurement of header asymmetry.
- **No RF keepout, courtyard, full USB envelope, mounting holes or 3D model is
inferred.** Shell depth/height, component/underside heights and plug clearances
remain unknown. The antenna rectangle is physical geometry, not RF guidance.
- Routed embedded U1 now contains the four measured F.Fab shapes and the two
antenna/USB measurement-limit annotations. Generic library captions are omitted
to avoid overlapping existing board labels. Existing footprint fields (including
the historical hidden status/description), reference/value positions, pads,
nets and UUIDs are deliberately retained; this is not a full footprint replacement.
The library is authoritative for measured geometry, not those old status strings.
- Measured board-local silkscreen and PDF/SVG/PNG/3D previews are refreshed.
`update_u1_graphics.py` synchronizes only owned graphics, with deterministic new
UUIDs and lock/concurrent-change guards; `validate_u1_update.py` checks exact
preservation against the pre-update A1 snapshot. A physical 1:1 fit check is
still pending; USB mouths sit 2.295 mm inside the carrier bottom edge.
## Validation and release gates
@@ -89,7 +117,9 @@ Validation performed with KiCad 10.0.6 `pcbnew.FootprintLoad`: both footprints
parsed successfully. Assertions passed for pad counts, all numbered pad positions,
pad shapes/types/sizes/drills, OLED NPTH positions and diameters, both OLED `F.Fab`
rectangle bounds, and absence of courtyards, `Edge.Cuts`, and keepout zones.
HW678 was also checked to contain no graphical shapes. The local Python binding
The HW678 regression now checks the two measured rectangles and two USB mouth
spans, while retaining exact pad geometry checks and prohibiting guessed
courtyards, zones and 3D models. The local Python binding
emitted three startup `PROPERTY_ENUM` assertions (also seen on a version-only
import); these did not prevent loading or the checks from passing.