Digital piano firmware for the Raspberry Pi Pico.
Go to file
2024-04-14 10:13:59 -04:00
.cargo src/pins.rs: make TransparentPins struct 2024-04-14 10:13:59 -04:00
src src/pins.rs: make TransparentPins struct 2024-04-14 10:13:59 -04:00
vendor/embassy-usb-logger get basics working 2024-04-07 21:50:56 -04:00
.gitignore get basics working 2024-04-07 21:50:56 -04:00
build.rs chore: format + licencing 2024-04-08 15:57:14 -04:00
Cargo.lock src/pins.rs: make TransparentPins struct 2024-04-14 10:13:59 -04:00
Cargo.toml src/pins.rs: make TransparentPins struct 2024-04-14 10:13:59 -04:00
LICENSE chore: format + licencing 2024-04-08 15:57:14 -04:00
memory.x initial commit 2024-04-06 22:07:35 -04:00
README.md src/pins.rs: make TransparentPins struct 2024-04-14 10:13:59 -04:00

geode-piano

Digital piano firmware for the Raspberry Pi Pico. This project only attempts to expose the keyboard as a MIDI device.

installation

  • Clone project.
  • Go into project directory.
  • Install elf2uf2-rs.
  • cargo run --bin --release geode-piano

materials

  • 1 Raspberry Pi Pico (preferably with pre-soldered headers)
  • 2 MCP23017 I/O extender chips, DIP format
  • 2 pull-up resistors for I²C (1-10kΩ), these are optional but recommended
  • 1 USB to Micro-USB cable with data transfer
  • Many jumper cables
  • Breadboard

wiring

rails

  • Pin 3 -> GND rail
  • Pin 36 (3V3OUT) -> power (positive) rail

i2c

Let's call the closest MCP23017 chip to the Pico MCP A, and the further one MCP B.

  • GP16 -> MCP A SDA
  • GP17 -> MCP A SCL
  • Pull-up resistor from GP16 to power rail
  • Pull-up resistor from GP17 to power rail

For both MCP23017s:

  • MCP RESET -> power rail
  • MCP A0, A1, A2 -> GND rail for 0, power rail for 1
    • MCP A should be 0x20 (GND, GND, GND), MCP B 0x27 (3V3, 3V3, 3V3)
  • MCP VDD -> power rail
  • MCP VSS -> GND rail

If you are missing dependencies, consult Alex Wilson's guide on Rust Pico development.