# Arduino (Plattform)

Arduino ist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Beide Komponenten sind quelloffen. Die Hardware besteht aus einem einfachen E/A-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung basiert auf Processing und soll auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern. Die Programmierung selbst erfolgt in einer C- bzw. C++-ähnlichen Programmiersprache (Suffix meist .ino), wobei technische Details wie Header-Dateien vor den Anwendern weitgehend verborgen werden und umfangreiche Bibliotheken 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.
Das Arduino-Projekt wurde im Rahmen des Prix Ars Electronica 2006 mit einer Anerkennung in der Kategorie Digital Communities ausgezeichnet.

## Geschichte

Basierend auf einem von Hernando Barragán entwickelten Board, Wiring, das auf einem ATmega168 basierte, wurde 2005 von Massimo Banzi und David Cuartielles der erste Arduino, der auf dem günstigeren ATmega8 basierte, entwickelt. Der Name „Arduino“ wurde von einer Bar in Ivrea übernommen, in der sich einige der Projektgründer gewöhnlich trafen (Die Bar selbst wurde nach Arduin von Ivrea benannt, der von 1002 bis 1014 auch König von Italien war). David Mellis erweiterte die ebenfalls auf Barragáns Arbeit basierte C/C++-basierende Diktion dazu. Der Schaltplan wurde im Netz veröffentlicht und unter eine Creative-Commons-Lizenz gestellt. Die erste Auflage des Boards betrug 200 Stück, davon gingen 50 an eine Schule. Bis 2008 wurden etwa 50.000 Boards verkauft.

### Rechtsstreit um die Marke Arduino

Vom Januar 2015 bis Ende August 2016 befanden sich die Gründergruppe der Arduinoplattform (Arduino LLC) und die Produzenten der offiziellen Arduinoboards (Arduino S.r.l.) in einem Rechtsstreit um die Inhaberschaft des Markenrechtes von Arduino. Demnach habe die Arduino S.r.l. die Marke Arduino für die Nizza-Klassen 9 und 42 registriert, während die Arduino LLC die Marke zeitgleich in den USA nur für die Nizza-Klasse 9 registrierte. Nun war unklar, ob diese parallelen Markenrechtseintragungen legitim waren bzw. wem nun die Marke Arduino gehörte.
Im März 2015 gab der Arduino-Gründer Massimo Banzi bekannt, dass der Hersteller der Arduino-Boards Arduino S.r.l. seit einem Jahr keine Lizenzgebühren mehr an die Arduino LLC zahle, mit denen jedoch zuvor die relativ hohen Preise der Arduinoboards begründet wurden.
Zeitweise existierten zwei Webpräsenzen von Arduino: arduino.org, die von der Arduino S.r.l. betreut wird, sowie arduino.cc, die von der Arduino LLC aufgebaut wurde. Auf diesen Websites wurden seit dem Rechtsstreit unterschiedliche Varianten der Arduino IDE mit unterschiedlichen Versionsangaben angeboten. Diese waren nicht vollständig mit der Hardware des jeweils anderen Unternehmens kompatibel. Mit Version 1.8 wurden beide Varianten wieder zusammengefügt. Seitdem gibt es wieder eine offizielle Version, die die Boards beider Unternehmen unterstützt.

### Entstehung der Marke Genuino

Bei einer Veranstaltung des US-amerikanischen Magazins Make im kalifornischen San Mateo am 16. Mai 2015 stellte Massimo Banzi einen neuen Markennamen für das Arduino-Projekt vor: „Genuino“. Dieser neue Markenname soll dort genutzt werden, wo die Markenrechte der eigentlichen Marke Arduino ungeklärt sind. Außerdem kündigte er an, zukünftig Boards von mehreren Herstellern herstellen zu lassen anstatt wie bisher von einem einzigen. Banzi nannte die Firma Adafruit Industries als ersten offiziellen Hersteller. Die Gründerin von Adafruit Industries Limor Fried bestätigte die Zusammenarbeit. Damit macht sich die Arduino LLC unabhängig vom eigentlichen Hersteller der Arduino-Boards Arduino S.r.l.
Im Juni 2015 gab Banzi in Shenzhen die Zusammenarbeit mit dem Hersteller Seeedstudio bekannt, der die Microcontroller-Boards mit der neu erschaffenen Marke „Genuino“ herstellen soll. Mit den von Seeedstudio hergestellten Boards soll der asiatische Markt, insbesondere der chinesische Markt, bedient werden.
Auf der Maker Faire Rom im Oktober 2015 wurden erstmals Genuino-Boards aus europäischer Produktion verkauft. Diese wurden von Watterott electronic aus Deutschland und AXEL Elettronica aus Italien gefertigt.
Die Marke Genuino soll nun für jene Microcontroller-Boards verwendet werden, die außerhalb der Vereinigten Staaten verkauft werden. Außer der neuen Marke sollen die verkauften Boards sich nicht von den ehemaligen Arduino-Boards unterscheiden. Anscheinend ist die Rechtslage um die Markenrechte von Arduino nur in den Vereinigten Staaten eindeutig.
Bei der World Maker Faire 2016 in New York haben sich die Arduino S.r.l. und die Arduino LLC darauf geeinigt, die Streitigkeiten beizulegen, dafür sollen alle Produkte einzig über eine neu gegründete kommerzielle Arduino Holding vertrieben werden. Außerdem soll die gemeinnützige Arduino Foundation gegründet werden, die als Non-Profit-Organisation die weitere Entwicklung der Open-Source-Software Arduino Desktop IDE vorantreibt. Deswegen sind Arduino S.r.l. und Arduino LLC Ende 2016 in der Arduino AG aufgegangen. Allerdings wurde selbige nach Betrugsvorwürfen gegen den Geschäftsführer und Hauptanteilseigner Federico Musto von der von Gründern des Arduino-Projekts gegründeten BCMI aufgekauft.

