Arduino
Encyclopedia
Arduino is an open-source single-board microcontroller
Single-board microcontroller
A single-board microcontroller is a microcontroller built onto a single printed circuit board. This board provides all of the circuitry necessary for a useful control task: microprocessor, I/O circuits, clock generator, RAM, stored program memory and any support ICs necessary...

, descendant of the open-source Wiring platform
Wiring (development platform)
Wiring is an open source electronics prototyping platform composed of a programming language, an integrated development environment , single-board microcontroller documentation thoughtfully created with designers and artists in mind and a community where experts, intermediate and beginners from...

, designed to make the process of using electronics in multidisciplinary projects more accessible. The hardware consists of a simple open hardware design for the Arduino board with an Atmel AVR
Atmel AVR
The AVR is a modified Harvard architecture 8-bit RISC single chip microcontroller which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other...

 processor and on-board input/output
Input/output
In computing, input/output, or I/O, refers to the communication between an information processing system , and the outside world, possibly a human, or another information processing system. Inputs are the signals or data received by the system, and outputs are the signals or data sent from it...

 support. The software consists of a standard programming language compiler and the boot loader that runs on the board.

Arduino hardware is programmed using a Wiring-based language (syntax and libraries), similar to C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 with some simplifications and modifications, and a Processing
Processing (programming language)
Processing is an open source programming language and integrated development environment built for the electronic arts and visual design communities with the purpose of teaching the basics of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks...

-based integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

.

Current versions can be purchased pre-assembled; hardware design information is available for those who would like to assemble an Arduino by hand. Additionally, variations of the Italian-made Arduino—with varying levels of compatibility—have been released by third parties; some of them are programmed using the Arduino software.

The Arduino project received an honorary mention in the Digital Communities category at the 2006 Prix Ars Electronica
Prix Ars Electronica
The Prix Ars Electronica is one of the most important yearly prizes in the field of electronic and interactive art, computer animation, digital culture and music...

.

History

The project began in Ivrea
Ivrea
Ivrea is a town and comune of the province of Turin in the Piedmont region of northwestern Italy. Situated on the road leading to the Aosta Valley , it straddles the Dora Baltea and is regarded as the centre of the Canavese area. Ivrea lies in a basin that, in prehistoric times, formed a great lake...

, Italy
Italy
Italy , officially the Italian Republic languages]] under the European Charter for Regional or Minority Languages. In each of these, Italy's official name is as follows:;;;;;;;;), is a unitary parliamentary republic in South-Central Europe. To the north it borders France, Switzerland, Austria and...

 (the site of the computer company Olivetti
Olivetti
Olivetti S.p.A. is an Italian manufacturer of computers, printers and other business machines.- Founding :The company was founded as a typewriter manufacturer in 1908 in Ivrea, near Turin, by Camillo Olivetti. The firm was mainly developed by his son Adriano Olivetti...

), in 2005 to make a device for controlling student-built interaction design projects less expensive than other prototyping systems available at the time. As of February 2010 more than 120,000 Arduino boards had been shipped. Founders Massimo Banzi and David Cuartielles named the project after Arduin of Ivrea, the main historical character of the town. "Arduino" is an Italian masculine first name, meaning "strong friend". The English version of the name is "Hardwin".

The Arduino project is a fork
Fork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...

 of the open-source Wiring Platform
Wiring (development platform)
Wiring is an open source electronics prototyping platform composed of a programming language, an integrated development environment , single-board microcontroller documentation thoughtfully created with designers and artists in mind and a community where experts, intermediate and beginners from...

. Wiring was created by Colombian artist and programmer Hernando Barragán as a master's thesis at the Interaction Design Institute Ivrea
Interaction Design Institute Ivrea
Interaction Design Institute Ivrea was a graduate school in the field of Interaction Design operating in the town of Ivrea, in Italy....

 along with co-creator Diego Gonzalez Joven a Mexican electrical engineer, under the supervision of Massimo Banzi and Casey Reas. Futhermore, Wiring is based on Processing
Processing (programming language)
Processing is an open source programming language and integrated development environment built for the electronic arts and visual design communities with the purpose of teaching the basics of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks...

 and its integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

 created by Casey Reas and Ben Fry.

