Programmierungs- & Elektronik-Tutorials

Einrichtung der Arduino IDE für ESP32-S2, S3 und C6

NNeil Bowen14 Min. Lesezeit

Einrichtung der Arduino IDE für ESP32-Entwicklung

Eine Schritt-für-Schritt-Anleitung zur Installation der Arduino IDE, zum Hinzufügen der ESP32-Board-Unterstützung und zum Übertragen eines ersten Sketch auf einen ESP32-S2, ESP32-S3 oder ESP32-C6.

Wenn Sie die Arduino IDE noch nie verwendet haben, sieht der Prozess komplizierter aus als er tatsächlich ist. Es gibt drei Teile: IDE installieren, ESP32-Board-Unterstützungspaket installieren und dann das richtige Board und den richtigen Port auswählen. Die meisten Probleme entstehen im letzten Teil, daher werden die Board-Einstellungen weiter unten ausführlich behandelt.

Diese Anleitung setzt voraus, dass Sie Arduino IDE 2 verwenden, dies ist die aktuelle Version und diejenige, die Sie für ESP32-Arbeiten verwenden sollten. Die ältere 1.8.x IDE funktioniert zwar noch, aber der Board-Manager ist langsamer und der Editor ist viel weniger nützlich.

Was Sie vorher brauchen

  • Einen Windows-, macOS- oder Linux-Computer mit einigen Gigabyte freiem Speicherplatz. Der ESP32-Core und seine Toolchains sind ein großer Download.
  • Ein USB-Kabel, das Daten überträgt. Das überrascht ständig Menschen. Viele USB-C-Kabel, die mit Telefonen und Batteriepackungen mitgeliefert werden, sind nur zum Aufladen und das Board wird einfach nie angezeigt.
  • Ein ESP32-Board. Die folgenden Anweisungen decken die Varianten S2, S3 und C6 ab.
  • Eine angemessene Internetverbindung für den ersten Download.

Schritt 1: Installation der Arduino IDE

Gehen Sie zu arduino.cc/en/software und laden Sie die aktuelle Version für Ihr Betriebssystem herunter. Die Website zeigt zunächst eine Spendenseite an. Sie können diese überspringen und direkt zum Download gehen.

  • Windows: Wählen Sie das Installationsprogramm statt der ZIP-Datei. Akzeptieren Sie die Treiberaufforderungen, falls diese während der Installation erscheinen.
  • macOS: Öffnen Sie das Disk-Image und ziehen Sie die Anwendung in den Applications-Ordner. Beim ersten Start müssen Sie es möglicherweise unter Datenschutz und Sicherheit genehmigen.
  • Linux: Das AppImage verursacht die wenigsten Probleme. Machen Sie es ausführbar und führen Sie es aus. Sie müssen sich auch zur dialout-Gruppe hinzufügen, was weiter unten unter Treibern behandelt wird.


Abbildung 1: Die Download-Seite auf arduino.cc

Starten Sie die IDE nach Abschluss der Installation. Sie erstellt einen Sketchbook-Ordner in Ihrem Dokumentenbereich und einen versteckten Einstellungsordner. Es ist sinnvoll zu wissen, wo der Einstellungsordner ist, denn wenn die Board-Unterstützung jemals durcheinander gerät, ist die schnellste Lösung, einen Teil davon zu löschen und von vorne zu beginnen:

  • Windows: %LOCALAPPDATA%\Arduino15
  • macOS: ~/Library/Arduino15
  • Linux: ~/.arduino15

Schritt 2: Installation des ESP32-Core

Öffnen Sie den Board-Manager. Es ist das zweite Symbol von oben in der linken Symbolleiste oder Tools > Board > Boards Manager. Geben Sie esp32 in das Suchfeld ein und warten Sie einen Moment, bis sich die Liste lädt.

Ältere Anleitung, einschließlich vieler, die immer noch oben in den Suchergebnissen erscheinen, sagen Ihnen, dass Sie eine benutzerdefinierte URL in Einstellungen einfügen müssen, bevor Sie dies tun können. In aktuellen Versionen der IDE ist dies oft nicht erforderlich, versuchen Sie also zuerst die Suche und sehen Sie, was zurückkommt. Falls das Espressif-Paket aufgelistet ist, machen Sie direkt weiter. Falls nicht, gibt es eine kurze Umleitung weiter unten, die das Problem behebt.