## Hardware

Die Hardware eines typischen Arduino-Boards basiert auf einem Microchip-AVR-Mikrocontroller aus der megaAVR-Serie, wie etwa dem ATmega328. Abweichungen davon gibt es unter anderem bei den Arduino-Boards Arduino Due (Arm Cortex-M3 32-Bit-Prozessor vom Typ Atmel SAM3X8E), Yún, Tre, Gemma und Zero, wo andere Mikrocontroller von Atmel eingesetzt werden. Eine Besonderheit stellen zudem die Arduino-Boards Yún und Tre dar, die zusätzlich zum Mikrocontroller einen stärkeren Mikroprozessor besitzen. 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 auch Varianten mit 3,3-V-Versorgungsspannung und Varianten mit abweichendem Takt.
Mittlerweile gibt es auch Arduino-kompatible Hardware von Drittherstellern in Industrievarianten mit Hutschienenmontage und einer Spannung von 24 V. Diese können einige Aufgaben von einer SPS übernehmen.
Konzeptionell werden alle Boards über eine serielle Schnittstelle programmiert, wenn Reset aktiviert ist. Der Mikrocontroller ist mit einem Bootloader vorbereitet, 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, und bei späteren Versionen 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, der die USB-Unterstützung nativ bereitstellt und sich damit auch als Tastatur oder Maus gegenüber einem PC ausgeben kann.
Alle Arduino-Boards, bis auf den Arduino Esplora, stellen digitale Input- und Output-Pins (kurz: I/O-Pins) des Mikrocontrollers zur Nutzung für elektronische Schaltungen zur Verfügung. Üblich ist auch, dass einige davon PWM-Signale ausgeben können. Zusätzlich stehen dem Benutzer mehrere analoge Eingänge zur Verfügung (welche optional auch als digitale Ausgänge genutzt werden können). 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.

## Software

Arduino bringt eine eigene integrierte Entwicklungsumgebung (IDE) mit, die auf Wiring IDE basiert. Dabei handelt es sich um eine Java-Anwendung, die für die gängigen Betriebssysteme Windows, Linux und macOS kostenlos verfügbar ist. 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-Bibliotheken (libraries) eingebunden, die die Programmierung in C und C++ stark vereinfachen. Über Erweiterungen können neben den oben genannten AVR-Boards auch etliche andere Mikrocontroller, etwa der ESP8266, ESP32, STM32 oder MSP430 über die Arduino-IDE programmiert werden.
Für ein funktionstüchtiges Programm genügt es, zwei Funktionen 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 entweder als Eingang oder als Ausgang zu definieren.
* loop – wird nach setup in einer Endlosschleife immer wieder aufgerufen, solange das Arduino-Board eingeschaltet ist.
Nachstehend ein Beispiel für ein C-Programm (in der Arduino-Diktion: Sketch), das einen Rechteckgenerator implementiert und somit eine Rechteckschwingung (hier mit einer Frequenz von 0,5 Hz und einem Tastgrad von 50 %) generiert und dadurch eine (über einen Vorwiderstand gegen Masse) an das Arduino-Board angeschlossene Leuchtdiode (LED) entsprechend blinken lässt:
Mit S4A (Scratch for Arduino) und mblock (basierend auf scratch) gibt es Scratch-Modifikationen, die eine freie visuelle Programmiersprache mit Programmierumgebung für den Arduino-Mikrocontroller zur Verfügung stellen.
Weiterhin bietet Arduino mit Arduino Create eine webbasierte Lösung an, um im Browser zu programmieren. Geschriebene Sketche werden online in einer Cloud abgelegt. Die Kommunikation zwischen Browser und Arduino-Board wird über Plug-ins für das jeweilige Betriebssystem ermöglicht. Arduino-Boards können über USB und Netzwerkverbindung angesprochen werden. Die Nutzung von Arduino Create erfordert eine kostenlose Registrierung bei diesem Dienst. Betrieben wird die Plattform durch Amazon Web Services.

## Galerie

* Verschiedene Arduino-Boards
* Arduino Diecimila
* Arduino Duemilanove (rev 2009b)
* Arduino UNO
* Genuino UNO
* Arduino Leonardo
* Arduino MEGA 2560 R3 (Vorderseite)
* Arduino MEGA 2560 R3 (Rückseite)
* Arduino Nano
* Arduino Nano mit RP2040
* Arduino Due
* LilyPad Arduino (rev 2007)
* Arduino Robot
* Arduino Esplora
* Arduino Ýun
* Arduino Ethernet

## Ähnliche Geräte

* MSP430 Launchpad
* Tinkerforge
* Intel Galileo
* myAVR
* Parallax Propeller
* Nucleo
* BBC micro:bit
* Calliope mini
* NodeMCU