

Sideline cam hub
Input a video of your game and out pops the all player positioning data you want. for I put into Minutes
- Size
- 84 × 52 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 102
- Nets
- 188
- Pads
- 513
- Tracks, vias
- 1,289, 334
- Pours
- 16
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 20 Sep 2026
- Updated
- 31 Oct 2026
Overview
Sideline cam hub is an open-source printed circuit board by dawsboss, from the dawsboss/Sports-Camera-Analytics- repository on GitHub. It is a 4-layer board of 84 × 52 mm with 102 parts on 188 nets, routed with 1,289 tracks and 334 vias.
It is built around the SHT45-AD1B-R2, TPS22917DBV and PCA9555PW, with the SN74AVC4T774PW, AP2112K-1.8TRG1 and ICM-42688-P among its other parts. Its parts include 37 resistors, 30 capacitors, 11 ICs, 11 connectors and 3 diodes.
Main components
9SHT45-AD1B-R2
DFN-4(1.5x1.5)-40℃~+125℃ 1.08V~3.6V 16bit 1uA 8.3ms Factory temperature calibration I2C ±0.1℃ DFN-4(1.5x1.5) Temperature Sensors ROHSSensirionTemperature SensorsTPS22917DBV
SOT-23-6-40℃~+125℃ 0V~5.5V 1 2A 80mΩ Active High Load Switch Output discharge function、Soft-start、Reverse current blocking SOT-23-6 Power Distribution Switches ROHSTexas InstrumentsPower Distribution SwitchesPCA9555PW
TSSOP-24-40℃~+85℃ 1.1uA 16 2.3V~5.5V 3mA 400kHz 8 I2C、SMBus Interrupt Output Reset function、Cascade and address expansion TSSOP-24 I/O Expanders ROHSNXP SemiconductorsI/O ExpandersSN74AVC4T774PW
TSSOP-16-40℃~+85℃ 1 1.2V~3.6V 1.2V~3.6V 380Mbps 4 Bidirectional Level translator Power-off protection、Output enable high-impedance Tri-State TSSOP-16 Translators, Level Shifters ROHSTexas InstrumentsTranslators, Level ShiftersAP2112K-1.8TRG1
SOT-25-40℃~+85℃@(Ta) 1 1.8V 500mV@(600mA) 50uVrms 55uA 600mA 65dB@(1kHz) 6V Fixed Over Current Protection、Over Temperature Protection、Enable Positive SOT-25 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSDiodes IncorporatedVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsICM-42688-P
LGA-14(2.5x3)-40℃~+85℃ 1.71V~3.6V 16bit 2KB 7.5uA IMU (accelerometer + gyroscope) SPI、I2C X,Y,Z X,Y,Z ±16g ±2000dps Motion Event Detection, Synchronization, Timestamp Support LGA-14(2.5x3) Accelerometers ROHSTDK InvenSenseAccelerometersSM04B-SRSS-TB(LF)(SN)
SMD,P=1mm,卧贴-25℃~+85℃ 1 1A 1mm 1x4P 2.9mm 4 4.32mm 4P 50V 6mm Auxiliary Solder Pin Copper alloy PA SH Surface Mount, Right Angle Tin UL94V-0 White SMD,P=1mm,卧贴 Wire To Board Connector ROHSJSTWire To Board ConnectorFH12-22S-0.5SH(55)
SMDSMD Pre-ordered Connectors ROHSHirose ElectricFFC, FPC (Flat Flexible) Connector AssembliesAPT1608SGC
0603-40℃~+85℃ 12mcd 150° 2.2V 20mA 565nm 568nm 62.5mW Discrete Diode Water Clear Yellow Green 0603 LED Indication - Discrete ROHSKingbrightLED Indication - Discrete
README
README.mdSideline
A pipeline that turns match footage into per-player data a coach can use.
It is built for a fixed camera that sees the whole pitch; Veo follow-cam
exports are the proof-of-concept input, used because the footage already
exists and because a hostile input keeps the pipeline honest. The two
differ in exactly one stage, registration, and everything else is shared.
The design is in docs/SPEC.md; read it first.
Published aggregates land in Firebase next to the fixture that
soccer-manager already
tracks. Raw video never leaves the homelab.
Where this is
| Milestone | State |
|---|---|
| M1 registration spike | Run on two real Veo exports. The classical detector fails the gate on both after every improvement that could be measured (per-frame grass colour, line thresholds that follow it, plausibility checks compared three ways on four datasets). A pretrained line network, unmodified, already finds on the worn field what the classical code cannot; fine-tuning it on this footage is the next registrar. The measurements are in spike/evals/ and the plan in docs/NEXT.md. |
| M2 skeleton | API, Postgres, MinIO, RQ worker, S0 ingest and S1 sampling. Runs with no services on a laptop, or under docker compose. |
| M3 detection | Feasibility measured: players are found off the shelf, the ball is not, by any model tried. A ball detector trained on this footage is the gate for possession, passes and restarts. Not built. |
| M4 onward | Not started. |
Run the M1 spike
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
sideline spike path/to/veo-export.mp4 --frames 200 --out spike/outThen open spike/out/overlays/ and read the summary. spike/README.md
says what the numbers mean, what the overlays show, and what the machinery
cannot do yet. sideline spike --selftest runs the same thing on rendered
frames with known truth, which checks the code rather than the footage.
Run the skeleton
With no services at all, against a directory and SQLite:
sideline ingest path/to/match.mp4 --pitch-length 100 --pitch-width 64
ls data/blobs/matches/<id>/With the real stack:
docker compose up --build
curl -F file=@match.mp4 -F capture_mode=followcam -F pitch_length=100 -F pitch_width=64 \
-F kickoff_offset_ms=95000 localhost:8000/matchesThe API docs are at localhost:8000/docs, MinIO's console at :9001. The
upload takes the accompanying inputs the spec lists (sm_match_id, roster,
stints and periods as JSON, kickoff offset, pitch dimensions), stores the
file under matches/{id}/source/, and queues S0 then S1. Every stage writes
matches/{id}/{stage}/v{n}/ with a manifest.json recording its config and
inputs; a re-run is a new version.
Layout
sideline/
contracts.py tracks/events/registration Parquet schemas, match.json, player_stats.json
timeline.py video time -> match seconds, via soccer-manager's periods and stints
sports/ the plugin boundary; soccer.py is the pitch model, entities, stat definitions
registration/ S5: one interface, two implementations
followcam.py per-frame fit from painted lines (the PoC)
static.py clicked landmarks once per placement, homography or spline (the product)
lines.py grass, paint, line segments
synthetic.py frames rendered through a known camera, for tests and the selftest
storage/ blob store (local or MinIO) and the versioned artifact layout
db/ matches, jobs, stage runs, review decisions
stages/ s0_ingest, s1_sampling
api/ FastAPI
worker/ RQ worker
spike.py, cli.py the M1 spike and the `sideline` command
docs/SPEC.md the design, copied from the living doc
hardware/ the static rig (M9): what to buy, the printed four-camera head or hidden pod, aim cards
tests/ pytest; everything runs on a CPU with no servicesTests
pytestRegistration is checked against frames rendered through a known camera: box views must land within a metre of the truth, a midfield view with one crossing line must be refused with a reason, and a sweep of views must register at least 70% with few confident wrong answers. The stages, the API and the local pipeline run on a three-second synthetic clip. None of that is the M1 gate; the gate is real footage.
Parts
102| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | 100n | Capacitor_SMD:C_0402_1005Metric | C13, C17, C21, C25, C40, C41, C42, C43, C44, C45, C50, C52, C53 |
| 10 | 47 | Resistor_SMD:R_0402_1005Metric | R10, R12, R14, R16, R18, R20, R22, R24, R33, R34 |
| 8 | 100 | Resistor_SMD:R_0402_1005Metric | R40, R41, R42, R43, R50, R51, R52, R53 |
| 8 | 33 | Resistor_SMD:R_0402_1005Metric | R11, R13, R15, R17, R19, R21, R23, R25 |
| 7 | 1u | Capacitor_SMD:C_0402_1005Metric | C10, C14, C18, C22, C30, C31, C51 |
| 6 | 10u | Capacitor_SMD:C_0603_1608Metric | C12, C16, C20, C24, C32, C33 |
| 5 | SH 4-pin | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J3, J4, J5, J6, J7 |
| 4 | 1k | Resistor_SMD:R_0402_1005Metric | R4, R5, R8, R32 |
| 4 | 1n | Capacitor_SMD:C_0402_1005Metric | C11, C15, C19, C23 |
| 4 | FH12-22S-0.5SH | Connector_FFC-FPC:Hirose_FH12-22S-0.5SH_1x22-1MP_P0.50mm_Horizontal | P1, P2, P3, P4 |
| 4 | TPS22917DBV | Package_TO_SOT_SMD:SOT-23-6 | U3, U4, U5, U6 |
| 3 | M2 | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3 |
| 3 | green | LED_SMD:LED_0603_1608Metric | D1, D2, D3 |
| 2 | 0 | Resistor_SMD:R_0402_1005Metric | R2, R3 |
| 2 | 100k | Resistor_SMD:R_0402_1005Metric | R30, R31 |
| 2 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R7 |
| 2 | PCA9555PW | Package_SO:TSSOP-24_4.4x7.8mm_P0.65mm | U1, U2 |
| 2 | SN74AVC4T774PW | Package_SO:TSSOP-16_4.4x5mm_P0.65mm | U8, U9 |
| 2 | WE 68715014522 | sideline:WE_68715014522 | J1, J2 |
| 1 | +1V8 | TestPoint:TestPoint_Pad_D1.0mm | TP5 |
| 1 | +3V3A | TestPoint:TestPoint_Pad_D1.0mm | TP3 |
| 1 | +3V3B | TestPoint:TestPoint_Pad_D1.0mm | TP4 |
| 1 | 2k2 | Resistor_SMD:R_0402_1005Metric | R6 |
| 1 | AP2112K-1.8 | Package_TO_SOT_SMD:SOT-23-5 | U7 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.0mm | TP6 |
| 1 | ICM-42688-P | Package_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4y | U10 |
| 1 | SHT45-AD1B | Sensor_Humidity:Sensirion_DFN-4_1.5x1.5mm_P0.8mm_SHT4x_NoCentralPad | U11 |
| 1 | VIO 1V8/3V3 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP1 |
| 1 | XHS_BUS | TestPoint:TestPoint_Pad_D1.0mm | TP2 |
| 1 | XVS_BUS | TestPoint:TestPoint_Pad_D1.0mm | TP1 |
Similar boards
- 6 layers83.5 × 90 mm

