Skip to content

docs(parts): fill the gaps a build order exposed - #251

Merged
jewbetcha merged 9 commits into
open-flight:mainfrom
HuggeK:docs/parts-active-cooler
Sep 20, 2026
Merged

jewbetcha merged 9 commits into
open-flight:mainfrom
HuggeK:docs/parts-active-cooler

Conversation

@HuggeK

@HuggeK HuggeK commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Parts-list maintenance from a build: new rows for the parts a build turned out to need, three rows that were unnamed or unlinked now named, two clarified rows, and the cost-summary arithmetic that follows.

Change Section
Add Raspberry Pi Active Cooler (SC1148), ~$8 Power & Accessories
Add jumper wires (female/male, 75 mm), $2 Power & Accessories
Add STEMMA QT / Qwiic-to-Qwiic cable as the LIS3DH-to-DS3502 link, ~$1 Optional (next to the DS3502)
Add Qwiic-to-Dupont single cable (Adafruit 4397), ~$1 Optional Enclosure Inclinometer
Add an X1202/X1206 power button row: Adafruit 1445 16 mm momentary button + 1152 JST XH quick-connect leads, solder-free, ~$6, and say the button must be momentary Optional
Add an Amazon link to the X1202 UPS HAT row Optional
Add a DC barrel-jack adapter row for the X1202 (6-18V, Geekworm's "≥3A", and what that current buys at each voltage), with Mouser and Amazon examples, ~$15 Optional
Spell out that the 27W USB-C supply must be the 5V 5A one and warn against USB-C extensions in the case Power & Accessories
Note that the UPS HAT + any adequate barrel-jack supply replaces the 27W supply, and is the better input for a cased build Power & Accessories + Optional
Add UPS safety notes: no charging below 0 °C, never USB-C and barrel jack together, USB-C power into the UPS board not the Pi Power & Accessories + docs/build/battery.md
Name the jumper wires as female/female, 300 mm (SparkFun PRT-09389; was Any), sized from the v2 enclosure CAD Sound Trigger + Angle Radar
Describe the DS3502 digital potentiometer intended role (was TODO) and its place further down the Qwiic chain Optional accessories
Note the PR #221 internal-trigger path as an optional alternative to the sound trigger Sound Trigger + Cost Summary
Name the IWR6843LEVM cable as micro-USB, drop the "check your board revision" hedge Angle Radar + docs/setup/raspberry-pi.md
Spell out that the Qwiic-to-Dupont kit avoids soldering Optional Enclosure Inclinometer
Add an optional extras line and a complete build total, ~$687, plus the same pair for a build with the X1206 instead, ~$699 Cost Summary
Fill in the X1206 row: $52, on-board 21700 holders, unprotected cells only, 9-18V input, same button header Optional
Remove the Tripod Mount row (not needed) Optional
Add a Cable lengths section measured on the v2 enclosure CAD: every jumper, Qwiic, USB and button-lead run with straight-line, routed and buy lengths; size the micro-USB at 250-300 mm; settle the DS3502 Qwiic-to-Qwiic at 100 mm; confirm the 1152 button leads reach on the straight run new section + the affected rows
Add an enclosure filament line (~600 g PETG, ~$15, estimated from the CAD; PETG for UV and heat resistance outdoors) to the complete-build totals Cost Summary
Add an Enclosure Hardware table: 24 + 4 + 2 PEM IUTB inserts, the Keystone / APM HEXSEAL screws and washers, the eight M2.5 × 35 through-bolts and the two kickstand ball plungers, with counts, where each goes, and ~$35 in the totals new section + Cost Summary
Reconcile the totals Cost Summary

Jumper wires, named and split by gender

Three rows previously said Any for their link, which left both the gender and the length to the builder and kept the wires out of the shared Mouser project. Both genders are needed, for different reasons.

Gender Part Mouser P/N Used for
F/F, 300 mm SparkFun PRT-09389 (10 × 12 in, $4.95) 474-PRT-09389 (unverified) Sound-trigger runs, OPS243 to Pi ground and UART, and the sound detector GATE → Pi BCM17 wire that the IWR6843 path uses to timestamp impact (the IWR6843 itself is on USB)
F/M, 75 mm Adafruit 1953 (20-wire ribbon, $1.95) 485-1953 Header-pin extension on the Pi 5V rail

Why female/female for the trigger wiring: the Pi GPIO header, the OPS243 J3 header, and headers soldered onto the SEN-14262 are all male pins, so both ends have to be female. The detector GATE → BCM17 wire that the IWR6843 setup adds (the radar itself is on USB; the wire gives the Pi the impact edge to align the radar frames to) comes out of the same strip, so that row points at the same part rather than repeating the spec.

Why female/male as well: these are pin extensions — the female end goes onto a Pi GPIO pin and the male end re-presents that pin for a second connector. The Touch Display 2 supplied 3-pin power cable lands on header pins 2 (5V) and 6 (GND) and its shell spans pins 2/4/6, so it covers both 5V pins. The extension re-presents one for the OPS243.

On length: 300 mm for F/F, 75 mm for F/M, and why they differ

The F/F row was first written around Adafruit's 75 mm strip (794, Mouser 485-794), which cannot be found at Mouser, then moved to SparkFun's 150 mm PRT-12796. Measuring the runs on the v2 enclosure CAD (see the Cable lengths section below) showed that 150 mm covers the OPS243 ↔ Pi wires (~50 mm) but not the sound-detector wires: the detector now sits on the back of the screen in the front half, so GATEHOST_INT is ~130 mm straight and ~175 mm routed, and the front half has to come off for service. So the pack is SparkFun's 12 in / 305 mm PRT-09389 (10 wires, $4.95), which covers all eight runs from one pack; Mouser's 474-PRT-09389 listing is unverified. The F/M row stays on the Adafruit 1953 75 mm ribbon, a pin extension at the header itself, which the run lengths do not touch.

Raspberry Pi Active Cooler (SC1148)

The kiosk drives the UI, rolling-buffer capture, and FFT processing continuously. A passively cooled Pi 5 throttles under that sustained load, so the clip-on active cooler is worth listing as a recommended accessory rather than leaving builders to discover the throttling themselves.

Note on the price and the vendor link

Listed at ~$8. Street pricing varies a fair bit by reseller — PiShop US $10.95, Adafruit $13.50, Mouser around the $8 mark — so treat it the way the rest of the table treats its ~Price column.

The link points at mouser.com, matching the existing OpenFlight Mouser project reference at the top of the file. It was sourced from mouser.se for this build, but the .com product page lists the same part.

Qwiic cabling for the inclinometer and the DS3502

Two rows. The Amazon multi-cable kit stays listed and keeps its "used in the validated build" note; the Qwiic-to-Dupont row is an alternative to it, and the Qwiic-to-Qwiic row belongs to the DS3502, so neither moves the subtotal.

Qwiic-to-Dupont, single cable (Adafruit 4397, Mouser 485-4397) is the Mouser-stocked equivalent of that kit, so the whole optional inclinometer can be ordered from the Mouser project instead of splitting the order across two vendors. 150 mm is the only length Adafruit makes in this JST-SH-to-female-socket configuration; the shorter 50-100 mm Qwiic cables are Qwiic-to-Qwiic and have no Dupont end at all. The row also says the chain can continue: the LIS3DH's second STEMMA QT socket carries a Qwiic-to-Qwiic cable further down to the DS3502 digital potentiometer, so one Pi-to-header cable serves both boards.

Qwiic-to-Qwiic (Adafruit 4210, 100 mm) is the link from the LIS3DH's second STEMMA QT socket down to the DS3502 digital potentiometer, so the DS3502 joins the same I2C chain without taking any Pi header pins. It therefore sits in the Optional table next to the DS3502, not under the inclinometer, and is only needed if the DS3502 is fitted. With the v2 enclosure CAD in hand the length is settled at 100 mm on the assumption that the DS3502 sits beside the LIS3DH on the floor; its two wiper wires to R17 on the sound detector then make the long run to the front half instead of the I2C chain.

X1202 power button

The Geekworm X1202 (and X1206) exposes its external power button on a 2-pin XH2.54-2P header and expects a momentary switch: the X1202 wiki lists "External power button connector x1 - XH2.54-2P" and "Supported External Momentary Switch". Nothing in the list covered that header, so a builder putting the UPS in an enclosure had to work out a button and a lead themselves.

The new row is a Mouser-orderable, solder-free pair. Adafruit 1445 (Mouser 485-1445, $0.95) is a 16 mm panel-mount momentary push button, normally open, with two 0.11" tabs; Adafruit 1152 (Mouser 485-1152, $4.95) is a 10-pack of 20 cm wire pairs, each ending in a 2-pin JST XH plug that fits the X1202 header and two pre-crimped 0.11" quick-connects that push onto those tabs. Adafruit's 1445 page names the 1152 pairs as the way to wire it, so the pairing is the maker's, not a guess. Nothing is soldered or crimped; the enclosure needs a 16 mm hole. The row is priced at ~$6, which is what the optional-extras line carries. The X1202 row also gains an Amazon link (bare board, batteries not included) next to the Geekworm one, so the HAT can ride in the Amazon order when that is the cheaper shipping route.

Momentary only. The row says the button has to spring back. The X1202 header is labelled for an external momentary switch, and the wiki says the on-board button does what the Pi 5's own power button does: a short press boots or requests a shutdown, a long hold forces power off. A latching or toggle switch holds the line closed, which the board reads as a button held forever, so it is the wrong part even though many "power switch" listings are latching.

Powering it. The X1202 takes 6-18V DC on its 5.5 × 2.1 mm barrel jack, or 5V 5A on USB-C, and the wiki says never both at once. It converts either into the 5.1V 5A the Pi 5 needs and charges the cells from the same input. The row is written as a spec rather than a single product. Geekworm states the requirement as a current, "6-18Vdc, ≥3A", and publishes no wattage, so the row repeats that and then says what 3A buys at each voltage, worked from the loads: the Pi 5 up to 25.5W (5.1V × 5A) with both radars on its USB budget, and charging up to about 12W (the wiki's 3.2A into the cells). At 12V, 36W covers both at once, which is why Geekworm's own adapters are 12V; at 9V, 27W runs the Pi but charging slows under load; at 6V, 18W cannot carry a full Pi load. So the row tells builders to check the amps against the voltage instead of reading "6-18V" as "any adapter", and that a little over 25W runs the Pi but does not also charge at full rate. Two 12V examples are linked so it is still orderable without a search: the MEAN WELL GST36 (12V 3A, EU plug and US plug at Mouser, so it fits the Mouser order) and Geekworm's own PSU60 (12V 5A 60W, $17 at Geekworm, on Amazon alone or bundled with the X1202). It stands in for the 27W USB-C supply rather than adding to it, so it stays out of the totals.

Sourcing: what was checked, and the rejected options

The aim is to keep a build to two orders, Mouser and Amazon, with no soldering or crimping. Geekworm sells its own pre-wired button for these boards, but only direct from Geekworm, so it is not listed; Geekworm's one Amazon button (the 19 mm latching/momentary switch) is for the older X735/X708/X728 boards, whose switch header is not XH2.54.

On the Adafruit pair: the 1152 has an Amazon listing (B00SK6M36U) but it showed as unavailable, and Adafruit's own page showed it out of stock; Mouser's stock was not machine-read (bot wall), so the row says so. The 1445 was in stock at Adafruit. Adafruit's 1152 page warns that the 0.11" spades fit its plain buttons well and its 16 mm illuminated buttons poorly, which is why the illuminated ones Adafruit sells on Amazon are not offered as a substitute.

Rejected: Adafruit 4872 (a plain 2-pin JST XH pair) leaves bare wires at the button end; APEM 1213A2, a 12.2 mm momentary button on Mouser, has 6.35 mm quick-connect tabs, so the 1152 leads do not fit it.

Power supply: why it has to be 5V 5A, and why the UPS changes the picture

The 27W row used to say only "Official Pi 5 power supply (5V 5A)". It now says why that is not a preference: the Pi 5 releases its full downstream USB power budget only when the supply negotiates 5A at 5V, and the two radars need that budget. A standard USB-C PD charger stops at 3A at 5V, the Pi then caps the USB ports, and the radars brown out or fail to enumerate. The row also warns against routing the supply through a USB-C extension or panel-mount pass-through in the case: the extra contact resistance causes voltage sag and can make the 5V 5A negotiation fail.

A note under the Power & Accessories table then gives the way out: with the X1202/X1206 fitted, the 27W supply is not needed at all. Any barrel-jack supply that gives the UPS enough power (Geekworm's 3A or more anywhere in its 6-18V range; at 12V that also charges at full rate while the Pi runs flat out, at lower voltages it does not) feeds it, the UPS delivers 5.1V 5A to the Pi over its pogo pins, and the Geekworm setup script's PSU_MAX_CURRENT=5000 keeps the Pi's USB budget at the 5A level. For a device that lives in a case the barrel jack is the better input either way, and a 12V adapter already on hand brings the build cost down. The totals are left as they are, since the 27W supply ($14) and the listed 12V adapter (~$15) cost about the same; the saving is real only when the adapter is one you already own.

A second note under the same table carries the three UPS safety rules a builder has to know before the first charge: never charge the cells below 0 °C (lithium plating permanently damages them and can make them unsafe), never connect the UPS's USB-C input and barrel jack at the same time, and when powering from USB-C plug into the UPS board, not the Pi. The operator guide docs/build/battery.md already had the last two in its install warning; the below-freezing rule is added to its cell warning so both documents agree.

Cable lengths, measured on the v2 enclosure

A new Cable Lengths (Enclosure v2) section in the parts list gives every run with a straight-line, a routed and a buy length. The heading and a one-line pointer stay visible; the measurement text and the table sit in a collapsed <details> block, since the parts rows already carry the lengths to buy and ordinary builders do not need the derivation. The numbers come from the 2026-09-09 Onshape export of the v2 back housing (back-pi-display2, the Touch Display 2 variant): the insert pockets and standoffs locate each board (OPS243 on the 67 × 82 mm pattern bottom-right, IWR6843LEVM on the 48.5 × 49 mm pattern bottom-left, X1202 + Pi stacked over the battery hatch, LIS3DH on a 21 × 13 mm pad on the floor, camera on the top shelf, 16 mm button in the top wall at the left), and the sound detector's position comes from the build, where it is screwed to the back of the display in the front half.

Run Straight-line Routed Buy
OPS243 J3 ↔ Pi header (UART, 5V, GND) ~50 mm ~80 mm 150 mm works; the 300 mm pack covers it
Detector GATE → OPS243 HOST_INT ~130 mm ~175 mm 300 mm
Detector VCC/GND/GATE → Pi header ~85 mm ~120 mm 300 mm
Pi header → LIS3DH ~105 mm ~140 mm 150 mm Qwiic-to-Dupont (~10 mm spare)
LIS3DH → DS3502 beside it ~25 mm ~60 mm 100 mm Qwiic-to-Qwiic
LEVM J5 → Pi USB-A ~70 mm ~110 mm 250-300 mm micro-USB
Top-wall button → X1202 PSW ~180 mm ~250 mm the 1152's 200 mm leads, straight across the Pi stack
Case DC jack → X1202 barrel jack ~145 mm ~205 mm 250 mm pigtail (not in the tables yet)

Three consequences land in the rows: the F/F jumper pack becomes the 300 mm PRT-09389 (a 150 mm wire does not make the detector runs, and the front half has to lift off for service, which adds ~100 mm to them), the micro-USB row gets a 250-300 mm length, and the DS3502 cable is 100 mm. The button lead is the one run taken straight: the 1152's 200 mm leads cover the ~180 mm straight line across the Pi stack, and that is accepted.

How the runs were measured, and what is assumed

The STEP was read with a small ISO 10303-21 parser (no CAD kernel): each solid's B-rep gives its circle features, and the insert pockets (Ø3.15 mm, the McMaster 93502A109 size) and Ø8 mm standoff bosses cluster into the board patterns above. The OPS243 pattern was matched against the OPS243 STEP in cad/, the LEVM pattern against the top-view figure in TI's SWRU585, the X1202 against the 97.4 × 85 mm board and the Pi's 58 × 49 mm holes, and the LIS3DH pad against the Adafruit 2809 hole pattern. Connector positions on each board are from the board drawings or photos. Assumed: the sound detector's depth in the front half (its XY comes from the build photo); the OPS243 turned with J3 toward the Pi (turned the other way the UART run grows to ~125 mm, still inside 150); and the LEVM turned with TX above RX as the mounting guide requires, which puts J5 toward the Pi. Both radars hang antenna-out from the top of their standoffs, so connectors face the floor.

DS3502 digital potentiometer

The row previously said its role was TODO. It is intended for the SEN-14262 R17 gain trim: in series with a fixed 37k resistor, the 10K digital pot gives a software-adjustable 37-47k range, so preamp gain can be tuned from code instead of desoldering and swapping a fixed resistor.

This is not built or tested yet — nothing drives it in code, and sound-trigger.md still documents a soldered R17. The row says both things plainly rather than implying a working configuration. It now also gives the wiring plan (Pi → Qwiic-to-Dupont → LIS3DH → Qwiic-to-Qwiic → DS3502, no extra header pins) and says the part is moot if the sound trigger goes away.

Sound trigger becomes an optional path once PR #221 lands

PR #221 adds an opt-in --trigger hardware mode: the OPS243 fires the rolling-buffer dump from its own internal speed trigger, on OPS243-A firmware v1.3.1, with no SEN-14262 in the loop. It is open, not merged, and sound mode stays the default there. So the Sound Trigger section gets a callout rather than a restructure: it names the PR, the firmware requirement, and says the section's parts become optional if it lands and the builder's OPS243 can take that firmware. The totals are untouched; a sentence under the Cost Summary says the $16 Sound Trigger line drops out on that path.

Cost summary

Line Before After
Sound Trigger (SEN-14262 + resistor + wires) $18 $18
Power & Accessories $27 $37
Subtotal, no angle radar ~$400 ~$410
Total with angle radar ~$556 ~$566
Optional Enclosure Inclinometer $15 (new line)
Optional extras (X1202 + four 18650 cells, 16 mm button + leads, camera) $108 (new line)
Enclosure filament (v2 case, ~600 g PETG, estimate) $15 (new line)
Enclosure hardware (inserts, screws, washers, plungers) $35 (new line)
Complete build ~$739 (new line)
Optional extras with the X1206 instead (X1206 + four 21700 cells, button pair, camera) $120 (new line)
Complete build with the X1206 instead ~$751 (new line)

Power & Accessories takes +$8 for the cooler and +$2 for the F/M ribbon. Sound Trigger stays at $18: naming the F/F pack replaced a $5 guess with SparkFun's $4.95 list price for the 300 mm PRT-09389. Both carry through the subtotal and total.

The Qwiic-to-Dupont cable sits under the optional inclinometer section and the Qwiic-to-Qwiic cable next to the DS3502; the subtotal rolls up neither, so they do not move the totals. The new $15 optional line is LIS3DH $5 + Qwiic-to-Dupont kit $10. The button pair sits in the Optional table next to the UPS HATs, which the subtotal does not roll up either.

The complete-build line answers "what does everything cost": the $566 total with angle radar + $15 inclinometer + $108 optional extras + $15 enclosure filament + $35 enclosure hardware = $739. The extras are X1202 $48 + four 18650 cells at ~$6 each ($24, the street price of a Samsung 35E, Molicel P28A, or LG MJ1 at the specialist battery stores) + button and leads $6 (Adafruit list $0.95 + $4.95) + OV9281 camera $30. It takes the X1202 rather than the X1206 and leaves out the deprecated K-LD7 path, the untested DS3502 and its Qwiic-to-Qwiic link, and the 12V DC adapter (a replacement for the 27W USB-C supply already counted, not an addition); the sentence under the table says so.

A second pair of lines gives the same build with the X1206: $52 for the HAT (Geekworm's list price) + four flat-top 21700 cells at ~$8 ($32; Samsung 50E and Molicel P42A sell for $6-9 at the same battery stores) + the $6 button pair + the $30 camera = $120 of extras, $751 complete. The X1206 row itself was a Varies + cells placeholder and now carries what the Geekworm page and wiki say: the four 21700 holders are on the board (no separate holder to buy), only unprotected cells are allowed, the V2.0 DC input is 9-18V at 3A or more, USB-C is 5V 5A, and the power-button header is the same XH2.54 one, so the button row serves both HATs.

The enclosure filament line is an estimate from the CAD, not a slicer figure, and it assumes PETG rather than PLA: the case lives outdoors in the sun, and PETG holds up to UV and to a hot car far better than PLA (it softens at ~80 °C against PLA's ~60 °C) while still being a stock spool everywhere and an easy print on an enclosed printer such as the P1S. The v2 back housing is a 195 × 248 mm tray, 52 mm deep inside, with 3.5 mm walls, a 2.5 mm floor, 57 mm radar standoffs and four corner bolt columns, about 300 g at two walls and 10 % infill; the front half ~170 g, the kickstand ~70 g, the hatch and pegs ~30 g, and supports plus a purge line bring it to ~600 g of PETG (a few percent more than in PLA), two-thirds of a spool, ~$15 at $20-25/kg. The sliced weight should replace it once the v2 files are published. Inserts, screws and the ball plunger are in the Enclosure Hardware table above.

Enclosure hardware: inserts, screws, plunger

A new Enclosure Hardware table lists what the v2 case needs to hold its boards and itself together, counted from the insert pockets in the v2 back housing (OPS243 ×4, IWR6843LEVM ×4, LIS3DH ×4, X1202 stack ×4, battery hatch ×4, camera ×4 at M2) plus the front housing and kickstand as drawn in the August assembly (4 × M2.5 for the through-bolts, 2 × M3 for the kickstand pegs). Parts follow the decisions in openflight-enclosure#4: PEM SI IUTB-M2.5 / IUTB-M2 / IUTB-M3 brass inserts and Keystone 29301 (M2.5 × 6), 29314 (M3 × 12) and 4692 (#4 washer) from Mouser, APM HEXSEAL RM2X4MM 5701 for the four M2 camera screws, and from Amazon the two things Mouser does not carry: eight M2.5 × 35 DIN 912 A2 through-bolts and two 3 × 4 mm press-fit ball plungers (Ganter GN 614-3-NI class, McMaster 6052N11 in the drawing) for the kickstand detent.

Line Count Source ~Price
IUTB-M2.5 inserts 24 (buy 30) Mouser $6
IUTB-M2 inserts 4 (buy 10) Mouser $2
IUTB-M3 inserts 2 (buy 10) Mouser $2
Keystone 29301 M2.5 × 6 20 (buy 25) Mouser $5
APM HEXSEAL RM2X4MM 5701 M2 × 4 4 Mouser $5
Keystone 29314 M3 × 12 2 (buy 10) Mouser $1-4
Keystone 4692 #4 washers 8 (buy 10) Mouser $1
M2.5 × 35 DIN 912 A2 8 Amazon, 25-pack ~$10
Ball plunger 3 × 4 mm 2 J.W. Winco / Ganter, or Amazon 5-pack $5

About $37 as listed, $31 at exact counts, $35 in the Cost Summary. Not needed: the Touch Display 2 mounts on its own tapped pads with its boxed screws, and the Pi sits on the X1202 with Geekworm's spacers.

Where the prices come from, and the MOQ caveat

Mouser walls scripted requests, so prices are from distributors that publish them: Bossard for IUTB-M3 ($0.21 at 1-249, 1,500 in stock; IUTB-M2.5 taken as the same, being the same body, and IUTB-M2 is quote-only there), DigiKey for the Keystone parts (29301 $0.31 single / $0.21 at 25; 29314 $0.54 single / $0.41 at 10; 4692 $0.10 single / $0.075 at 10), the issue's mouser.se reading for the APM HEXSEAL screw (about SEK 12 each), and J.W. Winco's 1-99 bracket ($2.29) for the plunger. The through-bolt figure is a typical 25-pack price; Amazon and Bolt Depot both refused the fetch, and Aspen only sells a 500-box ($346). The table says so. Mouser sometimes sells PEM inserts in multiples of 100; if all three lines come that way the inserts are ~$60 instead of ~$10 and the CNC Kitchen "Standard" set on Amazon is the cheaper route, which the section notes.

The Tripod Mount row is gone: it was a placeholder ("1/4"-20 mount", no link) for a part the build does not use, so it came out rather than being carried into the complete-build total.

Rebased onto main after the docs-site move (#236)

The branch was rebased onto main after #236 moved the docs into the Zensical site layout. The three files this PR edits now live at docs/get-started/parts.md, docs/build/battery.md, and docs/setup/raspberry-pi.md. The two relative links this PR adds were retargeted for that layout so the strict docs build passes, and tests/test_geekworm_setup.py now reads the two battery guides as UTF-8, since the new "0 °C" note is the operator guide's first non-ASCII character and the ASCII read was the failing job on the previous CI run.

Why was this required?

Builders order from this file, so a part that is needed in practice but missing, unnamed, or unlinked becomes a second order and a second wait.

  • Active cooler: without it a Pi 5 thermally throttles under the continuous kiosk load. Someone following the parts list exactly ends up with a rig that gets slower the longer a range session runs, and no obvious reason why.
  • Jumper wires: Any is not orderable. It does not say which gender, does not say how short, and cannot go into the Mouser project — so the one category of part every build needs was the one category you had to work out yourself.
  • Qwiic cabling: the list covered wiring the LIS3DH at the Pi but not mounting it elsewhere in the enclosure, which is the actual use case for a tilt sensor.
  • Micro-USB: "USB cable (data-capable) — check the connector on your board revision" pushed a question onto the builder that the file can just answer.
  • DS3502: an undocumented TODO row invites someone to buy a part with no idea what it is for, or to delete it as dead weight.
  • X1202 power button: the UPS rows named the HAT but not the button its enclosure needs, and the header is an XH2.54 plug most builders would otherwise have to solder a lead for.

Automated tests

No new tests: the PR changes Markdown documentation (docs/get-started/parts.md, docs/setup/raspberry-pi.md, docs/build/battery.md) plus a two-line encoding change in tests/test_geekworm_setup.py. That test file already covers the operator guide (test_operator_guide_links_models_and_distinguishes_batteries) and the battery overview (test_battery_guide_documents_provider_interface_and_cli); both now read the guides as UTF-8 instead of ASCII, because the "0 °C" note this PR adds is the operator guide's first non-ASCII character and the ASCII read was what failed the three pytest jobs on the previous CI run. Internal links are covered by the strict docs build (zensical build --strict) that runs on every docs PR since #236.

In place of tests, the mechanical properties of the change were checked directly (see below): table structure, internal link targets, external link reachability, and the cost arithmetic.

Manual (human) testing

Docs-only, so verification was link-checking and proof-reading rather than a bench run.

  • Vendor links opened: Adafruit 4399 (Qwiic cable), Adafruit 4286 (DS3502), Adafruit 4397, and the Amazon Qwiic-to-Dupont kit all returned content. Mouser SC1148, 485-4397 and 485-1953 were confirmed to exist and be indexed under the URLs and part numbers used here. Adafruit 794 (485-794) could not be found on mouser.se, so the F/F rows now point at SparkFun PRT-12796 (474-PRT-12796), which mouser.se lists; the SparkFun page confirms it as a 6 inch F/F 20-pack at $2.75. The Geekworm X1202 wiki and the Amazon X1202 listing were read for the power-button row: the header type and the momentary requirement come from the wiki. The Adafruit 1445 and 1152 pages were read for the alternative row: momentary normally-open switch, 16 mm hole, 0.11" tabs, the 1152 named on the 1445 page as its wiring, 20 cm pairs with a 2-pin JST XH plug, prices and stock. The DC-jack size, 6-18V ≥3A input range, USB-C 5V 5A input, and "never both at once" rule come from the same wiki; the MEAN WELL GST36 plug spec (5.5 × 2.1 mm, center positive, 12V 3A) comes from the maker's listing, and the PSU60 price is Geekworm's list price.
  • Table structure: every Markdown table in parts.md was checked for consistent column counts; no mismatches, so the new rows render inside their tables rather than breaking out of them.
  • Internal links: all relative links in the three changed files resolve under the docs-site layout from docs: publish docs/ as a Zensical site and restructure it around reader tasks #236 (including the ../build/sound-trigger.md reference on the DS3502 row and the ../build/battery.md reference in the UPS safety note).
  • Cable runs: measured on the v2 back-housing STEP (Onshape export, 2026-09-09) with a STEP reader that extracts each solid's insert pockets and standoffs, cross-checked against the build photo (button top-left, DC jack top-right, camera top centre, Pi/UPS stack centre-right, LIS3DH pad left, detector on the screen); the OPS243 pattern was verified against cad/OPS243.stp and the LEVM pattern against TI's SWRU585 top view.
  • Enclosure hardware: counts cross-checked between the v2 STEP's pockets and the August drawing's part list; prices read from Bossard, DigiKey and J.W. Winco pages because Mouser blocks fetches.
  • Cost arithmetic: re-added by hand, line by line, against the diff.
  • Touch Display 2 power path: confirmed against the Raspberry Pi accessory documentation — supplied 3-pin GPIO cable to header pins 2 and 6 — which is what the F/M extension row rests on.
  • Hardware: the Active Cooler is fitted on the Pi 5 in this build; that is what prompted the row.
  • Power-supply behaviour: the 5V 5A requirement, the failure with ordinary PD chargers, and the USB-C extension sag are from this build's experience, and match the Pi 5's documented behaviour of limiting USB peripheral current unless a 5A supply is negotiated. PSU_MAX_CURRENT=5000 is what scripts/battery/geekworm/setup.sh already sets, per docs/build/battery.md.

Known gaps, worth a reviewer eye

  • Mouser prices and stock are not verified. Mouser serves a bot wall to scripted requests, so the Mouser pages were confirmed reachable but their content was not machine-read. The new rows therefore quote the Adafruit direct list price and say so in the row itself, rather than presenting an unverified Mouser figure. Worth one human click before merge.
  • The female/female gender is derived from the docs, not from a bench check. docs/build/sound-trigger.md never states connector genders; it assumes headers get soldered to the SEN-14262 but not which kind. F/F follows from the Pi header, OPS243 J3, and a male-headered SEN-14262 all being male pins. If a build uses female headers on the detector, that row needs to say F/M instead.
  • Power & Accessories does not foot exactly ($14 + $8 + $2 + $10 + $5 = $39, listed as $37). This predates the branch — the original line was $27 against components summing to $29 — so it is pre-existing rounding in a ~Price column, left alone rather than silently widening the scope of this PR.
  • Power-button stock. The Adafruit 1152 leads were out of stock at Adafruit and unavailable on Amazon when checked, and Mouser's stock was not machine-read; the 1445 was in stock. The pair needs a 16 mm hole and has not been fitted to an enclosure in this build yet.
  • Adapter price is a bracket. The row says ~$15, between the MEAN WELL GST36 at Mouser and Geekworm's $17 PSU60; neither the Mouser nor the Amazon (B0BDF89DCB) price was machine-read, same bot-wall caveat as above.
  • Battery cost is an estimate. The complete-build line assumes ~$6 per 18650 cell and the X1206 line ~$8 per 21700 cell, which is what the specialist battery stores charge for a matched flat-top unprotected cell; Amazon pricing for those cells varies more than that, and both HAT rows still say "+ cells" rather than a number.
  • The X1206 is a Geekworm-direct order. No Amazon or Mouser listing was found for it, unlike the X1202, so the X1206 lines are a comparison for builders who want the larger cells, not the two-order default.
  • Deliberately not verified: the Qwiic-to-Qwiic cable length (it depends on where the DS3502 sits relative to the LIS3DH, and the enclosure is not finalised) and the DS3502 R17 wiring (not built yet). Both rows carry that caveat in the table itself.
  • The 1152 button leads are taken straight. Button hole to PSW header is ~180 mm in a straight line, so the 200 mm leads cross the Pi stack with ~20 mm to spare; routed around the stack the run would be ~250 mm. Accepted as fine for this one cable.
  • Hardware prices are not Mouser's. The insert and screw prices come from Bossard and DigiKey, the plunger from J.W. Winco, and the through-bolt 25-pack is a typical figure; Mouser's prices and above all its minimum quantities for the PEM inserts need one human look before the ~$35 line is trusted. The through-bolt count and length follow the August drawing and may change if the v2 CAD moves the front-housing inserts to the flange.
  • Filament is an estimate. ~600 g of PETG / ~$15 comes from the CAD wall and floor volumes at two walls and 10 % infill, not from a slicer; the front half's weight is inferred from the August front-housing envelope. Replace with the sliced figure.
  • Cable-run assumptions. The sound detector's depth in the front half is assumed (its XY is from the build photo, not the CAD), the OPS243 is assumed to be turned with J3 toward the Pi, and the LEVM to be turned TX-above-RX per the mounting guide. Each is stated in the section; none changes a buy length except the OPS243 turned the other way, which still fits 150 mm.
  • 485-1953 deserves the same click as 485-794 got. The F/M ribbon is still the Adafruit part; if mouser.se cannot find it either, the row needs a SparkFun or other substitute the same way the F/F row did.
  • Case-side DC input is not settled. If a build goes the barrel-jack route, the case needs a DC input of its own, and finding one that works is open. The X1202 wiki lists two DC inputs on the board: the 5.5 × 2.1 mm jack and a second XH2.54-2P header marked "DC 6-18V power input", the same connector family as the power-button header. That suggests a no-solder route like the button's: a panel-mount 5.5 × 2.1 mm jack with pre-wired leads terminated in an XH2.54 housing, plugged onto that header. The open question is current. JST rates an XH contact at 3 A with 22 AWG wire, the X1202 asks for 3 A or more at 12 V, and the wiki puts the charge current alone at up to 3.2 A, so one XH pair sits at its rating at 12 V; a 15-18 V adapter lowers the current for the same power, but that needs checking before it goes in the table. The alternative is a panel-mount jack with a pigtail ending in a 5.5 × 2.1 mm plug into the on-board jack, which barrel contacts handle and which pre-made "DC panel-mount extension" cables cover. Once the Pi and X1202 positions in the case are fixed, the simplest answer may be a cutout in the side wall over the on-board jack, so the adapter plugs in directly and no case port or extension is needed at all. To be researched together with the enclosure repo; the cutout reference proposed there is the Switchcraft L722A (Mouser 502-L722A, 5 A, Ø8.0 mm D-hole), with the no-solder options listed in openflight-enclosure#4.

Checklist

  • Single feature/fix — one thing: parts-list accuracy for a build, now including the cable runs and filament the v2 enclosure implies
  • Automated tests included — N/A, docs-only; rationale above
  • Manual testing described — link, table, and arithmetic checks above
  • Python tests pass (tests/test_geekworm_setup.py reads the guides as UTF-8; see Automated tests)
  • Pylint passes (unchanged by this PR; green in CI)
  • Ruff passes (unchanged by this PR; green in CI)
  • UI builds (unchanged by this PR; green in CI)
  • UI lint passes (unchanged by this PR; green in CI)
  • Updated docs or CHANGELOG if needed — this PR is the docs update
  • No unrelated changes mixed in

🤖 Generated with Claude Code

https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj

@HuggeK
HuggeK requested a review from jewbetcha as a code owner August 29, 2026 11:14
@HuggeK
HuggeK marked this pull request as draft August 29, 2026 11:18
@HuggeK
HuggeK marked this pull request as ready for review August 29, 2026 15:08
@HuggeK
HuggeK marked this pull request as draft August 29, 2026 22:08
@HuggeK

HuggeK commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

Added one more row to the Optional Enclosure Inclinometer table: a Mouser-stocked Qwiic-to-Dupont cable, so the whole optional inclinometer can be ordered from the shared Mouser project instead of splitting the order with Amazon.

Part Adafruit 4397 — STEMMA QT / Qwiic JST SH 4-pin Cable with Premium Female Sockets
Mouser P/N 485-4397
Link https://www.mouser.com/en/ProductDetail/Adafruit/4397
Length 150 mm
~Price ~$1

This is the female-socket counterpart of Adafruit 4209 (the male-header version). Female is the correct end here: the Pi GPIO header is male pins, so the sockets push straight on.

On "shortest": 150 mm is the only length Adafruit produces in this JST-SH-to-female-socket configuration. The shorter 50 mm and 100 mm Qwiic cables are Qwiic-to-Qwiic and have no Dupont end at all, so there is nothing shorter to pick.

The Amazon multi-cable kit stays listed and still carries the "used in the validated build" note — this row is the single-cable alternative, not a replacement, so the $16 optional-inclinometer cost line is unchanged.

Verification caveat, same as the SC1148 row: Mouser serves a bot wall to scripted requests, so the 4397 product page was confirmed to exist and be indexed under that URL but its stock and price were not machine-read. Worth one human click before merge.

@HuggeK

HuggeK commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

Named the jumper wires. Three rows previously said Any for their link, which left both the gender and the length to the builder and kept the wires out of the shared Mouser project. Both genders turn out to be needed, for different reasons.

Gender Part Mouser P/N Link Used for
F/F, 75 mm Adafruit 794 (40-wire strip) 485-794 https://www.mouser.com/ProductDetail/Adafruit/794 Sound-trigger runs, OPS243 → Pi ground, IWR6843 GATE → BCM17
F/M, 75 mm Adafruit 1953 (20-wire ribbon) 485-1953 https://www.mouser.com/en/ProductDetail/Adafruit/1953 Header-pin extension on the Pi 5V rail

Why female/female for the trigger wiring: the Pi GPIO header, the OPS243 J3 header, and headers soldered onto the SEN-14262 are all male pins, so both ends have to be female. The IWR6843 GATE → BCM17 wire comes out of the same strip, so that row now points at the same part rather than repeating the spec.

Why female/male as well: these are pin extensions — the female end goes onto a Pi GPIO pin and the male end re-presents that pin for a second connector. That is what keeps the 5V rail reachable for the OPS243 when the Touch Display 2 is also wired to the header, instead of one connector covering the whole rail.

On "shortest": 75 mm is the floor in both genders. Adafruit's jumper line starts at 75 mm (the longer options are 150 mm and 300 mm), and no other brand Mouser stocks goes below it — SparkFun's shortest premium jumpers are 4″/100 mm, and Pololu, who do make 1″ and 2″, is not a Mouser line.

Cost summary

Line Before After
Power & Accessories $35 $37
Subtotal, no angle radar ~$408 ~$410
Total with angle radar ~$564 ~$566

+$2 for the F/M ribbon, carried through subtotal and total. The F/F wires were already priced into the existing $5 sound-trigger line, so they do not move anything.

Verification caveat, same as the SC1148 and 4397 rows: Mouser bot-walls scripted requests, so both product pages were confirmed to exist and be indexed under those URLs and part numbers, but live stock and price were not machine-read. Worth a human click before merge. Adafruit's direct prices are $3.95 (794) and $1.95 (1953).

@HuggeK
HuggeK force-pushed the docs/parts-active-cooler branch 4 times, most recently from 555df28 to 5ad03d0 Compare August 29, 2026 22:46
@HuggeK HuggeK changed the title docs(parts): add Pi 5 Active Cooler and Qwiic-to-Qwiic cable docs(parts): fill the gaps a build order exposed Aug 29, 2026
@HuggeK

HuggeK commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

TODO is to measure once the rpi touch screen 2 model and placement of sensors land of the lengths of the recomended cables length so they reach in the new case.

Parts-list maintenance from a build. Add the parts it turned out to need
(Pi Active Cooler, jumper ribbons by gender, Qwiic cabling for the
LIS3DH and DS3502, an X1202/X1206 power button, a DC barrel-jack
adapter), name the rows that said Any or TODO, explain why the 27W
supply must negotiate 5V 5A and how the UPS HAT replaces it, add UPS
safety rules to the parts list and the Geekworm guide, fill in the X1206
row, drop the tripod placeholder, and recompute the totals with
complete-build lines.

The Geekworm guide test read that guide as ASCII and the new 0 °C note
is its first non-ASCII character, so both battery guides are now read
as UTF-8, matching the rest of the docs.

Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj
@HuggeK
HuggeK force-pushed the docs/parts-active-cooler branch from 8e76126 to 506058f Compare September 9, 2026 11:35
claude and others added 4 commits September 9, 2026 14:09
…stimate

Measured on the 2026-09-09 Onshape export of the v2 back housing: the insert
pockets and standoffs locate the OPS243, IWR6843LEVM, X1202 + Pi stack,
LIS3DH pad, camera and button, and the sound detector sits on the back of the
screen in the front half. A new Cable Lengths section lists every run with
straight-line, routed and buy lengths.

Consequences in the rows: the female/female jumper pack moves from 150 mm
(PRT-12796) to 300 mm (SparkFun PRT-09389) because the detector-to-OPS243
HOST_INT run is ~175 mm routed and the front half lifts off for service; the
micro-USB row gets 250-300 mm; the DS3502 Qwiic-to-Qwiic is settled at
100 mm; and the 1152 button leads (200 mm) are flagged as short of the
~250 mm button-to-PSW run. The cost summary gains an enclosure filament line
(~600 g PLA, ~$15, estimated from the CAD wall volumes) and the totals move
with it and with the jumper pack.

Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj
…nt the case in PETG

Add an Enclosure Hardware table: 24 PEM SI IUTB-M2.5, 4 IUTB-M2 and 2
IUTB-M3 brass heat-set inserts (counted from the v2 back-housing pockets
plus the front housing and kickstand as drawn), the Keystone 29301 M2.5x6,
APM HEXSEAL M2x4 and Keystone 29314 M3x12 screws, open-flight#4 washers, the eight
M2.5x35 DIN 912 through-bolts, and the two 3 x 4 mm press-fit ball plungers
for the kickstand detent, with where each goes and a ~$35 line in the
totals. Parts follow openflight-enclosure#4; prices are from Bossard,
DigiKey and J.W. Winco because Mouser walls fetches, and the Mouser
minimum-quantity caveat for PEM inserts is stated.

The filament estimate assumes PETG rather than PLA, since the case lives
outdoors in the sun and PETG handles UV and heat far better while staying
easy to buy and print.

Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj
The panel jack sits in the top shelf at Y +83, not in the top wall, so the
run to the X1202 barrel jack is ~145 mm straight and ~205 mm routed rather
than 165 / 220; the 250 mm buy length is unchanged.

Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj
Button hole to the X1202 PSW header is ~180 mm in a straight line across
the Pi stack, so the Adafruit 1152's 200 mm leads reach with ~20 mm to
spare. The routed detour (~250 mm) is not needed for this one cable, so
the row's open item is closed and the Cable Lengths table says which
lead to use. Every other run keeps its routed basis.

Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj
@HuggeK
HuggeK marked this pull request as ready for review September 9, 2026 13:31
@HuggeK
HuggeK marked this pull request as draft September 9, 2026 13:32
The parts rows already say which length to buy, so the Cable Lengths
section keeps its heading and a one-line pointer and folds the
measurement text and the run table into a details block, the way the
setup pages fold their manual steps. Ordinary builders can skip it; the
links from the jumper rows still land on the heading.

Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_01UGrnsyu4nYvf37z6NtQGhj
@HuggeK
HuggeK marked this pull request as ready for review September 9, 2026 13:34
@HuggeK
HuggeK requested a review from jewbetcha September 13, 2026 12:15
@jewbetcha
jewbetcha merged commit bd55949 into open-flight:main Sep 20, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants