Repository navigation
Class A, case 2: I2C/SPI sensor board with regulator, decoupling, pull-ups, and external connector - #268
Class A, case 2: I2C/SPI sensor board with regulator, decoupling, pull-ups, and external connector#268JeffMboya wants to merge 11 commits into
Conversation
|
Changes requested — not ready for Class-A qualification [P1] Make the default export valid. The default path does not produce the claimed board: it splits the ground pour into two islands and leaves an unconnected zone. The clean result requires [P1] Provide issue #261 reproducibility evidence. The acceptance criteria require three consecutive byte-identical board and schematic exports, but the PR documents only one iterative run. Add the repeated artifact hashes/files and verify the exact command used to reproduce them. [P1] Resolve the exposed-I/O protection boundary. J3 exposes unprotected 3.3 V GPIO, I2C, SWD, reset, and power. A 5 V host can damage the MCU, and external lines have no fault protection. Add suitable level shifting/protection, or narrow the module interface and obtain explicit review sign-off that this boundary is acceptable. [P1] Apply power and connector net geometry. No netclasses are applied, so the 5 V input, 3V3 rail, and exposed connector paths use default routing geometry. Define suitable widths and clearances, then rerun routing and DRC. [P2] Complete qualification quality. The AMS1117 result remains only an estimate at approximately 0.51 W dissipation for the stated 300 mA load; provide thermal validation or reduce the load/replace the regulator. Eighteen parts lack distributor identity, the input clamp is unverified, and the BOM requires Generic CI passes, but it does not validate the default board export or the qualification acceptance criteria. |
a707666 to
dcf1e32
Compare
|
@SammyOina re your review: agent-made now. Default export passes, three exports hash-match, I/O ESD-protected, classes applied. Open: 17 return vias, BOM identity, part review. Pushed in dcf1e32. |
|
Superseded by #386 which adds proper qualification package, exported KiCad files, and images. |
|
Superseded by #386. |
absmach#39's second test case is an I2C/SPI sensor board with a regulator, decoupling, pull-ups and an external connector. It gets its own pull request rather than sharing one with four other boards, so the board can be reviewed on its own evidence. A two-layer field sensor node: JST-fed 5 V into an AMS1117-3.3, an STM32G030 reading a BME680 and a 24LC256 over one I2C bus with one pair of 4.7 kOhm pull-ups, and a 4-pin JST break-out for the host UART with clamps on both lines. 19 components, 10 nets, 78.85 x 43.50 mm. Protection order is the point of the front end: F1 polyfuse first, then D1 SS14 series Schottky, so a fault current meets a part that resets and a reversed supply meets a blocking diode. Measured on this tree, not carried over: 10 of 10 nets closed, nothing open, 403.6 mm of copper over 131 segments and 11 vias, no track under the 0.127 mm floor, no via under the 0.3 mm drill or 0.13 mm ring, no via inside a pad, and `kicad-cli pcb drc` reports zero errors with one advisory dangling-track warning. The routing verdict is `routed` and the package validates as fabrication-ready. The nine `annular_width` errors this board reported on 16 October were absmach#216 -- the net classes Synth wrote into the project asked for a 0.6 mm via over a 0.4 mm drill, a 0.10 mm ring against the 0.13 mm the same file stated. Nothing about the board changed; `main` stopped contradicting itself. What is left is in the README's Limitations, and it is honest about the four floating `U4` straps on the 24LC256 and the eleven layer changes with no ground return via within 1.53 mm. Carved out of the five-board bundle in absmach#196.
A board carrying a programmable MCU with no way to program it, and an I2C
sensor module that exposed no I2C. 19 components to 37.
The defect first: U4's A0, A1, A2 and WP were all floating. Four CMOS inputs
with no DC path, which leaves the EEPROM's address and its write-protect state
undefined -- the device might answer anywhere or nowhere. All four to ground:
address 0x50, write enabled. That is four E-SYNTH-CONNECT-008 findings gone.
Then what makes it usable:
- J3, a 1x20 header, with the pinout written into the source and the README.
Power, both bus lines, SWD, NRST and ten spare GPIOs. SDA and SCL are the
same bus the on-board devices sit on with the pull-ups already fitted, so
a host can drive the sensor directly and hold the MCU in reset through pin
9. That is what makes this a module as well as a node.
- SWD on pins 7 and 8. The board had no programming access at all; PA13 and
PA14 went nowhere.
- Two rails declared with `power`, so V5_IN and V3V3 are named and checkable.
- D4 clamps the input behind the fuse. A field node's supply arrives on a
cable, which is where surges come from, and the polyfuse limits what the
clamp has to conduct.
- C2 is 10 uF rather than 1 uF. The AMS1117 wants that much on its output to
be stable, and E-SYNTH-POWER-006 was right to say so.
- C7, C8 and C9 bypass the regulator input and both external connectors.
One E-SYNTH-POWER-001 and three E-SYNTH-POWER-004 findings cleared.
- D5 and R4 1k say the 3V3 rail is up, which is the first question when a
node is dark.
- Five test points -- both rails, both bus lines, and a ground reference --
four corner mounting holes and two fiducials.
- J1 on the left edge, J2 on the right and J3 along the bottom. Not
cosmetic: without the edge hints the board spread out and the router left
V3V3 open, with C3.1 reaching 4 of its 20 pads.
`synth validate` reports zero errors.
Measured on this tree:
23 of 23 nets closed, none open
1191.7 mm over 273 segments and 65 vias
kicad-cli pcb drc: 0 errors, 0 unconnected, 2 warnings
routing verdict: routed, fabrication-ready
Measured with `--place-route-iterate`, and that matters. Of the five candidate
placements, four route cleanly and one does not, and the default path takes
the first -- which happens to be the one that cuts the ground pour into two
islands with no via between them. Every net is connected there too; what is
broken is a region of the pour, which the routing report has no way to say.
Filed as absmach#279, and the README warns that a reviewer re-running without the
flag gets a refused package.
The README is also honest that J3 is 3V3 CMOS and unprotected, that a 5 V host
needs a level shifter of its own, and that thirteen of the package's pins are
not brought out. W-SYNTH-THERMAL-001's 107 C is the AMS1117's rated maximum rather
than this board's 510 mW -- absmach#274.
Replaces the hand-edited source with what an agent produced from the prompt in agent-run/prompt.md, driving synth mcp with only Read, Write and Edit beside it. The board is now a USB-C powered and programmed module with a GPIO header, a UART break-out, ESD protection on every exposed line and four indicators.
The README reports what was measured on the exported files and what is open, and compares three exports from the source by hash. agent-run holds the prompt, every tool call, and the design notes, pin map and power budget the agent wrote.
dcf1e32 to
21cb4ce
Compare
…ee times Four layers, 93.4 x 67.7 mm, 57 parts: routed with 0 KiCad DRC errors and 0 unconnected items; three exports agree on every file hash. Adds the export, reports, fabrication package with an orderable BOM, a reproduce kit pinned to the Synth PR stack, and the tools.
…uses JeffMboya reviewed the regulator, Schottky, polyfuse, TVS, zener, connectors, switch, mounting hole and generic passives on 2026-11-01.
… listing Nexperia PTVS6V0S1UR,115 is LCSC C294622; the BOM and the sourcing table carry it.
…117 datasheet; re-record the IR snapshots with the part reviewers The regulator notes use the Advanced Monolithic Systems datasheet (800 mA, thetaJA 90 C/W, 15 V input maximum, 22 uF tantalum output). The schematic, reports, fab package and README come from three fresh identical exports. Reviewer records now appear in the lowered IR of three fixtures.
fab_package.sh exported only F.Cu and B.Cu, so the four-layer board's zip held two copper layers. It now exports In1.Cu and In2.Cu; the Gerber content hash is 169492d786 on all three exports.
…report Four layers, 0 Danger; annular-ring and solder-mask warnings listed in the README.
What type of PR is this?
This is a feature.
What does this do?
Adds
qualification/class-a/i2c-sensor-node/: a four-layer STM32G030 sensor node with BME680 and 24LC256, powered from 5 V.Which issue(s) does this PR fix/relate to?
Resolves #261. Related Issue #39, #273, #274, #275.
Have you included tests for your changes?
No. The board is data; the README compares three exports by hash.
Did you document any new/modified feature?
Yes. The README gives measurements, review answers and reproduction;
agent-run/holds the tools and export table.Notes
Needs Synth PRs #370, #388, #394, pinned in
reproduce/pins.env. JLCPCB DFM and quote pending.