Hardware

An Arduino board consists of an 8-bit Atmel AVR microcontroller
Microcontroller
A microcontroller is a small computer on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals. Program memory in the form of NOR flash or OTP ROM is also often included on chip, as well as a typically small amount of RAM...

 with complementary components to facilitate programming and incorporation into other circuits. An important aspect of the Arduino is the standard way that connectors are exposed, allowing the CPU board to be connected to a variety of interchangeable add-on modules (known as shields). Official Arduinos have used the megaAVR series of chips, specifically the ATmega8, ATmega168, ATmega328, ATmega1280, and ATmega2560. A handful of other processors have been used by Arduino compatibles. Most boards include a 5 volt linear regulator
Linear regulator
In electronics, a linear regulator is a voltage regulator based on an active device operating in its "linear region" or passive devices like Zener diodes operated in their breakdown region...

 and a 16 MHz crystal oscillator
Crystal oscillator
A crystal oscillator is an electronic oscillator circuit that uses the mechanical resonance of a vibrating crystal of piezoelectric material to create an electrical signal with a very precise frequency...

 (or ceramic resonator
Ceramic resonator
A ceramic resonator is an electronic component that when combined with other appropriate components, can produce oscillations at a specific frequency...

 in some variants), although some designs such as the LilyPad run at 8 MHz and dispense with the onboard voltage regulator due to specific form-factor restrictions. An Arduino's microcontroller is also pre-programmed with a boot loader that simplifies uploading of programs to the on-chip flash memory
Flash memory
Flash memory is a non-volatile computer storage chip that can be electrically erased and reprogrammed. It was developed from EEPROM and must be erased in fairly large blocks before these can be rewritten with new data...

, compared with other devices that typically need an external programmer
Programmer (hardware)
In field of computer hardware, the term programmer, chip programmer or device programmer refers to a hardware device that configures programmable non-volatile circuits such as EPROMs, EEPROMs, Flashs, PALs, FPGAs or programmable logic circuits....

.

At a conceptual level, when using the Arduino software stack, all boards are programmed over an RS-232
RS-232
In telecommunications, RS-232 is the traditional name for a series of standards for serial binary single-ended data and control signals connecting between a DTE and a DCE . It is commonly used in computer serial ports...

 serial connection, but the way this is implemented varies by hardware version. Serial Arduino boards contain a simple inverter circuit to convert between RS-232-level and TTL-level signals. Current Arduino boards are programmed via USB
Universal Serial Bus
USB is an industry standard developed in the mid-1990s that defines the cables, connectors and protocols used in a bus for connection, communication and power supply between computers and electronic devices....

, implemented using USB-to-serial adapter chips such as the FTDI
FTDI
Future Technology Devices International, commonly known by its initialization, FTDI, is a Scottish privately traded semiconductor device company, specializing in Universal Serial Bus technology...

 FT232. Some variants, such as the Arduino Mini and the unofficial Boarduino, use a detachable USB-to-serial adapter board or cable, Bluetooth
Bluetooth
Bluetooth is a proprietary open wireless technology standard for exchanging data over short distances from fixed and mobile devices, creating personal area networks with high levels of security...

 or other methods. (When used with traditional microcontroller tools instead of the Arduino IDE, standard AVR ISP programming is used.)

The Arduino board exposes most of the microcontroller's I/O pins for use by other circuits. The Diecimila, now superseded by the Duemilanove, for example, provides 14 digital I/O pins, six of which can produce pulse-width modulated
Pulse-width modulation
Pulse-width modulation , or pulse-duration modulation , is a commonly used technique for controlling power to inertial electrical devices, made practical by modern electronic power switches....

 signals, and six analog inputs. These pins are on the top of the board, via female 0.1 inch headers. Several plug-in application "shields" are also commercially available.

The Arduino Nano, and Arduino-compatible Bare Bones Board and Boarduino boards provide male header pins on the underside of the board to be plugged into solderless breadboards.

Arduino board models

