ESP-Mikrocontroller mit Visual Studio Code programmieren

ESP-Mikrocontroller mit Visual Studio Code programmieren

Arduino-IDE, nur auf den ersten Blick schön

Als geneigter und gelernter Entwickler, mit nun mehr als 10 jähriger Berufserfahrung, kenne ich mittlerweile die verschiedensten Tools zum Entwickeln. Ob es nun ein stumpfer Text-Editor ist oder ein vollwertiges und teures Visual-Studio. Alles hat seine Vor- und Nachteile…

Als ich vor einigen Wochen in den Genuss der Mikrocontroller gekommen bin, wurde ich recht schnell mit der Arduino-IDE konfrontiert.

Die IDE von Arduino zur Programmierung der Mikrocontroller ist recht puristisch und simpel gehalten

Die IDE (integrated development environment) ist sehr aufgeräumt und sollte Leute, die noch nie etwas mit Mikrocontroller zutun hatten, völlig ausreichen. Diese IDE, so ist zumindest mein Eindruck, ist nicht direkt an „professionelle“ Entwickler gerichtet, sondern an jene, die es zuhause als Hobby betreiben.

Die Ernüchterung kam schnell

Recht schnell musste ich jedoch feststellen, dass viele, meiner Meinung nach, essentielle Tools und Features schlichtweg einfach fehlen. Das einfachste und wichtigste kann man damit nicht: Projekte sinnvoll strukturieren. Zumindest habe ich nicht herausgefunden wie. Die IDE kann anscheinend immer nur eine Datei geöffnet haben. Weitere Dateien des Projektes öffnen sich als neues Fenster (nicht mal als Tab). Gut gemeint, aber schlecht gemacht.

„Treeview zur Projektstrukturierung? Wieso auch. Braucht kein Mensch“

So oder so ähnlich wird sicherlich das Entwickler-Meeting abgelaufen sein bei Arduino. Wobei ich mich da Frage, wer kommt auf die Idee so etwas nicht zu integrieren? Selbst simple Texteditoren wie z.B. Atom, Sublime oder Notepad++ können das mit entsprechenden Plugins, nicht schön, aber es geht.

Shortcuts und IntelliSense fehlen

Schmerzlich vermisst habe ich auch Shortcuts, wie z.B „Go to declaration“ oder so etwas profanes wie eine IntelliSense. Leider macht dies einem gelernten Entwickler und geneigtem Interessierten (Menschen sind ja bekanntlich Gewohnheitstiere) echt schwer, schnell guten Code abzuliefern. Auch fehlt mir sehr schmerzliche eine Filemap.

Quellcodeverwaltung?

Gibt es schlicht und ergreifend in Arduino nicht. Im beruflichen Umfeld und in anderen privaten Projekte nutze ich diverse Quellcodeverwaltungen, wie z.B. Team-Foundation-Server, Github, Gitlab, SVN. Ich rate dringend jedem, so etwas auch zu nutzen. Es hat nur Vorteile. So kann man schnell mal eine Änderung rückgängig machen ohne in den Papierkorb zu stöbern. Man kann Tickets managen und bearbeiten und noch einige Diverse andere Dinge bis hin zu CI/CD. Gerade in größeren Projekten oder mit mehreren Entwicklern, ist die Nutzung einer Quellcode- / Versionsverwaltung wirklich schon essentiell.

Gibt es etwas besseres als Arduino-IDE?

Diese Frage kann man aus meiner Sicht mit einem definitiven „Ja“ beantworten. Am Markt gibt es sicherlich einiges, was dafür herhalten kann. In einem anderen Projekt habe ich Atom als IDE genutzt, bin aber recht schnell gelangweilt gewesen und auch die Performance war auf meinem MacBook 15″ nicht die beste. Dies äußert sich auch in einigen Tweets:

