Files
SN-L00/README.md
T
florian.berthold cd337b8718 Add Freerouting autoroute script
- autoroute.sh: Downloads and runs Freerouting in batch mode
- Updated README with complete PCB layout workflow
- Script handles DSN→SES conversion automatically

Usage: Export DSN from KiCad, run ./autoroute.sh, import SES
2026-01-23 05:41:09 +01:00

137 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SN-L00 Latency Tester
Eurorack module for measuring round-trip latency in audio/CV signal chains.
**Organization**: [SubModular](https://git.sub-net.at/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 | 6 HP (30mm) |
| 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](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. Place components using the script:
```python
# In KiCad Scripting Console (Tools → Scripting Console)
exec(open('scripts/place_components.py').read())
```
4. Autoroute using Freerouting:
```bash
# Export DSN from KiCad: File → Export → Specctra DSN
./hardware/kicad/scripts/autoroute.sh
# Import SES in KiCad: File → Import → Specctra Session
```
5. Fill zones: Press **B**
6. Run DRC: **Inspect → Design Rules Checker**
7. Export Gerbers: **File → Fabrication Outputs → Gerbers**
### Manufacturing
- PCB: 2-layer, 28×100mm
- Assembly: PCBWay or similar (SMD parts)
- Hand-solder: RP2040-Zero module, OLED module
- Panel: Aluminum or PCB (6HP)
## Firmware
Built with Raspberry Pi Pico SDK.
```bash
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](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
## Links
- Repository: https://git.sub-net.at/submodular/SN-L00
- Organization: https://git.sub-net.at/submodular
- Parent: [Sub-Net e.U.](https://sub-net.at)