bluebuzz-rm2 — component choices

Every part on the board, why it was chosen, what it was chosen over, and the numbers behind its value, with the datasheet pages and schematic blocks it comes from. Rev A, 28 × 44 mm, 6 layers, 109 components. Written 2026-10-18 from scripts/circuit.py, bom/parts.yaml, the part audits in design/parts/ and design/decisions.md.

Elsewhere: board viewer (schematic, copper, 3D) · schematic PDF · renders · decision log · project page

Each block has three kinds of picture. Schematic is the block as drawn in the generated sheet. Board shows where its parts sit, front and back (the back is seen from behind, so it is mirrored left to right). Datasheet is the page a choice or value comes from. Click any picture to see it full size, and click a datasheet caption to open the PDF at that page.

Overview

The board is a Bluetooth vibrator controller that is cast into a soft elastomer body. The parts were picked around four requirements:

Power tree

USB-C · J15 V in, D+/D− to the RP2350 ESD · U10USBLC6-2P6, C2 100 n Charger · U2 BQ24074, power pathILIM 1 A · charge 0.5 A VBUS Cell · J2 (back)1S LiPo, + − T (NTC) VBAT VBAT sense1 M / 1 M → ADC0 Power latch SW1 press · PWR_HOLD (GPIO19)· VBUS, OR'd by D5/D6 → the LDO's EN VSYS 3.0–4.4 V Motors · Q1 Q2AO3400A low side → MOT pads Radio Vin · U7RM2, TX bursts ≈ 0.3 A LED switch · U11TPS22918 → D2 1010 RGB LED Charge LED · D1/CHG, lights while off LDO · U3TLV75533, 3.3 V 500 mA EN 3V3_SYS RP2350A · U1 internal buck + L1 → 1V1 coreY1 12 MHz · ADC via 10 Ω Flash · U6 (4 MB) Radio VDDIO · U7 IMU · U30 Sensor switch · U5TPS22918, ON = GPIO4 Tactile array · U20–U245 × DPS368 on 3V3_SENS (back)

VSYS is the charger's power-path output. When USB is present it is held at 4.4 V; otherwise it is the cell through about 50–100 mΩ. Everything that can take the cell's voltage directly does, namely the motors, the radio and the LED. That keeps the 500 mA LDO for the logic. When the LDO is off, the board is off: only the charger, the charge LED and the battery divider still draw, about 10–15 µA in total.

RP2350 pin use