Arduino Processor Flash
KiB
EEPROM
KiB
SRAM
KiB
Digital I/O
pins
...with
PWM
Analog input
pins
USB Interface
type
Dimensions
inches
Dimensions
mm
Diecimila ATmega168 16 0.5 1 14 6 6 FTDI 2.7 in × 2.1 in 68.6 mm × 53.3 mm
Due ATMEL SAM3U 256 0 50 54 4 16
Duemilanove ATmega168/328P 16/32 0.5/1 1/2 14 6 6 FTDI 2.7 in × 2.1 in 68.6 mm × 53.3 mm
Uno ATmega328P 32 1 2 14 6 6 ATmega8U2 2.7 in × 2.1 in 68.6 mm × 53.3 mm
Leonardo Atmega32u4 32 1 2 14 6 12 Atmega32u4 integrated 2.7 in × 2.1 in 68.6 mm × 53.3 mm
Mega ATmega1280 128 4 8 54 14 16 FTDI 4 in × 2.1 in 101.6 mm × 53.3 mm
Mega2560 ATmega2560 256 4 8 54 14 16 ATmega8U2 4 in × 2.1 in 101.6 mm × 53.3 mm
Fio ATmega328P 32 1 2 14 6 8 None 1.6 in × 1.1 in 40.6 mm × 27.9 mm
Nano ATmega168 or ATmega328 16/32 0.5/1 1/2 14 6 8 FTDI 1.70 in × 0.73 in 43 mm × 18 mm
LilyPad ATmega168V or ATmega328V 16 0.5 1 14 6 6 None 2 in ⌀ 50 mm ⌀

Software

The Arduino IDE is a cross-platform application written in Java, and is derived from the IDE for the Processing programming language and the Wiring project. It is designed to introduce programming to artists and other newcomers unfamiliar with software development. It includes a code editor with features such as syntax highlighting
Syntax highlighting
Syntax highlighting is a feature of some text editors that display text—especially source code—in different colors and fonts according to the category of terms. This feature eases writing in a structured language such as a programming language or a markup language as both structures and...

, brace matching
Brace matching
Brace matching, or parentheses matching, is a syntax highlighting feature of certain text editors and integrated development environments that highlights matching sets of braces in languages such as Java and C++ that use them...

, and automatic indentation, and is also capable of compiling and uploading programs to the board with a single click. There is typically no need to edit makefiles or run programs on a command-line interface
Command-line interface
A command-line interface is a mechanism for interacting with a computer operating system or software by typing commands to perform specific tasks...

.

The Arduino IDE comes with a C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

/C++ library called "Wiring" (from the project of the same name), which makes many common input/output operations much easier. Arduino programs are written in C/C++, although users only need define two functions to make a runnable program:
  • setup – a function run once at the start of a program that can initialize settings
  • loop – a function called repeatedly until the board powers off


A typical first program for a microcontroller simply blinks a LED (light-emitting diode
Light-emitting diode
A light-emitting diode is a semiconductor light source. LEDs are used as indicator lamps in many devices and are increasingly used for other lighting...

) on and off. In the Arduino environment, the user might write a program like this:

  1. define LED_PIN 13


void setup {
pinMode (LED_PIN, OUTPUT); // enable pin 13 for digital output
}

void loop {
digitalWrite (LED_PIN, HIGH); // turn on the LED
delay (1000); // wait one second (1000 milliseconds)
digitalWrite (LED_PIN, LOW); // turn off the LED
delay (1000); // wait one second
}


For the above code to work correctly, the positive side of the LED must be connected to pin 13 and the negative side of the LED must be connected to ground. The above code would not be seen by a standard C++ compiler as a valid program, so when the user clicks the "Upload to I/O board" button in the IDE, a copy of the code is written to a temporary file with an extra include header at the top and a very simple main function at the bottom, to make it a valid C++ program.

The Arduino IDE uses the GNU toolchain
GNU toolchain
The GNU toolchain is a blanket term for a collection of programming tools produced by the GNU Project. These tools form a toolchain used for developing applications and operating systems....

 and AVR Libc to compile programs, and uses avrdude to upload programs to the board.

For educational purposes there is third party graphical development environment called Minibloq
Minibloq
Minibloq is a graphical development environment for Arduino and other platforms. Its main objective is to help in teaching programming. It is specially used in robotics at high school.- How it works :...

 available under a different open source license.

Official hardware

