Synopsis: The Arduino is a good example of how open source thinking can spur innovation and variation in hardware, firmware, and application design (open source autopilots, for example.) I haven't seen a catalog of Arduino hardware evolution anywhere on the net, so I thought I'd take a crack at one to show you how one open source hardware design has physically evolved over time.
Several years ago now, I wrote a couple articles related to Arduino on the OpenLogic blog. It's time to revisit the Arduino because over the last several years, the open source design of the Arduino has allowed it to morph into numerous shapes and sizes and the Arduino has been used in many interesting projects including a UAV, an autopilot, sewn-in wearable computers, and countless performance art projects. The design is licensed under Creative Commons and the hardware reference designs are offered in the form of EAGLE computer aided design files - a common, inexpensive schematic capture and circuit design package.
What is an Arduino?
The Arduino is a simple microcontroller platform designed to help introduce non-hardware and non-software types to embedded devices and give them a way to control the physical world - however minute that control is. This is why it's often referred to as a "Physical Computing" platform. The language and API it implements is a spinoff of two open source projects, Processing and Wiring - both of which are predecessors to Arduino but are still active projects. Wiring built on Processing and Arduino took inspiration from both. All are built on top of a GNU C compiler. More about this later.
An Arduino is defined by 3 things - the microcontroller architecture, the bootloader used to program the device through a serial port, and the IDE and embedded libraries used to develop software for it.
The Italian originators of the Arduino platform wisely provided just enough definition and structure, an Atmel ATMega8 or ATMega168, which is an Atmel AVR 8-bit RISC architecture, to make Arduino tangible, but did not specify the form or packaging of the micro or the board on which it was hosted. That alone accounts for many of the variants in shapes and sizes and I think it's a lesson open source software can use: Provide some structure but not too much if you're trying to encourage extension and variation.
A serial bootloader is the next major element that makes up an Arduino. If you buy an ATMega168 off-the-shelf, there's nothing in its flash memory. To program it, you compile your program into a binary using any number of AVR assemblers or C compilers and use a JTAG or ICSP device to flash the binary into the microcontroller.
JTAG and ICSP are relatively inexpensive devices, but nonetheless, are external hardware devices required to program the microcontroller. The Arduino designers eliminated the need for a JTAG or ICSP device by pre-flashing the ATMega168 with a serial bootloader which allows the Arduino developer to program the controller through a serial or USB port - no external programming hardware is needed other than a USB or serial port. ICSP is still available if you want to reflash the bootloader or tweak it at that level, it's just not required for most users of Arduino. The next component, the Arduino IDE, assumes a serial bootloader is present in the device. Because of that intimate connection, I consider the bootloader part of the definition of an Arduino.
The Arduino IDE is a very nice GUI wrapped around the GNU AVR C cross-compiler and AVR libraries and hides much of the complexity of dealing with the microcontroller at a register level.
The firmware you write with the IDE is C-based, but not precisely C in structure. For example, you don't see an int main() in your Arduino code. You also don't have to worry about linking, architecture-specific hardware includes and a lot of the details like register level operations that cause stumbles when you first get into embedded development. The IDE will run on Windows, Mac OS X, or Linux.
Technically, there's a certification process a maker would have to go through to call their product Arduino compatible, but I haven't seen a formal spec for that, so makers are left to "work with Arduino.cc towards certifcation" - I think the certification process is an obvious area that needs to catch up to allow Arduino products to continue to morph at the rate they are now. The most that's said about Arduino certification is here, but it's unfortunately very fuzzy. You can see how the role of standards, even de-facto standards, could help speed development of variations. As it is today, each maker is left to work out the certification for their product on a one-off basis.
An Arduino platform is really a breakout board for an ATMega168, a serial bootloader, and an IDE to program it using a standard, simplified and easier to learn API.
Beyond that definition, let the Arduinos catalog begin. Keep in mind all these boards have a price range of $12 to $35, so it's a competitive, low-cost market.
The Arduino Specimen Catalog
The first set of Arduinos are those offered by the Arduino project itself.
The "canonical" Arduino started with this DB9 serial board using a through-hole ATMega8 (older) or ATMega168 (newer) and onboard regulation:
There were precursors to this board, but the DB9 serial board with the ATMega8 is probably the main one that put Arduino on the map.
The official USB variation followed is called the Arduino Diecimila and upped the microcontroller to an ATMega168. Nearly all Arduinos from here on are package variations on ATMega168.
You can power the board through USB without an external power supply (wall wart) or use an external power supply if for some reason your circuits will draw more than 500mAh from USB (drawing more than 500mAh hoses USB.)
Here's a bluetooth variation on the serial port:
Using this, bluetooth essentially becomes a wireless serial cable replacement to the board and brings with it the obvious wireless benefits for sensors or other tasks. You can get also get the Arduino bluetooth and other Arduino variations at Sparkfun in Boulder.
A small, DIP package called an Arduino Stamp (also called an Arduino Mini) conserves a lot of space and is great for a breadboard:
The final Arduino project-offered piece is the Arduino Nano:
Similar to the Mini in size, is breadboard compatible, but has an onboard USB port.
All the rest of the Arduino specimens that follow are put out by 3rd parties. These are not from the Arduino project itself, but rather others who are riffing off the open source Arduino design and software. These may or may not be certified boards, but are considered de-facto Arduino compatible.
First SparkFun in Boulder has recently been putting out Arduino variants. Here is the SparkFun Arduino lineup.
The SparkFun Arduino Skinny:
The SparkFun Arduino Wee for breadboarding:
SparkFun is also a distributor for a line of "wearable computers" called the Lilypad. Lilypad, designed by Leah Buechley and Sparkfun, are a very unique form-factor that enable them to be sewn into garments, but Lilypads are an Arduino platform base. Lilypad, like the traditional Arduino, has a line of peripherals that are Arduino compatible, but come in a Lilypad form-factor including a conductive thread that can be sewn in and which transmit signals or power around a garment to peripherals in an inconspicuous way.
The Lilypad is based on the ATMega168V which is a lower-power version of traditional Arduino ATMega168.
Modern Device makes the Bare Bones Board which is an Arduino that comes in kit or assembled form. In lieu of Heathkit not really being in business any more, it's nice to have a simple through-hole kit to teach younger solderers the art of circuit board assembly.
Assembled Bare Bones Board:
Bare Bones Board Kit:
Another Modern Device riff on the Arduino is their Really Bare Bones Board in assembled or kit form:
It's envisioned to be a through-hole competitor to the Arduino Nano and it's one of the cheapest Arduinos - $12 in kit form.
If you want to start with an ATMega168 on the breadboard and work your way up from there, you can buy the microcontroller with the Arduino bootloader preloaded from Adafruit.
Other Arduino-based kits include this one from the Freeduino project:
The assembled Freeduino looks like this:
There's a variation on the Freeduino called the Freeduino SB which has a USB mini B, adds an onboard power switch and some other minor changes related to analog to digital conversion.
Continuing with Arduino kits, there is the Fundamental Logic iDuino kit:
Or you can buy the iDuino assembled:
the iDuino is another breadboard compatible Arduino form factor.
Adafruit, mentioned earlier, also makes a breadboard-able Arduino, called the DC Boarduino for about $17:
[Update: 1:50p MST 8/8/08. Since publishing this article, I was contacted and informed of another Arduino from Michel Pollet. Here's the image provided with the note that the LDO (the low-drop out regulator) is on the opposite side of the board.)
Finally, for the curious and adventurous, you can create an Arduino from scratch on a breadboard. I'd call this the Martha Stewart Arduino if it was up to me. ITP has a good how-to article for doing it. [1:51pm Updated pointer to full ITP article].
Arduino Catalog Summary
There are almost certainly other boards or products I've missed, but I think that's a pretty good round-up of the current state of Arduino hardware development. If you see any major variation, let me know ( landon at 360vl dot com ) and I'll try to maintain this catalog for a time.
I haven't even touched on the number of products available as Arduino "Shields" which are daughterboard hardware designs that perform specific functions such as GPS, XBee or Cellular RF communications. There's a whole ecosystem related to just Arduino shields that I don't have time or space to cover here. Ultimately, shields will become much more prolific than the Arduino platform variations and will further extend the example of open source hardware design.
In summary, I think this article has demonstrated that an open source hardware design, if properly structured and licensed, can lead to some truly interesting, prolific, and useful variations.
I'm an independent consultant who used to do a lot of work for OpenLogic. I greatly appreciate OpenLogic and the mission they are fulfilling as well as their willingness to let me contribute to this blog. Views expressed here are not necessarily those of OpenLogic and any mistakes are 100% attributable to me. You can contact me at: landon at 360vl dot com or visit http://sawdust.see-do.org for corrections to this article. Otherwise, any discussion can occur in the comments section of the article.
Allowed tags: <a> link, <b> bold, <i> italics
If you read a post on The Enterprise OSS Blog, please leave a comment. Let us know what you think, even if it's just a few words. Comments do not require approval, but they are moderated.OpenLogic reserves the right to remove any comments it deems inappropriate.