Scheda di Sviluppu ESP32 Dev Kitc
Informazione di u produttu
Specificazioni
- Pruduttu: ESP32
- Guida di prugrammazione: ESP-IDF
- Versione di publicazione: v5.0.9
- Produttore: Espressif Systems
- Data di liberazione: 16 di maghju di u 2025
Istruzzioni per l'usu di u produttu
1. Get Started
Prima di principià cù l'ESP32, familiarizatevi cù u
seguenti:
1.1 Introduzione
Amparate nantu à e funziunalità è e capacità basiche di u
ESP32.
1.2 Ciò chì avete bisognu
Assicuratevi di avè l'hardware è u software necessarii:
- Hardware: Verificate a lista di l'hardware necessariu
cumpunenti. - Software: Installate u software necessariu
cumpunenti.
1.3 Installazione
Segui sti passi per installà l'IDE è cunfigurà u
ambiente:
- IDE: Installate l'IDE cunsigliatu per
prugrammazione di l'ESP32. - Installazione manuale: Configurate manualmente u
ambiente se necessariu.
1.4 Custruite u vostru primu prughjettu
Crea è custruisci u vostru prughjettu iniziale cù l'ESP32.
1.5 Disinstalla ESP-IDF
Sè necessariu, amparate cumu disinstallà l'ESP-IDF da u vostru
sistema.
2. Riferimentu API
Cunsultate a ducumentazione di l'API per infurmazioni dettagliate nantu à
protokolli d'applicazione, gestione di l'errori è cunfigurazione
strutture.
Domande Frequenti (FAQ)
D: Cumu possu risolve i prublemi cumuni cù ESP32?
A: Cunsultate a sezzione di risoluzione di i prublemi in a guida di prugrammazione
o visitate u fabricatore websitu per risorse di supportu.
D: Possu aduprà ESP-IDF cù altri microcontrollori?
A: ESP-IDF hè specificamente cuncipitu per ESP32, ma pudete truvà
cumpatibilità cù altri microcontrollori Espressif.
ESP 32
Guida di prugrammazione ESP-IDF
Versione v5.0.9 Espressif Systems 16 di maghju 2025
Table of contents
Table of contents
i
1 Cuminciate
3
1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Ciò chì avete bisognu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Ferramenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Installazione manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Custruite u vostru primu prughjettu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.5 Disinstallazione di ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 Riferimentu API
45
2.1 Cunvenzioni API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.1 Gestione di l'errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.2 Strutture di cunfigurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.3 API private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.4 Cumponenti in exampi prughjetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 Stabilità di l'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 Protocolli d'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 Port ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.2.5 Cliente HTTP ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 Cuntrollu lucale ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.7 Collegamentu schiavu seriale ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 Pacchettu di certificati ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 Servitore HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 Servitore HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 Ecu ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.2.12 Serviziu mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.13 Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.14 Stratu di rete IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 API Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.1 Bluetooth® Cumunu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® à bassa energia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® Classicu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.3.4 Cuntrollore è HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
2.3.6 API d'ospite basate nantu à NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 Riferimentu di i codici d'errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 API di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
2.5.3 Filu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
i
2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Stratu di rete IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Stratu d'applicazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API di periferiche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Driver di modu Oneshot di u convertitore analogicu-digitale (ADC). . . . . . . . . . . . . . . . . 977 2.6.2 Convertitore analogicu-digitale (ADC) Driver in modu cuntinuu. . . . . . . . . . . . . . . 986 2.6.3 Driver di calibrazione di u convertitore analogicu-digitale (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Arburu di l'orologio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Convertitore digitale-analogicu (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO è RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Temporizzatore d'usu generale (GPTimer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Circuitu interintegratu (I2C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Sonu Inter-IC (I2S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Cuntrollu di i LED (LEDC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulatore di larghezza d'impulsi di cuntrollu di u mutore (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Contatore d'impulsi (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Ricetrasmettitore di cuntrollu remotu (RMT). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Requisiti di pull-up SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Driver di l'ospite SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Driver di l'ospite SPI SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Driver schiavu di a carta SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Modulazione Sigma-Delta (SDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Driver maestru SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Driver di schiavu SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Elementu sicuru) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Sensore tattile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Interfaccia automobilistica à dui fili (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Ricevitore/Trasmettitore Asincronu Universale (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Cunfigurazione di u prugettu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Menu di cunfigurazione di u prugettu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Utilizendu sdkconfig.defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Regole di furmattazione di Kconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Compatibilità retroattiva di l'opzioni di Kconfig . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Riferimentu di l'opzioni di cunfigurazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API di furnimentu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Cumunicazione di protocolu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Pruvisionamentu unificatu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Pruvisionamentu Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API di almacenamentu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSupportu di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Utilità di fabricazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Libreria di memoria non volatile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Utilità di u Generatore di Partizioni NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Driver SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 API Flash SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS Filesistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtuale filecumpunente di u sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API di livellamentu di l'usura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API di u Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Formatu d'imagine d'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Tracciamentu à livellu d'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Funzione di chjama cù pila esterna . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Revisione di Chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Cunsola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 Gestore eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Codici d'errore è funzioni d'aiutu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Libreria di Cicli d'Eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (Sopraview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (Funzioni Supplementari) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Allocazione di memoria Heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Debugging di memoria Heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Timer d'alta risoluzione (Timer ESP) . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 API interne è instabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Chjama interprocessore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Allocazione d'interruzzione . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Libreria di logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 API di Sistema Miscellanee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Aghjurnamenti Over The Air (OTA) . . . . . . . . . 2073 2.10.22 Monitor di e prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Gestione di l'alimentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 Supportu di i fili POSIX . 2093 2.10.25 Generazione di numeri aleatorii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Modi di sonnu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Capacità SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Ora di u Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 L'API di allocazione himem . . . . . . . . . . . . . . . . . 2126 2.10.30 Programmazione di coprocessore ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Cani di guardia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161
3 Riferimentu di Hardware
2167
3.1 Paragone di e serie di chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167
3.1.1 Documenti cunnessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4 Guide API
2171
4.1 Libreria di tracciamentu à livellu d'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.1 Sopraview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Modi di funziunamentu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.3 Opzioni di cunfigurazione è dipendenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 Cumu aduprà sta biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 Flussu d'avviu di l'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181
4.2.1 Prima stage bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 Siconda stage bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Avvio di l'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183
4.3 Bluetooth® Classicu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.3.1 Sopraview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® à bassa energia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1 Sopraview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Principià . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191
4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240
4.5 Caricatore d'avvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284
4.5.1 Compatibilità di u Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 Livellu di log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.3 Ripristinazione di fabbrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.4 Avvio da u firmware di prova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 Ripristinazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.6 Cane di guardia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.7 Dimensione di u caricatore di avviu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.8 Avvio rapidu da u modu Deep Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Bootloader persunalizatu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.6 Sistema di custruzzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.1 Sopraview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Utilizendu u Sistema di Custruzzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
iii
4.6.3 Esampu Prughjettu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Prughjettu CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Cumponente CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Cunfigurazione di i cumpunenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Definizioni di u preprocessore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Requisiti di i cumpunenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Sovrascrizione di e parti di u prugettu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Cumpunenti di solu cunfigurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Debugging di CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 EsampI cumpunenti CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Valori predefiniti di sdkconfig persunalizati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Argumenti Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Custruzzione di u Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Scrittura di cumpunenti CMake puri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Usu di prughjetti CMake di terze parti cù cumpunenti . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Usu di biblioteche precustruite cù cumpunenti . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Utilizendu ESP-IDF in Prughjetti CMake Persunalizati . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API di u Sistema di Custruzzione ESP-IDF CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Custruzzioni Globbing è Incrementali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Metadati di u Sistema di Custruzzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Parte Interna di u Sistema di Custruzzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Migrà da ESP-IDF GNU Make System . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Core Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Sopraview 2316 4.7.2 Cunfigurazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Salvà u core dump in flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Stampà u core dump in UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funzioni ROM in Backtraces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Dumping di variabili à dumanda . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Esecuzione di espcoredump.py 2319 4.8 Stubs di sveglia di sonnu prufondu 2322 4.8 Regole per i Stubs di sveglia 2322 4.8.1 Regole per i Stubs di sveglia 2322 4.8.1 Regole per i Stubs di sveglia 2322 4.8.2 Implementazione di un Stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Caricamentu di u codice in a memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Caricamentu di dati in a memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 CRC Verificazione di i stub di sveglia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Gestione di l'errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Sopraview 2324 4.9.2 Codici d'errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Codici d'errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Cunversione di codici d'errore in missaghji d'errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 Macro ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Macro ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Macro ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 Macro ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Macro ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 Macro ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 VERIFICA MACRO Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Modelli di gestione di l'errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Eccezioni C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Più diview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Cuncetti ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Custruzzione di una rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Gestione di una rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Trasmissione di dati . . . . . . . . . . . . . . . . . 2342 4.10.7 Cambiamentu di canali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv
4.10.8 Prestazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Note supplementari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Gestione di l'eventi . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Eventi Wi-Fi, Ethernet è IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Eventi Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Eventi Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Errori fatali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Più diview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Gestore di panicu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Dump di registru è Backtrace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 Stub GDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Timeout di u cane di guardia RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Errori di Meditazione di u Guru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Altri errori fatali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 eFuses pertinenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Prucessu di crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Cunfigurazione di a crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Fallimenti pussibuli. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Statu di crittografia flash ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Lettura è scrittura di dati in Flash crittografatu. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Aghjurnamentu di Flash Crittografatu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Disattivazione di a crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Punti chjave nantu à a crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Limitazioni di a crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Crittografia Flash è Avvio Sicuru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Funzioni avanzate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Dettagli tecnichi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Astrazione di l'hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Stratu LL (Livellu bassu). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Stratu d'Astrazione di l'Hardware). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Interruzioni di altu livellu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Livelli d'interruzzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Note. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Cumu funziona ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Selezzione di JTAG Adattatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Cunfigurazione di OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Cunfigurà u Target ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Avvio di u debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Debugging Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Custruisce OpenOCD da i Surghjenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Cunsiglii è Peculiarità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Documenti cunnessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Generazione di script Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Più diview 2421 4.17.2 Avvio rapidu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Avvio rapidu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Interni di generazione di script Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 API supportate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API Sockets BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API Netconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 Compitu lwIP FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 Supportu IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 mudifiche persunalizate esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v
4.18.7 Ottimizazione di e prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Tipi di memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (RAM di dati) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (RAM d'istruzzioni) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (codice eseguitu da a memoria flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (dati almacenati in flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 RTC Memoria lenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 RTC Memoria RAPIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Requisitu di capacità DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Buffer DMA in u stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . 2442 4.20.1 Modi di a pila OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Cumu scrive una applicazione OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 U Router di Frontiera OpenThread . . . . . . . . . . . 2444 4.21 Tavule di partizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Più diview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Tavule di partizione integrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Creazione di tavule persunalizate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Generazione di una tavula di partizioni binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Verifica di a dimensione di a partizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Lampà a tavula di partizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Strumentu di Partizione (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Cumu ottimizà e prestazioni . . . . . . . . . . . . . . . 2450 4.22.2 Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 Calibrazione RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Calibrazione parziale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Calibrazione cumpleta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Nisuna calibrazione . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Dati d'inizializazione PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Riferimentu API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Avvio sicuru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Sfondate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Prucessu d'avviu sicuru sopraview 2473 4.24.3 Chjavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Chjavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Dimensione di u Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 Cumu attivà l'avvio sicuru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Bootloader di software rilampabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Generazione di a chjave di firma di l'avvio sicuru . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Firma remota di l'imagine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Pratiche migliori di avvio sicuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Dettagli tecnichi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Avvio sicuro è crittografia flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Verificazione di l'app firmata senza avvio sicuro hardware . . . . . . . . . . . . . . . . . . 2478 4.24.13 Funzionalità avanzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Avvio Securizatu V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Sfondate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Avanzatutages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Prucessu di avvio sicuru V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Formatu di bloccu di firma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Imbottitura sicura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Verifica di un bloccu di firma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Verifica di una imagine . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Dimensione di u Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Usu di eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Cumu attivà l'avvio sicuru V2. 2481 4.25.11 Restrizioni dopu chì Secure Boot hè attivatu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Generazione di a chjave di firma di Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi
4.25.13 Firma remota di l'imagine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Pratiche migliori di avvio sicuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Dettagli tecnichi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Avvio sicuro è crittografia flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Verificazione di l'app firmata senza avvio sicuro hardware . . . . . . . . . . . . . . . . . . 2484 4.25.18 Funzioni avanzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Supportu per a RAM esterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Cunfigurà a RAM esterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Restrizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Fallimentu di inizializazione . . . . . . . . 2488 4.26.6 Revisioni di Chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Revisioni di Chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Memoria Locale di Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Più diview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 API nativa FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 API Pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 Strumenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 IDF Frontend – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Imagine Docker IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 Installatore IDF Windows . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Gestore di cumpunenti IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Strumenti scaricabili . . . . . . . . . . . . . 2498 4.29 Test di unità in ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Casi di test nurmali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Casi di prova multi-dispositivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Multi-stage Casi di prova. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Testi per diversi obiettivi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Custruzzione di l'applicazione di test di unità. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Esecuzione di testi unitari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Codice di timing cù timer cumpensatu in cache. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Simulazioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Test di unità nant'à Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Testi di software integrati. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Testi di unità IDF nantu à l'ospite Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Driver Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Lista di e funzioni Wi-Fi di ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Cumu scrive una applicazione Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Codice d'errore di l'API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inizializazione di i parametri di l'API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Modellu di prugrammazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Descrizzione di l'eventu Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Scenariu Generale di a Stazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Scenariu generale di l'AP Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Scansione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Scenariu di cunnessione di a stazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Cunnessione di a stazione Wi-Fi ESP32 quandu si trovanu parechji AP. . . . . . . . . . . . . 2543 4.31.12 Ricunnessione Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Timeout di u Beacon Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Cunfigurazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Gestione di a rete senza filu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Misurazione di e risorse radio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Transizione BSS rapida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 Modu di risparmiu energeticu ESP32 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Trasmissione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
4.31.21 Inviu di pacchetti Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Modu Sniffer Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Antenne multiple Wi-Fi . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Infurmazioni di statu di u canale Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Infurmazioni di statu di u canale Wi-Fi Cunfigurà . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 Wi-Fi QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Frammentu Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Iscrittu WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Usu di u Buffer Wi-Fi . . . . . . . . . . . . . . . . 2558 4.31.32 Cumu migliurà e prestazioni Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Configurazione di u menu Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Risoluzione di i prublemi . . . . . . . . . . 2565 4.32 Sicurezza Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Funzioni di sicurezza Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Quadri di Gestione Prutetti (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Coesistenza RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Più diview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Scenariu di cuesistenza supportatu per ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Meccanismu è pulitica di cuesistenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Cumu aduprà a funzione di cuesistenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Custruzzioni riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Ragioni per e custruzzioni micca riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Attivazione di custruzzioni riproducibili in ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Cumu si ottenenu e custruzzioni riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Custruzzioni riproducibili è debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Fattori chì influenzanu sempre e custruzzioni riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Guida di l'utente in modu à bassa putenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578
5 Guide di Migrazione
2579
5.1 Guida di Migrazione ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
5.1.1 Migrazione da 4.4 à 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6 Biblioteche è Frameworks
2611
6.1 Quadri Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.4 Google IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.5 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.7 Tencent IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.8 Tencentyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.9 Baidu IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2 Quadri espressivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.1 Quadru di Sviluppu Audio Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.3 Libreria DSP Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.4 Quadru di sviluppu ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-OMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.7 Soluzione ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.8 Protocolli ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
viii
6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614
Guida di 7 cuntribuzioni
2615
7.1 Cumu cuntribuisce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.2 Prima di cuntribuisce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.3 Prucessu di dumanda di pull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.4 Parte Legale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5 Documenti cunnessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.1 Guida di stile di u quadru di sviluppu Espressif IoT . . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 Installà u Hook di pre-commit per u prughjettu ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Documentazione di u codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624
7.5.4 Creazione di Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 Template di Documentazione API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Accordu di cuntributore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632
7.5.7 Guida di l'intestazione di u copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634
7.5.8 Testi ESP-IDF cù a Guida Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 Versioni ESP-IDF
2645
8.1 Versioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.2 Cù quale versione devu principià ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 Schema di versione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.4 Periodi di supportu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646
8.5 Verificazione di a versione attuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Flussu di travagliu Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7 Aghjurnamentu di ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7.1 Aghjurnamentu à a versione stabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 Aghjurnamentu à una versione pre-rilasciu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 Aghjurnamentu à a filiale maestra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 Aghjurnamentu à una Branca di Rilasciu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 Risorse
2651
9.1 Piattaforma IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.1 Chì ghjè PlatformIO ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.3 Cunfigurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.4 Tutoriali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.5 Prughjettu Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Prossimi Passi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.2 Ligami utili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
10 Diritti d'autore è Licenze
2653
10.1 Diritti d'autore di u software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.1 Cumponenti di u firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.2 Documentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.2 Diritti d'autore di u codice surghjente ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.3 Licenza Xtensa libhal MIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 TinyBasic Plus Licenza MIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.5 Licenza TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
11 À propositu
2657
12 Cambià trà e lingue
2659
Indice
2661
Indice
2661
ix
x
Table of contents
Questa hè a ducumentazione per Espressif IoT Development Framework (esp-idf). ESP-IDF hè u framework di sviluppu ufficiale per i SoC di e serie ESP32, ESP32-S è ESP32-C. Stu documentu descrive l'usu di ESP-IDF cù u SoC ESP32.
Cuminciate
Riferimentu API
Guide API
Sistemi Espressif
1 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Table of contents
Sistemi Espressif
2 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1
Cuminciate
Stu documentu hè destinatu à aiutà vi à cunfigurà l'ambiente di sviluppu di software per l'hardware basatu annantu à u chip ESP32 di Espressif. Dopu à quessa, un esempiu simplice...ampVi mustraremu cumu aduprà ESP-IDF (Espressif IoT Development Framework) per a cunfigurazione di u menu, dopu per custruisce è flashà u firmware nantu à una scheda ESP32.
Nota: Questa hè a ducumentazione per a versione stabile v5.0.9 di ESP-IDF. Altre versioni di ESP-IDF sò ancu dispunibili.
1.1 Introduzione
ESP32 hè un sistema nant'à un chip chì integra e seguenti caratteristiche: · Wi-Fi (banda 2.4 GHz) · Bluetooth · Doppiu core CPU Xtensa® LX6 à 32 bit à alte prestazioni · Coprocessore à bassissima putenza · Periferiche multiple
Alimentatu da a tecnulugia di 40 nm, ESP32 furnisce una piattaforma robusta è altamente integrata, chì aiuta à risponde à e richieste continue di un usu efficiente di l'energia, un design compattu, sicurezza, alte prestazioni è affidabilità. Espressif furnisce risorse hardware è software di basa per aiutà i sviluppatori di applicazioni à realizà e so idee utilizendu l'hardware di a serie ESP32. U quadru di sviluppu di software di Espressif hè destinatu à u sviluppu di applicazioni Internet of Things (IoT) cù Wi-Fi, Bluetooth, gestione di l'energia è parechje altre funzionalità di sistema.
1.2 Ciò chì avete bisognu
1.2.1 Hardware
· Una carta ESP32. · Cavu USB - USB A / micro USB B. · Ordinatore chì funziona cù Windows, Linux, o macOS.
Nota: Attualmente, alcune di e schede di sviluppu utilizanu connettori USB Type C. Assicuratevi di avè u cavu currettu per cunnette a vostra scheda!
Sè vo avete una di e carte di sviluppu ufficiali ESP32 elencate quì sottu, pudete cliccà nantu à u ligame per amparà di più nantu à l'hardware.
3
Capitulu 1. Cumincià
Kit di Sviluppu ESP32(-R)
Questa guida per l'utente furnisce infurmazioni nantu à ESP32-DevKitS(-R), una scheda lampeggiante basata annantu à ESP32 prodotta da Espressif. ESP32-DevKitS(-R) hè una cumbinazione di dui nomi di scheda: ESP32-DevKitS è ESP32-DevKitS-R. S significa molle, è R significa WROVER.
Kit di Sviluppu ESP32
ESP32-DevKitS-R
U documentu hè cumpostu da e seguenti sezzioni principali: · Introduzione: Fornisce una panoramicaview di ESP32-DevKitS(-R) è struzzioni di cunfigurazione hardware/software per cumincià. · Riferimentu Hardware: Fornisce infurmazioni più dettagliate nantu à l'hardware ESP32-DevKitS(-R)ns. · Documenti Correlati: Fornisce ligami à a documentazione correlata.
Per principià Sta sezione descrive cumu principià cù ESP32-DevKitS(-R). Cumincia cù qualchì sezione introduttiva nantu à ESP32-DevKitS(-R), dopu a Sezione Cumu flashà una scheda furnisce struzzioni nantu à cumu muntà un modulu nantu à ESP32-DevKitS(-R), preparallu è flashà u firmware nantu à questu.
Overview ESP32-DevKitS(-R) hè una scheda di flashing Espressifns cuncipita specificamente per ESP32. Pò esse aduprata per flashà un modulu ESP32 senza saldà u modulu à l'alimentazione è à e linee di signale. Cù un modulu muntatu, ESP32-DevKitS(-R) pò ancu esse aduprata cum'è una mini scheda di sviluppu cum'è ESP32-DevKitC.
I circuiti stampati ESP32-DevKitS è ESP32-DevKitS-R varianu solu in a dispusizione di i pin à molla per adattassi à i seguenti moduli ESP32.
· Kit di sviluppu ESP32: 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
Per infurmazioni nantu à i moduli sopra citati, vi pregu di riferisce à i Moduli di a Serie ESP32.
Descrizione di Componenti
Sistemi Espressif
4 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 1: ESP32-DevKitS – fronte
Sistemi Espressif
Fig. 2: ESP32-DevKitS-R – fronte 5
Invia u Feedback di u Documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Perni à molla di cumpunenti chjave 2.54 mm Intestazioni femmine
Ponte USB-à-UART Connettore Micro-USB LDO/Porta Micro USB Pulsante EN Pulsante d'avvio
Alimentazione à LED
Descrizzione Cliccate u modulu. I pin si inseriranu in i fori castellati di u modulu. Sti connettori femini sò cunnessi à i pin di u modulu muntatu nantu à sta scheda. Per a descrizzione di i connettori femini, riferitevi à i Blocchi di Connessione. U ponte USB à UART à chip unicu furnisce velocità di trasferimentu finu à 3 Mbps.
Volumu à bassa caduta da 5V à 3.3Vtagregulatore e (LDO).
Interfaccia USB. Alimentazione per a scheda è ancu l'interfaccia di cumunicazione trà un urdinatore è a scheda.
Reset buttone.
Buttone di scaricamentu. Mantene premutu Boot è dopu preme EN inizia a modalità di scaricamentu di u firmware per scaricà u firmware attraversu a porta seriale.
Si accende quandu l'USB o l'alimentatore hè cunnessu à a scheda.
Cumu flashà una scheda Prima di accende u vostru ESP32-DevKitS(-R), assicuratevi ch'ella sia in bonu statu senza segni evidenti di danni.
Hardware necessariu · Un modulu ESP32 di a vostra scelta · Cavu USB 2.0 (Standard-A à Micro-B) · Computer cù Windows, Linux o macOS
Cunfigurazione di l'hardware Per piacè muntate un modulu di a vostra scelta nantu à u vostru ESP32-DevKitS(-R) secondu i passi seguenti:
· Pone delicatamente u vostru modulu nantu à a carta ESP32-DevKitS(-R). Assicuratevi chì i fori castellati di u vostru modulu sianu allineati cù i perni à molla di a carta.
· Appughjà u vostru modulu in a scheda finu à chì clicca. · Verificate se tutti i perni à molla sò inseriti in i fori à castellu. S'ellu ci sò qualchi perni à molla disallineati,
metteli in buchi castellati cù pinzette.
Configurazione di u Software
Metudu Preferitu U quadru di sviluppu ESP-IDF furnisce un modu preferitu per flashà i binari nantu à ESP32-DevKitS(-R). Per piacè, procedete à a Sezione Get Started, induve a Sezione Installazione vi aiuterà rapidamente à cunfigurà l'ambiente di sviluppu è dopu à flashà un ex di applicazione.ample nant'à u vostru ESP32-DevKitS(-R).
Metudu Alternativu Cum'è alternativa, l'utilizatori di Windows ponu flashà i binari cù u Strumentu di Scaricamentu Flash. Basta à scaricallu, decomprimellu è seguità l'istruzzioni in a cartella doc.
Nota: 1. Per lampà u binariu files, ESP32 deve esse impostu in modu di scaricamentu di u firmware. Questu pò esse fattu sia da u strumentu di flash automaticamente, sia tenendu premutu u buttone Boot è toccendu u buttone EN. 2. Dopu avè lampatu u binariu files, u Strumentu di Scaricamentu Flash riavvia u vostru modulu ESP32 è avvia l'applicazione flashata per difettu.
Dimensioni di a scheda Cuntenutu è imballaggio
Sistemi Espressif
6 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Principià Fig. 3: Dimensioni di a scheda ESP32-DevKitS - daretu
Sistemi Espressif
Fig. 4: Dimensioni di a scheda ESP32-DevKitS-R - daretu 7
Invia u Feedback di u Documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Ordini di vendita Se ordinate uni pochi diampOgni ESP32-DevKitS(-R) vene in un pacchettu individuale in un saccu antistaticu o in qualsiasi imballaggio secondu u rivenditore. Per l'ordini al dettaglio, andate à https://www.espressif.com/en/contact-us/get-samples.
Ordini à l'ingrossu Sè ordinate in quantità, i cartoni sò furniti in grandi scatule di cartone. Per ordini à l'ingrossu, andate à https://www.espressif.com/en/contact-us/sales-questions.
Riferimentu di Hardware
Diagramma à blocchi Un diagramma à blocchi quì sottu mostra i cumpunenti di ESP32-DevKitS(-R) è e so interconnessioni.
Fig. 5: ESP32-DevKitS(-R) (cliccate per ingrandà)
Opzioni di Alimentazione Ci sò trè modi mutualmente esclusivi per furnisce alimentazione à a scheda: · Porta Micro USB, alimentazione predefinita · Pin di intestazione 5V è GND · Pin di intestazione 3V3 è GND
Hè cunsigliatu d'utilizà a prima opzione: u portu micro USB.
Sistemi Espressif
.
Segnale di l'etichetta
L1 3V3 VDD 3V3
L2 EN CHIP_PU
SENSORE_VP L3 VP
SENSORE VN L4_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
cuntinueghja à a pagina dopu
8 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
A Tabella 1 cuntinua da a pagina precedente
.
Segnale di l'etichetta
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
Esternu 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
Blocchi d'intestazione Per l'imagine di i blocchi d'intestazione, riferitevi à Descrizzione di i cumpunenti.
Documenti cunnessi
· Schema ESP32-DevKitS(-R) (PDF) · Scheda tecnica ESP32 (PDF) · Scheda tecnica ESP32-WROOM-32 (PDF) · Scheda tecnica ESP32-WROOM-32D è ESP32-WROOM-32U (PDF) · Scheda tecnica ESP32-SOLO-1 (PDF) · Scheda tecnica ESP32-WROVER (PDF) · Scheda tecnica ESP32-WROVER-B (PDF) · Selezziunatore di prudutti ESP
ESP32-DevKitM-1
Questa guida per l'utente vi aiuterà à cumincià cù ESP32-DevKitM-1 è vi furnisce ancu infurmazioni più dettagliate.
ESP32-DevKitM-1 hè una scheda di sviluppu basata annantu à ESP32-MINI-1 (1U) prudutta da Espressif. A maiò parte di i pin I/O sò spartuti in i connettori di pin da i dui lati per una interfaccia faciule. L'utilizatori ponu cunnette periferiche cù fili jumper o muntà ESP32-DevKitM-1 nantu à una breadboard.
Sistemi Espressif
9 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
ESP32-DevKitM-1 - fronte
ESP32-DevKitM-1 – isometricu
U documentu hè cumpostu da e seguenti sezzioni principali: · Per cumincià: Fornisce una panoramicaview di l'ESP32-DevKitM-1 è l'istruzzioni di cunfigurazione di l'hardware/software per cumincià. · Riferimentu hardware: Fornisce infurmazioni più dettagliate nantu à l'hardware ESP32-DevKitM-1ns. · Documenti cunnessi: Fornisce ligami à a documentazione cunnessa.
Per principià Sta sezione descrive cumu principià cù ESP32-DevKitM-1. Cumincia cù qualchì sezione introduttiva nantu à l'ESP32-DevKitM-1, dopu a Sezione Start Application Development furnisce struzzioni nantu à cumu fà a cunfigurazione iniziale di l'hardware è dopu cumu flashà u firmware nantu à l'ESP32-DevKitM-1.
Overview Questu hè un pianu di sviluppu chjuca è convenientu chì presenta:
· Modulu ESP32-MINI-1, o ESP32-MINI-1U · Interfaccia di prugrammazione USB-à-seriale chì furnisce ancu l'alimentazione per a scheda · connettori di pin · pulsanti per u reset è l'attivazione di a modalità di scaricamentu di u firmware · uni pochi d'altri cumpunenti
Cuntenuti è Packaging
Ordini di vendita Se ordinate uni pochi diampOgni ESP32-DevKitM-1 vene in un pacchettu individuale in un saccu antistaticu o in qualsiasi imballaggio secondu u vostru rivenditore.
Per l'ordini di vendita, andate à https://www.espressif.com/en/contact-us/get-samples.
Ordini à l'ingrossu Sè ordinate in quantità, i cartoni sò furniti in grandi scatule di cartone. Per ordini à l'ingrossu, andate à https://www.espressif.com/en/contact-us/sales-questions.
Descrizzione di i cumpunenti A figura seguente è a tavula sottu descrivenu i cumpunenti chjave, l'interfacce è i cuntrolli di a carta ESP32-DevKitM-1. Pigliemu a carta cù un modulu ESP32-MINI-1 cum'è esempiu.ample in e sezioni seguenti.
Sistemi Espressif
10 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 6: ESP32-DevKitM-1 – fronte
Modulu di cumpunente chjave integratu
Pulsante d'avvio LDO da 5 V à 3.3 V
Pulsante di reset Porta Micro-USB
Ponte USB-à-UART 3.3 V LED d'accensione
Connettore I/O
Descrizzione
Modulu ESP32-MINI-1 o modulu ESP32-MINI-1U. ESP32-MINI-1 vene cun un'antenna PCB integrata. ESP32-MINI-1U vene cun un connettore d'antenna esterna. I dui moduli anu tramindui un pacchettu di chip flash di 4 MB. Per i dettagli, cunsultate a scheda tecnica ESP32-MINI-1 è ESP32-MINI-1U.
U regulatore di putenza converte 5 V à 3.3 V.
Buttone di scaricamentu. Tenendu premutu Boot è dopu premendu Reset si avvia a modalità di scaricamentu di u firmware per scaricà u firmware attraversu a porta seriale.
Reset Button
interfaccia USB. Fornitura d'energia per a scheda è l'interfaccia di cumunicazione trà un computer è u chip ESP32.
Un chip di ponte USB-UART unicu furnisce tassi di trasferimentu finu à 3 Mbps.
Si accende quandu l'USB hè cunnessu à a scheda. Per i dettagli, cunsultate i schemi in i Documenti Correlati. Tutti i pin GPIO dispunibili (eccettu u bus SPI per u flash) sò spartuti in i connettori di pin di a scheda. L'utilizatori ponu programmà u chip ESP32 per attivà parechje funzioni.
Principià u sviluppu di l'applicazione Prima di accende u vostru ESP32-DevKitM-1, assicuratevi ch'ellu sia in bonu statu senza segni evidenti di danni.
Hardware necessariu · ESP32-DevKitM-1 · Cavu USB 2.0 (Standard-A à Micro-B) · Computer cù Windows, Linux o macOS
Cunfigurazione di u Software Per piacè, procedete à a Sezione Get Started, induve a Sezione Installazione vi aiuterà rapidamente à cunfigurà l'ambiente di sviluppu è dopu à lampà un ex di applicazione.ample in u vostru ESP32-DevKitM-1.
Sistemi Espressif
11 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Attenzione: E carte ESP32-DevKitM-1 fabbricate prima di u 2 dicembre 2021 anu un modulu single core installatu. Per verificà quale modulu avete, verificate l'infurmazioni di marcatura di i moduli in PCN-2021-021. Se a vostra carta hà un modulu single core installatu, attivate a modalità single core (CONFIG_FREERTOS_UNICORE) in menuconfig prima di flascà e vostre applicazioni.
Diagramma di blocchi di riferimentu hardware Un diagramma di blocchi quì sottu mostra i cumpunenti di ESP32-DevKitM-1 è e so interconnessioni.
Fig. 7: ESP32-DevKitM-1
Selezzione di a fonte d'alimentazione Ci sò trè modi mutualmente esclusivi per furnisce alimentazione à a scheda: · Porta Micro USB, alimentazione predefinita · Pin di l'intestazione 5V è GND · Pin di l'intestazione 3V3 è GND
Attenzione: · L'alimentazione deve esse furnita aduprendu una è solu una di l'opzioni sopra, altrimenti a scheda è/o a fonte d'alimentazione ponu esse danneggiate. · L'alimentazione via porta micro USB hè cunsigliata.
Descrizzioni di i pin A tavula quì sottu furnisce u nome è a funzione di i pin da i dui lati di a scheda. Per e cunfigurazioni di i pin periferichi, riferitevi à a scheda tecnica ESP32.
Innò.
Nome
Tipu
1
GND
P
2
3V3
P
Funzione Terra Alimentazione 3.3 V
cuntinueghja à a pagina dopu
Sistemi Espressif
12 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
A Tabella 2 cuntinua da a pagina precedente
Innò.
Nome
Tipu
Funzione
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
resetta; High: attivà; Bassu: spegni
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
I/O
GPIO32, XTAL_32K_P (entrata di l'oscillatore di cristallu 32.768 kHz),
ADC1_CH4, TOUCH9, RTC_GPIO9
11
IO33
I/O
GPIO33, XTAL_32K_N (32.768 kHz di output oscillatore à cristallo),
ADC1_CH5, TOUCH8, RTC_GPIO8
12
IO25
I/O
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
13
IO26
I/O
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
14
IO27
I/O
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
15
IO14
I/O
GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
16
5V
P
Alimentazione 5 V
17
IO12
I/O
GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
HS2_DATA2, SD_DATA2, EMAC_TXD3
18
IO13
I/O
GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
19
IO15
I/O
GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,
HS2_CMD, SD_CMD, EMAC_RXD3
20
IO2
I/O
GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
21
IO0
I/O
GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
EMAC_TX_CLK
22
IO4
I/O
GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
23
IO9
I/O
GPIO9, HS1_DATA2, U1RXD, SD_DATA2
24
IO10
I/O
GPIO10, HS1_DATA3, U1TXD, SD_DATA3
25
IO5
I/O
GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK
26
IO18
I/O
GPIO18, HS1_DATA7, VSPICLK
27
IO23
I/O
GPIO23, HS1_STROBE, VSPID
28
IO19
I/O
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
29
IO22
I/O
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
30
IO21
I/O
GPIO21, VSPIHD, EMAC_TX_EN
31
TXD0
I/O
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
I/O
GPIO3, U0RXD, CLK_OUT2
Dettagli di Revisione di l'Hardware Nisuna versione precedente dispunibule.
Documenti cunnessi
· Scheda tecnica ESP32-MINI-1 è ESP32-MINI-1U (PDF) · Schema ESP32-DevKitM-1 (PDF) · Schema PCB ESP32-DevKitM-1 (PDF) · Schema ESP32-DevKitM-1 (DXF) – Pudete view cù Autodesk Viewin linea · Scheda tecnica ESP32 (PDF) · Selezziunatore di prudutti ESP
Per altra documentazione di cuncepimentu per a scheda, cuntattateci à sales@espressif.com.
Sistemi Espressif
13 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Software 1.2.2
Per cumincià à aduprà ESP-IDF nant'à ESP32, stallate u software seguente: · Toolchain per cumpilà u codice per ESP32 · Custruisce strumenti - CMake è Ninja per custruisce una applicazione cumpleta per ESP32 · ESP-IDF chì cuntene essenzialmente API (biblioteche di software è codice surghjente) per ESP32 è scripts per fà funziunà a Toolchain
1.3 Installazione
Per installà tutti i prugrammi richiesti, offremu parechji modi per facilità stu compitu. Sceglite trà una di l'opzioni dispunibili.
1.3.1 IDE
Nota: Ricumandemu assai l'installazione di l'ESP-IDF per mezu di u vostru IDE preferitu.
· Plugin Eclipse · Estensione VSCode
1.3.2 Installazione manuale
Per a prucedura manuale, sceglite secondu u vostru sistema operativu.
Sistemi Espressif
14 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Configurazione standard di Toolchain per Windows
Introduzione ESP-IDF richiede l'installazione di certi strumenti prerequisiti per pudè custruisce u firmware per i chip supportati. L'arnesi prerequisiti includenu Python, Git, cumpilatori incruciati, strumenti di compilazione CMake è Ninja. Per questu Getting Started, adupreremu u Prompt di Cumanda, ma dopu avè installatu ESP-IDF, pudete aduprà Eclipse Plugin o un altru IDE graficu cù supportu CMake. Nota: Limitazioni: - U percorsu d'installazione di ESP-IDF è ESP-IDF Tools ùn deve esse più longu di 90 caratteri. Percorsi d'installazione troppu longhi puderanu risultà in una compilazione fallita. - U percorsu d'installazione di Python o ESP-IDF ùn deve cuntene spazi bianchi o parentesi. - U percorsu d'installazione di Python o ESP-IDF ùn deve cuntene caratteri speciali (non ASCII) à menu chì u sistema operativu ùn sia cunfiguratu cù u supportu Unicode UTF-8. L'amministratore di u sistema pò attivà u supportu via u Pannellu di cuntrollu - Cambia i furmati di data, ora o numeru - Scheda Amministratore - Cambia l'impostazioni lucali di u sistema - verificate l'opzione Beta: Aduprate Unicode UTF-8 per u supportu di lingue in u mondu sanu - Ok è riavviate l'urdinatore.
Installatore di strumenti ESP-IDF U modu più faciule per installà i prerequisiti ESP-IDFns hè di scaricà unu di l'installatori di strumenti ESP-IDF.
Scaricamentu di l'installatore di Windows
Chì ghjè l'usu di l'installatore in linea è fora di linea? L'installatore in linea hè assai chjucu è permette l'installazione di tutte e versioni dispunibili di ESP-IDF. L'installatore scaricherà solu e dipendenze necessarie, cumprese Git per Windows, durante u prucessu d'installazione. L'installatore memorizza i fugliali scaricati. files in u cartulare di cache %userprofile%. espressivu
L'installatore offline ùn richiede alcuna cunnessione di rete. L'installatore cuntene tutte e dipendenze necessarie, cumpresu Git For Windows.
Cumponenti di l'installazione L'installatore implementa i seguenti cumponenti:
· Python integratu · Cumpilatori incruciati · OpenOCD · Strumenti di custruzzione CMake è Ninja · ESP-IDF
L'installatore permette ancu di riutilizà u cartulare esistente cù ESP-IDF. U cartulare cunsigliatu hè %userprofile%Desktopesp-idf induve %userprofile% hè u vostru cartulare principale.
Sistemi Espressif
15 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Lanciamentu di l'ambiente ESP-IDF À a fine di u prucessu d'installazione pudete verificà l'opzione Eseguite l'ambiente ESP-IDF PowerShell o Eseguite u prompt di cummandu ESP-IDF (cmd.exe). L'installatore lancerà l'ambiente ESP-IDF in u prompt sceltu. Eseguite l'ambiente ESP-IDF PowerShell:
Fig. 8: Cumplettazione di l'assistente di cunfigurazione di l'utili ESP-IDF cù Run ESP-IDF PowerShell Environment
Eseguite l'invitu di cumanda ESP-IDF (cmd.exe):
Utilizendu u Prompt di Cumanda Per i passi rimanenti di Getting Started, adupreremu u Prompt di Cumanda di Windows. L'installatore di strumenti ESP-IDF crea ancu una scurciatoia in u menu Start per lancià u Prompt di Cumanda ESP-IDF. Questa scurciatoia lancia u Prompt di Cumanda (cmd.exe) è esegue u script export.bat per cunfigurà e variabili d'ambiente (PATH, IDF_PATH è altre). Dentru à questu prompt di cumanda, tutti l'arnesi installati sò dispunibili. Nutate bè chì sta scurciatoia hè specifica per u cartulare ESP-IDF sceltu in l'installatore di strumenti ESP-IDF. Sè vo avete parechji cartulari ESP-IDF nant'à l'urdinatore (per esempiuampvale à dì, per travaglià cù diverse versioni di ESP-IDF), avete duie opzioni per aduprà li:
1. Crea una copia di a scurciatoia creata da l'installatore di strumenti ESP-IDF, è cambia u cartulare di travagliu di a nova scurciatoia à u cartulare ESP-IDF chì vulete aduprà.
2. In alternativa, eseguite cmd.exe, poi cambiate à u cartulare ESP-IDF chì vulete aduprà, è eseguite export.bat. Nutate bè chì, à u cuntrariu di l'opzione precedente, questu modu richiede chì Python è Git sianu presenti in PATH. Sè avete errori ligati à Python o Git chì ùn sò micca truvati, aduprate a prima opzione.
Primi Passi nantu à ESP-IDF Avà, postu chì tutti i requisiti sò soddisfatti, u prossimu tema vi guiderà nantu à cumu inizià u vostru primu prughjettu.
Sistemi Espressif
16 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Principià Fig. 9: ESP-IDF PowerShell
Fig. 10: Cumplettà l'assistente di cunfigurazione di l'utili ESP-IDF cù Run ESP-IDF Command Prompt (cmd.exe)
Sistemi Espressif
17 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 11: Prompt di cumanda ESP-IDF
Sistemi Espressif
18 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Questa guida vi aiuterà in i primi passi cù ESP-IDF. Seguitate sta guida per inizià un novu prughjettu nantu à l'ESP32 è custruisce, flashà è monitorà l'output di u dispusitivu. Nota: Sè ùn avete ancu installatu ESP-IDF, andate à Installazione è seguitate l'istruzzioni per ottene tuttu u software necessariu per aduprà sta guida.
Principià un prughjettu Avà site prontu à preparà a vostra applicazione per ESP32. Pudete principià cù u prughjettu getstarted/hello_world da exampl'annuariu les in ESP-IDF.
Impurtante: U sistema di compilazione ESP-IDF ùn supporta micca i spazii in i percorsi versu ESP-IDF o versu i prughjetti.
Cupiate u prugettu get-started/hello_world in u cartulare ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedciao_monduciao_mondu
Nota: Ci hè una gamma di example prughjetti in l'exampl'annuariu les in ESP-IDF. Pudete copià ogni prughjettu in u listessu modu cum'è prisentatu sopra è eseguisce. Hè ancu pussibule di custruisce examples in situ senza copialli prima.
Cunnette u vostru dispusitivu Avà cunnette a vostra scheda ESP32 à l'urdinatore è verificate sottu à quale porta seriale a scheda hè visibile. I nomi di e porte seriali cumincianu cù COM in Windows. Sè ùn site micca sicuru di cumu verificà u nome di a porta seriale, per piacè riferitevi à Stabilisce una cunnessione seriale cù ESP32 per i dettagli cumpleti.
Nota: Mantene u nome di u portu cum'è avete bisognu in i prossimi passi.
Configurate u vostru prughjettu Navigate à u vostru cartulare hello_world, impostate ESP32 cum'è destinazione, è eseguite l'utilità di cunfigurazione di u prughjettu menuconfig.
CD di Windows %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
Dopu avè apertu un novu prughjettu, duvete prima definisce u target cù idf.py set-target esp32. Nutate bè chì e compilazioni è e cunfigurazioni esistenti in u prughjettu, s'ellu ci n'hè, saranu sguassate è inizializate in questu prucessu. U target pò esse salvatu in a variabile d'ambiente per saltà stu passu. Vede Selezziunà u Chip di Target: set-target per più infurmazioni. Se i passi precedenti sò stati fatti currettamente, appare u menu seguente: State aduprendu stu menu per cunfigurà variabili specifiche di u prughjettu, per esempiu, nome è password di a rete Wi-Fi, a velocità di u processore, ecc. A cunfigurazione di u prughjettu cù menuconfig pò esse saltata per ohello_wordp, postu chì questu example funziona cù a cunfigurazione predefinita.
Attenzione: Sè vo aduprate a carta ESP32-DevKitC cù u modulu ESP32-SOLO-1, o a carta ESP32-DevKitM-1 cù u modulu ESP32-MIN1-1(1U), per piacè attivate a modalità single core (CONFIG_FREERTOS_UNICORE) in menuconfig prima di lampà ex.amples.
Sistemi Espressif
19 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 12: Cunfigurazione di u prugettu - Finestra iniziale
Nota: I culori di u menu puderanu esse sfarenti in u vostru terminal. Pudete cambià l'aspettu cù l'opzione -style. Per piacè eseguite idf.py menuconfig -help per più infurmazioni.
Sè vo aduprate una di e carte di sviluppu supportate, pudete accelerà u vostru sviluppu aduprendu u Pacchettu di Supportu di e Carte. Vede Cunsiglii Supplementari per più infurmazioni.
Custruisce u prugettu Custruisce u prugettu eseguendu:
idf.py custruisce
Stu cumandimu compilerà l'applicazione è tutti i cumpunenti ESP-IDF, allora generà u bootloader, a tabella di partizioni è i binari di l'applicazione.
$ idf.py build Esecuzione di cmake in u cartulare /path/to/hello_world/build Esecuzione di "cmake -G Ninja –warn-uninitialized /path/to/hello_world"... Avvisu nantu à i valori micca inizializati. — Git trovu: /usr/bin/git (versione "2.17.0" trovata) — Custruzzione di un cumpunente aws_iot viotu per via di a cunfigurazione — Nomi di i cumpunenti: ... — Percorsi di i cumpunenti: ...
... (più linee di output di u sistema di creazione)
[527/527] Generazione di hello_world.bin esptool.py v2.3.1
Custruzzione di u prugettu cumpletata. Per flashà, eseguite stu cumandamentu: ../../../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 o eseguite 'idf.py -p PORT flash'
Se ùn ci sò micca errori, a custruzzione finisce generendu u binariu di firmware .bin files.
Sistemi Espressif
20 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Flashate nantu à u dispusitivu Flashate i binari chì avete appena custruitu (bootloader.bin, partition-table.bin è hello_world.bin) nantu à a vostra scheda ESP32 eseguendu: idf.py -p PORT [-b BAUD] flash
Rimpiazzate PORT cù u nome di u portu seriale di a vostra scheda ESP32. Pudete ancu cambià a velocità di trasmissione di u flasher rimpiazzendu BAUD cù a velocità di trasmissione chì avete bisognu. A velocità di trasmissione predefinita hè 460800. Per più infurmazioni nantu à l'argumenti idf.py, vede idf.py.
Nota: L'opzione flash compila è flasha automaticamente u prugettu, dunque eseguisce idf.py build ùn hè micca necessariu.
Prublemi scontru durante u flashing ? Sè eseguite u cumandamentu datu è vede errori cum'è "Failed to connectp", ci ponu esse parechje ragioni per questu. Una di e ragioni pò esse i prublemi scontru da esptool.py, l'utilità chjamata da u sistema di compilazione per resettà u chip, interagisce cù u bootloader ROM è flashà u firmware. Una suluzione simplice da pruvà hè u reset manuale discrittu quì sottu, è s'ellu ùn aiuta micca pudete truvà più dettagli nantu à i pussibuli prublemi in Risoluzione di i prublemi.
esptool.py resetta ESP32 automaticamente asserendu e linee di cuntrollu DTR è RTS di u chip di cunvertitore USB à seriale, vale à dì, FTDI o CP210x (per più infurmazioni, vede Stabilisce una cunnessione seriale cù ESP32). E linee di cuntrollu DTR è RTS sò à u so tornu cunnesse à i pin GPIO0 è CHIP_PU (EN) di ESP32, cusì cambia u vulume.tagI livelli di DTR è RTS avvieranu ESP32 in modalità di scaricamentu di firmware. Cum'è un esempiuampEccu, verificate u schema di a scheda di sviluppu ESP32 DevKitC.
In generale, ùn duverete micca avè prublemi cù e schede di sviluppu ufficiali esp-idf. Tuttavia, esptool.py ùn hè micca capace di resettà automaticamente u vostru hardware in i seguenti casi:
· U vostru hardware ùn hà micca e linee DTR è RTS cunnesse à GPIO0 è CHIP_PU · E linee DTR è RTS sò cunfigurate in modu diversu · Ùn ci sò micca tali linee di cuntrollu seriale
Sicondu u tipu d'hardware chì avete, pò ancu esse pussibule di mette manualmente a vostra scheda ESP32 in modalità di scaricamentu di u firmware (reset).
· Per e schede di sviluppu prudutte da Espressif, sta infurmazione si pò truvà in e rispettive guide introduttive o guide per l'utente. Per esempiuampVale à dì, per resettà manualmente una scheda di sviluppu ESP-IDF, tene premutu u buttone Boot (GPIO0) è appughjà u buttone EN (CHIP_PU).
· Per altri tipi di hardware, pruvate à tirà giù GPIO0.
Funziunamentu nurmale Quandu lampeghja, viderete u registru di output simile à u seguente:
... 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 Porta seriale /dev/ttyUSB0 Cunnessione…….._ Chip hè ESP32D0WDQ6 (revisione 0) Caratteristiche: WiFi, BT, Dual Core, Schema di Codifica Nisunu Crystal hè 40MHz MAC: 24:0a:c4:05:b9:14 Caricamentu di stub… Esecuzione di stub… Stub in esecuzione… Cambiazione di a velocità di trasmissione à 460800 Cambiata.
(cuntinua à a pagina dopu)
Sistemi Espressif
21 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
(cuntinuazione da a pagina precedente) Configurazione di a dimensione di u flash... Cumpressu 3072 byte à 103... Scrittura à 0x00008000... (100 %) Scrittu 3072 byte (103 cumpressu) à 0x00008000 in 0.0 secondi (effettivu 5962.8 kbit/s)... Hash di dati verificatu. Cumpressu 26096 byte à 15408... Scrittura à 0x00001000... (100 %) Scrittu 26096 byte (15408 cumpressu) à 0x00001000 in 0.4 secondi (effettivu 546.7 kbit/s)... Hash di dati verificatu. Cumpressi 147104 byte à 77364… Scrittura à 0x00010000… (20 %) Scrittura à 0x00014000… (40 %) Scrittura à 0x00018000… (60 %) Scrittura à 0x0001c000… (80 %) Scrittura à 0x00020000… (100 %) Hà scrittu 147104 byte (77364 cumpressi) à 0x00010000 in 1.9 secondi (effettivi 615,5 kbit/s)… Hash di dati verificatu.
Lasciandu... Hard resetting via RTS pin... Fattu
S'ellu ùn ci sò micca prublemi à a fine di u prucessu di flash, a scheda si riavvierà è avvierà l'applicazione thehello_worldp. Sè vo vulete aduprà l'IDE Eclipse o VS Code invece di eseguisce idf.py, verificate Eclipse Plugin, VSCode Extension.
Monitorà l'output Per verificà se ohello_worldpis hè veramente in esecuzione, scrivite idf.py -p PORT monitor (Ùn vi scurdate di rimpiazzà PORT cù u nome di a vostra porta seriale).
Questu cumanda lancia l'applicazione IDF Monitor:
$ idf.py -p monitor Esecuzione di idf_monitor in u cartulare […]/esp/hello_world/build Esecuzione di "python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf"… — idf_monitor attivu 115200 —– Esce: Ctrl+] | Menu: Ctrl+T | Aiutu: Ctrl+T seguitatu da Ctrl+H –ets 8 di ghjugnu 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 di ghjugnu 2016 00:22:57 …
Dopu chì i registri di avviu è di diagnostica scorrenu in su, duvete vede oHello world!p stampatu da l'applicazione.
... Salutu à u mondu! Riavviu in 10 secondi... Questu hè un chip esp32 cù 2 core(i) di CPU, WiFi/BT/BLE, revisione silicio 1, flash esterna 2MB Dimensione minima di heap libera: 298968 byte Riavviu in 9 secondi... Riavviu in 8 secondi... Riavviu in 7 secondi...
Per esce da u monitor IDF, utilizate a scorciata Ctrl +].
Sistemi Espressif
22 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Sè u monitor IDF falla pocu dopu à u caricamentu, o, sè invece di i missaghji sopra, vede una spazzatura aleatoria simile à ciò chì hè datu quì sottu, a vostra scheda probabilmente usa un cristallu di 26 MHz. A maiò parte di i disinni di schede di sviluppu utilizanu 40 MHz, dunque ESP-IDF usa sta frequenza cum'è valore predefinitu.
Sè avete un prublema di stu tipu, fate cusì: 1. Escite da u monitor. 2. Vultate à menuconfig. 3. Andate à Configurazione di i cumpunenti > Impostazioni hardware > Configurazione XTAL principale > Frequenza XTAL principale, dopu cambiate CONFIG_XTAL_FREQ_SEL à 26 MHz. 4. Dopu à quessa, compilate è flashate di novu l'applicazione.
In a versione attuale di ESP-IDF, e principali frequenze XTAL supportate da ESP32 sò e seguenti:
· 26 MHz · 40 MHz
Nota: Pudete cumminà a custruzzione, u flashing è u monitoraghju in un solu passu eseguendu: idf.py -p PORT flash monitor
Vede ancu: · IDF Monitor per scorciatoie pratiche è più dettagli nantu à l'usu di IDF monitor. · idf.py per una riferenza cumpleta di i cumandamenti è l'opzioni idf.py.
Hè tuttu ciò chì avete bisognu per cumincià cù ESP32! Avà site prontu à pruvà qualchì altru esempiu.amples, o andate direttamente à sviluppà e vostre proprie applicazioni.
Impurtante: Certi di exampI schedari ùn supportanu micca ESP32 perchè l'hardware necessariu ùn hè micca inclusu in ESP32 dunque ùn pò esse supportatu. Sè vo custruite un example, per piacè verificate u README file per a tavula di Obiettivi Supportati. Sè questu hè presente cumpresu u scopu ESP32, o a tavula ùn esiste micca, l'exampFunzionerà nantu à ESP32.
Cunsiglii supplementari
Prublemi di permessu /dev/ttyUSB0 Cù certe distribuzioni Linux, pudete riceve u missaghju d'errore "Failed to open port /dev/ttyUSB0" quandu si lampa l'ESP32. Questu pò esse risoltu aghjunghjendu l'utente attuale à u gruppu di dialout.
Compatibilità Python ESP-IDF supporta Python 3.7 o più recente. Hè cunsigliatu di aghjurnà u vostru sistema operativu à una versione recente chì suddisfa questu requisitu. Altre opzioni includenu l'installazione di Python da i surghjenti o l'usu di un sistema di gestione di versione Python cum'è pyenv.
Cuminciate cù u Pacchettu di Supportu di a Carta Per accelerà a prototipazione nantu à alcune carte di sviluppu, pudete aduprà i Pacchetti di Supportu di a Carta (BSP), chì rendenu l'inizializazione di una carta particulare faciule cum'è poche chjamate di funzione.
Sistemi Espressif
23 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Un BSP supporta tipicamente tutti i cumpunenti hardware furniti nantu à a carta di sviluppu. Oltre à a definizione di u pinout è e funzioni d'inizializazione, un BSP vene cun driver per i cumpunenti esterni cum'è sensori, display, codec audio ecc. I BSP sò distribuiti via IDF Component Manager, dunque ponu esse truvati in IDF Component Registry. Eccu un esempiu.ampEccu cumu aghjunghje ESP-WROVER-KIT BSP à u vostru prughjettu: idf.py add-dependency esp_wrover_kit
Più exampL'usu di BSP pò esse truvatu in BSP examples folder.
Documenti cunnessi Per l'utilizatori avanzati chì volenu persunalizà u prucessu d'installazione: · Aghjurnamentu di l'arnesi ESP-IDF in Windows · Stabilisce una cunnessione seriale cù ESP32 · Plugin Eclipse · Estensione VSCode · Monitor IDF
Aghjurnamentu di l'arnesi ESP-IDF in Windows
Installà l'arnesi ESP-IDF cù un script Da u prompt di cumanda di Windows, cambiate à u cartulare induve hè installatu ESPIDF. Dopu eseguite:
install.bat
Per Powershell, cambiate à u cartulare induve ESP-IDF hè installatu. Dopu eseguite:
installà.ps1
Questu scaricherà è installerà l'arnesi necessarii per aduprà ESP-IDF. Sè a versione specifica di u strumentu hè digià installata, ùn serà presa alcuna azzione. L'arnesi sò scaricati è installati in un cartulare specificatu durante u prucessu di installazione di l'arnesi ESP-IDF. Per difettu, questu hè C:Usersusername.espressif.
Aghjunghje l'arnesi ESP-IDF à PATH aduprendu un script d'esportazione L'installatore di l'arnesi ESP-IDF crea una scurciatoia di u menu Start per oESP-IDF Command Promptp. Questa scurciatoia apre una finestra di Command Prompt induve tutti l'arnesi sò digià
dispunibule. In certi casi, pudete vulè travaglià cù ESP-IDF in una finestra di prompt di cumanda chì ùn hè stata iniziata cù quella scurciatoia. Sè questu hè u casu, seguitate l'istruzzioni sottu per aghjunghje strumenti ESP-IDF à PATH. In u prompt di cumanda induve avete bisognu di utilizà ESP-IDF, cambiate à u cartulare induve hè installatu ESP-IDF, dopu eseguite export.bat:
cd %userprofile%espesp-idf export.bat
In alternativa, in Powershell induve avete bisognu di utilizà ESP-IDF, cambiate à u cartulare induve hè installatu ESP-IDF, dopu eseguite export.ps1:
cd ~/esp/esp-idf export.ps1
Quandu questu hè fattu, l'arnesi saranu dispunibili in questu prompt di cumanda.
Stabilisce una cunnessione seriale cù ESP32 Questa sezione furnisce una guida nantu à cumu stabilisce una cunnessione seriale trà ESP32 è PC.
Sistemi Espressif
24 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Cunnette ESP32 à PC Cunnette a carta ESP32 à u PC cù u cavu USB. Sè u driver di u dispusitivu ùn s'installa micca automaticamente, identificate u chip di cunversione USB à seriale nantu à a vostra carta ESP32 (o dongle di cunversione esternu), cercate i driver in Internet è installateli. Quì sottu hè a lista di i chip di cunversione USB à seriale installati nantu à a maiò parte di e carte ESP32 prodotte da Espressif inseme cù i ligami à i driver:
· CP210x: Driver VCP di u ponte USB à UART CP210x · FTDI: Driver di porta COM virtuale FTDI Per piacè verificate a guida di l'utente di a scheda per u chip di cunvertitore USB à seriale specificu utilizatu. I driver sopra sò principalmente per riferimentu. In circustanze nurmali, i driver devenu esse furniti cù un sistema operativu è installati automaticamente dopu avè cunnessu a scheda à u PC.
Verificate u portu in Windows Verificate a lista di i porti COM identificati in u Gestione di dispositivi di Windows. Scollegate ESP32 è ricollegatelu, per verificà quale portu sparisce da a lista è poi riappare. E figure sottu mostranu u portu seriale per ESP32 DevKitC è ESP32 WROVER KIT
Fig. 13: Ponte USB à UART di ESP32-DevKitC in u Gestione Dispositivi di Windows
Verificate u portu in Linux è macOS Per verificà u nome di u dispusitivu per u portu seriale di a vostra scheda ESP32 (o dongle di cunvertitore esternu), eseguite stu cumandamentu duie volte, prima cù a scheda / dongle scollegatu, dopu cù cunnessu. U portu chì appare a seconda volta hè quellu chì avete bisognu: Linux
ls /dev/tty*
macOS
Sistemi Espressif
25 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 14: Dui porti seriali USB di ESP-WROVER-KIT in u Gestione di dispositivi di Windows
Sistemi Espressif
26 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
ls /dev/cu.* Nota: utilizatori macOS: s'è vo ùn vede micca u portu seriale, verificate chì avete i driver USB/seriali installati. Vede a Sezione Cunnette ESP32 à u PC per i ligami à i driver. Per macOS High Sierra (10.13), pudete ancu avè bisognu di permette esplicitamente u caricamentu di i driver. Aprite Preferenze di Sistema -> Sicurezza è Privacy -> Generale è verificate s'ellu ci hè un missaghju mostratu quì nantu à oSystem Software da u sviluppatore lp induve u nome di u sviluppatore hè Silicon Labs o FTDI.
Aghjunghjendu un utilizatore à u gruppu di dialout in Linux L'utilizatore attualmente cunnessu deve avè accessu in lettura è scrittura à u portu seriale via USB. In a maiò parte di e distribuzioni Linux, questu hè fattu aghjunghjendu l'utilizatore à u gruppu di dialout cù u cumandamentu seguente:
sudo usermod -a -G dialout $USER
nantu à Arch Linux questu hè fattu aghjunghjendu l'utilizatore à u gruppu uucp cù u cumandimu seguente:
sudo usermod -a -G uucp $USER
Assicuratevi di re-login per attivà i permessi di lettura è scrittura per u portu seriale.
Verificate a cunnessione seriale Avà verificate chì a cunnessione seriale hè operativa. Pudete fà questu aduprendu un prugramma di terminal seriale verificendu s'ellu avete qualchì output nantu à u terminal dopu avè resettatu ESP32. A velocità di trasmissione predefinita di a cunsola nantu à ESP32 hè 115200.
Windows è Linux In questu exampuseremu u cliente PuTTY SSH chì hè dispunibule sia per Windows sia per Linux. Pudete aduprà altri prugrammi seriali è stabilisce i parametri di cumunicazione cum'è quì sottu. Eseguite u terminal è stabilisce u portu seriale identificatu. Velocità di trasmissione = 115200 (se necessariu, cambiate questu à a velocità di trasmissione predefinita di u chip in usu), bit di dati = 8, bit di stop = 1, è parità = N. Quì sottu sò esempi.ampE screenshots di l'impostazione di u portu è di tali parametri di trasmissione (in breve descritti cum'è 115200-8-1-N) in Windows è Linux. Ricurdatevi di selezziunà esattamente u listessu portu seriale chì avete identificatu in i passi sopra. Dopu, aprite u portu seriale in u terminal è verificate se vede un log stampatu da ESP32. U cuntenutu di u log dipenderà da l'applicazione caricata in ESP32, vede Esempiuampl'output.
Nota: Chjude u terminal seriale dopu avè verificatu chì a cumunicazione funziona. Sè vo mantene a sessione di u terminal aperta, u portu seriale serà inaccessibile per u caricamentu di u firmware dopu.
macOS Per risparmià vi a fatica d'installà un prugramma di terminal seriale, macOS offre u cumandamentu screen. · Cum'è discrittu in Check port on Linux and macOS, eseguite:
ls /dev/cu.* · Duvete vede un output simile:
/dev/cu.Porta-entrata-Bluetooth /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· L'output varierà secondu u tipu è u numeru di carte cunnesse à u vostru PC. Dopu, sceglite u nome di u dispusitivu di a vostra carta è eseguite (se necessariu, cambiate o115200pto a velocità di baud predefinita di u chip in usu):
screen /dev/cu.device_name 115200 Rimpiazzate device_name cù u nome truvatu eseguendu ls /dev/cu.*.
Sistemi Espressif
27 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 15: Configurazione di a cumunicazione seriale in PuTTY in Windows
Sistemi Espressif
28 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Fig. 16: Configurazione di a cumunicazione seriale in PuTTY in Linux
Sistemi Espressif
29 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
· Ciò chì cercate hè un log visualizatu da u schermu. U cuntenutu di u log dipenderà da l'applicazione caricata in ESP32, vede Esempiuampl'Output. Per sorte da a sessione di schermu, scrivite Ctrl-A + .
Nota: Ùn vi scurdate di sorte da a sessione di schermu dopu avè verificatu chì a cumunicazione funziona. Sè ùn riescite micca à fà lu è chjude solu a finestra di u terminal, u portu seriale serà inaccessibile per u caricamentu di u firmware dopu.
Exampl'output Un esempiuampU log hè mostratu quì sottu. Resettate a scheda se ùn vedete nunda. ets 8 di ghjugnu 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 di ghjugnu 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: tempu di compilazione 18:48:10
…
Sè vo pudete vede l'output di u log leggibile, significa chì a cunnessione seriale funziona è site prontu à cuntinuà cù l'installazione è infine u caricamentu di l'applicazione in ESP32.
Nota: Per alcune cunfigurazioni di cablaggio di u portu seriale, i pin seriali RTS è DTR devenu esse disattivati in u prugramma di u terminal prima chì l'ESP32 si avvii è pruduci un output seriale. Questu dipende da l'hardware stessu, a maiò parte di e schede di sviluppu (cumprese tutte e schede Espressif) ùn anu micca stu prublema. U prublema hè presente se RTS è DTR sò cablati direttamente à i pin EN è GPIO0. Vede a documentazione di esptool per più dettagli.
Sè vo site ghjuntu quì da u Passu 5. Primi Passi nantu à ESP-IDF quandu installate u software per u sviluppu ESP32, allora pudete cuntinuà cù u Passu 5. Primi Passi nantu à ESP-IDF.
IDF Monitor IDF Monitor hè principalmente un prugramma di terminale seriale chì trasmette dati seriali da è versu u portu seriale di u dispusitivu di destinazione. Fornisce ancu alcune funzionalità specifiche di IDF. IDF Monitor pò esse lanciatu da un prughjettu IDF eseguendu idf.py monitor.
Accurtatoghji di tastiera Per una interazzione faciule cù IDF Monitor, aduprate l'accurtatoghji di tastiera indicati in a tabella.
Sistemi Espressif
30 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Accurtatoghju di tastiera Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (o A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (o I)
· Ctrl+H (o H)
· Ctrl+X (o X)
Ctrl + C
Azzione
Descrizzione
Esci da u prugramma Tasta escape di u menu Manda u caratteru di u menu stessu à u telecomandu
Mandate u caratteru di uscita stessu à u remoto
Resettà u target in u bootloader per mette in pausa l'app via a linea RTS
Resettà u pannellu di destinazione via RTS
Custruisce è flashà u prugettu
Custruisce è lampà solu l'app
Ferma/ripiglia a stampa di l'output di u log nantu à u screnu
Ferma/riprende l'output di u log salvatu in file
Tempu di fermata/ripresaamps
stampa
Mostra tutte e scorciatoie di tastiera
Appughjà è seguitate cù una di e chjave date quì sottu.
Reseteghja a carta di destinazione, in u bootloader via a linea RTS (se cunnessa), in modu chì a carta ùn esegue nunda. Utile quandu avete bisognu d'aspittà chì un altru dispositivu si avvii. Reseteghja a carta di destinazione è riavvia l'applicazione via a linea RTS (se cunnessa).
Mette in pausa idf_monitor per eseguisce u target flash di u prugettu, poi riprende idf_monitor. Ogni surghjente cambiatu fileI s sò ricompilati è dopu riflascati. U target encrypted-flash hè eseguitu se idf_monitor hè statu iniziatu cù l'argumentu -E. Mette in pausa idf_monitor per eseguisce u target app-flash, dopu riprende idf_monitor. Simile à u target flash, ma solu l'applicazione principale hè custruita è riflascata. U target encrypted-app-flash hè eseguitu se idf_monitor hè statu iniziatu cù l'argumentu -E. Scarta tutti i dati seriali in entrata mentre hè attivatu. Permette di mette in pausa rapidamente è esaminà l'output di u log senza abbandunà u monitor. Crea un file in u cartulare di u prugettu è l'output hè scrittu in quellu file finu à chì questu sia disattivatu cù a listessa scurciatoia di tastiera (o IDF Monitor si ferma). IDF Monitor pò stampà un timestamp à l'iniziu di ogni linea. U più tempuamp u furmatu pò esse cambiatu da u -timestamp-format argumentu di a linea di cummanda.
Esci da u prugramma
Interrompe l'applicazione in esecuzione
Mette in pausa IDF Monitor è eseguisce u debugger di u prughjettu GDB per debugà l'applicazione in tempu reale. Questu richiede chì l'opzione :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME sia attivata.
Ogni chjave premuta, fora di Ctrl-] è Ctrl-T, serà mandata per via di u portu seriale.
Funziunalità specifiche di l'IDF
Decodificazione automatica di l'indirizzi Ogni volta chì ESP-IDF emette un indirizzu di codice esadecimale di a forma 0x4_______, IDF Monitor usa addr2line_ per circà a pusizione in u codice surghjente è truvà u nome di a funzione.
Sè una applicazione ESP-IDF si blocca è entra in panicu, si produce un dump di registru è un backtrace, cum'è u seguente:
Sistemi Espressif
31 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Errore di Meditazione Guru di tipu StoreProhibited hè accadutu nantu à u core 0. L'eccezzione era
senza trattamentu.
Dump di registru:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 SCUSÀ:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor aghjusta più dettagli à u dump:
Errore di Meditazione Guru di tipu StoreProhibited hè accadutu nantu à u core 0. L'eccezzione era
senza trattamentu.
Dump di registru:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: fà_qualcosa_per_fallisce à /home/gus/esp/32/idf/examples/inizià/
ciao_mondu/main/./ciao_mondu_main.c:57
(in linea da) inner_dont_crash à /home/gus/esp/32/idf/examples/inizià/ciao_
mondu/principale/./hello_world_main.c:52
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 SCUSÀ:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0x00000000
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 (inlined 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 à /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash à /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main à /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task à /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
Per decifrà ogni indirizzu, IDF Monitor esegue u cumandamentu seguente in u sfondate: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Nota: Impostate a variabile d'ambiente ESP_MONITOR_DECODE à 0 o chjamate idf_monitor.py cù una linea di cummanda specifica
Sistemi Espressif
32 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
opzione: idf_monitor.py –disable-address-decoding per disattivà a decodificazione di l'indirizzu.
Reset di u Target à a Cunnessione Per difettu, IDF Monitor resetterà u target quandu si cunnette. U reset di u chip di target hè realizatu aduprendu e linee seriali DTR è RTS. Per impedisce à IDF Monitor di resettà automaticamente u target à a cunnessione, chjamate IDF Monitor cù l'opzione -no-reset (per esempiu, idf_monitor.py -no-reset).
Nota: L'opzione –no-reset applica u listessu cumpurtamentu ancu quandu si cunnette IDF Monitor à un portu particulare (per esempiu, idf.py monitor –no-reset -p [PORT]).
Lanciamentu di GDB cù GDBStub GDBStub hè una funzione di debugging utile in tempu reale chì funziona nantu à u target è si cunnetta à l'ospite via u portu seriale per riceve cumandamenti di debugging. GDBStub supporta cumandamenti cum'è a lettura di memoria è variabili, l'esame di i frame di stack di chjamate ecc. Ancu s'è GDBStub hè menu versatile chè JTAG debugging, ùn richiede micca hardware speciale (cum'è un JTAG à u ponte USB) postu chì a cumunicazione hè fatta interamente via u portu seriale. Un target pò esse cunfiguratu per eseguisce GDBStub in u sfondate impostendu CONFIG_ESP_SYSTEM_PANIC à GDBStub in tempu d'esecuzione. GDBStub funziona in u sfondate finu à chì un missaghju Ctrl+C hè mandatu via u portu seriale è face chì GDBStub interrompe (vale à dì, ferma l'esecuzione di) u prugramma, permettendu cusì à GDBStub di gestisce i cumandamenti di debugging. Inoltre, u gestore di panicu pò esse cunfiguratu per eseguisce GDBStub in casu di crash impostendu CONFIG_ESP_SYSTEM_PANIC à GDBStub in casu di panicu. Quandu si verifica un crash, GDBStub emetterà un mudellu di stringa speciale via u portu seriale per indicà chì hè in esecuzione. In i dui casi (vale à dì, mandendu u missaghju Ctrl+C, o ricevendu u mudellu di stringa speciale), IDF Monitor lancerà automaticamente GDB per permette à l'utente di mandà cumandamenti di debugging. Dopu chì GDB esce, u target hè resettatu via a linea seriale RTS. Sè sta linea ùn hè micca cunnessa, l'utilizatori ponu resettà u so target (pressendu u buttone Reset di a scheda).
Nota: In u sfondate, IDF Monitor esegue u cumandamentu seguente per lancià GDB:
xtensa-esp32-elf-gdb -ex "imposta u baud seriale BAUD" -ex "PORTU remotu di destinazione" -ex interrupt build/PROJECT.elf :idf_target:`Ciao NOME chip`
Filtraggio di l'output U monitor IDF pò esse invucatu cum'è idf.py monitor –print-filter="xyz", induve –print-filter hè u parametru per u filtraggio di l'output. U valore predefinitu hè una stringa viota, ciò chì significa chì tuttu hè stampatu.
E restrizioni nantu à ciò chì stampà ponu esse specificate cum'è una seria ditag>: articuli induvetag> hè u tag corda è hè un caratteru di l'inseme {N, E, W, I, D, V, *} chì si riferisce à un livellu per a registrazione.
Per esampquì, PRINT_FILTER="tag1:W” currisponde è stampa solu l'output scritti cù ESP_LOGW(“tag1”, …) o à un livellu di verbosità più bassu, vale à dì ESP_LOGE(“tag1″, …). Ùn specificà micca un o aduprendu * per difettu à u livellu Verbose.
Nota: Aduprate a registrazione primaria per disattivà à a compilazione l'output chì ùn avete micca bisognu per mezu di a biblioteca di registrazione. U filtraggio di l'output cù u monitor IDF hè una suluzione secundaria chì pò esse utile per aghjustà l'opzioni di filtraggio senza ricompilà l'applicazione.
A vostra applicazione tags ùn deve cuntene spazii, asterischi *, o dui punti : per esse cumpatibile cù a funzione di filtrazione di output.
Sè l'ultima linea di l'output in a vostra applicazione ùn hè micca seguitata da un ritornu di carru, u filtraggio di l'output puderia esse cunfusu, vale à dì, u monitor principia à stampà a linea è dopu scopre chì a linea ùn duveria esse stata scritta. Questu hè un prublema cunnisciutu è pò esse evitatu aghjunghjendu sempre un ritornu di carru (in particulare quandu ùn ci hè micca output subitu dopu).
Sistemi Espressif
33 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
ExampRegole di filtrazione:
· * pò esse adupratu per currisponde à qualsiasi tagsTuttavia, a stringa PRINT_FILTER="*:I" tag1:E" in quantu à tag1 stampa solu errori, perchè a regula per tag1 hà una priorità più alta chè a regula per *.
· A regula predefinita (vuota) hè equivalente à *:V perchè currisponde à ogni tag à u livellu Verbose o più bassu significa currisponde à tuttu.
· «*:N» sopprime micca solu l'output di e funzioni di logging, ma ancu e stampe fatte da printf, ecc. Per evità questu, aduprate *:E o un livellu di verbosità più altu.
· Regole "tag1:V”, “tag1:v”, “tag1:", "tag1:*”, è “tag1” sò equivalenti. · Regula “tag1:W tag1:E" hè equivalente à "tag1:E" perchè ogni cunsequenza di listessa tag
u nome sovrascrive quellu precedente. · Regula "tag1: I tag2:W” solu stampe tag1 à u livellu di verbosità Info o più bassu è tag2 à l'avvertimentu
livellu di verbosità o più bassu. · Regula "tag1: I tag2:W tag3:N" hè essenzialmente equivalente à quellu precedente perchè tag3:N specifica
chì tag3 ùn deve esse stampatu. · tag3:N in a regula "tag1: I tag2:W tag3:N *:V” hè più significativu perchè senza tag3:N u
tag3 missaghji pudianu esse stati stampati; l'errori per tag1 è tag2 serà stampatu à u livellu di verbosità specificatu (o inferiore) è tuttu u restu serà stampatu per difettu.
Un esempiu di filtrazione più cumplessuampU seguente frammentu di log hè statu acquistatu senza alcuna opzione di filtraggio:
carica: 0x40078000, len: 13564 entrata 0x40078d4c E (31) esp_image: l'imagine à 0x30000 hà un byte magicu invalidu W (31) esp_image: l'imagine à 0x30000 hà una modalità SPI invalida 255 E (39) boot: A partizione di l'applicazione di fabbrica ùn hè micca avviabile I (568) cpu_start: CPU Pro attiva. I (569) heap_init: Inizializazione. RAM dispunibule per l'allocazione dinamica: I (603) cpu_start: Codice utilizatore di avviu di CPU Pro D (309) light_driver: [light_init, 74]: statutu: 1, modalità: 2 D (318) vfs: esp_vfs_register_fd_range hà successu per l'intervallu <54; 64) è VFS ID 1 I (328) wifi: attività di u driver wifi: 3ffdbf84, prio:23, stack:4096, core=0
L'output catturatu per l'opzioni di filtraggio PRINT_FILTER="wifi esp_image:E light_driver:I" hè datu quì sottu:
E (31) esp_image: l'imagine à 0x30000 hà un byte magicu invalidu I (328) wifi: attività di u driver wifi: 3ffdbf84, prio:23, stack:4096, core=0
L'opzioni "PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" mostranu l'output seguente:
carica: 0x40078000, len: 13564 entrata 0x40078d4c I (569) heap_init: Inizializazione. RAM dispunibile per l'allocazione dinamica: D (309) light_driver: [light_init, 74]: statu: 1, modu: 2
Prublemi cunnisciuti cù IDF Monitor
Prublemi osservati in Windows
· I tasti freccia, è ancu alcuni altri tasti, ùn funzionanu micca in GDB per via di limitazioni di a Cunsola di Windows. · Calchì volta, quandu oidf.pypexits, pò bluccà si finu à 30 secondi prima chì IDF Monitor ripigli. · Quandu ogdbpis hè in esecuzione, pò bluccà si per un cortu periodu prima di cumincià à cumunicà cù GDBStub.
Sistemi Espressif
34 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià cù a cunfigurazione standard di a Toolchain per Linux è macOS
Installazione Passu à Passu Questa hè una guida dettagliata per guidà vi attraversu u prucessu d'installazione.
Cunfigurazione di l'ambiente di sviluppu Quessi sò i passi per cunfigurà l'ESP-IDF per u vostru ESP32. · Passu 1. Prerequisiti d'installazione · Passu 2. Ottene ESP-IDF · Passu 3. Cunfigurà l'arnesi · Passu 4. Cunfigurà e variabili d'ambiente · Passu 5. Primi passi nantu à ESP-IDF
Passu 1. Prerequisiti d'installazione Per aduprà ESP-IDF cù l'ESP32, avete bisognu d'installà alcuni pacchetti software basati nantu à u vostru Sistema Operativu. Questa guida di cunfigurazione vi aiuterà à installà tuttu nantu à i sistemi basati nantu à Linux è macOS.
Per l'utilizatori di Linux Per cumpilà cù ESP-IDF, avete bisognu di ottene i seguenti pacchetti. U cumandamentu da eseguisce dipende da a distribuzione di Linux chì utilizate:
· Ubuntu è 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 hè sempre supportatu, ma a versione 8 di CentOS hè cunsigliata per una megliu sperienza d'utilizatore. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Nota: · A versione 3.16 o più recente di CMake hè necessaria per l'usu cù ESP-IDF. Eseguite otools/idf_tools.py install cmakepto per installà una versione adatta se e versioni di u vostru sistema operativu ùn ne anu micca una. · Se ùn vede micca a vostra distribuzione Linux in a lista sopra, verificate a so documentazione per sapè quale cumandamentu aduprà per l'installazione di i pacchetti.
Per l'utilizatori di macOS, ESP-IDF aduprerà a versione di Python installata per difettu in macOS. · Installate CMake & Ninja build: Sè vo avete HomeBrew, pudete eseguisce: brew install cmake ninja dfu-util Sè vo avete MacPorts, pudete eseguisce: sudo port install cmake ninja dfu-util Altrimenti, cunsultate e pagine principali di CMake è Ninja per i scaricamenti d'installazione di macOS.
Sistemi Espressif
35 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
· Hè assai cunsigliatu d'installà ancu ccache per compilazioni più veloci. Sè vo avete HomeBrew, questu pò esse fattu via brew install ccache o sudo port install ccache nant'à MacPorts.
Nota: Sè un errore cum'è questu hè mostratu durante qualsiasi passu: xcrun: errore: percorsu di sviluppatore attivu invalidu (/Library/Developer/CommandLineTools), manca xcrun in: /Library/Developer/CommandLineTools/usr/bin/xcrun
Dopu, duverete installà l'arnesi di linea di cummanda XCode per cuntinuà. Pudete installà questi eseguendu xcode-select –install.
Utilizatori Apple M1 Sè vo aduprate a piattaforma Apple M1 è vede un errore cum'è questu: ATTENZIONE: u cartulare per u strumentu xtensa-esp32-elf versione esp-2021r2-patch3-8.4.0 hè presente, ma u strumentu ùn hè statu trovu ERRORE: u strumentu xtensa-esp32-elf ùn hà micca versioni installate. Per piacè eseguite 'install.sh' per installallu.
o: zsh: tipu di CPU sbagliatu in l'eseguibile: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Dopu, duverete installà Apple Rosetta 2 eseguendu /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Installazione di Python 3 Basatu annantu à e note di versione di macOS Catalina 10.15, l'usu di Python 2.7 ùn hè micca cunsigliatu è Python 2.7 ùn serà micca inclusu per difettu in e versioni future di macOS. Verificate quale Python avete attualmente: python –version
Sè l'output hè cum'è Python 2.7.17, u vostru interprete predefinitu hè Python 2.7. Sè cusì, verificate ancu se Python 3 ùn hè micca digià installatu nant'à u vostru urdinatore: python3 –version
Sè u cumandamentu sopra restituisce un errore, significa chì Python 3 ùn hè micca installatu. Quì sottu hè una schermata sopra.view di i passi per installà Python 3.
· L'installazione cù HomeBrew pò esse fatta cusì: brew install python3
· Sè vo avete MacPorts, pudete eseguisce: sudo port install python38
Passu 2. Ottene ESP-IDF Per custruisce applicazioni per ESP32, avete bisognu di e biblioteche di software furnite da Espressif in u repositoriu ESP-IDF. Per ottene ESP-IDF, navigate à u vostru cartulare d'installazione è clonate u repositoriu cù git clone, seguendu l'istruzzioni sottu specifiche per u vostru sistema operativu. Aprite u Terminale, è eseguite i cumandamenti seguenti:
Sistemi Espressif
36 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF serà scaricatu in ~/esp/esp-idf. Cunsultate Versioni ESP-IDF per infurmazione nantu à quale versione ESP-IDF à aduprà in una situazione determinata.
Passu 3. Cunfigurà l'arnesi Oltre à l'ESP-IDF, avete ancu bisognu d'installà l'arnesi utilizati da ESP-IDF, cum'è u compilatore, u debugger, i pacchetti Python, ecc., per i prughjetti chì supportanu ESP32. cd ~/esp/esp-idf ./install.sh esp32
o cù u cd di cunchiglia di pesce ~/esp/esp-idf ./install.fish esp32
I cumandamenti sopra installanu strumenti solu per ESP32. Sè avete intenzione di sviluppà prughjetti per più obiettivi di chip, allora duvete elencalli tutti è eseguilli per esempiu.ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
o cù u cd di cunchiglia di pesce ~/esp/esp-idf ./install.fish esp32,esp32s2
Per installà strumenti per tutti i destinazioni supportate, eseguite u cumandamentu seguente: cd ~/esp/esp-idf ./install.sh all
o cù u cd di cunchiglia di pesce ~/esp/esp-idf ./install.fish all
Nota: Per l'utilizatori di macOS, se un errore cum'è questu hè mostratu durante qualsiasi passu:urlerrore d'apertura [SSL: CERTIFICATE_VERIFY_FAILED] verificazione di u certificatu fiascata: impussibile d'ottene u certificatu di l'emittente lucale (_ssl.c:xxx)
Pudete eseguisce u cumandamentu Install Certificates.in u cartulare Python di u vostru urdinatore per installà i certificati. Per i dettagli, vede Errore di scaricamentu durante l'installazione di strumenti ESP-IDF.
Alternativa File Scaricamenti L'installatore di strumenti scarica un certu numeru di files attaccatu à GitHub Releases. Sè l'accessu à GitHub hè lentu, hè pussibule di definisce una variabile d'ambiente per preferisce u servitore di scaricamentu Espressifns per i scaricamenti di risorse GitHub.
Nota: Questa impostazione cuntrolla solu i strumenti individuali scaricati da e versioni di GitHub, ùn cambia micca u URLs'utilizatu per accede à qualsiasi repositoriu Git.
Per preferisce u servitore di scaricamentu Espressif quandu installate strumenti, aduprate a seguente sequenza di cumandamenti quandu eseguite install.sh:
Sistemi Espressif
37 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Persunalizazione di u percorsu d'installazione di l'arnesi I script introdutti in questu passu installanu l'arnesi di compilazione richiesti da ESP-IDF in u cartulare principale di l'utente: $HOME/.espressif in Linux. Sè vo vulete installà l'arnesi in un cartulare diversu, impostate a variabile d'ambiente IDF_TOOLS_PATH prima di eseguisce i script d'installazione. Assicuratevi chì u vostru contu utilizatore abbia permessi sufficienti per leghje è scrive stu percorsu. Sè cambiate IDF_TOOLS_PATH, assicuratevi chì sia impostatu à u listessu valore ogni volta chì u script d'installazione (install.bat, install.ps1 o install.sh) è un script d'esportazione (export.bat, export.ps1 o export.sh) sò eseguiti.
Passu 4. Cunfigurà e variabili d'ambiente L'arnesi installati ùn sò ancu aghjunti à a variabile d'ambiente PATH. Per rende l'arnesi utilizabili da a linea di cummanda, alcune variabili d'ambiente devenu esse cunfigurate. ESP-IDF furnisce un altru script chì face questu. In u terminal induve avete da aduprà ESP-IDF, eseguite:
. $HOME/esp/esp-idf/export.sh
o per i pesci (supportatu solu da a versione 3.0.0 di i pesci):
. $HOME/esp/esp-idf/export.fish
Nutate u spaziu trà u puntu principale è u percorsu! Sè avete intenzione di utilizà esp-idf spessu, pudete creà un alias per eseguisce export.sh:
1. Copiate è incollate u cumandamentu seguente in u vostru shellns profile (.profile, .bashrc, .zprofile, etc.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Aggiornate a cunfigurazione riavviendu a sessione di terminal o eseguendu source [path to profile],
per example, surghjente ~/.bashrc. Avà pudete eseguisce get_idf per cunfigurà o rinfrescà l'ambiente esp-idf in ogni sessione di terminal. Tecnicamente, pudete aghjunghje export.sh à u vostru shellns profile direttamente; però, ùn hè micca cunsigliatu. Fendu cusì, si attiva l'ambiente virtuale IDF in ogni sessione di terminale (cumprese quelle induve IDF ùn hè micca necessariu), vanificendu u scopu di l'ambiente virtuale è probabilmente affettendu altri software.
Passu 5. Primi Passi nantu à ESP-IDF Avà, postu chì tutti i requisiti sò soddisfatti, u prossimu tema vi guiderà nantu à cumu inizià u vostru primu prughjettu. Questa guida vi aiuterà in i primi passi cù ESP-IDF. Seguitate sta guida per inizià un novu prughjettu nantu à l'ESP32 è custruisce, flashà è monitorà l'output di u dispusitivu.
Nota: Sè vo ùn avete ancu installatu ESP-IDF, andate à Installazione è seguitate l'istruzzioni per ottene tuttu u software necessariu per aduprà sta guida.
Principià un prughjettu Avà site prontu à preparà a vostra applicazione per ESP32. Pudete principià cù u prughjettu getstarted/hello_world da exampl'annuariu les in ESP-IDF.
Impurtante: U sistema di compilazione ESP-IDF ùn supporta micca i spazii in i percorsi versu ESP-IDF o versu i prughjetti.
Cupiate u prugettu get-started/hello_world in u cartulare ~/esp:
Sistemi Espressif
38 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Nota: Ci hè una gamma di example prughjetti in l'exampl'annuariu les in ESP-IDF. Pudete copià ogni prughjettu in u listessu modu cum'è prisentatu sopra è eseguisce. Hè ancu pussibule di custruisce examples in situ senza copialli prima.
Cunnette u vostru dispusitivu Avà cunnette a vostra scheda ESP32 à l'urdinatore è verificate sottu à quale portu seriale a scheda hè visibile. I porti seriali anu i seguenti mudelli di denominazione:
· Linux: cuminciendu cù /dev/tty · macOS: cuminciendu cù /dev/cu. Sè ùn site micca sicuru di cumu verificà u nome di a porta seriale, riferitevi à Stabilisce una cunnessione seriale cù ESP32 per i dettagli cumpleti.
Nota: Mantene u nome di u portu cum'è avete bisognu in i prossimi passi.
Cunfigurà u vostru prughjettu Navigate à u vostru cartulare hello_world, impostate ESP32 cum'è destinazione, è eseguite l'utilità di cunfigurazione di u prughjettu menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Dopu avè apertu un novu prughjettu, duvete prima definisce u target cù idf.py set-target esp32. Nutate bè chì e compilazioni è e cunfigurazioni esistenti in u prughjettu, s'ellu ci n'hè, seranu sguassate è inizializate in questu prucessu. U target pò esse salvatu in a variabile d'ambiente per saltà stu passu. Vede Selezziunà u Chip di Target: set-target per più infurmazioni. Se i passi precedenti sò stati fatti currettamente, appare u menu seguente:
Fig. 17: Cunfigurazione di u prugettu - Finestra iniziale Aduprate stu menu per cunfigurà variabili specifiche di u prugettu, per esempiu, nome è password di a rete Wi-Fi, a velocità di u processore, ecc. A cunfigurazione di u prugettu cù menuconfig pò esse saltata per hello_worldp, postu chì questu exampcorre cun
Sistemi Espressif
39 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
cunfigurazione predeterminata.
Attenzione: Sè vo aduprate a carta ESP32-DevKitC cù u modulu ESP32-SOLO-1, o a carta ESP32-DevKitM-1 cù u modulu ESP32-MIN1-1(1U), per piacè attivate a modalità single core (CONFIG_FREERTOS_UNICORE) in menuconfig prima di lampà ex.amples.
Nota: I culori di u menu puderanu esse sfarenti in u vostru terminal. Pudete cambià l'aspettu cù l'opzione -style. Per piacè eseguite idf.py menuconfig -help per più infurmazioni.
Sè vo aduprate una di e carte di sviluppu supportate, pudete accelerà u vostru sviluppu aduprendu u Pacchettu di Supportu di e Carte. Vede Cunsiglii Supplementari per più infurmazioni.
Custruisce u prugettu Custruisce u prugettu eseguendu:
idf.py custruisce
Stu cumandimu compilerà l'applicazione è tutti i cumpunenti ESP-IDF, allora generà u bootloader, a tabella di partizioni è i binari di l'applicazione.
$ idf.py build Esecuzione di cmake in u cartulare /path/to/hello_world/build Esecuzione di "cmake -G Ninja –warn-uninitialized /path/to/hello_world"... Avvisu nantu à i valori micca inizializati. — Git trovu: /usr/bin/git (versione "2.17.0" trovata) — Custruzzione di un cumpunente aws_iot viotu per via di a cunfigurazione — Nomi di i cumpunenti: ... — Percorsi di i cumpunenti: ...
... (più linee di output di u sistema di creazione)
[527/527] Generazione di hello_world.bin esptool.py v2.3.1
Custruzzione di u prugettu cumpletata. Per flashà, eseguite stu cumandamentu: ../../../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 o eseguite 'idf.py -p PORT flash'
Se ùn ci sò micca errori, a custruzzione finisce generendu u binariu di firmware .bin files.
Flashate nantu à u dispusitivu Flashate i binari chì avete appena custruitu (bootloader.bin, partition-table.bin è hello_world.bin) nantu à a vostra scheda ESP32 eseguendu:
idf.py -p PORT [-b BAUD] flash
Rimpiazzate PORT cù u nome di u portu seriale di a vostra scheda ESP32. Pudete ancu cambià a velocità di trasmissione di u flasher rimpiazzendu BAUD cù a velocità di trasmissione chì avete bisognu. A velocità di trasmissione predefinita hè 460800. Per più infurmazioni nantu à l'argumenti idf.py, vede idf.py.
Nota: L'opzione flash compila è flasha automaticamente u prugettu, dunque eseguisce idf.py build ùn hè micca necessariu.
Sistemi Espressif
40 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
Prublemi scontru durante u flashing ? Sè eseguite u cumandamentu datu è vede errori cum'è "Failed to connectp", ci ponu esse parechje ragioni per questu. Una di e ragioni pò esse i prublemi scontru da esptool.py, l'utilità chjamata da u sistema di compilazione per resettà u chip, interagisce cù u bootloader ROM è flashà u firmware. Una suluzione simplice da pruvà hè u reset manuale discrittu quì sottu, è s'ellu ùn aiuta micca pudete truvà più dettagli nantu à i pussibuli prublemi in Risoluzione di i prublemi.
esptool.py resetta ESP32 automaticamente asserendu e linee di cuntrollu DTR è RTS di u chip di cunvertitore USB à seriale, vale à dì, FTDI o CP210x (per più infurmazioni, vede Stabilisce una cunnessione seriale cù ESP32). E linee di cuntrollu DTR è RTS sò à u so tornu cunnesse à i pin GPIO0 è CHIP_PU (EN) di ESP32, cusì cambia u vulume.tagI livelli di DTR è RTS avvieranu ESP32 in modalità di scaricamentu di firmware. Cum'è un esempiuampEccu, verificate u schema di a scheda di sviluppu ESP32 DevKitC.
In generale, ùn duverete micca avè prublemi cù e schede di sviluppu ufficiali esp-idf. Tuttavia, esptool.py ùn hè micca capace di resettà automaticamente u vostru hardware in i seguenti casi:
· U vostru hardware ùn hà micca e linee DTR è RTS cunnesse à GPIO0 è CHIP_PU · E linee DTR è RTS sò cunfigurate in modu diversu · Ùn ci sò micca tali linee di cuntrollu seriale
Sicondu u tipu d'hardware chì avete, pò ancu esse pussibule di mette manualmente a vostra scheda ESP32 in modalità di scaricamentu di u firmware (reset).
· Per e schede di sviluppu prudutte da Espressif, sta infurmazione si pò truvà in e rispettive guide introduttive o guide per l'utente. Per esempiuampVale à dì, per resettà manualmente una scheda di sviluppu ESP-IDF, tene premutu u buttone Boot (GPIO0) è appughjà u buttone EN (CHIP_PU).
· Per altri tipi di hardware, pruvate à tirà giù GPIO0.
Funziunamentu nurmale Quandu lampeghja, viderete u registru di output simile à u seguente:
... 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 Porta seriale /dev/ttyUSB0 Cunnessione…….._ Chip hè ESP32D0WDQ6 (revisione 0) Caratteristiche: WiFi, BT, Dual Core, Schema di Codifica Nisunu Crystal hè 40MHz MAC: 24:0a:c4:05:b9:14 Caricamentu di stub… Esecuzione di stub… Stub in esecuzione… Cambiazione di a velocità di trasmissione à 460800 Cambiata. Cunfigurazione di a dimensione di u flash... Cumpressi 3072 byte à 103... Scrittura à 0x00008000... (100%) Scritti 3072 byte (103 cumpressi) à 0x00008000 in 0.0 secondi (effettivi 5962.8 kbit/s)... Hash di dati verificatu. Cumpressi 26096 byte à 15408... Scrittura à 0x00001000... (100%) Scritti 26096 byte (15408 cumpressi) à 0x00001000 in 0.4 secondi (effettivi 546.7 kbit/s)... Hash di dati verificatu. Cumpressu 147104 byte à 77364… Scrittura à 0x00010000… (20 %) Scrittura à 0x00014000… (40 %) Scrittura à 0x00018000… (60 %) Scrittura à 0x0001c000… (80 %)
(cuntinua à a pagina dopu)
Sistemi Espressif
41 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
(cuntinuazione da a pagina precedente) Scrittura à 0x00020000… (100 %) Hà scrittu 147104 byte (77364 cumpressi) à 0x00010000 in 1.9 secondi (effettivi 615,5 kbit/s)… Hash di dati verificatu.
Lasciandu... Hard resetting via RTS pin... Fattu
S'ellu ùn ci sò micca prublemi à a fine di u prucessu di flash, a scheda si riavvierà è avvierà l'applicazione thehello_worldp. Sè vo vulete aduprà l'IDE Eclipse o VS Code invece di eseguisce idf.py, verificate Eclipse Plugin, VSCode Extension.
Monitorà l'output Per verificà se ohello_worldpis hè veramente in esecuzione, scrivite idf.py -p PORT monitor (Ùn vi scurdate di rimpiazzà PORT cù u nome di a vostra porta seriale). Stu cumandamentu lancia l'applicazione IDF Monitor:
$ idf.py -p monitor Esecuzione di idf_monitor in u cartulare […]/esp/hello_world/build Esecuzione di "python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf"… — idf_monitor attivu 115200 —– Esce: Ctrl+] | Menu: Ctrl+T | Aiutu: Ctrl+T seguitatu da Ctrl+H –ets 8 di ghjugnu 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 di ghjugnu 2016 00:22:57 …
Dopu chì i registri di avviu è di diagnostica scorrenu in su, duvete vede oHello world!p stampatu da l'applicazione.
... Salutu à u mondu! Riavviu in 10 secondi... Questu hè un chip esp32 cù 2 core(i) di CPU, WiFi/BT/BLE, revisione silicio 1, flash esterna 2MB Dimensione minima di heap libera: 298968 byte Riavviu in 9 secondi... Riavviu in 8 secondi... Riavviu in 7 secondi...
Per esce da u monitor IDF, aduprate a scurciatoia Ctrl+]. Sè u monitor IDF falla pocu dopu à u caricamentu, o, sè invece di i missaghji sopra, vedete spazzatura aleatoria simile à ciò chì hè datu quì sottu, a vostra scheda probabilmente usa un cristallu di 26 MHz. A maiò parte di i disinni di schede di sviluppu utilizanu 40 MHz, dunque ESP-IDF usa sta frequenza cum'è valore predefinitu.
Sè avete un prublema di stu tipu, fate cusì:
1. Esci da u monitor. 2. Vulta à u menu cunfigurazione. 3. Anda à cunfigurazione di i cumpunenti > Impostazioni hardware > Cunfigurazione XTAL principale > XTAL principale
frequenza, dopu cambiate CONFIG_XTAL_FREQ_SEL à 26 MHz. 4. Dopu à quessa, compilate è flashate di novu l'applicazione.
Sistemi Espressif
42 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
In a versione attuale di ESP-IDF, e principali frequenze XTAL supportate da ESP32 sò e seguenti:
· 26 MHz · 40 MHz
Nota: Pudete cumminà a custruzzione, u flashing è u monitoraghju in un solu passu eseguendu: idf.py -p PORT flash monitor
Vede ancu: · IDF Monitor per scorciatoie pratiche è più dettagli nantu à l'usu di IDF monitor. · idf.py per una riferenza cumpleta di i cumandamenti è l'opzioni idf.py.
Hè tuttu ciò chì avete bisognu per cumincià cù ESP32! Avà site prontu à pruvà qualchì altru esempiu.amples, o andate direttamente à sviluppà e vostre proprie applicazioni.
Impurtante: Certi di exampI schedari ùn supportanu micca ESP32 perchè l'hardware necessariu ùn hè micca inclusu in ESP32 dunque ùn pò esse supportatu. Sè vo custruite un example, per piacè verificate u README file per a tavula di Obiettivi Supportati. Sè questu hè presente cumpresu u scopu ESP32, o a tavula ùn esiste micca, l'exampFunzionerà nantu à ESP32.
Cunsiglii supplementari
Prublemi di permessu /dev/ttyUSB0 Cù certe distribuzioni Linux, pudete riceve u missaghju d'errore "Failed to open port /dev/ttyUSB0" quandu si lampa l'ESP32. Questu pò esse risoltu aghjunghjendu l'utente attuale à u gruppu di dialout.
Compatibilità Python ESP-IDF supporta Python 3.7 o più recente. Hè cunsigliatu di aghjurnà u vostru sistema operativu à una versione recente chì suddisfa questu requisitu. Altre opzioni includenu l'installazione di Python da i surghjenti o l'usu di un sistema di gestione di versione Python cum'è pyenv.
Cuminciate cù u Pacchettu di Supportu di a Carta Per accelerà a prototipazione nantu à alcune carte di sviluppu, pudete aduprà i Pacchetti di Supportu di a Carta (BSP), chì rende l'inizializazione di una carta particulare faciule cum'è poche chjamate di funzione. Un BSP supporta tipicamente tutti i cumpunenti hardware furniti nantu à a carta di sviluppu. Oltre à a definizione di u pinout è e funzioni d'inizializazione, un BSP vene cun driver per i cumpunenti esterni cum'è sensori, display, codec audio ecc. I BSP sò distribuiti via IDF Component Manager, dunque ponu esse truvati in IDF Component Registry. Eccu un esempiuampEccu cumu aghjunghje ESP-WROVER-KIT BSP à u vostru prughjettu: idf.py add-dependency esp_wrover_kit
Più exampL'usu di BSP pò esse truvatu in BSP examples folder.
Cunsigliu: Aghjurnamentu di ESP-IDF Hè cunsigliatu d'aghjurnà ESP-IDF di tantu in tantu, postu chì e versioni più recenti curreggenu i bug è/o furniscenu nuove funzionalità. Nota chì ogni versione maggiore è minore di ESP-IDF hà un periodu di supportu assuciatu, è quandu una branca di rilascio s'avvicina à a fine di a vita (EOL), tutti l'utilizatori sò incuraghjiti à aghjurnà i so prughjetti à versioni ESP-IDF più recenti, per sapenne di più nantu à i periodi di supportu, vede Versioni ESP-IDF.
Sistemi Espressif
43 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 1. Cumincià
U modu u più simplice per fà l'aghjurnamentu hè di sguassà u cartulare esp-idf esistente è clonallu di novu, cum'è s'ellu si facia l'installazione iniziale descritta in u Passu 2. Uttene ESP-IDF. Un'altra suluzione hè di aghjurnà solu ciò chì hè cambiatu. A prucedura d'aghjurnamentu dipende da a versione di ESP-IDF chì utilizate. Dopu avè aghjurnatu ESP-IDF, eseguite di novu u script d'installazione, in casu chì a nova versione di ESP-IDF richiede diverse versioni di strumenti. Vede l'istruzzioni à u Passu 3. Configurate l'arnesi. Una volta chì i novi strumenti sò installati, aghjurnate l'ambiente aduprendu u script d'Esportazione. Vede l'istruzzioni à u Passu 4. Configurate e variabili d'ambiente.
Documenti cunnessi · Stabilisce una cunnessione seriale cù ESP32 · Plugin Eclipse · Estensione VSCode · Monitor IDF
1.4 Custruite u vostru primu prughjettu
Sè vo avete digià installatu l'ESP-IDF è ùn aduprate micca IDE, pudete custruisce u vostru primu prughjettu da a linea di cummanda dopu à Start a Project on Windows o Start a Project on Linux è macOS.
1.5 Disinstalla ESP-IDF
Sè vo vulete caccià ESP-IDF, seguitate Disinstalla ESP-IDF.
Sistemi Espressif
44 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 2
Riferimentu API
2.1 Cunvenzioni API
Stu documentu descrive e cunvenzioni è l'ipotesi cumuni à l'interfacce di prugrammazione di l'applicazione (API) ESP-IDF. ESP-IDF furnisce parechji tipi d'interfacce di prugrammazione:
· Funzioni C, strutture, enumerazioni, definizioni di tipu è macro di preprocessore dichjarate in l'intestazione publica files di cumpunenti ESPIDF. Diverse pagine in a sezzione di riferimentu API di a guida di prugrammazione cuntenenu descrizzioni di ste funzioni, strutture è tipi.
· Funzioni di u sistema di custruzzione, variabili predefinite è opzioni. Quessi sò documentati in a guida di u sistema di custruzzione. · L'opzioni di Kconfig ponu esse aduprate in u codice è in u sistema di custruzzione (CMakeLists.txt) files. · L'arnesi ospitanti è i so parametri di linea di cummanda facenu ancu parte di l'interfaccia ESP-IDF. ESP-IDF hè custituitu da cumpunenti scritti specificamente per ESP-IDF è ancu per biblioteche di terze parti. In certi casi, un wrapper specificu per ESP-IDF hè aghjuntu à a biblioteca di terze parti, furnendu una interfaccia chì hè più simplice o megliu integrata cù u restu di e facilità ESP-IDF. In altri casi, l'API originale di a biblioteca di terze parti hè presentata à i sviluppatori di l'applicazioni. E sezioni seguenti spieganu alcuni aspetti di l'API ESP-IDF è u so usu.
2.1.1 Error handling
A maiò parte di l'API ESP-IDF restituiscenu codici d'errore definiti cù u tipu esp_err_t. Vede a sezione Gestione di l'errori per più infurmazioni nantu à l'approcci di gestione di l'errori. A Riferenza di u Codice d'Errore cuntene a lista di i codici d'errore restituiti da i cumpunenti ESP-IDF.
2.1.2 Strutture di cunfigurazione
Impurtante: L'inizializazione curretta di e strutture di cunfigurazione hè una parte impurtante per rende l'applicazione cumpatibile cù e versioni future di ESP-IDF.
A maiò parte di e funzioni d'inizializazione o di cunfigurazione in ESP-IDF piglianu cum'è argumentu un puntatore à una struttura di cunfigurazione. Per esempiuampLe:
45
Capitulu 2. Riferimentu API
const esp_timer_create_args_t i mo_argomenti_timer = { .callback = &u_mo_timer_callback, .arg = callback_arg, .name = "u_mo_timer"
}; esp_timer_handle_t u mo_timer; esp_err_t err = esp_timer_create(&u mo_timer_args, &u mo_timer);
E funzioni d'inizializazione ùn almacenanu mai u puntatore à a struttura di cunfigurazione, dunque hè sicuru d'allocà a struttura nantu à a pila.
L'applicazione deve inizializà tutti i campi di a struttura. Ciò chì seguita hè sbagliatu:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Sbagliatu! I campi .arg è .name ùn sò micca inizializati */ esp_timer_create(&my_timer_args, &my_timer);
A maiò parte di l'esperti ESP-IDFampI le utilizanu inizializatori designati C99 per l'inizializazione di a struttura, postu chì furniscenu un modu cuncisu per definisce un sottoinsieme di campi, è inizializà à zero i campi rimanenti:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Currettu, i campi .arg è .name sò inizializati à zeru */
};
U linguaghju C++ ùn supporta micca a sintassi di l'inizializatori designati finu à C++ 20, ma u compilatore GCC u supporta parzialmente cum'è estensione. Quandu si utilizanu l'API ESP-IDF in u codice C++, pudete cunsiderà l'usu di u mudellu seguente:
esp_timer_create_args_t my_timer_args = {}; /* Tutti i campi sò inizializati à zeru */ my_timer_args.callback = &my_timer_callback;
Inizializatori predefiniti
Per alcune strutture di cunfigurazione, ESP-IDF furnisce macro per definisce i valori predefiniti di i campi:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG si espande à un inizializatore designatu.
Avà tutti i campi sò impostati à i valori predefiniti. Ogni campu pò ancu esse mudificatu: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Hè cunsigliatu d'utilizà macro d'inizializatore predefinite ogni volta ch'elle sò furnite per una struttura di cunfigurazione particulare.
2.1.3 API private
Certa intestazione fileI fugliali in ESP-IDF cuntenenu API destinate à esse aduprate solu in u codice surghjente ESP-IDF, è micca da l'applicazioni. Tale intestazione fileI cumpunenti spessu cuntenenu private o esp_private in u so nome o percorsu. Certi cumpunenti, cum'è hal, cuntenenu solu API private. L'API private ponu esse eliminate o mudificate in modu incompatibile trà versioni minori o di patch.
2.1.4 Cumponenti in exampi prughjetti
ESP-IDF exampI schedari cuntenenu una varietà di prughjetti chì mostranu l'usu di l'API ESP-IDF. Per riduce a duplicazione di codice in l'examples, uni pochi di aiutanti cumuni sò definiti in cumpunenti chì sò aduprati da parechji examples.
Sistemi Espressif
46 Mandate u vostru feedback nantu à u documentu
Liberazione v5.0.9
Capitulu 2. Riferimentu API
Questu include i cumpunenti situati
Documenti / Risorse
![]() |
Scheda di sviluppu Espressif Systems ESP32 Dev Kitc [pdfGuida di l'utente Scheda di Sviluppu ESP32 Dev Kitc, ESP32, Scheda di Sviluppu Dev Kitc, Scheda di Sviluppu Kitt, Scheda di Sviluppu, Scheda |
