Skip to the content
PCBKitNew board
4 layers36 × 12.8 mmSutterspeed, the printed circuit board in 3D

USB light oscilloscope (STM32C071, 400 kS/s photodiode front end) with a Windows viewer and camera shutter speed measurement

Size
36 × 12.8 mm
Copper layers
4
Thickness
0.8 mm
Parts
35
Nets
42
Pads
134
Tracks, vias
325, 52
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
13 Jul 2026
Updated
1 Nov 2026

Overview

Sutterspeed is an open-source printed circuit board by StaRadian, from the StaRadian/sutterspeed repository on GitHub. It is a 4-layer board of 36 × 12.8 mm with 35 parts on 42 nets, routed with 325 tracks and 52 vias.

It is built around the TEMD5510FX01, ME6211C33M5G-N and STM32C071G8U6, with the USBLC6-2SC6 among its other parts. Its parts include 14 capacitors, 13 resistors, 4 ICs, 2 connectors and 1 diode. It belongs with the sensors and measurement boards and the STM32 boards of this library.

Main components

4

README

README.md

sutterspeed

A light oscilloscope on a small USB board: a photodiode front end sampled at 400 kS/s, a Windows viewer that works like a bench scope (time base, vertical scale, trigger, filters, measurements, cursors), and a shutter measurement mode that times a single light pulse — the original purpose of the board was testing camera shutter speeds.

viewer

Hardware

  • STM32C071G8 (Cortex-M0+, 48 MHz), USB full speed
  • TEMD5510 photodiode, transimpedance stage (10 kΩ) followed by gains ×1 / ×11 / ×121
  • the three stages are sampled together every 2.5 µs and merged into one wide-range value (the most sensitive stage that is not clipped; gain ratios are learned while running)

KiCad 10 project in kicad/, fabrication files (BOM, positions, Gerbers) in kicad/production/.

Repository

pathcontents
firmware/srcfirmware: ADC/DMA acquisition, scope engine (trigger, decimation, roll, pulse capture), USB CDC command line
firmware/tools/viewer-rsWindows viewer (Rust, egui), also updates the firmware over USB
firmware/testhost test of the scope engine with synthetic light pulses
firmware/libCMSIS, STM32C0 HAL, TinyUSB (git submodules)
code/STM32CubeMX pin configuration
kicad/schematic and PCB

Clone with the libraries:

text
git clone --recursive https://github.com/StaRadian/sutterspeed.git

Viewer

Download sutterspeed-viewer.exe from the releases, plug in the board and pick its COM port.

  • Horizontal: 10 µs/div .. 5 s/div, position, sample rate (400 kS/s and divisions of it). Long time bases roll live.
  • Vertical: lx/div and position, AUTO follows the signal smoothly; drag the trace to move it.
  • Trigger (10 ms/div and faster; slower time bases roll live): AUTO / NORMAL / SINGLE, rising or falling edge, level knob or drag the ◀ marker. While SINGLE waits, the previous trace stays on screen, dimmed.
  • Filter: moving average or low-pass on screen; the board triggers on the same filtered signal.
  • Min width (next to the filter): light has to stay past the level at least this long to trigger, so short flashes and flicker are passed over. 0 = off (shown as HOLDOFF).
  • Measurements: max, min, mean, peak-peak, flicker, frequency, period, width, duty, rise time; cursors A/B.
  • Shutter measurement (pulse icon under the trigger, works like SINGLE): waits for one light pulse and shows it from start to end. The open time runs from the light rising through the trigger level to it falling back through it (on the filtered trace when a filter is set), with the nearest nominal speed and the error in EV. The trigger looks at a 40 µs average (or the filter), the timing at the 2.5 µs samples. Pulses from about 100 µs to tens of seconds. ▶ goes back to the running scope.
  • Update (chip icon): Update from GitHub downloads the newest release, writes its firmware to the board when it is newer and replaces the viewer when it is newer (restart to use it). Firmware goes over USB through the board's own bootloader, which needs no driver; no STM32CubeProgrammer needed. Older boards (before 0.4.0) and blank chips are written through the ST bootloader; if the PC has no driver for it, the viewer installs Windows' own WinUSB (one Windows permission prompt). Write built-in firmware writes the firmware that comes inside the viewer (no internet needed, blank boards too); a .hex/.bin file can be written as well. From a script: sutterspeed-viewer --flash [sutterspeed.hex] (no file: the built-in one), sutterspeed-viewer --update (viewer only).

Build: the firmware first (firmware/build/sutterspeed.hex goes into the viewer), then cd firmware/tools/viewer-rs && cargo build --release.

Firmware

Build with STM32CubeCLT (arm-none-eabi-gcc, CMake, Ninja):

text
cd firmware
cmake -S . -B build -G Ninja
cmake --build build

See firmware/README.md for flashing and the serial protocol.