Sie werden wahrscheinlich zwei Einträge sehen, und es kommt darauf an, welchen Sie wählen:

  • Arduino ESP32 Boards, von Arduino. Dieses Paket enthält nur das Arduino Nano ESP32. Es gibt Ihnen nicht die Einträge für S2, S3 oder C6-Entwicklungsmodule. Falls Sie kein Nano ESP32 besitzen, ist das nicht das richtige Paket.
  • esp32, von Espressif Systems. Das ist das richtige Paket. Wählen Sie die neueste 3.x-Version aus dem Versions-Dropdown und klicken Sie auf Installieren.

Der Download ist mehrere hundert Megabyte groß, wenn die Compiler-Toolchains einbezogen sind, nehmen Sie sich also Zeit. Die Fortschrittsleiste bleibt lange stehen, während sie entpackt wird. Schließen Sie die IDE nicht mittendrin. Falls es auf halbem Weg fehlschlägt, führen Sie es erneut aus, anstatt anzunehmen, dass es funktioniert hat.


Abbildung 2: Zwei Pakete mit ähnlichen Namen. Sie benötigen esp32 von Espressif Systems.

Falls das Espressif-Paket nicht angezeigt wird

Zeigen Sie die IDE auf den eigenen Paketindex von Espressif. Es schadet nicht, dies zu tun, auch wenn das Paket bereits angezeigt wurde, also wenn Sie es lieber einmal einrichten möchten und nicht mehr darüber nachdenken, machen Sie weiter.

Gehen Sie zu File > Preferences, oder auf macOS Arduino IDE > Settings. Finden Sie das Feld mit der Bezeichnung Additional boards manager URLs und fügen Sie Folgendes hinzu:

https://espressif.github.io/arduino-esp32/package_esp32_index.json

Falls Sie bereits andere URLs darin haben, für ATtiny- oder ESP8266-Unterstützung zum Beispiel, klicken Sie auf das kleine Symbol am rechten Ende des Feldes, um ein größeres Feld zu öffnen, und setzen Sie jede URL auf ihre eigene Zeile. Klicken Sie auf OK und starten Sie die IDE neu, denn sie ruft einen neu hinzugefügten Index nur beim Start ab. Durchsuchen Sie den Board-Manager erneut nach esp32 und der Espressif-Eintrag wird dort sein.


Abbildung 3: Das Feld für zusätzliche Board-Manager-URLs in Einstellungen

Wichtig für C6-Benutzer: Die Unterstützung für ESP32-C6 existiert nur in Core-Version 3.0.0 und später. Falls Sie einen älteren 2.x-Core ausführen, wird das C6 überhaupt nicht in der Board-Liste angezeigt. Das S2 und S3 werden in beiden unterstützt, aber es gibt keinen guten Grund, bei 2.x zu bleiben.

Schritt 3: USB-Treiber oder deren Abwesenheit

Ob Sie einen Treiber benötigen, hängt ganz davon ab, wie das Board mit Ihrem Computer verbunden ist, nicht davon, welcher Chip verwendet wird.

Boards mit nativem USB

Das S2, S3 und C6 haben alle ein USB-Peripheriegerät, das in den Silikon eingebaut ist. Falls die USB-Buchse auf Ihrem Board direkt zum Chip führt, ist kein Treiber auf Windows 10 oder 11, macOS oder einer aktuellen Linux-Distribution erforderlich. Das Board erscheint als Standard-Seriengerät auf eigene Faust.

Boards mit einer USB-zu-Seriell-Brücke

Viele Entwicklungsboards haben einen separaten Bridge-Chip, damit Uploads auf herkömmliche Weise funktionieren. Falls Ihr Board eines dieser Chips hat, installieren Sie den passenden Treiber:

  • CP2102 oder CP2102N: Der Silicon Labs CP210x VCP-Treiber.
  • CH340 oder CH9102: Der WCH-Treiber.
  • FTDI: Der FTDI VCP-Treiber, obwohl Windows diesen normalerweise bereits bereitstellt.

