Arduino is a hardware platform made up of a series of electronic boards equipped with a microcontroller. It was conceived and developed in 2005 by some members of the Interaction Design Institute of Ivrea as a tool for rapid prototyping and for a hobby, educational and professional purposes.
The name of the card derives from that of the Ivrea bar frequented by the founders of the project, a name which in turn recalls that of Arduino d’Ivrea.
With Arduino, small devices such as lights, speed controllers for motors, light sensors, automatisms for temperature and humidity control, and many other projects that use sensors, actuators, and communication with others can be made relatively quickly and easily devices. It is combined with a simple integrated development environment for microcontroller programming. All the software supplied is free, and the circuit diagrams are distributed as free hardware.
Arduino includes a hardware platform for physical computing developed at the Interaction Design Institute, a post-doctoral training institute based in Ivrea, founded by Olivetti and Telecom Italia.
The physical platform is based on a printed circuit that integrates a microcontroller with pins connected to the I / O ports, a voltage regulator, and, when necessary, a USB interface that allows communication with the computer used to program. This hardware is accompanied by a cross-platform integrated development environment (IDE) available for Linux, Apple Macintosh, and Windows. This software also allows novices to work with Arduino, as the programs are written in a simple and intuitive programming language, called Wiring, derived from C and C, freely downloadable and editable. Arduino programs are called sketches.
Arduino can be used for the development of stand-alone interactive objects and can also interact, via a link and an appropriate code, with software residing on computers, such as Adobe Flash, Processing, Max / MSP, Pure Data, SuperCollider, Vvvv.
The Arduino hardware platform is often distributed to hobbyists in a pre-assembled version, which can be purchased on the internet or in specialized stores. A lot of hardware information is available to anyone, however, it is closed source hardware since the bill of materials and the working circuit diagrams are never released directly by the Arduino staff. The user community was able to find this information.
Only thanks to this effort by the Arduino community and the benevolence of the Arduino staff towards any replicas or plagiarisms, those who wish can legally self-build an Arduino clone or derive a modified version, by downloading the wiring diagram for free and the list of necessary electronic components.
This possibility has allowed the development of Arduino-compatible products by small and medium-sized companies all over the world and it has become possible to choose from a huge quantity of Arduino-compatible boards. All these products are united by the source code for the integrated development environment and by the resident library which is made available and granted for use according to the legal terms of a free license, GPLv2.
Thanks to the common software base created by the creators of the project, the Arduino community was able to develop programs to connect more or less an electronic object, computer, sensor, display, or actuator to this hardware. After years of experimentation, it is now possible to use a vast database of information.
The Arduino team is made up of Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, and David Mellis. The project started in Italy in Ivrea in 2005, with the aim of making available, for interaction design projects made by students, a control device that was cheaper than the prototyping systems then available. The designers managed to create a platform that was easy to use and which, at the same time, allowed a significant reduction in costs compared to other products available on the market. By October 2008, more than 50,000 Arduino specimens had already been sold worldwide.
After the appointment as CEO of Intel, Brian Krzanich will produce Arduino boards equipped with an Intel processor.
A typical Arduino board consists of a microcontroller 8-bit AVR produced by Atmel with the addition of additional components to facilitate the incorporation into other circuits. The tabs are used chip Series megaAVR, specifically the models ATmega8, ATmega168, ATmega328, ATmega1280, and ATmega2560.
Many Arduino boards include a 5-volt linear voltage regulator and a 16 MHz crystal oscillator. However, some implementations, such as the small LilyPad, have an 8 MHz clock and are not equipped with the voltage regulator.
Official Arduino boards
The original Arduino hardware is entirely made in Italy by Smart Projects, while clones of the board can be made by anyone in any part of the world.
16 versions of the Arduino hardware have been marketed:
- Serial Arduino, programmed with a DB9 serial port. It makes use of the ATmega8 microcontroller ;
- Arduino Extreme, with USB programming interface, making use of the ATmega8 chip;
- Arduino Mini, a miniature version using a surface mount ATmega168 ;
- Arduino Nano, an even smaller version of the Mini, using the same ATmega168 SMD controller and powered via USB;
- LilyPad Arduino, a minimalist project for application on clothing, with the same ATmega168 in SMD version; the card is circular with a diameter of 50 mm, approximately 0.8 mm thick;
- Arduino NG, with USB interface to program and use an ATmega8;
- Arduino NG plus, with USB programming interface, with an ATmega168;
- Arduino BT, with Bluetooth programming interface and with an ATmega168;
- Arduino Diecimila, with USB programming interface and with an ATmega168 in a DIL28 package;
- Arduino Duemilanove, making use of the Atmega168 or Atmega328 chip in the most recent versions) and powered by USB, with automatic switching between power sources;
- Arduino Mega, which makes use of a surface mount ATmega1280 for I / O and additional memory;
- Arduino Uno, the evolution of the Duemilanove with a different chip, programmable and cheaper, dedicated to USB-serial conversion;
- Arduino Mega2560, which makes use of an ATmega2560 (also surface mounted) and is an evolution of the Arduino Mega;
- Arduino Due, which makes use of an Atmel SAM3X8E ARM Cortex-M3 CPU;
- Arduino Zero Pro, equipped with an Atmel SAMD21 microcontroller based on 32-bit ARM Cortex M0 + cores.
- Arduino Yún, which uses an ATmega32u4 and Atheros AR9331 processor, the latter compatible with a Linux distribution based on OpenWrt and called Linino OS.
The microcontroller programming
In some cases, the microcontroller of the card is pre-programmed with a bootloader that simplifies the loading of the programs on the flash memory incorporated in the card.
Conceptually, on all boards, the programs are loaded through an RS-232 serial port, but the way this functionality is implemented in the hardware varies from version to version. The Arduino serial boards contain a simple inverter circuit that allows the conversion between the RS-232 level and the TTL signal level.
The current versions of Arduino are managed via USB: version One uses an Atmega8U2 microcontroller programmed as a USB-serial converter, while the previous versions Diecimila and Duemilanove use USB-serial adapter chips, such as the FT232 of FTDI. Some variants, such as the Arduino Mini and the unofficial Boarduino version, use a detachable USB-to-serial adapter card or cable.
Input / output functionality
To implement interactive behavior, Arduino is equipped with input/output (I / O) functionality. Through the input functions, the card receives signals collected from external sensors. The behavior of the board is managed by the microcontroller based on the values coming from the sensors and the operations determined by the program currently running on the board. The interaction with the outside takes place through actuators driven by the program, which provides instructions by means of the supplied output channels.
I / O connectors
Arduino is equipped with many of the microcontroller input/output connectors in use on other circuits. All I / O pins are located on the top of the card using 0.1 “female connectors. In addition, many plug-in application cards, known as” shield ” are commercially available.
The Barebones and Boarduino boards, two Arduino compatible clones, are equipped with male connectors on the lower side of the circuit so that they can be connected to a breadboard without the need for soldering.
Digital I / O
The Arduino Uno, for example, which has supplanted the Duemilanove, offers 14 ports for digital I / O (numbered from 0 to 13). The direction of operation of the doors used, input or output, must be established by means of specific instructions to be inserted in the sketch programmed on the IDE.
Six of the fourteen I / O channels can generate Pulse-width modulation (PWM) signals. For example, the PWM signals can be used to regulate the brightness intensity of an LED or the rotation speed of an electric motor. The hardware of three of the I / O pins (9, 10, and 11) implements the possibility to manage them directly through the function that allows you to control the PWM of the analog output signal efficiently without having to run specially prepared code lines. This function must receive two parameters at the input, of which the first is the number of the driven pin and the second represents the intensity of the modulation expressed on a scale from 0 to 255: for example,analogWrite(9, 128)it will activate a led connected to pin 9 at 50% of its brightness.
Analog I / O
Also on the Uno, there are 6 other connectors specifically dedicated to analog signal inputs (therefore connected to an ADC ), which receive voltage values read by external sensors, up to a maximum of 5 Volt, which are converted into 1024 discrete levels (from 0 to 1023). These 6 connectors can be reprogrammed (always from the sketch code on the IDE) to function as normal digital inputs/outputs, thus increasing the number of digital outputs (while digital connectors cannot be used as analog).
The board can be powered with a USB cable, through the USB port of the computer or through most USB power supplies, or through a 9-volt direct current power supply with cylindrical connector (diameter 2.1 mm and central positive). In the latter case, the Uno board automatically switches to external power when the connector of the external power supply is inserted, while it independently switches to USB power if the connector is disconnected and the USB cable is inserted. The Arduino-NG and the Arduino Diecimila, older versions, instead of need to be switched by hand, by operating a switch located between the USB port and the external power input.
Compatible Arduino Boards
The enormous quantity and the extreme variability of use and components make it difficult to uniquely define an Arduino-compatible board. Usually, it contains a microcontroller to 8, 16, or 32 bit Atmel AVR, PIC or ARM, with variable clock frequency between 1 and 96 MHz. Many cards incorporate additional components designed for the most varied uses.
The programming of the microcontroller
Programming can take place via the ISP protocol and another Arduino board used as a programmer, via USB (in some cases, the microcontroller contains USB hardware), or thanks to a dedicated external programmer.
Both the original board and the clones make use of shields, i.e. basic Arduino expansions, made with printed circuit boards that can be placed above the Arduino, inserting themselves into the connectors already normally present on Arduino. There are expansions dedicated to various functions, from motor control to breadboarding ( prototyping ).
The Arduino integrated development environment (IDE) is a cross-platform application written in Java and is derived from the IDE created for the Processing programming language and for the Wiring project. It is designed to begin programming fasting newbies in software development. To allow the writing of the source code, the IDE includes a text editor with some particularities, such as syntax highlighting, parenthesis control, and automatic indentation. The editor is also able to compile and load the working and executable program on the card with a single click. Generally, there is no need to create Makefiles or run programs from the command line.
Various example sketches are downloaded together with the IDE to introduce the user to machine programming; the themes are very basic: how to manage the analog and digital inputs, make the LED light up in a pulsating and variable way; however, more complex problems can also be faced, such as the management of an LCD display or a GSM telephone card. In addition to the already built-in libraries (more than a dozen), the user can add them with an import tool included in the IDE. To see the results of a sketch, a serial monitoring window can be activated from the IDE, on which to display the output of instructions Serial.print(parameter)incorporated in the sketch itself.
An alternative example of an integrated environment dedicated to Arduino (but also to other uses) is Minibloq, distributed with a free license, which provides a particular visual development environment for programming Arduino, robots, and other similar physical computing devices.
Miniblog features are the intuitive interface, and the ability to generate the code from a block diagram designed by the user. For this intuitive setting, the software is aimed at bringing beginners and beginners closer to microcontroller programming, in school and educational contexts ranging from primary school to high school environment.
The application, compiled with GCC, can also be used on lower-performance computers, such as netbooks, OLPC XO-1, Intel – Classmate.
Although the hardware schematics and software sources are made available under copyleft licenses, the Arduino name and logo are registered trademarks and may only be used with permission. The document that expresses the policy of use of the name “Arduino” emphasizes how open the project is to incorporate other people’s works into the official product.
As a consequence of these conventions on the protection of the name, a group of users has made a ” fork ” (in the broad sense of the term) of the Arduino Diecimila, distributing an equivalent card called “Freeduino”; the name is deliberately not registered and is therefore freely usable.