Status and limits

  • The lux scale comes from the datasheet (≈10 nA/lx for illuminant A, ≈15 counts per lx) and is not calibrated; other light sources (LED, daylight) can read tens of percent off. zero removes the dark offset only — cover the sensor when using it.
  • The 2.5 µs samples are noisy (tens of lx at room light, and LED room light may flicker at tens of kHz); slower sample rates and the filters average it out. Set the shutter trigger level clearly above the room light.
  • Measured on one board: stage ratios ×10.9 (×11 / ×1) and ×13.0 (×121 / ×11, nominal 11); the firmware learns them while running (adc and gain show them).

Copyright © 2026 StaRadian. All rights reserved. The libraries under firmware/lib keep their own licenses.

Parts

35
QtyValueFootprintReferences
510kResistor_SMD:R_0402_1005MetricR3, R5, R6, R9, R12
4100nFCapacitor_SMD:C_0402_1005MetricC4, C6, C9, C10
3100Resistor_SMD:R_0402_1005MetricR10, R11, R14
31nFCapacitor_SMD:C_0402_1005MetricC11, C12, C14
31uFCapacitor_SMD:C_0402_1005MetricC2, C3, C5
210pFCapacitor_SMD:C_0402_1005MetricC8, C13
21kResistor_SMD:R_0402_1005MetricR7, R13
25.1kResistor_SMD:R_0402_1005MetricR1, R2
1100kResistor_SMD:R_0402_1005MetricR8
110uFCapacitor_SMD:C_0603_1608MetricC1
147pFCapacitor_SMD:C_0402_1005MetricC7
1BLM18PG221SN1DInductor_SMD:L_0603_1608MetricFB1
1ME6211C33M5G-NPackage_TO_SOT_SMD:SOT-23-5U2
1PCB USB-C 14PPCB_USBC:PCBTypeC_14PJ1
1STM32C071G8U6Package_DFN_QFN:QFN-28_4x4mm_P0.5mmU1
1SWDConnector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ2
1TEMD5510FX01personal:Vishay_TEMD5510FX01D1
1TLV9064IPWRPackage_SO:TSSOP-14_4.4x5mm_P0.65mmU4
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U3

Questions

How big is the Sutterspeed PCB?

It measures 36 × 12.8 mm and has 4 copper layers, 0.8 mm thick.

What parts does the Sutterspeed use?

35 parts, built around the TEMD5510FX01, ME6211C33M5G-N, STM32C071G8U6 and USBLC6-2SC6. 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 Sutterspeed KiCad files?

From the StaRadian/sutterspeed repository on GitHub, at the commit this page was made from: the board is kicad/sutterspeed.kicad_pcb and its schematic kicad/sutterspeed.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Sutterspeed design in my own project?

Its repository states no licence, so its author keeps all rights: ask StaRadian before reusing the design.

Similar boards

  • 4 layers45 × 45 mmTEP000, the printed circuit board in 3D

    TEP000

    davidholmes1066/HR_Monitor

    Open source heartrate monitor

    54 parts
  • 4 layers15.4 × 25.5 mmChiquito, the printed circuit board in 3D

    Chiquito

    devcexx/chiquito

    Smol development / testing board for STM32C071

    17 parts
  • 4 layers33.2 × 33.2 mmPendant, the printed circuit board in 3D

    Pendant

    picafe/pendant

    A pendant built from two PCBs: a 8×8 bicolor LED matrix module (red, orange, green) and controller board with battery charging, USB-C power, 5 V boost, and motion sensing.

    46 parts
  • 4 layers70 × 60 mmPay sensors, the printed circuit board in 3D

    Pay sensors

    utat-ss/HERON-pay-pcbs

    Payload PCBs for Heron Mk. II

    65 parts
  • 6 layers90 × 90 mmCodex micro wired revA route nognd, the printed circuit board in 3D

    Codex micro wired revA route nognd

    slopus/codex-keybored

    A 100% vibe-coded hardware build: Fusion 360, six-layer KiCad PCB, STM32 firmware, and live JLC factory handoff.

    97 parts10
  • 2 layers35 × 100 mmWalkieTalkie, the printed circuit board in 3D

    WalkieTalkie

    GuzziFlipFlops/ESP32-Walkie-Talkie

    An open source ESPNOW based walkie talkie with a 600 meter tested distance, with an OLED and multiple buttons to interact with

    66 parts7MIT
  • 2 layers86.5 × 27.5 mmComfospot50 full, the printed circuit board in 3D

    Comfospot50 full

    cornim/comfospot50

    The schematic and PCB in this directory are the project-authored controller board design. The board is intended to interface an ESP32-C3 with the existing ComfoSpot panel.

    29 parts4GPL-3.0
  • 4 layers41 × 33 mmDarknet smao, the printed circuit board in 3D

    Darknet smao

    dcbokonon/darknet-smao

    Darknet SMAO: Meshtastic LoRa+BLE mesh node SAO for DEF CON 34

    36 parts4