- 4 layers65 × 56 mm

- 6 layers100 × 60 mm

Aether
nasheed-x/aether
Aether is a versatile flight computer for testing flight hardware and software, focusing on sensor fusion to monitor rocket states and interface with on-board systems.
180 parts10 - 4 layers394 × 110 mm

Gpu cluster backplane
antmicro/gpu-cluster-backplane
This project contains open hardware design files for a PCB supporting power distribution in a cluster composed of GPUs. This board has been derived from an open source d1600e-psu-breakout created by Antmicro.
616 parts4Apache-2.0 - 4 layers50 × 26.5 mm

Environment sensor sip baseboard
antmicro/environment-sensor-myra-baseboard
This repository contains open hardware design files for Antmicro's Environment Sensor Board variant which includes the MYRA SiP as well as temperature, pressure and humidity sensors.
59 parts3Apache-2.0 - 4 layers98.5 × 193.5 mm

- 6 layers70 × 80 mm

Cm5-carrier v2
ben5049/cm-carrier-hardware
Compact CM5 carrier board with an M.2 E-key connector and a 1000BASE-T1 Ethernet PHY, as well as other optional IO.
334 parts1AGPL-3.0 - 4 layers90 × 56.1 mm

K2-cm5-traeger
Gamecard/k2-plus-cm5
K2 Plus CM5 – Creality K2 Plus mit Upstream-Klipper auf einem Raspberry Pi CM5
137 partsGPL-3.0
Questions
How big is the Sideline cam hub PCB?
It measures 84 × 52 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Sideline cam hub use?
102 parts, built around the SHT45-AD1B-R2, TPS22917DBV, PCA9555PW and SN74AVC4T774PW. 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 Sideline cam hub KiCad files?
From the dawsboss/Sports-Camera-Analytics- repository on GitHub, at the commit this page was made from: the board is hardware/pod-board/hub/sideline-cam-hub.kicad_pcb and its schematic hardware/pod-board/hub/sideline-cam-hub.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Sideline cam hub design in my own project?
Its repository states no licence, so its author keeps all rights: ask dawsboss before reusing the design.