Intro: 4x4x4 DotStar LED Cube on Glass PCBs
The inspiration for this project came from other tiny LED cubes like HariFun's and that of nqtronix. Both of these projects use SMD LEDs to build a cube with really small dimensions, however, the individual LEDs are connected by wires. My idea was to instead mount the LEDs on a PCB, as intended for surface mount parts. This would also solve the problem of arranging the LEDs neatly in a matrix with same distances which can be often tricky when connecting them by wires. The obvious problem with PCBs is that they are opaque and therefore the individual layers would be hidden behind each other. Browsing through the web with this in mind, I stumbled upon CNLohr's instructions on how to make clear glass PCBs. This is how I came up with the idea to make a small cube from SMD LEDs mounted on glass PCBs. Although it is not the world tiniest LED cube (this title probably still belongs to nqtronix), I think the glass PCBs add a nice new touch to the large variety of already existing LED cubes.
Step 1: Bill of Materials
The LED cube consists of just a few materials as listed below
- microscope slides (25.4 x 76.2 x 1 mm), e.g. amazon.de
- copper tape(0.035 x 30 mm), e.g. ebay.de
- DotStar Micro LEDs (APA102-2020), e.g. adafruit or aliexpress
- prototype PCB board (50 x 70 mm), e.g. amazon.de
- arduino nano, e.g. amazon.de
- PCB spacers, e.g. amazon.de or aliexpress
The microscope slides will serve as substrate for the PCBs. I decided to cut them into square pieces of 25.4 x 25.4 mm size. The copper foil should be thin enough for etching, while 1 mil (0.025 mm) is usually the standard for PCBs, a thickness of 0.035 mm works fine. Of course the width of the copper tape should be larger than 25.4 mm to cover the glass substrate. I decided to use the DotStar LEDs in the smaller available 2020 package. These LEDs have a build-in controller which allows you to address all LEDs with a single data line, i.e. there is no need for shift registers or charlieplexing. Apparently there are two different kind of pad layouts for the DotStar LEDs (see above). The PCB layout I designed is for the one shown on the left. You will need 64 LEDs for the cube, I ordered 100 pieces to have some spare ones which can also be used for future projects. Everything will be mounted on a prototype PCB board which should be large enough so that the arduino nano fits on it. I cut a smaller piece from a 50 x 70 mm double-sided board (single-sided will also work). PCB spacers will serve as pedestals for the base. You will also need some thin wires for making the connections on the prototype PCB and maybe some "Dupont cables" for testing.
For making the cube you will also need the following chemicals
- ferric chloride solution
- epoxy glue, e.g. Norland NO81 or NO61
- soldering paste
- general purpose adhesive, e.g. UHU Hart
To etch the copper off the glass substrates I got a 40% ferric chloride solution from a local electronics store. I used ferric chloride since it is cheap and easily available, however, there are some downsides and you should also consider other etchants such as sodium persulfate. An overview of different etchants and their up- and downsides can be found here. I made the PCBs using the toner transfer method and used acetone to remove the toner after etching. To glue the copper foil onto the glass substrate you should get a transparent epoxy glue which is temperature resistent (because of the soldering) and ideally also resistent to acetone. I found that especially the latter is hard to find, however, most epoxies are mildly resistent to acetone which is enough for our purpose since we only have to wipe the surface with it. I decided to use the UV curing epoxy Norland NO81, mainly because I work at a company which is selling the stuff. At the end I was not super happy as the epoxy did not stick very well to the glass substrate although it is especially designed for bonding metal to glass. In his tutorial CNLohr uses this epoxy which you might want to consider alternatively. For soldering the LEDs onto the PCB you will need soldering paste, I recommend one with a low melting point to reduce the stress for the LEDs and the epoxy. You should also get some flux for fixing solder bridges. At last we will need some adhesive for gluing the glass PCBs to the base. I used the general purpose adhesive UHU Hart but there might be better options.
In addition, you will need the following tools for this build.
- laser printer
- glass cutter
- hot air soldering station
soldering iron with small tip
The laser printer is needed for the toner transfer method, an inkjet printer will not work here. I used a laminator for transferring the toner to the copper. While it is also possible to do this with an iron, I found that the laminator gives better results. The hot air soldering station is for soldering the SMD LEDs, it is also possible (and maybe more convenient) to do this with a hot plate or reflux oven but you may still need a hot air soldering station for rework. In addition, a soldering iron with a small tip is recommended for fixing solder bridges and for making the connections on the base PCB. You will also need a glass cutter for cutting the microscope slides into square pieces.
Step 2: Printing the PCB Layout
The DotStar LEDs will be mounted on 4 identical PCBs, each contaning an array of 4x4 LEDs. I did the layout for the PCBs with Eagle and exported it to a pdf file. I then mirrored the layout, arranged several on a single page and also added some marks for cutting them out afterwards. This pdf file can be downloaded below. I have also attached the Eagle files in case you would like to make any changes to the board layout. In addition, I made a layout for a solder stencil which can be etched from the same copper foil. The stencil is optional but it makes it easier to spread the solder paste onto the PCB. As already mentioned the layout should be printed with a laser printer. You cannot use normal paper but should use some kind of glossy paper instead. There is a special kind of toner transfer paper (see e.g. here) but many people just use the paper from magazines (e.g. IKEA catalogue). The advantage of toner transfer paper is that its easier to remove the paper from the copper after transfer. I tried this toner transfer paper and also some magazine pages and found that the magazine pages worked even better. The problem with my toner transfer paper was that the toner sometimes did rub off before, e.g. when cutting out the individual layouts so I do recommend to use some other brand. In the already mentioned tutorial by CNLohr he uses this brand which may work better. After printing the layouts for the PCBs and solder stencil cut them out with an exacto knife. In principle you only need four PCB layouts and one stencil but it is definitely useful to have at least twice as many as it is unlikely that all transfers will work.
Step 3: Making a Copper Clad on Glass
At first you have to cut the microscope slides into square pieces using a glass cutter. Conveniently you can find a tutorial for almost anything on youtube. By searching for "microscope slides cutting" I found this tutorial which shows you how its done. It is a bit tricky to get this to work nicely and I wasted a lot of microscope slides but if you ordered 100 pieces as I did, you should have way more than enough. Again, I recommend to make at least twice as many substrates as needed (about 8-10) as you will probably make some mistakes along the way. After that cut the copper tape into pieces which are a little bit larger than the square glass substrates. Clean both the substrate and the copper foil with alcohol or acetone and then glue them together. Make sure there are no air bubbles trapped inside the glue. As already mentioned I used Norland NO81 which is a fast UV curing adhesive that is recommended for bonding metal to glass. I also followed the instructions from CNLohr and roughened one side of the copper foil to make it stick better to the glass. In retrospect, I would probably do it without roughening as this made the transmission of light through the PCBs slightly diffuse and I would have preferred to have them look more clearly. In addition, I was not super happy with how well the glue did stick to the glass and found that the edges do sometimes peel off. I am not sure if this was due to improper curing or due to the glue itself. In the future I would definitely try out some other brands. For curing I used an UV lamp for checking banknotes which coincidentally had the emission peak at the correct wavelength (365 nm). After curing I cut away the overlapping copper with an exacto knife. For the solder stencil I also cut some extra pieces of copper foil without gluing them onto a substrate.
Step 4: Transferring the PCB Layout
Now the toner from the laser print has to be transferred to the copper which is done by heat and pressure. At first I tried this with an iron but then later used a laminator. The picture above shows a comparison of both techniques with an earlier version of the PCB layout. As can be seen the laminator produced much better results. Most people use a modifed laminator which can be heated to higher temperatures. In his tutorial CNLohr first uses a laminator and afterwards also heats it with an iron. I just used a standard laminator and no iron which worked just fine. For the transfer I placed the laserprint facedown onto the copper and fixed it with a small piece of sticky tape. Then I folded it into a small piece of paper and ran it about 8-10 times through the laminator while turning it upside down after each run. After that I put the substrate with the laserprint into a bowl of water and left it soaking for a few minutes, then I carefully peeled off the paper. If you use toner transfer paper, the paper usually comes off easily without leaving any residue. For the magazine paper I had to gently rub off some of the remaining paper with my thumb. If the transfer did not work you can just remove the toner from the copper with acetone and try again. The solder stencil layout was transferred to the bare copper foil in the same way.
Step 5: Etching the Copper
Now it is time for etching the copper. During this process the copper will be removed from the substrate except for the regions where it is protected by the toner. In order to protect the backside of the copper foil with the solder stencil layout, you can just paint it with permanent marker. I should mention that you should of course take some protective measures when working with an etchant such as ferric chloride. Although ferric chloride does not burn through your skin it will at least produce nasty yellow-brown stains, so gloves are definitely recommended. Also you will probably not be surprised by the fact that acid is harmful to your eyes so you should wear protective goggles. As far as I understand, there is no gas produced during etching but you may still want to do this in a well ventilated area as fresh air is always good for you ;-) Fill the ferric chloride solution into a small container (you can protect your workspace from accidental spillage by placing this then in a larger container). When putting in the PCBs, I again followed the instructions by CNLohr and put the substrates face down into the liquid so that they stay floating on top. This is very convenient as you will know exactly when the etching is finished which you are otherwise not able to see in the brown solution that will get even darker during the etching. In addition, it also keeps some convection going below the substrates. For me the etching process took about 20 minutes. After all the unwanted copper is etched away rinse the PCBs with water and dry them off. You should be left with some nice transparent glass PCBs. The last thing to do is to remove the toner from the copper traces with acetone. Just gently wipe the surface with it as the acetone will also attack the glue. Please DO NOT flush the used ferric chloride down the drain as it is harmful to the environment (and will probably also corrode your pipes). Collect everything in a container and dispose of it properly.
Step 6: Soldering the LEDs
Depending on your equipment and SMD soldering skills the next part may be quite time consuming. First you have to get the soldering paste onto the pads on the PCB where the LEDs will be connected. If you have etched a solder stencil you can attach it to the PCB with sticky tape and then just generously spread the paste across. Alternatively, you can use a toothpick to put small amounts of soldering paste onto each pad. After that the usual thing to do would be to place the LEDs and then put everything in a reflow oven (= toaster oven for many electronic hobbyists) or onto a hot plate. However, I have found that this will generally produce some solder bridges which are very hard to remove afterwards since you cannot access the pads below the LEDs. For this reason, I first melted the solder with my hot air station and then afterwards fixed all the solder bridges with a soldering iron using flux and a desoldering braid to remove excess solder. Then I soldered the LEDs one by one with hot air. Of course the faster method would be to use a hot plate or oven but the advantage of my method is that you can test the PCB after each step. Also for me soldering almost has a meditative vibe to it ;-). Take care to solder the LEDs in the correct orientation as shown in the schematic above. For testing I used the "strandtest" example from the adafruit DotStar library and connected the SDI, CKI and GND wires as shown above. It turns out that the VCC connection is not needed to get the LEDs to light up but I observed that the red and blue color of the first LED always lit up simultaneously. This was not the case when VCC is also connected, however, it is hard to connect all four wires if you only have the normal amount of hands available ;-).
Step 7: Prepare the Base PCB
Once you have finished all the glass PCBs with the LEDs attached it is time to prepare the bottom PCB where they will be mounted. I cut a piece with 18x19 through holes from a prototype PCB which provides enough space for mounting all components and making all necessary connections and also having four holes drilled at the edges where the PCB spacers can be attached. One could make the PCB even smaller by using an arduino micro instead of an arduino nano and choosing spacers with a smaller diameter. The schematic of the PCB is shown above. At first you should solder the pins for the arduino to the PCB without attaching them to the arduino because some of the wires have to go below the arduino (of course I did this wrong the first time). Also make sure that the longer side of the pins is facing away for the PCB (i.e. the arduino will be attached to the longer side). Then use some thin wire to make the connections as shown in the schematic. All wires are running on the bottom of the PCB but are soldered on the top. Note that you also have to create four solder bridges to make the connections for VCC, GND, SDI and CKI with the arduino pins. VCC will be connected to the arduino 5 V pin, GND to GND, SDI to D10 and CKI to D9. The wiring turned out a little messier than I thought although I tried to arrange everything so that you have to make the fewest connections possible.
Step 8: Attach the Glass PCBs
Finally you can do the last step of the assembly, i.e. attaching the glass substrates to the base. I did start with the front layer which is located at the side of the base that is closer to the arduino. In this way you can test every layer after it has been mounted as the signal runs from front to back. However, as the solder pads face to the front it makes the soldering of the other layers a bit complicated as you have to reach in between them with your soldering iron. To attach the PCB, I applied a small amount of adhesive (UHU Hart) to the bottom edge of the glass PCBs (where the pads are located) and then pressed it firmly onto the base and waited until it stuck reasonably well. Afterwards, I added some more glue to the bottom at the back side of the PCB (opposite of the solder pads). To be honest I am not 100% happy with the result as I was not able to mount the PCBs exactly vertical. It might be better to make some kind of jig to ensure that the layers stay vertical until the glue has dried completely. After mounting each layer I made the solder connections by applying a generous amount of solder paste to the six pads at the bottom so that they get connected to the corresponding solder points at the bottom PCB. For soldering I did not use hot air but my normal soldering iron. Note that for the last layer you only have to connect four pads. After mounting each layer I tested the cube with the "strandtest" example code. It turned out that, although I tested every layer beforehand, there were some bad connections and I had to resolder two of the LEDs. This was especially annoying since one of them was located in the second layer and I had to reach in between with my heat gun. Once you got everything working the build is finished. Congratulations!
Step 9: Uploading the Code
I just made a simple example sketch with a few animations which is shown in the video above. The code uses the FastLED library and is based on the DemoReel100 example. I really like this library as it already provides functions for fading color and brightness which makes it easy to generate great looking animations. The idea is for you to go ahead make some more animations and maybe share your code in the comments section. In the example sketch I set the overall brightness to some lower value for two reasons. Firstly, at full brightness the LEDs are annoyingly bright. Secondly, all 64 LEDs at full brightness can potentially draw much more current than the arduino 5 V pin is able to source safely (200 mA).
Step 10: Outlook
There are a few things which could be improved on this bulid, most of which I have already mentioned. The main thing I would like to change is making a professional PCB for the base. This would allow to make the base smaller and look nicer and also avoid the annoying process of wiring everything by hand. I also believe that the glass PCB design would allow further miniaturization of the whole cube. In his instructable of (possibly) the world tiniest LED cube, nqtronix writes that he originally planned to use the worlds smallest RGB LEDs with size 0404 but that he did not manage to solder wires to them. By using glass PCBs one could really go for the worlds tiniest LED cube. In this case I would probably also cast everything in epoxy resin similar to the cube by nqtronix.