Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Arduino und Rust: Projekte mit dem UNO in PlatformIO starten

Posted on 1. November 202431. Oktober 2024 by Stefan Draeger

Die Arduino-Plattform ist seit Jahren eine beliebte Wahl für Elektronikprojekte. Doch während C/C++ als Standard für die Programmierung von Mikrocontrollern gilt, bietet die Programmiersprache Rust eine moderne und sichere Alternative. Rust überzeugt durch seine Zuverlässigkeit, vor allem im Umgang mit Speicher und Nebenläufigkeit, was sie zu einer großartigen Option für Embedded-Entwicklung macht.

In diesem Beitrag zeige ich, wie du Visual Studio Code & PlatformIO einrichtest, um deinen Arduino UNO R3 in Rust zu programmieren. Wir werden Schritt für Schritt die Installation und Konfiguration durchgehen und ein einfaches Blink-Programm ausführen, um die grundlegenden Funktionen des Arduinos mit Rust zu testen.

Arduino und Rust: Projekte mit dem UNO in PlatformIO starten
Dieses Video auf YouTube ansehen.

Inhaltsverzeichnis

  • Warum Rust eine starke Alternative für die Arduino-Programmierung ist
  • Arduino UNO R3 – Ein Überblick
    • Vergleich der technischen Daten der Arduinos
  • Benötigte Ressourcen für diesen Beitrag
  • Hinweise zum Aufbau des Beitrages
  • Installieren von Git
  • Einrichten von Visual Studio Code & PlatformIO
  • Installieren der Microsoft Build Tools für C++
  • Installieren von Rust
  • Installieren von Scoop
  • Installieren des AVR-GCC Compilers über Scoop
  • Einrichten des Arduino-Projektes für Rust
    • Installieren von cargo-generate
    • Erstellen eines lokalen Git Verzeichnisses
    • Anpassen der TOML Dateien
    • Aktualisieren der RUST-Toolchain
    • Installieren und Konfigurieren von ravedude
    • Bauen und ausführen des Rust Projektes auf dem Arduino
  • Quellenangabe

Warum Rust eine starke Alternative für die Arduino-Programmierung ist

  1. Speichersicherheit ohne Garbage Collection: Rust verhindert Speicherfehler wie Pufferüberläufe und unzulässige Speicherzugriffe zur Compile-Zeit, was im Embedded-Bereich entscheidend ist, wo Ressourcen begrenzt und Fehler schwer zu diagnostizieren sind.
  2. Null-Sicherheit und Fehlervermeidung: Im Gegensatz zu C/C++ eliminiert Rust das Risiko von Null-Zeigern und damit verbundene Abstürze. Stattdessen nutzt es das Option-Typ-System, um den Umgang mit fehlenden Werten sicherzumachen.
  3. Effizientes Multithreading: Rust bietet durch den Borrow-Checker und das Ownership-Modell eine sichere Handhabung von Threads und Nebenläufigkeit, ohne dabei klassische Race-Conditions zuzulassen.
  4. Hohe Performance: Rust liefert eine Performance auf dem Niveau von C/C++, da es direkt in Maschinencode kompiliert wird, ohne dabei auf Sicherheitsmechanismen zu verzichten. Das ist besonders wichtig bei ressourcenbeschränkten Mikrocontrollern wie dem Arduino.
  5. Moderne und lesbare Syntax: Rusts Syntax ist klar strukturiert und vermeidet viele der Fallstricke traditioneller Embedded-Sprachen, was den Einstieg für Entwickler erleichtert und gleichzeitig die Codewartung vereinfacht.
  6. Wachsende Embedded-Community: Rust hat in den letzten Jahren stark an Popularität im Embedded-Bereich gewonnen. Es gibt zahlreiche Bibliotheken und eine aktive Community, die spezifisch für Embedded-Projekte entwickelt.
  7. Cargo und starkes Tooling: Das integrierte Build-System Cargo erleichtert das Management von Abhängigkeiten, Tests und Cross-Compiling. Das macht die Entwicklung für Embedded-Systeme wie Arduino deutlich effizienter.

Arduino UNO R3 – Ein Überblick

