Skip to the content
2 layers25 × 20 mmSmartBall PCB, the printed circuit board in 3D

Reproducibility materials for the MS thesis An Instrumented Baseball for Per-Finger Grip Force Measurement: Finger Force Tracks Delivery Effort Rather Than Release Velocity (Keaton Ruthardt, MS Computer Science — Data…

Size
25 × 20 mm
Copper layers
2
Thickness
1.6 mm
Parts
46
Nets
76
Pads
195
Tracks, vias
395, 68
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Aug 2026
Updated
14 Aug 2026

Overview

SmartBall PCB is an open-source printed circuit board by Keaton-Ruthardt, from the Keaton-Ruthardt/Masters_Thesis repository on GitHub, published under the MIT licence. It is a 2-layer board of 25 × 20 mm with 46 parts on 76 nets, routed with 395 tracks and 68 vias.

It is built around the NRF52840-QIAA-R, AP2112K-3.3 and MCP73831T-2ACI/OT-HXY, with the PAD1, ANT016008LCS2442MA1 and X50328MSB2GI among its other parts. Its parts include 14 capacitors, 7 resistors, 5 ICs and 1 inductor. It belongs with the nRF52 and nRF5x boards of this library.

Main components

6

README

README.md

An Instrumented Baseball for Per-Finger Grip Force Measurement

Reproducibility materials for the MS thesis An Instrumented Baseball for Per-Finger Grip Force Measurement: Finger Force Tracks Delivery Effort Rather Than Release Velocity (Keaton Ruthardt, MS Computer Science — Data Science, Oral Roberts University, 2026).

A regulation baseball instrumented with four thin-film force sensors under the leather cover, sampling all channels at 480 Hz and streaming over Bluetooth Low Energy, paired per pitch with TrackMan radar release velocity.

What the study found

Measured the way the field currently measures it — with a graded submaximal effort ladder — grip force predicts release velocity strongly and broadly: index + middle force at release reaches r = 0.59, and 15 of 20 grip features remain significant after Holm correction.

Holding commanded effort fixed removes that association. Index + middle force at release falls to r = 0.33 (n.s.), and its unique contribution to velocity variance is ΔR² = 0.000, against 0.743 for commanded effort alone. A mixed-effects model agrees (χ²(1) = 0.47, p = 0.49).

Three thumb-dominated features survive Benjamini–Hochberg correction (q = 0.035); none clears family-wise correction, and all are reported as exploratory.

The conclusion is that finger grip force, measured under a submaximal effort protocol, is largely a readout of delivery effort rather than a determinant of release velocity.

Layout

PathContents
thesis/The thesis (MSCS_Paper.docx) and its Quarto source, bibliography, and CSL style
defense/Defense presentation, including a copy with speaker notes
Masters_Thesis_and_Defense.zipThesis and presentation bundled together
firmware/Arduino sketches for the Seeed XIAO nRF52840
acquisition/ble_logger.py — BLE client, writes raw counts to CSV
calibration/Per-sensor calibration procedure, fitting script, factors, raw captures
analysis/Feature extraction, statistics, and figure generation
analysis/results/Derived, de-identified data and generated statistical reports
figures/Figures as they appear in the thesis
hardware/KiCad PCB project, schematic and layout PDFs, bill of materials
docs/Illustrated build guides, project plan, proposal

Firmware

  • pressure_logger_480/ — deployed acquisition firmware. 480 Hz, four samples per packet.
  • pressure_logger/ — earlier 120 Hz single-sample version; the host logger supports both.
  • isolation_test/ — channel-isolation gate.
  • sensor_test/, single_sensor/, calibrate_sensors/ — bench-check sketches.

Built with the Arduino IDE and the Seeed nRF52 mbed-enabled board package. The non-mbed package fails to link.

Wire protocol

The pressure characteristic carries a 36-byte packet: a 32-bit unsigned microsecond timestamp for the first sample in the batch, followed by four sample groups of four 16-bit unsigned ADC values each, little-endian, in channel order S1 through S4. Sample k within a batch occurs at the batch timestamp plus k × 2083 µs.

The earlier firmware sends a 12-byte packet: a 32-bit millisecond timestamp followed by four 16-bit ADC values. ble_logger.py derives the batch size from the packet length and works against either version without modification.

Data dictionary

Each logged CSV row contains:

ColumnMeaning
wall_isoHost wall-clock time, ISO 8601, UTC
wall_unix_msHost wall-clock time, integer ms since the Unix epoch
ball_t_msThe instrument's own timebase in ms — the authoritative timing column
s1–s4Raw ADC counts, 0–4095, in channel order
s1_N–s4_NConvenience force values in newtons
markerOperator-typed per-pitch tag (pitch id, effort, outcome)

Raw counts are the archived source of truth. Calibration is applied downstream in analysis, never on the ball, so it can be revised without re-collecting data.

Force conversion

For a sensor of resistance Rₛ in series with a fixed 10 kΩ resistor, the divider node read by the 12-bit ADC gives a conductance ratio

text
G = ADC / (4095 - ADC)
F = c * G

where c is the per-sensor calibration factor in calibration/calfactors_v3.csv, fitted through the origin by least squares over twenty applied-mass trials per sensor (R² = 0.961 to 0.995).

Reproducing the analysis

bash
pip install numpy pandas scipy statsmodels matplotlib
cd analysis
python thesis_analysis_v2.py     # feature extraction -> results/
python advanced_stats.py         # corrections, variance decomposition, bootstrap
python make_thesis_figures.py    # figures

A fixed random seed (20260805) makes every reported p-value reproducible: 20,000 permutations and 10,000 bootstrap resamples throughout.

Note that thesis_analysis_v2.py reads raw session captures, which are not distributed here (see below). The derived feature table it produces, analysis/results/per_pitch_features.csv, is included, and advanced_stats.py and make_thesis_figures.py run from it directly.

Participant data

Raw per-pitch session captures are not included, in accordance with the participant-privacy commitments described in the thesis. Participants consented to their data being used in the study; that consent did not extend to public redistribution of raw records.

Derived, de-identified summary data sufficient to reproduce the reported figures and models are provided in analysis/results/. Pitchers are identified only as P1, P2, P3.

Licensing

Both are permissive and allow reuse with attribution, which is the intent for a reproducibility release: you should be able to rebuild the instrument and re-run the analysis without seeking further permission.

Third-party software is used in accordance with its own licenses, none of which impose copyleft obligations on this project's code. TrackMan, PitchLogic, Kookaburra, FlexiForce, Tekscan, Seeed, and Nordic Semiconductor are trademarks of their respective owners, used nominatively to identify the products actually used or discussed. No endorsement is implied.

Safety

The instrument places a lithium-polymer cell and rigid electronics inside a ball thrown at speed. If you rebuild it, read docs/BALL_INTEGRATION_GUIDE.md first. Epoxy is poured in ~15 g layers with each cured before the next, because the exotherm of a single large pour is a genuine thermal hazard to an enclosed LiPo cell, and the cell is wrapped before potting. The ball is retired — not repaired — if the cover is breached, the potted block loosens, the cell swells or fails to hold charge, or the channel-isolation test fails after an impact. The cell cannot be removed once potted, so retirement means disposal of the whole assembly through appropriate lithium-battery disposal.

Citation

bibtex
@mastersthesis{ruthardt2026instrumented,
  author = {Ruthardt, Keaton},
  title  = {An Instrumented Baseball for Per-Finger Grip Force Measurement:
            Finger Force Tracks Delivery Effort Rather Than Release Velocity},
  school = {Oral Roberts University},
  year   = {2026},
  type   = {MS thesis}
}

Parts

46
QtyValueFootprintReferences
15PAD1TestPoint:TestPoint_Pad_D1.5mm3V3, A0, A1, A2, A3, CLK, G, G, Qi5v, RST, SWDIO, V, V, V, V
5100nF/16VCapacitor_SMD:C_0402_1005MetricC1, C2, C4, C5, C14
410KResistor_SMD:R_0402_1005MetricR1, R2, R3, R4
212pF/16VCapacitor_SMD:C_0402_1005MetricC6, C7
21uF/10V X7RCapacitor_SMD:C_0402_1005MetricC12, C13
24.7KResistor_SMD:R_0402_1005MetricR5, R6
24.7uF/16V X5RCapacitor_SMD:C_0402_1005MetricC9, C10
2PAD1TestPoint:TestPoint_Pad_D2.0mm-, +
110uF/10V X5RCapacitor_SMD:C_0402_1005MetricC8
11pF/50VCapacitor_SMD:C_0402_1005MetricC11
11uF/16V X7RCapacitor_SMD:C_0402_1005MetricC3
12.2uHInductor_SMD:L_0402_1005MetricL1
12KResistor_SMD:R_0402_1005MetricR7
1ANT016008LCS2442MA1ANT016008LCS2442MA1:ANT_ANT016008LCS2442MA1ANT1
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U1
1H3LIS331DLTRH3LIS331DLTR:QFN300X300X100-16NU3
1LIS3MDLTRLIS3MDLTR:XDCR_LIS3MDLTRU4
1MCP73831T-2ACI_OTMCP73831T-2ACI_OT:SOT95P280X145-5NU5
1NRF52840-QIAA-RNRF52840-QIAA-R:XCVR_NRF52840-QIAA-RU2
1X50328MSB2GIX50328MSB2GI:XTAL_MSB2GI_YXCXTAL1

Similar boards

  • 2 layers76.1 × 87.9 mmBadge ESC 2025, the printed circuit board in 3D

    Badge ESC 2025

    endsummercamp/badge-2025

    120 parts9
  • 2 layers67.1 × 23.4 mmAFE4404-tri PPG, the printed circuit board in 3D

    AFE4404-tri PPG

    ShifatHossain/AFE4404-tri-PPG

    An AFE4404 and ESP32 PICO D4/V3 based device to acquire three wavelength PPG signal.

    34 parts2
  • 4 layers45 × 49 mmSwarm drone, the printed circuit board in 3D

    Swarm drone

    aniranaway/Drone_Swarm

    A fully custom, low-level embedded hardware and firmware platform designed for autonomous multi drone swarms. The system integrates custom STM32-based flight controller PCBs, coreless DC motor drive arrays for a micro…

    108 parts
  • 4 layers50 × 6 mmPfeil, the printed circuit board in 3D

    Pfeil

    artandtechspace/Smart-Arrow

    66 parts
  • 4 layers65.1 × 25.1 mmPcb design 5, the printed circuit board in 3D

    Pcb design 5

    balneanudeep/NRF-52840-CUSTOM-PCB-DESIGN

    60 parts
  • 2 layers180 × 110 mmISD1700 sampler main board, the printed circuit board in 3D

    ISD1700 sampler main board

    hiro-akihabara/OpnBeat

    OpnBeat is open source Lo-fi sampler project

    180 parts67GPL-3.0
  • 2 layers87.3 × 86.3 mmDonut, the printed circuit board in 3D

    Donut

    cnlohr/donut

    MAGFest /is/ a donut.

    54 parts8
  • 2 layers424 × 139.2 mm5251-replacement pcb, the printed circuit board in 3D

    5251-replacement pcb

    listofoptions/5251-replacement-pcb

    a replacement pcb for the ibm 5251

    92 parts4

Questions

How big is the SmartBall PCB PCB?

It measures 25 × 20 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SmartBall PCB use?

46 parts, built around the NRF52840-QIAA-R, AP2112K-3.3, MCP73831T-2ACI/OT-HXY and PAD1. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the SmartBall PCB KiCad files?

From the Keaton-Ruthardt/Masters_Thesis repository on GitHub, at the commit this page was made from: the board is hardware/SmartBall_PCB.kicad_pcb and its schematic hardware/SmartBall_PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SmartBall PCB design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).