Erste Schritte mit C/Arduino (pioarduino)
Schritt-für-Schritt-Anleitung zur Einrichtung von Visual Studio Code mit pioarduino IDE für das ESP32-C6 Lernboard.
- Was ist pioarduino?
- Was du benötigst
- Schritt 1: Visual Studio Code installieren
- Schritt 2: Python installieren
- Schritt 3: pioarduino IDE Extension installieren
- Schritt 4: Neues Projekt erstellen
- Schritt 5: Projekt für ESP32-C6 konfigurieren
- Schritt 6: Board verbinden
- Schritt 7: Erstes Programm – LED mit Taster steuern
- Schritt 8: Programm kompilieren
- Schritt 9: Programm hochladen
- Schritt 10: Programm testen
- Erweitertes Beispiel: LED umschalten (Toggle)
- pioarduino-Tipps
- Häufige Probleme und Lösungen
- Nächste Schritte
- Weiterführende Links
#Was ist pioarduino?
pioarduino (steht für "people initiated optimized arduino") ist eine von der Community gepflegte Erweiterung für Visual Studio Code, die speziell für die Programmierung von ESP32-Mikrocontrollern entwickelt wurde. Sie ist ein Fork der bekannten PlatformIO-Erweiterung und bietet einen entscheidenden Vorteil:
pioarduino unterstützt den neuesten Arduino-Core für ESP32 (Version 3.x), einschließlich voller Unterstützung für den ESP32-C6!
Die offizielle PlatformIO-Erweiterung unterstützt derzeit nur den älteren Arduino-Core 2.x und bietet keine Arduino-Framework-Unterstützung für neuere Chips wie den ESP32-C6. pioarduino löst dieses Problem.
Vorteile von pioarduino:
- Volle Unterstützung für ESP32-C6 mit Arduino-Framework
- Aktueller Arduino-Core 3.x mit den neuesten Funktionen
- Professionelle Code-Vervollständigung und Fehlerprüfung
- Automatische Bibliotheksverwaltung
- Integrierter Serial Monitor
- Moderne, erweiterbare IDE (Visual Studio Code)
#Was du benötigst
- ESP32-C6 Lernboard
- USB-C-Kabel (muss Daten übertragen können!)
- Computer mit Windows, macOS oder Linux
- Internetverbindung für Downloads
- Ca. 2–3 GB freier Festplattenspeicher
#Schritt 1: Visual Studio Code installieren
Visual Studio Code (VS Code) ist ein kostenloser, leistungsstarker Code-Editor von Microsoft.
#Windows
-
Öffne die VS Code Website: https://code.visualstudio.com
-
Klicke auf "Download for Windows"
-
Führe die heruntergeladene Datei
VSCodeUserSetup-xxx.exeaus -
Folge dem Installationsassistenten:
- Akzeptiere die Lizenzvereinbarung
- Wähle den Installationsordner (Standard ist OK)
- Wichtig: Aktiviere folgende Optionen:
- ☑ "Add to PATH" (Zu PATH hinzufügen)
- ☑ "Register Code as an editor for supported file types"
- ☑ "Add 'Open with Code' action to Windows Explorer"
- Klicke auf "Install"
-
Starte VS Code nach der Installation
#macOS
-
Öffne die VS Code Website: https://code.visualstudio.com
-
Klicke auf "Download for Mac"
-
Öffne die heruntergeladene
.zip-Datei -
Ziehe "Visual Studio Code.app" in den Programme-Ordner
-
Öffne VS Code aus dem Programme-Ordner
- Beim ersten Start: Rechtsklick → "Öffnen" → "Öffnen" bestätigen
-
PATH einrichten (optional, für Terminal-Nutzung):
- Drücke
Cmd+Shift+Pin VS Code - Tippe "shell command" und wähle "Shell Command: Install 'code' command in PATH"
- Drücke
#Linux (Ubuntu/Debian)
Öffne ein Terminal und führe aus:
# Microsoft GPG-Schlüssel hinzufügen
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
# Repository hinzufügen
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
# VS Code installieren
sudo apt update
sudo apt install code
# Benutzer zur dialout-Gruppe hinzufügen (für USB-Zugriff)
sudo usermod -a -G dialout $USER
Wichtig: Nach dem Hinzufügen zur dialout-Gruppe musst du dich ab- und wieder anmelden oder den Computer neu starten!
#Schritt 2: Python installieren
pioarduino benötigt Python 3.5 oder höher. Auf den meisten Systemen ist Python bereits installiert.
#Windows
-
Öffne https://www.python.org/downloads/
-
Lade die neueste Python-Version herunter (z.B. Python 3.12.x)
-
Starte den Installer
-
Wichtig: Aktiviere unbedingt "Add Python to PATH" auf der ersten Seite!
-
Klicke auf "Install Now"
-
Warte, bis die Installation abgeschlossen ist
#macOS
Python 3 ist auf neueren macOS-Versionen oft vorinstalliert. Falls nicht:
# Homebrew installieren (falls nicht vorhanden)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
# Python installieren
brew install python3
#Linux (Ubuntu/Debian)
Python ist meist vorinstalliert. Prüfe mit:
python3 --version
Falls nicht installiert:
sudo apt install python3 python3-venv python3-pip
#Schritt 3: pioarduino IDE Extension installieren
Jetzt installieren wir die pioarduino-Erweiterung in VS Code.
-
Öffne VS Code
-
Öffne den Extensions-Bereich:
- Klicke auf das Extensions-Symbol in der linken Seitenleiste (vier Quadrate)
- Oder drücke
Strg+Shift+X(Windows/Linux) bzw.Cmd+Shift+X(Mac)
-
Suche nach pioarduino:
- Gib in das Suchfeld ein:
pioarduino - Die Extension "pioarduino IDE" sollte erscheinen
- Gib in das Suchfeld ein:
-
Installieren:
- Klicke auf den blauen "Install"-Button
- Wenn gefragt, klicke auf "Trust Publisher & Install"
-
pioarduino Core CLI installieren:
- Falls eine Meldung erscheint, die zur Installation des pioarduino Core CLI auffordert, bestätige diese
-
Warte auf die vollständige Installation:
- Die Installation dauert einige Minuten (ca. 200–500 MB werden heruntergeladen)
- Unten rechts erscheinen Statusmeldungen
- Warte, bis alles abgeschlossen ist
-
VS Code neu starten:
- Schließe VS Code und öffne es erneut
- In der linken Seitenleiste sollte nun das pioarduino-Symbol erscheinen
- Unten in der Statusleiste siehst du pioarduino-Icons (Home, Build, Upload, ...)
#Schritt 4: Neues Projekt erstellen
Jetzt erstellen wir ein Projekt für das ESP32-C6 Lernboard.
-
Öffne pioarduino Home:
- Klicke auf das pioarduino-Symbol in der linken Seitenleiste
- Klicke auf "PIO Home" → "Open"
- Oder klicke auf das Haus-Symbol in der unteren Statusleiste
-
Neues Projekt erstellen:
- Klicke auf "+ New Project"
-
Projekteinstellungen:
-
Name:
Lernboard_Test(oder ein anderer Name ohne Leerzeichen und Umlaute) -
Board: Tippe
esp32-c6in das Suchfeld und wähle:
"Espressif ESP32-C6-DevKitC-1" -
Framework: Wähle "Arduino"
-
Location:
- Aktiviere "Use default location" für den Standard-Ordner
- Oder deaktiviere es und wähle einen eigenen Speicherort
-
-
Klicke auf "Finish"
-
Warte auf die Initialisierung:
- pioarduino lädt die benötigten Toolchains und Bibliotheken herunter
- Das kann beim ersten Mal 5–10 Minuten dauern!
- Der Fortschritt wird unten rechts angezeigt
-
Projekt-Struktur:
Nach der Erstellung siehst du im Explorer (linke Seite):
Lernboard_Test/├── .pio/ (Build-Dateien, automatisch erstellt)├── .vscode/ (VS Code Einstellungen)├── include/ (Header-Dateien)├── lib/ (Eigene Bibliotheken)├── src/ (Quellcode)│ └── main.cpp (Hauptprogramm)├── test/ (Tests)└── platformio.ini (Projekt-Konfiguration)
#Schritt 5: Projekt für ESP32-C6 konfigurieren
Die Datei platformio.ini enthält die Projekt-Einstellungen. Wir passen sie für optimale ESP32-C6-Unterstützung an.
-
Öffne
platformio.ini(im Projekt-Stammverzeichnis) -
Ersetze den kompletten Inhalt durch:
; pioarduino Projekt-Konfiguration für ESP32-C6 Lernboard
;
; Wichtig: Die platform-URL sorgt für volle ESP32-C6 Unterstützung
; mit dem aktuellen Arduino-Core 3.x
[env:esp32-c6-lernboard]
; pioarduino-Platform mit Arduino-Core 3.x
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
; Board-Definition
board = esp32-c6-devkitc-1
; Arduino-Framework verwenden
framework = arduino
; Upload-Geschwindigkeit
upload_speed = 921600
; Serieller Monitor Baudrate
monitor_speed = 115200
; USB CDC für Serial über USB aktivieren (wichtig für ESP32-C6!)
build_flags =
-DARDUINO_USB_MODE=1
-DARDUINO_USB_CDC_ON_BOOT=1
; Bibliotheken (werden automatisch heruntergeladen)
lib_deps =
; Hier können später Bibliotheken hinzugefügt werden
; Beispiel: adafruit/Adafruit NeoPixel@^1.12.0
-
Speichere die Datei (
Strg+S) -
Warte auf den Download:
- Nach dem Speichern lädt pioarduino automatisch die benötigten Dateien
- Dies kann beim ersten Mal einige Minuten dauern
- Der Fortschritt wird unten rechts angezeigt
Erklärung der wichtigsten Einstellungen:
| Einstellung | Bedeutung |
|---|---|
platform |
Die pioarduino-Platform-URL für ESP32-C6 Unterstützung |
board |
Das spezifische Board (ESP32-C6-DevKitC-1) |
framework |
Arduino-Framework für einfache Entwicklung |
upload_speed |
Übertragungsgeschwindigkeit beim Flashen |
monitor_speed |
Baudrate für den seriellen Monitor |
build_flags |
USB-CDC aktivieren für Serial über USB |
lib_deps |
Externe Bibliotheken |
#Schritt 6: Board verbinden
-
Verbinde das Lernboard mit einem USB-C-Kabel mit deinem Computer
-
Warte einige Sekunden, bis der Computer das Gerät erkannt hat
-
Prüfe den Port:
Windows:
- Öffne den Geräte-Manager (Rechtsklick auf Start → Geräte-Manager)
- Unter "Anschlüsse (COM & LPT)" sollte ein Eintrag erscheinen
- Z.B. "USB-SERIAL CH340 (COM3)" oder "Silicon Labs CP210x (COM4)"
- Merke dir die COM-Nummer!
macOS:
- Öffne ein Terminal
- Gib ein:
ls /dev/tty.usb* - Du solltest etwas wie
/dev/tty.usbserial-0001sehen
Linux:
- Öffne ein Terminal
- Gib ein:
ls /dev/ttyUSB*oderls /dev/ttyACM* - Du solltest etwas wie
/dev/ttyUSB0sehen
-
Port in pioarduino prüfen:
- In pioarduino Home klicke auf "Devices"
- Der erkannte Port sollte angezeigt werden
Falls das Board nicht erkannt wird:
- Probiere ein anderes USB-Kabel (manche Kabel können nur laden!)
- Probiere einen anderen USB-Port
- Halte den Boot-Taster gedrückt, während du das USB-Kabel einsteckst
- Installiere ggf. den USB-Treiber:
- CP210x: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- CH340: https://www.wch-ic.com/downloads/CH341SER_ZIP.html
#Schritt 7: Erstes Programm – LED mit Taster steuern
Jetzt schreiben wir das erste Programm: Die LED an GPIO2 soll leuchten, solange der Taster SW1 an GPIO3 gedrückt wird.
-
Öffne
src/main.cpp -
Ersetze den Inhalt durch:
/**
* Erstes Programm für das ESP32-C6 Lernboard
*
* Die LED an GPIO2 leuchtet, wenn der Taster SW1 an GPIO3 gedrückt wird.
*
* Hardware:
* - LED: GPIO2 (Ausgang)
* - Taster SW1: GPIO3 (Eingang, High-aktiv)
*
* Entwicklungsumgebung: VS Code mit pioarduino
*/
#include <Arduino.h>
// === Pin-Definitionen ===
const int LED_PIN = 2; // Status-LED
const int TASTER_PIN = 3; // Taster SW1
void setup setup() {
// Serielle Kommunikation starten (für Debug-Ausgaben)
Serial.begin(115200);
// Warten, bis die serielle Verbindung bereit ist
delay(1000);
Serial.println("=================================");
Serial.println("ESP32-C6 Lernboard - Erster Test");
Serial.println("=================================");
// LED-Pin als Ausgang konfigurieren
pinMode(LED_PIN, OUTPUT);
// Taster-Pin als Eingang konfigurieren
pinMode(TASTER_PIN, INPUT);
// LED initial ausschalten
digitalWrite(LED_PIN, LOW);
Serial.println("Initialisierung abgeschlossen!");
Serial.println("Druecke den Taster SW1, um die LED einzuschalten.");
Serial.println("");
}
void loop loop() {
// Tasterzustand lesen
// Der Taster ist "High-aktiv": gedrueckt = HIGH (1), losgelassen = LOW (0)
int tasterZustand = digitalRead(TASTER_PIN);
if (tasterZustand == HIGH) {
// Taster ist gedrueckt -> LED einschalten
digitalWrite(LED_PIN, HIGH);
} else {
// Taster ist nicht gedrueckt -> LED ausschalten
digitalWrite(LED_PIN, LOW);
}
// Kurze Pause (10 Millisekunden)
// Entlastet den Prozessor
delay(10);
}
- Speichere die Datei (
Strg+S)
#Schritt 8: Programm kompilieren
Bevor wir das Programm auf das Board laden, kompilieren wir es, um Fehler zu finden.
-
Kompilieren:
- Klicke auf das Häkchen-Symbol (✓) in der unteren Statusleiste
- Oder drücke
Strg+Alt+B - Oder: pioarduino-Seitenleiste → Project Tasks → Build
-
Warte auf die Kompilierung:
- Das Terminal öffnet sich und zeigt den Fortschritt
- Beim ersten Mal dauert es länger (Toolchain wird kompiliert)
- Weitere Builds sind deutlich schneller
-
Erfolgreiche Kompilierung:
Linking .pio/build/esp32-c6-lernboard/firmware.elfBuilding .pio/build/esp32-c6-lernboard/firmware.bin============== [SUCCESS] Took 12.34 seconds ============== -
Bei Fehlern:
- Fehlermeldungen werden rot angezeigt
- Klicke auf die Fehlermeldung, um zur betroffenen Zeile zu springen
- Häufige Fehler:
- Fehlende Semikolons
; - Tippfehler in Variablennamen
- Fehlende
#include-Anweisungen
- Fehlende Semikolons
#Schritt 9: Programm hochladen
-
Upload starten:
- Klicke auf das Pfeil-Symbol (→) in der unteren Statusleiste
- Oder drücke
Strg+Alt+U - Oder: pioarduino-Seitenleiste → Project Tasks → Upload
-
Upload-Prozess:
Connecting...Chip is ESP32-C6Uploading...Writing at 0x00010000... (100%)Wrote 234567 bytes============== [SUCCESS] Took 8.76 seconds ============== -
Bei Upload-Problemen:
- Prüfe, ob der richtige Port erkannt wurde
- Boot-Modus erzwingen:
- Halte den Boot-Taster gedrückt
- Drücke kurz den Reset-Taster
- Lasse den Boot-Taster los
- Starte den Upload erneut
#Schritt 10: Programm testen
-
Seriellen Monitor öffnen:
- Klicke auf das Stecker-Symbol in der unteren Statusleiste
- Oder drücke
Strg+Alt+S - Oder: pioarduino-Seitenleiste → Project Tasks → Monitor
-
Ausgabe beobachten:
=================================ESP32-C6 Lernboard - Erster Test=================================Initialisierung abgeschlossen!Druecke den Taster SW1, um die LED einzuschalten. -
Testen:
- Drücke den Taster SW1 auf dem Board
- Die LED sollte leuchten, solange du drückst!
- Lasse den Taster los → LED geht aus
-
Monitor schließen:
- Drücke
Strg+Cim Terminal - Oder klicke auf den Papierkorb im Terminal-Bereich
- Drücke
Herzlichen Glückwunsch! Dein erstes Programm läuft auf dem ESP32-C6! 🎉
#Erweitertes Beispiel: LED umschalten (Toggle)
Hier ein verbessertes Programm mit Entprellung und Toggle-Funktion:
/**
* Erweitertes Programm: LED umschalten mit Tastendruck
*
* Jeder Druck auf SW1 schaltet die LED um (Toggle).
* Mit Entprellung (Debouncing) fuer zuverlaessige Erkennung.
*/
#include <Arduino.h>
// === Pin-Definitionen ===
const int LED_PIN = 2;
const int TASTER_PIN = 3;
// === Variablen ===
bool ledZustand = false; // Aktueller LED-Zustand
bool letzterTasterZustand = LOW; // Letzter gelesener Tasterzustand
unsigned long letzteAenderung = 0; // Zeitpunkt der letzten Aenderung
const unsigned long ENTPRELLZEIT = 50; // Entprellzeit in Millisekunden
void setup setup() {
Serial.begin(115200);
delay(1000);
Serial.println("LED-Toggle Programm");
Serial.println("Jeder Tastendruck schaltet die LED um.");
Serial.println("");
pinMode(LED_PIN, OUTPUT);
pinMode(TASTER_PIN, INPUT);
digitalWrite(LED_PIN, LOW);
}
void loop loop() {
// Aktuellen Tasterzustand lesen
bool tasterZustand = digitalRead(TASTER_PIN);
// Hat sich der Zustand geaendert?
if (tasterZustand != letzterTasterZustand) {
// Zeitpunkt merken
letzteAenderung = millis();
}
// Ist genug Zeit vergangen? (Entprellung)
if ((millis() - letzteAenderung) > ENTPRELLZEIT) {
// Steigende Flanke erkennen (Taster wurde gerade gedrueckt)
if (tasterZustand == HIGH && letzterTasterZustand == LOW) {
// LED umschalten
ledZustand = !ledZustand;
digitalWrite(LED_PIN, ledZustand);
// Status ausgeben
if (ledZustand) {
Serial.println("LED: AN");
} else {
Serial.println("LED: AUS");
}
}
}
// Zustand fuer naechsten Durchlauf merken
letzterTasterZustand = tasterZustand;
}
#pioarduino-Tipps
#Wichtige Tastenkürzel
| Tastenkürzel | Funktion |
|---|---|
Strg+Alt+B |
Build (Kompilieren) |
Strg+Alt+U |
Upload (Hochladen) |
Strg+Alt+S |
Serial Monitor |
Strg+Alt+C |
Clean (Build-Dateien löschen) |
Strg+Shift+P |
Befehlspalette öffnen |
Strg+S |
Datei speichern |
#Bibliotheken hinzufügen
Es gibt zwei Möglichkeiten, Bibliotheken zu einem Projekt hinzuzufügen:
1. Über die Oberfläche:
- pioarduino Home → Libraries
- Suche nach der gewünschten Bibliothek
- Klicke auf die Bibliothek
- Klicke "Add to Project"
- Wähle dein Projekt aus
2. Über platformio.ini (empfohlen):
Füge die Bibliothek unter lib_deps hinzu:
lib_deps =
adafruit/Adafruit NeoPixel@^1.12.0
adafruit/Adafruit BME280 Library@^2.2.4
adafruit/Adafruit Unified Sensor@^1.1.14
Nach dem Speichern lädt pioarduino die Bibliotheken automatisch herunter.
#Nützliche Bibliotheken für das Lernboard
lib_deps =
; NeoPixel für SK6812 LED-Matrix
adafruit/Adafruit NeoPixel@^1.12.0
; BME280 Umweltsensor
adafruit/Adafruit BME280 Library@^2.2.4
adafruit/Adafruit Unified Sensor@^1.1.14
; BH1750 Lichtsensor
claws/BH1750@^1.3.0
#Serial Monitor Baudrate ändern
Die Baudrate wird in platformio.ini eingestellt:
monitor_speed = 115200
Diese muss mit Serial.begin(115200) im Code übereinstimmen.
#Häufige Probleme und Lösungen
#"Failed to connect to ESP32-C6"
Ursache: Das Board ist nicht im Upload-Modus.
Lösung:
- Halte den Boot-Taster gedrückt
- Drücke kurz den Reset-Taster
- Lasse den Boot-Taster los
- Starte den Upload erneut
#"No such file or directory: Arduino.h"
Ursache: Die Platform wurde nicht korrekt heruntergeladen.
Lösung:
- Prüfe die
platformio.ini– ist die Platform-URL korrekt? - Lösche den
.pio-Ordner im Projekt - Speichere die
platformio.inierneut (löst Download aus) - VS Code neu starten
#"Permission denied" (Linux)
Ursache: Keine Rechte auf den USB-Port.
Lösung:
sudo usermod -a -G dialout $USER
#Serial Monitor zeigt Müll/Kauderwelsch
Ursache: Falsche Baudrate.
Lösung:
- In
platformio.ini:monitor_speed = 115200 - Im Code:
Serial.begin(115200) - Beide Werte müssen übereinstimmen!
#Build dauert sehr lange
Ursache: Beim ersten Build wird die komplette Toolchain kompiliert.
Lösung: Geduld! Weitere Builds sind deutlich schneller.
Tipp: Clean (Strg+Alt+C) nur verwenden, wenn wirklich nötig.
#pioarduino vs. PlatformIO Konflikt
Falls du vorher PlatformIO installiert hattest und Probleme auftreten:
- Deinstalliere die PlatformIO-Extension in VS Code
- Lösche den Ordner
~/.platformio(versteckter Ordner im Home-Verzeichnis) - Starte VS Code neu
- Installiere pioarduino erneut
#Nächste Schritte
Nachdem du die LED und den Taster beherrschst, kannst du weitere Komponenten ausprobieren:
- LED blinken lassen – mit
delay()Zeitverzögerungen einbauen - LED dimmen – mit
ledcAttach()undledcWrite()PWM nutzen - Sensoren auslesen – I²C-Bibliotheken für BME280, BH1750, BMI270
- LED-Matrix ansteuern – Adafruit NeoPixel Bibliothek
- Joystick abfragen – TCA6408A über I²C
- WLAN nutzen – WiFi-Bibliothek für IoT-Projekte
Schau dir die weiteren Dokumentationen an!