CAT5 cable proved really hard to solder, so I grudgingly used crimp connectors. I'd love to revisit this and route the wiring through the inside of the guitar

Designing the PCB to house the Arduino Pro Mini, MIDI interface hardware, and LED drivers

PCB etched

PCB all soldered up

PCB destroyed when I tried drilling holes in the enclosure with the PCB mounted, and the drill bit caught the enclosure and sent it flying across the garage

I scavenged the screw terminal blocks from it and started again

Etching second PCB

As long as I had to remake it, I went ahead and added a terminal for a status LED and a 1N5820 Schottky diode for reverse voltage protection (only drops about 450 mV, versus 1V+ for a regular rectifier diode like a 1N4001)

It's so time consuming drilling all those holes

Second PCB all soldered up

Not pictured: I ran into trouble getting the Arduino to chew gum and cross the street at the same time (i.e. read incoming MIDI messages while smoothly updating the PWM for the LEDs). The project was shelved for a few years.

2 years later: Testing replacing the Arduino with the Raspberry Pi 2 B

The RPi is much better suited to this task. A multi-threaded python script can comfortably do both tasks at the same time.

It works!

Roland GK-2A MIDI pickup mounted

Preparing to replace the bridge and neck single-coil pickups with humbuckers

New outlines scribed

Cutting the larger holes in the pickguard

All done

Humbuckers soldered and installed

Drilling more depth for the pickup adjustment

These humbuckers are quite a bit hotter than the single coils, and I can't adjust them low enough to sound good. The answer: Drill, baby, drill! (I hate myself)

Pickguard enlarged for MIDI pickup

Another problem was that the MIDI pickup (mounted on top of the pickguard) was less than a millimeter from the strings. I had to raise the action a bunch just to get them off of the pickup, but even so, they buzzed terribly. The answer: Cut away that section of pickguard, so the MIDI pickup can sit lower, on the guitar body itself

Everything re-installed

That's much better clearance now

But wait! Now the humbucker mounting ring is the problem

A quick solution

I considered sanding down the mounting ring so it wouldn't sit so high. But I was tired of half-measures.

Now we're talking

Etching PCBs is such a pain. This time around, I just opted for perfboard

The board takes 9V DC as input, which feeds three LM317's configured as constant current sources to send 350 mA to the red, green, and blue components of the two RGB LEDs. At the same time, a 7805 linear regulator (now replaced with a switching regulator equivalent) steps the 9V down to 5V DC to power the Raspberry Pi.

Just a shot of the solder side of the board

Planning the layout in the enclosure

With Radio Shack gone, I had to make do with the largest enclosure I could find at the local electronics supply store, which is just barely big enough. I'll have to stack the two boards to get it to fit, and even then I'm not sure it will work

Trying to find a layout that works

I could probably get away with this if I'm really precise in my drilling, but at this point tests showed that the 7805 was getting very hot producing the 5V for the Raspberry Pi, and a heat sink doesn't fit in this tight enclosure. That's also wasting a good chunk of the limited power I've got available. So I decided to order a 5V switching regulator from Mouser to replace the 7805, and as long as I was doing that, I decided to order a larger enclosure as well.

Drilling the holes in the new enclosure

USB passthrough mounting hole

Drilling the power jack mounting hole

Everything fits much more neatly in this enclosure

Also note the 7805 near the top right corner of the perfboard has been replaced with the switching regulator, which works very nicely. 1.5A current output and cool to the touch.

All hooked up

A shot of the front of the unit

The red LED comes on as soon as power is applied, and the green LED is turned on by the Raspberry Pi when the Python script is running

Adding a 1/4" jack connected to the RPi's 1/8" audio output

I got the genius idea to use the Raspberry Pi as a synth as well, using FluidSynth, to eliminate needing to carry a separate keyboard. This hasn't worked very well so far though -- the synth sounds terrible and has very high latency -- so I'm abandoning that idea for now. But I have another use in mind for that 1/4" jack...