Einige S3-Boards haben zwei USB-Buchsen, eine mit der Brücke verbunden und eine mit dem Chip verbunden. Sie verhalten sich unterschiedlich und produzieren unterschiedliche Portnamen. Merken Sie sich, in welche Buchse Sie angeschlossen haben, denn es kommt darauf an, wenn Sie zu den Board-Einstellungen gelangen.

Linux-Berechtigungen

Unter Linux existiert der Port, aber Sie können ihn nicht öffnen, bis sich Ihr Benutzer in der dialout-Gruppe befindet:

sudo usermod -a -G dialout $USER

Melden Sie sich ab und wieder an, damit das wirksam wird. In einigen Distributionen heißt die Gruppe stattdessen uucp.

Schritt 4: Auswahl des Boards

Gehen Sie zu Tools > Board > esp32 und Ihnen wird eine sehr lange Liste präsentiert. Falls Ihr Board einen spezifischen Namenseintrag hat, verwenden Sie ihn, denn der Hersteller hat bereits die Flash-Größe, PSRAM und Pin-Definitionen für Sie eingestellt. Falls nicht, verwenden Sie den Eintrag des generischen Entwicklungsmoduls:

  • ESP32-S2: ESP32S2 Dev Module
  • ESP32-S3: ESP32S3 Dev Module
  • ESP32-C6: ESP32C6 Dev Module

Die Liste ist lang genug, dass Scrollen schmerzhaft ist. In Arduino IDE 2 können Sie stattdessen das Board-Selector-Dropdown am oberen Fensterrand verwenden und hineintippen, was viel schneller ist.


Abbildung 4: Auswahl des richtigen Entwicklungsmoduls

Schritt 5: Die Board-Optionen, die wirklich wichtig sind

Sobald ein Board ausgewählt ist, füllt sich das Tools-Menü mit Optionen. Die meisten können ignoriert werden. Das sind diejenigen, die Ihnen Ärger bereiten, wenn sie falsch sind.

Einstellung ESP32-S2 ESP32-S3 ESP32-C6
USB CDC On Boot Aktiviert Aktiviert Aktiviert
USB Mode Nicht angeboten Hardware CDC und JTAG Nicht angeboten
Flash Size Modulgröße anpassen Modulgröße anpassen Modulgröße anpassen
PSRAM Nur bei vorhandener Bestückung aktiviert QSPI oder OPI, je nach Bestückung Nicht unterstützt
CPU Frequency 240 MHz 240 MHz 160 MHz
Partition Scheme Standard zum Start Standard zum Start Standard zum Start
Upload Speed 921600, wenn nicht zuverlässig reduzieren 921600, wenn nicht zuverlässig reduzieren 921600, wenn nicht zuverlässig reduzieren
Core Debug Level Keine Keine Keine

USB CDC On Boot

Dies ist die häufigste Ursache für „Mein Sketch wird hochgeladen, aber der serielle Monitor zeigt nichts". Auf einem Board mit nativem USB wird der serielle Port, mit dem Sie sprechen, vom Sketch selbst erstellt. Falls USB CDC On Boot deaktiviert ist, wird Serial stattdessen zu den Hardware-UART-Pins geleitet, nicht zur USB-Buchse, und Sie sehen auf dem Bildschirm überhaupt nichts. Stellen Sie es auf Aktiviert.

Falls Ihr Board einen separaten USB-zu-Seriell-Bridge-Chip verwendet, deaktivieren Sie ihn, denn in diesem Fall ist Serial zu den UART-Pins genau das, was Sie wollen.

Flash-Größe und Partitionsschema

Stellen Sie die Flash-Größe so ein, dass sie dem Modul entspricht, nicht dem größten Wert in der Liste. Falls Sie der IDE sagen, dass Sie 16 MB haben und das Modul nur 4 MB hat, kann der Upload erfolgreich sein und das Board startet dann neu oder verliert seine gespeicherten Einstellungen.