GPIONetGoes to
2, 3WL_DATA, WL_CLKRM2 gSPI (pads 5/6/10, 3)
4SENS_ENU5 ON (sensor rail)
6, 7SDA, SCLI2C1 → IMU
8BTNQ3 drain (button, active low)
9PG_Ncharger /PGOOD (USB present)
10–12TAC_SCK/SDI/SDOSPI1 → all five DPS368
0, 14–16, 20TAC_CS1–5one chip select per sensor
13, 17MOTOR1/2_PWMgate resistors R40/R42 → Q1/Q2 (bottom pin row, toward the gates; PWM slices 6B and 0B)
5, 18IMU_INT1/2IMU interrupts (INT1 beside SDA/SCL, on the IMU's side)
19PWR_HOLDD5 → LDO EN (power latch)
22LED_STATR62 → D2 DIN (pin 34, the side facing the LED)
27, 25WL_ON, WL_CSRM2 pads 12+13, 9 (WL_ON on the right-column pin nearest its pads)
26 (ADC0)VBAT_SENSE1 M / 1 M divider
1, 21, 23, 24, 28, 29free (24 GPIOs used of 30)

Rails

RailRangeSource → loads
VBUS5 V (5.5 max)USB-C → U10 → charger IN; D6 → power latch
VBAT3.0–4.2 Vcell ↔ charger BAT; battery divider
VSYS3.0–4.4 Vcharger OUT → LDO, RM2 Vin, motors, U11/LED, D1, SW1
3V3_SYS3.3 V ±1 %U3 → RP2350, flash, RM2 VDDIO, IMU, U5
1V11.1 VRP2350's own buck via L1 → DVDD
3V3_SENS3.3 V, switchedU5 → the five DPS368
LED_VDDVSYS, switchedU11 → D2
3V3A, VREG_AVDD3.3 V, filtered10 Ω / 1 µF → ADC; 33 Ω / 4.7 µF → regulator

Current budget

At 10 % vibration duty: motors 2 × 0.2 A × 10 % = 40 mA (18 mA with the 0.09 A motors), RP2350 and flash ≈ 30 mA, RM2 streaming A2DP ≈ 40 mA, everything else ≈ 5 mA, about 115 mA in total. A cell of ≥ 700 mAh gives 6 h, and about 500 mAh gives 4 h. At the 500 mA charge rate a 700 mAh cell charges in about 1.7 h, inside the 6 h safety timer. The peak VSYS draw is about 1 A: two motors plus a radio TX burst plus the LDO.

whole schematic
Schematic — the whole sheet. The numbered blocks are the sections below.

Block 9RP2350A host: core regulator, crystal, decoupling, USB

RefPartValue / MPNLCSCWhy
U1MCURP2350A, QFN-60 7 × 7C42411118The RM2 works only with Raspberry Pi microcontrollers. Of those, the RP2350 has 520 KB SRAM and Cortex-M33 cores with FPU and DSP, which suits BTstack plus SBC decoding. The A variant (30 GPIO, 7 × 7 mm) rather than the B (48 GPIO, 10 × 10 mm): 24 GPIOs are used. $1.29, 6,240 in stock.
L1Core buck inductor3.3 µH, Abracon AOTA-B201610S3R3-101-T (0806)consignedThe reference design's own part. Abracon made it with a polarity dot, all aligned on the reel, because the regulator is sensitive to the coil's orientation. 2.1 A, 115 mΩ. JLC had 3 in stock, so ≥ 6 are bought from Digi-Key or Mouser and consigned. The Sunlord MPL2016S3R3MHT (C98336) fits the same land as a fallback, but it has no dot.
C80, C83Buck COUT, CIN4.7 µF X5R 10 V 0402C23733As in the datasheet's Figure 25, on Raspberry Pi's own small-pad 0402 land and at the reference positions. The 10 V parts keep more capacitance at 3.3 V than the reference's 6.3 V ones (≈ 2.1–2.8 µF effective).
R84, C84VREG_AVDD filter33 Ω + 4.7 µFC25105, C23733The datasheet says this RC filter is required ("must be RC filtered"). VREG_AVDD draws about 200 µA, so the corner is about 1.9 kHz with only a 7 mV drop.
C81, C82, C98DVDD (1.1 V)4.7 µF at pin 23; 100 nF at pins 39 and 6C23733, C1525Datasheet §6.1.3: 100 nF at the two DVDD pins nearest the regulator, and 4.7 µF at the far one. Each sits at the end of a 1V1 spoke from the ring under the chip (see the layout rule below): C82 beside the E spoke's via, C81 on the back under the S spoke's via (the crystal is closer to the chip than on the minimal board), C98 on the back off the ring's W via, behind pin 6.
C91–C97IOVDD, QSPI_IOVDD, USB_OTP_VDD7 × 100 nF X7RC1525The guide asks for one per power pin; pins 53 and 54 share one cap (C93), at the reference position. C97 is on the back behind pin 11, where the front lane is the escape for pins 2–13; C91 is on the back under its own via beside pin 1, where the QSPI lines fan out on the front.
R85, C85ADC_AVDD filter10 Ω + 1 µF 0603C25077, C15849Stricter than either document asks. This keeps the motor PWM off the ADC reference that the battery gauge relies on.
Y1Crystal12 MHz Abracon ABM8-272-T3, 3225C20625731The crystal of the reference design, which is the only validated circuit. CL 10 pF, ESR ≤ 50 Ω. The first pick (TXM12M, CL 12 pF, 120 Ω) was dropped: its datasheet could not be obtained, and the guide says any deviation needs temperature testing.
C86, C87Load caps15 pF C0GC154815 ∥ 15 pF in series = 7.5 pF, plus 3 pF stray = 10.5 pF ≈ CL 10 pF.
R86XOUT series1 kΩC11702Limits the drive level at IOVDD 3.3 V ("tuned for 3.3 V operation").
R3, R4USB series27 ΩC25100Required by the RP2350 and placed at the chip; together with the driver they meet the USB 28–44 Ω source impedance. No external pull-ups: the RP2350 has them built in.
Layout rule: the RP2350's power copper is Raspberry Pi's own. scripts/rp2350_block.py reads the RP2350A minimal board's KiCad file (design/reference/) and lays its power block relative to U1, locked, before the autorouter runs:
  • Under the chip, on top: a 1V1 ring around the GND pad, inside a 3V3 band that reaches every IOVDD pad.
  • 1V1 spokes: four 0.6 mm spokes (on In2 here) from the ring to the DVDD pins and to COUT.
  • Regulator: the regulator's parts at the reference positions and rotations, and its small high-current zones (LX, 1V1, CIN's 3V3, PGND).
