ESP32 Dev Kitc-Entwicklungsboard
Produktinformationen
Technische Daten
- Produkt: ESP32
- Programmierhandbuch: ESP-IDF
- Version: v5.0.9
- Hersteller: Espressif Systems
- Veröffentlichungsdatum: 16. Mai 2025
Anweisungen zur Produktverwendung
1. Erste Schritte
Bevor Sie mit dem ESP32 beginnen, machen Sie sich mit dem
Folgendes:
1.1 Einleitung
Erfahren Sie mehr über die grundlegenden Funktionen und Möglichkeiten der
ESP32.
1.2 Was Sie brauchen
Stellen Sie sicher, dass Sie über die erforderliche Hardware und Software verfügen:
- Hardware: Überprüfen Sie die Liste der erforderlichen Hardware
Komponenten. - Software: Installieren Sie die erforderliche Software
Komponenten.
1.3 Installation
Folgen Sie diesen Schritten, um die IDE zu installieren und einzurichten
Umfeld:
- IDE: Installieren Sie die empfohlene IDE für
Programmierung des ESP32. - Manuelle Installation: Richten Sie manuell die
Umgebung, falls erforderlich.
1.4 Erstellen Sie Ihr erstes Projekt
Erstellen und bauen Sie Ihr erstes Projekt mit dem ESP32.
1.5 ESP-IDF deinstallieren
Erfahren Sie bei Bedarf, wie Sie ESP-IDF von Ihrem
System.
2. API-Referenz
Ausführliche Informationen zu
Anwendungsprotokolle, Fehlerbehandlung und Konfiguration
Strukturen.
Häufig gestellte Fragen (FAQ)
F: Wie kann ich häufige Probleme mit ESP32 beheben?
A: Lesen Sie den Abschnitt zur Fehlerbehebung im Programmierhandbuch
oder besuchen Sie den Hersteller webSite für Supportressourcen.
F: Kann ich ESP-IDF mit anderen Mikrocontrollern verwenden?
A: ESP-IDF ist speziell für ESP32 konzipiert, aber Sie werden vielleicht feststellen
Kompatibilität mit anderen Espressif-Mikrocontrollern.
ESP32
ESP-IDF-Programmierhandbuch
Release v5.0.9 Espressif Systems 16. Mai 2025
Inhaltsverzeichnis
Inhaltsverzeichnis
i
1 Fangen Sie an
3
1.1 Einleitung . ...
1.2 Was Sie brauchen . ...
1.2.1 Hardware . ...
1.2.2 Software . ...
1.3 Installation . ...
1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Manuelle Installation . ...
1.4 Erstellen Sie Ihr erstes Projekt . ...
1.5 ESP-IDF deinstallieren . ...
2 API-Referenz
45
2.1 API-Konventionen . ...
2.1.1 Fehlerbehandlung . ...
2.1.2 Konfigurationsstrukturen . ...
2.1.3 Private APIs . ...
2.1.4 Komponenten in Example-Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 API-Stabilität . ...
2.2 Anwendungsprotokolle . ...
2.2.1 ASIO-Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . ...
2.2.3 ESP-MQTT . ...
2.2.4 ESP-TLS . ...
2.2.5 ESP-HTTP-Client . ...
2.2.6 ESP-Lokalsteuerung . ...
2.2.7 ESP-Serieller Slave-Link . ...
2.2.8 ESP x509-Zertifikatspaket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 HTTP-Server . ...
2.2.10 HTTPS-Server . ...
2.2.11 ICMP-Echo . ...
2.2.12 mDNS-Dienst . ...
2.2.13 Mbed TLS . ...
2.2.14 IP-Netzwerkschicht . ...
2.3 Bluetooth-API . ...
2.3.1 Bluetooth® Allgemein . ...
2.3.2 Bluetooth® Low Energy . ...
2.3.3 Bluetooth® Classic . ...
2.3.4 Controller und HCI . ...
2.3.5 ESP-BLE-MESH . ...
2.3.6 NimBLE-basierte Host-APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 Referenz der Fehlercodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 Netzwerk-APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Ethernet . ...
2.5.3 Gewinde . ...
i
2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP-Netzwerkschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Anwendungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 Peripheriegeräte-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Analog-Digital-Wandler (ADC) Oneshot-Modus-Treiber . . . . . . . . . . . . . . . . . 977 2.6.2 Analog-Digital-Wandler (ADC) – Treiber für kontinuierlichen Modus . . . . . . . . . . . . . . . 986 2.6.3 Kalibrierungstreiber für Analog-Digital-Wandler (ADC) . . . . . . . . . . . . . . . . . . . 993 2.6.4 Uhrbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Digital-Analog-Wandler (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO und RTC GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Allzweck-Timer (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Inter-Integrated Circuit (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Inter-IC-Sound (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 LED-Steuerung (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Motorsteuerungs-Pulsweitenmodulator (MCPWM) . . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Impulszähler (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Fernbedienungs-Transceiver (RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 SD-Pull-up-Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 SDMMC-Hosttreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 SD SPI-Hosttreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 SDIO-Karten-Slave-Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Sigma-Delta-Modulation (SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 SPI-Master-Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 SPI-Slave-Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Sicheres Element) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Berührungssensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Zweidraht-Automobilschnittstelle (TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Universeller asynchroner Empfänger/Sender (UART) . . . . . . . . . . . . . . . . . . 1317 2.7 Projektkonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Menü „Projektkonfiguration“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Verwenden von sdkconfig.defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Kconfig-Formatierungsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Abwärtskompatibilität von Kconfig-Optionen . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Referenz der Konfigurationsoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 Bereitstellungs-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Protokollkommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Einheitliche Bereitstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Wi-Fi-Bereitstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 Speicher-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSystemunterstützung . ... 1703 2.9.4 NVS-Partitionsgenerator-Dienstprogramm . ... . . . . . . . . . 1744 2.9.7 SPIFFS FileSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtuell fileSystemkomponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 Wear Levelling API . ... . . . . . . . . 1803 2.10.1 App-Image-Format . ... . . . . . . . . . . 1813 2.10.4 Chip-Revision . ... . ...
ii
2.10.8 ESP HTTPS OTA . ...view) . ... . 1988 2.10.13 Heap-Speicherzuweisung . ... . . . 2032 2.10.16 Interne und instabile APIs . ... . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Protokollierungsbibliothek . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Leistungsmonitor . ... . ... 2099 2.10.27 SoC-Funktionen . ... . . . . . . . . . . . . . . . . . . 2126 2.10.30 ULP-Coprozessor-Programmierung . ...
3 Hardware-Referenz
2167
3.1 Vergleich der Chipserien . ...
3.1.1 Zugehörige Dokumente . ...
4 API-Anleitungen
2171
4.1 Anwendungsebenen-Tracing-Bibliothek . ...
4.1.1 Überview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Betriebsarten . ...
4.1.3 Konfigurationsoptionen und Abhängigkeiten . ...
4.1.4 So verwenden Sie diese Bibliothek . ...
4.2 Ablauf beim Starten der Anwendung . ...
4.2.1 Erste stagDer Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 SekundentagDer Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Anwendungsstart . ...
4.3 Bluetooth® Classic . ...
4.3.1 Überview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® Low Energy . ...
4.4.1 Überview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Erste Schritte . ...
4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fünfzehn
4.5 Bootloader . ...
4.5.1 Bootloader-Kompatibilität . ...
4.5.2 Protokollebene . ...
4.5.3 Auf Werkseinstellungen zurücksetzen . ...
4.5.4 Booten von der Test-Firmware . ...
4.5.5 Rollback . ...
4.5.6 Watchdog . ...
4.5.7 Bootloader-Größe . ...
4.5.8 Schnellstart aus dem Tiefschlaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Benutzerdefinierter Bootloader . ...
4.6 Build-System . ...
4.6.1 Überview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Verwenden des Build-Systems . ...
iii
4.6.3 Example Projekt . ... File . ... Files . ... 2295 4.6.8 Komponentenanforderungen . ... 2300 4.6.11 CMake debuggen . ...ample-Komponente CMakeLists . ... . 2305 4.6.15 Erstellen des Bootloaders . ... 2306 4.6.18 Verwenden vorgefertigter Bibliotheken mit Komponenten . ... File Globbing und inkrementelle Builds . ... 2313 4.6.24 Migration vom ESP-IDF GNU Make System . ...view . ... . . . . . . . . . . . 2317 4.7.4 Core Dump auf UART drucken . ... . . . . . . . . . . . 2318 4.7.7 Ausführen von espcoredump.py . ... . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementieren eines Stubs . ... . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 CRC-Prüfung auf Wake-Stubs . ...ample . ...view . ... . . 2324 4.9.4 Makro ESP_ERROR_CHECK . ... 2325 4.9.7 Makro ESP_GOTO_ON_ERROR . ... 2325 4.9.10 MAKROS PRÜFEN Examples . ... 2327 4.10 ESP-WIFI-MESH . ...view . ... . . . . . . . . . . . 2329 4.10.4 Aufbau eines Netzwerks . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Kanalumschaltung . ...
iv
4.10.8 Leistung . ... . ... . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Panikhandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Register-Dump und Backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB-Stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 RTC-Watchdog-Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Guru-Meditationsfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Andere schwerwiegende Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Flash-Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Relevante elektronische Sicherungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Flash-Verschlüsselungsprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Flash-Verschlüsselungskonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Mögliche Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 ESP32-Flash-Verschlüsselungsstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Lesen und Schreiben von Daten im verschlüsselten Flash . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Aktualisieren von verschlüsseltem Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Flash-Verschlüsselung deaktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Wichtige Punkte zur Flash-Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Einschränkungen der Flash-Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Flash-Verschlüsselung und Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Erweiterte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Technische Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Hardware-Abstraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 LL-Schicht (Low Level) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Hardware-Abstraktionsschicht) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 High-Level-Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Interrupt-Ebenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Debuggen . ... . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 J auswählenTAG Adapter . ... . . 2380 4.16.6 Debugger starten . ...amples . ... . 2391 4.16.10 Verwandte Dokumente . ...view . ... . . . . . . 2424 4.18 lwIP . ... . ... . . . . 2435 4.18.5 IPv6-Unterstützung . ...
v
4.18.7 Leistungsoptimierung . ...
4.19.1 DRAM (Daten-RAM) . ... . . . 2441 4.19.4 DROM (im Flash gespeicherte Daten) . ... . . . . . . . . . . . . . . . . 2441 4.19.7 DMA-Fähigkeitsanforderung . ... . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Partitionstabellen . ...view . ... . . . . . . 2445 4.21.4 Generieren einer binären Partitionstabelle . ... . . . . . . . . . 2449 4.21.7 Partition Tool (parttool.py) . ... . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Anleitungen . ... 2468 4.23.1 Teilkalibrierung . ... . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 PHY-Initialisierungsdaten . ... . ...view . ... . . . . . . . . 2474 4.24.5 So aktivieren Sie Secure Boot . ... . . 2475 4.24.8 Remote-Signierung von Images . ... . . . . . . . . . 2476 4.24.11 Secure Boot und Flash-Verschlüsselung . ... 2478 4.25 Secure Boot V2 . ...tages . ... . . . . . 2480 4.25.5 Sicheres Auffüllen . ... . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Bootloader-Größe . ... . ...
vi
4.25.13 Remote-Signieren von Images . ... . . . . 2484 4.25.16 Secure Boot und Flash-Verschlüsselung . ... 2485 4.26 Unterstützung für externen RAM . ... . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Externen RAM konfigurieren . ... . ... . 2488 4.27.1 Überview . ... . . . . . . . . . . . . . . 2489 4.27.4 C11-Standard . ... 2489 4.28.1 IDF-Frontend – idf.py . ... . . . . . . . . . . . . . . . . . 2495 4.28.4 IDF-Komponenten-Manager . ... . ... 2512 4.29.2 Multi-Device-Testfälle . ...tage Testfälle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Tests für verschiedene Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Unit-Test-App erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Ausführen von Unit-Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Timing-Code mit Cache-kompensiertem Timer . . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Verspottungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Unit-Tests unter Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Tests eingebetteter Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 IDF-Unit-Tests auf Linux-Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Wi-Fi-Treiber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 ESP32 Wi-Fi-Funktionsliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 So schreiben Sie eine Wi-Fi-Anwendung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 ESP32 Wi-Fi API-Fehlercode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Initialisierung der ESP32 Wi-Fi-API-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 ESP32 Wi-Fi-Programmiermodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 ESP32 Wi-Fi-Ereignisbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Allgemeines Szenario der ESP32-WLAN-Station. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 ESP32 Wi-Fi AP – Allgemeines Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 WLAN-Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 ESP32 Wi-Fi-Station-Verbindungsszenario . . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 ESP32-WLAN-Station stellt Verbindung her, wenn mehrere APs gefunden werden. . . . . . . . . . . . . 2543 4.31.12 WLAN-Verbindung wiederherstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Wi-Fi-Beacon-Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 ESP32-WLAN-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Drahtlose Netzwerkverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Funkressourcenmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Schneller BSS-Übergang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi-Energiesparmodus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 ESP32 Wi-Fi-Durchsatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
4.31.21 Wi-Fi 80211 Paket senden . ... . . . . . . . . . . . . . . 2554 4.31.24 Informationen zum WLAN-Kanalstatus . ... . . . . . . . . . . . . . . 2557 4.31.27 WLAN-QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Wi-Fi-Fragment . ... . ... . ... 2568 4.32.2 Geschützte Management Frames (PMF) . ... . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . ...view . ... 2574 4.33.4 So verwenden Sie die Koexistenzfunktion . ... . . . . . . . . . . . . . . 2577 4.34.2 Gründe für nicht reproduzierbare Builds . ... . . . . . . 2578 4.34.5 Reproduzierbare Builds und Debugging . ... . . 2578
5 Migrationsleitfäden
2579
5.1 ESP-IDF 5.x-Migrationshandbuch . ...
5.1.1 Migration von 4.4 auf 5.0 . ...
6 Bibliotheken und Frameworks
2611
6.1 Cloud-Frameworks . ...
6.1.1 ESP RainMaker . ...
6.1.2 AWS IoT . ...
6.1.3 Azure IoT . ...
6.1.4 Google IoT Core . ...
6.1.5 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.6 Joylink IoT . ...
6.1.7 Tencent IoT . ...
6.1.8 Tencentyun IoT . ...
6.1.9 Baidu IoT . ...
6.2 Expressifns-Frameworks . ...
6.2.1 Espressif Audio-Entwicklungsframework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . ...
6.2.3 Espressif DSP-Bibliothek . ...
6.2.4 ESP-WIFI-MESH-Entwicklungsframework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-WHO . ...
6.2.6 ESP RainMaker . ...
6.2.7 ESP-IoT-Lösung . ...
6.2.8 ESP-Protokolle . ...
viii
6.2.9 ESP-BSP . ...
7 Beitragsleitfaden
2615
7.1 So können Sie beitragen . ...
7.2 Vor dem Beitragen . ...
7.3 Pull-Request-Prozess . ...
7.4 Rechtlicher Teil . ...
7.5 Zugehörige Dokumente . ...
7.5.1 Styleguide für das Espressif IoT-Entwicklungsframework . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 Pre-Commit-Hook für ESP-IDF-Projekt installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Code dokumentieren . ...
7.5.4 Erstellen von Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 API-Dokumentationsvorlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Mitwirkendenvereinbarung . ...
7.5.7 Copyright-Header-Leitfaden . ...
7.5.8 ESP-IDF-Tests mit Pytest-Anleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 ESP-IDF-Versionen
2645
8.1 Versionen . ...
8.2 Mit welcher Version sollte ich beginnen? . ...
8.3 Versionierungsschema . ...
8.4 Supportzeiträume . ...
8.5 Prüfen der aktuellen Version . ...
8.6 Git-Workflow . ...
8.7 ESP-IDF aktualisieren . ...
8.7.1 Aktualisieren auf eine stabile Version . ...
8.7.2 Aktualisieren auf eine Vorabversion . ...
8.7.3 Aktualisieren auf Master-Zweig . ...
8.7.4 Aktualisieren auf einen Release-Zweig . ...
9 Ressourcen
2651
9.1 PlatformIO . ...
9.1.1 Was ist PlatformIO? . ...
9.1.2 Installation . ...
9.1.3 Konfiguration . ...
9.1.4 Tutorials . ...
9.1.5 Projekt Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Nächste Schritte . ...
9.2 Nützliche Links . ...
10 Urheberrechte und Lizenzen
2653
10.1 Software-Urheberrechte . ...
10.1.1 Firmware-Komponenten . ...
10.1.2 Dokumentation . ...
10.2 Urheberrechte am ROM-Quellcode . ...
10.3 Xtensa libhal MIT-Lizenz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 TinyBasic Plus MIT-Lizenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.5 TJpgDec-Lizenz . ...
11 Über
2657
12 Zwischen Sprachen wechseln
2659
Index
2661
Index
2661
ix
x
Inhaltsverzeichnis
Dies ist die Dokumentation für das Espressif IoT Development Framework (esp-idf). ESP-IDF ist das offizielle Entwicklungsframework für die SoCs der Serien ESP32, ESP32-S und ESP32-C. Dieses Dokument beschreibt die Verwendung von ESP-IDF mit dem ESP32-SoC.
Erste Schritte
API-Referenz
API-Leitfäden
Espressif Systems
1. Senden Sie das Dokument-Feedback
Version v5.0.9
Inhaltsverzeichnis
Espressif Systems
2. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1
Erste Schritte
Dieses Dokument soll Ihnen dabei helfen, die Software-Entwicklungsumgebung für die Hardware basierend auf dem ESP32-Chip von Espressif einzurichten. Anschließend wird ein einfaches BeispielampIn dieser Datei wird Ihnen gezeigt, wie Sie ESP-IDF (Espressif IoT Development Framework) zur Menükonfiguration und anschließend zum Erstellen und Flashen von Firmware auf einer ESP32-Platine verwenden.
Hinweis: Dies ist die Dokumentation für die stabile Version v5.0.9 von ESP-IDF. Andere ESP-IDF-Versionen sind ebenfalls verfügbar.
1.1 Einleitung
ESP32 ist ein System auf einem Chip, das die folgenden Funktionen integriert: · WLAN (2.4-GHz-Band) · Bluetooth · Duale leistungsstarke Xtensa® 32-Bit-LX6-CPU-Kerne · Co-Prozessor mit extrem niedrigem Stromverbrauch · Mehrere Peripheriegeräte
ESP32 basiert auf 40-nm-Technologie und bietet eine robuste, hochintegrierte Plattform, die den kontinuierlichen Anforderungen an effizienten Stromverbrauch, kompaktes Design, Sicherheit, hohe Leistung und Zuverlässigkeit gerecht wird. Espressif bietet grundlegende Hardware- und Softwareressourcen, die Anwendungsentwicklern die Umsetzung ihrer Ideen mit der Hardware der ESP32-Serie ermöglichen. Das Softwareentwicklungs-Framework von Espressif ist für die Entwicklung von Internet of Things (IoT)-Anwendungen mit WLAN, Bluetooth, Energieverwaltung und zahlreichen weiteren Systemfunktionen konzipiert.
1.2 Was Sie brauchen
1.2.1 Hardware
· Eine ESP32-Platine. · USB-Kabel – USB A / Micro-USB B. · Computer mit Windows, Linux oder macOS.
Hinweis: Derzeit verwenden einige Entwicklungsboards USB-Typ-C-Anschlüsse. Stellen Sie sicher, dass Sie das richtige Kabel zum Anschluss Ihres Boards haben!
Wenn Sie eines der unten aufgeführten offiziellen ESP32-Entwicklungsboards besitzen, können Sie auf den Link klicken, um mehr über die Hardware zu erfahren.
3
Kapitel 1. Erste Schritte
ESP32-DevKitS(-R)
Dieses Benutzerhandbuch enthält Informationen zum ESP32-DevKitS(-R), einem ESP32-basierten Flash-Board von Espressif. ESP32-DevKitS(-R) ist eine Kombination aus zwei Boardnamen: ESP32-DevKitS und ESP32-DevKitS-R. S steht für Springs und R für WROVER.
ESP32-DevKitS
ESP32-DevKitS-R
Das Dokument besteht aus den folgenden Hauptabschnitten: · Erste Schritte: Bietet einen Überblickview von ESP32-DevKitS(-R) und Hardware-/Software-Setup-Anweisungen für den Einstieg. · Hardware-Referenz: Bietet ausführlichere Informationen zur ESP32-DevKitS(-R)ns-Hardware. · Verwandte Dokumente: Enthält Links zu verwandter Dokumentation.
Erste Schritte Dieser Abschnitt beschreibt die ersten Schritte mit ESP32-DevKitS(-R). Er beginnt mit einigen einführenden Abschnitten zu ESP32-DevKitS(-R). Anschließend finden Sie im Abschnitt „So flashen Sie eine Platine“ Anweisungen zum Montieren eines Moduls auf ESP32-DevKitS(-R), zur Vorbereitung und zum Flashen der Firmware.
Überview ESP32-DevKitS(-R) ist ein speziell für ESP32 entwickeltes Flashboard von Espressifn. Es ermöglicht das Flashen eines ESP32-Moduls, ohne das Modul an die Stromversorgung und Signalleitungen löten zu müssen. Mit einem montierten Modul kann ESP32-DevKitS(-R) auch als Mini-Entwicklungsboard wie ESP32-DevKitC verwendet werden.
ESP32-DevKitS- und ESP32-DevKitS-R-Platinen unterscheiden sich nur im Layout der Federstifte, um zu den folgenden ESP32-Modulen zu passen.
· ESP32-DevKitS: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB & IPEX) ESP32-WROVER-B (PCB & IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Informationen zu den oben genannten Modulen finden Sie unter Module der ESP32-Serie.
Beschreibung der Komponenten
Espressif Systems
4. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 1: ESP32-DevKitS – Vorderseite
Espressif Systems
Abb. 2: ESP32-DevKitS-R – Vorderseite 5
Feedback zum Dokument senden
Version v5.0.9
Kapitel 1. Erste Schritte
Schlüsselkomponente Federstifte 2.54 mm Buchsenleisten
USB-zu-UART-Brücke LDO Micro-USB-Anschluss/Micro-USB-Port EN-Taste Boot-Taste
LED einschalten
Beschreibung: Klicken Sie das Modul ein. Die Pins passen in die Bohrungen des Moduls. Diese Buchsenleisten werden mit den Pins des auf dieser Platine montierten Moduls verbunden. Eine Beschreibung der Buchsenleisten finden Sie unter Stiftleisten. Die Single-Chip-USB-zu-UART-Brücke ermöglicht Übertragungsraten von bis zu 3 Mbit/s.
5 V bis 3.3 V Low-Dropout-Voltage-Regler (LDO).
USB-Schnittstelle. Stromversorgung für die Platine sowie Kommunikationsschnittstelle zwischen einem Computer und der Platine.
Reset-Taste.
Download-Schaltfläche. Wenn Sie „Boot“ gedrückt halten und dann „EN“ drücken, wird der Firmware-Download-Modus zum Herunterladen der Firmware über die serielle Schnittstelle gestartet.
Leuchtet auf, wenn USB oder Stromversorgung an die Platine angeschlossen ist.
So flashen Sie eine Platine: Stellen Sie vor dem Einschalten Ihres ESP32-DevKitS(-R) sicher, dass es in gutem Zustand ist und keine offensichtlichen Anzeichen von Schäden aufweist.
Erforderliche Hardware · Ein ESP32-Modul Ihrer Wahl · USB 2.0-Kabel (Standard-A auf Micro-B) · Computer mit Windows, Linux oder macOS
Hardware-Setup Bitte montieren Sie ein Modul Ihrer Wahl gemäß den folgenden Schritten auf Ihrem ESP32-DevKitS(-R):
· Setzen Sie Ihr Modul vorsichtig auf die ESP32-DevKitS(-R)-Platine. Achten Sie darauf, dass die Zinnenlöcher Ihres Moduls mit den Federstiften auf der Platine ausgerichtet sind.
· Drücken Sie Ihr Modul in die Platine, bis es einrastet. · Prüfen Sie, ob alle Federstifte in den Bohrungen sitzen. Sollten einige Federstifte falsch ausgerichtet sein,
Setzen Sie sie mit einer Pinzette in die zinnenförmigen Löcher ein.
Software-Setup
Bevorzugte Methode Das ESP-IDF-Entwicklungsframework bietet eine bevorzugte Methode zum Flashen von Binärdateien auf ESP32-DevKitS(-R). Fahren Sie mit dem Abschnitt „Erste Schritte“ fort. Der Abschnitt „Installation“ hilft Ihnen dabei, die Entwicklungsumgebung schnell einzurichten und anschließend eine Anwendung zu flashen.ampDatei auf Ihr ESP32-DevKitS(-R).
Alternativ können Windows-Benutzer Binärdateien mit dem Flash Download Tool flashen. Laden Sie es einfach herunter, entpacken Sie es und folgen Sie den Anweisungen im Doc-Ordner.
Hinweis: 1. Zum Flashen von Binärdateien files, ESP32 sollte in den Firmware-Download-Modus versetzt werden. Dies kann entweder automatisch durch das Flash-Tool erfolgen oder durch Gedrückthalten der Boot-Taste und Tippen auf die EN-Taste. 2. Nach dem Flashen der Binärdatei files, das Flash Download Tool startet Ihr ESP32-Modul neu und bootet standardmäßig die geflashte Anwendung.
Platinenabmessungen Inhalt und Verpackung
Espressif Systems
6. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte Abb. 3: Abmessungen der ESP32-DevKitS-Platine – Rückseite
Espressif Systems
Abb. 4: Abmessungen der ESP32-DevKitS-R-Platine – Rückseite 7
Feedback zum Dokument senden
Version v5.0.9
Kapitel 1. Erste Schritte
Einzelhandelsbestellungen Wenn Sie ein paar s bestellenampJedes ESP32-DevKitS(-R) wird einzeln verpackt, entweder in einem antistatischen Beutel oder in einer anderen Verpackung, je nach Händler. Für Einzelhandelsbestellungen besuchen Sie bitte https://www.espressif.com/en/contact-us/get-samples.
Großhandelsbestellungen: Bei Großbestellungen werden die Bretter in großen Kartons geliefert. Für Großhandelsbestellungen besuchen Sie bitte https://www.espressif.com/en/contact-us/sales-questions.
Hardware-Referenz
Blockdiagramm Ein Blockdiagramm unten zeigt die Komponenten von ESP32-DevKitS(-R) und ihre Verbindungen.
Abb. 5: ESP32-DevKitS(-R) (zum Vergrößern anklicken)
Stromversorgungsoptionen Es gibt drei sich gegenseitig ausschließende Möglichkeiten, die Platine mit Strom zu versorgen: · Micro-USB-Anschluss, Standardstromversorgung · 5V- und GND-Header-Pins · 3V3- und GND-Header-Pins
Es wird empfohlen, die erste Option zu verwenden: Micro-USB-Anschluss.
Espressif Systems
.
Beschriftungssignal
L1 3V3 VDD 3V3
L2 EN CHIP_PU
L3 VP SENSOR_VP
L4 VN SENSOR_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
Fortsetzung auf der nächsten Seite
8. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Tabelle 1 Fortsetzung von der vorherigen Seite
.
Beschriftungssignal
L9 25
GPIO25
L10 26
GPIO26
L11 27
GPIO27
L12 14
GPIO14
L13 12
GPIO12
L14 GND GND
L15 13
GPIO13
L16 D2 SD_DATA2
L17 D3 SD_DATA3
L18 CMD SD_CMD
L19 5V
Externe 5V
R1 GND GND
R2 23
GPIO23
R3 22
GPIO22
R4 TX U0TXD
R5 RX U0RXD
R6 21
GPIO21
R7 GND GND
R8 19
GPIO19
R9 18
GPIO18
R10 5
GPIO5
R11 17
GPIO17
R12 16
GPIO16
R13 4
GPIO4
R14 0
GPIO0
R15 2
GPIO2
R16 15
GPIO15
R17 D1 SD_DATA1
R18 D0 SD_DATA0
R19 CLK SD_CLK
Kopfblöcke: Das Bild der Kopfblöcke finden Sie in der Beschreibung der Komponenten.
Zugehörige Dokumente
· ESP32-DevKitS(-R)-Schaltpläne (PDF) · ESP32-Datenblatt (PDF) · ESP32-WROOM-32-Datenblatt (PDF) · ESP32-WROOM-32D & ESP32-WROOM-32U-Datenblatt (PDF) · ESP32-SOLO-1-Datenblatt (PDF) · ESP32-WROVER-Datenblatt (PDF) · ESP32-WROVER-B-Datenblatt (PDF) · ESP-Produktselektor
ESP32-DevKitM-1
Dieses Benutzerhandbuch erleichtert Ihnen den Einstieg in ESP32-DevKitM-1 und bietet darüber hinaus ausführlichere Informationen.
ESP32-DevKitM-1 ist ein ESP32-MINI-1(1U)-basiertes Entwicklungsboard von Espressif. Die meisten I/O-Pins sind zur einfachen Anbindung beidseitig auf die Stiftleisten herausgeführt. Peripheriegeräte können entweder über Steckbrücken angeschlossen oder das ESP32-DevKitM-1 auf einer Steckplatine montiert werden.
Espressif Systems
9. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
ESP32-DevKitM-1 – vorne
ESP32-DevKitM-1 – isometrisch
Das Dokument besteht aus den folgenden Hauptabschnitten: · Erste Schritte: Bietet einen Überblickview des ESP32-DevKitM-1 und Anweisungen zur Einrichtung der Hardware/Software für den Einstieg. · Hardwarereferenz: Bietet ausführlichere Informationen zur ESP32-DevKitM-1ns-Hardware. · Zugehörige Dokumente: Enthält Links zu verwandter Dokumentation.
Erste Schritte Dieser Abschnitt beschreibt die ersten Schritte mit dem ESP32-DevKitM-1. Er beginnt mit einigen einführenden Abschnitten zum ESP32-DevKitM-1. Anschließend finden Sie im Abschnitt „Anwendungsentwicklung starten“ Anweisungen zur ersten Hardware-Einrichtung und zum Flashen der Firmware auf das ESP32-DevKitM-1.
Überview Dies ist ein kleines und praktisches Entwicklungsboard mit folgenden Funktionen:
· ESP32-MINI-1 oder ESP32-MINI-1U-Modul · USB-zu-Seriell-Programmierschnittstelle, die auch die Stromversorgung der Platine bereitstellt · Stiftleisten · Drucktasten zum Zurücksetzen und Aktivieren des Firmware-Download-Modus · einige weitere Komponenten
Inhalt und Verpackung
Einzelhandelsbestellungen Wenn Sie ein paar s bestellenamples, jedes ESP32-DevKitM-1 wird in einer Einzelverpackung entweder in einem antistatischen Beutel oder in einer anderen Verpackung geliefert, je nach Händler.
Für Einzelhandelsbestellungen gehen Sie bitte zu https://www.espressif.com/en/contact-us/get-samples.
Großhandelsbestellungen: Bei Großbestellungen werden die Bretter in großen Kartons geliefert. Für Großhandelsbestellungen besuchen Sie bitte https://www.espressif.com/en/contact-us/sales-questions.
Beschreibung der Komponenten Die folgende Abbildung und die Tabelle unten beschreiben die wichtigsten Komponenten, Schnittstellen und Bedienelemente des ESP32-DevKitM-1-Boards. Wir nehmen das Board mit einem ESP32-MINI-1-Modul als Beispielample in den folgenden Abschnitten.
Espressif Systems
10. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 6: ESP32-DevKitM-1 – Vorderseite
Schlüsselkomponente On-Board-Modul
5 V bis 3.3 V LDO-Boot-Taste
Reset-Taste Micro-USB-Anschluss
USB-zu-UART-Brücke 3.3 V Power On LED
E/A-Anschluss
Beschreibung
ESP32-MINI-1-Modul oder ESP32-MINI-1U-Modul. Das ESP32-MINI-1 verfügt über eine integrierte PCB-Antenne. Das ESP32-MINI-1U verfügt über einen externen Antennenanschluss. Beide Module verfügen über einen 4 MB Flash-Speicher im Chipgehäuse. Weitere Informationen finden Sie im Datenblatt zum ESP32-MINI-1 und ESP32-MINI-1U.
Leistungsregler wandelt 5 V in 3.3 V um.
Download-Schaltfläche. Wenn Sie „Boot“ gedrückt halten und dann „Reset“ drücken, wird der Firmware-Download-Modus zum Herunterladen der Firmware über die serielle Schnittstelle gestartet.
Reset-Taste
USB-Schnittstelle. Stromversorgung für das Board sowie die Kommunikationsschnittstelle zwischen einem Computer und dem ESP32-Chip.
Ein einzelner USB-UART-Bridge-Chip bietet Übertragungsraten von bis zu 3 Mbit/s.
Wird eingeschaltet, wenn USB mit der Platine verbunden ist. Weitere Informationen finden Sie in den Schaltplänen unter „Verwandte Dokumente“. Alle verfügbaren GPIO-Pins (mit Ausnahme des SPI-Busses für Flash) sind auf die Stiftleisten auf der Platine aufgeteilt. Benutzer können den ESP32-Chip programmieren, um mehrere Funktionen zu aktivieren.
Beginnen Sie mit der Anwendungsentwicklung. Stellen Sie vor dem Einschalten Ihres ESP32-DevKitM-1 sicher, dass es in gutem Zustand ist und keine offensichtlichen Anzeichen von Schäden aufweist.
Erforderliche Hardware · ESP32-DevKitM-1 · USB 2.0-Kabel (Standard-A auf Micro-B) · Computer mit Windows, Linux oder macOS
Software-Setup Bitte fahren Sie mit Erste Schritte fort, wo der Abschnitt Installation Ihnen schnell dabei hilft, die Entwicklungsumgebung einzurichten und dann eine Anwendung zu flashen, z. B.ampDatei auf Ihr ESP32-DevKitM-1.
Espressif Systems
11. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Achtung: ESP32-DevKitM-1-Boards, die vor dem 2. Dezember 2021 hergestellt wurden, verfügen über ein Single-Core-Modul. Um zu überprüfen, welches Modul Sie verwenden, überprüfen Sie bitte die Modulkennzeichnung in PCN-2021-021 . Wenn Ihr Board über ein Single-Core-Modul verfügt, aktivieren Sie bitte den Single-Core-Modus (CONFIG_FREERTOS_UNICORE) in menuconfig, bevor Sie Ihre Anwendungen flashen.
Hardware-Referenzblockdiagramm Ein Blockdiagramm unten zeigt die Komponenten von ESP32-DevKitM-1 und ihre Verbindungen.
Abb. 7: ESP32-DevKitM-1
Auswahl der Stromquelle Es gibt drei sich gegenseitig ausschließende Möglichkeiten, die Platine mit Strom zu versorgen: · Micro-USB-Anschluss, Standardstromversorgung · 5V- und GND-Header-Pins · 3V3- und GND-Header-Pins
Achtung: · Die Stromversorgung muss über eine und nur eine der oben genannten Optionen erfolgen, da sonst die Platine und/oder die Stromversorgungsquelle beschädigt werden können. · Die Stromversorgung über den Micro-USB-Anschluss wird empfohlen.
Pin-Beschreibungen Die folgende Tabelle enthält die Namen und Funktionen der Pins auf beiden Seiten der Platine. Informationen zur Pin-Konfiguration der Peripheriegeräte finden Sie im ESP32-Datenblatt.
NEIN.
Name
Typ
1
Masse
P
2
3V3
P
Funktion Masse 3.3 V Spannungsversorgung
Fortsetzung auf der nächsten Seite
Espressif Systems
12. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Tabelle 2 Fortsetzung von der vorherigen Seite
NEIN.
Name
Typ
Funktion
3
I36
I
GPIO36, ADC1_CH0, RTC_GPIO0
4
I37
I
GPIO37, ADC1_CH1, RTC_GPIO1
5
I38
I
GPIO38, ADC1_CH2, RTC_GPIO2
6
I39
I
GPIO39, ADC1_CH3, RTC_GPIO3
7
RST
I
Zurücksetzen; Hoch: aktivieren; Niedrig: schaltet sich aus
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
Ein-/Ausgabe
GPIO32, XTAL_32K_P (32.768 kHz Quarzoszillatoreingang),
ADC1_CH4, TOUCH9, RTC_GPIO9
11
IO33
Ein-/Ausgabe
GPIO33, XTAL_32K_N (32.768-kHz-Quarzoszillatorausgang),
ADC1_CH5, TOUCH8, RTC_GPIO8
12
IO25
Ein-/Ausgabe
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
13
IO26
Ein-/Ausgabe
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
14
IO27
Ein-/Ausgabe
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
15
IO14
Ein-/Ausgabe
GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
16
5V
P
5 V Stromversorgung
17
IO12
Ein-/Ausgabe
GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
HS2_DATA2, SD_DATA2, EMAC_TXD3
18
IO13
Ein-/Ausgabe
GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
19
IO15
Ein-/Ausgabe
GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,
HS2_CMD, SD_CMD, EMAC_RXD3
20
IO2
Ein-/Ausgabe
GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
21
IO0
Ein-/Ausgabe
GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
EMAC_TX_CLK
22
IO4
Ein-/Ausgabe
GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
23
IO9
Ein-/Ausgabe
GPIO9, HS1_DATA2, U1RXD, SD_DATA2
24
IO10
Ein-/Ausgabe
GPIO10, HS1_DATA3, U1TXD, SD_DATA3
25
IO5
Ein-/Ausgabe
GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK
26
IO18
Ein-/Ausgabe
GPIO18, HS1_DATA7, VSPICLK
27
IO23
Ein-/Ausgabe
GPIO23, HS1_STROBE, VSPID
28
IO19
Ein-/Ausgabe
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
29
IO22
Ein-/Ausgabe
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
30
IO21
Ein-/Ausgabe
GPIO21, VSPIHD, EMAC_TX_EN
31
TXD0
Ein-/Ausgabe
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
Ein-/Ausgabe
GPIO3, U0RXD, CLK_OUT2
Details zur Hardwarerevision. Keine früheren Versionen verfügbar.
Zugehörige Dokumente
· ESP32-MINI-1 & ESP32-MINI-1U Datenblatt (PDF) · ESP32-DevKitM-1 Schaltpläne (PDF) · ESP32-DevKitM-1 PCB-Layout (PDF) · ESP32-DevKitM-1 Layout (DXF) – Sie können view es mit Autodesk Viewer online · ESP32 Datenblatt (PDF) · ESP Produktauswahl
Für weitere Designdokumentation für die Platine kontaktieren Sie uns bitte unter sales@espressif.com.
Espressif Systems
13. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
1.2.2 Software
Um ESP-IDF auf ESP32 zu verwenden, installieren Sie die folgende Software: · Toolchain zum Kompilieren von Code für ESP32 · Build-Tools – CMake und Ninja zum Erstellen einer vollständigen Anwendung für ESP32 · ESP-IDF, das im Wesentlichen API (Softwarebibliotheken und Quellcode) für ESP32 und Skripte zum Betreiben der Toolchain enthält
1.3 Installation
Um die gesamte erforderliche Software zu installieren, bieten wir verschiedene Möglichkeiten an. Wählen Sie eine der verfügbaren Optionen.
1.3.1 IDE
Hinweis: Wir empfehlen dringend, ESP-IDF über Ihre bevorzugte IDE zu installieren.
· Eclipse-Plugin · VSCode-Erweiterung
1.3.2 Manuelle Installation
Für die manuelle Vorgehensweise wählen Sie bitte entsprechend Ihrem Betriebssystem aus.
Espressif Systems
14. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Standard-Setup der Toolchain für Windows
Einführung: ESP-IDF erfordert die Installation einiger erforderlicher Tools, damit Sie Firmware für unterstützte Chips erstellen können. Zu den erforderlichen Tools gehören Python, Git, Cross-Compiler, CMake und Ninja-Build-Tools. Für diese ersten Schritte verwenden wir die Eingabeaufforderung, aber nachdem ESP-IDF installiert ist, können Sie stattdessen das Eclipse-Plugin oder eine andere grafische IDE mit CMake-Unterstützung verwenden. Hinweis: Einschränkungen: – Der Installationspfad von ESP-IDF und den ESP-IDF-Tools darf nicht länger als 90 Zeichen sein. Zu lange Installationspfade können zu einem fehlgeschlagenen Build führen. – Der Installationspfad von Python oder ESP-IDF darf keine Leerzeichen oder Klammern enthalten. – Der Installationspfad von Python oder ESP-IDF sollte keine Sonderzeichen (nicht ASCII) enthalten, es sei denn, das Betriebssystem ist mit Unicode-UTF-8p-Unterstützung konfiguriert. Der Systemadministrator kann die Unterstützung über die Systemsteuerung aktivieren – Datums-, Uhrzeit- oder Zahlenformate ändern – Registerkarte „Verwaltung“ – Systemgebietsschema ändern – Option „Beta: Unicode UTF-8 für weltweite Sprachunterstützung verwenden“ aktivieren – OK und Computer neu starten.
Installationsprogramm für ESP-IDF-Tools: Die einfachste Möglichkeit, die Voraussetzungen für ESP-IDFns zu installieren, besteht darin, eines der Installationsprogramme für ESP-IDF-Tools herunterzuladen.
Windows Installer herunterladen
Was ist der Anwendungsfall für Online- und Offline-Installer? Der Online-Installer ist sehr klein und ermöglicht die Installation aller verfügbaren Versionen von ESP-IDF. Der Installer lädt während des Installationsvorgangs nur notwendige Abhängigkeiten herunter, einschließlich Git für Windows. Der Installer speichert heruntergeladene files im Cache-Verzeichnis %userprofile%. espressif
Für das Offline-Installationsprogramm ist keine Netzwerkverbindung erforderlich. Das Installationsprogramm enthält alle erforderlichen Abhängigkeiten, einschließlich Git für Windows.
Komponenten der Installation Das Installationsprogramm stellt die folgenden Komponenten bereit:
· Embedded Python · Cross-Compiler · OpenOCD · CMake- und Ninja-Build-Tools · ESP-IDF
Das Installationsprogramm ermöglicht auch die Wiederverwendung des vorhandenen Verzeichnisses mit ESP-IDF. Das empfohlene Verzeichnis ist %userprofile%Desktopesp-idf, wobei %userprofile% ist Ihr Home-Verzeichnis.
Espressif Systems
15. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Starten der ESP-IDF-Umgebung: Am Ende des Installationsvorgangs können Sie die Optionen „ESP-IDF PowerShell-Umgebung ausführen“ oder „ESP-IDF-Eingabeaufforderung (cmd.exe) ausführen“ aktivieren. Das Installationsprogramm startet die ESP-IDF-Umgebung in der ausgewählten Eingabeaufforderung. ESP-IDF PowerShell-Umgebung ausführen:
Abb. 8: Abschließen des ESP-IDF Tools Setup Wizard mit „Run ESP-IDF PowerShell Environment“
Führen Sie die ESP-IDF-Eingabeaufforderung (cmd.exe) aus:
Verwendung der Eingabeaufforderung: Für die weiteren Schritte verwenden wir die Windows-Eingabeaufforderung. Der ESP-IDF Tools Installer erstellt außerdem eine Verknüpfung im Startmenü, um die ESP-IDF-Eingabeaufforderung zu starten. Diese Verknüpfung startet die Eingabeaufforderung (cmd.exe) und führt das Skript export.bat aus, um die Umgebungsvariablen (PATH, IDF_PATH und andere) einzurichten. In dieser Eingabeaufforderung stehen alle installierten Tools zur Verfügung. Beachten Sie, dass diese Verknüpfung spezifisch für das im ESP-IDF Tools Installer ausgewählte ESP-IDF-Verzeichnis ist. Wenn Sie mehrere ESP-IDF-Verzeichnisse auf dem Computer haben (z. B.ample, um mit verschiedenen Versionen von ESP-IDF zu arbeiten), haben Sie zwei Möglichkeiten, sie zu verwenden:
1. Erstellen Sie eine Kopie der vom ESP-IDF Tools Installer erstellten Verknüpfung und ändern Sie das Arbeitsverzeichnis der neuen Verknüpfung in das ESP-IDF-Verzeichnis, das Sie verwenden möchten.
2. Alternativ können Sie cmd.exe ausführen, anschließend in das gewünschte ESP-IDF-Verzeichnis wechseln und export.bat ausführen. Beachten Sie, dass im Gegensatz zur vorherigen Option Python und Git in PATH vorhanden sein müssen. Sollten Sie Fehlermeldungen erhalten, weil Python oder Git nicht gefunden werden, verwenden Sie die erste Option.
Erste Schritte mit ESP-IDF: Da nun alle Voraussetzungen erfüllt sind, erfahren Sie im nächsten Thema, wie Sie Ihr erstes Projekt starten.
Espressif Systems
16. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte Abb. 9: ESP-IDF PowerShell
Abb. 10: Abschließen des ESP-IDF Tools-Setup-Assistenten mit der Eingabeaufforderung „ESP-IDF ausführen“ (cmd.exe)
Espressif Systems
17. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 11: ESP-IDF-Eingabeaufforderung
Espressif Systems
18. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Diese Anleitung unterstützt Sie bei den ersten Schritten mit ESP-IDF. Folgen Sie dieser Anleitung, um ein neues Projekt auf dem ESP32 zu starten und die Geräteausgabe zu erstellen, zu flashen und zu überwachen. Hinweis: Wenn Sie ESP-IDF noch nicht installiert haben, gehen Sie bitte zur Installation und folgen Sie den Anweisungen, um die gesamte für die Verwendung dieser Anleitung erforderliche Software zu erhalten.
Starten Sie ein Projekt Jetzt sind Sie bereit, Ihre Anwendung für ESP32 vorzubereiten. Sie können mit dem Projekt getstarted/hello_world von ex beginnenamples-Verzeichnis in ESP-IDF.
Wichtig: Das ESP-IDF-Build-System unterstützt keine Leerzeichen in den Pfaden zu ESP-IDF oder zu Projekten.
Kopieren Sie das Projekt get-started/hello_world in das Verzeichnis ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhallo_welt hallo_welt
Hinweis: Es gibt eine Reihe von Beispielenample projekte in der examples-Verzeichnis in ESP-IDF. Sie können jedes Projekt wie oben beschrieben kopieren und ausführen. Es ist auch möglich, ex . zu bauenampDateien an Ort und Stelle, ohne sie vorher zu kopieren.
Verbinden Sie Ihr Gerät. Verbinden Sie nun Ihr ESP32-Board mit dem Computer und prüfen Sie, unter welchem seriellen Port das Board sichtbar ist. Die Namen serieller Ports beginnen in Windows mit COM. Wenn Sie nicht sicher sind, wie Sie den Namen des seriellen Ports überprüfen, lesen Sie bitte den Abschnitt „Serielle Verbindung mit ESP32 herstellen“, um weitere Informationen zu erhalten.
Hinweis: Halten Sie den Portnamen bereit, da Sie ihn in den nächsten Schritten benötigen.
Konfigurieren Sie Ihr Projekt. Navigieren Sie zu Ihrem „Hello_World“-Verzeichnis, legen Sie ESP32 als Ziel fest und führen Sie das Projektkonfigurationsprogramm menuconfig aus.
Windows-CD %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
Nach dem Öffnen eines neuen Projekts sollten Sie zunächst das Ziel mit idf.py set-target esp32 festlegen. Beachten Sie, dass dabei ggf. vorhandene Builds und Konfigurationen im Projekt gelöscht und initialisiert werden. Das Ziel kann in der Umgebungsvariable gespeichert werden, um diesen Schritt zu überspringen. Weitere Informationen finden Sie unter „Zielchip auswählen: set-target“. Wenn die vorherigen Schritte korrekt ausgeführt wurden, erscheint folgendes Menü: In diesem Menü richten Sie projektspezifische Variablen ein, z. B. WLAN-Netzwerkname und -Passwort, Prozessorgeschwindigkeit usw. Die Projekteinrichtung mit menuconfig kann für ohello_wordp übersprungen werden, da dieses Beispielample wird mit der Standardkonfiguration ausgeführt.
Achtung: Wenn Sie die ESP32-DevKitC-Karte mit dem ESP32-SOLO-1-Modul oder die ESP32-DevKitM-1-Karte mit dem ESP32-MIN1-1(1U)-Modul verwenden, aktivieren Sie bitte den Single-Core-Modus (CONFIG_FREERTOS_UNICORE) in menuconfig, bevor Sie z. B. flashen.amples.
Espressif Systems
19. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 12: Projektkonfiguration – Home-Fenster
Hinweis: Die Menüfarben können in Ihrem Terminal abweichen. Sie können die Darstellung mit der Option –style ändern. Für weitere Informationen führen Sie bitte idf.py menuconfig –help aus.
Wenn Sie eines der unterstützten Entwicklungsboards verwenden, können Sie Ihre Entwicklung mit dem Board Support Package beschleunigen. Weitere Informationen finden Sie unter „Zusätzliche Tipps“.
Erstellen Sie das Projekt. Erstellen Sie das Projekt, indem Sie Folgendes ausführen:
idf.py-Build
Dieser Befehl kompiliert die Anwendung und alle ESP-IDF-Komponenten und generiert dann den Bootloader, die Partitionstabelle und die Anwendungsbinärdateien.
$ idf.py build. Cmake wird im Verzeichnis /path/to/hello_world/build ausgeführt. „cmake -G Ninja –warn-uninitialized /path/to/hello_world“ wird ausgeführt … Warnung vor nicht initialisierten Werten. – Git gefunden: /usr/bin/git (Version „2.17.0“ gefunden) – Aufgrund der Konfiguration wird eine leere aws_iot-Komponente erstellt – Komponentennamen: … – Komponentenpfade: …
… (mehr Zeilen der Build-Systemausgabe)
[527/527] Generierung von hello_world.bin esptool.py v2.3.1
Projekterstellung abgeschlossen. Führen Sie zum Flashen diesen Befehl aus: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin oder führen Sie „idf.py -p PORT flash“ aus.
Wenn keine Fehler auftreten, wird der Build mit der Generierung der Firmware-Binärdatei .bin abgeschlossen files.
Espressif Systems
20. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Flashen Sie auf das Gerät. Flashen Sie die Binärdateien, die Sie gerade erstellt haben (bootloader.bin, partition-table.bin und hello_world.bin), auf Ihre ESP32-Platine, indem Sie Folgendes ausführen: idf.py -p PORT [-b BAUD] flash
Ersetzen Sie PORT durch den Namen des seriellen Ports Ihres ESP32-Boards. Sie können die Baudrate des Flashers auch ändern, indem Sie BAUD durch die gewünschte Baudrate ersetzen. Die Standard-Baudrate beträgt 460800. Weitere Informationen zu den Argumenten von idf.py finden Sie unter idf.py.
Hinweis: Die Option „Flash“ erstellt und flasht das Projekt automatisch, daher ist die Ausführung von „idf.py build“ nicht erforderlich.
Probleme beim Flashen? Wenn beim Ausführen des angegebenen Befehls Fehler wie „Verbindungsfehler“ auftreten, kann dies mehrere Ursachen haben. Einer der Gründe könnten Probleme mit esptool.py sein, dem Dienstprogramm, das vom Build-System aufgerufen wird, um den Chip zurückzusetzen, mit dem ROM-Bootloader zu interagieren und die Firmware zu flashen. Eine einfache Lösung ist das unten beschriebene manuelle Zurücksetzen. Sollte dies nicht helfen, finden Sie weitere Informationen zu möglichen Problemen in der Fehlerbehebung.
esptool.py setzt ESP32 automatisch zurück, indem es die DTR- und RTS-Steuerleitungen des USB-zu-Seriell-Konverterchips, z. B. FTDI oder CP210x, aktiviert (weitere Informationen finden Sie unter „Serielle Verbindung mit ESP32 herstellen“). Die DTR- und RTS-Steuerleitungen sind wiederum mit den GPIO0- und CHIP_PU (EN)-Pins von ESP32 verbunden, wodurch Änderungen in der LautstärketagDie DTR- und RTS-Levels booten ESP32 in den Firmware-Download-Modus. Als BeispielampSehen Sie sich das Schema für die ESP32 DevKitC-Entwicklungsplatine an.
Im Allgemeinen sollten Sie mit den offiziellen esp-idf-Entwicklungsboards keine Probleme haben. Allerdings kann esptool.py Ihre Hardware in den folgenden Fällen nicht automatisch zurücksetzen:
· Ihre Hardware verfügt nicht über die mit GPIO0 und CHIP_PU verbundenen DTR- und RTS-Leitungen. · Die DTR- und RTS-Leitungen sind unterschiedlich konfiguriert. · Es gibt überhaupt keine solchen seriellen Steuerleitungen.
Abhängig von der Art Ihrer Hardware ist es möglicherweise auch möglich, Ihr ESP32-Board manuell in den Firmware-Download-Modus zu versetzen (zurückzusetzen).
· Für Entwicklungsboards von Espressif finden Sie diese Informationen in den jeweiligen Kurzanleitungen oder Benutzerhandbüchern. Zum BeispielampUm beispielsweise eine ESP-IDF-Entwicklungsplatine manuell zurückzusetzen, halten Sie die Boot-Taste (GPIO0) gedrückt und drücken Sie die EN-Taste (CHIP_PU).
· Versuchen Sie bei anderen Hardwaretypen, GPIO0 herunterzuziehen.
Normalbetrieb Beim Flashen wird ein Ausgabeprotokoll ähnlich dem folgenden angezeigt:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Serieller Port /dev/ttyUSB0 Verbindung wird hergestellt…….._ Chip ist ESP32D0WDQ6 (Revision 0) Funktionen: WiFi, BT, Dual Core, Codierungsschema Keines Kristall ist 40 MHz MAC: 24:0a:c4:05:b9:14 Stub wird hochgeladen… Stub wird ausgeführt… Stub wird ausgeführt… Baudrate wird auf 460800 geändert.
(Fortsetzung auf der nächsten Seite)
Espressif Systems
21. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
(Fortsetzung von der vorherigen Seite) Flash-Größe wird konfiguriert … 3072 Bytes auf 103 komprimiert … Schreiben bei 0x00008000 … (100 %) 3072 Bytes (103 komprimiert) bei 0x00008000 in 0.0 Sekunden geschrieben (effektiv 5962.8 kbit/s) … Hash der Daten verifiziert. 26096 Bytes auf 15408 komprimiert … Schreiben bei 0x00001000 … (100 %) 26096 Bytes (15408 komprimiert) bei 0x00001000 in 0.4 Sekunden geschrieben (effektiv 546.7 kbit/s) … Hash der Daten verifiziert. 147104 Bytes auf 77364 komprimiert… Schreiben bei 0x00010000… (20 %) Schreiben bei 0x00014000… (40 %) Schreiben bei 0x00018000… (60 %) Schreiben bei 0x0001c000… (80 %) Schreiben bei 0x00020000… (100 %) 147104 Bytes (77364 komprimiert) bei 0x00010000 in 1.9 Sekunden geschrieben (effektiv 615,5 kbit/s)… Hash der Daten verifiziert.
Verlassen ... Hard-Reset über RTS-Pin ... Fertig
Wenn bis zum Ende des Flash-Vorgangs keine Probleme auftreten, wird die Karte neu gestartet und die Anwendung „theohello_worldpapplication“ gestartet. Wenn Sie anstelle von idf.py die Eclipse- oder VSCode-IDE verwenden möchten, sehen Sie sich das Eclipse-Plugin und die VSCode-Erweiterung an.
Überwachen Sie die Ausgabe. Um zu überprüfen, ob ohello_worldp tatsächlich ausgeführt wird, geben Sie idf.py -p PORT monitor ein (vergessen Sie nicht, PORT durch den Namen Ihres seriellen Ports zu ersetzen).
Dieser Befehl startet die Anwendung IDF Monitor:
$ idf.py -p Monitor. Ausführen von idf_monitor im Verzeichnis […]/esp/hello_world/build. Ausführen von „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf“… – idf_monitor ein 115200 —– Beenden: Strg+] | Menü: Strg+T | Hilfe: Strg+T gefolgt von Strg+H –ets 8. Juni 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8. Juni 2016 00:22:57 …
Nachdem Sie die Start- und Diagnoseprotokolle nach oben gescrollt haben, sollte die Anwendung „Hello world!“ ausgedruckt sehen.
… Hallo Welt! Neustart in 10 Sekunden… Dies ist ein esp32-Chip mit 2 CPU-Kernen, WiFi/BT/BLE, Siliziumrevision 1, 2 MB externem Flash. Minimale freie Heap-Größe: 298968 Bytes. Neustart in 9 Sekunden… Neustart in 8 Sekunden… Neustart in 7 Sekunden…
Verwenden Sie zum Beenden des IDF-Monitors die Tastenkombination Strg+].
Espressif Systems
22. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Wenn der IDF-Monitor kurz nach dem Upload ausfällt oder Sie anstelle der oben genannten Meldungen zufällige Fehler wie die unten angezeigten sehen, verwendet Ihre Platine wahrscheinlich einen 26-MHz-Quarz. Die meisten Entwicklungsplatinen verwenden 40 MHz, daher verwendet ESP-IDF diese Frequenz als Standardwert.
Wenn ein solches Problem auftritt, gehen Sie wie folgt vor: 1. Beenden Sie den Monitor. 2. Gehen Sie zurück zu menuconfig. 3. Gehen Sie zu Komponentenkonfiguration > Hardwareeinstellungen > Haupt-XTAL-Konfiguration > Haupt-XTAL-Frequenz und ändern Sie CONFIG_XTAL_FREQ_SEL auf 26 MHz. 4. Erstellen und flashen Sie die Anwendung anschließend erneut.
In der aktuellen Version von ESP-IDF sind die wichtigsten von ESP32 unterstützten XTAL-Frequenzen wie folgt:
· 26 MHz · 40 MHz
Hinweis: Sie können Erstellen, Flashen und Überwachen in einem Schritt kombinieren, indem Sie Folgendes ausführen: idf.py -p PORT flash monitor
Siehe auch: · IDF-Monitor für praktische Tastenkombinationen und weitere Einzelheiten zur Verwendung des IDF-Monitors. · idf.py für eine vollständige Referenz der Befehle und Optionen von idf.py.
Das ist alles, was Sie für den Einstieg in ESP32 benötigen! Jetzt können Sie weitere Beispiele ausprobieren.ampDateien oder beginnen Sie direkt mit der Entwicklung Ihrer eigenen Anwendungen.
Wichtig: Einige der Exampdateien unterstützen ESP32 nicht, da die erforderliche Hardware nicht in ESP32 enthalten ist und daher nicht unterstützt werden kann. Wenn Sie ein Ex bauenample, bitte überprüfen Sie die README file für die Tabelle Unterstützte Ziele. Wenn diese inklusive ESP32-Ziel vorhanden ist oder die Tabelle überhaupt nicht existiert, wird das Example wird auf ESP32 funktionieren.
Zusätzliche Tipps
Berechtigungsprobleme /dev/ttyUSB0 Bei einigen Linux-Distributionen kann beim Flashen des ESP32 die Fehlermeldung „Port /dev/ttyUSB0 konnte nicht geöffnet werden“ auftreten. Dies kann durch Hinzufügen des aktuellen Benutzers zur Dialout-Gruppe behoben werden.
Python-Kompatibilität: ESP-IDF unterstützt Python 3.7 oder neuer. Es wird empfohlen, Ihr Betriebssystem auf eine aktuelle Version zu aktualisieren, die diese Anforderung erfüllt. Weitere Optionen sind die Installation von Python aus Quellen oder die Verwendung eines Python-Versionsverwaltungssystems wie pyenv.
Beginnen Sie mit dem Board Support Package. Um das Prototyping auf einigen Entwicklungsboards zu beschleunigen, können Sie Board Support Packages (BSPs) verwenden, die die Initialisierung eines bestimmten Boards auf wenige Funktionsaufrufe reduzieren.
Espressif Systems
23. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Ein BSP unterstützt typischerweise alle Hardwarekomponenten auf dem Entwicklungsboard. Neben der Pinbelegung und Initialisierungsfunktionen enthält ein BSP auch Treiber für externe Komponenten wie Sensoren, Displays, Audio-Codecs usw. Die BSPs werden über den IDF Component Manager verteilt und sind daher in der IDF Component Registry zu finden. Hier ein BeispielampAnleitung zum Hinzufügen von ESP-WROVER-KIT BSP zu Ihrem Projekt: idf.py add-dependency esp_wrover_kit
Mehr ExampInformationen zur BSP-Nutzung finden Sie in BSP examples-Ordner.
Zugehörige Dokumente Für fortgeschrittene Benutzer, die den Installationsprozess anpassen möchten: · Aktualisieren von ESP-IDF-Tools unter Windows · Herstellen einer seriellen Verbindung mit ESP32 · Eclipse-Plugin · VSCode-Erweiterung · IDF-Monitor
Aktualisieren von ESP-IDF-Tools unter Windows
Installieren Sie ESP-IDF-Tools mithilfe eines Skripts. Wechseln Sie in der Windows-Eingabeaufforderung in das Verzeichnis, in dem ESPIDF installiert ist. Führen Sie dann Folgendes aus:
install.bat
Wechseln Sie für Powershell in das Verzeichnis, in dem ESP-IDF installiert ist. Führen Sie dann Folgendes aus:
install.ps1
Dadurch werden die für die Verwendung von ESP-IDF erforderlichen Tools heruntergeladen und installiert. Wenn die entsprechende Version des Tools bereits installiert ist, wird keine Aktion ausgeführt. Die Tools werden heruntergeladen und in einem während des Installationsprozesses der ESP-IDF-Tools angegebenen Verzeichnis installiert. Standardmäßig ist dies C:\Benutzer\Benutzername.espressif.
Fügen Sie ESP-IDF-Tools mithilfe eines Exportskripts zu PATH hinzu. Das Installationsprogramm für ESP-IDF-Tools erstellt eine Startmenüverknüpfung für die ESP-IDF-Eingabeaufforderung. Diese Verknüpfung öffnet ein Eingabeaufforderungsfenster, in dem alle Tools bereits vorhanden sind.
verfügbar. In manchen Fällen möchten Sie ESP-IDF in einem Eingabeaufforderungsfenster verwenden, das nicht über diese Verknüpfung gestartet wurde. Befolgen Sie in diesem Fall die folgenden Anweisungen, um ESP-IDF-Tools zu PATH hinzuzufügen. Wechseln Sie in der Eingabeaufforderung, in der Sie ESP-IDF verwenden möchten, in das Verzeichnis, in dem ESP-IDF installiert ist, und führen Sie dann export.bat aus:
cd %userprofile%espesp-idf export.bat
Alternativ können Sie in der Powershell, in der Sie ESP-IDF verwenden müssen, in das Verzeichnis wechseln, in dem ESP-IDF installiert ist, und dann export.ps1 ausführen:
cd ~/esp/esp-idf export.ps1
Wenn dies erledigt ist, stehen die Tools in dieser Eingabeaufforderung zur Verfügung.
Herstellen einer seriellen Verbindung mit ESP32. Dieser Abschnitt enthält eine Anleitung zum Herstellen einer seriellen Verbindung zwischen ESP32 und PC.
Espressif Systems
24. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
ESP32 mit PC verbinden. Verbinden Sie die ESP32-Platine über ein USB-Kabel mit dem PC. Falls der Gerätetreiber nicht automatisch installiert wird, suchen Sie den USB-Seriell-Konverterchip auf Ihrer ESP32-Platine (oder einem externen Konverter-Dongle), suchen Sie im Internet nach Treibern und installieren Sie diese. Nachfolgend finden Sie eine Liste der USB-Seriell-Konverterchips, die auf den meisten ESP32-Platinen von Espressif installiert sind, zusammen mit Links zu den Treibern:
· CP210x: CP210x USB-zu-UART-Bridge-VCP-Treiber · FTDI: FTDI Virtual COM Port-Treiber Bitte lesen Sie im Benutzerhandbuch der Karte nach, um den verwendeten USB-zu-Seriell-Konverterchip zu finden. Die oben genannten Treiber dienen in erster Linie als Referenz. Normalerweise sollten die Treiber im Lieferumfang eines Betriebssystems enthalten sein und beim Anschließen der Karte an den PC automatisch installiert werden.
Port unter Windows prüfen Überprüfen Sie die Liste der erkannten COM-Ports im Windows-Geräte-Manager. Trennen Sie den ESP32 und schließen Sie ihn wieder an, um zu überprüfen, welcher Port aus der Liste verschwindet und dann wieder angezeigt wird. Die folgenden Abbildungen zeigen den seriellen Port für ESP32 DevKitC und ESP32 WROVER KIT
Abb. 13: USB-zu-UART-Brücke des ESP32-DevKitC im Windows-Geräte-Manager
Port unter Linux und macOS prüfen Um den Gerätenamen für den seriellen Port Ihres ESP32-Boards (oder externen Konverter-Dongles) zu prüfen, führen Sie diesen Befehl zweimal aus, zuerst mit ausgestecktem Board/Dongle, dann mit eingestecktem. Der Port, der beim zweiten Mal erscheint, ist der, den Sie benötigen: Linux
ls /dev/tty*
macOS
Espressif Systems
25. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 14: Zwei USB-Seriell-Ports des ESP-WROVER-KIT im Windows-Geräte-Manager
Espressif Systems
26. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
ls /dev/cu.* Hinweis: macOS-Benutzer: Wenn der serielle Port nicht angezeigt wird, überprüfen Sie, ob die USB-/Seriellen-Treiber installiert sind. Links zu Treibern finden Sie im Abschnitt „ESP32 mit PC verbinden“. Für macOS High Sierra (10.13) müssen Sie das Laden der Treiber möglicherweise auch explizit zulassen. Öffnen Sie Systemeinstellungen -> Sicherheit & Datenschutz -> Allgemein und prüfen Sie, ob hier eine Meldung zu „oSystem Software vom Entwickler lp“ angezeigt wird, wobei der Entwicklername Silicon Labs oder FTDI lautet.
Benutzer zur Dialout-Gruppe unter Linux hinzufügen Der aktuell angemeldete Benutzer sollte Lese- und Schreibzugriff auf die serielle Schnittstelle über USB haben. Bei den meisten Linux-Distributionen geschieht dies durch Hinzufügen des Benutzers zur Dialout-Gruppe mit dem folgenden Befehl:
sudo usermod -a -G dialout $USER
Unter Arch Linux erfolgt dies durch Hinzufügen des Benutzers zur uucp-Gruppe mit dem folgenden Befehl:
sudo usermod -a -G uucp $USER
Stellen Sie sicher, dass Sie sich erneut anmelden, um Lese- und Schreibberechtigungen für die serielle Schnittstelle zu aktivieren.
Überprüfen Sie nun, ob die serielle Verbindung funktioniert. Sie können dies mit einem seriellen Terminalprogramm tun, indem Sie prüfen, ob nach dem Zurücksetzen des ESP32 eine Ausgabe auf dem Terminal angezeigt wird. Die Standard-Konsolen-Baudrate des ESP32 beträgt 115200.
Windows und Linux In diesem BeispielampWir verwenden den PuTTY SSH-Client, der sowohl für Windows als auch für Linux verfügbar ist. Sie können andere serielle Programme verwenden und die Kommunikationsparameter wie unten beschrieben einstellen. Starten Sie das Terminal und stellen Sie den identifizierten seriellen Port ein. Baudrate = 115200 (ggf. ändern Sie diese auf die Standard-Baudrate des verwendeten Chips), Datenbits = 8, Stoppbits = 1 und Parität = N. Nachfolgend sind Beispiele aufgeführt.ampHier sind Screenshots zur Einstellung des Ports und der Übertragungsparameter (kurz 115200-8-1-N) unter Windows und Linux. Denken Sie daran, genau denselben seriellen Port auszuwählen, den Sie oben angegeben haben. Öffnen Sie anschließend den seriellen Port im Terminal und prüfen Sie, ob ein von ESP32 ausgedrucktes Protokoll angezeigt wird. Der Inhalt des Protokolls hängt von der auf ESP32 geladenen Anwendung ab, siehe Beispiel.ample-Ausgabe.
Hinweis: Schließen Sie das serielle Terminal, nachdem Sie überprüft haben, dass die Kommunikation funktioniert. Wenn Sie die Terminalsitzung geöffnet lassen, ist der serielle Port später für das Hochladen der Firmware nicht mehr zugänglich.
macOS Um Ihnen die Installation eines seriellen Terminalprogramms zu ersparen, bietet macOS den Befehl screen. · Führen Sie wie unter „Port unter Linux und macOS prüfen“ beschrieben Folgendes aus:
ls /dev/cu.* · Sie sollten eine ähnliche Ausgabe sehen:
/dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· Die Ausgabe variiert je nach Typ und Anzahl der an Ihren PC angeschlossenen Karten. Wählen Sie dann den Gerätenamen Ihrer Karte aus und führen Sie Folgendes aus (ändern Sie bei Bedarf o115200p auf die Standard-Baudrate des verwendeten Chips):
screen /dev/cu.device_name 115200 Ersetzen Sie device_name durch den Namen, der beim Ausführen von ls /dev/cu.* gefunden wurde.
Espressif Systems
27. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 15: Einrichten der seriellen Kommunikation in PuTTY unter Windows
Espressif Systems
28. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Abb. 16: Einrichten der seriellen Kommunikation in PuTTY unter Linux
Espressif Systems
29. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
· Sie suchen nach einem Protokoll, das auf dem Bildschirm angezeigt wird. Der Protokollinhalt hängt von der auf ESP32 geladenen Anwendung ab, siehe Beispielample-Ausgabe. Um die Bildschirmsitzung zu beenden, geben Sie Strg-A + ein.
Hinweis: Vergessen Sie nicht, die Bildschirmsitzung zu beenden, nachdem Sie überprüft haben, ob die Kommunikation funktioniert. Andernfalls schließen Sie einfach das Terminalfenster, da der serielle Port später nicht mehr für das Hochladen der Firmware zugänglich ist.
Example Ausgabe Ein exampDas Protokoll wird unten angezeigt. Setzen Sie das Board zurück, wenn Sie nichts sehen. ets 8. Juni 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8. Juni 2016 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage Bootloader I (45) Boot: Kompilierzeit 18:48:10
…
Wenn Sie eine lesbare Protokollausgabe sehen, bedeutet dies, dass die serielle Verbindung funktioniert und Sie bereit sind, mit der Installation fortzufahren und schließlich die Anwendung auf ESP32 hochzuladen.
Hinweis: Bei einigen seriellen Port-Verdrahtungskonfigurationen müssen die seriellen RTS- und DTR-Pins im Terminalprogramm deaktiviert werden, bevor der ESP32 bootet und serielle Ausgabe erzeugt. Dies hängt von der Hardware selbst ab. Die meisten Entwicklungsboards (einschließlich aller Espressif-Boards) haben dieses Problem nicht. Das Problem tritt auf, wenn RTS und DTR direkt mit den EN- und GPIO0-Pins verbunden sind. Weitere Informationen finden Sie in der esptool-Dokumentation.
Wenn Sie bei der Installation der Software für die ESP32-Entwicklung von Schritt 5. Erste Schritte mit ESP-IDF hierher gekommen sind, können Sie mit Schritt 5. Erste Schritte mit ESP-IDF fortfahren.
IDF Monitor IDF Monitor ist ein serielles Terminalprogramm, das serielle Daten zum und vom seriellen Port des Zielgeräts überträgt. Es bietet außerdem einige IDF-spezifische Funktionen. IDF Monitor kann aus einem IDF-Projekt heraus durch Ausführen von idf.py monitor gestartet werden.
Tastenkombinationen: Verwenden Sie für eine einfache Interaktion mit IDF Monitor die in der Tabelle angegebenen Tastenkombinationen.
Espressif Systems
30. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Tastenkombination Strg+] Strg+T
· Strg+T
· Strg+] · Strg+P
· Strg+R
· Strg+F
· Strg+A (oder A)
· Strg+Y
· Strg+L
· Strg+I (oder I)
· Strg+H (oder H)
· Strg+X (oder X)
Strg+C
Aktion
Beschreibung
Beenden Sie das Programm Menü-Escape-Taste Senden Sie das Menüzeichen selbst an die Fernbedienung
Senden Sie das Exit-Zeichen selbst an die Remote
Setzen Sie das Ziel in den Bootloader zurück, um die App über die RTS-Leitung anzuhalten
Zielplatine über RTS zurücksetzen
Erstellen und flashen Sie das Projekt
Erstellen und flashen Sie nur die App
Protokollausgabedruck auf dem Bildschirm stoppen/fortsetzen
Stoppen/Fortsetzen der Protokollausgabe gespeichert in file
Stopp-/Fortsetzungszeitamps
Alle Tastaturkürzel anzeigen
Drücken Sie und folgen Sie ihm mit einer der unten angegebenen Tasten.
Setzt das Ziel über die RTS-Leitung (sofern angeschlossen) in den Bootloader zurück, sodass die Karte nicht ausgeführt wird. Nützlich, wenn Sie auf den Start eines anderen Geräts warten müssen. Setzt die Zielkarte zurück und startet die Anwendung über die RTS-Leitung (sofern angeschlossen) neu.
Pausiert idf_monitor, um das Projekt-Flash-Ziel auszuführen, und setzt dann idf_monitor fort. Jede geänderte Quelle files werden neu kompiliert und anschließend neu geflasht. Das Ziel encrypted-flash wird ausgeführt, wenn idf_monitor mit dem Argument -E gestartet wurde. Pausiert idf_monitor, um das app-flash-Ziel auszuführen, und setzt dann idf_monitor fort. Ähnlich wie das Flash-Ziel, aber nur die Haupt-App wird erstellt und neu geflasht. Das Ziel encrypted-app-flash wird ausgeführt, wenn idf_monitor mit dem Argument -E gestartet wurde. Verwirft alle eingehenden seriellen Daten während der Aktivierung. Ermöglicht das schnelle Anhalten und Überprüfen der Protokollausgabe, ohne den Monitor zu beenden. Erstellt eine file im Projektverzeichnis und die Ausgabe wird dorthin geschrieben file bis dies mit der gleichen Tastenkombination deaktiviert wird (oder IDF Monitor beendet wird). IDF Monitor kann eine Zeitangabe druckenamp am Anfang jeder Zeile. Die Zeitamp Format kann durch –timest geändert werdenamp-format-Befehlszeilenargument.
Beenden Sie das Programm
Laufende Anwendung unterbrechen
Hält den IDF-Monitor an und führt den GDB-Projektdebugger aus, um die Anwendung zur Laufzeit zu debuggen. Dazu muss die Option :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME aktiviert sein.
Alle gedrückten Tasten außer Strg-] und Strg-T werden über die serielle Schnittstelle gesendet.
IDF-spezifische Funktionen
Automatische Adressdekodierung: Immer wenn ESP-IDF eine Hexadezimalcodeadresse der Form 0x4_______ ausgibt, verwendet IDF Monitor addr2line_, um die Position im Quellcode nachzuschlagen und den Funktionsnamen zu finden.
Wenn eine ESP-IDF-App abstürzt und in Panik gerät, wird ein Register-Dump und ein Backtrace erstellt, etwa wie folgt:
Espressif Systems
31. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Guru Meditation Fehler vom Typ StoreProhibited ist auf Kern 0 aufgetreten. Ausnahme war
unbehandelt.
Register-Dump:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0 x 00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 URSACHE:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0 x 00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor fügt dem Dump weitere Details hinzu:
Guru Meditation Fehler vom Typ StoreProhibited ist auf Kern 0 aufgetreten. Ausnahme war
unbehandelt.
Register-Dump:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: do_something_to_crash bei /home/gus/esp/32/idf/examples/erste-schritte/
hallo_welt/main/./hello_world_main.c:57
(eingebettet von) inner_dont_crash bei /home/gus/esp/32/idf/examples/erste-schritte/hallo_
Welt/Haupt/./Hallo_Welt_Haupt.c:52
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0 x 00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 URSACHE:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0 x 00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (inline by) inner_dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash bei /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main bei /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task bei /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
Um jede Adresse zu dekodieren, führt IDF Monitor im Hintergrund den folgenden Befehl aus: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Hinweis: Setzen Sie die Umgebungsvariable ESP_MONITOR_DECODE auf 0 oder rufen Sie idf_monitor.py mit einer bestimmten Befehlszeile auf
Espressif Systems
32. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Option: idf_monitor.py –disable-address-decoding zum Deaktivieren der Adressdekodierung.
Ziel beim Verbinden zurücksetzen: Standardmäßig setzt IDF Monitor das Ziel zurück, wenn eine Verbindung hergestellt wird. Das Zurücksetzen des Zielchips erfolgt über die seriellen Schnittstellen DTR und RTS. Um zu verhindern, dass IDF Monitor das Ziel beim Verbinden automatisch zurücksetzt, rufen Sie IDF Monitor mit der Option –no-reset auf (z. B. idf_monitor.py –no-reset).
Hinweis: Die Option –no-reset wendet dasselbe Verhalten an, auch wenn IDF Monitor mit einem bestimmten Port verbunden wird (z. B. idf.py monitor –no-reset -p [PORT]).
Starten von GDB mit GDBStub GDBStub ist eine nützliche Laufzeit-Debugging-Funktion, die auf dem Zielsystem ausgeführt wird und sich über die serielle Schnittstelle mit dem Host verbindet, um Debug-Befehle zu empfangen. GDBStub unterstützt Befehle wie das Lesen von Speicher und Variablen, das Untersuchen von Call-Stack-Frames usw. Obwohl GDBStub weniger vielseitig ist als JTAG Debuggen, es erfordert keine spezielle Hardware (wie ein JTAG zur USB-Brücke), da die Kommunikation vollständig über den seriellen Port erfolgt. Ein Ziel kann so konfiguriert werden, dass GDBStub im Hintergrund ausgeführt wird, indem CONFIG_ESP_SYSTEM_PANIC zur Laufzeit auf GDBStub gesetzt wird. GDBStub läuft im Hintergrund, bis eine Strg+C-Nachricht über den seriellen Port gesendet wird und GDBStub das Programm unterbricht (d. h. die Ausführung stoppt), sodass GDBStub Debug-Befehle verarbeiten kann. Außerdem kann der Panikhandler so konfiguriert werden, dass GDBStub bei einem Absturz ausgeführt wird, indem CONFIG_ESP_SYSTEM_PANIC auf GDBStub bei Panik gesetzt wird. Wenn ein Absturz auftritt, gibt GDBStub ein spezielles Zeichenfolgenmuster über den seriellen Port aus, um anzuzeigen, dass es ausgeführt wird. In beiden Fällen (d. h. beim Senden der Strg+C-Nachricht oder beim Empfangen des speziellen Zeichenfolgenmusters) startet IDF Monitor automatisch GDB, damit der Benutzer Debug-Befehle senden kann. Nachdem GDB beendet wurde, wird das Ziel über die serielle RTS-Leitung zurückgesetzt. Wenn diese Leitung nicht verbunden ist, können Benutzer ihr Ziel zurücksetzen (durch Drücken der Reset-Taste des Boards).
Hinweis: Im Hintergrund führt IDF Monitor den folgenden Befehl aus, um GDB zu starten:
xtensa-esp32-elf-gdb -ex „Seriellen Baudwert BAUD einstellen“ -ex „Remote-PORT als Ziel festlegen“ -ex build/PROJECT.elf unterbrechen: idf_target: „Hallo NAME-Chip“
Der IDF-Monitor zur Ausgabefilterung kann als idf.py monitor –print-filter=”xyz” aufgerufen werden, wobei –print-filter der Parameter für die Ausgabefilterung ist. Der Standardwert ist eine leere Zeichenfolge, was bedeutet, dass alles gedruckt wird.
Einschränkungen hinsichtlich des zu druckenden Inhalts können als eine Reihe vontag>: Gegenstände, bei denentag> ist die tag Zeichenfolge und ist ein Zeichen aus der Menge {N, E, W, I, D, V, *}, das sich auf eine Ebene für die Protokollierung bezieht.
Zum Beispielample, PRINT_FILTER=”tag1:W“ stimmt mit den mit ESP_LOGW(„tag1“, …) oder auf niedrigerer Ausführlichkeitsebene, d. h. ESP_LOGE(“tag1″, …). Ohne Angabe eines oder die Verwendung von * setzt standardmäßig die Ebene „Ausführlich“.
Hinweis: Verwenden Sie die primäre Protokollierung, um nicht benötigte Ausgaben über die Protokollierungsbibliothek bei der Kompilierung zu deaktivieren. Die Ausgabefilterung mit dem IDF-Monitor ist eine sekundäre Lösung, mit der Sie die Filteroptionen anpassen können, ohne die Anwendung neu kompilieren zu müssen.
Ihre App tags darf keine Leerzeichen, Sternchen * oder Doppelpunkte enthalten: um mit der Ausgabefilterfunktion kompatibel zu sein.
Wenn auf die letzte Zeile der Ausgabe in Ihrer App kein Wagenrücklauf folgt, kann die Ausgabefilterung durcheinander geraten. Das bedeutet, dass der Monitor die Zeile ausgibt und später feststellt, dass sie nicht hätte geschrieben werden sollen. Dieses Problem ist bekannt und kann vermieden werden, indem immer ein Wagenrücklauf eingefügt wird (insbesondere, wenn unmittelbar danach keine Ausgabe erfolgt).
Espressif Systems
33. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
ExampDateien mit Filterregeln:
· * kann verwendet werden, um jedes tags. Allerdings ist die Zeichenfolge PRINT_FILTER=”*:I tag1:E“ in Bezug auf tag1 druckt nur Fehler, weil die Regel für tag1 hat eine höhere Priorität als die Regel für *.
· Die Standardregel (leer) ist gleichbedeutend mit *:V, da sie mit jedem übereinstimmt tag Auf der Ebene „Ausführlich“ oder niedriger bedeutet dies, dass alles übereinstimmt.
· „*:N“ unterdrückt nicht nur die Ausgaben von Protokollierungsfunktionen, sondern auch die von printf usw. erstellten Ausdrucke. Um dies zu vermeiden, verwenden Sie *:E oder eine höhere Ausführlichkeitsstufe.
· Regeln "tag1:V”, “tag1:v”, “tag1:”, “tag1:*“ und „tag1“ sind gleichwertig. · Regel „tag1:W tag1:E“ ist gleichbedeutend mit „tag1:E“, weil jedes weitere Auftreten des gleichen tag
Name überschreibt den vorherigen. · Regel „tag1:I tag2:W“ druckt nur tag1 auf der Ausführlichkeitsstufe „Info“ oder niedriger und tag2 bei der Warnung
Ausführlichkeitsstufe oder niedriger. · Regel „tag1:I tag2:W tag3:N“ ist im Wesentlichen gleichwertig mit dem vorherigen, weil tag3:N gibt an
Das tag3 soll nicht gedruckt werden. · tag3:N in der Regel „tag1:I tag2:W tag3:N *:V“ ist aussagekräftiger, da ohne tag3:N die
tag3 Meldungen hätten gedruckt werden können; die Fehler für tag1 und tag2 wird mit der angegebenen (oder einer niedrigeren) Ausführlichkeitsstufe gedruckt und alles andere wird standardmäßig gedruckt.
Ein komplexeres Filterbeispielample Der folgende Protokollausschnitt wurde ohne Filteroptionen abgerufen:
load:0x40078000,len:13564 entry 0x40078d4c E (31) esp_image: Image bei 0x30000 hat ungültiges Magic Byte W (31) esp_image: Image bei 0x30000 hat ungültigen SPI-Modus 255 E (39) boot: Factory-App-Partition ist nicht bootfähig I (568) cpu_start: Pro-CPU hoch. I (569) heap_init: Initialisierung. RAM für dynamische Zuweisung verfügbar: I (603) cpu_start: Pro-CPU-Startbenutzercode D (309) light_driver: [light_init, 74]:Status: 1, Modus: 2 D (318) vfs: esp_vfs_register_fd_range ist erfolgreich für Bereich <54; 64) und VFS-ID 1 I (328) WLAN: WLAN-Treiber-Task: 3ffdbf84, Prio: 23, Stack: 4096, Core=0
Die erfasste Ausgabe für die Filteroptionen PRINT_FILTER=”wifi esp_image:E light_driver:I” ist unten angegeben:
E (31) esp_image: Bild bei 0x30000 hat ungültiges Magic Byte I (328) wifi: WLAN-Treiber-Task: 3ffdbf84, Prio:23, Stack:4096, Core=0
Die Optionen „PRINT_FILTER=“light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V“ zeigen folgende Ausgabe:
load:0x40078000,len:13564 entry 0x40078d4c I (569) heap_init: Initialisierung. RAM verfügbar für dynamische Zuweisung: D (309) light_driver: [light_init, 74]:status: 1, mode: 2
Bekannte Probleme mit IDF Monitor
Unter Windows beobachtete Probleme
· Aufgrund von Einschränkungen der Windows-Konsole funktionieren die Pfeiltasten sowie einige andere Tasten in GDB nicht. · Gelegentlich kann es bei der Ausführung von oidf.pypex zu einer Verzögerung von bis zu 30 Sekunden kommen, bevor der IDF-Monitor fortgesetzt wird. · Bei der Ausführung von ogdbpis kann es zu einer kurzen Verzögerung kommen, bevor die Kommunikation mit dem GDBStub beginnt.
Espressif Systems
34. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte Standard-Toolchain-Setup für Linux und macOS
Installation Schritt für Schritt Dies ist eine detaillierte Roadmap, die Sie durch den Installationsprozess führt.
Einrichten der Entwicklungsumgebung Dies sind die Schritte zum Einrichten des ESP-IDF für Ihren ESP32. · Schritt 1. Voraussetzungen installieren · Schritt 2. ESP-IDF abrufen · Schritt 3. Tools einrichten · Schritt 4. Umgebungsvariablen einrichten · Schritt 5. Erste Schritte mit ESP-IDF
Schritt 1. Voraussetzungen installieren: Um ESP-IDF mit dem ESP32 verwenden zu können, müssen Sie einige Softwarepakete basierend auf Ihrem Betriebssystem installieren. Diese Installationsanleitung hilft Ihnen bei der Installation auf Linux- und macOS-basierten Systemen.
Für Linux-Benutzer: Zum Kompilieren mit ESP-IDF benötigen Sie die folgenden Pakete. Der auszuführende Befehl hängt von der verwendeten Linux-Distribution ab:
· Ubuntu und Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 & 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 wird weiterhin unterstützt, aber für eine bessere Benutzererfahrung wird CentOS Version 8 empfohlen. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Hinweis: · Für die Verwendung mit ESP-IDF ist CMake Version 3.16 oder neuer erforderlich. Führen Sie otools/idf_tools.py install cmakep aus, um eine geeignete Version zu installieren, falls Ihr Betriebssystem keine hat. · Wenn Ihre Linux-Distribution in der obigen Liste nicht aufgeführt ist, lesen Sie bitte in der Dokumentation nach, welchen Befehl Sie für die Paketinstallation verwenden müssen.
Für macOS-Benutzer verwendet ESP-IDF die unter macOS standardmäßig installierte Python-Version. · Installieren Sie den CMake- und Ninja-Build: Wenn Sie über HomeBrew verfügen, können Sie Folgendes ausführen: brew install cmake ninja dfu-util Wenn Sie über MacPorts verfügen, können Sie Folgendes ausführen: sudo port install cmake ninja dfu-util Andernfalls finden Sie Downloads zur macOS-Installation auf den Homepages von CMake und Ninja.
Espressif Systems
35. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
· Es wird dringend empfohlen, für schnellere Builds auch ccache zu installieren. Wenn Sie HomeBrew haben, können Sie dies über brew install ccache oder sudo port install ccache auf MacPorts tun.
Hinweis: Wenn während eines beliebigen Schritts ein Fehler wie dieser angezeigt wird: xcrun: Fehler: ungültiger aktiver Entwicklerpfad (/Library/Developer/CommandLineTools), xcrun fehlt unter: /Library/Developer/CommandLineTools/usr/bin/xcrun
Anschließend müssen Sie die XCode-Befehlszeilentools installieren, um fortzufahren. Sie können diese installieren, indem Sie xcode-select –install ausführen.
Benutzer von Apple M1 Wenn Sie die Apple M1-Plattform verwenden und ein Fehler wie dieser angezeigt wird: WARNUNG: Verzeichnis für Tool xtensa-esp32-elf Version esp-2021r2-patch3-8.4.0 ist vorhanden, aber Tool wurde nicht gefunden. FEHLER: Tool xtensa-esp32-elf hat keine installierten Versionen. Führen Sie „install.sh“ aus, um es zu installieren.
oder: zsh: falscher CPU-Typ in der ausführbaren Datei: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Anschließend müssen Sie Apple Rosetta 2 installieren, indem Sie /usr/sbin/softwareupdate –install-rosetta –agree-to-license ausführen
Python 3 installieren Basierend auf den Versionshinweisen zu macOS Catalina 10.15 wird die Verwendung von Python 2.7 nicht empfohlen und Python 2.7 wird in zukünftigen Versionen von macOS nicht standardmäßig enthalten sein. Überprüfen Sie, welches Python Sie derzeit haben: python –version
Wenn die Ausgabe Python 2.7.17 lautet, ist Ihr Standardinterpreter Python 2.7. Überprüfen Sie in diesem Fall, ob Python 3 nicht bereits auf Ihrem Computer installiert ist: python3 –version
Wenn der obige Befehl einen Fehler zurückgibt, bedeutet dies, dass Python 3 nicht installiert ist. Unten ist ein Overview der Schritte zur Installation von Python 3.
· Die Installation mit HomeBrew kann wie folgt erfolgen: brew install python3
· Wenn Sie MacPorts haben, können Sie Folgendes ausführen: sudo port install python38
Schritt 2: ESP-IDF herunterladen. Um Anwendungen für den ESP32 zu erstellen, benötigen Sie die von Espressif im ESP-IDF-Repository bereitgestellten Softwarebibliotheken. Navigieren Sie dazu zu Ihrem Installationsverzeichnis und klonen Sie das Repository mit git clone. Befolgen Sie dabei die unten stehenden Anweisungen für Ihr Betriebssystem. Öffnen Sie das Terminal und führen Sie die folgenden Befehle aus:
Espressif Systems
36. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF wird in ~/esp/esp-idf heruntergeladen. Informationen dazu, welche ESP-IDF-Version in einer bestimmten Situation verwendet werden soll, finden Sie unter ESP-IDF-Versionen.
Schritt 3. Richten Sie die Tools ein. Neben ESP-IDF müssen Sie für Projekte, die ESP32 unterstützen, auch die von ESP-IDF verwendeten Tools installieren, z. B. Compiler, Debugger, Python-Pakete usw. cd ~/esp/esp-idf ./install.sh esp32
oder mit Fish Shell cd ~/esp/esp-idf ./install.fish esp32
Die obigen Befehle installieren nur Tools für ESP32. Wenn Sie Projekte für mehrere Chip-Ziele entwickeln möchten, sollten Sie alle auflisten und beispielsweise ausführenample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
oder mit Fish Shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
Um Tools für alle unterstützten Ziele zu installieren, führen Sie bitte den folgenden Befehl aus: cd ~/esp/esp-idf ./install.sh all
oder mit Fish Shell cd ~/esp/esp-idf ./install.fish all
Hinweis: Für macOS-Benutzer: Wenn bei einem beliebigen Schritt ein Fehler wie dieser angezeigt wird:urlÖffnungsfehler [SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatsprüfung fehlgeschlagen: Lokales Ausstellerzertifikat (_ssl.c:xxx) konnte nicht abgerufen werden
Sie können den Befehl „Install Certificates.command“ im Python-Ordner Ihres Computers ausführen, um Zertifikate zu installieren. Weitere Informationen finden Sie unter Downloadfehler bei der Installation der ESP-IDF-Tools.
Alternative File Downloads Das Tool-Installationsprogramm lädt eine Reihe von files an GitHub-Releases angehängt. Wenn der Zugriff auf GitHub langsam ist, können Sie eine Umgebungsvariable festlegen, um den Espressifns-Downloadserver für GitHub-Asset-Downloads zu bevorzugen.
Hinweis: Diese Einstellung steuert nur einzelne Tools, die von GitHub-Releases heruntergeladen wurden. Sie ändert nicht die URLwird verwendet, um auf alle Git-Repositorys zuzugreifen.
Um den Espressif-Downloadserver bei der Installation von Tools zu bevorzugen, verwenden Sie beim Ausführen von install.sh die folgende Befehlsfolge:
Espressif Systems
37. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Anpassen des Installationspfads der Tools Die in diesem Schritt vorgestellten Skripte installieren die von ESP-IDF benötigten Kompilierungstools im Benutzer-Home-Verzeichnis: $HOME/.espressif unter Linux. Wenn Sie die Tools in einem anderen Verzeichnis installieren möchten, setzen Sie die Umgebungsvariable IDF_TOOLS_PATH, bevor Sie die Installationsskripte ausführen. Stellen Sie sicher, dass Ihr Benutzerkonto über ausreichende Berechtigungen zum Lesen und Schreiben dieses Pfads verfügt. Wenn Sie IDF_TOOLS_PATH ändern, stellen Sie sicher, dass es bei jeder Ausführung des Installationsskripts (install.bat, install.ps1 oder install.sh) und eines Exportskripts (export.bat, export.ps1 oder export.sh) auf den gleichen Wert gesetzt wird.
Schritt 4. Umgebungsvariablen einrichten Die installierten Tools sind noch nicht der Umgebungsvariable PATH hinzugefügt. Um die Tools über die Kommandozeile nutzen zu können, müssen einige Umgebungsvariablen gesetzt werden. ESP-IDF bietet hierfür ein eigenes Skript. Führen Sie im Terminal, in dem Sie ESP-IDF verwenden möchten, Folgendes aus:
. $HOME/esp/esp-idf/export.sh
oder für Fish (erst seit Fish-Version 3.0.0 unterstützt):
. $HOME/esp/esp-idf/export.fish
Beachten Sie das Leerzeichen zwischen dem führenden Punkt und dem Pfad! Wenn Sie esp-idf häufig verwenden möchten, können Sie einen Alias für die Ausführung von export.sh erstellen:
1. Kopieren Sie den folgenden Befehl und fügen Sie ihn in Ihre Shellns Pro einfile (.profile, .bashrc, .zprofile, usw.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Aktualisieren Sie die Konfiguration, indem Sie die Terminalsitzung neu starten oder indem Sie source [Pfad zum Profile],
zum Beispielample, source ~/.bashrc. Jetzt können Sie get_idf ausführen, um die esp-idf-Umgebung in jeder Terminalsitzung einzurichten oder zu aktualisieren. Technisch gesehen können Sie export.sh zu Ihrer Shell hinzufügen.file direkt; dies wird jedoch nicht empfohlen. Dadurch wird die virtuelle IDF-Umgebung in jeder Terminalsitzung aktiviert (auch in solchen, in denen IDF nicht benötigt wird). Dies verfehlt den Zweck der virtuellen Umgebung und beeinträchtigt wahrscheinlich andere Software.
Schritt 5. Erste Schritte mit ESP-IDF. Nachdem nun alle Voraussetzungen erfüllt sind, erfahren Sie im nächsten Abschnitt, wie Sie Ihr erstes Projekt starten. Diese Anleitung unterstützt Sie bei den ersten Schritten mit ESP-IDF. Folgen Sie dieser Anleitung, um ein neues Projekt auf dem ESP32 zu starten und die Geräteausgabe zu erstellen, zu flashen und zu überwachen.
Hinweis: Wenn Sie ESP-IDF noch nicht installiert haben, gehen Sie bitte zur Installation und folgen Sie den Anweisungen, um die gesamte Software zu erhalten, die Sie zur Verwendung dieses Handbuchs benötigen.
Starten Sie ein Projekt Jetzt sind Sie bereit, Ihre Anwendung für ESP32 vorzubereiten. Sie können mit dem Projekt getstarted/hello_world von ex beginnenamples-Verzeichnis in ESP-IDF.
Wichtig: Das ESP-IDF-Build-System unterstützt keine Leerzeichen in den Pfaden zu ESP-IDF oder zu Projekten.
Kopieren Sie das Projekt get-started/hello_world in das Verzeichnis ~/esp:
Espressif Systems
38. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Hinweis: Es gibt eine Reihe von Beispielenample projekte in der examples-Verzeichnis in ESP-IDF. Sie können jedes Projekt wie oben beschrieben kopieren und ausführen. Es ist auch möglich, ex . zu bauenampDateien an Ort und Stelle, ohne sie vorher zu kopieren.
Verbinden Sie nun Ihr ESP32-Board mit dem Computer und prüfen Sie, unter welchem seriellen Port das Board sichtbar ist. Serielle Ports haben folgende Namensmuster:
· Linux: beginnend mit /dev/tty · macOS: beginnend mit /dev/cu. Wenn Sie nicht sicher sind, wie Sie den Namen der seriellen Schnittstelle überprüfen, finden Sie alle Einzelheiten unter „Serielle Verbindung mit ESP32 herstellen“.
Hinweis: Halten Sie den Portnamen bereit, da Sie ihn in den nächsten Schritten benötigen.
Konfigurieren Sie Ihr Projekt. Navigieren Sie zu Ihrem Verzeichnis „hello_world“, legen Sie ESP32 als Ziel fest und führen Sie das Projektkonfigurationsprogramm menuconfig aus. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Nach dem Öffnen eines neuen Projekts sollten Sie zunächst das Ziel mit idf.py set-target esp32 festlegen. Beachten Sie, dass dabei ggf. vorhandene Builds und Konfigurationen im Projekt gelöscht und initialisiert werden. Das Ziel kann in der Umgebungsvariable gespeichert werden, um diesen Schritt zu überspringen. Weitere Informationen finden Sie unter „Zielchip auswählen: set-target“. Wenn die vorherigen Schritte korrekt ausgeführt wurden, erscheint folgendes Menü:
Abb. 17: Projektkonfiguration – Home-Fenster In diesem Menü richten Sie projektspezifische Variablen ein, z. B. den Namen und das Passwort des WLAN-Netzwerks, die Prozessorgeschwindigkeit usw. Das Einrichten des Projekts mit menuconfig kann für „ohello_worldp“ übersprungen werden, da dieses Beispielample läuft mit
Espressif Systems
39. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Standardkonfiguration.
Achtung: Wenn Sie die ESP32-DevKitC-Karte mit dem ESP32-SOLO-1-Modul oder die ESP32-DevKitM-1-Karte mit dem ESP32-MIN1-1(1U)-Modul verwenden, aktivieren Sie bitte den Single-Core-Modus (CONFIG_FREERTOS_UNICORE) in menuconfig, bevor Sie z. B. flashen.amples.
Hinweis: Die Menüfarben können in Ihrem Terminal abweichen. Sie können die Darstellung mit der Option –style ändern. Für weitere Informationen führen Sie bitte idf.py menuconfig –help aus.
Wenn Sie eines der unterstützten Entwicklungsboards verwenden, können Sie Ihre Entwicklung mit dem Board Support Package beschleunigen. Weitere Informationen finden Sie unter „Zusätzliche Tipps“.
Erstellen Sie das Projekt. Erstellen Sie das Projekt, indem Sie Folgendes ausführen:
idf.py-Build
Dieser Befehl kompiliert die Anwendung und alle ESP-IDF-Komponenten und generiert dann den Bootloader, die Partitionstabelle und die Anwendungsbinärdateien.
$ idf.py build. Cmake wird im Verzeichnis /path/to/hello_world/build ausgeführt. „cmake -G Ninja –warn-uninitialized /path/to/hello_world“ wird ausgeführt … Warnung vor nicht initialisierten Werten. – Git gefunden: /usr/bin/git (Version „2.17.0“ gefunden) – Aufgrund der Konfiguration wird eine leere aws_iot-Komponente erstellt – Komponentennamen: … – Komponentenpfade: …
… (mehr Zeilen der Build-Systemausgabe)
[527/527] Generierung von hello_world.bin esptool.py v2.3.1
Projekterstellung abgeschlossen. Führen Sie zum Flashen diesen Befehl aus: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin oder führen Sie „idf.py -p PORT flash“ aus.
Wenn keine Fehler auftreten, wird der Build mit der Generierung der Firmware-Binärdatei .bin abgeschlossen files.
Flashen Sie auf das Gerät. Flashen Sie die Binärdateien, die Sie gerade erstellt haben (bootloader.bin, partition-table.bin und hello_world.bin), auf Ihre ESP32-Platine, indem Sie Folgendes ausführen:
idf.py -p PORT [-b BAUD] blinken
Ersetzen Sie PORT durch den Namen des seriellen Ports Ihres ESP32-Boards. Sie können die Baudrate des Flashers auch ändern, indem Sie BAUD durch die gewünschte Baudrate ersetzen. Die Standard-Baudrate beträgt 460800. Weitere Informationen zu den Argumenten von idf.py finden Sie unter idf.py.
Hinweis: Die Option „Flash“ erstellt und flasht das Projekt automatisch, daher ist die Ausführung von „idf.py build“ nicht erforderlich.
Espressif Systems
40. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Probleme beim Flashen? Wenn beim Ausführen des angegebenen Befehls Fehler wie „Verbindungsfehler“ auftreten, kann dies mehrere Ursachen haben. Einer der Gründe könnten Probleme mit esptool.py sein, dem Dienstprogramm, das vom Build-System aufgerufen wird, um den Chip zurückzusetzen, mit dem ROM-Bootloader zu interagieren und die Firmware zu flashen. Eine einfache Lösung ist das unten beschriebene manuelle Zurücksetzen. Sollte dies nicht helfen, finden Sie weitere Informationen zu möglichen Problemen in der Fehlerbehebung.
esptool.py setzt ESP32 automatisch zurück, indem es die DTR- und RTS-Steuerleitungen des USB-zu-Seriell-Konverterchips, z. B. FTDI oder CP210x, aktiviert (weitere Informationen finden Sie unter „Serielle Verbindung mit ESP32 herstellen“). Die DTR- und RTS-Steuerleitungen sind wiederum mit den GPIO0- und CHIP_PU (EN)-Pins von ESP32 verbunden, wodurch Änderungen in der LautstärketagDie DTR- und RTS-Levels booten ESP32 in den Firmware-Download-Modus. Als BeispielampSehen Sie sich das Schema für die ESP32 DevKitC-Entwicklungsplatine an.
Im Allgemeinen sollten Sie mit den offiziellen esp-idf-Entwicklungsboards keine Probleme haben. Allerdings kann esptool.py Ihre Hardware in den folgenden Fällen nicht automatisch zurücksetzen:
· Ihre Hardware verfügt nicht über die mit GPIO0 und CHIP_PU verbundenen DTR- und RTS-Leitungen. · Die DTR- und RTS-Leitungen sind unterschiedlich konfiguriert. · Es gibt überhaupt keine solchen seriellen Steuerleitungen.
Abhängig von der Art Ihrer Hardware ist es möglicherweise auch möglich, Ihr ESP32-Board manuell in den Firmware-Download-Modus zu versetzen (zurückzusetzen).
· Für Entwicklungsboards von Espressif finden Sie diese Informationen in den jeweiligen Kurzanleitungen oder Benutzerhandbüchern. Zum BeispielampUm beispielsweise eine ESP-IDF-Entwicklungsplatine manuell zurückzusetzen, halten Sie die Boot-Taste (GPIO0) gedrückt und drücken Sie die EN-Taste (CHIP_PU).
· Versuchen Sie bei anderen Hardwaretypen, GPIO0 herunterzuziehen.
Normalbetrieb Beim Flashen wird ein Ausgabeprotokoll ähnlich dem folgenden angezeigt:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Serieller Port /dev/ttyUSB0 Verbindung wird hergestellt…….._ Chip ist ESP32D0WDQ6 (Revision 0) Funktionen: WiFi, BT, Dual Core, Codierungsschema Keines Kristall ist 40 MHz MAC: 24:0a:c4:05:b9:14 Stub wird hochgeladen… Stub wird ausgeführt… Stub wird ausgeführt… Baudrate wird auf 460800 geändert. Flash-Größe konfigurieren … 3072 Bytes auf 103 komprimiert … Schreiben bei 0x00008000 … (100 %) 3072 Bytes (103 komprimiert) bei 0x00008000 in 0.0 Sekunden geschrieben (effektiv 5962.8 kbit/s) … Hash der Daten verifiziert. 26096 Bytes auf 15408 komprimiert … Schreiben bei 0x00001000 … (100 %) 26096 Bytes (15408 komprimiert) bei 0x00001000 in 0.4 Sekunden geschrieben (effektiv 546.7 kbit/s) … Hash der Daten verifiziert. Komprimiert 147104 Bytes auf 77364… Schreiben bei 0x00010000… (20 %) Schreiben bei 0x00014000… (40 %) Schreiben bei 0x00018000… (60 %) Schreiben bei 0x0001c000… (80 %)
(Fortsetzung auf der nächsten Seite)
Espressif Systems
41. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
(Fortsetzung von der vorherigen Seite) Schreiben bei 0x00020000… (100 %). 147104 Bytes (77364 komprimiert) bei 0x00010000 in 1.9 Sekunden geschrieben (effektiv 615,5 kbit/s)… Hash der Daten verifiziert.
Verlassen ... Hard-Reset über RTS-Pin ... Fertig
Wenn bis zum Ende des Flash-Vorgangs keine Probleme auftreten, wird die Karte neu gestartet und die Anwendung „theohello_worldpapplication“ gestartet. Wenn Sie anstelle von idf.py die Eclipse- oder VSCode-IDE verwenden möchten, sehen Sie sich das Eclipse-Plugin und die VSCode-Erweiterung an.
Überwachen Sie die Ausgabe. Um zu überprüfen, ob ohello_worldp tatsächlich ausgeführt wird, geben Sie idf.py -p PORT monitor ein (vergessen Sie nicht, PORT durch den Namen Ihres seriellen Ports zu ersetzen). Dieser Befehl startet die Anwendung IDF Monitor:
$ idf.py -p Monitor. Ausführen von idf_monitor im Verzeichnis […]/esp/hello_world/build. Ausführen von „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf“… – idf_monitor ein 115200 —– Beenden: Strg+] | Menü: Strg+T | Hilfe: Strg+T gefolgt von Strg+H –ets 8. Juni 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8. Juni 2016 00:22:57 …
Nachdem Sie die Start- und Diagnoseprotokolle nach oben gescrollt haben, sollte die Anwendung „Hello world!“ ausgedruckt sehen.
… Hallo Welt! Neustart in 10 Sekunden… Dies ist ein esp32-Chip mit 2 CPU-Kernen, WiFi/BT/BLE, Siliziumrevision 1, 2 MB externem Flash. Minimale freie Heap-Größe: 298968 Bytes. Neustart in 9 Sekunden… Neustart in 8 Sekunden… Neustart in 7 Sekunden…
Um den IDF-Monitor zu beenden, verwenden Sie die Tastenkombination Strg+]. Wenn der IDF-Monitor kurz nach dem Hochladen fehlschlägt oder Sie anstelle der oben genannten Meldungen zufälligen Müll ähnlich dem unten angezeigten sehen, verwendet Ihr Board wahrscheinlich einen 26-MHz-Quarz. Die meisten Entwicklungsboard-Designs verwenden 40 MHz, daher verwendet ESP-IDF diese Frequenz als Standardwert.
Wenn Sie ein solches Problem haben, gehen Sie wie folgt vor:
1. Beenden Sie den Monitor. 2. Gehen Sie zurück zu menuconfig. 3. Gehen Sie zu Komponentenkonfiguration > Hardwareeinstellungen > Haupt-XTAL-Konfiguration > Haupt-XTAL
Frequenz, ändern Sie dann CONFIG_XTAL_FREQ_SEL auf 26 MHz. 4. Erstellen und flashen Sie die Anwendung anschließend erneut.
Espressif Systems
42. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
In der aktuellen Version von ESP-IDF sind die wichtigsten von ESP32 unterstützten XTAL-Frequenzen wie folgt:
· 26 MHz · 40 MHz
Hinweis: Sie können Erstellen, Flashen und Überwachen in einem Schritt kombinieren, indem Sie Folgendes ausführen: idf.py -p PORT flash monitor
Siehe auch: · IDF-Monitor für praktische Tastenkombinationen und weitere Einzelheiten zur Verwendung des IDF-Monitors. · idf.py für eine vollständige Referenz der Befehle und Optionen von idf.py.
Das ist alles, was Sie für den Einstieg in ESP32 benötigen! Jetzt können Sie weitere Beispiele ausprobieren.ampDateien oder beginnen Sie direkt mit der Entwicklung Ihrer eigenen Anwendungen.
Wichtig: Einige der Exampdateien unterstützen ESP32 nicht, da die erforderliche Hardware nicht in ESP32 enthalten ist und daher nicht unterstützt werden kann. Wenn Sie ein Ex bauenample, bitte überprüfen Sie die README file für die Tabelle Unterstützte Ziele. Wenn diese inklusive ESP32-Ziel vorhanden ist oder die Tabelle überhaupt nicht existiert, wird das Example wird auf ESP32 funktionieren.
Zusätzliche Tipps
Berechtigungsprobleme /dev/ttyUSB0 Bei einigen Linux-Distributionen kann beim Flashen des ESP32 die Fehlermeldung „Port /dev/ttyUSB0 konnte nicht geöffnet werden“ auftreten. Dies kann durch Hinzufügen des aktuellen Benutzers zur Dialout-Gruppe behoben werden.
Python-Kompatibilität: ESP-IDF unterstützt Python 3.7 oder neuer. Es wird empfohlen, Ihr Betriebssystem auf eine aktuelle Version zu aktualisieren, die diese Anforderung erfüllt. Weitere Optionen sind die Installation von Python aus Quellen oder die Verwendung eines Python-Versionsverwaltungssystems wie pyenv.
Starten Sie mit dem Board Support Package. Um die Prototypenentwicklung auf einigen Entwicklungsboards zu beschleunigen, können Sie Board Support Packages (BSPs) verwenden, die die Initialisierung eines bestimmten Boards mit nur wenigen Funktionsaufrufen vereinfachen. Ein BSP unterstützt typischerweise alle auf dem Entwicklungsboard vorhandenen Hardwarekomponenten. Neben der Pinbelegungsdefinition und Initialisierungsfunktionen enthält ein BSP Treiber für externe Komponenten wie Sensoren, Displays, Audio-Codecs usw. Die BSPs werden über den IDF Component Manager verteilt und sind daher in der IDF Component Registry zu finden. Hier ein BeispielampAnleitung zum Hinzufügen von ESP-WROVER-KIT BSP zu Ihrem Projekt: idf.py add-dependency esp_wrover_kit
Mehr ExampInformationen zur BSP-Nutzung finden Sie in BSP examples-Ordner.
Tipp: ESP-IDF aktualisieren Es wird empfohlen, ESP-IDF von Zeit zu Zeit zu aktualisieren, da neuere Versionen Fehler beheben und/oder neue Funktionen bieten. Bitte beachten Sie, dass jede Haupt- und Nebenversion von ESP-IDF einen zugehörigen Supportzeitraum hat. Wenn sich ein Release-Zweig dem Ende seiner Lebensdauer (EOL) nähert, werden alle Benutzer aufgefordert, ihre Projekte auf neuere ESP-IDF-Versionen zu aktualisieren. Weitere Informationen zu den Supportzeiträumen finden Sie unter ESP-IDF-Versionen.
Espressif Systems
43. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 1. Erste Schritte
Die einfachste Möglichkeit zur Aktualisierung besteht darin, den vorhandenen Ordner „esp-idf“ zu löschen und ihn erneut zu klonen, als würden Sie die in Schritt 2 beschriebene Erstinstallation durchführen. ESP-IDF abrufen. Eine andere Lösung besteht darin, nur die Änderungen zu aktualisieren. Der Aktualisierungsvorgang hängt von der verwendeten ESP-IDF-Version ab. Führen Sie nach der Aktualisierung von ESP-IDF das Installationsskript erneut aus, falls die neue ESP-IDF-Version andere Toolversionen erfordert. Anweisungen finden Sie in Schritt 3. Tools einrichten. Sobald die neuen Tools installiert sind, aktualisieren Sie die Umgebung mit dem Exportskript. Anweisungen finden Sie in Schritt 4. Umgebungsvariablen einrichten.
Verwandte Dokumente · Serielle Verbindung mit ESP32 herstellen · Eclipse-Plugin · VSCode-Erweiterung · IDF-Monitor
1.4 Erstellen Sie Ihr erstes Projekt
Wenn Sie ESP-IDF bereits installiert haben und keine IDE verwenden, können Sie Ihr erstes Projekt über die Befehlszeile erstellen, indem Sie unter Windows „Projekt starten“ oder unter Linux und macOS „Projekt starten“ befolgen.
1.5 ESP-IDF deinstallieren
Wenn Sie ESP-IDF entfernen möchten, folgen Sie bitte der Anleitung zur Deinstallation von ESP-IDF.
Espressif Systems
44. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 2
API-Referenz
2.1 API-Konventionen
Dieses Dokument beschreibt die für ESP-IDF-APIs (Application Programming Interfaces) üblichen Konventionen und Annahmen. ESP-IDF bietet verschiedene Arten von Programmierschnittstellen:
· C-Funktionen, Strukturen, Enumerationen, Typdefinitionen und Präprozessormakros, die im öffentlichen Header deklariert sind files von ESPIDF-Komponenten. Verschiedene Seiten im Abschnitt API-Referenz des Programmierhandbuchs enthalten Beschreibungen dieser Funktionen, Strukturen und Typen.
· Build-Systemfunktionen, vordefinierte Variablen und Optionen. Diese sind im Build-System-Handbuch dokumentiert. · Kconfig-Optionen können im Code und im Build-System (CMakeLists.txt) verwendet werden. files. · Host-Tools und deren Kommandozeilenparameter sind ebenfalls Teil der ESP-IDF-Schnittstelle. ESP-IDF besteht aus speziell für ESP-IDF entwickelten Komponenten und Bibliotheken von Drittanbietern. In manchen Fällen wird der Drittanbieterbibliothek ein ESP-IDF-spezifischer Wrapper hinzugefügt, der eine einfachere oder besser in die übrigen ESP-IDF-Funktionen integrierte Schnittstelle bietet. In anderen Fällen wird den Anwendungsentwicklern die ursprüngliche API der Drittanbieterbibliothek präsentiert. Die folgenden Abschnitte erläutern einige Aspekte der ESP-IDF-APIs und deren Verwendung.
2.1.1 Fehlerbehandlung
Die meisten ESP-IDF-APIs geben Fehlercodes zurück, die mit dem Typ esp_err_t definiert sind. Weitere Informationen zu Fehlerbehandlungsansätzen finden Sie im Abschnitt Fehlerbehandlung. Die Fehlercodereferenz enthält die Liste der von ESP-IDF-Komponenten zurückgegebenen Fehlercodes.
2.1.2 Konfigurationsstrukturen
Wichtig: Die korrekte Initialisierung der Konfigurationsstrukturen ist ein wichtiger Bestandteil der Kompatibilität der Anwendung mit zukünftigen Versionen von ESP-IDF.
Die meisten Initialisierungs- oder Konfigurationsfunktionen in ESP-IDF verwenden als Argument einen Zeiger auf eine Konfigurationsstruktur. Zum Beispielampauf:
45
Kapitel 2. API-Referenz
const esp_timer_create_args_t meine_Timer_args = { .callback = &mein_Timer_callback, .arg = Callback_arg, .name = „mein_Timer“
}; esp_timer_handle_t mein_Timer; esp_err_t err = esp_timer_create(&meine_Timer_args, &mein_Timer);
Initialisierungsfunktionen speichern niemals den Zeiger auf die Konfigurationsstruktur, daher ist es sicher, die Struktur auf dem Stapel zuzuweisen.
Die Anwendung muss alle Felder der Struktur initialisieren. Folgendes ist falsch:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Falsch! Felder .arg und .name sind nicht initialisiert */ esp_timer_create(&my_timer_args, &my_timer);
Die meisten ESP-IDF-Examples verwenden für die Strukturinitialisierung die in C99 festgelegten Initialisierer, da sie eine präzise Möglichkeit bieten, eine Teilmenge von Feldern festzulegen und die verbleibenden Felder mit Nullen zu initialisieren:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Richtig, die Felder .arg und .name sind nullinitialisiert */
};
Die C++-Sprache unterstützt die angegebene Initialisierungssyntax erst ab C++20, der GCC-Compiler unterstützt sie jedoch teilweise als Erweiterung. Bei der Verwendung von ESP-IDF-APIs in C++-Code können Sie das folgende Muster verwenden:
esp_timer_create_args_t my_timer_args = {}; /* Alle Felder sind mit Null initialisiert */ my_timer_args.callback = &my_timer_callback;
Standardinitialisierer
Für einige Konfigurationsstrukturen bietet ESP-IDF Makros zum Festlegen von Standardwerten von Feldern:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG wird zu einem bestimmten Initialisierer erweitert.
Nun sind alle Felder auf die Standardwerte gesetzt. Jedes Feld kann noch geändert werden: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Es wird empfohlen, Standardinitialisierermakros zu verwenden, wenn diese für eine bestimmte Konfigurationsstruktur bereitgestellt werden.
2.1.3 Private APIs
Bestimmter Header files in ESP-IDF enthalten APIs, die nur im ESP-IDF-Quellcode und nicht von den Anwendungen verwendet werden sollen. Solche Header files enthalten oft private oder esp_private in ihrem Namen oder Pfad. Bestimmte Komponenten, wie z. B. hal, enthalten nur private APIs. Private APIs können zwischen Neben- oder Patch-Releases entfernt oder inkompatibel geändert werden.
2.1.4 Komponenten in Example Projekte
ESP-IDF exampDie Dateien enthalten eine Vielzahl von Projekten, die die Verwendung von ESP-IDF-APIs demonstrieren. Um die Code-Duplizierung im Ex zu reduzierenamples, einige gemeinsame Helfer sind innerhalb von Komponenten definiert, die von mehreren Ex verwendet werdenamples.
Espressif Systems
46. Senden Sie das Dokument-Feedback
Version v5.0.9
Kapitel 2. API-Referenz
Hierzu zählen Komponenten, die sich
Dokumente / Ressourcen
![]() |
Espressif Systems ESP32 Dev Kitc Entwicklungsboard [pdf] Benutzerhandbuch ESP32 Dev Kitc Entwicklungsboard, ESP32, Dev Kitc Entwicklungsboard, Kitc Entwicklungsboard, Entwicklungsboard, Board |