Jump to content

Arduino

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Nave.notnilc (talk | contribs) at 13:59, 9 September 2010 (External links: cleaning up external links). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Arduino Software
Developer(s)Arduino Software
Stable release
0019 / September 3, 2010 (2010-09-03)
Written inJava
Operating systemCross-platform
TypeIntegrated Development Environment
LicenseLGPL or GPL license
Websitehttp://www.arduino.cc/en/

An Arduino is a single-board microcontroller and a software suite for programming it. The hardware consists of a simple open hardware design for the controller with an Atmel AVR processor and on-board I/O support. The software consists of a standard programming language and the boot loader that runs on the board.[1]

Arduino hardware is programmed using a Wiring based language (syntax + libraries), similar to C++ with some simplifications and modifications, and a Processing based IDE.[1]

Currently shipping versions can be purchased pre-assembled; hardware design information is available for those who would like to assemble an Arduino by hand. Additionally, Arduino-inspired clones with varying levels of compatibility have been released by third parties.

The Arduino project received an honorary mention in the Digital Communities category at the 2006 Prix Ars Electronica.[2][3]

The project began in Ivrea, Italy in 2005 to make a device for controlling student-built interaction design projects less expensively than other prototyping systems available at the time. As of October 2008 more than 50,000 Arduino boards had been shipped.[4] This has risen to more than 120,000 shipped boards as of February 2010.[5]

Platform

Hardware

An official Arduino Duemilanove (rev 2009b).

An Arduino board consists of an 8-bit Atmel AVR microcontroller 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, and ATmega1280. A handful of other processors have been used by Arduino clones. Most boards include a 5-volt linear regulator and a 16 MHz crystal oscillator (or ceramic resonator 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 bootloader that simplifies uploading of programs to the on-chip flash memory, compared with other devices that typically need an external chip programmer.

At a conceptual level, when using the Arduino software stack all boards are programmed over an RS-232 serial connection, but the way in which 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, implemented using USB-to-serial adapter chips such as the FTDI FT232. Some variants, such as the Arduino Mini and the unofficial Boarduino, use a detachable USB-to-serial adapter board or cable, Bluetooth 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, 6 of which can produce PWM signals, and 6 analog inputs. These pins are available on the top of the board, via female 0.1 inch headers. Several plug-in application boards known as "shields" are also commercially available.

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

Arduino Diecimila Duemilanove Mega
Processor (Amtel) AVR ATmega168 ATmega328 ATmega1280
KB Flash 16 32 128
KB EEPROM 0.5 1 4
KB SRAM 1 2 8
Digital I/O Pins (40 mA) 14 14 54
of which PWM output 6 6 14
Analog Input Pins 6 6 16

Software

The Arduino IDE is a cross-platform application written in Java which is derived from the IDE made 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, brace matching, 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 the command line.

The Arduino IDE comes with a C/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 to define two functions in order to make a runnable program:

  • setup() – a function run once at the start of a program which can be used for initializing settings, and
  • loop() – a function called repeatedly until the board is powered off.

A typical first program for a microcontroller is to simply blink a LED (light-emitting diode) on and off. In the Arduino environment, the user might write a program like this:

#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
}

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 and AVR Libc to compile programs, and uses avrdude to upload programs to the board.

Official hardware

The Arduino Diecimila

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.

Eleven versions of the Arduino hardware have been commercially produced to date:[1]

  1. The Serial Arduino, programmed with a DE-9 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 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 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.[6]

Open hardware and open source

The Arduino hardware reference designs are distributed under a 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 license.[1]

Accessory hardware

A prototyping shield, mounted on an Arduino

Arduino and clones make use of shields, which are printed circuit boards which 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).[1]

For Example:

Clones

Although the hardware and software designs are freely available under copyleft licenses, the developers have requested that the name "Arduino" be exclusive to the official product 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.[1]

As a result of the protected naming conventions of the Arduino, a group of Arduino users forked the Arduino Diecimila, releasing an equivalent board called Freeduino. The name "Freeduino" is not trademarked and is free to use for any use.[7]

Several Arduino-compatible products commercially released have avoided the "Arduino" name by using "-duino" name variants.[7]


Shield-compatible clones

Example of a shield-compatible clone: the Freetronics TwentyTen