PGND reaches the GND planes only through its pair of adjacent vias: those pads get no via-in-pad, and a moat keeps the top GND pour out. The In1 GND plane is cut away under the LX node (datasheet §6.3.8.1, Fig. 27). L1 sits at the reference rotation, so its dot lands where the reference puts it. The audit checks all of this on every build.
Schematic — block 9.
Board — the chip at the centre, with L1 and the regulator caps above it, the crystal below it, and C97/C98 on the back.
Datasheet — the regulator's external parts. C80 = COUT, C83 = CIN, R84/C84 = RFILT/CFILT. RP2350 datasheet p.410, Fig. 25
Datasheet — DVDD decoupling: 100 nF at the two pins near the regulator, 4.7 µF at the far one. RP2350 datasheet p.408, Fig. 22
Datasheet — why the Abracon inductor, with its polarity dot. Hardware design with RP2350 p.7
Datasheet — the reference regulator layout, and how coil orientation affects it. Hardware design with RP2350 p.6, Fig. 4
Datasheet — the crystal circuit, the load-cap calculation and the "any deviation" warning. Hardware design with RP2350 p.13
Datasheet — ABM8-272-T3: CL 10 pF, ESR 50 Ω, C0 3 pF, ±30 ppm. Abracon ABM8-272-T3 p.2
Datasheet — one 100 nF per power pin. Hardware design with RP2350 p.8
Datasheet — 27 Ω series resistors placed close to the chip. Hardware design with RP2350 p.15

Block 8QSPI flash, reset and boot

RefPartValue / MPNLCSCWhy
U6FlashWinbond W25Q32JVUUIQ, 32 Mbit, USON-8 3 × 4C2999380The W25Q family is the one the RP2350 boot ROM and the SDK's boot2 are written for. The 16 Mbit 2 × 3 USON of the other RP2350 boards here had no stock anywhere at LCSC, and the SOIC-8 is 5.3 × 5.3 mm. The "Q" suffix fixes QE = 1, which quad mode on /WP and /HOLD needs. It runs at 75 MHz quad I/O (≤ 133 MHz).
C88Decoupling100 nFC1525At pin 8.
R87BOOTSEL strap1 kΩ QSPI_SS → BOOT padC11702No BOOTSEL button. Bridge the BOOT pogo pad to GND while powering up to get the UF2 bootloader; firmware can also reboot into it. The 1 kΩ lets QSPI_SS overdrive the strap once the chip runs (3.3 mA).
R88, C89RUN10 kΩ + 100 nFC25744, C1525A defined pull-up, plus about 1 ms of reset hold-off after 3.3 V rises. RUN also goes to a pogo pad, so there is no reset button.
Schematic — block 8.
Board — the flash, turned 180° so that SS, SD1 and SD2 face the QSPI pins.
Datasheet — the reference flash and USB_BOOT circuit, with the 1 kΩ strap and the 10 kΩ pull-up that is not fitted. Hardware design with RP2350 p.10
Datasheet — USON 4 × 3 pad assignment. W25Q32JV p.5