Das Standard-Partitionsschema ist gut, bis Ihr kompilierter Sketch die Anwendungspartition überschreitet. Wenn die IDE anfängt zu beschweren, dass der Sketch zu groß ist, wechseln Sie zu einem der größeren App-Schemata. Falls Sie Over-the-Air-Updates durchführen möchten, benötigen Sie ein Schema mit zwei App-Partitionen, da OTA das neue Image in die Ersatzpartition schreibt, bevor es wechselt.

PSRAM

Aktivieren Sie PSRAM nur, wenn das Modul es physisch hat. Das Aktivieren auf einem Modul ohne PSRAM führt zu Boot-Fehlern oder einem Fehlerstrom auf dem Serienausgang. Auf dem S3 müssen Sie auch zwischen QSPI und OPI wählen, und das falsche Ergebnis verursacht die gleichen Symptome. Überprüfen Sie die Modul-Teilenummer, wenn Sie unsicher sind. Das C6 unterstützt PSRAM überhaupt nicht, daher erscheint die Option nicht.


Abbildung 5: Die Board-Optionen im Tools-Menü

Schritt 6: Den Port finden

Schließen Sie das Board an und schauen Sie unter Tools > Port. Unter Windows erhalten Sie eine COM-Nummer. Unter macOS sehen Sie etwas, das mit /dev/cu.usbmodem für natives USB oder /dev/cu.usbserial für einen Bridge-Chip beginnt. Unter Linux ist es /dev/ttyACM0 oder /dev/ttyUSB0.

Falls nichts erscheint, arbeiten Sie der Reihe nach durch:

  1. Versuchen Sie ein anderes Kabel. Dies löst das Problem häufiger als alles andere.
  2. Versuchen Sie einen anderen USB-Port, vorzugsweise einen direkt auf dem Computer statt über einen Hub.
  3. Überprüfen Sie, ob das Board einen Bridge-Chip hat, der einen Treiber benötigt.
  4. Unter Windows öffnen Sie den Device Manager und suchen Sie nach einem unbekannten Gerät, das beim Anschließen des Boards verschwindet und wiederauftaucht.

Es gibt ein Verhalten mit nativem USB, das beim ersten Mal jeden überrascht. Der Port gehört zum laufenden Sketch, daher verschwindet er beim Reset und erscheint ein oder zwei Sekunden später wieder. Falls Sie einen Sketch hochladen, der früh abstürzt, kann der Port dauerhaft verschwinden, bis Sie das Board manuell in den Download-Modus zwingen.

Schritt 7: Download-Modus erzwingen

Falls der Upload mit einer Nachricht über einen Verbindungsfehler fehlschlägt, müssen Sie den Chip manuell in den Bootloader versetzen. Die Reihenfolge ist immer gleich:

  1. Halten Sie die BOOT-Taste gedrückt (manchmal mit IO0 gekennzeichnet).
  2. Drücken Sie die RESET-Taste und geben Sie sie frei (manchmal mit EN oder RST gekennzeichnet).
  3. Geben Sie BOOT frei.

Das Board sitzt nun in seinem ROM-Bootloader und wartet. Auf einem nativen USB-Board wird es sich zu diesem Zeitpunkt als ein anderer serieller Port anmelden, gehen Sie also zurück zu Tools > Port und wählen Sie den neuen aus, bevor Sie hochladen. Nach Abschluss des Uploads drücken Sie RESET allein, um den Sketch auszuführen, und der ursprüngliche Port wird zurückkommen.

Anmerkungen nach Chip

S2: Am wahrscheinlichsten von den drei, dass es die manuelle Button-Sequenz braucht. Gewöhnen Sie sich daran, es standardmäßig zu tun, und Sie sparen sich viel Fluchen.

S3: Setzt sich normalerweise über nativen USB automatisch in den Download-Modus zurück, aber nicht immer, besonders wenn der vorherige Sketch USB deaktiviert hat oder während des Setups abstürzte.

C6: Im Allgemeinen gut verhalten. Falls es sich weigert, gilt die gleiche Button-Sequenz.


