Der Weg nach Rom; oder: Alternativen für die Arduino IDE

Der Pragmatische Architekt  –  1 Kommentare

Bisher war ausschließlich von der Arduino IDE die Rede, wenn es um das Programmieren eines Arduino-Boards ging. Durch ihren "One-size-fits-all"-Ansatz hat sie allerdings den Nachteil, dass sie sich hauptsächlich an den Bedürfnissen von Anfängern orientiert. Neben der IDE der Arduino-Schöpfer gibt es allerdings auch ein paar Alternativen. Diese Folge beleuchtet Umgebungen, die auf macOS, Windows oder Linux funktionieren.

Bei der Online-Suche nach Programmierumgebungen für Microcontroller wie Arduino kommen einige Treffer zustande. Es gibt darunter betriebssystemspezifische Programmierumgebungen wie:

Diese Liste dient nur als Ausschnitt und erhebt keinen Anspruch auf Vollständigkeit.

Natürlich existieren auch Kommandozeilenwerkzeuge wie avr-gcc, ..., avrdude (siehe Artikel auf microcontroller.net), die zwar die oben genannten Betriebssysteme unterstützen, aber keine grafische Programmierumgebung mitbringen. Über diese Kommandozeilenwerkzeuge berichtet der Blog in einer zukünftigen Folge.

Gegenstand dieses Blogs sind, wie eingangs erwähnt, IDEs für fortgeschrittene Entwickler. Voraussetzung: die vorgestellten Umgebungen sollen die Betriebssysteme Linux, macOS und Windows unterstützen. Zur Auswahl stehen unter anderem

  • PlatformIO
  • Sloeber
  • UECIDE
  • codebender
  • Arduino Create

Sicherlich ist auch diese Aufzählung nicht vollzählig. Sie beinhaltet aber zumindest sehr vielversprechende Kandidaten.

PlatformIO basiert auf dem adaptierbarem Text-Editor Atom, den zum Beispiel auch die Programmierumgebung ParticleDev für das Photon-Board nutzt. Die IDE bezeichnet sich selbst als Open-Source-Ökosystem für die IoT-Entwicklung und enthält einen Cross-Plattform-Code-Builder, einen Bibliotheksmanager sowie Continuous- und IDE-Integration. Unterstützung finden dort unter anderem Arduino- und ARM-Boards.

Für professionelle Entwickler ergibt sich dadurch ein großer Vorteil gegenüber der Arduino IDE, dass sich mehrere Projekte gleichzeitig bearbeiten lassen. Schön ist auch die Möglichkeit, die Bedienoberfläche eigenen Bedürfnissen anpassen zu können.

Insgesamt umfasst PlatformIO den Support für mehr als 250 Boards, 15 Entwicklungsplattformen und 10 Frameworks. Es unterstützt C++-Codevervollständigung, überprüft Syntax mit dem Werkzeug Linter. Der integrierte Bibliothekenmanager kann auf Hunderte von Bibliotheken zugreifen. Neben einem seriellen Port-Monitor verfügt die IDE über ein eingebautes Terminal.

Hier eine kleine Bilderreise zur Nutzung der Programmierumgebung. Nach Installation der Anwendung auf der Zielplattform (Windows, macOS, Linux, ARM) erfolgt beim ersten Start die Fertigstellung der Installation:

Die IDE PlatformIO - hier bei der Installation - fußt auf dem Editor Atom

Anschließend legen Entwickler ein neues Projekt an, dem sie Quellcode-Dateien hinzufügen, oder sie importieren einfach ein existierendes Arduino-Projekt:

Anlegen eines neuen Projektes in PlatformIO

Der Code lässt sich nun bequem im Editor erstellen und bearbeiten:

Editor mit allen Schikanen wie Syntax-Highlighting und Intellisense

Beim Programmlauf können Entwickler die serielle Kommunikation über seriellen Port-Monitor beobachten:

IDE Editor und serieller Monitor

Wer möchte, tobt sich bei den vielen Einstellungsoptionen der Umgebung nach Belieben aus:

PlatformIO ist in einer freien Version kostenlos verfügbar, die Gegenstand des vorliegenden Artikels ist. Des Weiteren gibt es auch noch umfangreichere Abonnements, von US-$ 9,99 pro Monat (Basic), über US-$ 99,99 per Monat (Professional) bis hin zu anpassbaren Enterprise-Abos.

In der Welt der Programmierung ist Eclipse eine feste Größe, weshalb sich sofort die Frage stellen müsste, warum es keine Plug-ins zur Arduino-Programmierung unter Eclipse gibt. Tatsächlich findet sich ein solches Plug-in. Es trägt den Namen Sloeber – wie ein starkes belgisches Ale – und hat seine Heimat auf der Webseite eclipse.baeyens.it.

Um diese Programmierumgebung zu installieren, gibt es zwei Möglichkeiten:

  • Option A: Installieren des Eclipse-Installationsprogramms über die Eclipse-Download-Seite. Beim Ablauf des Installationsprogrammes sollte der Anwender die Eclipse-C++-Umgebung CDT auswählen. Anschließend läst sich über Help | Install New Software in Eclipse das Sloeber-Plug-in installieren. Als Site ist in Eclipse folgende URL einzutragen. Stabile Version: http://www.baeyens.it/eclipse/V3. Nightly Build Version: http://eclipse.baeyens.it/nightly.
Sloeber bietet Download vom Plugin oder einem kompletten Bundle für Linux, Windows, macOS
  • Option B: Wer sich nicht mit Eclipse-Installationen "herumschlagen" möchte, kann auch ein "All-Inclusive"-Paket mit Eclipse und integriertem Sloeber-Plug-in herunterladen:
Installiertes Sloeber-Bundle (Im Beispiel: macOS)

Nach erfolgreicher Installation lässt sich in Eclipse ein Arduino-Projekt anlegen:

Arduino-Perspektive in Eclipse

Intern benutzt das Sloeber-Plug-in das Kommandozeilentool avrdude, um Sketches auf Arduino-Boards hochzuladen:

avrdude wirkt unter der Motorhaube des Plugins

Konnte die Umgebung das Programm erfolgreich auf das Arduino-Board laden, lässt sich dessen serielle Kommunikation über den seriellen Monitor in Echtzeit visualisieren:

Laufendes Sketch erzeugt Ausgaben auf dem seriellen Monitor

Interessant ist Sloeber insbesondere deshalb, weil es sich als Eclipse-Plug-in der Mächtigkeit der Eclipse-Umgebung bedienen kann.

  • Der Syntaxeditor erlaubt ausgefeiltes Syntax Coloring sowie Code Folding.
  • Dem Compiler lassen sich per Menü Compile Options zusätzliche Schalter mitgeben, statt eine globale Datei platform.txt ändern zu müssen wie in der Arduino IDE.
  • Eclipse ermöglicht das gleichzeitige Bearbeiten mehrerer Arduino-Projekte und Projektdateien.
  • Sloeber offeriert das Betrachten und Editieren von Arduino-Systemdateien und Bibliothekendateien, die eine Arduino IDE gezielt verbirgt, um Gelegenheitsprogrammierer nicht zu verwirren.
  • Sloeber nutzt die ausgefeilten Suchen/Ersetzen-Funktionen von Eclipse. Beispielsweise blendet es beim Schweben des Mauszeigers über Methodensignaturen deren Implementierung ein.

Wer als Programmierer ohnehin Eclipse als Brot- und Butter-Werkzeug betrachtet, dürfte mit Sloeber einen guten und vertrauten Weg einschlagen.

Die IDE UECIDE ist ebenfalls für Linux, macOS und Windows verfügbar. Herunterladen lässt sich die in der Entwicklung befindliche Programmierumgebung unter der zugehörigen Website.

Umgebung UECIDE beim Kompilieren eines Arduino-Sketches

Das Syntaxeditor von UECIDE stellt neben Zeilennummern und Syntaxfärbung auch ausgefeiltes Suchen & Ersetzen sowie Code-Folding bereit. Die IDE zeigt aber nicht nur das Editorfenster, sondern gibt einen Einblick in alle Projektdateien. Zudem lassen sich mehrere Dateien in unterschiedlichen Tabs bearbeiten, was gegenüber der Arduino IDE wesentlich mehr Übersicht erlaubt.

Mittels des Menüs Sketch können Entwickler Sketche kompilieren und auf das Board laden.

Das Beispielssketch ist auf einen Arduino Mega geladen. Der serielle Monitor zeigt die Kommunikation.