Block 10Raspberry Pi Radio Module 2

RefPartValue / MPNLCSCWhy
U7Radio moduleRM2, RMC20452T (CYW43439)consignedWi-Fi 4 plus Bluetooth 5.2 Classic and LE in a certified, shielded module with a PCB antenna. It is the Pico 2 W's radio, so the SDK's CYW43 driver and BTstack (A2DP) work unchanged. $4 RRP; sold through Raspberry Pi resellers only, so it is consigned or hand-soldered.
R80DOUT → DATA470 ΩC25117Required by the datasheet (Table 1): DATA_OUT, DATA_IN and HOST_WAKE share one GPIO.
R81nIRQ → DATA10 kΩC25744Required by the same table.
C100, C101Vin10 µF + 100 nFC19702, C1525The module has its own regulators, and the datasheet asks for nothing. These cover its TX bursts. C100 sits 3 mm from pad 16's column.
C102VDDIO100 nFC1525At pad 14.
Schematic — block 10.
Board — top-right, with the antenna on the top edge.
Datasheet — the shared DATA pin and its 470 Ω / 10 kΩ resistors. RM2 datasheet p.5, Table 1
Datasheet — footprint and RF keep-out. An audit found the side pads 0.2 mm off this drawing; they are now corrected. RM2 datasheet p.9, Fig. 6
Datasheet — pin functions: VDDIO 3.3 V, Vin 3.0–4.8 V. RM2 datasheet p.10, Table 2

Block 1USB-C and ESD

RefPartValue / MPNLCSCWhy
J1ReceptacleHRO TYPE-C-31-M-12, 16-pin USB 2.0C165948The same part as the first board, and a JLC staple. The 16-pin type has no SuperSpeed contacts. It sits centred on the bottom edge, mouth flush; the top edge is the antenna keep-out. A6/B6 and A7/B7 are tied so either plug orientation works.
R1, R2CC pull-downs5.1 kΩ eachC25905The Type-C Rd for a sink, one per CC pin. The source then supplies 5 V even into a dead board, so a flat cell can charge.
U10ESD arrayST USBLC6-2P6, SOT-666C15999The usual low-capacitance (≈ 3.5 pF) rail-to-rail array with a VBUS TVS. The USB-C is the only user-touched metal. D+ passes through pins 1→6 and D− through 3→4.
C2VBUS HF cap100 nF X7R 16 VC1525Gives the array's VBUS node a local return for the first nanoseconds of a strike.

There is no PD controller and no CC sensing. The charger takes up to 1 A from any 5 V source; phone chargers and Type-C sources advertising 1.5 A or more cover that. The shell goes straight to GND as the discharge path. There is no surge protection beyond ESD, consistent with a personal device with no formal compliance.

Schematic — block 1.
Board — bottom edge, with the ESD array above-left of the receptacle; R3/R4 sit at the RP2350.
Datasheets missing: the TYPE-C-31-M-12 drawing and the USBLC6-2 datasheet could not be downloaded (LCSC and ST block the fetcher). The pin maps come from KiCad's footprint for this exact part and from ST's standard SOT-666 pinout. Please attach both if you can.

Block 2BQ24074 charger with power path