Den Arduino UNO R3 habe ich auf diesem Blog bereits in mehreren Beiträgen vorgestellt, ebenso wie verschiedene Schaltungen und Anwendungsbeispiele. Obwohl dieser Mikrocontroller schon etwas älter ist, überzeugt er weiterhin durch seine einfache Handhabung und die Vielzahl an digitalen Ein- und Ausgängen sowie analogen Eingängen. Moderne Schnittstellen wie WiFi oder Bluetooth fehlen ihm zwar von Haus aus, doch lassen sich diese Funktionen problemlos mit entsprechenden Erweiterungsmodulen nachrüsten, was ihn nach wie vor zu einer flexiblen und praktischen Wahl für zahlreiche Projekte macht.

Arduino UNO R3
Arduino UNO R3
Arduino UNO R3 Clone von der Firma Sunfounder
Arduino UNO R3 Clone von der Firma Sunfounder

Die Mikrocontroller kannst du entweder direkt als Original von Arduino.cc im Shop erwerben oder als günstigere Clone-Versionen, zum Beispiel auf eBay.de oder AliExpress.com. In meinen Tests konnte ich keine nennenswerten Unterschiede in der Leistung feststellen, die die günstigen China-Kopien schlechter gemacht hätten. Lediglich bei den Nachbauten musste ich den CH340G Serial-USB-Treiber manuell installieren, was aber schnell erledigt war.

Vergleich der technischen Daten der Arduinos

Es gibt neben dem Arduino UNO R3 auch eine handvoll weiterer Mikrocontroller, nachfolgend beschränke ich mich auf die gängigen aus dem Hause Arduino welche du im Shop unter arduino.cc bestellen kannst.

Arduino UNO R3Arduino Nano V3Arduino Mega 2560 R3
MikrochipATmega328PATmega328ATmega2560
Taktgeschwindigkeit16 MHz16 MHz
16 MHz
Speicher32 KB, davon 0.5 KB für den Bootloader reserviert256 KB, davon 8 KB für den Bootloader reserviert
SRAM2 KB2 KB8 KB
EEPROM1 KB1 KB4 KB
digitale I/O14 2254
PWM6615
analoge I/O
6
816
Abmaße (LxB)68,6 x 53,4 mm18 x 45 mm101,52 x 53,3 mm
Preis (zzgl. Versand)29,30 €26,80 €51,20 €
Auszug aus den technischen Daten der Arduino Mikrocontroller von https://store.arduino.cc/products/

Benötigte Ressourcen für diesen Beitrag

Wenn du das nachfolgende Beispiel ausführen möchtest, dann benötigst du:

  • einen Mikrocontroller der Arduino-Familie
    • ein passendes USB-Datenkabel
  • Git
  • Visual Studio Code, sowie
    • die Erweiterung PlatformIO für VS-Code
  • den aktuellen Rust Compiler

Hinweise zum Aufbau des Beitrages

Der Artikel basiert auf einer englischen Anleitung, die ich umfassend überarbeiten musste, da sie nicht mehr aktuell war und einige Schritte unvollständig waren. Die einzelnen Kapitel des Beitrags sind aufeinander abgestimmt und sollten der Reihenfolge nach durchgearbeitet werden, um ein reibungsloses Verständnis sicherzustellen.

Installieren von Git

Git ist ein Open-Source-System zur Verwaltung von Versionen, das für die schnelle und leistungsstarke Handhabung von Projekten jeglicher Größe konzipiert wurde. Wir benötigen dieses, um das Repository Rahix/avr-hal-template zu clonen, aber dazu später mehr.

Wenn du in Git noch nicht so lange unterwegs bist und alle Kommandozeilen befehle kennst, dann kann ich dir TortoiseGit empfehlen. Dieses Tool bietet dir eine GUI für den täglichen Einsatz von Git.

Einrichten von Visual Studio Code & PlatformIO

Wie du Visual Studio Code installierst, habe ich dir bereits im Beitrag Rust: Die Grundlagen – 1. Installation und Konfiguration ausführlich erläutert. Beim Installer gibt es jedoch nicht viel zu beachten, daher kannst du den Wizard mit den Standardeinstellungen durchlaufen.

