The circuit was simple, using shift registers to drive both columns and rows in a multiplex fashion such that only one row at a time was lit, only three lines of data are needed to drive the display. Being naive, I ventured down the path of hand wiring every single module in the modular display system by hand on a perf board. By the end of the first prototype I knew that this was a nigh on impossible task as I had set out to create at least ten of these modules, and the first one looked like the following picture after an entire month of work.
Realizing this, I set out to create a digital design of the circuit which I would then hand etch. The first part of this new saga was that I had to somehow drill the thru-holes of the PCB. With no access to a proper drill press, I ventured to build my own. Sourcing a motor and motor controller from eBay and a Dremel drill press attachment, I created the following contraption to drill the thousand holes that would be on each module board.
Using the usual toner transfer method to etch PCBs I was able to skip wiring only half of the traces on the board manually. As I decided to use only a single sided board due to my inexperience at etching, I had to manually wire many of the traces on the board. Although tedious, this only took a week versus the four that it took to hand wire the entire thing. An improvement at best.
After the completion of this first hand-etched module, I came to the realization that this was only a slight improvement on the hand wired version in terms of speed and labor. But I felt that I had no choice due to the large cost of PCB manufacturing. At this point I was ready to replace the slow Arduino that had powered the prototypes up until this point with a Raspberry Pi. The Raspberry Pi’s greater speed allowed me to refresh the display at a rate of 60 Hz while spitting out 243 bytes per row. Attaching the display to the Raspberry Pi was as simple as taking the Pi’s SPI output and driving it with wiringPi to the display. Full code is available on my GitHub. I wanted to be able to only have one cable going to the entire display, so I put the Raspberry Pi on a USB Wi-Fi module and powered it via a 5V DC source which also drove the display. Soon after getting everything up and running however, disaster struck. For reasons that I do not recall, I decided to make both the 12V input on the power supply and the 5V input on the display with identical DC barrel jacks. I quickly learned that the Raspberry Pi cannot survive 12V straight into the USB input and neither could any of the shift registers on the display.
After this point, I knew that I could not feasibly produce another ten displays where I would have to each and wire each board. It just took way too much time. Luckily, after the accident I happened upon a fairly cheap PCB manufacturer that allowed me to finish the display. A quick redesign was in order to suit the manufacturer’s specifications. The final design is shown below.
With these boards I was then able to solder and create ten fully working modules within two weeks.