RefPartValue / MPNLCSCWhy
U2ChargerTI BQ24074RGTR, VQFN-16 3 × 3C54313Power path: the system runs from USB with a flat or missing cell, and charge termination is not confused by the system load (simple chargers like the MCP73831 or TP4056 put the load on the cell). Other reasons: 28 V input rating, 10.5 V OVP, a programmable input limit and timer, /PGOOD and /CHG outputs. Already proven on the bike-tracker board.
R10ISET1.78 kΩ 1 %C113478ICHG = 890 / 1780 = 500 mA (448–548 mA), 0.7 C for a 700 mAh cell.
R11ILIM1.62 kΩ 1 %C61897IIN = 1610 / 1620 = 0.99 A (0.93–1.06 A).
R12TMR45.3 kΩC26980Fast-charge safety timer 10 × 48 s/kΩ × 45.3 kΩ = 6.0 h; pre-charge 36 min.
R13TS10 kΩC25744Holds TS mid-window (0.75 V; trip points 0.3 and 2.1 V), so charging is always allowed. Leave it off if the cell has a 10 k NTC on the BAT row's T pad; that gives a 0–50 °C charge window.
C10, C13IN10 µF + 100 nFC19702, C1525Datasheet 1–10 µF. About 6 µF after DC bias, under the Type-C sink limit.
C11, C14OUT (VSYS)10 µF + 100 nFC19702, C1525Datasheet 4.7–47 µF; about 30 µF effective on the rail with the motor bulk caps.
C12, C15BAT10 µF + 100 nFC19702, C1525Datasheet 4.7–47 µF.
D1, R14Charge LEDEverlight 0603 green + 330 ΩC2986059, C25104Driven from VSYS by /CHG, so it lights while the system is off. A few mA.
J2BAT pads3 pads, back: + − T—Solder pads for the cell lead. T is TS, for an NTC cell.
Schematic — block 2.
Board — top-left, with the set resistors in line with their pins. The BAT pads are on the back.
Datasheet — the typical application circuit. BQ24074 p.1
Datasheet — TI's worked ISET, ILIM, ITERM and TMR calculations, the same equations used above. BQ24074 p.34

Block 43.3 V LDO

RefPartValue / MPNLCSCWhy
U3LDOTI TLV75533PDBVR, SOT-23-5C404027500 mA, 25 µA quiescent, 238 mV max dropout at 500 mA, and stable with 1 µF ceramics. Its enable input is what the power latch drives: off draws about 0.1 µA. A buck-boost would hold 3.3 V down to an empty cell, but costs area and quiescent current; firmware cuts off at 3.5 V instead.
C20IN1 µF 0603 X5R 50 VC15849Datasheet ≥ 1 µF (≥ 0.47 µF effective). A 50 V part loses under 10 % at 4.4 V.
C21, C22OUT1 µF + 10 µFC15849, C19702≥ 1 µF required. About 8 µF effective, plus about 28 µF across the whole 3V3 net.
Schematic — block 4.
Board — below the charger on the left.
Datasheet — headline specs and the typical application circuit. TLV755P p.1
Datasheet — the 6.0 V absolute maximum on EN, which sizes the USB divider R66/R63. TLV755P p.4
Datasheet — dropout (3.3 V rows: 215 mV max at 85 °C), and EN VHI 1 V / VLO 0.3 V. TLV755P p.6

Block 7Power button (soft latch) and status LED

What was asked for: a momentary button that powers up the CPU, which then latches power on. The button stays readable, and the CPU can switch itself off. USB power also keeps the board on (option 1).

RefPartValue / MPNLCSCWhy
SW1ButtonPanasonic EVQPUC02K, side-actuatedC79174Its plunger stands 0.5 mm past the left edge, so it can be found and pressed through the rubber. It is low profile, and the same part as the first board. A press puts VSYS on BTN_RAW.
D5OR diodeBAT54C, common cathodeC37704Two Schottky inputs in one SOT-23: BTN_RAW and PWR_HOLD (GPIO19) OR'd onto the LDO's EN. The low VF keeps EN high from 3.3 V logic.
R63EN pull-down100 kΩC25741Holds the LDO off when nothing drives EN.
D6, R66USB → EN1N4148WS + 100 kΩC2128, C25741USB keeps the board on. Without it, a blank board or the UF2 bootloader (which never drives PWR_HOLD) would lose power as soon as the button is released. With R63, R66 forms a 2:1 divider, so EN stays below 6 V even at the charger's 10.5 V OVP.
Q3, R64Button read2N7002 + 100 kΩC8545, C25741The 4.4 V button node must not reach a GPIO, so an N-FET pulls GPIO8 (internal pull-up) low while the button is pressed. R64 discharges the gate after release.
D2Status LEDXL-1010RGBC-2812B-S, 1.0 × 1.0 mm WS2812B-typeC51900942The 1010 addressable LED that was asked for, with full RGB from one GPIO. It needs 3.5–5.5 V, so it runs from VSYS (≥ 3.5 V above the firmware cutoff). Its DI threshold of 0.7 × VDD ≤ 3.08 V is met by 3.3 V logic.
U11LED supply switchTPS22918DBVR, ON = 3V3_SYSC131941The LED idles at 0.35 mA, which would drain the cell while the board is off. A second TPS22918 does the switching with one part already on the BOM, in place of a P-FET, an N-FET and a resistor.
R62, C133DIN series, decoupling330 Ω, 100 nFC25104, C1525The usual WS2812 series resistor, which damps ringing on DIN, and the LED's supply cap.

