Monday, June 8, 2009

Introducing the ButtonShield

This weekend, Chris, Omar, Mike, and I got together, and we "learned" how to use a "solder reflow oven." Technically, we didn't so much learn as "stumble along" and it wasn't so much a reflow oven as a $120 Target-bought toaster oven (rated to go as high as 350 degrees Fahrenheit). This isn't hot enough to melt solder under specification, but luckily for me, Target sells cr*ppy^D^D^D^D^D^D^Dwonderful toasters, and the one I bought delightfully exceeded my expectations and its specifications and got all the way up to ~480 degrees.

Here's a picture of the finished ButtonShield:

It's a small Arduino shield keyboard that snaps onto the standard Arduino pin layout, has 2 modes so it can be used with most other shields out there, and has a space bar and shift key that lights up 2 LEDs in the lower left of the shield when pressed. Its compatible with the Diecimila, Duemilanove, Mega, Illuminato, and Basic STAMP (using the CoreBoard). I got the idea from Justin a few months ago when the Open Source Hardware bank was launching, and thought it would be a fun project. It wasn't my idea originally, so I wasn't going to build it unless someone wanted it. And apparently some did, because a the pre-buy queue on the Open Source Hardware Bank kept filling up! Here's a highly technical description of what it is - note, it is *NOT* a Butt-On-Shield as the spacing and capitalization below would have one believe:

It has a shift key and a space bar up in the front left corner of the shield. I couldn't find buttons anywhere shaped the say I wanted, so I borrowed a design lesson from my old art courses and "implied a platonic shape through the use of space juxtaposed with void" ... translation: I outlined it:

This is a picture of the reverse side of the shield. It has an A and B mode switch, so I can choose which pins I want to use on the shield (to make way for other shields, for instance). The pins happen to be the exact same as the InputShield, so technically an InputShield and a ButtonShield could be used at the same time on an Arduino without clobbering each other:

I think I like this angle better - it shows the dedicated processor on the back, which simplifies grabbing keystrokes because it takes care of all the constant polling of each key so the Arduino doesn't have to occupy all that space in its main() loop:
Borrowing from the Illuminato's design, each edge has a set of exposed JTAG programmable pins:

That was nice.... now on to the gritty details of how the shield actually got made (it all happend this past weekend)... Since this was the first time I had done oven-based solder reflowing (instead of doing it by hand), I followed a bunch of tutorials online, and they all said to pay $99 to get a stencil cut. So I did. It came in the mail, but none of us could figure out how to line up the PCB to the correct holes. Alas, a few google searches later, and I figured it out (thanks Nate and Electronics Lab):

Here's a picture, top-down, of the stencil covering a PCB, getting ready to smear solder paste on it. The can of solder is on the right, and the squeegy is right below it:

Once that's on, Chris and I ran the $1,000,000 Professional Pick-and-Place called MattAndChris'sHand(tm). Each board needed 34 buttons (4 rows x 8 columns plus space and shift). I got in a groove, and noticed if I did one board, it would take me about 3:30. But if I lined up 3 boards, it took me about 2:45 for each board. And if I lined up 5 boards, took a swig of coffee, and had all the buttons in front of me, I could do one board in about 2:25. According to the Henderson Experience Curve, that's not bad, but I shouldn't expect to go much faster than about 2:15 even at my best.

This is what the board looks like with all the buttons it, ready to go into the oven:

And here's a shot of a few going into the oven intially. They need to "bake" for about 2 minutes:

Here they are cooling down... each time they came out, Chris took it upon himself to announce, "The Cookies are Ready!" And yet somehow, for him, that joke never got old, not even after the 14th time:

Ok, side 1 is now done, but these boards have a second side. So time to solder paste the backside...:

...and to place the next set of parts:

One by one, I loaded them onto the tray:

And Chris then put them into the oven:

Of course, when they came out, on each board there were about 1 or 2 little mistakes, where the solder paste globbed up and crossed or connected a few of the leads on the chips (especially on the backside). That was mainly because I used too much solder paste at times, but it's pretty hard to control how much gets pressed down through the holes... so... time for some manual rework:

And here's Chris sitting next to Omar, who stopped by to help program each of the ButtonShields with code when they were done being reworked (and after Mike cleaned off the flux from each board):

So now what? Well, now that the boards are done, and programmed, it's time to start building some toys, like a portable Arduino computer:

And a project I've been wanting to do for a while now, my Arduino-Powered Star Trek Tricorder:

Judging from my highly scientific comparison of mine vs. the original, I think it's safe to say that despite being several star dates before the Spock-wielded tricorder, mine has more buttons and is mesh networked. Put that in your super-logical, pointy-eared pipe... :-)

In the meantime, I've uploaded the ButtonShield over on the liquidware website, and I'll post another blog tomorrow with a couple videos of the ButtonShield in action :)


Chris said...


Now I just need to get the matching shoulder strap, of course.

Benno said...

WOW! That is the most amazing modular electronics I have ever seen. You just made a computer... like LEGO. Amazing.