Daher bin ich irgendwann auf Visual Studio Code gestoßen. An sich arbeitet Visual Studio Code intern mit der selben Engine wie Atom, nämlich Electron, was prinzipiell einfach nur ein Chromium-Browser ist, mit coolen Sachen wie NodeJS etc. Das Kernfeature und gleichzeitig auch die Stärke beider Editoren ist, dass diese schier unendlich anpassbar sind und man sich seinen Editor mit Extensions so zusammenbauen kann, wie man es braucht. Gibt es keine passende Extension, kann man sich diese mit simplen JavaScript und HTML selbst basteln.Kleines aber sehr nettes Gimmick: Atom und Visual Studio laufen crossplatform, also auf jeder Büchse. Egal ob Mac, Windows oder Linux. Theoretisch sogar auf einem Raspberry Pi.

Läuft…

Preiset und lobet Microsoft für Visual Studio Code

Visual Studio kommt in einem dunklen Design daher und sieht erst einmal „chic“ aus.

 

Wer das „vollständige“ Visual Studio aus dem beruflichen Umfeld kennt, wird sich recht schnell zu Recht finden, aber auch schnell merken, es kann erst einmal gar nichts, nur das nötigste, aber damit immerhin mehr als die Arduino-IDE. Es gibt Projekt-Strukturen, IntelliSense und auch schon diverse Quellcodeverwaltungen. Ab da an, muss man nun sein Visual Studio Code mit Extensions pimpen, wenn man damit Mikrocontroller programmieren möchte.

PlatformIO und Visual Studio Code

Es gibt aktuell genau zwei Erweiterungen für Visual Studio Code und Arduino:

Beide habe ich getestet und muss leider anerkennen, dass PlatformIO einfach das einfachste ist. PlatformIO unterstützt diverse Boards und wird praktisch auf Visual Studio angeflanscht. Es installiert diverse Libraries und anderes Zeug, wie z.B. den Compiler, damit man direkt anfangen kann. PlatformIO gibt es aber auch als Extension für Atom.

Konfiguration ist das halbe Leben

Wie alles in der IT, muss aber auch PlatformIO konfiguriert werden. Das nimmt aber das Tool einem ab. Hat man die Extension installiert, öffnet sich direkt ein eigenständiger Tab für PlatformIO in dem man ein neues Projekt mit Hilfe eines Wizards anlegen kann. Wie die Einrichtung klappt, siehst du in der nachfolgenden Galerie:

Kompilieren und an den Controller schicken

Ist das Projekt fertig und die „Main.cpp“ mit Leben gefüllt, könnt Ihr dann ganz bequem mit dem Pfeil in der unteren Toolbar euren Code an den Controller senden. Hier gibt es auch noch einige andere neue Icons, die nützliche Aufgaben erfüllen:

  • Home-Icon: Startseite von PlatformIO öffnen (im Standard öffnet sich diese immer mit Visual Studio Code)
  • Haken-Icon: Damit könnt ihr Eure Firmware builden lassen
  • Pfeil-Icon: Kompiliert Euren Code und schickt ihn an den Controller über den eigenständig erkannten COM-Port (dieser kann aber in der Datei „platformio.ini“ beliebig konfiguriert werden (mehr dazu bei PlatformIO)
  • Mülltonne: PlatformIO bereinigen
  • Checklist: Weitere Aufgaben von PlatformIO anzeigen und ausführen lassen
  • Stecker-Icon: Serial Monitor öffnen

Es lohnt sich also auf jeden Fall einmal die Dokumentation von PlatformIO zu durchstöbern und sich das alles einmal in Ruhe anzusehen. Bis jetzt, möchte ich PlatformIO und Visual Studio Code für Mikrocontroller nicht mehr missen. Es beschleunigt ungemein meinen Workflow und unterstützt mich auch z.B. bei der Einbindung und Wartung von externen Libraries, da es einen integrierten LibManager besitzt. Damit kann man wirklich elegant seine externen Libraries hinzufügen und kann diese auch automatisiert updaten lassen, sofern es neue Updates gibt.

Einfach geht es echt kaum noch.

Was sind Eure Erfahrungen mit der Programmierung von Mikrocontrollern und welche IDE könnt Ihr empfehlen? Lasst es mich einfach in den Kommentaren wissen! 🙂