Arduino: poor design decisions and mistakes

Image courtesy of this blogger 

While Arduino is easy to get started with, it has its problems, mechanically, electronically and software-wise. Let's look at the mechanical part of the design first.

The infamous offset header

This is my pet peeve about Arduino. While there is a number of (mechanical and other) choices which are disputable, there's one thing which really shouldn't be there. Maybe you already know what I'm talking about: the infamous offset header.
The Arduino PCB has four headers for power and I/O. Three of them are on a 0.1" grid, but the fourth isn't. The gap between the two headers at the top of the picture aren't 0.2" apart, but only 0.16". Was this intentional? Thank goodness it wasn't. It appears to be the result of human error. As Massimo of the original Arduino team explains on the Arduino forum :

We had 5 minutes before the deadline to go into production, the PCB guy was on the phone saying “send it now or it goes to next week” and we didn't have a name yet… then I said let's call it Arduino like a bar we used to go… there wasn't much time to think.

Then I'm fond of the mistake… it makes it not perfect therefore more human… Yes… it could have been all perfectly optimised… but if engineers ran the world it would be an unbearable place where to live :)

Well, I couldn't disagree more, and I'm sure I wouldn't hire Massimo for a designer job. You don't correct errors because they make the design “more human”?? Pardon me?? “Let's leave some errors in the design to make it more human.” I can't believe I'm typing this. I don't doubt Massimo is a nice fellow, but with this kind of attitude in a business you'd get fired on the spot. And rightly so.
Also I'm not buying the deadline argument, either. They couldn't postpone production for a week? Remember, Arduino at that moment was a loose group of designers who weren't working at a commercial level whatsoever.

The fix: offset headers

In my opinion the error should have been fixed, and production postponed. At the time there weren't any shields yet, so the only way to plug something on the Arduino would be a breadboard, and that wouldn't work due to the offset! The headers were then useless. Now we have hundreds of different shields for the Arduino, with the offset header, and it's too late to fix it, unless you're happy with two standards: one without the design fix, and one with the fix.
To allow for breadboards to be placed on an Arduino headers have been made with pins bent to fit the 0.1" grid. An ugly error which could have been fixed now requires even more ugly measures.

Board outline

The Arduino Uno's PCB outline

While I think the offset header is an unforgivable mistake (especially taking Massimo's reaction to it into account) there are also poor design decisions, mechanically. Take a look at the PCB's outline. Why that shape? What's wrong with a rectangle? The PCB's shape requires milling, which is more expensive than the V-cuts you could use on a rectangular board. The non-rectangular shape does not resolve any problems, but makes the PCB more expensive. Bad decision.

On the plus side, the asymmetrical positioning of the headers (disregarding for a moment the offset) avoids shields being mounted the wrong way.

By the way, the picture of the outline is based on an unofficial drawing I found on the Internet. No matter how hard I tried, I couldn't find an official drawing with all the mandatory positions for headers, mounting holes and connectors. Mechanical clearances for shields, to avoid e.g. solder pins to touch the USB socket) are nowhere to be found. Bad management.

I also wonder why the mounting holes at the left aren't aligned. Add to that that the top left mounting hole is too close to the header to allow use of a screw there.


Some people will say I'm too harsh, others that I'm trolling. I'm neither. When you publish a design, whether commercial or non-commercial, make sure you do a proper job. If you've only just graduated and have no experience, ask a professional to review your design.