florian.berthold d43c7976ad Add panel-to-PCB mounting system with M3 standoffs
Panel alignment:
- PCB offset 10mm from panel top
- Component holes aligned: OLED@25mm, jacks@45mm, button@58mm
- 4x M3 standoff holes at corners (5,5), (35,5), (5,75), (35,75)

Updates:
- Panel SVG and spec aligned with PCB layout
- Mounting holes added to PCB (Edge.Cuts layer)
- Regenerated Gerbers with mounting holes
- Updated autoroute.py to add mounting holes automatically

DRC: 0 unconnected, 7 cosmetic errors (courtyard overlaps)
2026-01-23 08:15:25 +01:00
2026-01-23 03:40:00 +01:00

SN-L00 Latency Tester

Eurorack module for measuring round-trip latency in audio/CV signal chains.

Organization: SubModular / Sub-Net e.U.

Features

  • Measures latency from 0.01ms to 999ms
  • 128×32 OLED display showing milliseconds
  • Three modes: Single shot, Continuous, Statistics
  • Skiff-friendly depth (<25mm)
  • USB serial output for logging

Specifications

Parameter Value
Width 8 HP (40mm)
Depth <25mm
Power +12V ~25mA
Power -12V 0mA
Resolution 0.01ms
Output 0-3.3V trigger
Input 0-10V tolerant

Project Structure

SN-L00/
├── hardware/
│   ├── BOM.md              # Bill of materials with LCSC part numbers
│   ├── kicad/              # KiCad schematic and PCB
│   │   ├── SN-L00.kicad_pro
│   │   ├── SN-L00.kicad_sch
│   │   ├── SN-L00.kicad_pcb
│   │   ├── README.md       # ASCII schematic reference
│   │   └── PCB_LAYOUT.md   # Placement guide
│   └── panel/
│       ├── PANEL_SPEC.md   # Dimensions and specifications
│       └── SN-L00_panel.svg # Panel design
├── firmware/
│   ├── CMakeLists.txt      # Pico SDK build
│   ├── README.md           # Build instructions
│   ├── include/            # Header files
│   └── src/                # Source files
└── docs/
    └── DESIGN.md           # Technical design document

Hardware

Components

Part Description
MCU RP2040-Zero (Waveshare)
Display 0.91" OLED 128×32 I2C
Output buffer 74LVC1G17 Schmitt trigger
Input buffer MCP6001 op-amp
Regulator AMS1117-3.3 LDO

Full BOM with LCSC part numbers in hardware/BOM.md.

PCB Layout (KiCad 8)

  1. Open hardware/kicad/SN-L00.kicad_pro

  2. Update PCB from schematic: Tools → Update PCB from Schematic (F8)

  3. Automated routing (from terminal):

    cd hardware/kicad
    python3 scripts/autoroute.py
    

    This places components, routes, and runs DRC automatically.

    Or manually in KiCad Scripting Console:

    exec(open('scripts/autoroute_full.py').read())
    
  4. Fill zones: Press B

  5. Run DRC: Inspect → Design Rules Checker

  6. Export Gerbers: File → Fabrication Outputs → Gerbers

Manufacturing

  • PCB: 2-layer, 40×100mm (8HP)
  • Assembly: PCBWay or similar (SMD parts)
  • Hand-solder: RP2040-Zero module, OLED module
  • Panel: Aluminum or PCB (8HP, 40.30×128.50mm)

Firmware

Built with Raspberry Pi Pico SDK.

export PICO_SDK_PATH=/path/to/pico-sdk
cd firmware
mkdir build && cd build
cmake .. && make

Flash sn_l00.uf2 via USB bootloader.

See firmware/README.md for details.

Usage

  1. Connect TRIG OUT to your signal chain input
  2. Connect your signal chain output to RETURN IN
  3. Press button to measure latency
  4. Long press to toggle continuous mode

Modes

  • SINGLE: Press to measure once
  • CONT: Auto-measures every 500ms, shows live reading
  • STATS: Shows min/max/average after continuous mode

Typical Latency Values

Source Expected Latency
Analog modules <0.1ms
Digital Eurorack (DSP) 1-5ms
Audio interface round-trip 3-20ms
DAW + plugins 5-50ms+

License

TBD

S
Description
Eurorack latency testing module
Readme 348 KiB
Languages
Python 51.6%
C 31.8%
Shell 15.3%
CMake 1.3%