Der wichtigste architektonische Bestandteil des Java-basierten UECIDE ist der Plugin-Manager. Unter Plugins sind herunterladbare Artefakte zu verstehen, die ein System um Funktionalität erweitern.

  • IDE-Plug-ins erlauben es, die IDE um Merkmale anzureichern. Ein Beispiel dafür ist das serielle Terminal von UECIDE, das im Gegensatz zu seinem Pendant in der Arduino-IDE ein ANSI-VT-100-Terminal bereitstellt.
  • Die Boards sind mit ihrer Definition und Programmieraspekten ebenfalls als Plug-ins integriert. Zur besseren Übersicht ordnet die IDE die Boards nach Herstellern, etwa Arduino, chipKIT. Weiterer Vorteil dieses Ansatzes: Entwickler entscheiden, welche Boards sie nutzen und installieren.
  • Die dritte Sorte von Plug-ins sind die sogenannten Kerne (Cores). Genau genommen repräsentieren sie Bibliotheken zur Programmierung von Boards inklusive der Umsetzung von Instruktionen wie pinMode(), digitalWrite(). Es kann übrigens auch mehrere Cores für die gleichen Boards geben.
  • Compiler bzw. Werkzeuge für die Programmierung der Boards liegen als Plug-ins vor.

Übrigens: Wie es sich für ein konsequentes und durchgängiges Plug-in-Konzept gehört, ist auch der Plug-in-Manager selbst als Plug-in realisiert.

Zur Optimierung der Übersetzungsgeschwindigkeit behandelt UECIDE die Bestandteile eines Sketches als separate Module. Dazu gehören zum Beispiel der Sketch oder die Bibliotheken. Diese Teile übersetzt das System getrennt, und es kann die erzeugten Binärdateien cachen.

Eine etwas andere Möglichkeit der Arduino-Programmierung bietet codebender. Dort dreht sich alles um den Browser. Im folgenden Fenster ist codebender im Betrieb zu sehen. Der Entwickler kann Sketches anlegen und speichern (blaues Bedienfeld links oben), den Code verifizieren (grünes Bedienfeld mit Aufschrift "Verify"), oder den Sktech auf den Arduino laden (grünes Bedienfeld mit Aufschrift "Run on Arduino").

codebender im Einsatz (Browser = Chrome)

Codebender erlaubt sogar das Flashen mit einem Programmer.

Erweitertes Menü mit der Lizenz zum Flashen

Des Weiteren können Entwickler eine Verbindung mit dem seriellen Monitor herstellen, um dort die Ausgabe vom Arduino-Board zu beobachten und zu analysieren:

Der serielle Monitor erlaubt die Beobachtung der seriellen Kommunikation des Boards

Um codebender zu nutzen, müssen sich Entwickler registrieren, über die Getting-Started-Webseiten ein Plug-in herunterladen und einen der unterstützten Browser wie Firefox oder Chrome/Chromium einsetzen.

Das Problem der codebender.cc-Betreiber besteht darin, dass sie auf den Kosten sitzen bleiben und daher ihren Service in Kürze einstellen müssen. Daher dient dieses Kapitel eher als Mahnmal, dass auch bei Makern die Bäume nicht in den Himmel wachsen.

Es gibt ein kleines Trostpflaster für codebender-Enthusiasten. Mit Arduino Create steht Entwicklern ebenfalls eine Browser-basierte Umgebung zur Verfügung, die eine vorhergehende Registrierung und die Installation eines Plug-ins benötigt.

Arduino Create mit Editor und seriellem Monitor zu dessen Linken

Die Arduino-Create-Umgebung wurde bereits in diesem Beitrag angetestet, weshalb ich an dieser Stelle auf den entsprechenden Link verweise.

Es gibt also durchaus brauchbare Alternativen zur Arduino IDE. Speziell Sloeber, PlatformIO und UECIDE eignen sich dank ihrer Features auch für professionelle Entwickler.

Von den vorgestellten betriebssystemunabhängigen IDEs ist sicher das Browser-basierte codebender.cc die exotischste Umgebung. Leider gehört diese Option mangels finanzieller Unterstützung für die Betreiber bald der Vergangenheit an. Möglicherweise kann Arduino Create die frei werdende Lücke besetzen.

Für Eclipse-Nutzer dürfte Sloeber eine begehrenswerte Option darstellen, da sie dadurch in der gewohnten Umgebung arbeiten können. Interessant ist das in Reifung befindliche UECIDE, das einige Features integriert, die über die Arduino IDE hinausgehen und für Arduino-Entwickler spannend sein dürften.

Am umfangreichsten stellt sich PlatformIO dar, das von den beschriebenen IDEs den ausgereiftesten und professionellsten Eindruck macht.

Fazit: Es muss nicht immer die Arduino IDE sein.