Back to all work
Flagship · Co-Founder & EE / Firmware Lead

Slingshot

Basketball training-load BLE wearable · LA / OC · Mar 2026 – Present

A battery-powered sensor pod worn on an upper-arm compression sleeve that turns a training session into data, fusing motion and heart-rate into a single Session Load Score, plus jump count, vertical, and heart-rate intensity zones. As co-founder and EE/firmware lead, one of just two engineers on the team, I own the hardware and embedded systems end to end: schematic capture, PCB layout, fabrication, assembly, and firmware bring-up of a matchbook-sized mixed-signal board.

V1 dead-short on the 3.3 V rail — bench-isolated V2 respin in manufacturing Firmware in development
Slingshot module, stylized 3D Drag to rotate
Interactive stylized module, drag to rotate. Abstract 3D, not the production layout; real fabrication renders below.
What it crosses
4-Layer Mixed-Signal PCBPower ElectronicsBLE / 2.4 GHzSensor FusionEmbedded C/C++Web Bluetooth

Most of the engineering difficulty here is coexistence: a 2.4 GHz radio, a switching power supply, and a microvolt-level optical heart-rate front end all have to share one matchbook-sized board without corrupting each other. The design is built around protecting RF range and signal quality while still fitting a full sensor suite, on-board logging, and a complete battery-management chain.

The V2 board

Smaller, denser, in manufacturing now

3D renders of the V2 design currently being built at a new factory. V2 folds V1's four discrete power ICs into one nPM1300 PMIC, swaps the nRF52840 module for the smaller nRF54L15 module, and moves the whole board to ball-grid packages that get placed by machine and X-ray-inspected. (Renders only — schematics, layout, and Gerbers stay in-house.) Tap either to enlarge.

V1 → V2

What V1 taught us, and what V2 changed

The first board came back from the fab with a dead short to ground on the 3.3 V rail — zero ohms — most likely the radio module sitting slightly tilted and bridging two pads underneath, where you can't see them without pulling the part. That is a normal first-board result. Isolation is live work on the bench; V1 isn't called good until it powers clean. In parallel, V2 was drawn against the honest list of what designing V1 already taught us to change, and is now in production at a new factory (the first one couldn't hit our summer schedule).

Power — four chips to one
  • V1 spread power across four chips: charger, buck-boost, 1.8 V regulator, fuel gauge.
  • V2 folds all four into a single nPM1300 PMIC made for wearables — less board area, fewer ways to be wrong.
Radio — nRF52840 → nRF54L15
  • Kept it as a pre-certified module rather than a bare chip; own RF certification would cost more time than the size saved.
  • Smaller footprint, newer core, same BLE toolchain path.
Charging & data — magnetic + BLE
  • V1 charged and moved data over USB-C. V2 drops the port.
  • Charging → sealed two-pin magnetic connector; data → off the board over BLE, the path the live app needs anyway. Survives sweat and a gym floor.
Assembly — smaller packages, X-ray
  • V2 uses parts whose connections sit under the chip instead of along the edges (BGA/WLCSP).
  • Placed by machine, checked by X-ray, unreworkable by hand. We kept the flash memory in an older larger package on purpose, so at least one chip can still be lifted at the bench.

The full public build log lives at slingshot-sports.com/buildlog.

Power architecture

The power tree, collapsed into one chip

V1 spread charging, buck-boost regulation, a small 1.8 V rail, and fuel gauging across four discrete ICs. V2 folds all four functions into a single Nordic nPM1300 PMIC designed for wearables at this size — same power tree, fewer parts, less area, fewer ways to be wrong.

In
Magnetic 2-pin
5 V (V2)
PMIC
Nordic nPM1300
charger + buck-boost + LDO + fuel gauge
Rails
3.3 V / 1.8 V
held across full Li-Po curve
Brain
nRF54L15
module (V2)

Why buck-boost, not an LDO: a single Li-Po swings roughly 3.0–4.2 V, which crosses the 3.3 V output. A buck-boost holds the rail steady across the whole discharge curve where a buck or LDO would sag — a topology choice driven by the battery's behavior, with the switch-node loop kept tight and well away from the radio and the optical front end.

Sensing

Five-sensor suite

Fused over I²C / SPI / QSPI and read by the nRF52840, which logs to flash and streams telemetry over BLE.

HOSTNordic nRF54L15 module (V2)
2.4 GHz BLE SoC, reads every sensor, logs to flash, streams telemetry over BLE.
I²C/SPIBMI323
6-axis IMU, jump / sprint / deceleration
I²CDedicated HR sensor + LED + photodiode (V2)
Optical HR (PPG) with a controlled light path — we own the optics instead of inheriting a module's.
I²C/SPIBMP585
Barometer, vertical-jump height
QSPIW25Q64
64-Mb NOR flash, session logging. Kept in an older larger package on purpose — one chip we can still lift at the bench.
on-PMICnPM1300 fuel gauge
Battery state-of-charge, folded into the PMIC.
Sensor fusion: the IMU's takeoff/landing signature is fused with barometric altitude to estimate jump height far more reliably than the IMU alone, then streamed out over BLE.
My ownership

What I own, end to end

Hardware / PCB
  • Designed a 4-layer mixed-signal stackup (Top / GND / 3V3 / Bottom) in Fusion Electronics; fabricated & assembled at JLCPCB.
  • Managed RF + switching-supply + sensitive-analog coexistence on one matchbook-sized board.
  • Owned BOM, sourcing, and DFM, basic vs. extended parts, CPL rotations, JLCPCB rules, and checked board-to-enclosure fit via ECAD↔MCAD.
Power electronics
  • Architected the full power tree: BQ24074 → TPS63802 → 3.3 V (+1.8 V), MAX17048 on the battery node.
  • Chose buck-boost over an LDO to hold 3.3 V across the whole Li-Po discharge curve.
  • Applied switching-layout discipline to protect both RF range and heart-rate signal quality.
Firmware
  • Embedded C/C++ on PlatformIO + nRF52 Arduino core for the nRF52840, two build environments (dev kit + custom board).
  • One codebase, two data paths: flash logging + USB-CDC dump (v1) and BLE streaming (v2), additive, no rewrite.
  • Built a synthetic "demo stream" to validate capture → packetize → stream before sensors were wired; SWD/J-Link via nRF52840-DK.
Design review & V2 respin
  • Caught an nRF52840 VDDH/VDD power-mode conflict and a switching-regulator feedback-divider error before fab, both the kind of mistake that kills a board and costs a multi-week respin.
  • Drove the V2 respin at a new manufacturer: ~500 DRC violations resolved on 0.35 mm-pitch WLCSP/BGA via via-in-pad escape routing; five units in factory build with flying-probe test.
  • Routed every datasheet number — pins, registers, electrical limits — to verification rather than memory. Built in observability: rail test points and a debug header so a non-booting board isn't a black box.
Breadth

Beyond the board

The pod is only half the product. I also built the software that turns its data into something a coach can use.

Python pipeline → 1-page PDF reportWeb Bluetooth coaching consoleMulti-device connectRole-based access · CRUDCompany site on Vercel
Named parts

Real part-level fluency

nRF54L15 · nRF52840 (BC840M) · nPM1300 · BMI323 · BMP585 · W25Q64 · BQ24074 · TPS63802 · MAX30102 · MAX17048
Stack
Embedded C/C++BLE · nRF54L15 / nRF52840nPM1300 PMICPlatformIOFusion ElectronicsVia-in-pad · WLCSP/BGASensor FusionWeb BluetoothPythonGit