Arduino Setup für Profis

6. Mai 2021
Posted in Erfahrung
6. Mai 2021 Adrian Steiner

Arduino Setup für Profis

Arduino Boards erfreuen sich sehr grosser Beliebtheit für diverse DIY-Projekte im Heim und Bastelbereich. Ich brauche auch gerne mal ein Arduino-Board für einen schnellen Prototypen oder ein einfaches Projekt. Die grosse Auswahl an preiswerten Boards und Sensoren macht das Arduino-Framework für uns interessant.
Der Einstieg ist denkbar einfach: Ein Board kaufen, Arduino-Studio herunterladen und los legen.
Als Profi habe ich aber einige Ansprüche an meine Entwicklungsumgebung die über das sehr simple gehaltene Arduino-Studio hinaus gehen.

Ich will neue Projekte einfach und schnell erstellen können, ich will eine IDE mit anständiger Code-Completion und das ganze muss reproduzierbar sein für andere Entwickler im Team.
Im folgenden Beitrag zeige ich euch welche Tools ich einsetze um meinen Ansprüchen gerecht zu werden.

Der Paket Manager

Um die Installation der benötigten Tools reproduzierbar zu machen empfiehlt sich der Einsatz eines Paket-Managers.

Linux Benutzer kennen das Prinzip des Paket-Managers in Form von apt oder yum oder ähnlichem ja schon lange. Als Windows Benutzer musste man lange auf eine gute Alternative warten.
Seit ein paar Jahren gib es den Windows Paket-Manager chocolatey. Mit ihm können Software Pakete einfach in der Kommandozeile installiert werden.
Chocolatey kann entweder von https://www.chocolatey.org/ heruntergeladen werden oder in einer PowerShell mit Administratorrechten mit folgendem Script:

$executionPolicy = Get-ExecutionPolicy
if($executionPolicy -eq 'Restricted') {
    Set-ExecutionPolicy AllSigned
}

$chocoVersion = powershell choco -v
if(-not($chocoVersion)) {
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
}

Unter https://chocolatey.org/packages können Pakete gesucht werden. Mittlerweile findet man für praktisch alle bekannten Software-Pakete ein aktuelles Chocolatey Paket.
Ist Chocolatey einmal installiert können Pakete einfach in der Konsole(mit Adminrechten) verwaltet werden.

Die neuste verfügbare Version installieren:

choco install <Paket-Name>

Eine spezifische Version installieren:

choco install <Paket-Name> --version=X.Y.Z

Auf die neuste Version Upgrade:

choco upgrade <Paket-Name>

Tipp: Chocolatey fragt jedes Mal ob das Paket wirklich installiert werden soll. Mit dem Argument ‹-y› kann das automatisch mit ‹Ja› beantwortet werden.

CLI und Git

Was ich am meisten vermisse unter Windows ist eine anständige Konsole. Windows PowerShell ist zwar schon sehr gut, damit bin ich aber nie wirklich warm geworden.
Daher ist eines der ersten Tools das ich unter Windows jeweils installiere: Cmder | https://cmder.net/

Cmder kommt mit Git inklusive MinGW und schon hat man eine Linux ähnliche Konsole zur Hand. Wer Git nicht von der Konsole aus braucht und dafür ein graphisches Tool braucht kann auch den Cmder Mini installieren, dieser kommt ohne Git.

Installation per Chocolatey:

choco install cmder

Die Mini Version:

choco install cmdermini

PlatformIO, Python & VirtualEnv

Als erfahrener C/C++ Entwickler bin ich es mir ja gewohnt, dass so ein Setup für ein Embedded-Projekt eine Wissenschaft für sich sein kann. Da ich mittlerweile
auch einige moderne Web-Applikationen mit Vue.js und Angular entwickelt habe, weiss ich wie komfortabel das Setup sein könnte. Dank NodeJS und dem Paket-Manager npm sind solche Projekte innert ein paar Minuten aufgesetzt.
Wäre es nicht schön wenn wir das auch für Embedded und Arduino-Projekte haben könnten?

PlatformIO bietet genau das. Eine Python basierte Toolchain die uns die Installation von Bibliotheken abnimmt, das Cross-Kompilieren und den Upload auf die Geräte selbst. Relativ neu unterstützt PlatformIO auch Hardware-Debugging. Alles was das Entwicklerherz begehrt.

Um PlatformIO zu nutzen brauchen wir Python. Und damit es keine Konflikte zwischen verschiedenen Projekten gibt benutze ich VirtualEnv um die benötigten Python Bibliotheken jeweils spezifisch für ein Projekt zu installieren.

Erst installieren wir Pyhton 3:

choco install python

Danach können wir mit dem Python-Paket-Manager pip VirtualEnv installieren:

pip install virtualenv

Das Einrichten der virtuellen Python-Umgebung sehen wir uns dann unter «Projekt Setup» an.

IDE

