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:
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user