The following boards are fully or almost fully compatible with both the Arduino hardware and software, including being able to accept "shield" daughterboards.

  • The "Freeduino MaxSerial", a board with a standard DE-9 serial port, manufactured and sold assembled or as a kit by Fundamental Logic.
  • The "Freeduino Through-Hole", a board that avoids surface-mount soldering, manufactured and sold as a kit by NKC Electronics.
  • The "Illuminato Genesis", a board which uses an ATMega644 instead of an ATMega168. This provides 64K of flash, 4K of RAM and 42 general IO pins. Hardware and firmware are open source.
  • The "eJackino", kit by CQ publisher in JAPAN. Similar to Seeeduino, eJackino can use Universal boards as Shields. On Back side, there is a "Akihabara station" silk, just like Italia on Arduino.
  • The "Japanino" is a kit by Otonano Kagaku publisher in Japan. The board an a POV kit was included in Vol. 27 of the eponymous series. An ATMega 168 powers it. It is unique in having a regular size USB A connector.
  • The "Wiseduino" is an Arduino-compatible microcontroller board, which includes a DS1307 real time clock (RTC) with backup battery, a 24LC256 EEPROM chip and a connector for XBee adapter for wireless communication.
  • The "TwentyTen" is an Arduino-compatible microcontroller board, based on the Duemilanove, with some improvements, including a prototyping area, rearranged LEDs, mini-USB connector, and altered pin 13 circuitry so that the LED and resistor do not interfere with pin function when acting as an input.
  • The "Volksduino" is a low cost, high power, shield compatible, complete Arduino clone kit. Based on the Duemilanove, it comes with a 5V / 1A voltage regulator and has an option for a 3.3V regulator. The Volksduino was designed by Applied Platonics to have a low component count and to be "easy for anyone of any age to put together".
  • The "ZArdino" is a South African clone derived from the Duemilanove, features mostly through hole construction with the exception of the SMD FT232RL IC, power selection switches, option for a phoenix power connector instead of DC jack, extra I/O pads for using Veroboard as shields, designed to be easy to construct in countries where exotic components are hard to find.

Special Purpose Clones

A special purpose clone is a board that contains a complete Arduino clone and additional hardware optimised for a specific application. Its kind of like having an Arduino and a shield on a single board. Some are shield compatible, others are not [editors, please indicate shield-compatibility and what special hardware is on the board].

File:Dfrobotshop-rover.jpg
The DFRobotShop Rover PCB with tracks, motors and frame
  • The "DFRobotShop Rover" is a versatile, minimalist tracked platform based on the Arduino Duemilanove. The PCB incorporates an ATMEGA328 chip with Arduino bootloader, as well as a dual H-bridge and additional prototyping space and headers. The PCB is compatible with many shields though four digital pins are used when operating the motor controller. In addition to this, there is an onboard voltage regulator, additional LEDs, a temperature sensor and a light sensor. The DFRobotShop Rover kit includes a twin motor gearbox, tracks and minimalist frame in order to create a tracked mobile robot.
  • The "Lightuino", a shield-compatible clone ATMega 328p that drives LEDs (70 constant-current channels) and LED matrices (1100 LEDs). It also features an adjustable voltage regulator to power the LEDs, an ambient light sensor to decide when to turn "on", and IR receiver to control your project.

Bootloader-compatible clones

