Arduino (Plattform)
Die Arduino-Plattform ist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Beide Komponenten sind im Sinne von Open Source quelloffen. Die Hardware besteht aus einem einfachen I/O-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung basiert auf Processing, die auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern soll. Die Programmierung selbst erfolgt in C bzw. C++ wobei technische Details wie Header Dateien include vor den Anwendern weitgehend verborgen werden und umfangreiche Libraries und Beispiele die Programmierung vereinfachen. Arduino kann verwendet werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren (z. B. Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider, diversen Skriptsprachen, Terminal, vvvv etc.). Arduino wird beispielsweise auch an Kunsthochschulen genutzt, um interaktive Installationen aufzubauen.
Arduino
| |
---|---|
![]() | |
![]() | |
Basisdaten
| |
Aktuelle Version | 1.0.5 & 1.5.2 Beta (Format invalid) |
Betriebssystem | plattformunabhängig |
Programmiersprache | C und C++ (IDE: Java) |
Kategorie | Freie Hardware |
Lizenz | LGPL/GPL (freie Software) |
www.arduino.cc |

Das Arduino-Projekt erhielt 2006 den Prix Ars Electronica[2] in der Kategorie Digital Communities.
Entwicklung
Das erste Arduino-Board wurde 2005 von Massimo Banzi und David Cuartielles entwickelt und nach einem Pub benannt. David Mellis schrieb die Programmiersprache dazu. Das Schema wurde im Netz veröffentlicht und unter eine Creative-Commons-Lizenz gestellt. Die erste Auflage betrug 200 Stück, davon gingen 50 an eine Schule. Bis 2008 wurden etwa 50.000 Boards verkauft.[3]
Hardware
Die Hardware basiert auf einem Atmel AVR-Mikrocontroller aus der megaAVR-Serie bzw. beim Arduino Due auf einem Atmel ARM Cortex-M3 Prozessor. Ursprünglich wurde der ATmega8, später der ATmega168 und aktuell der ATmega328, der ATmega1280 und der ATmega2560 verbaut. Alle Boards werden entweder über USB (5 V) oder eine externe Spannungsquelle (7-12 V) versorgt und verfügen über einen 16 MHz-Schwingquarz (es gibt Varianten mit 3,3 V Versorgungsspannung und solche mit abweichendem Takt).
Konzeptionell werden alle Boards über eine serielle Schnittstelle programmiert, wenn Reset aktiviert ist. Der Mikrocontroller ist mit einem Boot-Loader vorprogrammiert, wodurch die Programmierung direkt über die serielle Schnittstelle ohne externes Programmiergerät erfolgen kann. Bei älteren Boards wurde dafür die RS-232-Schnittstelle genutzt. Bei aktuellen Boards geschieht die Umsetzung von USB nach seriell über einen eigens entwickelten USB-Seriell-Konverter, basierend auf dem ATmega8U2. Zuvor wurde das mit dem populären Baustein FT232RL von FTDI realisiert. Die Version Arduino Leonardo verwendet als Prozessor den ATmega32u4, welcher die USB-Unterstützung nativ bereitstellt und sich damit auch als Tastatur oder Maus gegenüber einem PC ausgeben kann.
Die Arduino-Boards stellen die meisten I/O-Pins des Mikrocontrollers zur Nutzung für elektronische Schaltungen zur Verfügung. Die aktuell gängigen Boards bieten 14 digitale I/O-Pins, von denen sechs PWM-Signale ausgeben können. Dazu kommen zusätzlich sechs analoge Eingänge. Für die Erweiterung werden vorbestückte oder teilweise unbestückte Platinen – sogenannte „Shields“ – angeboten, die auf das Arduino-Board aufsteckbar sind. Es können aber auch z. B. Steckplatinen für den Aufbau von Schaltungen verwendet werden.
Die neueste Version Arduino Due besitzt einen ARM Cortex-M3 32-Bit-Prozessor vom Typ Atmel SAM3X8E und stellt mit 84MHz Taktfrequenz die leistungsstärkste Variante dar.
Arduino [4] | µController | Betriebs- spannung |
Flash KiB |
EEPROM KiB |
SRAM KiB |
Digitale I/O Pins |
… mit PWM |
Analoge Eingänge |
Interfaces | Abmessungen in mm |
---|---|---|---|---|---|---|---|---|---|---|
Nano[5] | ATmega328 (8-bit) | 5V | 32 | 1 | 2 | 14 | 6 | 8 | Mini-B USB, I²C, SPI | 43 × 18 |
Diecimila[6] | ATmega168 (8-bit) | 5V | 16 | 0,5 | 1 | 14 | 6 | 6 | USB | 68,6 × 53,3 |
Duemilanove[7] | ATmega168 (8-bit) | 5V | 16 | 0,5 | 1 | 14 | 6 | 6 | USB, SPI, ICSP, I²C | 68,6 × 53,3 |
Uno[8] | ATmega328 (8-bit) | 5V | 32 | 1 | 2 | 14 | 6 | 6 | USB, SPI, ICSP, I²C | 68,6 × 53,3 |
Ethernet[9] | ATmega328 (8-bit) | 5V | 32 | 1 | 2 | 14* | 4 | 6 | Ethernet, SD card, SPI, TWI | 68,6 × 53,3 |
Mega[10] | ATmega1280 (8-bit) | 5V | 128 | 4 | 8 | 54 | 14 | 16 | USB, SPI, ICSP, I²C, 4 UART | 101,6 × 53,3 |
Mega2560[11] | ATmega2560 (8-bit) | 5V | 256 | 4 | 8 | 54 | 14 | 16 | USB, SPI, ICSP, I²C, 4 UART | 101,6 × 53,3 |
Mega ADK[12] | ATmega2560 (8-bit) | 5V | 256 | 4 | 8 | 54 | 14 | 16 | USB, SPI, ICSP, I²C, 4 UART | 101,6 × 53,3 |
LilyPad[13] | ATmega168V oder ATmega328V (8-bit) |
2,7-5,5 V | 16 | 0,5 | 1 | 14 | 6 | 6 | USB (FTDI Basic Breakout required) | ø 50 |
BT (Bluetooth)[14] | ATmega328 (8-bit) | 5V | 32 | 1 | 2 | 14 | 4 | 6 | Bluegiga WT11 Bluetooth, TWI, I²C, SPI | 81,2 × 53,3 |
Leonardo[15] | ATmega32U4 (8-bit) | 5V | 32 | 1 | 2,5 | 20 | 7 | 12 | USB, ICSP, TWI, I²C, 1 UART | 68,6 × 53,3 |
Micro[16] | ATmega32U4 (8-bit) | 5V | 32 | 1 | 2,5 | 20 | 7 | 12 | USB, ICSP, TWI, I²C, 1 UART | 48,3 × 17,8 |
Esplora[17] | ATmega32U4 (8-bit) | 5V | 32 | 1 | 2,5 | - | - | - | Micro USB, ICSP, Tinkerkit-Konnektoren, TFT-Konnektor (LC-Display) | |
Due[18] | AT91SAM3X8E (32-bit) | 3,3V | 512 | nicht vorhanden | 96 | 54 | 12 | 12 | USB, CAN, ICSP, 2 TWI, 4 UART, 2 DAC | 101,6 × 53,3 |
* Einige dieser 14 Pins sind reserviert.
Software
Arduino bringt eine eigene integrierte Entwicklungsumgebung (IDE) mit. Dabei handelt es sich um eine plattformunabhängige Java-Anwendung. Sie basiert auf der IDE von Processing, einer auf die Einsatzbereiche Grafik, Simulation und Animation spezialisierten Entwicklungsumgebung. Die Arduino-IDE bringt einen Code-Editor mit und bindet gcc als Compiler ein. Zusätzlich werden die avr-gcc-Library und weitere Arduino-Librarys eingebunden, die die Programmierung in C und C++ stark vereinfachen.
Für ein funktionstüchtiges Programm genügt es, zwei Methoden zu definieren:
- setup() – wird beim Start des Programms (entweder nach dem Übertragen auf das Board oder nach Drücken des Reset-Tasters) einmalig aufgerufen, um z. B. Pins als Eingang oder Ausgang zu definieren.
- loop() – wird durchgehend immer wieder durchlaufen, solange das Arduino-Board eingeschaltet ist.
Hier ein Beispiel für ein Programm (in der Arduino-Diktion: Sketch), welches eine an das Arduino-Board angeschlossene LED blinken lässt:
int ledPin = 13; // die LED ist an Pin 13 angeschlossen, was in der Variablen ledPin gespeichert ist
// (Diese LED ist bei den meisten Boards integriert)
void setup() {
pinMode(ledPin, OUTPUT); // legt den LED-Pin als Ausgang fest
}
void loop() {
digitalWrite(ledPin, HIGH); // LED anschalten
delay(1000); // 1 Sekunde (=1000 ms) warten (delay() braucht den Parameter in ms)
digitalWrite(ledPin, LOW); // LED ausschalten
delay(1000); // 1 Sekunde warten
}
Mit S4A (Scratch for Arduino) gibt es eine Scratch-Modifikation, die eine freie visuelle Programmiersprache mit Programmierumgebung für den Arduino-Mikrocontroller zur Verfügung stellt.[19]
Siehe auch
Weblinks
- Offizielle Webpräsenz (englisch, teilweise Deutsch, mit deutschem Forum)
- Einsteiger-Video-Tutorials auf Youtube
- Arduino-Projekte mit Video-Tutorials auf Youtube
- Tutorial für Einsteiger
- The Complete Beginners Guide to the Arduino (E-Buch, pdf, englisch von Earthshine Electronics; 8,15 MB)
- Kreativ programmieren mit Processing und Arduino (heise.de)
- Graphisch dokumentierte Beispiele zur Implementierung von Komponenten (fritzing – eine Projektgruppe der Fachhochschule Potsdam)
- Arduino The Documentary (2010) English HD
- Übersicht über die Arduino-Hardwarewelt
- Arduino PrX: Alles über Arduino und vieles zum Nachbauen
Literatur
- Erik Bartmann: Die elektronische Welt mit Arduino entdecken. Mit dem Arduino messen, steuern und spielen, Elektronik leicht verstehen, kreativ programmieren lernen. O'Reilly, Köln 2011, ISBN 978-3-89721-319-7 (behandelt Arduino 1.0).
- Thomas Brühlmann: Arduino: Praxiseinstieg, mitp, Heidelberg 2012, ISBN 978-3-8266-9116-4.
- Michael Margolis: Arduino Kochbuch, O'Reilly, Köln 2012, ISBN 978-3-86899-353-0.
- Simon Monk: 30 Arduino Selbstbau-Projekte, Franzis, Haar 2012, ISBN 978-3-645-65136-3.
- Manuel Odendahl, Julian Finn, Alex Wenger: Arduino – Physical Computing für Bastler, Designer und Geeks, O'Reilly, Köln 2009, ISBN 978-3-89721-893-2.
- Mike Riley: O'Reillys basics: Das intelligente Haus – Heimautomation mit Arduino, Android und PC, O'Reilly, Köln 2012, ISBN 978-3-86899-363-9.
- Maik Schmidt: Arduino Ein schneller Einstieg in die Microcontroller-Entwicklung, dpunkt, Heidelberg 2011, ISBN 978-3-89864-764-9.
- Ulli Sommer: Arduino: Mikrocontroller-Programmierung mit Arduino, Freeduino, Franzis, Poing 2010, ISBN 978-3-645-65034-2.
- Günter Spanner: Arduino: Schaltungsprojekte für Profis, Elektor, Aachen 2012, ISBN 978-3-89576-257-4.
- Harold Timmis: Arduino in der Praxis, Franzis, Haar 2012, ISBN 978-3-645-65132-5.
- Dale Wheat: Arduino Internals, Apress, New York, NY 2011, ISBN 978-1-4302-3882-9 (englisch).
Einzelnachweise
- ↑ Arduino: Arduino Software Release Notes. 6. Februar 2013, abgerufen am 11. Mai 2013.
- ↑ Ars Electronica Archiv. Abgerufen am 24. November 2012.
- ↑ http://www.wired.com/techbiz/startups/magazine/16-11/ff_openmanufacturing?currentPage=all%7CWIRED MAGAZINE: 16.11 - Build It. Share It. Profit. Can Open Source Hardware Work? Clive Thompson 20. Oktober 2008
- ↑ Arduino
- ↑ Nano
- ↑ Diecimila
- ↑ Duemilanove
- ↑ Uno
- ↑ Ethernet
- ↑ Mega
- ↑ Mega2560
- ↑ Mega ADK
- ↑ LilyPad
- ↑ BT (Bluetooth)
- ↑ Leonardo
- ↑ Micro
- ↑ Esplora
- ↑ Due
- ↑ S4A - Scratch for Arduino - (Scratch-Dach)