The original Arduino hardware is manufactured by the Italian company Smart Projects. Some Arduino-branded boards have been designed by the American company SparkFun Electronics
SparkFun Electronics
SparkFun Electronics is an electronics retailer in Boulder, Colorado, United States. It manufactures and sells microcontroller development boards and breakout boards.-History:...

.

Thirteen versions of the Arduino hardware have been commercially produced to date:
  1. The Serial Arduino, programmed with a DE-9
    D-subminiature
    The D-subminiature or D-sub is a common type of electrical connector. They are named for their characteristic D-shaped metal shield. When they were introduced, D-subs were among the smaller connectors used on computer systems....

     serial connection and using an ATmega8
  2. The Arduino Extreme, with a USB interface for programming and using an ATmega8
  3. The Arduino Mini, a miniature version of the Arduino using a surface-mounted
    Surface-mount technology
    Surface mount technology is a method for constructing electronic circuits in which the components are mounted directly onto the surface of printed circuit boards . An electronic device so made is called a surface mount device...

     ATmega168
  4. The Arduino Nano, an even smaller, USB powered version of the Arduino using a surface-mounted ATmega168 (ATmega328 for newer version)
  5. The LilyPad Arduino, a minimalist design for wearable application
    Wearable technology
    Wearable technology, tech togs, or fashion electronics are clothing and accessories incorporating computer and advanced electronic technologies...

     using a surface-mounted ATmega168
  6. The Arduino NG, with a USB interface for programming and using an ATmega8
  7. The Arduino NG plus, with a USB interface for programming and using an ATmega168
  8. The Arduino Bluetooth, with a Bluetooth interface for programming using an ATmega168
  9. The Arduino Diecimila, with a USB interface and utilizes an ATmega168 in a DIL28 package (pictured)
  10. The Arduino Duemilanove ("2009"), using the ATmega168 (ATmega328 for newer version) and powered via USB/DC power, switching automatically
  11. The Arduino Mega, using a surface-mounted ATmega1280 for additional I/O and memory.
  12. The Arduino Uno, uses the same ATmega328 as late-model Duemilanove, but whereas the Duemilanove used an FTDI chipset for USB, the Uno uses an ATmega8U2 programmed as a serial converter.
  13. The Arduino Mega2560, uses a surface-mounted ATmega2560, bringing the total memory to 256 kB. It also incorporates the new ATmega8U2 USB chipset.

Open hardware and open source

The Arduino hardware reference designs are distributed under a Creative Commons
Creative Commons
Creative Commons is a non-profit organization headquartered in Mountain View, California, United States devoted to expanding the range of creative works available for others to build upon legally and to share. The organization has released several copyright-licenses known as Creative Commons...

 Attribution Share-Alike 2.5 license and are available on the Arduino Web site. Layout and production files for some versions of the Arduino hardware are also available. The source code for the IDE and the on-board library are available and released under the GPLv2
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

 license.

Accessory hardware


Arduino and Arduino-compatible boards make use of shields, which are printed circuit boards that sit atop an Arduino, and plug into the normally supplied pin-headers. These are expansions to the base Arduino. There are many functions of shields, from motor controls, to breadboarding (prototyping).

For example:

A list of Arduino-compatible shields is maintained at the Arduino Shield List website. A number of shields can also be made DIY.

Arduino-compatible boards

There are a great many Arduino-compatible and Arduino-derived boards. Some are functionally equivalent to an Arduino and may be used interchangeably. Many are the basic Arduino with the addition of commonplace output drivers, often for use in school-level education to simplify the construction of buggies and small robots. Others are electrically equivalent but change the form factor, sometimes permitting the continued use of Shields, sometimes not. Some variants even use completely different processors, with varying levels of compatibility.

Although the hardware and software designs are freely available under copyleft
Copyleft
Copyleft is a play on the word copyright to describe the practice of using copyright law to offer the right to distribute copies and modified versions of a work and requiring that the same rights be preserved in modified versions of the work...

 licenses, the developers have requested that the name "Arduino" be exclusive to the official product
Genericized trademark
A genericized trademark is a trademark or brand name that has become the colloquial or generic description for, or synonymous with, a general class of product or service, rather than as an indicator of source or affiliation as intended by the trademark's holder...

 and not be used for derivative works without permission. The official policy document on the use of the Arduino name emphasizes that the project is open to incorporating work by others into the official product. Several Arduino-compatible products commercially released have avoided the "Arduino" name by using "-duino" name variants.

Development team

The core Arduino developer team is composed of Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis and Nicholas Zambetti. Massimo Banzi was interviewed on the March 21st, 2009 episode (Episode 61) of FLOSS Weekly
FLOSS Weekly
FLOSS Weekly is a free software / open source themed podcast from the TWiT Network. The show premiered on April 7, 2006, and features prominent guests from the free software/open source community. It was originally hosted by Leo Laporte; his cohost for the first seventeen episodes was Chris DiBona...

 on the TWiT.tv network, in which he discussed the history and goals of the Arduino project.

See also

  • Arduinome
    Arduinome
    An Arduinome is a MIDI controller device that mimics the Monome using the Arduino physical computing platform. The plans for the Arduinome are released under an open source, non-commercial use only license.-External links:* *...

  • ARM express
    ARM express
    ARM express refers to a line of products from Coridium.Pin compatible with the Basic stamp, the ARM express line is based upon 60 MHz 32 bit ARM microcontrollers programmable in ARMbasic dialect of BASIC, as well as C and Oberon...

  • BASIC Stamp
    BASIC Stamp
    The BASIC Stamp is a microcontroller with a small, specialized BASIC interpreter built into ROM. It is made by Parallax, Inc. and has been popular with electronics hobbyists since the early 1990s because of its low threshold of learning and ease of use due to its simple to understand BASIC...

  • Fritzing
    Fritzing
    Fritzing is an open source software initiative to support designers and artists ready to move from physical prototyping to actual product. It was developed at the University of Applied Sciences of Potsdam.- Goals :...

  • Rabbit Semiconductor
    Rabbit Semiconductor
    Rabbit Semiconductor is the company which designs and sells the Rabbit family of microcontrollers and microcontroller modules.For development, it provides Dynamic C, a non-standard dialect of C with proprietary structures for multitasking....

  • Make Controller Kit
  • OOPic
    OOPic
    The OOPic is an Object Oriented Programmable Integrated Circuit. Created by Savage Innovations, this PIC microcontroller comes with an IDE that supports programming in syntaxes based on the BASIC, Java and C programming languages.There are three versions currently on the market: the , the and the...

  • Parallax Propeller
    Parallax Propeller
    The Parallax P8X32A Propeller chip, introduced in 2006, is a multi-core architecture parallel microcontroller with eight 32-bit RISC CPU cores....

  • PICAXE
    PICAXE
    PICAXE is the name of a UK-sourced microcontroller system based on a range of Microchip PICs. There are 13 PICAXE variants of differing pin counts from 8 to 40 pins. Initially marketed for use in education and by electronics hobbyists, they are also used in commercial and technical fields,...

  • Gumstix
    Gumstix
    Gumstix is a company founded in 2003 by Gordon Kruberg that produces small single-board computers. The name Gumstix refers to the size of the first such computer being the approximate size of a stick of gum....

  • ioBridge
    IObridge
    ioBridge, Inc. is a manufacturer of Internet-based monitor and control hardware and a provider of integrated web services.In December 2008, ioBridge released the IO-204 Monitor and Control Module and web services platform to connect electronics projects online such as an iPhone Controlled Dog Treat...

  • Humane Informatics
    Humane Informatics
    Humane Informatics is a one-man project in the field of Information and communication technologies for development led by Braddock Gaskill. As of October 2010 the project introduced two open-source hardware devices - the Humane Reader and the Humane PC...

  • Freescale Semiconductor
    Freescale Semiconductor
    Freescale Semiconductor, Inc. is a producer and designer of embedded hardware, with 17 billion semiconductor chips in use around the world. The company focuses on the automotive, consumer, industrial and networking markets with its product portfolio including microprocessors, microcontrollers,...

  • Netduino, Arduino hardware compatible SoC running the Open Source .NET Compact Framework
    .NET Compact Framework
    The Microsoft .NET Compact Framework is a version of the .NET Framework that is designed to run on resource constrained mobile/embedded devices such as personal digital assistants , mobile phones, factory controllers, set-top boxes, etc...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK