Microcontroller Modules

This article is about is packaging a microcontroller project, and why it’s such a struggle to get something that looks halfway presentable. You can buy cheap, well-made PCBs and components from a multitude of sources, but when it comes to putting it all into a box (or on a panel, or wherever), things can get ugly. Literally. Even if the project does turn out nicely, there’s a lot of work involved getting it there. There has to be a better way.

Years ago I used to dabble with music, synthesizers in particular. Along the way I came across a lot of gear, but one that stuck in my memory was the PAIA series of module kits. They looked like this:

paia_module

They all had a fixed standard height, with a width that varied in fixed units (the smallest of which was half of the module shown above, if I recall correctly). This allowed people to buy what they needed or could afford, build the kits, and then expand it in the future if they wished to do so. Some PAIA rigs were very, very large. For whatever reason I never owned any PAIA gear, but I fixed a lot of it for other musicians (I was an Arp, EML, and Moog guy).

PAIA opened the door for people who otherwise would not have been able to cough up the money for an Arp Odyssey or a MiniMoog. I’m sure the kit aspect also had a lot of appeal–there were “makers” and “hackers” back then, too.

The PAIA modular concept wasn’t new, by any means. Robert Moog built the famous Moog modular synthesizers around it, and the concept appeared in other places as well. In fact, for a while it seemed like flat panels with a circuit board (or two, or three) on the back side were the wave of the future.

But this artcle isn’t about cool old synth gear, it’s about how it was packaged, and how we might be able to build on this concept with our Arduino, Raspberry Pi, CHIP, and BeagleBone projects.

There are a number of challenges to overcome when attempting to put our latest microcontroller creation into a presentable package. Let’s take a look at some of them (at least the ones I think are the biggest).

First up is lack of standardization, or standards that don’t make a lot of sense. There are a lot of really interesting modules available from China, but other than copying each other’s bad design form factors, there  doesn’t seem to be a lot of thought regarding pin designations, pin layout, or mounting holes. A module from one seller may work exactly like the module from another seller, but they are not physically interchangeable.

Nonsense standards are another problem. The Arduino pin layout is a case in point. I mean, come on, was it really necessary to put a small non-standard gap between the 0.1″ socket headers on the digital I/O side of the PCB? As a result you can’t just grab a perfboard and build an ad-hoc shield, you have to use a special breadboard made just for Arduino. That really sucks. And now we’re stuck with it, since there are umpty-zillion shields available for the Arduino. The gap is shown in the photo below:

uno_header_match

In my opinion the Nano (shown below) is the only Arduino that makes sense from a standard form factor perspective. But if I want to use conventional shields with one then I’m back to using an adapter of some sort.

nano

The C.H.I.P. from The Next Thing is another example of someone not thinking the problem all the way through. The CHIP has a lot of I/O pins, and a lot of capabilities, but for some unknown reason they decided to not allow stacking of more than two PCBs at a time. If you purchase a VGA or HDMI shield and plug it in, you’ve just blocked all the GPIO pins.

So, OK, we have a bunch of different PCBs with different sizes, pinouts, and mounting holes. We can deal with that by using wires and perf boards. But how to get the lights, knobs, and switches out to where we can use them? And, equally important, how can we do this so that our creations can stand up to normal use?

One approach is the one I took with the digital signal generator described in my book “Arduino: A Technical Reference” and shown below:

ch11-inside_sig_gen

The front panel layout drawing is shown below.

ch11-enc_panel_template

While this is one way to get the job done, it was a lot of work. More than it really needed to be. I would have preferred a different approach.

If, for example, I had some pre-made panel modules on hand, then I could have used a module for the display, another for the pushbutton switches, and maybe yet another for the pots and output connectors. The result might have looked something like this:

modular_siggen

