Endlich das richtige Werkzeug - Arduino Programmieren mit PlatformIO

Zum Abschluss des Jahres habe ich noch eine großartige Entdeckung gemacht, die ich unbedingt mit dir teilen möchte, um dir das Leben zu erleichtern, wenn du mit Arduinos bzw. hier auf dem Blog eher mit ESPs arbeitest. Die Arduino IDE hat ausgesorgt, die geniale Alternative heißt: PlatformIO

Was macht eine gute IDE aus?

Für mich persönlich ist eine IDE ein Werkzeug, dass mir meine Arbeit so effizient wie möglich gestalten soll. Es gibt heutzutage hunderttausende Frameworks und einen bunten Strauß an Programmiersprachen. Als Generalist (Beschreibung siehe meinen Post zu Impostor-Syndrome) ergibt es für mich überhaupt keinen Sinn alle Features von allen Sprachen und Frameworks auswendig zu kennen, weil ich für jede Aufgabe das passende – und daher häufig ein unterschiedliches – Werkzeug benutzen möchte. Hier kommt die IDE ins Spiel. Eine gute IDE bietet mir die folgenden Features:

  1. Auto-Vervollständigung: Wenn ich auf einen Blick sehe, welche Eigenschaften oder Methodenaufrufe ein Framework beziehungsweise ein daraus erzeugtes Objekt hat, erlaubt mir ein konzeptionelles Verständnis von Programmierung das richtige herauszufinden. Müsste ich mir alle diese Eigenschaften merken, wäre ich vielleicht in der Lage 2 oder 3 größere Frameworks zu bedienen, aber sicher nicht alle.
  2. Sprungfunktion: Wenn ich irgendwo in meinem Code eine Variable oder Funktion benutze möchte ich mit einer Sprunganweisung zur Deklaration bzw. anderen Nutzungen/Aufrufen springen können, um mir schnell einen Überblick zu verschaffen, wie der Code arbeitet.
  3. Ausführbarkeit: Ich möchte den Code sofort aus der IDE heraus kompilieren (wenn nötig) und ausführen, bzw. im Falle von Arduino hochladen, können.
  4. Fehleranzeige: Bevor ich auf kompilieren/ausführen klicke und darauf warte, ob ein Fehler im Code ist (oft ein vergessenes Semikolon), möchte ich, dass die IDE mich darauf hinweist, damit ich die Zeit des Kompilierens sparen kann

Darüberhinaus gibt es viele schöne und nützliche Zusatzfeatures, das jedoch ist das absolute Minimum für mich. Die Arduino IDE deckt davon nur Punkt 3 ab.

Alternative: PlatformIO

Wer ohnehin eine Jetbrains Lizenz für CLion hat, kann PlatformIO auch dort anbinden und seine gewohnte Entwicklungsumgebung nutzen. Ich mache auch kein Geheimnis daraus, dass ich für meine Arbeit nur noch Jetbrains-Produkte nutze, da sie für mich jeden Cent wert sind. Es ist allerdings nicht für jede Budget-Klasse geeignet, deshalb gehe ich hier auf die Visual Studio Code Anbindung ein.

Visual Studio Code ist erstmal ein umfangreicher Texteditor, durch Plugins ist es aber möglich eine vollwertige IDE mit den oben genannten Punkten zu bekommen. Nach der Installation von Visual Studio Code kannst du PlatformIO direkt aus dem Editor installieren, indem du auf Extensions gehst und "PlatformIO" eintippst. Der erste Treffer ist das Plugin, das du per Klick auf "Install" installieren kannst. Das dauert etwa 2-5 Minuten. Zeit für Kaffee ;)

Wenn alles fertig installiert ist, findest du ganz unten in der Statusleiste links ein Haus-Symbol. Sobald du das anklickst, öffnet sich die PlatformIO Startseite. Auf der Startseite kannst du einfach ein neues Projekt anlegen. Nachdem du einen Namen (z.B. Blinke-LED) angegeben hast und ausgewählt hast, welches Arduino Board du benutzt (z.B. Arduino Uno) kannst du bestätigen und wirst nach kurzer Zeit das Projekt im Editor sehen.

Auf der linken Seite ist der gesamte Projekt-Pfad zu sehen. Unter src/main.cpp findest du die bekannten Methoden setup() und loop() aus deinen Arduino-Projekten. Ich habe jetzt für diesen Post keinen Code vorbereitet, aber schau doch mal zum Beispiel in ePaper Display mit ESP32 und MQTT anbinden rein. Die Autovervollständigung hilft dir sofort aus, wenn du bspw. del eintippst, wird delay und delayMicroseconds vorgeschlagen. Sobald du dich entschieden hast und die Klammern der Funktion öffnest, werden die Parameter-Namen (und manchmal -Erklärungen) angezeigt. Es ist sofort ein ganz anderes Programmiergefühl :D

Wenn der Code dann fertig geschrieben ist, fehlt nur noch ein Schritt. Trage in der Datei platformio.ini den Port ein, an dem dein Arduino angeschlossen ist (Unter Windows meistens COMX, unter OSX /dev/cu.usbserial-XXXX und unter Linux /dev/ttyUSBX), indem du eine Zeile hinzufügst z.B. upload_port=COM6

Jetzt kannst du mit Klick auf den Pfeil unten in der Statusleiste links den Code auf deinen Arduino laden. Vorbei sind die Tage des 15 Mal Upload Klicken, bis auch wirklich alle Semikolons gesetzt und alle Klammern richtig geschlossen sind. Denn das wird jetzt alles vorher "angemeckert" und kann korrigiert werden, bevor es in den Kompilierungsschritt geht.

Zusammenfassung

PlatformIO ist ein sehr komfortabler Ersatz für die Arduino IDE und lässt nach erstem Testen keine Wünsche offen. Ganz im Gegenteil, die Programmierung wird in meinen Augen deutlich frustfreier, weil nicht jedes Mal kompiliert werden muss, bevor ich auf Fehler aufmerksam gemacht werde.
Installations-Direktlink (wenn VS Code installiert ist): vscode:extension/platformio.platformio-ide