Wem der Einstieg in die Programmierung der Atmel AVR Controller mit den Datenblättern zu schwer fällt, für den ist Arduino vielleicht genau das richtige. Arduino ist eine Open-Source- Plattform, basierend auf einem Microcontroller-Board und einer Entwicklungsumgebung mit einer API für den Microcontroller. In diesem Zusammenhang wird oft auch der Begriff Physical Computing verwendet. Darunter versteht im weitesten Sinne ein physikalisches System, das mit Hilfe von Hard- und Software mit der realen analogen Welt interagieren kann. Im Gegensatz zu anderen Kaufboards wie z.B. die BasicStamp Reihe sind die Arduino Boards viel günstiger im Preis.
Einleitung
Der Name Arduino ist italienisch und bezieht sich nach offizieller Meinung auf Arduino von Ivrea (955-1015), der Markgraf von Ivrea und später König von Italien war. Nach inoffizieller Meinung ist der Name eher trivialer Natur, es ist einfach der Name einer hiesigen Studentenkneipe ;-). Einiger der Arduino Entwickler arbeiten am Interaction Design Institute von Ivrea darunter Massimo Banzi und David Cuartielles.
Hardware
Die Arduino Hardware benutzt den Atmel AVR ATmega8/168 als Prozessor Plattform. Zur Kommunikation mit einem PC mit dem Arduino Board steht die serielle Schnittstelle des Atmel Prozessors zur Verfügung. Neuere Boards verfügen zudem über einen USB-Seriell Wandler, Bluetooth oder ZigBee Adapter.
Das Arduino Board kann man:
- fertig montiertes Board kaufen,
- gefertigte Platine, ohne Bauteile
- das Board komplett selbst aufbauen.
Folgende Fertigboards gibt es:
- Arduino Serial, der Ur-Vater mit RS232 Anbindung
- Arduino NG, (Nuova Generazione) mit USB Anbindung
- Arduino Diecimila, die neuste Generation mit USB Anbindung
- Arduino BT mit Bluetooth Anbindung
- Arduino Mini, 24poliger DIL Sockel ähnlich der BasicStamp
- Freeduino Board, ein Arduino Clone
- Boarduino, ein Arduino für Steckbretter
Zudem gibt es noch einige Arduino Clones:
Arduino Diecimila
Das Arduino Diecimila ist das neueste Arduino Board auf dem Markt. Der Name Diecimila ist italienisch und bedeuted übersetzt 10000. Das soll auf die Zahl von über 10000 bisher verkauften Arduino Boards hindeuten. Die wichigtste Neuerung des Diecimila Boards ist die Fähigkeit das laufende Programm über die Arduino IDE jederzeit abzubrechen und ein anderes Programm zu laden. Bei den anderen Boards mußte dazu immmer noch der Reset Schalter auf dem Board gedrückt werden. Für ältere Boards ist allerdings ein Hardware Patch verfügbar, der dieses Feature nachbildet.
Arduino-BT
Das Arduino Board mit Bluetooth Modem bluegiga WT11. Der Atmega168 Porzessor ist hier aus Platzgründen ein SMD Typ. Ansonsten ist das Arduino-BT bis auf den Stromversorgungsstecker Pin kompatibel zu anderen Arduino Boards. Bei diesem Board ist darauf zu achten, dass die externe Stromversorgung höchstens 5,5V betragen darf.
Software
Der Microcontroller auf dem Board wird mit Hilfe der Arduino Programmiersprache programmiert. Diese basiert auf Processing mit der Syntax von C, bzw. C++. Als Entwicklungsumgebung steht die auf Wiring basierende Arduino IDE zur Verfügung. Ein Arduino Projekt kann als Stand-Alone Lösung arbeiten oder auch PC gesteuert. Dazu gibt es fertige Bibliotheken zur Anbindung des Arduino Boards an Flash, Processing, MaxMSP…
Die Arduino API
Die Arduino API besteht aus einer Reihe von High-Level Funktionen, die den Zugriff auf die AVR Hardware vereinfachen.Über zusätzlichen Bibliotheken läßt sich die Funktionalität erweitern (z.B. I2C, Schrittmotoransteuerung etc.). Es gibt eine Fülle von Tutorials und Beispielprogramme für die Arduino Plattform. Im Arduino Playground kann jeder angemeldete User seine eigenen Projekte vorstellen.
Die Arduino IDE
Mit der Arduino IDE kann man neue Sketche erstellen oder Beispiel Sketche laden. Auf Knopfdruck wird das Sketch kompiliert und falls fehlerfrei direkt auf das Arduino Board geladen. Über das eingebaute Terminalprogramm kann man sich die Ausgaben des Arduino Boards ansehen. Hinter der schicken Oberfläche steckt die AVR-GCC Compiler Suite. Natürlich ist es auch möglich in die Sketche direkten AVR Code einzubinden.
Arduino Programmierung
Ein Arduino Programm im folgenden auch sketch genannt besteht im Grund aus den beiden Funktionen setup()
und loop()
. Beide Funktionen werden zur Laufzeit vom Arduino Core Programm aufgerufen. Die Funktion setup()
wird einmalig beim Programmstart aufgerufen. Sie enthält den Code für die Initialisierung der Hardware. Die loop()
Funktion wird anschließend zyklisch vom Arduino Core aufgerufen.
Hello World für Arduino
Das folgende sketch läßt eine LED am Digitalausgang 13 im Sekundentakt blinken.
int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }
Arduino für Robotik
Arduino eignet sich durchaus für kleinere Roboter-Projekte. Beispiele hierfür sind der Wiimote controlled firefighting robot und die Portierung für den Asuro. Auch zur Prototypen Entwicklung ist es aufgrund der einfachen Programmierung sehr gut geeignet. Ich arbeite zur Zeit auch an einem Arduino Roboter, über den ich dann natürlich auch hier berichten werde.
Weblinks
Englisch
- Arduino Homepage
- Arduino Forum
- Arduino Playground
- http://www.freeduino.org/ – Arduino Index und FreeduinoBoard
- todbot blog >> Arduino
- todbot blog >> Spooky Arduino, Tutorials
- ITP – Physical computing
- tigue.net – Arduino/Wiring, Beispiele
- Arduino Sourcecode, SVN Repository
- Wiimote controlled firefighting robot
- http://wiring.org.co/
- http://www.processing.org/
Deutsch
- incom.org – Arduino Bauanleitung
Der Vorschlag „das Board komplett selbst aufbauen“ ist ambitioniert. Nicht nur, weil es kompliziert ist, sondern auch, weil die Bauteile aus meiner Erfahrung nicht so einfach zu besorgen sind.
Nachfolger wurden dieses Jahr auf der CEBIT vorgestellt!
Arduino ist wirklich der ideale Einstieg in die Mikrocontroller Programmierung. Mit der USB Schnittstelle, die auf den meisten Boards ist, kann man auch ohne kompliziertes Programmiergerät sofort loslegen.