Arduino Overview

Overview of the Arduino

Since its inception in 2005, Arduino has grown into an immensely popular and user-friendly microcontroller board which can be programmed to execute a huge range of functions, from the basic to the highly complex. While expert programmers will get the best out of it, it can also be used by relative novices, largely due to the easy-to-use “one click compile/upload” feature on its free source code editor. It has been taken up enthusiastically by an expanding army of creative artists, hobbyists and DIY aficionados and, as will become apparent, it provides an easy and accessible means of executing a huge range of projects which, before its advent, required a great deal of technical knowledge and expertise.

Essentially, Arduino is made up of two constituents: a piece of hardware (the single-board microcontroller) and a Java-based cross-platform Arduino software application known as the “integrated development environment” or IDE. Written in C or C++, IDE includes a software wiring library (aptly named “Wiring”) which radically simplifies the normally much more complex operations governing input and output. With Wiring, a cyclic executive programme can be rendered completely runnable simply by defining two functions: setup(), which runs at the beginning of programmes responsible for initialising settings, and loop(). The latter can be called recurrently until the microcontroller board shuts down.

By means of lights, motors and sensors, Arduino actively interacts with the real world, receiving physical inputs and converting them into intelligible and purposeful outputs. An Arduino board can, for example, be programmed to monitor the current between two conductors (such as two nails) embedded in soil; as the soil dries out, the current falls because water-borne electrolytes can no longer move so freely. This is one form of input the Arduino can act upon: in this case, it can be programmed to respond to the fall in current by sending a message to a Zigbee internet-connected radio, which then sends a Twitter message to the user alerting him or her that the plant in the pot needs to be watered.

The functionality of basic Arduino starter kits can be expanded by means of plug-in “shields” – additional printed circuit boards designed to multiply the original’s versatility. These permit the integration of additional sensors, actuators and visual and auditory inputs and they can add functions such as Ethernet, GPS, LCD display, motor controls and breadboarding (i.e., prototyping early experimental electronic Arduino models such as, for example, an Arduino robot, by means of a plugboard).

Arduino projects include the construction of robots, moving sculptures and buggies (especially popular in schools to encourage students to use technology by creating highly gratifying moving products), the running of motors, the creation of audio and video equipment, the control of locks, servos and lighting systems, the development of games and toys and the building of a web server for users to connect their creations to the Web.


History of the Arduino

While Arduino made its debut in 2005 as the culmination of a project led by David Cuartielles and Massimo Banzi, who were students at the Interaction Design Institute (IDI) in Ivrea, Italy, its roots go a little further back in time.

It grew out of research at the Massachusetts Institute of Technology in 2001, where the researchers Benjamin Fry and Casey Reas were developing an open source computer language called Processing Language. This Java-based language was designed to be accessible to creative people who were not necessarily familiar with the complexities of programming computer algorithms. Up until this development at the start of the twenty-first century, ordinary people who had creative ideas but little technical know-how in the field of computing were effectively excluded from building electronic gadgets. Moreover, the cost of hardware and software for such projects was prohibitively expensive.

But things changed in 2003, when the IDI programmer Hernando Barragán used the Integrated Development Environment software to develop Arduino’s predecessor, Wiring: an open source electronics development platform accessible to everyone, irrespective of their lack of technical knowledge. Barragán set out to radically simplify the process of using electronics hardware and software, and used C and C++ as the processing language. Essentially, Wiring, like its successor Arduino, relied on predefined libraries, a feature which hugely simplified the programming language.

Arduino was the name of the tenth century Arduin (Italian: Arduino) of Ivrea, the King of Italy.


Important technical elements

To become functional, Arduino’s hardware (the microcontroller integrated circuit) must be programmed to execute the task its user has in mind, whether that’s controlling a lighting circuit so that it automatically switches on as darkness falls or operating a motor or robot (there are many, many more functions of course). This is where Arduino software comes into its own: once the programme (which is composed with the unique Arduino Programming Language) has been written, it can be loaded easily into microcontroller’s memory by means of a USB or serial connection. The Arduino software (Integrated Development Environment or IDE), however, can download the programme into the memory directly.

IDE has an integral code editor which literally sketches the hardware, providing an exceptionally clear view of the source code’s function, constants and variables. It cuts out the need for intricate operations such as manipulating the makefile or using the command line to deposit the code into the hardware. The code editor also comes with ease-of-use features such as automatic code indentation and syntax highlighting (the latter includes brace matching).

The software’s integral software library, derived from the earlier “Wiring” project, radically simplifies many of the normally highly complex input and output operations.

The Arduino Programming Language automatically generates function prototypes once the ‘compile’ button is depressed, a process which involves transforming the sketch into either C or C++. Programmes are compiled by IDE by means of AVR libc and GNU toolchain, whereupon the resulting C instructions are converted within the AVR-GCC complier into intelligible instructions for the machine. Effectively, the Arduino receives an input, makes a decision and then executes a task based on that decision.

