(Photo by Nicholas Zambetti CC-BY-SA)
If you were to walk into a typical hackspace as one new to the world of making and ask for help with automating your project, the chances are you’d receive a unanimous suggestion. Use an Arduino, they’d say, and show you a small blue circuit board with a couple of rows of headers and a USB socket.
Such has been the success of this board and its stablemates, that a decade plus of more able competitors haven’t displaced it from its position as the go-to single-board computer for maker projects. To understand something about why that has been the case, it’s worth looking back at the start of the project that spawned it.
In the early 2000s, as a reaction to the limitations of previous simple microcontroller boards, a group of Italian postgraduate students and a lecturer at the Interaction Design Institute in Ivrea came together to create the first version of what would become the Arduino project.
They were lucky: they had the Wiring platform that had been the work of their fellow student Hernando Barragán to work with, a simple-to-use open-source integrated development environment and microcontroller board. They created a fork of Wiring ported to the inexpensive Atmel ATmega line of microcontrollers, and the hardware they evolved became the ancestor of today’s Arduino boards. It featured an ATmega8 microcontroller in what is now a familiar form factor with its I/O lines brought out to a set of headers designed to accept expansion boards known as ‘shields’.
Read the full article in issue 1 of HackSpace magazine.
The ease of programming from the Arduino IDE and on-chip bootloader coupled with the flexibility of the shield boards compared to the relatively small prototyping area found on previous boards proved to be a hit, and the years since have seen an ever-increasing range of official successors.
If at the moment you’re wondering where the name ‘Arduino’ comes from, it may come as a surprise to find that a 21st-century microcontroller prototyping board has a name derived from an Italian king of the 11th century. Arduin of Ivrea was Margrave of Ivrea from about 990 until 1015, and King of Italy from 1002 until 1014. He was defeated and forced to abdicate by the German King Henry II in 1014 and would be the last King of Italy until the restoration of the Italian monarchy in the 19th century. The Arduino is a project with its origins in a university, and as with graduate students everywhere, the team had a favourite bar. Theirs was named after Arduin of Ivrea, and their project took its name from it.
The open-source nature of the whole Arduino project has been a crucial factor in its success as a platform, meaning that instead of being a single hardware product line from one Italian source, it has become a global phenomenon with an astonishing array of products claiming some level of Arduino compatibility.
In that sense, while an Arduino is generally understood as one of the official boards or a direct clone, it is safe to say that the Arduino project now transcends its origins and has instead become a platform ecosystem. When you buy an Arduino, you are not merely buying it for the board itself, because the descendants of the original 8-bit ATmega-based boards are now rather technically outdated.
THE EASE OF ARDUINO
Instead you are buying into the ease of the Arduino IDE and access to the Arduino community with its huge array of software libraries and support, and it is these resources which continue to make Arduino the obvious choice for so many projects.
Aside from the official Arduino boards, you’ll also see a huge number of non-official ones described as ‘Arduino compatible’. These range from variants that incorporate extra hardware such as a wireless module or a motor interface, to boards with different architectures that maintain the expansion header will also find direct clones of an Arduino Uno or similar, and even outright fakes bearing sometimes comically bad reproductions of the official branding.
Arduino lead Massimo Banzi has gone on record as welcoming the variant boards as bringing something extra to the project, while deploring the clones and fakes. You may find a Chinese Arduino Uno clone to be a cheap way to get started, but aside from supporting the project, when you buy a genuine board you are also guaranteeing that your board has, of course, genuine components.
In 2014 the manufacturer of the USB-to-serial chip found on most Arduinos issued a driver update designed to disable counterfeit copies of its devices; among those caught were many of the cheaper non-official Arduino clones. So your cheap board will work and will run your compiled sketches, but the extra money for the genuine article really does buy quality.
CHAIRMAN OF THE BOARD
So, given that you now know some of the history behind the Arduino project and you have some idea of the ecosystem, which of the many boards should you buy, and what can you do with an Arduino?
The ‘classic’ Arduino, in fact the board that earns the generic title of an Arduino, is any member of the line of descendant boards from that original one with an ATmega8 microcontroller and the signature two rows of header sockets to accept shield boards. Over the years the microcontrollers have been upgraded to the ATmega168 and then ATmega328 to give more storage capacity, but broadly the same functionality has been maintained from the earliest serial-port Arduino to the latest USB-equipped Arduino Uno.
This is the board that you should buy if you are new to the world of Arduino hardware, because it is the one with the most support, software, and libraries available for it. There are many clones of the Arduino Uno, but in the range of official boards it is available in variants with either a surface-mount CPU or one in a dual-in-line package mounted in a socket. Either board will give you the full Arduino experience, but of the two it’s the dual-in-line version which is a little more versatile because the CPU can be removed and placed on a breadboard or other project.
Beside the Uno, there’s a variety of official boards with special capabilities. The Arduino Leonardo for example looks like an Uno, but can become a fully fledged USB device in its own right, capable of emulating for instance a keyboard, or a mouse. Meanwhile, the Mega 2560 is an Arduino with a hugely expanded interface, useful for complex CNC projects. Then, beyond the ATmega line of processors is a huge array of boards that can be programmed with Arduino software. Of the official boards, there are several that use ARM processors, including the Due, which brings raw computing power to the Uno form factor, and the Yún, which has a 32-bit MIPS system-on-chip that runs a custom Linux distribution and incorporates WiFi connectivity.
If you are shopping for Arduino boards, you may also notice a variety of smaller PCBs: the Arduino Micro, Mini, and Nano. These can be available either as official boards or as clones with startlingly cheap prices, and with a set of pins fitted, can be used on a breadboard or similar.
They contain the rough equivalent of a full-sized Arduino Uno on a smaller PCB, but care should be exercised by those new to the Arduino world as they are not physically compatible with Arduino shields, they are not all current designs, and different programming cables may be needed to use them.When you have your shiny new Arduino, whatever model you have bought, your next step will be to do something with it. Write some code, see it running. If you go to the Arduino website, download and install the IDE, and then plug your Arduino into your computer with the appropriate cable, you should be ready to go.
Opening the Arduino IDE puts you straight into a code editor, and if you are an experienced Arduino user, you could just start typing C code.
Fortunately, in the event that you are not, the IDE ships with a library of demo code which you can load from the File menu: simply find the ‘Examples’ option and pick one. The easiest one to start with can be found in the ‘Basics’ submenu: ‘Blink’ simply flashes the on-board LED. If you look at the code, you'll see two main sections:
setup(), which initialises whatever pins the code will use, and
loop(), which contains the guts of your work and, as its name suggests, loops continuously through it.
Arduino programming in depth is beyond the scope of this article, but there is plenty of information online if you are willing to spend a minute with a search engine. If you have perfected your code, or if you merely want to see the Blink example flash the LED, there are a couple more steps. The IDE must recognise the Arduino board you have, and then you must compile it to a sketch and upload it to the hardware.
To perform the first step, on the ‘Tools’ menu select your board model from the ‘Board’ submenu, and then select the port it is plugged into on the ‘Serial port’ submenu. Then, to see it running on the board, select ‘Upload’ from the ‘File’ menu. You will see some status messages scroll past at the bottom of the IDE window; then, if all is well, the on-board LED will start to flash at one-second intervals. Congratulations, you have just run your first Arduino sketch!
Of course, while flashing an LED makes a good simple demo of an Arduino it’s obvious that the boards are capable of so much more. If you are looking for ideas for what to connect to your board, there is a huge range of shields and breakout boards on the market, often complete with software libraries and example sketches of their own. Companies such as Sparkfun and Adafruit maintain extensive catalogues, if the official range of Arduino shields were not enough.
A common Arduino project, once a first-time user has moved on from flashing LEDs, is to interface one to the real world by reading from a sensor. And since temperature sensors are among the most readily available and easy to interface with, many people create Arduino thermometers and thermostats. The simplest of these temperature sensors are three terminal chips which take a 5 volt power supply from the Arduino and return a voltage on their other terminal proportional to their temperature. This can be connected to one of the Arduino’s analogue input pins and read using the Arduino’s
analogRead() function for your code to calculate a reading from.
Since any measurement project including a thermometer is relatively useless without a display, you will also find a lot of Arduino projects featuring LCD displays. The commonly available LCD displays using the venerable Hitachi HD44780 driver chip will interface directly with an Arduino, and can easily be controlled using the LiquidCrystal Arduino library. The example on page 41 shows an Arduino wired to an HD44780 display and an LM35 three-terminal temperature sensor to make a complete thermometer project.
(Image by Nevit Dilmen (CC-BY-SA))
Of course, the uses for an Arduino extend far beyond a simple LED flasher or a thermometer, and are far too numerous to cover in this article. But it’s worth looking at one more common use for an Arduino: its ability to produce a pulse-width-modulated (PWM) output allows it to control servos, and motors when paired with a suitable shield. You’ll find motor controller shields from multiple manufacturers; one of the most commonly found comes from Adafruit.
And once you have a motor shield, you can bring it to a host of robotic projects, from simple two-wheeled crawlers such as the Ardubot, to fully functioning robot arms such as the inexpensive and easy-to-build MeArm. It has been over ten years since the Arduino first saw the light of day, and the mainstay of the hardware range is now based on very outdated hardware when compared to more recent competitors such as the Raspberry Pi or the BeagleBone.
This might be the cue for it to fade into insignificance, as has been the case for other darlings of the electronics hobbyist world, but for two things. First, the Uno and its ancestors may use old chips, but they still do the same job that they did in 2005 very well, namely providing an extremely accessible microcontroller platform for beginners and experts alike. Secondly, the Arduino project is not simply a collection of boards. The open-source IDE and bootloader model has outgrown the hardware, and it is this that makes Arduino special in 2017. Whenever a new and exciting processor or board enters the market, it will always be only a matter of time before someone brings it to the Arduino environment.
If those Italian postgraduates had never met in a bar all those years ago and Arduino had never happened, it’s certain that we would still have had affordable microcontroller boards. What is in doubt is whether we would have had so many that are as accessible through the same open-source development environment. Instead we would probably have had a plethora of competing incompatible IDEs from board and chip manufacturers, many of which would have been difficult to use, or closed-source and proprietary.
If you were that hackspace newbie we mentioned at the start, it’s likely that whichever board you would have used would have had a much steeper learning curve, and if you weren’t extremely dedicated to your project, you might have given up. It’s fortunate then that we have the Arduino, and that its story is far from over. The future will see an ever-expanding range of boards bearing the name, with as-yet-undreamed-of capabilities. So if you’ve never used one, we hope you’ll now have the confidence of knowing a bit more about the project to help you pick up your first Arduino and work with the platform as it further evolves.