PCB Mosaic
June 2018
PCB Mosaic

In the fall of 2016 I was getting ready to move out of my 13,000sq.ft home. This meant getting rid of useless things. I had a large amount of old printed circuit boards (PCBs) that I was keeping for parts. There was no way I could keep all of them and to be honest I rarely every found useful parts on these boards. I did like the aesthetics of the boards and I wanted a way to remember them without keeping all of them. I came up with an idea to build a mosaic of PCBs that I could hang on the wall to display a subset of the boards. I asked my brother to go thru all the boards I had and try to fit them on to a large piece of MDF I had lying around. Once he had filled the MDF sheet I packed up those PCBs to move and took the rest to an electronics recycling depot.

A year and a half later and I was settled in to my new place and looking for some art to decorate my newly built shop. I pulled out the MDF sheet and the box of PCBs and got to work. I painted the MDF a retro beige colour to contrast the dark colour of the PCBs. I looked at pictures that I had taken of the original layout and started to mount all of the PCBs on to the MDF. I used 1" screws and short pieces of hose to keep the PCBs raised off of the MFD about half an inch. The project had succumbed to some feature creep in that year and a half and now the plan was to have a number of LEDs randomly blinking on the board to make things more interesting. I used most of the LEDs that were already on the old PCBs and added a bunch more to fill out the look. I ran all the wires to bottom center of the MDF where the control board would be hidden under an old modem. I was also going to use the modem's power switch to turn the whole thing on and off. Then I decided some simple computer sounds at random intervals and a way to control all the features would be nice so a piezo speaker and IR receiver were added to the design.

With the design roughly laid out I got to work creating the schematic. The main circuit consisted of an ATMega328p and a couple of PCF8575 port expanders. A 7805 voltage regulator and a bunch of passives finish up the circuit. I decided that I wanted to have some LEDs fade in and out so those are directly controlled by the 328p PWM pins. The rest of the LEDs are controlled thru the port expanders. There are 16 LEDs that randomly blink on and off. Then there are 8 LEDs on an old modem that trace back and forth in a night rider style motion. The IR receiver is connected to one of the external interrupt pins and the piezo speaker is hooked up to a tone out pin. The microcontroller is programed thru the ICSP pins using the Arduino IDE. I also wired up a set of eight DIP switches from the old modem to control some of the functions without having to use the remote.

The programming is somewhat straight forward. I have limits on the maximum and minimum values for the blink on and off times, the duration of sounds, the speed of the night rider cycle, and how fast the LEDs fade in and out. These minimums and maximums are used to generate random values for all these things. This way the LEDs blink at different rates every time you turn the device on. There is also a command to re-random everything with the remote or DIP switch. I've set up a number of the LEDs to flash Morse code messages that are hard coded into the programming. There is also an Easter egg that can be unlocked if the DIP switches are set to the right value. I used lots of arrays and loops to try and keep the code clean. There's also a fast option that increases the rate at which the LEDs flash and leaves out the pauses between sounds. One thing that I would like to add in the future is code for the PIR sensor that is installed. My idea would be to keep the device off until someone got near and have it become active, or if it is already active, set it to fast mode.

Now that the circuit was designed in KiCAD I laid out PCB. The circuit isn't that complex but with all the headers for input and output the board ended up being bigger than I anticipated, about 3" square. I used FlatCAM to convert the gerber files in to gcode that I could run on my CNC rotary tool. I like that fact that FlatCAM can generate alignment pin holes so that milling double sided PCBs is very accurate. I've milled double sided PCBs in the past and had to manual align the second side, which is time consuming and prone to error.

Out of the mill and into some liquid tin to protect the copper clad from oxidizing. The first step in populating the board was soldering in the VIAs. I would like to find a better way to create VIAs on homemade boards like this, maybe using pins that could be pressed or riveted in to place, but for this project I simply soldered some thin wire between the two sides. After this I solder on the surface mount components and then lastly the thru-hole parts.

With the control board mounted I soldered all the wires from the LEDs and other parts of the project to headers that could be plugged into the control board. I built a simple frame out of some 2"x2" I had laying around and painted it a light brown. With everything complete I did some testing and fixed a number of wiring issues. When everything was working correctly I hung the project on the wall. Hanging the project was a lot more work than I thought it would be. The project is about four feet square and with the MDF and all the PCBs weighs a lot. I used a rope to hoist the thing into its final home.

All and all I would say that this was a fun project. There was nothing really ground breaking or particularly difficult about the project but it was a lot of work to get everything to come together. I hope it will be something that I will enjoy looking at for years to come.