Commit Graph
6 Commits
Author SHA1 Message Date
nils dfd79eb2e3 Hardware: connection table + KiCad netlist
docs/hardware-plan.md §11: authoritative connection table (refdes, all
nets by block — power, RM2 radio, USB/flash/SWD, CV DAC, 8 bipolar CV
channels, MIDI TRS, display/UI/keypad, spares).

hardware/netlist.net: machine-importable KiCad netlist (S-expr format)
derived from the table — components with footprints + all nets/pins.
Import: KiCad > File > Import Non-KiCad Netlist (or open as a netlist
to populate a board). Pins are logical (GPIO names, DAC/op-amp function
names); map physical QFN pins when placing footprints.
2026-08-21 16:58:34 +02:00
nils afb07dd1c0 Hardware plan: deepen + design bipolar ±10V CV from the start
- Power budget (BLE-only, never WiFi TX) with concrete mA table.
- Bipolar CV section: ±12V rails (boost + inverter), DAC 0-4.096V -> ±10V
  via difference amp with 2.048V mid-ref, per-channel gain/offset trim,
  OPA4192 on ±12V, bidirectional TVS. Function+polarity decides mapping
  (pitch stays 0..+10V standard on a bipolar output).
- Concrete BOM table (part numbers, packages, alternates).
- Risks updated for bipolar calibration + ±12V rail noise.
- Build order updated.
2026-08-21 11:02:11 +02:00
nils 9123f7691d Hardware plan: RM2 module, RP2040->RP2350 target
Use the pre-certified Raspberry Pi Radio Module 2 (RM2, CYW43439 + PCB
antenna) instead of a bare CYW43439 — eliminates RF design + cert; only
the datasheet antenna keepout remains. Dev/test on RP2040 (Pico W),
product on RP2350; firmware dual-builds via embassy-rp features.
2026-08-21 10:54:24 +02:00
nils 2fbfd88e90 Add v1 hardware plan
Custom all-in-one PCB (RP2040 + CYW43439), desktop USB-powered with 12 V
boost for 0-10 V CV, 3.5 mm TRS MIDI, 4× stereo CV (8-ch 16-bit DAC +
RRO op-amps), 64×32 OLED + tact buttons. Full pin map, power tree, CV
analog, MIDI circuit, BOM, risks. CYW43439 RF flagged as the key risk.
2026-08-21 10:47:14 +02:00
nils 50c8724607 Strip non-essential comments
Keep license/SPDX headers, public-API doc comments, spec/hardware
references (UUIDs, APA102 frame, MIDI byte semantics), and genuine
'why' notes (BOOTSEL edge-trigger, adv/scan split, borrow-checker
free functions). Remove code-restating narration, section dividers,
milestone/porting asides, and completed TODOs. No code logic changed.
2026-08-21 09:34:59 +02:00
nils d2bebc9e7b Initial import: Rust BLE-MIDI keypad for Pico W
Port of the C/BTstack BLE-MIDI keypad firmware to Rust (embassy + cyw43 +
trouble). 16-pad RGB keypad (APA102 SPI + I2C button expander), BLE-MIDI 1.0
GATT server (full codec: sysex, running-status, real-time), octave display
on BOOTSEL, onboard LED heartbeat, USB serial logging.

- src/keypad.rs      Pimoroni RGB Keypad driver
- src/midi_keypad.rs pad->Note On/Off + LED response state machine
- src/codec.rs       BLE-MIDI 1.0 codec (port of rppicomidi, MIT)
- src/main.rs        cyw43 BT bring-up + trouble GATT + MIDI pump
- src/octave.rs      octave digit display on BOOTSEL

GPL-3.0-or-later; codec.rs retains its MIT (rppicomidi) attribution.
2026-08-21 08:44:19 +02:00