We are spoiled for choice when it comes to single board computers, whether they be based around a microcontroller or a more capable SoC capable of running an operating system such as GNU/Linux. They can be had from well-established brands such as Arduino, Adafruit, or Raspberry Pi, or from a Wild West of cheaper Far Eastern modules carrying a plethora of different architectures.
Everyone has their own favourite among them, and along with that comes an ecosystem of operating systems and software development environments. There’s another aspect to these boards which has evolved; certain among them have become de facto interface connector standards for hardware peripherals. Do these standards make any sense? Let’s talk about that.
How Do De Facto Standards Come About?
In most cases, an interface standard is the result of an effort specifically to create it. Consider for example the USB-C port, instead of merely happening because a manufacturer decided to put a reversible high-speed data port with power capabilities on a machine, it was the result of many years experience and work on the part of an industry consortium.
Sometimes though, an interface standard comes around by chance. The car accessory socket is by any standard a pretty awful power connector system, originating decades ago as the receptacle for an electric cigarette lighter. Because there was no other handy way to access a 12 V power supply in a car it became the power source for the few electronic in-car accessories that were available, and has since evolved into the standard automotive power socket. Oddly, many car accessory sockets are now unsuitable for their original purpose, being no longer designed to withstand the heat of a cigarette lighter element.
And so we come to the connectors on single board computers. Almost all of them have an expansion connector, which serves the purpose of bringing out as many of the available interfaces in one place as possible. Some are well designed and others not so much, but none of them are designed in the same way as the USB socket to be independent of specific hardware and with convenience for the desired application in mind. Instead they’re left to the designer of the board who may not expect the device to become a widely adopted standard and thus may not think ahead as to how their creation might be used.
None Of These Are Like The Others
If we were asked to name some boards whose interfaces have become unintended de facto standards, those we’d end up with wouldn’t surprise most of you. The original Arduino, the Raspberry PI, the Adafruit Feather and maybe the Raspberry Pi Pico, perhaps the BeagleBone, and one we’re seeing more and more, the BBC micro:bit. It’s worth taking a look at these individually for a minute to work out what we like about them, and what we don’t.
The granddaddy of them all has to be the Arduino. We don’t know whether it was the first board to give us the idea of shields, but it was certainly the one that popularised them. Before the Arduino it was more usual for a board to come with a prototyping area alongside a header with the I/O lines to which a daughter board might have been attached, the Arduino gave root to the idea of a family of add-on boards within a defined ecosystem.
We like the Arduino expansion pinout for its organisation of the different types of interface next to each other and in numerical order and we like its use of inexpensive 0.1″ pin headers, but the size of the thing and the need for two sets of headers so far apart looks distinctly unwieldy and old-fashioned. Don’t get us started on the odd row offset. Still, it’ll probably be a long time before we’re free of the classic Arduino shield because there are so many still available, but would it be a reasonable choice for a new design here in 2022? We don’t think so.
The Raspberry Pi 40-pin header and HAT form factor seems to have become a de facto standard for more powerful boards, typically those that run Linux. It’s a nod to the success of the little board from Cambridge, but for all the good things the Pi has brought us we’d say the expansion connector isn’t one of them. It’s a victim of the Pi’s genesis back in 2012 from a then-tiny organisation producing what they thought would be a relatively small run of a board that was at the time barely out of prototype status.
The first Raspberry Pi boards had component and routing choices based upon expediency and the resources available to them, so that the lines were brought out to a header at all was the most important, and not arranging them nicely for a mass market board that would dominate the sector a decade later. Thus the original 26-pin interface and the 40-pin extension that followed have the various interfaces scattered haphazardly around them, and we’re certain that were they to do the same job today they would bring some order to it. We like the use of a single 0.1″ header, but even though we understand why it’s that way, we can’t say the same for the arrangement of pins.
The dual-in-line boards such as the Feather, the Pi Pico, and the various smaller Arduinos, have a very convenient approach to expansion, following the same path as the larger DIP ICs of the past. Thus an Arduino Nano will often be found mounted on a piece of stripboard or a PCB, or plugged into a breadboard. The Feather and the Pico take this further, with both sorting add-on boards that piggy-back upon them. We like them for their well-thought-out pinouts, but we think a single connector gives more flexibility.
Finally in our list of boards is one that takes a completely different tack. The BBC micro:bit is an educational microcontroller board originally designed for British schools, and its expansion connector is a PCB edge connector with five large pads for crocodile clips and 4 mm plugs to make life easy for kids, interspersed with finer pitch connections carrying other interfaces. It’s well designed and an attractive enough choice that it’s appeared on quite a few competing boards, but it relies upon a more expensive specialised edge connector receptacle. We like edge connectors, but not ones which need an expensive connector.
It Could All Be So Much Better
So having surveyed the field, we have a range of what are essentially proprietary standards which have been adopted by others. None of them are the perfect solution to SBC interfacing, so our next question is: what would be the qualities we’d look for in something better? It’s a conversation we think the industry should be addressing, but how do we think they should address it?
Perhaps the best place to start is with the connector itself. Here the Raspberry Pi gets it right with standard two-row headers, they’re cheap and readily available without forcing a board form factor as the Arduino or DIP format boards do or requiring a special connector as the micro:bit ecosystem does. Then the next area to consider is the pinout. There is no reason that digital GPIO, analogue lines, and interfaces such as SPI or I2C can not be arranged on sequentially numbered pins for easy interfacing.
We think that microcontroller and SoC interfaces are all similar enough that this could be achieved. We also don’t think there’s a particular commercial advantage to manufacturers in having their own proprietary pinout, because in this context there’s little value in exclusivity. A common pinout across multiple boards shouldn’t take a multi-million-dollar industry consortium as it does with USB, instead a simple set of I/O lines have to be wired to a set of headers.
The reason it hasn’t happened yet is probably that there’s been no immediate sales incentive for them to do so, but we think there’s an angle there which might prove persuasive. Hardware manufacturers should imagine a world in which aside from all SBCs having the same interface, all expansion cards, shields, HATs, or wings, have it too. Suddenly the potential market for a card becomes much more lucrative, and since all the major SBC makers also sell cards we hope that they too can see the potential.
We’d be interested to hear from our readers on this subject, what do you think?
Sounds ok to me, for a 1st approach to low speed systems interfaces, as long as the SPI names are replaced by their traditional names.