Skip to main content

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?

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

  1. Öffne die VS Code Website: https://code.visualstudio.com

  2. Klicke auf "Download for Windows"

  3. Führe die heruntergeladene Datei VSCodeUserSetup-xxx.exe aus

  4. 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"
  5. Starte VS Code nach der Installation

#macOS

  1. Öffne die VS Code Website: https://code.visualstudio.com

  2. Klicke auf "Download for Mac"

  3. Öffne die heruntergeladene .zip-Datei

  4. Ziehe "Visual Studio Code.app" in den Programme-Ordner

  5. Öffne VS Code aus dem Programme-Ordner

    • Beim ersten Start: Rechtsklick → "Öffnen" → "Öffnen" bestätigen
  6. PATH einrichten (optional, für Terminal-Nutzung):

    • Drücke Cmd+Shift+P in VS Code
    • Tippe "shell command" und wähle "Shell Command: Install 'code' command in PATH"

#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

  1. Öffne https://www.python.org/downloads/

  2. Lade die neueste Python-Version herunter (z.B. Python 3.12.x)

  3. Starte den Installer

  4. Wichtig: Aktiviere unbedingt "Add Python to PATH" auf der ersten Seite!

  5. Klicke auf "Install Now"

  6. 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.

  1. Öffne VS Code

  2. Ö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)
  3. Suche nach pioarduino:

    • Gib in das Suchfeld ein: pioarduino
    • Die Extension "pioarduino IDE" sollte erscheinen
  4. Installieren:

    • Klicke auf den blauen "Install"-Button
    • Wenn gefragt, klicke auf "Trust Publisher & Install"
  5. pioarduino Core CLI installieren:

    • Falls eine Meldung erscheint, die zur Installation des pioarduino Core CLI auffordert, bestätige diese
  6. 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
  7. 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.

  1. Ö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
  2. Neues Projekt erstellen:

    • Klicke auf "+ New Project"
  3. Projekteinstellungen:

    • Name: Lernboard_Test (oder ein anderer Name ohne Leerzeichen und Umlaute)

    • Board: Tippe esp32-c6 in 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
  4. Klicke auf "Finish"

  5. 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
  6. 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.

  1. Öffne platformio.ini (im Projekt-Stammverzeichnis)

  2. 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
  1. Speichere die Datei (Strg+S)

  2. 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

  1. Verbinde das Lernboard mit einem USB-C-Kabel mit deinem Computer

  2. Warte einige Sekunden, bis der Computer das Gerät erkannt hat

  3. 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-0001 sehen

    Linux:

    • Öffne ein Terminal
    • Gib ein: ls /dev/ttyUSB* oder ls /dev/ttyACM*
    • Du solltest etwas wie /dev/ttyUSB0 sehen
  4. 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.

  1. Öffne src/main.cpp

  2. 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);
}
  1. Speichere die Datei (Strg+S)

#Schritt 8: Programm kompilieren

Bevor wir das Programm auf das Board laden, kompilieren wir es, um Fehler zu finden.

  1. Kompilieren:

    • Klicke auf das Häkchen-Symbol (✓) in der unteren Statusleiste
    • Oder drücke Strg+Alt+B
    • Oder: pioarduino-Seitenleiste → Project Tasks → Build
  2. 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
  3. Erfolgreiche Kompilierung:

    Linking .pio/build/esp32-c6-lernboard/firmware.elf
    Building .pio/build/esp32-c6-lernboard/firmware.bin
    ============== [SUCCESS] Took 12.34 seconds ==============
  4. 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

#Schritt 9: Programm hochladen

  1. Upload starten:

    • Klicke auf das Pfeil-Symbol (→) in der unteren Statusleiste
    • Oder drücke Strg+Alt+U
    • Oder: pioarduino-Seitenleiste → Project Tasks → Upload
  2. Upload-Prozess:

    Connecting...
    Chip is ESP32-C6
    Uploading...
    Writing at 0x00010000... (100%)
    Wrote 234567 bytes
    ============== [SUCCESS] Took 8.76 seconds ==============
  3. Bei Upload-Problemen:

    • Prüfe, ob der richtige Port erkannt wurde
    • Boot-Modus erzwingen:
      1. Halte den Boot-Taster gedrückt
      2. Drücke kurz den Reset-Taster
      3. Lasse den Boot-Taster los
      4. Starte den Upload erneut

#Schritt 10: Programm testen

  1. Seriellen Monitor öffnen:

    • Klicke auf das Stecker-Symbol in der unteren Statusleiste
    • Oder drücke Strg+Alt+S
    • Oder: pioarduino-Seitenleiste → Project Tasks → Monitor
  2. Ausgabe beobachten:

    =================================
    ESP32-C6 Lernboard - Erster Test
    =================================
    Initialisierung abgeschlossen!
    Druecke den Taster SW1, um die LED einzuschalten.
  3. Testen:

    • Drücke den Taster SW1 auf dem Board
    • Die LED sollte leuchten, solange du drückst!
    • Lasse den Taster los → LED geht aus
  4. Monitor schließen:

    • Drücke Strg+C im Terminal
    • Oder klicke auf den Papierkorb im Terminal-Bereich

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:

  1. Halte den Boot-Taster gedrückt
  2. Drücke kurz den Reset-Taster
  3. Lasse den Boot-Taster los
  4. Starte den Upload erneut

#"No such file or directory: Arduino.h"

Ursache: Die Platform wurde nicht korrekt heruntergeladen.

Lösung:

  1. Prüfe die platformio.ini – ist die Platform-URL korrekt?
  2. Lösche den .pio-Ordner im Projekt
  3. Speichere die platformio.ini erneut (löst Download aus)
  4. 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:

  1. Deinstalliere die PlatformIO-Extension in VS Code
  2. Lösche den Ordner ~/.platformio (versteckter Ordner im Home-Verzeichnis)
  3. Starte VS Code neu
  4. Installiere pioarduino erneut

#Nächste Schritte

Nachdem du die LED und den Taster beherrschst, kannst du weitere Komponenten ausprobieren:

  1. LED blinken lassen – mit delay() Zeitverzögerungen einbauen
  2. LED dimmen – mit ledcAttach() und ledcWrite() PWM nutzen
  3. Sensoren auslesen – I²C-Bibliotheken für BME280, BH1750, BMI270
  4. LED-Matrix ansteuern – Adafruit NeoPixel Bibliothek
  5. Joystick abfragen – TCA6408A über I²C
  6. WLAN nutzen – WiFi-Bibliothek für IoT-Projekte

Schau dir die weiteren Dokumentationen an!


#Weiterführende Links