Wenn du Visual Studio Code installiert hast, dann kannst du die Erweiterung PlatformIO mit nur einem Klick über die „Extensions“ installieren.

Zusätzlich benötigen wir noch die Erweiterung für die Rust Programmierung.

Installieren der Microsoft Build Tools für C++

Für das Compilieren des Codes benötigen wir den Linker welchen wir über das Microsoft Build Tools für C++ installieren können.

Installieren von Rust

Den Rust Compiler kannst du unter https://www.rust-lang.org/tools/install kostenfrei als 32Bit & 64Bit Version herunterladen. In meinem Fall nehme ich die 64Bit Version.

Installieren von Scoop

Scoop ist ein Paketmanager für Windows-Systeme, welchem man mit dem nachfolgenden Befehl über PowerShell nachinstallieren kann:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex 

Installieren des AVR-GCC Compilers über Scoop

Nachdem Scoop installiert wurde, können wir nun den für unsere Arduino Projekte benötigte AVR-GCC Compiler installieren. Dazu geben wir wiederum über PowerShell nachfolgenden Befehl ein:

scoop install avr-gcc

Einrichten des Arduino-Projektes für Rust

Installieren von cargo-generate

Das Tool cargo-generate ist eine leistungsfähige Erweiterung für cargo, mit welcher man zum Beispiel GitHub Repos clonen kann.

cargo install cargo-generate

Erstellen eines lokalen Git Verzeichnisses

Für die Arduino Projekte erstelle ich unter C:\Rust ein extra Verzeichnis git in welchem ich dann die jeweiligen Projekte ablegen möchte.

Zunächst starten wir mit dem clonen eines GitHub Repositorys, welches ein Beispiel und alle benötigten Ressourcen enthält:

git clone https://github.com/Rahix/avr-hal-template.git

Eigentlich sollte man das Repository mit cargo-generate clonen, jedoch ist dieses Feature in der neuen Version als depricated markiert und somit entfällt es in zukunft. Hier weiche ich von der engl. Anleitung ab und verwende Git.

Anpassen der TOML Dateien

Der Entwickler des Projektes AVR-HAL-TEMPLATE hat eine Templateengine für seinen Code verwendet, mit welcher das Programm über Parameter konfigurierbar ist. Dieses Feature wird zunächst entfernt, dazu modifieren wir die Dateien:

  • .cargo\config.toml
  • src\main.rs
  • Cargo.toml

In der Datei Cargo.toml passen wir noch die Felder für package.name, package.authors sowie bin.name an.

[package]
name = "ArduinoBlink"
authors = ["Stefan Draeger"]

[[bin]]
name = "ArduinoBlink"

Aktualisieren der RUST-Toolchain

Das Projekt ist schon etwas älter, daher müssen wir zusätzlich den konfigurierten NightlyBuild von Rust aktualisieren. Dazu ändern wir den Wert toolchain.channel in der Datei rust-toolchain.toml in „nightly-2024-04-14“.

Installieren und Konfigurieren von ravedude

Das Tool ravedude wird benötigt, um das Kompilat auf den Mikrocontroller zu überspielen. Dieses Tool können wir über das Terminalfenster von Visual Studio Code mit dem Befehl „cargo install ravedude“ installieren.

Im Anschluss der Installation von ravedude müssen wir die Umgebungsvariable „RAVEDUDE_PORT“ anlegen. Der Wert der Umgebungsvariable ist der jeweilige Port, an welchem der Mikrocontroller angeschlossen ist.

Bauen und ausführen des Rust Projektes auf dem Arduino

Nachdem nun alles installiert und konfiguriert ist, können wir das Projekt bauen und ausführen. Dazu geben wir im Terminal zunächst „cargo build“ und anschließend „cargo run“ ein.

Es wird nun das Programm gebaut und auf den Mikrocontroller überspielt, wie bei Mikrocontroller üblich bleibt dieses Programm erhalten bis ein neues aufgespielt wird. Es wird also nicht beendet wenn du Strg+C im Terminal betätigst!

Quellenangabe

Für diesen Beitrag habe ich mich der englischen Anleitung von https://blog.logrocket.com/complete-guide-running-rust-arduino/ bedient und an einigen Stellen hier im Beitrag sinnvoll ergänzt.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}