Abbildung 6: BOOT- und RESET-Tasten - Auf der Mercury ist die POWER-Taste RESET und die BUTTON ist die BOOT-Taste zum Beispiel.

Schritt 8: Ein erster Sketch zum Beweis der Toolchain

Widerstehen Sie dem Drang, mit Blink zu beginnen. Auf vielen S3- und C6-Entwicklungsboards ist die LED auf der Platine ein adressierbarer RGB-Typ statt ein einfacher, daher macht ein Standard-Blink-Sketch nichts und Sie fragen sich, ob der Upload funktioniert hat. Geben Sie stattdessen etwas über die serielle Schnittstelle aus, da dies Ihnen sagt, dass der Chip wirklich Ihren Code ausführt und gleichzeitig die Board-Einstellungen bestätigt.

void setup() {
  Serial.begin(115200);
  delay(2000);   // ermöglicht der USB-Seriellanschluss, aufzuzählen, bevor wir drucken

  Serial.println();
  Serial.println("ESP32 lebt");
  Serial.print("Chip model  : ");
  Serial.println(ESP.getChipModel());
  Serial.print("Cores       : ");
  Serial.println(ESP.getChipCores());
  Serial.print("Flash bytes : ");
  Serial.println(ESP.getFlashChipSize());
  Serial.print("Free heap   : ");
  Serial.println(ESP.getFreeHeap());
}

void loop() {
  Serial.print("uptime ms: ");
  Serial.println(millis());
  delay(1000);
}

Klicken Sie auf den Pfeil zum Hochladen, öffnen Sie dann den Seriellen Monitor mit dem Lupe-Symbol oben rechts und stellen Sie die Baudrate auf 115200 ein. Sie sollten sehen, dass der Chip sich selbst meldet. Falls die Model-Zeile ESP32-S3 sagt und Sie ein S3-Board ausgewählt haben, spricht alles von der IDE bis zum Silikon ordnungsgemäß.

Die zwei Sekunden Verzögerung am Anfang ist absichtlich. Mit nativem USB braucht der Host einen Moment, um den Port nach dem Reset zu öffnen, und alles, was vorher gedruckt wird, geht verloren. Ersetzen Sie es nicht durch eine bloße while (!Serial);-Schleife, denn auf einem Board, das von einer Batterie läuft ohne Computer, wird das für immer hängen bleiben. Falls Sie ordnungsgemäß warten möchten, setzen Sie einen Timeout ein:

while (!Serial && millis() < 3000) {
  delay(10);
}

Schritt 9: Installation von Bibliotheken

Die meisten Sensoren und Zubehörteile benötigen eine Bibliothek. Verwenden Sie den Library Manager, das ist das Bücher-Symbol in der linken Symbolleiste oder Sketch > Include Library > Manage Libraries. Suchen, auswählen, installieren und die IDE bietet auch an, Abhängigkeiten mitzubringen. Sagen Sie ja dazu.

Für eine Bibliothek, die als ZIP-Datei bereitgestellt wird, verwenden Sie Sketch > Include Library > Add .ZIP Library. Sie wird in den Bibliotheksordner in Ihrem Sketchbook entpackt, und Sie können einen Ordner auch einfach von Hand dorthin ablegen, wenn Sie bevorzugen. Starten Sie die IDE danach neu, falls eine manuell hinzugefügte Bibliothek nicht angezeigt wird.

Eine wichtige Sache zum Beobachten: Nicht alle Arduino-Bibliotheken funktionieren auf dem ESP32, und von denen, die es tun, funktionieren nicht alle auf allen drei Chips. Alles, das direkt auf AVR-Register zugreift oder das ältere ESP32-Classic-Peripherieset annimmt, kann auf dem C6 insbesondere fehlschlagen zu kompilieren, da es ein RISC-V-Teil statt Xtensa ist. Falls sich eine Bibliothek weigert zu bauen, überprüfen Sie ihren Issue Tracker, bevor Sie davon ausgehen, dass Ihr Setup kaputt ist.

Halten Sie Ihre Versionen unter Kontrolle

