We can rebuild him; we have the technology.
So a few posts ago I hinted that I was thinking about rebuilding my old hand-soldered LED matrix using 3D printing to assist me, here’s a log of that build!
Last time around I drilled all the holes in a piece of acrylic by hand – this meant that some of the holes were off-centre or not perpendicular to the frame. This meant the finished product wasn’t the neatest. Not having access to a laser-cutter, I started by designing a 3D printed frame that would hold all the LEDs during the build. This design went through a few revisions as I had dial in some settings on the 3D printer to get the holes to come out at exactly 5mm. The total print time was about 3 hours.
Here’s print number 3, which as you may notice only accommodates a 15×9 matrix. It was a good proof of concept and I started soldering up a few columns of LEDs while waiting to print the next version. I also printed out jigs to help with the consistent bending of the LEDs.
I finally ended up with a print I was happy with. Next task, soldering! I’d purchased an Adafruit LED matrix driver which not only dictated the dimensions of the matrix, but also the wiring:
I studied this schematic for a good while trying to understand how Charlieplexing worked. Eventually I figured out a neat way to bend and orient each LED. I worked in columns, soldering LEDs from bottom to the top. After each set of 9 LEDs, I’d hook up my Arduino and check that they were soldered correctly. Charlieplexing involves reverse biasing a number of LEDs and I had to diagnose and replace a couple of failed LEDs during the process.
After a few hours of soldering (and a bit of swearing) I’d finished soldering all 144 LEDs (over 300 solder joints):
Hooking it up to the driver was fairly straight-forward, but I did accidentally catch the iron on the plastic (in a non-visible place). Soldering near thermo-plastics takes a lot of care!
I had to slightly tweak the Adafruit library to mirror the co-ordinate system; pixel 0,0 ended up being in the top right rather than the top left.
Here’s the matrix running one of their examples:
It’s a rather nice effect! The Adafruit library has all sorts of functions for drawing graphics, so I’ll no doubt be playing with that some more in the future. In version one of the matrix, I had to create a font by hand and figure out how to scroll it across the display. It’s nice to have that functionality out of the box. Another nice feature is the ability to easily adjust the brightness of each individual LED (using PWM). I’m sure it’s something I could have wired and coded myself if I didn’t have the driver board, but I would also have had to figure out how to effectively code the multiplexing, which was hard enough on the old matrix and that didn’t use Charlieplexing!
At the moment I’ve got my Arduino Uno hanging off the back of the matrix, but at some point I intend on replacing it with something with a slightly smaller form factor, possibly an Adafruit Metro Mini or Adafruit Trinket.
As ever the STL files are on Thingiverse if you fancy building one yourself!