The advantages of modular components for building electronic instruments and systems have been known for a long time. The Vector company, for example, sells a variety of components, from complete chassis units to various parts for assembling a custom enclosure. They also sell perfboards, connectors, and tools. The downside? Price. Nothing Vector sells is inexpensive. Just a plain metal panel, like the narrow one shown in the photo below, goes for $16. Another problem is size–most of Vector’s products look like they belong in another era, which makes sense considering when they were initially designed. The smallest panel shown is 0.788 inches wide and 5 inches tall (3U), with four holes for mounting screws. The datasheet is available here.

front_panel_dsl

I’ve used Vector items in various labs over the years, and you can definitely build rugged and good-looking equipment with their products. But not everyone has the budget for this approach, or the need for the level of precision that goes into the production of the various panels, rails, side plates, and other parts that make up a Vector chassis.

The modular synthesis module shown at the start of this article is just another variation on the modular panel concept. Whereas the Vector panels are made from tempered aluminum, the PAIA panels are made of thin mild steel (if I recall correctly). We could use something like this, in either steel or aluminum, to pre-mount various controls and displays, and save some assembly time and effort with our prototypes.

What about blank panels? It turns out that PAIA is still alive and well, and you can buy blank panels from them. A 1.5 x 5.25 inch panel, the FRB-1, goes for $6.75. The FRB-2 is 3 inches wide and sells for $7.85, and the FRB-3 is 4.5 inches wide and goes for $9.70. These are designed to work with PAIA’s “FracRack” packaging system, which uses a 5.25 inch high mounting space, so if you need something a bit shorter, then you’ll need to shop around or consider making your own.

If you have a shear or access to one, or you are willing to pay someone to cut the pieces for you from sheet stock, then you can easily make up what you need, to whatever dimensions you want. But that only gets you part of the way there.

The biggest issue I have with making my own blank panels is the time involved in laying out the component locations, cutting the panels from sheet stock, cleaning up the edges, and then drilling and deburring the holes. Then there is painting and and applying decals or labels. When you add up all the time and effort the PAIA panels start to look tempting, particularly since I don’t build enough of anything to realize any economy of scale.

What I’m really looking for are panels with components already mounted and ready to be wired into a circuit. Or at least with the holes already in place. Here’s an example of what I have in mind:
proto_panels_examples

As you can see, there are panel modules with switches, LEDs, LCD and OLED displays, a keypad, and DB-9 connectors. The smallest panel is 4 cm by 4 cm, and the larger ones are just even multiples of those dimensions. Here is what a device assembled using these panel modules might look like:

proto_panels_assy

The panel modules would mount to sections of aluminum bar stock about 5 to 10 mm wide (depending on if the rail has a single or double row of mounting holes), with pre-drilled and tapped holes at 1 cm spacing. M2 counter-sunk flat-head screws would hold the panels to the rails. So, in the illustration above, there would be rails at the top and bottom spanning the width of the enclosure, another full-width rail at the junction between the bottom row of 4 cm high modules and the 8 cm space above it, and a short rail section between the two 4 by 8 cm modules. The only issue remaining is how to provide some form of backing support for the vertical dimensions. I’m still working on that, but I’m thinking that 5 mm wide bar stock with untapped M2 clearance holes would do the job if the vertical sections are screwed to the back of the horizontal sections. Now I just need to work out the necessary dimensioning.

Due to the lack of standardization between microcontroller boards and add-on accessories we would have to resort to the pin and socket jumpers and cables already used to connect things with various pinout configurations and connector types, and there’s probably not a lot we can do about that at this point. Unless, of course, someone wants to champion a set of standards, but I think that’s unlikely. Not enough money in it to attract the attention of the big players.

So, what do you think? I’ve been kicking this around for a long time now. The challenges seem to settle around cost versus convenience. The more convenient we make the modules, the more they are going to cost to produce. With no economy of scale the cost could be enough to warrant just forgetting about it and sticking with stock plastic enclosures.

In any case, building up a selection of modules like these is on my short list of things to do. I’m currently pricing polystyrene sheet stock, and looking for a source for pre-drilled and tapped aluminum bar sections. I’ll post my progress occasionally as this moves forward.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s





%d bloggers like this: