Raspberry Pi Pico MIDI Splitter (TTL) – Part 2

This is the build guide for my Raspberry Pi Pico MIDI Splitter (TTL).

IMG_6568

Tutorials used in this project:

If you are new to microcontrollers, see the Getting Started pages.

Bill of Materials

  • Raspberry Pi Pico MIDI Splitter (TTL) PCB (GitHub link below)
  • Raspberry Pi Pico
  • 1x H11L1 opto-isolator
  • 3x 74HCT14 hex inverters (must be the HCT version, not the HC version)
  • 3x 220Ω resistors
  • 1x 470Ω resistor
  • 1x 4N914 or 1N4148 signal diode
  • 4x 100nF ceramic capacitors
  • 2x 5-pin, 180 degree DIN sockets (see photos for footprint)
  • Optional: 1x 6-way DIP socket
  • Optional: 3x 14-way DIP sockets
  • Optional: 2x 20 way pin header sockets
  • Pin headers

IMG_6561

Build Steps

This is the suggested build order:

  • Resistors and diode.
  • DIP sockets.
  • Ceramic capacitors.
  • Pin headers.
  • MIDI sockets.

Once everything is tested and checked, you can add the Pico.  The board uses the following GPIO pins:

  • UART 0 GP0/GP1 – linked to the two MIDI DIN sockets for MIDI IN and OUT.
  • GP6-13 – linked to the 8 5V TX outputs.

Here are some photos of the steps.

IMG_6562IMG_6563IMG_6564IMG_6565

In use there are 8 5V level serial TX lines on the right hand side of the board.  These can be connected directly to the RX pins of any 5V microcontroller, such as an Arduino.  These are NOT suitable for connecting to 3V3 microcontrollers such as the Raspberry Pi Pico.

A Note on Power

As there is no isolation between any connected (5V TTL) receiver and the Pico splitter, it is highly likely that if the receiving devices are powered up and the Pico splitter is not, then the Pico will get “parasitic power” from the serial lines.  In some experiments, I’ve seen an Arduino’s 5V RX line getting pulled down to ~2.5V via the otherwise unpowered HCT14s and trickling ~1.5-1.8V into the Pico’s VBUS pin.

The Pico doesn’t like this 🙂

It is quite likely the Pico gets stuck and won’t power on when power is finally applied to the splitter board.  The only solution is to remove power from all boards and power them up at the same time!

Testing

I recommend performing the general tests described here: PCBs.

Here are some sample applications:

PCB Errata

There is nothing to note that I’m aware of at present, other than the warning about about “parasitic power” if the board is unpowered but connected to a powered receiver.

Some future enhancements might include:

  • Breaking out UART 1 as pin headers for further expansion.
  • Having the option to power the inverters at 3V3 logic levels for use with 3V3 microcontrollers.
  • Include additional headers to break out spare Pico GPIO pins.

Find it on GitHub here.

Closing Thoughts

This could greatly simplify my Lo-Fi Orchestra as it can do the routing and filtering “all in one”.

It seems to work fine “as is” running my Pico MIDI Multi RX/TX python code.  The two videos below show the MIDI splitter routing MIDI channels 1-5 and then passing everything else across to the last three 5V serial OUT ports.  It also echos all MIDI input to the DIN MIDI output too.

But it would be really neat to enable USB MIDI, then the PC could plug directly into the Pico and I wouldn’t need to use my Roland UM-ONE anymore either.  It might also be interesting to experiment with cascading two of the boards to support all 16 MIDI channels.

These boards have been manufactured using the Seeed Fusion PCB service, which I am happy to continue to recommend. They have been supported with discount vouchers that I’ve been sent by Seeed for my previous projects.

Kevin

Leave a comment