The basic hardware is a board with an 8-bit AVR microcontroller, a 16 MHZ crystal, a 5V linear regulator a direct adaptor input, output connectors and a ceramic resonator. Expansion boards known as “shields” can readily be attached to the basic Arduino board to extend its functionality via easily accessible plug-in input and output ports or “headers” containing numbered “pins” (0 – 13. Shields add more capabilities so that if the user wishes to include, for example, wireless communication, he or she can simply plug in an xbee shield. Similarly, motors can be run from an Arduino simply by plugging in a motor control shield, and the board is designed to interface easily with other peripherals including external circuits and sensors.

There are various Arduino boards on offer which differ from one another according to the AVR chip included (see final section below). Every different Arduino board has a unique feature, so that the Arduino UNO board, for example, can by plugged into a personal computer with a USB and communicate with it through an FTDI chip. Many of the boards include AVR chips such as Atmega8, Atmega168, Atmega328, Atmega1280 and Atmega2560, but some do not include an Atmega controller at all. The latter are, however, still compatible with various shields, although they are not capable of being programmed by the standard IDE. Other versions of the IDE software which include the relevant libraries for the controller are available, though.


Technical/scientific illustration of the Arduino

An example of an Arduino application is a lighting control. The board is programmed to read light sensors, decide what action to take based on that input and then execute the actions. A relay board connected to Pin 3 on the Arduino board will respond to light levels, and the package can then be used to control outdoor or indoor lights. The relay is set to “Active Low”, which means that the device will produce a sketch to set the relay pin to LOW, whereupon lights will be turned on in conditions of low illumination.

Arduinos can also be used to control the ejection of molten plastic in 3D printing, so that it transfers as accurately as possible to the print head to the mobile platform.


Arduino stories from a manufacturing perspective

Although Arduino boards have proved immensely popular with artists, hobbyists and DIY aficionados, they are increasingly being taken up in various industries and are being used by electrical engineering experts and designers to make prototypes of commercial products.

Arduino boards have been used to develop the open source oscilloscope “Xoscillio”, and the Musical Instrument Digital Interface (MIDI) controller “Arduinome”. They are also used to operate the “OBDuino” onboard trip computer which hooks in to the computer-operated diagnostics systems included in most modern cars.

In aviation and weapons research, Arduino boards have been used to develop drone hardware and software called “Ardupilot”.

The boards are increasingly being taken up in scientific research projects, where they offer a much less expensive and much more easily configured alternative to costly hardware equipment. Because the code is openly available in Arduino software, it is considerably easier for scientists to modify – a major advance on the traditional processes for customizing software for scientific equipment. Traditionally, the latter frequently involved the input of outside suppliers, technicians, machinists and glassblowers, all of which added to costs.


Short overview of the above different Arduino accessories

Accessories to the basic Arduino board include breadboards, a range of expansion boards called shields which increase the original board’s capabilities, GSM antennae, and various different versions of the primary board.

The latter have now become very numerous: the official Arduino website lists over twenty current versions. The board generally used by beginners and the most basic of Arduino’s offerings is the Arduino Uno, which is compatible with virtually all the different shields, making it a good deal more “expandable” than the other boards. The chief limitation of this board, however, is its relatively paltry flash memory and SRAM, a consequence of the ATmega328 chip it uses. While it’s an excellent board for a beginner familiarising him - or herself - with Arduino, the Uno is restricted in the number of programmes it can take in because of the limited memory, which means that it’s unsuited to using or storing any kind of audio or image data.

The Due, one of Arduino’s newest offerings, includes a powerful 32-bit ARM processor, making it considerably more potent than all the other Arduino processors.  This gutsy processor is well-suited to more intricate projects and, because it offers more I/O headers and pins for additional shields, it’s one of the larger boards on offer (it’s also one of the most expensive). A minor disadvantage of this board is that, unlike the others, it requires 3.3 volts to operate (the standard for Arduino boards is 5 volts). The chief consequence of this is that there is inevitably a more restricted range of compatible shields available – a shield sending a 5 volt signal to this board could end its life rather rapidly. An alternative 5V board with a similarly brawny processor is the Arduino Mega 2560, but it’s more expensive than the Due and, in most respects, the Due simply outperforms it.

Arduino launched its Yun board in June 2013, the principal feature of which is to enable connections to cloud-based services. Earlier low-memory, low-bandwidth microcontrollers struggled to cope with the sheer density of the protocols needed for cloud services. The Yun overcomes these limitations by means of a separate Linus system cleverly integrated into a chip. This is capable of comfortably handling all the networking tasks.

Beginners are best advised to purchase the larger Arduino starter kits, which include the different accessories needed to execute most projects. A good repertoire of parts can be found in SparkFun’s Inventor’s Kit and in Adafruit’s Experimentation Kit (which is slightly cheaper). Both kits also include user guides.

Users should also invest in a multimeter to test the electrical soundness of the various electrical components.