These boards are compatible with the Arduino software but do not accept standard shields. They have different connectors for power and I/O, such as a series of pins on the underside of the board for use with breadboards for easy prototyping, or more specific connectors.

  • The "Oak Micros om328p" - an Arduino Duemilanove compacted down to a breadboardable device (36mm x 18mm) that can be inserted into a standard 600mil 28-pin socket, with USB capability, ATmega328p, and 6 onboard LEDs.
  • The "Boarduino" - an inexpensive Diecimila clone made for breadboarding, produced by Adafruit.
  • The "Bare Bones Board" (BBB) and "Really Bare Bones Board" (RBBB) by Modern Device - compact inexpensive clones suitable for breadboarding.
  • The "Breaduino" - a complete, very low cost Arduino-compatible kit made to be assembled entirely on a breadboard, made by Applied Platonics.
  • The "Ardweeny" - an inexpensive, even more compact breadboardable device from Solarbotics.
  • The "iDuino", a USB board for breadboarding, manufactured and sold as a kit by Fundamental Logic.
  • The "Sanguino" - An open source enhanced Ardiuno clone which uses an ATMega644P instead of an ATMega168. This provides 64K of flash, 4K of RAM and 32 general IO pins in a 40 pin DIP device. It was developed with the RepRap Project in mind.
  • The "LEDuino", a board with enhanced I²C, DCC decoder and CAN-bus interfaces. Manufactured using surface mount and sold assembled by Siliconrailway.
  • The "Stickduino", similar to a usb key.
  • The "Roboduino", designed for robotics. All of its connections have neighboring power buses into which servos and sensors can easily be plugged. Additional headers for power and serial communication are also provided. It was developed by Curious Inventor, L.L.C.
  • The "Wireless Widget", is a compact (35 mm x 70 mm), low voltage, battery powered Arduino clone with onboard wireless capable of ranges up to 120 m. The Wireless Widget was designed for both portable and low cost Wireless sensor network applications.
  • The "ZB1", is an Arduino clone that includes a Zigbee radio (XBee). The ZB1 can be powered by USB, a wall adapter or an external battery source. It is designed for low-cost Wireless sensor network applications.
  • The "NB1A", is an Arduino clone that includes a battery backed up real-time clock and a four channel DAC. Most Arduino clones require an additional shield for these resources.
  • The "NB2A", is an Sanguino clone that includes a battery backed up real-time clock and a two channel DAC. Sanguino's feature the ATmega644P which has additional memory, IO lines and a second UART.
  • The "Seeeduino Mega", is an Arduino Mega clone with 16 extra IO Pins.
  • The "JeeNode" (and JeeLink) is a low-cost, low-size, radio-enabled Arduino clone. Based on RBBB with a HopeRF RFM12B wireless module but with a modular approach to IO interfaces.
  • The "Rainbowduino", is an Arduino-compatible board designed specifically for driving LEDs. It is generally used to drive an 8x8 RGB LED matrix using row scanning, but can be used for other things.

Non-ATmega boards

The following boards accept Arduino "shield" daughter boards but do not use ATmega micro-controllers, and are therefore incompatible with the Arduino IDE.

  • The "Amicus18", The Amicus18 is an embedded system platform based on PIC architecture (18F25K20). Can be programmed with any programming language, though the Amicus IDE is completely free and extremely powerful.
  • The "ARMmitePRO", ARM Cortex M3 and ARM7TDMI-based shield-compatible boards from Coridium, programmable in BASIC or C.
  • The "Cortino", a development system for the 32-bit ARM Cortex M3 Microprocessor.
  • The "Pinguino", is a board based on a PIC microcontroller, with native USB support and compatibility with the Arduino programing language plus an IDE built with Python and sdcc as compiler.
  • The "Unduino", is a board based on the dsPIC33FJ128MC202 microcontroller, with integrated motor control peripherals.
  • The "Leaflab Maple", a 75Mhz 32-bit ARM micro-controller with USB support, compatibility with Arduino shields, and 39 GP I/O pins. Programmable with the open source Maple IDE (which is a branch of the Arduino library) or low-level native code (with support from the libmaple C library).

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 on the TWIT.tv network, in which he discussed the history and goals of the Arduino project.[8]

See also

References

  1. ^ a b c d e f "Project homepage". Arduino project. {{cite web}}: External link in |publisher= (help)
  2. ^ "Ars Electronica Archiv" (in German). Retrieved 2009-02-18.
  3. ^ "Ars Electronica Archiv / ANERKENNUNG" (in German). Retrieved 2009-02-18.
  4. ^ Thompson, Clive (2008-10-20). "Build It. Share It. Profit. Can Open Source Hardware Work?". Wired. 16 (11): 166–176. Retrieved 2009-04-30.
  5. ^ Cuartielles, David (2010-02-17). "Öppnade hårdvaran och skapade Arduino". Metro Teknik: 10. Retrieved 2010-06-20.
  6. ^ "ArduinoBoardMega". Arduino. Retrieved 2009-03-26.
  7. ^ a b "Freeduino Open Designs". Retrieved 2008-03-03.
  8. ^ http://twit.tv/floss61

Bibliography

Template:Link GA