With Part 13, we finished duplicating the official design with a somewhat cleaner schematic, leaving us with a BOM and drawing for an Arduino UNO R3. Now the job is to take that initial design and see what can be done with it, to make it an attractive product for Rheingold Heavy. I suppose this post will probably be more free form than the others, just because this is something that I don’t have concrete answers for. But that’s typical of the first steps in product development.
Arduino Product Development: Design Evaluation
The first step in designing a product is to come to grips with the problem you’re solving. In this case we have a working product, and we’ve got the design for it. We really need to understand what this established product does well, and what it doesn’t do so well. For all the things that people do with them, they are remarkably simple creatures, with the greatest value still residing in the software, not in the hardware.
Things Arduino Does Well
- Easy access to pins for prototyping
- Easy reset
- USB integrated
- Multiple powering options
- 500mA idiot proofing
- ICSP headers
Things Arduino Doesn’t Do Well
- Power consumption
- No testing of Arduino internals
- Giant USB Standard Type B connector
- So much Plated Through Hole
- Utilize the 16U2
I don’t see any reason to adjust any aspect of the things the Uno does well, and the previous thirteen episodes of this series were sufficient coverage as to why they exist in the first place. Let’s focus on the things it doesn’t do well and see what ideas I come up with.
Arduino Uno Design Analysis
Power Consumption
The Arduino UNO R3 draws 50-55mA… just sitting there. That’s with a totally blank sketch uploaded. In fact, if I pull the ATMEGA328P from the socket and power the board up it still pulls 40mA of current. Yank out the USB connection and the load only drops to 33mA.
By comparison the SparkFun RedBoard only uses 22mA with a blank sketch and the 328P in place, and the Arduino Pro Mini (328P / 5V version) draws 14mA with a blank sketch. Implementing power saving, I can actually drive the ProMini down to 600uA of current draw. Essentially, there are current draw efficiencies that can be gained through adapting the design, that will make the full Arduino footprint more battery friendly than 55mA.
Essentially, 55mA would drain a 9V battery in less than 9 hours according to Duracell’s datasheet. Without doing a thing.
No Testing of Arduino Internals
The Arduino board is a black box and was not designed to allow easy measurement of things like I/O from the 16U2 or current draw at any location. Adding test points for some of the subsystems would be useful to allow testing, measurement, scope and logic probing over time, and hopefully without having to resort of using big rigs for holding probes in place.
USB Standard Type B Connector
This is the only thing on my desk that uses a Standard Type B connector. Everything else is a Mini or a Micro at this point. That standard sized connector, with the big electrically grounded shield around it has been the #1 cause of me short circuiting my Arduino during it’s lifetime (see point 5 above for “Things It Does Well”). I want to change this to the Mini-B.
So Much Plated Through Hole
So many components on the UNO R3 are PTH, that I shudder to think what the assembly cost for me would be. It would take some dedicated effort to find a CM able to do that much PTH, wave solder it, and give me any kind of reasonable pricing. Replacing as much with SMD as I can is probably optimal.
Underutilized ATMEGA16U2
The ATMEGA16U2 is an entire 8-bit microprocessor just… sitting there. It does USB-Serial translation but retains all it’s other abilities with no physical access to them. That’s just wasteful. I see two ways to go with this: replace the 16U2 with something more efficient and cost effective, or retain the 16U2 but isolate it to an entire breakout board that would allow it to be used for other purposes when not busy translating.
What you can see here is that there are a lot of opportunities in the product development path for our Arduino clone.