Sequence: a press puts VSYS on EN through D5, 3.3 V comes up and the RP2350 boots. Firmware drives GPIO19 high early in boot, so the user holds the button only until that point. To switch off, firmware drives GPIO19 low (it can't while USB is in; it can still sleep and turn the LED and motors off). The board is designed with no separate user button; SW1 is read on GPIO8 while the board runs.

Schematic — block 7.
Board — SW1 on the left edge with the latch parts between it and the chip; the LED and U11 on the right edge.
Datasheet — BAT54C: 30 V, 200 mA, common cathode (the third symbol). This is Diodes Inc.'s sheet; the BOM's BAT54C,215 is Nexperia's, with the same pinout. BAT54 p.1
Datasheet — TPS22918: 1–5.5 V, 52 mΩ, quick output discharge. It is used here as U11, and again as U5 for the sensor rail. TPS22918 p.1
Datasheets missing: XL-1010RGBC-2812B-S (LCSC only), 2N7002, 1N4148WS and EVQPUC02K. The pinouts come from the LCSC/EasyEDA footprints and the KiCad library, and the electrical needs here are far from the limits of any of these parts.

Block 3Battery voltage sense

RefPartValueLCSCWhy
R60, R61Divider1 MΩ / 1 MΩC26083Puts 4.35 V at 2.18 V, under the ADC's 3.3 V range, while drawing only 2.1 µA from the cell all the time.
C64Reservoir100 nFC1525Without it, a 500 kΩ source into an ADC input of about 100 kΩ reads badly wrong. With it, each conversion dips the node by only about 21 µV. Recovery time is 50 ms; a battery gauge at ≤ 1 S/s doesn't notice.

The ADC reference is 3V3, which falls in LDO dropout below about 3.4 V. The gauge reads a ratio and is trusted above about 3.5 V. The 1 µA worst-case pin leakage spec would allow a 24 % error on paper; real leakage is in the nA range. Calibrate once against a known cell voltage.

Schematic — block 3.
Board — down the right edge, away from the buck inductor.

Block 5Switched sensor rail

RefPartValue / MPNLCSCWhy
U5Load switchTI TPS22918DBVR, SOT-23-6C131941Turns the five barometers fully off in sleep (0.5 µA switch leakage). Each power-up is also a clean power-on reset, which the DPS368 needs to select SPI. It has an adjustable slew (CT) and quick output discharge.
C50CT470 pF C0GC75274Rise time ≈ 0.85–0.95 ms, inside the DPS368's 0.001–5 ms supply-ramp window. Inrush ≈ 30 mA instead of about 0.3 A. Keep it under about 2.7 nF.
R50ON pull-down100 kΩC25741The ON pin must not float while the RP2350 is in reset.
C51, C52IN, OUT1 µF, 10 µFC15849, C197021 µF at VIN as recommended. 10 µF of bulk for the five sensors.
Firmware rule: park SCK, SDI and all five CS lines low before dropping SENS_EN, and keep them low until the rail is back. A line left high back-powers the sensors into the switch's 25 Ω discharge path.
Schematic — block 5.
Board — left side, below the LDO.
Datasheet — the rise-time equation and table: 470 pF at 3.3 V gives 850 µs. TPS22918 p.14

Block 11Tactile array: five DPS368 barometers

RefPartValue / MPNLCSCWhy
U20–U24BarometerInfineon DPS368XTSA1, LGA-8 2.0 × 2.5 × 1.1 mmC3232508Squeeze sensing after Tenzer, Jentoft and Howe (2014): MEMS barometers cast under rubber read contact pressure. The DPS368 is small and waterproof (IPx8), with ±6 Pa relative accuracy and up to 128 Hz per sensor. It speaks SPI. $4.21 each.
C120–C124Decoupling100 nF, one per sensorC1525The datasheet shows 100 nF on each of VDD and VDDIO. Those pins are adjacent with GND between them and on the same rail, so one cap within 1 mm of both serves them (a logged deviation).
Firmware rule: hold all five CS lines high, raise SENS_EN, wait ≥ 12 ms, then pulse each CS low once (read ID 0x0D = 0x10). Until a sensor sees CSB low it is an I2C slave at 0x77 on the shared SCK/SDI lines.
Schematic — block 11.
Board — all on the back: four corners and the centre.
Datasheet — pinout and the SPI 4-wire pin roles. DPS368 p.6
Datasheet — the SPI 4-wire application circuit that this block follows. DPS368 p.19, Fig. 8
Datasheet — blocking caps, 100 nF "as close to the package pins as possible". DPS368 p.20, Table 11
Datasheet — the recommended pads and stencil the footprint now matches. DPS368 p.41, Fig. 18
Datasheet — handling: no vacuum on the vent hole, no blown air, no ultrasonic cleaning. DPS368 p.43

Block 12IMU

RefPartValue / MPNLCSCWhy
U306-axis IMUST LSM6DS3TR-C, LGA-14 2.5 × 3C967633$1.67 with 14k in stock, against the BMI270 at $2.76 and the LSM6DSO at $3.90 with 519 in stock. Tap, wake-on-motion and activity detection are built in. It runs on I2C1 at 0x6A (CS tied high, SA0 to GND), with INT1/INT2 on GPIO5/18.
R130, R131I2C pull-ups4.7 kΩC25900Fast mode (400 kHz) up to about 75 pF of bus. The bus is a few cm with one device; the datasheet's example uses 10 kΩ.
C130, C132VDD, VDDIO100 nF eachC1525One per supply pin, as the datasheet asks.
C131Bulk10 µFC19702Not required; included because the IMU shares 3V3 with the radio and the RP2350.
Schematic — block 12.
Board — left edge, middle, close to GPIO6/7.
Datasheet (reference part) — mode-1 connections of the LSM6DSO, which has the same package and pin positions. LSM6DSO p.35, Fig. 21
Datasheet missing: the LSM6DS3TR-C datasheet could not be downloaded (ST times out). Every number in its audit comes from the LSM6DSO and is marked "verify". The register map and WHO_AM_I differ between the two parts, so firmware must use the DS3TR-C map. Please attach it.

Block 13Motor channels

RefPartValue / MPNLCSCWhy
Q1, Q2Low-side switchAOS AO3400A, SOT-23C20917A JLC basic part. Logic level, 30 V, 5.7 A, with about 21 mΩ typ / 37 mΩ max at VGS = 3.3 V (Fig. 5). At 0.2 A a channel dissipates about 1 mW, and even at the 1 A design figure only about 70 mW.
R40, R42Gate series100 ΩC25076Slows the edges to about 200 ns and damps ringing. The motor leads are antennas a few cm from the radio. That is 0.5 % of a 25 kHz period.
R41, R43Gate pull-down4.7 kΩC25900Not 100 kΩ. RP2350 erratum E9: a GPIO configured as an input can leak about 120 µA and float near 2.2 V, above VGS(th), which would run the motor uncontrolled at boot or in BOOTSEL mode. The erratum asks for ≤ 8.2 kΩ.
D3, D4FlybackB5819W, SOD-123 SchottkyC85981 A, 40 V, VF ≤ 0.6 V at 1 A. Clamps the switch node to VSYS when the FET turns off. At 0.2 A it dissipates at most about 0.12 W (0.6 V × 0.2 A).
C40/C41, C42/C43Bulk + HF22 µF 0603 + 100 nF per channelC86295, C1525Supply the PWM current locally, so it does not pass through the cell lead and the charger FET. VSYS ripple is about 0.1 V per channel at 0.2 A. Stagger the two PWM phases by 180° to halve it.
J4MOT pads3 pads, back: VSYS M1 M2—Each motor goes between VSYS and its Mn pad, and the FET sinks the current.
Schematic — block 13.
Board — mirrored either side of the USB-C, each flyback in its corner; the MOT pads are on the back between the receptacle's shell pads.
Datasheet — AO3400A ratings: VDS 30 V, VGS ±12 V, RDS(on) < 48 mΩ at 2.5 V. AO3400A p.1
Datasheet — RDS(on) against VGS: about 21 mΩ at the 3.3 V drive. AO3400A p.3, Fig. 5
Datasheet — B5819W: 40 V, 1 A, VF 0.6 V at 1 A, Tj ≤ 125 °C. This is MCC's sheet; the LCSC part may come from another maker with the same ratings. B5817W–B5819W p.1

Block 6Debug and test pads

RefPartValue / MPNLCSCWhy
J3SWD pogo row5 pads, back: SWDIO SWCLK RUN BOOT GND—Program and debug before casting with a pogo clip; ENIG finish, no paste. BOOT bridged to GND at power-up gives the UF2 bootloader. Placed on the back under the radio, where nothing else lands.
J5Test pads3 pads, back: VSYS 3V3 1V1—The three rails a first power-up checks. 1V1 under load is also the acceptance test for the core inductor.
J6Debug Probe connectorJST SH BM03B-SRSS-TB, not fitted(C160389)Footprint for the Raspberry Pi Debug Probe's 3-pin cable, in its order SC, GND, SD. It is hand-fitted for bench work and left out of the BOM and CPL.
Schematic — block 6.
Board — back, under the radio.
Datasheet — SH headers: BM03B-SRSS-TB is the 3-circuit top-entry part. JST SH p.3

Passives

Datasheets in hand

PartFileStatus
RP2350 (datasheet + hardware design guide)rp2350-datasheet.pdf, hardware-design-with-rp2350.pdfread, audited
W25Q32JV flashw25q32jv.pdfread, audited
ABM8-272-T3 crystalabm8-272-t3.pdfobtained 2026-10-18; matches the audit's assumptions
RM2 radio modulerm2-datasheet.pdfread, audited
BQ24074 chargerbq24074.pdfread, audited
TLV755P LDOtlv755p.pdfread, audited
TPS22918 load switchtps22918.pdfread, audited
DPS368 barometerdps368.pdfread, audited
AO3400A MOSFETao3400a.pdfread, audited
B5819W Schottkyb5819w-mcc.pdfobtained 2026-10-18 (MCC's sheet)
BAT54C dual Schottkybat54-diodes.pdfobtained 2026-10-18 (Diodes Inc's sheet)
JST SH connectorjst-sh.pdfobtained 2026-10-18
Sunlord MPL2016 inductor (the fallback)inductor-mpl2016.pdfread
LSM6DS3TR-C IMU— (LSM6DSO used as reference)missing: please attach
USBLC6-2P6 ESD—missing: please attach
TYPE-C-31-M-12 receptacle—missing: please attach
XL-1010RGBC-2812B-S LED, 2N7002, 1N4148WS, EVQPUC02K, AOTA-B201610S3R3-101-T—missing (low risk: basic parts or the reference design's own)

Open items that touch component choices

Full component list

Generated from circuit.py and bom/parts.yaml by scripts/doc_images.py (parts.json). Click a block number to jump to its section.

RefValueMPNLCSCFootprintBlock
loading…