Scheda di sviluppo ESP32 Dev Kitc
Informazioni sul prodotto
Specifiche
- Prodotto: ESP32
- Guida alla programmazione: ESP-IDF
- Versione di rilascio: v5.0.9
- Produttore: Espressif Systems
- Data di rilascio: 16 maggio 2025
Istruzioni per l'uso del prodotto
1. Inizia
Prima di iniziare con l'ESP32, familiarizza con
seguente:
1.1 Introduzione
Scopri le funzionalità e le capacità di base del
ESP32.
1.2 Cosa ti serve
Assicurati di avere l'hardware e il software necessari:
- Hardware: Controlla l'elenco dell'hardware richiesto
componenti. - Software: Installa il software richiesto
componenti.
1.3 Installazione
Seguire questi passaggi per installare l'IDE e configurare il
ambiente:
- IDE: Installa l'IDE consigliato per
programmazione dell'ESP32. - Installazione manuale: Impostare manualmente il
ambiente se necessario.
1.4 Crea il tuo primo progetto
Crea e realizza il tuo progetto iniziale utilizzando ESP32.
1.5 Disinstallare ESP-IDF
Se necessario, scopri come disinstallare l'ESP-IDF dal tuo
sistema.
2. Riferimento API
Fare riferimento alla documentazione API per informazioni dettagliate su
protocolli applicativi, gestione degli errori e configurazione
strutture.
Domande frequenti (FAQ)
D: Come posso risolvere i problemi più comuni con ESP32?
A: Fare riferimento alla sezione sulla risoluzione dei problemi nella guida alla programmazione
o visitare il produttore websito per le risorse di supporto.
D: Posso usare ESP-IDF con altri microcontrollori?
A: ESP-IDF è progettato specificamente per ESP32, ma potresti trovare
compatibilità con altri microcontrollori Espressif.
ESP32
Guida alla programmazione ESP-IDF
Rilascio v5.0.9 Espressif Systems 16 maggio 2025
Sommario
Sommario
i
1 Inizia
3
1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Cosa ti serve . ...
1.2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Installazione manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Costruisci il tuo primo progetto . ...
1.5 Disinstallare ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 Riferimento API
45
2.1 Convenzioni API . ...
2.1.1 Gestione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.2 Strutture di configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.3 API private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.4 Componenti in exampi progetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 Stabilità API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 Protocolli applicativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 Porta ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.2.5 Client HTTP ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 Controllo locale ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.7 Collegamento seriale slave ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 Pacchetto di certificati ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 Server HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 Server HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 Eco ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.2.12 Servizio mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.13 Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.14 Livello di rete IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 API Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.1 Bluetooth® Comune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® Low Energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® Classico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.3.4 Controller e HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
2.3.6 API host basate su NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 Riferimento ai codici di errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 API di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
2.5.3 Discussione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
i
2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Livello di rete IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Livello applicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API periferiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Driver in modalità One-shot del convertitore analogico-digitale (ADC). . . . . . . . . . . . . . . . . 977 2.6.2 Driver in modalità continua del convertitore analogico-digitale (ADC). . . . . . . . . . . . . . . 986 2.6.3 Driver di calibrazione del convertitore analogico-digitale (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Albero dell'orologio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Convertitore digitale-analogico (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO e RTC GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Timer per uso generale (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Circuito interintegrato (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Suono inter-IC (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Controllo LED (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulatore di larghezza di impulso per il controllo del motore (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Contatore di impulsi (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Trasmettitore di controllo remoto (RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Requisiti di pull-up SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Driver host SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Driver host SD SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Driver slave della scheda SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Modulazione Sigma-Delta (SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Driver principale SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Driver slave SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Elemento sicuro) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Sensore tattile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Interfaccia automobilistica a due fili (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Ricevitore/trasmettitore asincrono universale (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Configurazione del progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Menu di configurazione del progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Utilizzo di sdkconfig.defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Regole di formattazione di Kconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Compatibilità con le versioni precedenti delle opzioni di Kconfig. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Riferimento alle opzioni di configurazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API di provisioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Comunicazione tramite protocollo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Provisioning unificato. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Provisioning Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API di archiviazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSupporto del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Utilità di produzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Libreria di archiviazione non volatile . ... 1703 2.9.4 Utilità 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 filecomponente di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API di livellamento dell'usura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Formato immagine applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Tracciamento a livello applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Funzione di chiamata con stack esterno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Revisione chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 eFuse Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Codici di errore e funzioni di supporto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Libreria Event Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (Oltreview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (Funzionalità supplementari) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Allocazione della memoria heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Debug della memoria heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Timer ad alta risoluzione (timer ESP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 API interne e instabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Chiamata interprocessore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Allocazione interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Libreria di registrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 API di sistema varie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Aggiornamenti via etere (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Monitoraggio delle prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Gestione dell'alimentazione . ... 2087 2.10.24 Supporto per thread POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Generazione di numeri casuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Modalità di sospensione . ... . . . . . . . . . . 2099 2.10.27 Funzionalità SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Ora di sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 L'API di allocazione himem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 Programmazione del coprocessore ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161
3 Riferimento hardware
2167
3.1 Confronto tra serie di chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167
3.1.1 Documenti correlati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4 Guide API
2171
4.1 Libreria di tracciamento a livello di applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Modalità di funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.3 Opzioni di configurazione e dipendenze . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 Come utilizzare questa libreria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 Flusso di avvio dell'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181
4.2.1 Primitage bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 seconditage bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Avvio dell'applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183
4.3 Bluetooth® Classico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.3.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® Low Energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Per iniziare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191
4.4.3 Professionistafile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240
4.5 Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284
4.5.1 Compatibilità del bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 Livello di registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.3 Ripristino delle impostazioni di fabbrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.4 Avvio dal firmware di prova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 Rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.6 Watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.7 Dimensione del bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.8 Avvio rapido da Deep Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Bootloader personalizzato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.6 Sistema di compilazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Utilizzo del sistema di compilazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
e iii
4.6.3 Esampil Progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Progetto CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Componente CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Configurazione dei componenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Definizioni del preprocessore . ... 2295 4.6.8 Requisiti dei componenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Sostituzione di parti del progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Componenti di sola configurazione . ... 2300 4.6.11 Debug di CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Esempioample Componente CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Valori predefiniti personalizzati di sdkconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Argomenti Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Creazione del bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Scrittura di componenti CMake puri . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Utilizzo di progetti CMake di terze parti con componenti . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Utilizzo di librerie predefinite con componenti . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Utilizzo di ESP-IDF in progetti CMake personalizzati . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API del sistema di compilazione CMake ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Globbing e build incrementali . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Metadati del sistema di build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Componenti interni del sistema di build . ... . 2313 4.6.24 Migrazione dal sistema GNU Make ESP-IDF . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Core Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Configurazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Salvataggio del core dump nella flash . ... . . . . . . . . . . 2317 4.7.4 Stampa core dump su UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funzioni ROM nei backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Dumping di variabili su richiesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Esecuzione di espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Stub di riattivazione in modalità Deep Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Regole per gli stub di riattivazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementazione di uno stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Caricamento del codice nella memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Caricamento dei dati nella memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 Controllo CRC per stub di riattivazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Gestione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Codici di errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Conversione dei codici di errore in messaggi di 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 CONTROLLA MACRO Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Modelli di gestione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Eccezioni C++ . ... . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Concetti ESP-WIFI-MESH . ... . . . . . . . . . . . 2329 4.10.4 Creazione di una rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Gestione di una rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Trasmissione dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Cambio canale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv
4.10.8 Prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Ulteriori note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Gestione degli eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Eventi Wi-Fi, Ethernet e IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Eventi Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Eventi Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Errori fatali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Errori fatali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Gestore del panico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Registro Dump e Backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB Stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Timeout del watchdog RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Errori nella meditazione del guru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Altri errori fatali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Fusibili elettronici rilevanti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Processo di crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Configurazione della crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Possibili guasti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Stato della crittografia flash ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Lettura e scrittura di dati in Flash crittografati. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Aggiornamento della Flash crittografata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Disabilitazione della crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Punti chiave sulla crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Limitazioni della crittografia Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Crittografia Flash e avvio protetto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Funzionalità avanzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Dettagli tecnici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Astrazione hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Livello LL (basso livello). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Livello di astrazione hardware). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Interruzioni di alto livello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Livelli di interruzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Come funziona? . ... . . . . . . . . . . . . . . . . . . 2379 4.16.3 Selezione di JTAG Adattatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Configurazione di OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Configurazione del target ESP32 . ... . . 2380 4.16.6 Avvio del debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Debug Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Compilazione di OpenOCD da sorgenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Suggerimenti e stranezze . ... . . . 2391 4.16.10 Documenti correlati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Generazione di script linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Avvio rapido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Interni di generazione dello script del linker . ... . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 API supportate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API socket BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API Netconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 Attività lwIP FreeRTOS . ... . . . . . 2435 4.18.5 Supporto IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 Modifiche personalizzate esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v
4.18.7 Ottimizzazione delle prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Tipi di memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (RAM dati) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (RAM istruzioni) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (codice eseguito dalla flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (dati memorizzati nella flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 Memoria lenta RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 Memoria VELOCE RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Requisito di compatibilità DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Buffer DMA nello stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Modalità dello stack OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Come scrivere un'applicazione OpenThread . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 Il router di confine OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Tabelle delle partizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Tabelle delle partizioni integrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Creazione di tabelle personalizzate . ... . . . . . . . . 2445 4.21.4 Generazione della tabella delle partizioni binarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Controlli delle dimensioni delle partizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Aggiornamento della tabella delle partizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Strumento di partizione (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Come ottimizzare le prestazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 Calibrazione RF . ... 2468 4.23.1 Calibrazione parziale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Calibrazione completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Nessuna calibrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Dati di inizializzazione PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Riferimento API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Avvio protetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Processo di avvio protetto suview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Chiavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Dimensioni del bootloader . ... . . . . . . . . . 2474 4.24.5 Come abilitare l'avvio protetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Bootloader software riprogrammabile . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Generazione della chiave di firma per l'avvio protetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Firma remota delle immagini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Procedure consigliate per l'avvio protetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Dettagli tecnici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Avvio protetto e crittografia Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Verifica delle app firmate senza avvio protetto hardware . . . . . . . . . . . . . . . . . . 2478 4.24.13 Funzionalità avanzate . ... . 2478 4.25 Avvio protetto V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Advantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Processo Secure Boot V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Formato del blocco della firma . ... . . . . . . . 2480 4.25.5 Padding sicuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Verifica di un blocco di firma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Verifica di un'immagine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Dimensioni del bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Utilizzo di eFuse . ... 2481 4.25.10 Come abilitare Secure Boot V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Restrizioni dopo l'abilitazione di Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Generazione della chiave di firma Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi
4.25.13 Firma remota delle immagini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Procedure consigliate per l'avvio protetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Dettagli tecnici . ... . . . . . 2484 4.25.16 Avvio protetto e crittografia Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Verifica delle app firmate senza avvio protetto hardware . . . . . . . . . . . . . . . . . . 2484 4.25.18 Funzionalità avanzate . ... 2485 4.26 Supporto per RAM esterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Configurazione della RAM esterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Restrizioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Errore di inizializzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Revisioni chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Archiviazione locale thread . ... . 2488 4.27.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Frontend IDF – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Immagine Docker IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 IDF Windows Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Gestore componenti IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Strumenti scaricabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Test unitari in ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Casi di test normali . ... 2512 4.29.2 Casi di test multi-dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Multi-stage Casi di prova. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Test per diversi target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Applicazione per test unitari di costruzione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Esecuzione di test unitari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Codice di temporizzazione con timer compensato dalla cache. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Mock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Test unitari su Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Test del software incorporato. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Test unitari IDF su host Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Driver Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Elenco delle funzionalità Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Come scrivere un'applicazione Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Codice di errore API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inizializzazione dei parametri dell'API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Modello di programmazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Descrizione dell'evento Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Scenario generale della stazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Scenario generale dell'AP Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Scansione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Scenario di connessione della stazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Connessione della stazione Wi-Fi ESP32 quando vengono rilevati più AP. . . . . . . . . . . . . 2543 4.31.12 Riconnessione Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Timeout del beacon Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Configurazione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Gestione della rete wireless. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Misurazione delle risorse radio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Transizione BSS veloce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 Modalità di risparmio energetico Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Velocità di trasmissione Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
viii
4.31.21 Invio pacchetti Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Modalità sniffer Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Antenne multiple Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Informazioni sullo stato del canale Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Informazioni sullo stato del canale Wi-Fi Configura . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 QoS Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 AMSDU Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Frammento Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Iscritto WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Utilizzo del buffer Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Come migliorare le prestazioni Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Wi-Fi Menuconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Risoluzione dei problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Sicurezza Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Funzionalità di sicurezza Wi-Fi ESP32 . ... 2568 4.32.2 Frame di gestione protetti (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personal . ... . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Coesistenza RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Oltreview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Scenario di coesistenza supportato per ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Meccanismo e politica di coesistenza . ... 2574 4.33.4 Come utilizzare la funzionalità di coesistenza . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Build riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Motivi per cui le build non sono riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Abilitazione delle build riproducibili in ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Come si ottengono build riproducibili . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Build riproducibili e debug . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Fattori che influiscono ancora sulle build riproducibili . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Guida utente per la modalità a basso consumo . ... . . . 2578
5 guide alla migrazione
2579
5.1 Guida alla migrazione ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
5.1.1 Migrazione da 4.4 a 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6 Librerie e Framework
2611
6.1 Framework 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 Framework espressivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.1 Framework di sviluppo audio Espressif . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.3 Libreria DSP Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.4 Framework di sviluppo 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 ai 7 contributi
2615
7.1 Come contribuire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.2 Prima di contribuire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.3 Processo di richiesta pull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.4 Parte legale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5 Documenti correlati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.1 Guida di stile del framework di sviluppo IoT Espressif . . . . . . . . . . . . . . . . . 2616
7.5.2 Installare il pre-commit Hook per il progetto ESP-IDF . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Documentazione del codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624
7.5.4 Creazione di Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 Modello di documentazione API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Contratto di collaborazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632
7.5.7 Guida all'intestazione del copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634
7.5.8 Test ESP-IDF con guida Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 Versioni ESP-IDF
2645
Versioni 8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.2 Con quale versione dovrei iniziare? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 Schema di controllo delle versioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.4 Periodi di supporto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646
8.5 Controllo della versione corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Flusso di lavoro Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7 Aggiornamento di ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7.1 Aggiornamento alla versione stabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 Aggiornamento a una versione preliminare . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 Aggiornamento al ramo master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 Aggiornamento a un ramo di rilascio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 Risorse
2651
9.1 PlatformIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.1 Che cos'è PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.3 Configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.4 Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.5 Progetto Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Passaggi successivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.2 Link utili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
10 Diritti d'autore e licenze
2653
10.1 Diritti d'autore del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.1 Componenti del firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.2 Documentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.2 Copyright del codice sorgente della ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.3 Licenza MIT Xtensa libera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 Licenza TinyBasic Plus MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
Licenza 10.5 TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
11 Informazioni
2657
12 Passa da una lingua all'altra
2659
Indice
2661
Indice
2661
ix
x
Sommario
Questa è la documentazione per Espressif IoT Development Framework (esp-idf). ESP-IDF è il framework di sviluppo ufficiale per i SoC serie ESP32, ESP32-S ed ESP32-C. Questo documento descrive l'utilizzo di ESP-IDF con il SoC ESP32.
Iniziare
Riferimento API
Guide API
Sistemi Espressif
1 Invia feedback sul documento
Rilascio v5.0.9
Sommario
Sistemi Espressif
2 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1
Iniziare
Questo documento ha lo scopo di aiutarti a configurare l'ambiente di sviluppo software per l'hardware basato sul chip ESP32 di Espressif. Successivamente, un semplice esempioampti mostreremo come utilizzare ESP-IDF (Espressif IoT Development Framework) per la configurazione dei menu, quindi per compilare e aggiornare il firmware su una scheda ESP32.
Nota: questa è la documentazione per la versione stabile v5.0.9 di ESP-IDF. Sono disponibili anche altre versioni di ESP-IDF.
1.1 Introduzione
ESP32 è un sistema su chip che integra le seguenti funzionalità: · Wi-Fi (banda 2.4 GHz) · Bluetooth · Due core CPU Xtensa® LX6 a 32 bit ad alte prestazioni · Coprocessore a bassissimo consumo energetico · Periferiche multiple
Basato sulla tecnologia a 40 nm, ESP32 offre una piattaforma robusta e altamente integrata, che contribuisce a soddisfare le continue esigenze di efficienza energetica, design compatto, sicurezza, elevate prestazioni e affidabilità. Espressif fornisce risorse hardware e software di base per aiutare gli sviluppatori di applicazioni a realizzare le proprie idee utilizzando l'hardware della serie ESP32. Il framework di sviluppo software di Espressif è progettato per lo sviluppo di applicazioni Internet of Things (IoT) con Wi-Fi, Bluetooth, gestione dell'alimentazione e numerose altre funzionalità di sistema.
1.2 Cosa ti serve
1.2.1 Hardware
· Una scheda ESP32. · Cavo USB – USB A / micro USB B. · Computer con Windows, Linux o macOS.
Nota: attualmente alcune schede di sviluppo utilizzano connettori USB Type-C. Assicurati di avere il cavo corretto per collegare la tua scheda!
Se possiedi una delle schede di sviluppo ufficiali ESP32 elencate di seguito, puoi cliccare sul collegamento per saperne di più sull'hardware.
3
Capitolo 1. Iniziare
ESP32-DevKitS(-R)
Questa guida utente fornisce informazioni su ESP32-DevKitS(-R), una scheda flash basata su ESP32 prodotta da Espressif. ESP32-DevKitS(-R) è la combinazione di due nomi di scheda: ESP32-DevKitS ed ESP32-DevKitS-R. S sta per "springs" (molle) e R per "WROVER".
ESP32-DevKitS
ESP32-DevKitS-R
Il documento è composto dalle seguenti sezioni principali: · Introduzione: fornisce una panoramicaview di ESP32-DevKitS(-R) e istruzioni di configurazione hardware/software per iniziare. · Riferimento hardware: fornisce informazioni più dettagliate sull'hardware ESP32-DevKitS(-R)ns. · Documenti correlati: fornisce link alla documentazione correlata.
Introduzione Questa sezione descrive come iniziare a utilizzare ESP32-DevKitS(-R). Inizia con alcune sezioni introduttive su ESP32-DevKitS(-R), quindi la sezione Come flashare una scheda fornisce istruzioni su come montare un modulo su ESP32-DevKitS(-R), prepararlo e flashare il firmware su di esso.
Sopraview ESP32-DevKitS(-R) è una scheda flash di Espressifns progettata specificamente per ESP32. Può essere utilizzata per flashare un modulo ESP32 senza saldarlo all'alimentatore e alle linee di segnale. Con un modulo montato, ESP32-DevKitS(-R) può anche essere utilizzata come mini scheda di sviluppo come ESP32-DevKitC.
Le schede ESP32-DevKitS e ESP32-DevKitS-R variano solo nella disposizione dei pin a molla per adattarsi ai seguenti moduli ESP32.
· ESP32-DevKitS: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB e IPEX) ESP32-WROVER-B (PCB e IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Per informazioni sui moduli sopra indicati, fare riferimento ai moduli della serie ESP32.
Descrizione dei componenti
Sistemi Espressif
4 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 1: ESP32-DevKitS – frontale
Sistemi Espressif
Fig. 2: ESP32-DevKitS-R – parte anteriore 5
Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Perni a molla per componenti chiave, connettori femmina da 2.54 mm
Connettore Micro-USB LDO/Porta Micro-USB da USB a UART Pulsante EN Pulsante di avvio
LED di accensione
Descrizione: Inserire il modulo. I pin si inseriranno nei fori a corona del modulo. Questi connettori femmina sono collegati ai pin del modulo montato su questa scheda. Per la descrizione dei connettori femmina, fare riferimento ai blocchi connettore. Il bridge USB-UART a chip singolo offre velocità di trasferimento fino a 3 Mbps.
Tensione di caduta bassa da 5 V a 3.3 Vtage regolatore (LDO).
Interfaccia USB. Alimenta la scheda e funge anche da interfaccia di comunicazione tra il computer e la scheda.
Pulsante di reset.
Pulsante Download. Tenendo premuto Boot e premendo poi EN si avvia la modalità Firmware Download per scaricare il firmware tramite la porta seriale.
Si accende quando la porta USB o l'alimentatore sono collegati alla scheda.
Come flashare una scheda Prima di accendere l'ESP32-DevKitS(-R), assicurati che sia in buone condizioni e che non presenti segni evidenti di danni.
Hardware richiesto · Un modulo ESP32 a tua scelta · Cavo USB 2.0 (da Standard-A a Micro-B) · Computer con Windows, Linux o macOS
Configurazione hardware Montare il modulo desiderato sul proprio ESP32-DevKitS(-R) seguendo i seguenti passaggi:
· Posiziona delicatamente il modulo sulla scheda ESP32-DevKitS(-R). Assicurati che i fori a corona sul modulo siano allineati con i perni a molla sulla scheda.
· Premere il modulo nella scheda fino a sentire un clic. · Verificare che tutti i perni a molla siano inseriti nei fori a corona. Se ci sono dei perni a molla disallineati,
posizionarli nei fori dentati con una pinzetta.
Installazione del software
Metodo preferito Il framework di sviluppo ESP-IDF fornisce un metodo preferito per flashare i binari su ESP32-DevKitS(-R). Procedere con la sezione Introduzione, dove la sezione Installazione aiuterà rapidamente a configurare l'ambiente di sviluppo e quindi a flashare un'applicazione example sul tuo ESP32-DevKitS(-R).
Metodo alternativo In alternativa, gli utenti Windows possono flashare i binari utilizzando Flash Download Tool. Basta scaricarlo, decomprimerlo e seguire le istruzioni all'interno della cartella doc.
Nota: 1. Per flashare il binario files, ESP32 dovrebbe essere impostato in modalità di download del firmware. Questo può essere fatto automaticamente tramite lo strumento di flashing o tenendo premuto il pulsante di avvio e toccando il pulsante EN. 2. Dopo aver flashato il binario files, lo strumento di download Flash riavvia il modulo ESP32 e avvia l'applicazione flashata per impostazione predefinita.
Dimensioni della scheda Contenuto e imballaggio
Sistemi Espressif
6 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Introduzione Fig. 3: Dimensioni della scheda ESP32-DevKitS – retro
Sistemi Espressif
Fig. 4: Dimensioni della scheda ESP32-DevKitS-R – retro 7
Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Ordini al dettaglio Se ordini alcuni sampOgni ESP32-DevKitS(-R) viene fornito in una confezione individuale, in un sacchetto antistatico o in qualsiasi altro imballaggio, a seconda del rivenditore. Per ordini al dettaglio, visitare https://www.espressif.com/en/contact-us/get-sampmeno.
Ordini all'ingrosso: se ordinate all'ingrosso, le tavolette saranno consegnate in grandi scatole di cartone. Per ordini all'ingrosso, visitate https://www.espressif.com/en/contact-us/sales-questions.
Riferimento hardware
Diagramma a blocchi Il diagramma a blocchi seguente mostra i componenti di ESP32-DevKitS(-R) e le loro interconnessioni.
Fig. 5: ESP32-DevKitS(-R) (cliccare per ingrandire)
Opzioni di alimentazione Esistono tre modi reciprocamente esclusivi per fornire alimentazione alla scheda: · Porta micro USB, alimentazione predefinita · Pin header 5V e GND · Pin header 3V3 e GND
Si consiglia di utilizzare la prima opzione: porta micro USB.
Sistemi Espressif
.
Segnale di etichetta
L1 3V3 VDD 3V3
L2 EN CHIP_PU
SENSORE VP L3_VP
L4 VN SENSOR_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
continua nella pagina successiva
8 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Tabella 1 continua dalla pagina precedente
.
Segnale di etichetta
L9 25
GPIO25
L10 26
GPIO26
L11 27
GPIO27
L12 14
GPIO14
L13 12
GPIO12
L14 Massa Massa
L15 13
GPIO13
L16 D2 SD_DATA2
L17 D3 SD_DATA3
L18 CMD SD_CMD
L19V
Esterno 5V
R1 Massa Massa
R2 23
GPIO23
R3 22
GPIO22
R4 TX U0TXD
R5 RX U0RXD
R6 21
GPIO21
R7 Massa Massa
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 di intestazione Per l'immagine dei blocchi di intestazione, fare riferimento alla Descrizione dei componenti.
Documenti correlati
· Schemi ESP32-DevKitS(-R) (PDF) · Scheda tecnica ESP32 (PDF) · Scheda tecnica ESP32-WROOM-32 (PDF) · Scheda tecnica ESP32-WROOM-32D e ESP32-WROOM-32U (PDF) · Scheda tecnica ESP32-SOLO-1 (PDF) · Scheda tecnica ESP32-WROVER (PDF) · Scheda tecnica ESP32-WROVER-B (PDF) · Selettore prodotti ESP
ESP32-DevKitM-1
Questa guida utente ti aiuterà a iniziare a usare ESP32-DevKitM-1 e ti fornirà anche informazioni più approfondite.
ESP32-DevKitM-1 è una scheda di sviluppo basata su ESP32-MINI-1 (1U) prodotta da Espressif. La maggior parte dei pin di I/O è suddivisa in connettori pin su entrambi i lati per un facile interfacciamento. Gli utenti possono collegare le periferiche con cavi jumper o montare ESP32-DevKitM-1 su una breadboard.
Sistemi Espressif
9 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
ESP32-DevKitM-1 – anteriore
ESP32-DevKitM-1 – isometric
Il documento è composto dalle seguenti sezioni principali: · Introduzione: fornisce una panoramicaview delle istruzioni di configurazione hardware/software e dell'ESP32-DevKitM-1 per iniziare. · Riferimento hardware: fornisce informazioni più dettagliate sull'hardware dell'ESP32-DevKitM-1ns. · Documenti correlati: fornisce link alla documentazione correlata.
Introduzione Questa sezione descrive come iniziare a utilizzare ESP32-DevKitM-1. Inizia con alcune sezioni introduttive su ESP32-DevKitM-1, quindi la sezione Avvio dello sviluppo dell'applicazione fornisce istruzioni su come eseguire la configurazione hardware iniziale e quindi su come flashare il firmware su ESP32-DevKitM-1.
Sopraview Questa è una piccola e comoda scheda di sviluppo che include:
· Modulo ESP32-MINI-1 o ESP32-MINI-1U · Interfaccia di programmazione USB-seriale che fornisce anche alimentazione alla scheda · connettori pin · pulsanti per il reset e l'attivazione della modalità di download del firmware · alcuni altri componenti
Contenuto e Imballaggio
Ordini al dettaglio Se ordini alcuni sampTuttavia, ogni ESP32-DevKitM-1 è disponibile in una confezione individuale, contenuta in un sacchetto antistatico o in qualsiasi altro imballaggio, a seconda del rivenditore.
Per ordini al dettaglio, visitare https://www.espressif.com/en/contact-us/get-sampmeno.
Ordini all'ingrosso: se ordinate all'ingrosso, le tavolette saranno consegnate in grandi scatole di cartone. Per ordini all'ingrosso, visitate https://www.espressif.com/en/contact-us/sales-questions.
Descrizione dei componenti La figura seguente e la tabella sottostante descrivono i componenti chiave, le interfacce e i controlli della scheda ESP32-DevKitM-1. Prendiamo come esempio la scheda con un modulo ESP32-MINI-1.ample nelle sezioni seguenti.
Sistemi Espressif
10 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 6: ESP32-DevKitM-1 – frontale
Modulo di bordo del componente chiave
Pulsante di avvio LDO da 5 V a 3.3 V
Pulsante di reset Porta micro-USB
LED di accensione da 3.3 V del bridge USB-UART
Connettore I/O
Descrizione
Modulo ESP32-MINI-1 o modulo ESP32-MINI-1U. ESP32-MINI-1 è dotato di un'antenna PCB integrata. ESP32-MINI-1U è dotato di un connettore per antenna esterna. Entrambi i moduli sono dotati di una flash da 4 MB nel package del chip. Per maggiori dettagli, consultare le schede tecniche di ESP32-MINI-1 e ESP32-MINI-1U.
Il regolatore di potenza converte da 5 V a 3.3 V.
Pulsante Download. Tenendo premuto Boot e premendo Reset si avvia la modalità Firmware Download per scaricare il firmware tramite la porta seriale.
Pulsante di reset
Interfaccia USB. Alimentatore per la scheda e interfaccia di comunicazione tra un computer e il chip ESP32.
Il singolo chip bridge USB-UART offre velocità di trasferimento fino a 3 Mbps.
Si accende quando la porta USB è collegata alla scheda. Per maggiori dettagli, consultare gli schemi elettrici nella sezione Documenti correlati. Tutti i pin GPIO disponibili (ad eccezione del bus SPI per la flash) sono suddivisi nei pin header sulla scheda. Gli utenti possono programmare il chip ESP32 per abilitare più funzioni.
Avviare lo sviluppo dell'applicazione Prima di accendere l'ESP32-DevKitM-1, assicurarsi che sia in buone condizioni e che non presenti segni evidenti di danni.
Hardware richiesto · ESP32-DevKitM-1 · Cavo USB 2.0 (da Standard-A a Micro-B) · Computer con Windows, Linux o macOS
Installazione del software Procedere con l'avvio, dove la sezione Installazione vi aiuterà rapidamente a configurare l'ambiente di sviluppo e quindi a flashare un'applicazione example sul tuo ESP32-DevKitM-1.
Sistemi Espressif
11 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Attenzione: le schede ESP32-DevKitM-1 prodotte prima del 2 dicembre 2021 hanno un modulo single core installato. Per verificare di quale modulo si dispone, controllare le informazioni di marcatura del modulo in PCN-2021-021. Se la scheda ha un modulo single core installato, abilitare la modalità single core (CONFIG_FREERTOS_UNICORE) in menuconfig prima di flashare le applicazioni.
Diagramma a blocchi di riferimento hardware Il diagramma a blocchi seguente mostra i componenti di ESP32-DevKitM-1 e le relative interconnessioni.
Figura 7: ESP32-DevKitM-1
Selezione della fonte di alimentazione Esistono tre modi reciprocamente esclusivi per fornire alimentazione alla scheda: · Porta micro USB, alimentatore predefinito · Pin header 5V e GND · Pin header 3V3 e GND
Attenzione: · L'alimentazione deve essere fornita utilizzando una e una sola delle opzioni sopra indicate, altrimenti la scheda e/o la fonte di alimentazione potrebbero danneggiarsi. · Si consiglia l'alimentazione tramite porta micro USB.
Descrizione dei pin La tabella seguente fornisce il nome e la funzione dei pin su entrambi i lati della scheda. Per le configurazioni dei pin delle periferiche, fare riferimento alla scheda tecnica dell'ESP32.
NO.
Nome
Tipo
1
Terra
P
2
3V3
P
Funzione Massa Alimentazione 3.3 V
continua nella pagina successiva
Sistemi Espressif
12 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Tabella 2 continua dalla pagina precedente
NO.
Nome
Tipo
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
Ripristina; Alto: abilita; Basso: si spegne
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
Entrata/uscita
GPIO32, XTAL_32K_P (ingresso oscillatore a cristallo da 32.768 kHz),
ADC1_CH4, TOUCH9, RTC_GPIO9
11
IO33
Entrata/uscita
GPIO33, XTAL_32K_N (uscita oscillatore a cristallo 32.768 kHz),
ADC1_CH5, TOUCH8, RTC_GPIO8
12
IO25
Entrata/uscita
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
13
IO26
Entrata/uscita
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
14
IO27
Entrata/uscita
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
15
IO14
Entrata/uscita
GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
16
5V
P
Alimentazione 5 V
17
IO12
Entrata/uscita
GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
HS2_DATI2, SD_DATI2, EMAC_TXD3
18
IO13
Entrata/uscita
GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
19
IO15
Entrata/uscita
GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,
HS2_CMD, SD_CMD, EMAC_RXD3
20
IO2
Entrata/uscita
GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
21
IO0
Entrata/uscita
GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
EMAC_TX_CLK
22
IO4
Entrata/uscita
GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
23
IO9
Entrata/uscita
GPIO9, HS1_DATA2, U1RXD, SD_DATA2
24
IO10
Entrata/uscita
GPIO10, HS1_DATA3, U1TXD, SD_DATA3
25
IO5
Entrata/uscita
GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK
26
IO18
Entrata/uscita
GPIO18, HS1_DATA7, VSPICLK
27
IO23
Entrata/uscita
GPIO23, HS1_STROBE, VSPID
28
IO19
Entrata/uscita
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
29
IO22
Entrata/uscita
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
30
IO21
Entrata/uscita
GPIO21, VSPIHD, EMAC_TX_EN
31
TXD0
Entrata/uscita
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
Entrata/uscita
GPIO3, U0RXD, CLK_OUT2
Dettagli sulla revisione hardware Non sono disponibili versioni precedenti.
Documenti correlati
· Scheda tecnica ESP32-MINI-1 e ESP32-MINI-1U (PDF) · Schemi ESP32-DevKitM-1 (PDF) · Layout PCB ESP32-DevKitM-1 (PDF) · Layout ESP32-DevKitM-1 (DXF) – Puoi view con Autodesk Viewer online · Scheda tecnica ESP32 (PDF) · Selettore prodotti ESP
Per ulteriore documentazione di progettazione della scheda, contattateci all'indirizzo sales@espressif.com.
Sistemi Espressif
13 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
1.2.2 Software
Per iniziare a utilizzare ESP-IDF su ESP32, installare il seguente software: · Toolchain per compilare il codice per ESP32 · Strumenti di compilazione: CMake e Ninja per creare un'applicazione completa per ESP32 · ESP-IDF che contiene essenzialmente API (librerie software e codice sorgente) per ESP32 e script per utilizzare la Toolchain
1.3 Installazione
Per installare tutto il software necessario, offriamo diverse soluzioni per semplificare l'operazione. Scegli tra una delle opzioni disponibili.
1.3.1 IDE
Nota: consigliamo vivamente di installare ESP-IDF tramite il vostro IDE preferito.
· Plugin Eclipse · Estensione VSCode
1.3.2 Installazione manuale
Per la procedura manuale, seleziona in base al tuo sistema operativo.
Sistemi Espressif
14 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Configurazione standard di Toolchain per Windows
Introduzione ESP-IDF richiede l'installazione di alcuni strumenti prerequisiti per poter compilare il firmware per i chip supportati. Gli strumenti prerequisiti includono Python, Git, cross-compilatori, CMake e Ninja. Per questa Guida introduttiva utilizzeremo il Prompt dei Comandi, ma dopo l'installazione di ESP-IDF è possibile utilizzare il Plugin Eclipse o un altro IDE grafico con supporto CMake. Nota: Limitazioni: – Il percorso di installazione di ESP-IDF e degli Strumenti ESP-IDF non deve essere più lungo di 90 caratteri. Percorsi di installazione troppo lunghi potrebbero causare una compilazione non riuscita. – Il percorso di installazione di Python o ESP-IDF non deve contenere spazi vuoti o parentesi. – Il percorso di installazione di Python o ESP-IDF non deve contenere caratteri speciali (non ASCII) a meno che il sistema operativo non sia configurato con il supporto Unicode UTF-8p. L'amministratore di sistema può abilitare il supporto tramite Pannello di controllo – Modifica formato data, ora o numeri – Scheda Amministrazione – Modifica impostazioni locali del sistema – Seleziona l'opzione oBeta: Usa Unicode UTF-8 per il supporto linguistico mondiale – Ok e riavvia il computer.
Programma di installazione degli strumenti ESP-IDF Il modo più semplice per installare i prerequisiti di ESP-IDF è scaricare uno dei programmi di installazione degli strumenti ESP-IDF.
Scarica Windows Installer
Qual è il caso d'uso per l'installatore online e offline? L'installatore online è molto piccolo e consente l'installazione di tutte le versioni disponibili di ESP-IDF. L'installatore scaricherà solo le dipendenze necessarie, incluso Git per Windows, durante il processo di installazione. L'installatore memorizza i file scaricati. files nella directory della cache %userprofile%. espressivo
L'installer offline non richiede alcuna connessione di rete. L'installer contiene tutte le dipendenze necessarie, incluso Git per Windows.
Componenti dell'installazione Il programma di installazione distribuisce i seguenti componenti:
· Python incorporato · Cross-compilatori · OpenOCD · Strumenti di compilazione CMake e Ninja · ESP-IDF
Il programma di installazione consente anche di riutilizzare la directory esistente con ESP-IDF. La directory consigliata è %userprofile%Desktopesp-idf dove %userprofile% è la tua directory home.
Sistemi Espressif
15 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Avvio dell'ambiente ESP-IDF Al termine del processo di installazione, è possibile selezionare l'opzione Esegui ambiente ESP-IDF PowerShell o Esegui prompt dei comandi ESP-IDF (cmd.exe). Il programma di installazione avvierà l'ambiente ESP-IDF nel prompt selezionato. Esegui ambiente ESP-IDF PowerShell:
Fig. 8: Completamento della procedura guidata di installazione degli strumenti ESP-IDF con Esegui ambiente PowerShell ESP-IDF
Eseguire il prompt dei comandi ESP-IDF (cmd.exe):
Utilizzo del Prompt dei Comandi Per i restanti passaggi introduttivi, utilizzeremo il Prompt dei Comandi di Windows. Il programma di installazione degli strumenti ESP-IDF crea anche un collegamento nel menu Start per avviare il Prompt dei Comandi ESP-IDF. Questo collegamento avvia il Prompt dei Comandi (cmd.exe) ed esegue lo script export.bat per impostare le variabili d'ambiente (PATH, IDF_PATH e altre). All'interno di questo prompt dei comandi, sono disponibili tutti gli strumenti installati. Si noti che questo collegamento è specifico per la directory ESP-IDF selezionata nel programma di installazione degli strumenti ESP-IDF. Se sul computer sono presenti più directory ESP-IDF (ad esempioample, per lavorare con diverse versioni di ESP-IDF), hai due opzioni per usarli:
1. Creare una copia del collegamento creato dall'installatore degli strumenti ESP-IDF e modificare la directory di lavoro del nuovo collegamento nella directory ESP-IDF che si desidera utilizzare.
2. In alternativa, esegui cmd.exe, quindi spostati nella directory ESP-IDF che desideri utilizzare ed esegui export.bat. Nota che, a differenza dell'opzione precedente, questo metodo richiede che Python e Git siano presenti in PATH. Se riscontri errori relativi al mancato rilevamento di Python o Git, utilizza la prima opzione.
Primi passi su ESP-IDF Ora che tutti i requisiti sono soddisfatti, il prossimo argomento ti guiderà su come avviare il tuo primo progetto.
Sistemi Espressif
16 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Introduzione Fig. 9: ESP-IDF PowerShell
Fig. 10: Completamento della procedura guidata di installazione degli strumenti ESP-IDF con Esegui prompt dei comandi ESP-IDF (cmd.exe)
Sistemi Espressif
17 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 11: Prompt dei comandi ESP-IDF
Sistemi Espressif
18 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Questa guida ti aiuterà nei primi passi nell'utilizzo di ESP-IDF. Segui questa guida per avviare un nuovo progetto sull'ESP32 e compilare, flashare e monitorare l'output del dispositivo. Nota: se non hai ancora installato ESP-IDF, vai alla sezione Installazione e segui le istruzioni per ottenere tutto il software necessario per utilizzare questa guida.
Avvia un progetto Ora sei pronto a preparare la tua applicazione per ESP32. Puoi iniziare con il progetto getstarted/hello_world da examples in ESP-IDF.
Importante: il sistema di compilazione ESP-IDF non supporta spazi nei percorsi verso ESP-IDF o verso i progetti.
Copia il progetto get-started/hello_world nella directory ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
Nota: esiste una gamma di exampi progetti nell'examples in ESP-IDF. Puoi copiare qualsiasi progetto nello stesso modo presentato sopra ed eseguirlo. È anche possibile costruire examples sul posto senza prima copiarli.
Collega il tuo dispositivo. Ora collega la scheda ESP32 al computer e controlla su quale porta seriale è visibile. I nomi delle porte seriali iniziano con COM in Windows. Se non sei sicuro di come controllare il nome della porta seriale, consulta la sezione "Stabilire una connessione seriale con ESP32" per maggiori dettagli.
Nota: tieni a portata di mano il nome della porta poiché ti servirà nei passaggi successivi.
Configura il tuo progetto Vai alla directory hello_world, imposta ESP32 come destinazione ed esegui l'utilità di configurazione del progetto menuconfig.
CD di Windows %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
Dopo aver aperto un nuovo progetto, è necessario impostare il target con idf.py set-target esp32. Si noti che le build e le configurazioni esistenti nel progetto, se presenti, verranno cancellate e inizializzate in questo processo. È possibile salvare il target nella variabile d'ambiente per saltare questo passaggio. Vedere "Selezionare il chip target: set-target" per ulteriori informazioni. Se i passaggi precedenti sono stati eseguiti correttamente, verrà visualizzato il seguente menu: Questo menu viene utilizzato per impostare variabili specifiche del progetto, ad esempio nome e password della rete Wi-Fi, velocità del processore, ecc. L'impostazione del progetto con menuconfig può essere saltata per ohello_wordp, poiché questo esempioample viene eseguito con la configurazione predefinita.
Attenzione: se si utilizza la scheda ESP32-DevKitC con il modulo ESP32-SOLO-1 o la scheda ESP32-DevKitM-1 con il modulo ESP32-MIN1-1(1U), abilitare la modalità single core (CONFIG_FREERTOS_UNICORE) in menuconfig prima di eseguire il flashing exampmeno.
Sistemi Espressif
19 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 12: Configurazione del progetto – Finestra Home
Nota: i colori del menu potrebbero essere diversi nel tuo terminale. Puoi modificarne l'aspetto con l'opzione -style. Per ulteriori informazioni, esegui idf.py menuconfig -help.
Se utilizzi una delle schede di sviluppo supportate, puoi velocizzare lo sviluppo utilizzando il Board Support Package. Per ulteriori informazioni, consulta la sezione Suggerimenti aggiuntivi.
Compila il progetto Compila il progetto eseguendo:
compilazione idf.py
Questo comando compilerà l'applicazione e tutti i componenti ESP-IDF, quindi genererà il bootloader, la tabella delle partizioni e i binari dell'applicazione.
$ idf.py build Esecuzione di cmake nella directory /path/to/hello_world/build Esecuzione di "cmake -G Ninja –warn-uninitialized /path/to/hello_world"... Avviso sui valori non inizializzati. — Trovato Git: /usr/bin/git (trovata versione "2.17.0") — Creazione di un componente aws_iot vuoto a causa della configurazione — Nomi dei componenti: … — Percorsi dei componenti: …
… (più righe di output del sistema di compilazione)
[527/527] Generazione di hello_world.bin esptool.py v2.3.1
Compilazione del progetto completata. Per flashare, esegui questo comando: ../../../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 oppure esegui 'idf.py -p PORT flash'
Se non ci sono errori, la build terminerà generando il binario del firmware .bin files.
Sistemi Espressif
20 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Flash sul dispositivo Flash i binari che hai appena creato (bootloader.bin, partition-table.bin e hello_world.bin) sulla tua scheda ESP32 eseguendo: idf.py -p PORT [-b BAUD] flash
Sostituisci PORT con il nome della porta seriale della tua scheda ESP32. Puoi anche modificare la velocità in baud del flasher sostituendo BAUD con la velocità in baud desiderata. La velocità in baud predefinita è 460800. Per maggiori informazioni sugli argomenti di idf.py, consulta idf.py.
Nota: l'opzione flash compila e aggiorna automaticamente il progetto, quindi non è necessario eseguire idf.py build.
Problemi riscontrati durante il flashing? Se esegui il comando indicato e visualizzi errori come "soFailed to connectp", le cause potrebbero essere diverse. Una delle cause potrebbe essere un problema riscontrato da esptool.py, l'utilità chiamata dal sistema di build per resettare il chip, interagire con il bootloader della ROM e flashare il firmware. Una semplice soluzione da provare è il reset manuale descritto di seguito; se non dovesse funzionare, puoi trovare maggiori dettagli sui possibili problemi nella sezione Risoluzione dei problemi.
esptool.py ripristina automaticamente ESP32 attivando le linee di controllo DTR e RTS del chip convertitore da USB a seriale, ad esempio FTDI o CP210x (per maggiori informazioni, vedere Stabilire una connessione seriale con ESP32). Le linee di controllo DTR e RTS sono a loro volta collegate ai pin GPIO0 e CHIP_PU (EN) di ESP32, modificando così il volume.tagI livelli di DTR e RTS avvieranno ESP32 in modalità di download del firmware. Come esempioample, controlla lo schema della scheda di sviluppo ESP32 DevKitC.
In generale, non dovresti avere problemi con le schede di sviluppo ufficiali esp-idf. Tuttavia, esptool.py non è in grado di ripristinare automaticamente l'hardware nei seguenti casi:
· L'hardware non ha le linee DTR e RTS collegate a GPIO0 e CHIP_PU · Le linee DTR e RTS sono configurate in modo diverso · Non ci sono affatto linee di controllo seriali di questo tipo
A seconda del tipo di hardware in uso, potrebbe anche essere possibile mettere manualmente la scheda ESP32 in modalità di download del firmware (reset).
· Per le schede di sviluppo prodotte da Espressif, queste informazioni possono essere trovate nelle rispettive guide introduttive o guide utente. Ad esempioampPer resettare manualmente una scheda di sviluppo ESP-IDF, tenere premuto il pulsante Boot (GPIO0) e premere il pulsante EN (CHIP_PU).
· Per altri tipi di hardware, provare a tirare giù GPIO0.
Funzionamento normale Durante il flashing, verrà visualizzato un registro di output simile al 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 Connessione…….._ Il chip è ESP32D0WDQ6 (revisione 0) Caratteristiche: WiFi, BT, Dual Core, Schema di codifica Nessuno Il cristallo è 40 MHz MAC: 24:0a:c4:05:b9:14 Caricamento stub… Esecuzione stub… Stub in esecuzione… Modifica della velocità in baud a 460800 Modificato.
(continua nella pagina successiva)
Sistemi Espressif
21 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
(continua dalla pagina precedente) Configurazione della dimensione flash... Compressi 3072 byte in 103... Scrittura a 0x00008000... (100%) Scritti 3072 byte (103 compressi) a 0x00008000 in 0.0 secondi (effettivi 5962.8 kbit/s)... Hash dei dati verificato. Compressi 26096 byte in 15408... Scrittura a 0x00001000... (100%) Scritti 26096 byte (15408 compressi) a 0x00001000 in 0.4 secondi (effettivi 546.7 kbit/s)... Hash dei dati verificato. Compressi 147104 byte in 77364… Scrittura a 0x00010000… (20 %) Scrittura a 0x00014000… (40 %) Scrittura a 0x00018000… (60 %) Scrittura a 0x0001c000… (80 %) Scrittura a 0x00020000… (100 %) Scritti 147104 byte (77364 compressi) a 0x00010000 in 1.9 secondi (effettivi 615,5 kbit/s)… Hash dei dati verificato.
In partenza... Hard reset tramite pin RTS... Fatto
Se non ci sono problemi entro la fine del processo di flash, la scheda si riavvierà e avvierà l'applicazione ohello_worldp. Se preferisci utilizzare l'IDE Eclipse o VS Code invece di eseguire idf.py, dai un'occhiata a Eclipse Plugin, VSCode Extension.
Monitorare l'output Per verificare se ohello_worldpis è effettivamente in esecuzione, digitare idf.py -p PORT monitor (non dimenticare di sostituire PORT con il nome della porta seriale).
Questo comando avvia l'applicazione IDF Monitor:
$ idf.py -p monitor Esecuzione di idf_monitor nella directory […]/esp/hello_world/build Esecuzione di “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor attivo 115200 —– Esci: Ctrl+] | Menu: Ctrl+T | Aiuto: Ctrl+T seguito da Ctrl+H –ets 8 giu 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 giu 2016 00:22:57 …
Dopo che i registri di avvio e di diagnostica scorrono verso l'alto, dovresti vedere la scritta oHello world! stampata dall'applicazione.
… Ciao mondo! Riavvio tra 10 secondi… Questo è un chip esp32 con 2 core CPU, WiFi/BT/BLE, revisione silicio 1, 2 MB di flash esterna Dimensione minima heap libera: 298968 byte Riavvio tra 9 secondi… Riavvio tra 8 secondi… Riavvio tra 7 secondi…
Per uscire dal monitor IDF usa la scorciatoia Ctrl+].
Sistemi Espressif
22 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Se il monitor IDF si guasta poco dopo il caricamento o se, invece dei messaggi sopra riportati, vengono visualizzati dati casuali simili a quelli riportati di seguito, è probabile che la scheda utilizzi un cristallo da 26 MHz. La maggior parte dei progetti di schede di sviluppo utilizza 40 MHz, quindi ESP-IDF utilizza questa frequenza come valore predefinito.
Se riscontri un problema di questo tipo, procedi come segue: 1. Esci dal monitor. 2. Torna a menuconfig. 3. Vai a Configurazione componente > Impostazioni hardware > Configurazione XTAL principale > Frequenza XTAL principale, quindi modifica CONFIG_XTAL_FREQ_SEL su 26 MHz. 4. Dopodiché, compila e aggiorna nuovamente l'applicazione.
Nella versione attuale di ESP-IDF, le principali frequenze XTAL supportate da ESP32 sono le seguenti:
· 26 MHz · 40 MHz
Nota: è possibile combinare la compilazione, il flashing e il monitoraggio in un unico passaggio eseguendo: idf.py -p PORT flash monitor
Vedere anche: · IDF Monitor per utili scorciatoie e maggiori dettagli sull'utilizzo di IDF Monitor. · idf.py per un riferimento completo dei comandi e delle opzioni di idf.py.
Questo è tutto ciò che ti serve per iniziare con ESP32! Ora sei pronto per provare qualche altro examples, oppure passare direttamente allo sviluppo delle proprie applicazioni.
Importante: Alcuni exampi les non supportano ESP32 perché l'hardware richiesto non è incluso in ESP32, quindi non può essere supportato. Se si costruisce un example, per favore controlla il README file per la tabella dei target supportati. Se questa è presente, incluso il target ESP32, o la tabella non esiste affatto, l'exampfunzionerà su ESP32.
Suggerimenti aggiuntivi
Problemi di autorizzazione /dev/ttyUSB0 Con alcune distribuzioni Linux, potresti ricevere il messaggio di errore "Failed to open port /dev/ttyUSB0" durante il flashing dell'ESP32. Questo problema può essere risolto aggiungendo l'utente corrente al gruppo dialout.
Compatibilità con Python: ESP-IDF supporta Python 3.7 o versioni successive. Si consiglia di aggiornare il sistema operativo a una versione recente che soddisfi questo requisito. Altre opzioni includono l'installazione di Python dai sorgenti o l'utilizzo di un sistema di gestione delle versioni Python come pyenv.
Inizia con Board Support Package Per velocizzare la prototipazione su alcune schede di sviluppo, puoi utilizzare Board Support Package (BSP), che semplificano l'inizializzazione di una scheda specifica con poche chiamate di funzione.
Sistemi Espressif
23 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Un BSP supporta in genere tutti i componenti hardware forniti sulla scheda di sviluppo. Oltre alla definizione del pinout e alle funzioni di inizializzazione, un BSP include i driver per i componenti esterni come sensori, display, codec audio, ecc. I BSP sono distribuiti tramite IDF Component Manager, quindi sono reperibili nell'IDF Component Registry. Ecco un esempio:ample su come aggiungere ESP-WROVER-KIT BSP al tuo progetto: idf.py add-dependency esp_wrover_kit
più exampI dettagli sull'utilizzo di BSP possono essere trovati in BSP exampcartella les.
Documenti correlati Per utenti avanzati che desiderano personalizzare il processo di installazione: · Aggiornamento degli strumenti ESP-IDF su Windows · Stabilire una connessione seriale con ESP32 · Plugin Eclipse · Estensione VSCode · Monitor IDF
Aggiornamento degli strumenti ESP-IDF su Windows
Installare gli strumenti ESP-IDF tramite uno script Dal prompt dei comandi di Windows, passare alla directory in cui è installato ESPIDF. Quindi eseguire:
installare.bat
Per Powershell, passare alla directory in cui è installato ESP-IDF. Quindi eseguire:
installazione.ps1
Verranno scaricati e installati gli strumenti necessari per utilizzare ESP-IDF. Se la versione specifica dello strumento è già installata, non verrà intrapresa alcuna azione. Gli strumenti vengono scaricati e installati in una directory specificata durante la procedura di installazione degli strumenti ESP-IDF. Per impostazione predefinita, questa è C:\Users\username\espressif.
Aggiungere gli strumenti ESP-IDF a PATH utilizzando uno script di esportazione. Il programma di installazione degli strumenti ESP-IDF crea un collegamento al menu Start per il prompt dei comandi ESP-IDF. Questo collegamento apre una finestra del prompt dei comandi in cui sono già presenti tutti gli strumenti.
Disponibile. In alcuni casi, potrebbe essere necessario utilizzare ESP-IDF in una finestra del prompt dei comandi che non è stata avviata tramite tale collegamento. In tal caso, seguire le istruzioni riportate di seguito per aggiungere gli strumenti ESP-IDF a PATH. Nel prompt dei comandi in cui è necessario utilizzare ESP-IDF, passare alla directory in cui è installato ESP-IDF, quindi eseguire export.bat:
cd %userprofile%espesp-idf export.bat
In alternativa, nella Powershell in cui è necessario utilizzare ESP-IDF, passare alla directory in cui è installato ESP-IDF, quindi eseguire export.ps1:
cd ~/esp/esp-idf export.ps1
Una volta eseguita questa operazione, gli strumenti saranno disponibili in questo prompt dei comandi.
Stabilire una connessione seriale con ESP32 Questa sezione fornisce indicazioni su come stabilire una connessione seriale tra ESP32 e PC.
Sistemi Espressif
24 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Collega l'ESP32 al PC. Collega la scheda ESP32 al PC tramite il cavo USB. Se il driver del dispositivo non si installa automaticamente, identifica il chip convertitore da USB a seriale sulla scheda ESP32 (o il dongle convertitore esterno), cerca i driver su Internet e installali. Di seguito è riportato l'elenco dei chip convertitore da USB a seriale installati sulla maggior parte delle schede ESP32 prodotte da Espressif, insieme ai link ai driver:
· CP210x: Driver VCP per bridge USB-UART CP210x · FTDI: Driver per porta COM virtuale FTDI Consultare il manuale utente della scheda per informazioni sul chip convertitore da USB a seriale utilizzato. I driver sopra riportati sono principalmente a scopo di riferimento. In circostanze normali, i driver dovrebbero essere inclusi nel sistema operativo e installati automaticamente al momento del collegamento della scheda al PC.
Verifica la porta su Windows. Controlla l'elenco delle porte COM identificate in Gestione dispositivi di Windows. Scollega ESP32 e ricollegalo per verificare quale porta scompare dall'elenco e poi riappare. Le figure seguenti mostrano la porta seriale per ESP32 DevKitC ed ESP32 WROVER KIT.
Fig. 13: Bridge USB-UART di ESP32-DevKitC in Gestione dispositivi di Windows
Controlla la porta su Linux e macOS Per controllare il nome del dispositivo per la porta seriale della tua scheda ESP32 (o dongle convertitore esterno), esegui questo comando due volte, prima con la scheda/dongle scollegata, poi con collegata. La porta che appare la seconda volta è quella che ti serve: Linux
ls /dev/tty*
sistema operativo macOS
Sistemi Espressif
25 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 14: Due porte seriali USB di ESP-WROVER-KIT in Gestione dispositivi di Windows
Sistemi Espressif
26 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
ls /dev/cu.* Nota: utenti macOS: se non vedete la porta seriale, verificate di aver installato i driver USB/seriale. Consultate la sezione "Connettere ESP32 al PC" per i link ai driver. Per macOS High Sierra (10.13), potrebbe essere necessario consentire esplicitamente il caricamento dei driver. Aprite Preferenze di Sistema -> Sicurezza e Privacy -> Generale e verificate se viene visualizzato un messaggio relativo al software di sistema dello sviluppatore lp, dove il nome dello sviluppatore è Silicon Labs o FTDI.
Aggiungere un utente al gruppo dialout su Linux: l'utente attualmente connesso dovrebbe avere accesso in lettura e scrittura alla porta seriale tramite USB. Sulla maggior parte delle distribuzioni Linux, questo si ottiene aggiungendo l'utente al gruppo dialout con il seguente comando:
sudo usermod -a -G dialout $USER
su Arch Linux questo viene fatto aggiungendo l'utente al gruppo uucp con il seguente comando:
sudo usermod -a -G uucp $USER
Assicurati di eseguire nuovamente il login per abilitare i permessi di lettura e scrittura per la porta seriale.
Verifica della connessione seriale. Ora verifica che la connessione seriale sia operativa. Puoi farlo utilizzando un programma per terminale seriale, verificando se ricevi un output sul terminale dopo aver resettato ESP32. La velocità di trasmissione predefinita della console su ESP32 è 115200.
Windows e Linux In questo esempioampUtilizzeremo il client SSH PuTTY, disponibile sia per Windows che per Linux. È possibile utilizzare altri programmi seriali e impostare i parametri di comunicazione come di seguito. Avviare il terminale e impostare la porta seriale identificata. Baud rate = 115200 (se necessario, modificarlo con il baud rate predefinito del chip in uso), bit di dati = 8, bit di stop = 1 e parità = N. Di seguito sono riportati alcuni esempi.ampEcco gli screenshot dell'impostazione della porta e dei parametri di trasmissione (in breve descritti come 115200-8-1-N) su Windows e Linux. Ricordatevi di selezionare esattamente la stessa porta seriale identificata nei passaggi precedenti. Quindi aprite la porta seriale nel terminale e verificate se ESP32 stampa un registro. Il contenuto del registro dipenderà dall'applicazione caricata su ESP32, vedere Esempio.ampl'output.
Nota: chiudere il terminale seriale dopo aver verificato che la comunicazione funzioni. Se si mantiene aperta la sessione del terminale, la porta seriale non sarà accessibile per il caricamento del firmware in un secondo momento.
macOS Per risparmiarti la fatica di installare un programma terminale seriale, macOS offre il comando screen. · Come discusso in Controllare la porta su Linux e macOS, esegui:
ls /dev/cu.* · Dovresti vedere un output simile:
/dev/cu.Bluetooth-Porta-in-ingresso /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· L'output varierà a seconda del tipo e del numero di schede collegate al PC. Quindi, seleziona il nome del dispositivo della scheda ed esegui (se necessario, modifica o115200pto, la velocità di trasmissione predefinita del chip in uso):
screen /dev/cu.device_name 115200 Sostituisci device_name con il nome trovato eseguendo ls /dev/cu.*.
Sistemi Espressif
27 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 15: Impostazione della comunicazione seriale in PuTTY su Windows
Sistemi Espressif
28 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Fig. 16: Impostazione della comunicazione seriale in PuTTY su Linux
Sistemi Espressif
29 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
· Quello che stai cercando è un registro visualizzato sullo schermo. Il contenuto del registro dipenderà dall'applicazione caricata su ESP32, vedi Esempioample Output. Per uscire dalla sessione dello schermo, digitare Ctrl-A + .
Nota: non dimenticare di uscire dalla sessione dello schermo dopo aver verificato che la comunicazione funzioni. Se non lo fai e chiudi semplicemente la finestra del terminale, la porta seriale non sarà più accessibile per il successivo caricamento del firmware.
Example Output Un exampIl log è mostrato di seguito. Reimposta la scheda se non vedi nulla. ets 8 giu 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 giu 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) avvio: tempo di compilazione 18:48:10
…
Se riesci a vedere un output di registro leggibile, significa che la connessione seriale funziona e sei pronto a procedere con l'installazione e infine a caricare l'applicazione su ESP32.
Nota: per alcune configurazioni di cablaggio delle porte seriali, i pin seriali RTS e DTR devono essere disabilitati nel programma terminale prima che l'ESP32 si avvii e produca un output seriale. Questo dipende dall'hardware stesso; la maggior parte delle schede di sviluppo (incluse tutte le schede Espressif) non presenta questo problema. Il problema si presenta se RTS e DTR sono cablati direttamente ai pin EN e GPIO0. Consultare la documentazione di esptool per maggiori dettagli.
Se sei arrivato qui dal Passaggio 5. Primi passi su ESP-IDF durante l'installazione del software per lo sviluppo ESP32, puoi continuare con il Passaggio 5. Primi passi su ESP-IDF.
IDF Monitor IDF Monitor è principalmente un programma terminale seriale che inoltra dati seriali da e verso la porta seriale del dispositivo di destinazione. Fornisce anche alcune funzionalità specifiche di IDF. IDF Monitor può essere avviato da un progetto IDF eseguendo idf.py monitor.
Scelte rapide da tastiera Per interagire facilmente con IDF Monitor, utilizzare le scorciatoie da tastiera indicate nella tabella.
Sistemi Espressif
30 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Scorciatoia da 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
Azione
Descrizione
Esci dal programma Tasto Esc del menu Invia il carattere del menu stesso al telecomando
Invia il carattere di uscita stesso al remoto
Reimposta il target nel bootloader per mettere in pausa l'app tramite la linea RTS
Reimposta la scheda di destinazione tramite RTS
Compila e flasha il progetto
Compila e flasha solo l'app
Interrompe/riprende la stampa dell'output del registro sullo schermo
Arresta/riprendi l'output del registro salvato in file
Orari di arresto/ripresaamps
stampa
Visualizza tutte le scorciatoie da tastiera
Premere e premere uno dei tasti indicati di seguito.
Reimposta la scheda target nel bootloader tramite la linea RTS (se connessa), in modo che la scheda non esegua alcun comando. Utile quando è necessario attendere l'avvio di un altro dispositivo. Reimposta la scheda target e riavvia l'applicazione tramite la linea RTS (se connessa).
Mette in pausa idf_monitor per eseguire la destinazione flash del progetto, quindi riprende idf_monitor. Qualsiasi origine modificata files vengono ricompilati e poi riprogrammati. Il target encrypted-flash viene eseguito se idf_monitor è stato avviato con l'argomento -E. Mette in pausa idf_monitor per eseguire il target app-flash, quindi riprende idf_monitor. Simile al target flash, ma solo l'app principale viene compilata e riprogrammata. Il target encrypted-app-flash viene eseguito se idf_monitor è stato avviato con l'argomento -E. Ignora tutti i dati seriali in arrivo durante l'attivazione. Consente di mettere in pausa ed esaminare rapidamente l'output del log senza uscire dal monitor. Crea un file nella directory del progetto e l'output viene scritto lì file finché questa opzione non viene disattivata con la stessa scorciatoia da tastiera (o IDF Monitor non esce). IDF Monitor può stampare un timestamp all'inizio di ogni riga. Il timestamp il formato può essere modificato da –timestamp-formatta l'argomento della riga di comando.
Esci dal programma
Interrompere l'esecuzione dell'applicazione
Mette in pausa IDF Monitor ed esegue il debugger del progetto GDB per eseguire il debug dell'applicazione in fase di esecuzione. Richiede l'abilitazione dell'opzione :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME.
Tutti i tasti premuti, ad eccezione di Ctrl-] e Ctrl-T, verranno inviati tramite la porta seriale.
Caratteristiche specifiche dell'IDF
Decodifica automatica dell'indirizzo Ogni volta che ESP-IDF emette un indirizzo in codice esadecimale nel formato 0x4_______, IDF Monitor utilizza addr2line_ per cercare la posizione nel codice sorgente e trovare il nome della funzione.
Se un'app ESP-IDF si blocca e va in panico, viene prodotto un dump del registro e un backtrace, come il seguente:
Sistemi Espressif
31 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Errore di Meditazione Guru di tipo StoreProhibited verificatosi sul core 0. Eccezione:
non gestito.
Registro dump:
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 CAUSA:
0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor aggiunge ulteriori dettagli al dump:
Errore di Meditazione Guru di tipo StoreProhibited verificatosi sul core 0. Eccezione:
non gestito.
Registro dump:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: fai_qualcosa_per_bloccarti in /home/gus/esp/32/idf/examples/get-started/
ciao_mondo/principale/./ciao_mondo_principale.c:57
(incorporato da) inner_dont_crash in /home/gus/esp/32/idf/examples/get-started/hello_
mondo/principale/./ciao_mondo_principale.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 CAUSA:
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: ancora_non_si_blocca in /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main in /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task in /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
Per decodificare ogni indirizzo, IDF Monitor esegue il seguente comando in background: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Nota: impostare la variabile di ambiente ESP_MONITOR_DECODE su 0 o chiamare idf_monitor.py con la riga di comando specifica
Sistemi Espressif
32 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
opzione: idf_monitor.py –disable-address-decoding per disabilitare la decodifica degli indirizzi.
Ripristino del target alla connessione Per impostazione predefinita, IDF Monitor ripristina il target quando si connette. Il ripristino del chip target viene eseguito tramite le linee seriali DTR e RTS. Per impedire a IDF Monitor di ripristinare automaticamente il target alla connessione, chiamare IDF Monitor con l'opzione –no-reset (ad esempio, idf_monitor.py –no-reset).
Nota: l'opzione –no-reset applica lo stesso comportamento anche quando si collega IDF Monitor a una porta specifica (ad esempio, idf.py monitor –no-reset -p [PORT]).
Avvio di GDB con GDBStub GDBStub è una utile funzionalità di debug runtime che viene eseguita sul target e si connette all'host tramite la porta seriale per ricevere comandi di debug. GDBStub supporta comandi come la lettura di memoria e variabili, l'esame dei frame dello stack delle chiamate, ecc. Sebbene GDBStub sia meno versatile di JTAG debug, non richiede alcun hardware speciale (come un JTAG al bridge USB) poiché la comunicazione avviene interamente tramite la porta seriale. Un target può essere configurato per eseguire GDBStub in background impostando CONFIG_ESP_SYSTEM_PANIC su GDBStub in fase di esecuzione. GDBStub verrà eseguito in background finché non verrà inviato un messaggio Ctrl+C sulla porta seriale che causerà l'interruzione dell'esecuzione del programma da parte di GDBStub, consentendo così a GDBStub di gestire i comandi di debug. Inoltre, il gestore del panico può essere configurato per eseguire GDBStub in caso di crash impostando CONFIG_ESP_SYSTEM_PANIC su GDBStub in caso di panico. Quando si verifica un crash, GDBStub emetterà una stringa speciale sulla porta seriale per indicare che è in esecuzione. In entrambi i casi (ovvero, inviando il messaggio Ctrl+C o ricevendo la stringa speciale), IDF Monitor avvierà automaticamente GDB per consentire all'utente di inviare comandi di debug. Dopo l'uscita da GDB, il target viene ripristinato tramite la linea seriale RTS. Se questa linea non è connessa, gli utenti possono reimpostare il loro target (premendo il pulsante Reset della scheda).
Nota: in background, IDF Monitor esegue il seguente comando per avviare GDB:
xtensa-esp32-elf-gdb -ex "imposta baud seriale BAUD" -ex "PORTA remota di destinazione" -ex interrupt build/PROJECT.elf :idf_target:`Ciao NOME chip`
Filtraggio dell'output Il monitor IDF può essere richiamato come idf.py monitor –print-filter=”xyz”, dove –print-filter è il parametro per il filtraggio dell'output. Il valore predefinito è una stringa vuota, il che significa che viene stampato tutto.
Le restrizioni su cosa stampare possono essere specificate come una serie ditag>: elementi dovetag> è il tag corda e è un carattere dell'insieme {N, E, W, I, D, V, *} che fa riferimento a un livello di registrazione.
Per esempioample, PRINT_FILTER=”tag1:W” corrisponde e stampa solo gli output scritti con ESP_LOGW(“tag1”, …) o a un livello di verbosità inferiore, ovvero ESP_LOGE(“tag1″, …). Non specificando un oppure utilizzando * si imposta il livello predefinito Verbose.
Nota: utilizzare la registrazione primaria per disabilitare in fase di compilazione gli output non necessari tramite la libreria di registrazione. Il filtraggio dell'output con il monitor IDF è una soluzione secondaria che può essere utile per regolare le opzioni di filtraggio senza ricompilare l'applicazione.
La tua app tags non deve contenere spazi, asterischi * o due punti : per essere compatibile con la funzione di filtraggio dell'output.
Se l'ultima riga dell'output nella tua app non è seguita da un ritorno a capo, il filtraggio dell'output potrebbe risultare confuso, ovvero il monitor inizia a stampare la riga e in seguito scopre che la riga non avrebbe dovuto essere scritta. Questo è un problema noto e può essere evitato aggiungendo sempre un ritorno a capo (soprattutto quando non segue alcun output immediatamente dopo).
Sistemi Espressif
33 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Examples di regole di filtraggio:
· * può essere utilizzato per abbinare qualsiasi tagsTuttavia, la stringa PRINT_FILTER=”*:I tag1:E” per quanto riguarda tag1 stampa solo errori, perché la regola per tag1 ha una priorità più alta rispetto alla regola per *.
· La regola predefinita (vuota) è equivalente a *:V perché corrisponde a ogni tag al livello Verbose o inferiore significa che tutto corrisponde.
· “*:N” sopprime non solo gli output delle funzioni di registrazione, ma anche le stampe effettuate da printf, ecc. Per evitare ciò, utilizzare *:E o un livello di verbosità più elevato.
· Regole "tag1:V”, “tag1:v”, “tag1:”, “tag1:*", e "tag1” sono equivalenti. · Regola “tag1:W tag1:E” è equivalente a “tag1:E” perché ogni conseguente occorrenza dello stesso tag
il nome sovrascrive quello precedente. · Regola “tag1:I tag2:W” viene stampato solo tag1 al livello di verbosità Info o inferiore e tag2 all'Avvertimento
livello di verbosità o inferiore. · Regola “tag1:I tag2:W tag3:N” è essenzialmente equivalente al precedente perché tag3:N specifica
Quello tag3 non dovrebbe essere stampato. · tag3:N nella regola “tag1:I tag2:W tag3:N *:V” è più significativo perché senza tag3:N il
tag3 messaggi avrebbero potuto essere stampati; gli errori per tag1 e tag2 verrà stampato al livello di verbosità specificato (o inferiore) e tutto il resto verrà stampato per impostazione predefinita.
Un esempio di filtraggio più complessoampil seguente frammento di registro è stato acquisito senza alcuna opzione di filtraggio:
load:0x40078000,len:13564 voce 0x40078d4c E (31) esp_image: l'immagine a 0x30000 ha un byte magico non valido W (31) esp_image: l'immagine a 0x30000 ha una modalità SPI non valida 255 E (39) boot: la partizione dell'app di fabbrica non è avviabile I (568) cpu_start: CPU Pro attiva. I (569) heap_init: inizializzazione in corso. RAM disponibile per l'allocazione dinamica: I (603) cpu_start: codice utente di avvio della CPU Pro D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range ha esito positivo per l'intervallo <54; 64) e VFS ID 1 I (328) wifi: attività driver wifi: 3ffdbf84, prio:23, stack:4096, core=0
Di seguito è riportato l'output catturato per le opzioni di filtraggio PRINT_FILTER=”wifi esp_image:E light_driver:I”:
E (31) esp_image: l'immagine a 0x30000 ha un byte magico non valido I (328) wifi: attività del driver wifi: 3ffdbf84, prio:23, stack:4096, core=0
Le opzioni “PRINT_FILTER=”light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V” mostrano il seguente output:
load:0x40078000,len:13564 voce 0x40078d4c I (569) heap_init: Inizializzazione. RAM disponibile per l'allocazione dinamica: D (309) light_driver: [light_init, 74]:stato: 1, modalità: 2
Problemi noti con IDF Monitor
Problemi osservati su Windows
· I tasti freccia, così come altri tasti, non funzionano in GDB a causa delle limitazioni della console di Windows. · Occasionalmente, quando oidf.pype esce, potrebbe bloccarsi fino a 30 secondi prima che IDF Monitor riprenda. · Quando ogdbpis è in esecuzione, potrebbe bloccarsi per un breve periodo prima di iniziare a comunicare con GDBStub.
Sistemi Espressif
34 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Introduzione alla configurazione standard della toolchain per Linux e macOS
Installazione passo dopo passo Questa è una roadmap dettagliata che ti guiderà attraverso il processo di installazione.
Impostazione dell'ambiente di sviluppo Ecco i passaggi per impostare ESP-IDF per il tuo ESP32. · Passaggio 1. Installa i prerequisiti · Passaggio 2. Ottieni ESP-IDF · Passaggio 3. Imposta gli strumenti · Passaggio 4. Imposta le variabili di ambiente · Passaggio 5. Primi passi su ESP-IDF
Fase 1. Prerequisiti di installazione Per utilizzare ESP-IDF con ESP32, è necessario installare alcuni pacchetti software in base al sistema operativo in uso. Questa guida all'installazione ti aiuterà a installare tutto sui sistemi basati su Linux e macOS.
Per gli utenti Linux: per compilare utilizzando ESP-IDF è necessario ottenere i seguenti pacchetti. Il comando da eseguire dipende dalla distribuzione Linux utilizzata:
· Ubuntu e 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 e 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 è ancora supportato, ma si consiglia la versione 8 di CentOS per una migliore esperienza utente. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Nota: · Per l'utilizzo con ESP-IDF è richiesta la versione 3.16 o successiva di CMake. Eseguire otools/idf_tools.py install cmakepto per installare una versione adatta se la versione del sistema operativo non ne prevede una. · Se la distribuzione Linux in uso non è presente nell'elenco sopra, consultare la documentazione per scoprire quale comando utilizzare per l'installazione del pacchetto.
Per gli utenti macOS ESP-IDF utilizzerà la versione di Python installata di default su macOS. · Installa CMake e Ninja build: Se hai HomeBrew, puoi eseguire: brew install cmake ninja dfu-util Se hai MacPorts, puoi eseguire: sudo port install cmake ninja dfu-util Altrimenti, consulta le home page di CMake e Ninja per i download di installazione per macOS.
Sistemi Espressif
35 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
· Si consiglia vivamente di installare anche ccache per build più veloci. Se si utilizza HomeBrew, è possibile farlo tramite brew install ccache o sudo port install ccache su MacPorts.
Nota: se durante un passaggio viene visualizzato un errore come questo: xcrun: errore: percorso sviluppatore attivo non valido (/Library/Developer/CommandLineTools), xcrun mancante in: /Library/Developer/CommandLineTools/usr/bin/xcrun
Per continuare, sarà necessario installare gli strumenti da riga di comando di XCode. È possibile installarli eseguendo xcode-select –install.
Utenti Apple M1 Se utilizzi la piattaforma Apple M1 e visualizzi un errore come questo: ATTENZIONE: la directory per lo strumento xtensa-esp32-elf versione esp-2021r2-patch3-8.4.0 è presente, ma lo strumento non è stato trovato ERRORE: lo strumento xtensa-esp32-elf non ha versioni installate. Esegui 'install.sh' per installarlo.
oppure: zsh: tipo di CPU errato nell'eseguibile: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Quindi dovrai installare Apple Rosetta 2 eseguendo /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Installazione di Python 3 In base alle note di rilascio di macOS Catalina 10.15, l'uso di Python 2.7 non è raccomandato e Python 2.7 non sarà incluso di default nelle future versioni di macOS. Controlla quale Python hai attualmente: python –version
Se l'output è simile a Python 2.7.17, il tuo interprete predefinito è Python 2.7. In tal caso, controlla anche che Python 3 non sia già installato sul tuo computer: python3 –version
Se il comando precedente restituisce un errore, significa che Python 3 non è installato. Di seguito è riportato un esempioview dei passaggi per installare Python 3.
· L'installazione con HomeBrew può essere effettuata come segue: brew install python3
· Se hai MacPorts, puoi eseguire: sudo port install python38
Passaggio 2. Ottieni ESP-IDF Per creare applicazioni per ESP32, sono necessarie le librerie software fornite da Espressif nel repository ESP-IDF. Per ottenere ESP-IDF, accedi alla directory di installazione e clona il repository con git clone, seguendo le istruzioni specifiche per il tuo sistema operativo. Apri il Terminale ed esegui i seguenti comandi:
Sistemi Espressif
36 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF verrà scaricato in ~/esp/esp-idf. Consultare Versioni di ESP-IDF per informazioni su quale versione di ESP-IDF utilizzare in una determinata situazione.
Passaggio 3. Configurare gli strumenti Oltre a ESP-IDF, è necessario installare anche gli strumenti utilizzati da ESP-IDF, come il compilatore, il debugger, i pacchetti Python, ecc., per i progetti che supportano ESP32. cd ~/esp/esp-idf ./install.sh esp32
oppure con la shell Fish cd ~/esp/esp-idf ./install.fish esp32
I comandi soprastanti installano strumenti solo per ESP32. Se intendi sviluppare progetti per più chip target, dovresti elencarli tutti ed eseguirli per esempioample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
o con Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
Per installare gli strumenti per tutti i target supportati, eseguire il seguente comando: cd ~/esp/esp-idf ./install.sh all
o con Fish shell cd ~/esp/esp-idf ./install.fish all
Nota: per gli utenti macOS, se durante un passaggio viene visualizzato un errore come questo:urlerrore di apertura [SSL: CERTIFICATE_VERIFY_FAILED] verifica del certificato non riuscita: impossibile ottenere il certificato dell'emittente locale (_ssl.c:xxx)
È possibile eseguire il comando Install Certificates.command nella cartella Python del computer per installare i certificati. Per maggiori dettagli, consultare la sezione Errore di download durante l'installazione degli strumenti ESP-IDF.
Alternativa File Download Il programma di installazione degli strumenti scarica un certo numero di fileè allegato a GitHub Releases. Se l'accesso a GitHub è lento, è possibile impostare una variabile d'ambiente per preferire il server di download Espressifns per i download delle risorse GitHub.
Nota: questa impostazione controlla solo i singoli strumenti scaricati dalle versioni di GitHub, non modifica l' URLviene utilizzato per accedere a qualsiasi repository Git.
Per preferire il server di download Espressif durante l'installazione degli strumenti, utilizzare la seguente sequenza di comandi durante l'esecuzione di install.sh:
Sistemi Espressif
37 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Personalizzazione del percorso di installazione degli strumenti Gli script introdotti in questo passaggio installano gli strumenti di compilazione richiesti da ESP-IDF all'interno della directory home dell'utente: $HOME/.espressif su Linux. Se si desidera installare gli strumenti in una directory diversa, impostare la variabile d'ambiente IDF_TOOLS_PATH prima di eseguire gli script di installazione. Assicurarsi che l'account utente disponga di autorizzazioni sufficienti per leggere e scrivere questo percorso. Se si modifica IDF_TOOLS_PATH, assicurarsi che sia impostato sullo stesso valore ogni volta che vengono eseguiti lo script di installazione (install. bat, install.ps1 o install.sh) e uno script di esportazione (export.bat, export.ps1 o export.sh).
Fase 4. Impostazione delle variabili d'ambiente. Gli strumenti installati non sono ancora stati aggiunti alla variabile d'ambiente PATH. Per rendere gli strumenti utilizzabili dalla riga di comando, è necessario impostare alcune variabili d'ambiente. ESP-IDF fornisce un altro script che esegue questa operazione. Nel terminale in cui si intende utilizzare ESP-IDF, eseguire:
. $HOME/esp/esp-idf/export.sh
o per i pesci (supportato solo dalla versione 3.0.0 di Fish):
. $HOME/esp/esp-idf/export.fish
Nota lo spazio tra il punto iniziale e il percorso! Se prevedi di usare esp-idf frequentemente, puoi creare un alias per l'esecuzione di export.sh:
1. Copia e incolla il seguente comando nel tuo shellns profile (.profile, .bashrc, .zprofile, ecc.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Aggiornare la configurazione riavviando la sessione del terminale o eseguendo source [percorso al profile],
per esempioample, sorgente ~/.bashrc. Ora puoi eseguire get_idf per configurare o aggiornare l'ambiente esp-idf in qualsiasi sessione di terminale. Tecnicamente, puoi aggiungere export.sh al tuo shellns profile direttamente; tuttavia, non è consigliabile. In questo modo si attiva l'ambiente virtuale IDF in ogni sessione del terminale (incluse quelle in cui IDF non è necessario), vanificando lo scopo dell'ambiente virtuale e probabilmente influenzando altri software.
Fase 5. Primi passi su ESP-IDF Ora che tutti i requisiti sono soddisfatti, il prossimo argomento ti guiderà su come avviare il tuo primo progetto. Questa guida ti aiuterà nei primi passi utilizzando ESP-IDF. Segui questa guida per avviare un nuovo progetto sull'ESP32 e compilare, flashare e monitorare l'output del dispositivo.
Nota: se non hai ancora installato ESP-IDF, vai su Installazione e segui le istruzioni per ottenere tutto il software necessario per utilizzare questa guida.
Avvia un progetto Ora sei pronto a preparare la tua applicazione per ESP32. Puoi iniziare con il progetto getstarted/hello_world da examples in ESP-IDF.
Importante: il sistema di compilazione ESP-IDF non supporta spazi nei percorsi verso ESP-IDF o verso i progetti.
Copia il progetto get-started/hello_world nella directory ~/esp:
Sistemi Espressif
38 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
cd ~/esp cp -r $PERCORSO_IDF/examples/inizia/ciao_mondo .
Nota: esiste una gamma di exampi progetti nell'examples in ESP-IDF. Puoi copiare qualsiasi progetto nello stesso modo presentato sopra ed eseguirlo. È anche possibile costruire examples sul posto senza prima copiarli.
Collega il tuo dispositivo Ora collega la scheda ESP32 al computer e controlla su quale porta seriale è visibile la scheda. Le porte seriali hanno i seguenti schemi di denominazione:
· Linux: inizia con /dev/tty · macOS: inizia con /dev/cu. Se non sei sicuro di come verificare il nome della porta seriale, consulta la sezione Stabilire una connessione seriale con ESP32 per i dettagli completi.
Nota: tieni a portata di mano il nome della porta poiché ti servirà nei passaggi successivi.
Configura il tuo progetto Vai alla directory hello_world, imposta ESP32 come destinazione ed esegui l'utilità di configurazione del progetto menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Dopo aver aperto un nuovo progetto, è necessario impostare il target con idf.py set-target esp32. Si noti che eventuali build e configurazioni esistenti nel progetto verranno cancellate e inizializzate durante questo processo. È possibile salvare il target nella variabile d'ambiente per saltare del tutto questo passaggio. Per ulteriori informazioni, vedere "Selezionare il chip target: set-target". Se i passaggi precedenti sono stati eseguiti correttamente, verrà visualizzato il seguente menu:
Fig. 17: Configurazione del progetto – Finestra Home Si utilizza questo menu per impostare variabili specifiche del progetto, ad esempio nome e password della rete Wi-Fi, velocità del processore, ecc. L'impostazione del progetto con menuconfig può essere saltata per ohello_worldp, poiché questo esempioample corre con
Sistemi Espressif
39 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
configurazione predefinita.
Attenzione: se si utilizza la scheda ESP32-DevKitC con il modulo ESP32-SOLO-1 o la scheda ESP32-DevKitM-1 con il modulo ESP32-MIN1-1(1U), abilitare la modalità single core (CONFIG_FREERTOS_UNICORE) in menuconfig prima di eseguire il flashing exampmeno.
Nota: i colori del menu potrebbero essere diversi nel tuo terminale. Puoi modificarne l'aspetto con l'opzione -style. Per ulteriori informazioni, esegui idf.py menuconfig -help.
Se utilizzi una delle schede di sviluppo supportate, puoi velocizzare lo sviluppo utilizzando il Board Support Package. Per ulteriori informazioni, consulta la sezione Suggerimenti aggiuntivi.
Compila il progetto Compila il progetto eseguendo:
compilazione idf.py
Questo comando compilerà l'applicazione e tutti i componenti ESP-IDF, quindi genererà il bootloader, la tabella delle partizioni e i binari dell'applicazione.
$ idf.py build Esecuzione di cmake nella directory /path/to/hello_world/build Esecuzione di "cmake -G Ninja –warn-uninitialized /path/to/hello_world"... Avviso sui valori non inizializzati. — Trovato Git: /usr/bin/git (trovata versione "2.17.0") — Creazione di un componente aws_iot vuoto a causa della configurazione — Nomi dei componenti: … — Percorsi dei componenti: …
… (più righe di output del sistema di compilazione)
[527/527] Generazione di hello_world.bin esptool.py v2.3.1
Compilazione del progetto completata. Per flashare, esegui questo comando: ../../../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 oppure esegui 'idf.py -p PORT flash'
Se non ci sono errori, la build terminerà generando il binario del firmware .bin files.
Flash sul dispositivo Flash i binari che hai appena creato (bootloader.bin, partition-table.bin e hello_world.bin) sulla tua scheda ESP32 eseguendo:
idf.py -p PORTA [-b BAUD] flash
Sostituisci PORT con il nome della porta seriale della tua scheda ESP32. Puoi anche modificare la velocità in baud del flasher sostituendo BAUD con la velocità in baud desiderata. La velocità in baud predefinita è 460800. Per maggiori informazioni sugli argomenti di idf.py, consulta idf.py.
Nota: l'opzione flash compila e aggiorna automaticamente il progetto, quindi non è necessario eseguire idf.py build.
Sistemi Espressif
40 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Problemi riscontrati durante il flashing? Se esegui il comando indicato e visualizzi errori come "soFailed to connectp", le cause potrebbero essere diverse. Una delle cause potrebbe essere un problema riscontrato da esptool.py, l'utilità chiamata dal sistema di build per resettare il chip, interagire con il bootloader della ROM e flashare il firmware. Una semplice soluzione da provare è il reset manuale descritto di seguito; se non dovesse funzionare, puoi trovare maggiori dettagli sui possibili problemi nella sezione Risoluzione dei problemi.
esptool.py ripristina automaticamente ESP32 attivando le linee di controllo DTR e RTS del chip convertitore da USB a seriale, ad esempio FTDI o CP210x (per maggiori informazioni, vedere Stabilire una connessione seriale con ESP32). Le linee di controllo DTR e RTS sono a loro volta collegate ai pin GPIO0 e CHIP_PU (EN) di ESP32, modificando così il volume.tagI livelli di DTR e RTS avvieranno ESP32 in modalità di download del firmware. Come esempioample, controlla lo schema della scheda di sviluppo ESP32 DevKitC.
In generale, non dovresti avere problemi con le schede di sviluppo ufficiali esp-idf. Tuttavia, esptool.py non è in grado di ripristinare automaticamente l'hardware nei seguenti casi:
· L'hardware non ha le linee DTR e RTS collegate a GPIO0 e CHIP_PU · Le linee DTR e RTS sono configurate in modo diverso · Non ci sono affatto linee di controllo seriali di questo tipo
A seconda del tipo di hardware in uso, potrebbe anche essere possibile mettere manualmente la scheda ESP32 in modalità di download del firmware (reset).
· Per le schede di sviluppo prodotte da Espressif, queste informazioni possono essere trovate nelle rispettive guide introduttive o guide utente. Ad esempioampPer resettare manualmente una scheda di sviluppo ESP-IDF, tenere premuto il pulsante Boot (GPIO0) e premere il pulsante EN (CHIP_PU).
· Per altri tipi di hardware, provare a tirare giù GPIO0.
Funzionamento normale Durante il flashing, verrà visualizzato un registro di output simile al 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 Connessione…….._ Il chip è ESP32D0WDQ6 (revisione 0) Caratteristiche: WiFi, BT, Dual Core, Schema di codifica Nessuno Il cristallo è 40 MHz MAC: 24:0a:c4:05:b9:14 Caricamento stub… Esecuzione stub… Stub in esecuzione… Modifica della velocità in baud a 460800 Modificato. Configurazione dimensione flash... Compressione di 3072 byte in 103... Scrittura a 0x00008000... (100%) Scrittura di 3072 byte (103 compressi) a 0x00008000 in 0.0 secondi (effettivo 5962.8 kbit/s)... Hash dei dati verificato. Compressione di 26096 byte in 15408... Scrittura a 0x00001000... (100%) Scrittura di 26096 byte (15408 compressi) a 0x00001000 in 0.4 secondi (effettivo 546.7 kbit/s)... Hash dei dati verificato. Compresso 147104 byte in 77364… Scrittura a 0x00010000… (20 %) Scrittura a 0x00014000… (40 %) Scrittura a 0x00018000… (60 %) Scrittura a 0x0001c000… (80 %)
(continua nella pagina successiva)
Sistemi Espressif
41 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
(continua dalla pagina precedente) Scrittura a 0x00020000… (100 %) Scritti 147104 byte (77364 compressi) a 0x00010000 in 1.9 secondi (effettivi 615,5 kbit/s)… Hash dei dati verificato.
In partenza... Hard reset tramite pin RTS... Fatto
Se non ci sono problemi entro la fine del processo di flash, la scheda si riavvierà e avvierà l'applicazione ohello_worldp. Se preferisci utilizzare l'IDE Eclipse o VS Code invece di eseguire idf.py, dai un'occhiata a Eclipse Plugin, VSCode Extension.
Monitora l'output Per verificare se ohello_worldpis è effettivamente in esecuzione, digita idf.py -p PORT monitor (non dimenticare di sostituire PORT con il nome della tua porta seriale). Questo comando avvia l'applicazione IDF Monitor:
$ idf.py -p monitor Esecuzione di idf_monitor nella directory […]/esp/hello_world/build Esecuzione di “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor attivo 115200 —– Esci: Ctrl+] | Menu: Ctrl+T | Aiuto: Ctrl+T seguito da Ctrl+H –ets 8 giu 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 giu 2016 00:22:57 …
Dopo che i registri di avvio e di diagnostica scorrono verso l'alto, dovresti vedere la scritta oHello world! stampata dall'applicazione.
… Ciao mondo! Riavvio tra 10 secondi… Questo è un chip esp32 con 2 core CPU, WiFi/BT/BLE, revisione silicio 1, 2 MB di flash esterna Dimensione minima heap libera: 298968 byte Riavvio tra 9 secondi… Riavvio tra 8 secondi… Riavvio tra 7 secondi…
Per uscire dal monitor IDF, utilizzare la scorciatoia Ctrl+]. Se il monitor IDF si blocca poco dopo il caricamento o se, invece dei messaggi sopra riportati, vengono visualizzati dati casuali simili a quelli riportati di seguito, è probabile che la scheda utilizzi un quarzo da 26 MHz. La maggior parte dei progetti di schede di sviluppo utilizza 40 MHz, quindi ESP-IDF utilizza questa frequenza come valore predefinito.
Se riscontri un problema di questo tipo, procedi come segue:
1. Uscire dal monitor. 2. Tornare a menuconfig. 3. Andare a Configurazione componente > Impostazioni hardware > Configurazione XTAL principale > XTAL principale
frequenza, quindi modificare CONFIG_XTAL_FREQ_SEL su 26 MHz. 4. Dopodiché, compilare e flashare nuovamente l'applicazione.
Sistemi Espressif
42 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Nella versione attuale di ESP-IDF, le principali frequenze XTAL supportate da ESP32 sono le seguenti:
· 26 MHz · 40 MHz
Nota: è possibile combinare la compilazione, il flashing e il monitoraggio in un unico passaggio eseguendo: idf.py -p PORT flash monitor
Vedere anche: · IDF Monitor per utili scorciatoie e maggiori dettagli sull'utilizzo di IDF Monitor. · idf.py per un riferimento completo dei comandi e delle opzioni di idf.py.
Questo è tutto ciò che ti serve per iniziare con ESP32! Ora sei pronto per provare qualche altro examples, oppure passare direttamente allo sviluppo delle proprie applicazioni.
Importante: Alcuni exampi les non supportano ESP32 perché l'hardware richiesto non è incluso in ESP32, quindi non può essere supportato. Se si costruisce un example, per favore controlla il README file per la tabella dei target supportati. Se questa è presente, incluso il target ESP32, o la tabella non esiste affatto, l'exampfunzionerà su ESP32.
Suggerimenti aggiuntivi
Problemi di autorizzazione /dev/ttyUSB0 Con alcune distribuzioni Linux, potresti ricevere il messaggio di errore "Failed to open port /dev/ttyUSB0" durante il flashing dell'ESP32. Questo problema può essere risolto aggiungendo l'utente corrente al gruppo dialout.
Compatibilità con Python: ESP-IDF supporta Python 3.7 o versioni successive. Si consiglia di aggiornare il sistema operativo a una versione recente che soddisfi questo requisito. Altre opzioni includono l'installazione di Python dai sorgenti o l'utilizzo di un sistema di gestione delle versioni Python come pyenv.
Inizia con Board Support Package Per velocizzare la prototipazione su alcune schede di sviluppo, è possibile utilizzare i Board Support Package (BSP), che semplificano l'inizializzazione di una scheda specifica con poche chiamate di funzione. Un BSP in genere supporta tutti i componenti hardware forniti sulla scheda di sviluppo. Oltre alla definizione del pinout e alle funzioni di inizializzazione, un BSP include i driver per i componenti esterni come sensori, display, codec audio, ecc. I BSP sono distribuiti tramite IDF Component Manager, quindi sono disponibili nell'IDF Component Registry. Ecco un esempio:ample su come aggiungere ESP-WROVER-KIT BSP al tuo progetto: idf.py add-dependency esp_wrover_kit
più exampI dettagli sull'utilizzo di BSP possono essere trovati in BSP exampcartella les.
Suggerimento: aggiornamento di ESP-IDF Si consiglia di aggiornare ESP-IDF di tanto in tanto, poiché le versioni più recenti correggono bug e/o forniscono nuove funzionalità. Si noti che ogni versione principale e secondaria di ESP-IDF ha un periodo di supporto associato e, quando una versione si avvicina alla fine del ciclo di vita (EOL), tutti gli utenti sono incoraggiati ad aggiornare i propri progetti alle versioni più recenti di ESP-IDF. Per ulteriori informazioni sui periodi di supporto, consultare Versioni di ESP-IDF.
Sistemi Espressif
43 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 1. Iniziare
Il modo più semplice per eseguire l'aggiornamento è eliminare la cartella esp-idf esistente e clonarla nuovamente, come se si stesse eseguendo l'installazione iniziale descritta nel Passaggio 2. Ottieni ESP-IDF. Un'altra soluzione è aggiornare solo ciò che è cambiato. La procedura di aggiornamento dipende dalla versione di ESP-IDF in uso. Dopo aver aggiornato ESP-IDF, eseguire nuovamente lo script di installazione, nel caso in cui la nuova versione di ESP-IDF richieda versioni diverse degli strumenti. Vedere le istruzioni al Passaggio 3. Imposta gli strumenti. Una volta installati i nuovi strumenti, aggiornare l'ambiente utilizzando lo script di esportazione. Vedere le istruzioni al Passaggio 4. Imposta le variabili d'ambiente.
Documenti correlati · Stabilire una connessione seriale con ESP32 · Plugin Eclipse · Estensione VSCode · Monitor IDF
1.4 Crea il tuo primo progetto
Se hai già installato ESP-IDF e non utilizzi l'IDE, puoi creare il tuo primo progetto dalla riga di comando seguendo le istruzioni Avvia un progetto su Windows o Avvia un progetto su Linux e macOS.
1.5 Disinstallare ESP-IDF
Se desideri rimuovere ESP-IDF, segui la procedura Disinstalla ESP-IDF.
Sistemi Espressif
44 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 2
Riferimento API
2.1 Convenzioni API
Questo documento descrive le convenzioni e i presupposti comuni alle interfacce di programmazione applicativa (API) ESP-IDF. ESP-IDF fornisce diversi tipi di interfacce di programmazione:
· Funzioni C, strutture, enumerazioni, definizioni di tipo e macro del preprocessore dichiarate nell'intestazione pubblica filedei componenti ESPIDF. Diverse pagine nella sezione Riferimento API della guida alla programmazione contengono descrizioni di queste funzioni, strutture e tipi.
· Funzioni del sistema di build, variabili predefinite e opzioni. Queste sono documentate nella guida al sistema di build. · Le opzioni di Kconfig possono essere utilizzate nel codice e nel sistema di build (CMakeLists.txt) files. · Anche gli strumenti host e i relativi parametri della riga di comando fanno parte dell'interfaccia ESP-IDF. ESP-IDF è costituito da componenti scritti specificamente per ESP-IDF e da librerie di terze parti. In alcuni casi, un wrapper specifico per ESP-IDF viene aggiunto alla libreria di terze parti, fornendo un'interfaccia più semplice o meglio integrata con il resto delle funzionalità di ESP-IDF. In altri casi, l'API originale della libreria di terze parti viene presentata agli sviluppatori dell'applicazione. Le sezioni seguenti spiegano alcuni aspetti delle API ESP-IDF e il loro utilizzo.
2.1.1 Gestione degli errori
La maggior parte delle API ESP-IDF restituisce codici di errore definiti con il tipo esp_err_t. Consultare la sezione Gestione degli errori per ulteriori informazioni sugli approcci di gestione degli errori. La sezione Riferimento ai codici di errore contiene l'elenco dei codici di errore restituiti dai componenti ESP-IDF.
2.1.2 Strutture di configurazione
Importante: la corretta inizializzazione delle strutture di configurazione è un aspetto importante per rendere l'applicazione compatibile con le versioni future di ESP-IDF.
La maggior parte delle funzioni di inizializzazione o configurazione in ESP-IDF accettano come argomento un puntatore a una struttura di configurazione. Ad esempioampon:
45
Capitolo 2. Riferimento API
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, .arg = callback_arg, .name = “my_timer”
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
Le funzioni di inizializzazione non memorizzano mai il puntatore alla struttura di configurazione, quindi è sicuro allocare la struttura sullo stack.
L'applicazione deve inizializzare tutti i campi della struttura. Quanto segue non è corretto:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Sbagliato! I campi .arg e .name non sono inizializzati */ esp_timer_create(&my_timer_args, &my_timer);
La maggior parte degli ESP-IDF exampi les utilizzano inizializzatori designati C99 per l'inizializzazione della struttura, poiché forniscono un modo conciso per impostare un sottoinsieme di campi e inizializzare a zero i campi rimanenti:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Corretto, i campi .arg e .name sono inizializzati con zero */
};
Il linguaggio C++ non supporta la sintassi degli inizializzatori designati fino a C++20, tuttavia il compilatore GCC la supporta parzialmente come estensione. Quando si utilizzano le API ESP-IDF nel codice C++, si può prendere in considerazione l'utilizzo del seguente schema:
esp_timer_create_args_t my_timer_args = {}; /* Tutti i campi sono inizializzati con zero */ my_timer_args.callback = &my_timer_callback;
Inizializzatori predefiniti
Per alcune strutture di configurazione, ESP-IDF fornisce macro per impostare i valori predefiniti dei campi:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG si espande in un inizializzatore designato.
Ora tutti i campi sono impostati sui valori predefiniti. Qualsiasi campo può ancora essere modificato: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Si consiglia di utilizzare macro di inizializzazione predefinite ogni volta che vengono fornite per una particolare struttura di configurazione.
2.1.3 API private
Certa intestazione fileLe intestazioni in ESP-IDF contengono API destinate ad essere utilizzate solo nel codice sorgente ESP-IDF e non dalle applicazioni. Tale intestazione fileSpesso contengono private o esp_private nel nome o nel percorso. Alcuni componenti, come hal, contengono solo API private. Le API private possono essere rimosse o modificate in modo incompatibile tra release minori o patch.
2.1.4 Componenti in exampi progetti
ESP-IDF exampI file contengono una varietà di progetti che dimostrano l'utilizzo delle API ESP-IDF. Per ridurre la duplicazione del codice nell'esempioamples, alcuni helper comuni sono definiti all'interno dei componenti che vengono utilizzati da più exampmeno.
Sistemi Espressif
46 Invia feedback sul documento
Rilascio v5.0.9
Capitolo 2. Riferimento API
Ciò include componenti situati
Documenti / Risorse
![]() |
Scheda di sviluppo ESP32 Dev Kitc di Espressif Systems [pdf] Guida utente Scheda di sviluppo ESP32 Dev Kitc, ESP32, Scheda di sviluppo Dev Kitc, Scheda di sviluppo Kitc, Scheda di sviluppo, Scheda |
