Wednesday, November 20, 2013

Experience building the RadioShack 3D LED Cube Kit

While looking for something to use a gift card on, I stumbled across the Radio Shack 3D LED Cube Kit for Arduino. It'd been awhile since I'd tried building an electronics board project from scratch, and I'd seen some clever demos of "3D pixel" displays; I thought I'd try my hand at putting this together. What follows is my experience with it.

Ahh, it feels good to get back in the swing of things. I hadn't had a project that called for pulling out all the stops in awhile.
My workspace in full swing. I could use a bigger table.

The Process

The first phases of the project were fairly cathartic. Using the circuit board as a template (it has holes drilled in it to conveniently hold the LEDs for this purpose), I soldered the LEDs into 3-by-3 square layers. I used cut-up paperclips as ground bridges; crude, but free. Some caution must be exercised to avoid soldering positives to ground here.

One of the 3-by-3 layers. This also shows how I bent the positive leads to hook the layer below when connecting two layers together.
I find the sort of soldering that was required for the board to be very cathartic. It's the right balance of focused intent and mind-numbing tedium. It was at this point in the project that I was really glad I'd bothered to pick up this two-claw arm stand at some point in the past.

As I went, I pin-tested the connections with an ohmmeter to verify that I was closing the right circuits. At this point, I should have asked more questions of myself; some of the pin-outs I was seeing didn't match the ones in the documentation (note: zipfile). But I soldiered on, convinced that the error was in Radio Shack's docs, not my board...

It was at some time around this point that I realized I'd been using 90-10 lead core solder. This is generally not the tool for the job; 60-40 rosin-core is recommended for small electronics. I switched out and kept going. Unfortunately, the damage was already done...

In the words of the immortal Crow T. Robot...
"Well I won't do that again!"
Once I was using the right solder, connecting components to the circuit board was easy; snip the excess lead, apply heat from below, apply solder from above. Snipping the excess is pretty key; it turns out that a spare inch-and-a-half of wire lead can sink a lot of heat, and you'll waste a lot of time (and probably unnecessarily burn some fingers) trying to melt your solder with all that extra sink attached.

Conecting the layers together was a bit more of a challenge. Each of the nine positive leads in a layer have to be daisy-chained to the positive leads below, and the grid of grounding wires for that layer then run to a separate pin (individual LEDs are lit via essentially an "addressing" scheme; by closing the circuit to the positive lead for the column and the negative lead for the layer, the Arduino can enable one LED). Three tricks I found useful:

A push-me-pull-you

  1. I bent all the leads for a layer at 90 degrees mid-way down, which gave me a set of "hooks" to thread into the leads below.
  2. None of my pliers were really long and skinny enough to grab the leads and twist them off nicely. I took a page from my wife's playbook and built a "push-me-pull-you" device; we use a five-foot version to hook Christmas lights into a tall tree, the paperclip-sized version can catch the end of a lead and snake it over or under its neighbors to get a nice, solid connect for soldering.
  3. I soldered methodically and pin-tested thoroughly with the ohmmeter to verify no connections were missed; opposing corners (to stablize the layer), then the center, then go around, remembering to twist the work---not my body---to the most comfortable position. Whenever I found a pin-test failed (probably because I'd burned the board by overheating trying to get the 90-10 lead to melt), I threw a jumper-wire on to connect the components over the board.

Connecting layers 1 and 2. You can see a few of the jumpers in there.
Apart from the above, this one isn't rocket science, just a lot of careful detailed work.

The Result

Partial success. Unfortunately, when I connected to the Arduino UNO and powered on, I discover that I'd shorted two pairs of columns together in the circuit board itself and burned up one of the LEDs by heating it hot enough to deform its plastic housing. Lesson learned for the future: if the soldering isn't working, back off and wonder why!

But with those couple unfortunate exceptions, things worked great! Here's some videos of it in action. :)

Pixel walk test. Unfortunately, it shows the fused columns and the burnt-out LED.

Elevator test.

Windmill test.

None of the bugs in the device are unsalvageable; I can correct the fused columns by severing them from the base and jumpering them to the resistors, and the burnt-out LED is replaceable. But for now, I'm pretty happy with how it turned out and am content to put it on the shelf for a bit.