Dieser Teil wird von fast allen übersprungen und verursacht dann sechs Monate später Ärger. Die Core-Version, mit der Sie bauen, beeinflusst Timing, Peripherie-Verhalten und gelegentlich die Bedeutung eines API-Aufrufs. Ein Projekt, das letzte Saison perfekt gebaut und geflogen ist, kann sich nach einer Aktualisierung unterschiedlich verhalten.

Zwei Gewohnheiten sind es wert, sich anzugewöhnen:

  • Schreiben Sie die Core-Version und die Bibliotheksversionen auf, die Sie verwendet haben, neben dem Code. Ein Kommentar oben in der Sketch-Hauptdatei reicht aus.
  • Aktualisieren Sie den Core nicht in der Mitte eines Projekts, es sei denn, Sie haben einen Grund. Beenden Sie, überprüfen Sie, dann aktualisieren Sie, dann überprüfen Sie erneut, bevor Sie sich darauf verlassen.

Der Board-Manager ermöglicht es Ihnen, jede veröffentlichte Version aus dem Dropdown zu wählen, nicht nur die neueste, daher ist das Zurückgehen unkompliziert, falls eine Aktualisierung etwas bricht.

Troubleshooting

Symptom Wahrscheinliche Ursache und Behebung
Kein Port erscheint überhaupt Nur-Aufladen-Kabel, fehlender Bridge-Treiber oder ein Hub im Weg. Versuchen Sie zuerst ein bekanntes gutes Kabel.
Verbindung fehlgeschlagen oder Timeout beim Warten auf einen Paketheader Der Chip ist nicht im Download-Modus. Verwenden Sie die BOOT- und RESET-Sequenz, dann wählen Sie den Port erneut aus, der angezeigt wird.
Upload erfolgreich, aber der Serieller Monitor ist leer USB CDC On Boot ist deaktiviert, oder die Baudrate ist falsch, oder Sie haben vor dem Öffnen des Ports gedruckt.
Kontinuierliche Neustarts mit einem rst reason bei 115200 gedruckt Normalerweise PSRAM aktiviert wenn keines vorhanden ist, der falsche PSRAM-Modus auf einem S3, oder eine falsche Flash-Größe.
Brownout-Detektor wurde ausgelöst Unzureichender Versorgungsstrom, oft während der Wi-Fi-Übertragung. Verwenden Sie eine bessere Stromversorgung oder ein kürzeres Kabel.
Sketch zu groß Wechseln Sie zu einem Partitionsschema mit einem größeren App-Bereich.
Der Port verschwindet in dem Moment, in dem der Sketch startet Der Sketch stürzt während des Setup ab. Erzwingen Sie den Download-Modus und laden Sie etwas Bekanntes Gutes hoch.
Nur das Nano ESP32 wird in der Board-Liste angezeigt Sie haben Arduino ESP32 Boards statt esp32 von Espressif Systems installiert. Installieren Sie auch das Espressif-Paket.
Board erscheint nicht in der Liste Core zu alt, besonders für das C6. Aktualisieren Sie auf 3.x oder später.
Kompilierungsfehler direkt nach der Installation des Core Unterbrochener Download. Entfernen Sie das esp32-Paket im Board-Manager und installieren Sie es erneut.

Wo Sie als nächstes hinziehen

Sobald Sie die serielle Ausgabe funktioniert haben, ist der schwere Teil vorbei. Alles danach ist nur Code. Die Beispiele, die mit dem Core geliefert werden, sind ein guter Ausgangspunkt, und sie befinden sich alle unter File > Examples, sobald ein ESP32-Board ausgewählt ist. Es werden nur Beispiele angezeigt, die für den Chip relevant sind, den Sie ausgewählt haben, was allein nützlich ist, wenn Sie versuchen herauszufinden, was ein bestimmter Teil tun kann.

Falls etwas in dieser Anleitung nicht dem entspricht, was Sie sehen, sind die Board-Einstellungen der erste Ort zum Nachschauen. Neunmal zehnmal ist es USB CDC On Boot, die Flash-Größe oder die PSRAM-Einstellung.