Wer gerne in einem Text-Editor programmiert ist jetzt fertig mit dem Einrichten. Ich kann zwar zur Not mit vim arbeiten, aber sehr effizient ist das nicht.
Für Arduino und Frontend-Projekte brauche ich mittlerweile praktisch nur noch Visual Studio Code von Microsoft. Eine kostenlose, Open-Source IDE mit einem riesigen Angebot an Plugins.

Diese IDE installieren wir gleich mit Chocolatey:

choco install vscode

Das PlatformIO-Plugin für Visual Studio Code ist alles was ich noch brauche um mit der Entwicklung zu beginnen. Das Plugin bietet Dinge wie Syntax Highlighting, Code Completion für C/C++ und noch vieles mehr: https://docs.platformio.org/en/latest/integration/ide/vscode.html

Installieren kann man das Plugin entweder im Visual Studio Code Extension Manager oder per Konsole:

code --install-extension platformio.platformio-ide

Projekt Setup

Nun ist alles installiert was ich brauche im ein Arduino-Projekt zu starten.

In einem neuen Verzeichnis erstellen wir als erstes die neue Python Umgebung:

mkdir <Neues-Projekt>
cd <Neues-Projekt>
python -m venv venv

Das erstellt nun ein Verzeichnis ‹venv› im Projekt-Verzeichnis das sämtliche Python Bibliotheken enthalten wird die wir brauchen.

Die Python Umgebung muss jeweils aktiviert werden bevor wir beginnen können mit Python zu arbeiten.

Python VirtualEnv aktivieren:

<Projekt-Verzeichniss>/venv/Scripts/activate.bat

Note: Es gibt unterschiedliche Scripts um die Umgebung zu aktivieren für PowerShell oder DOS-Commandline.

Nun können wir endlich PlatformIO installiern:

pip install platformio

Zum Testen ob die PlatformIO Installation funktioniert hat:

pio

Jetzt erstellen wir das PlatformIO Projekt. Wir können entweder ein leeres Projekt erstellen mit:

pio project init

Wenn wir aber schon wissen welche Hardware verwendet werden soll, können wir das auch direkt angeben.
Angenommen wir hätten ein Arduino UNO Board würden wir diesen Befehl absetzen:

pio project init --board uno

PlatformIO erstellt nun alle nötigen Dateien und zieht auch schon benötigte Bibliotheken an.
Die Datei ‹.gitignore› wird zwar bereits erstellt aber das GIT Repository wird nicht automatisch angelegt.

Note: .gitignore unbedingt mit dem VirtualEnv Verzeichniss(hier ‹venv›) ergänzen. Sonst ist die ganze Python Umgebung auch Teil des Git-Repositories und das wollen wir nicht.

Der Komplettheit halber hier wie das Git-Repo erstellt und auf GitHub gepushed wird:

git init -b main
git add .
git commit -m "Initialize PlatformIO project"
git remote add origin https://github.com/<user>/<repo>
git push -u origin main

Jetzt noch im Projekt-Verzeichnis die IDE öffnen und los gehts:

code .

Fritzing

Wir haben jetzt alles was wir brauchen um die Software für unser Arduino-Projekt zu entwickeln. Meistens schliesst man ja noch irgendwelche Sensoren und Aktoren oder andere Erweiterungen an so ein Arduino-Board an. Um dies Planen zu können und den Überblick über die Verkablung zu behalten brauche ich gerne das Open-Source Design-Tool Fritzing.

Es kann auch ganz einfach per chocolatey installiert werden:

choco install fritzing

Zum Schluss

Mit diesem Vorgehen habe ich in einigen Minuten mein Setup für ein neues Android Projekt fertig und kann mit dem Programmieren beginnen.

Damit ich nicht jedes Mal diesen Artikel zu Hilfe nehmen muss oder mir die Kommandos zusammen «Googeln» muss habe ich das Ganze in ein PowerShell-Script gepackt und auf GitHub parkiert: https://github.com/sensioty/arduino_project_setup. Das Script ist öffentlich zugänglich und darf gerne verwendet, kopiert oder erweitert werden.

Das Script ist alles andere als perfekt, ermöglicht mir aber jedes mal einen schnellen Einstieg in ein neues Projekt.

Nun bleibt nur noch zu sagen: Viel Spass beim Coden!

Contact

Kontakt

Zögern Sie nicht, uns zu kontaktieren. Wir freuen uns über Ihre Anfrage.

    Contact
    Contact

    Sprechen Sie mit uns über Ihre Ideen!

    Unsere Human Centered Design Experten und IoT-Architekten unterstützen Sie gerne bei der Konkretisierung.

    Sprechen Sie mit uns über Ihre Projekte!

    Unsere IoT-Architekten, Hardware- und Software-Entwickler unterstützen Sie gerne bei der Umsetzung.

    Sensioty AG

    Solothurnstrasse 3

    2540 Grenchen

    Schweiz

    contact@sensioty.ch

    +41 32 520 80 08

    Contact