Placă de dezvoltare ESP32 Dev Kitc

Informații despre produs

Specificații

  • Produs: ESP32
  • Ghid de programare: ESP-IDF
  • Versiune de lansare: v5.0.9
  • Producator: Espressif Systems
  • Data lansării: 16 mai 2025

Instrucțiuni de utilizare a produsului

1. Începeți

Înainte de a începe să utilizați ESP32, familiarizați-vă cu
urmatoarele:

1.1 Introducere

Aflați despre funcționalitățile și capacitățile de bază ale
ESP32.

1.2 De ce aveți nevoie

Asigurați-vă că aveți hardware-ul și software-ul necesare:

  • Hardware: Verificați lista de hardware necesar
    componente.
  • Software: Instalați software-ul necesar
    componente.

1.3 Instalare

Urmați acești pași pentru a instala IDE-ul și a configura
mediu:

  • IDE: Instalați IDE-ul recomandat pentru
    programarea ESP32-ului.
  • Instalare manuală: Configurați manual
    mediu, dacă este necesar.

1.4 Construiește-ți primul proiect

Creați și construiți proiectul inițial folosind ESP32.

1.5 Dezinstalarea ESP-IDF

Dacă este necesar, aflați cum să dezinstalați ESP-IDF de pe
sistem.

2. Referință API

Consultați documentația API pentru informații detaliate despre
protocoale de aplicație, tratarea erorilor și configurare
structurilor.

Întrebări frecvente (FAQ)

Î: Cum pot depana problemele comune cu ESP32?

A: Consultați secțiunea de depanare din ghidul de programare
sau vizitați producătorul website pentru resurse de asistență.

Î: Pot folosi ESP-IDF cu alte microcontrolere?

A: ESP-IDF este conceput special pentru ESP32, dar este posibil să constatați
compatibilitate cu alte microcontrolere Espressif.

ESP32
Ghid de programare ESP-IDF
Lansare v5.0.9 Espressif Systems 16 mai 2025

Cuprins

Cuprins

i

1 Începeți

3

1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Ceea ce aveți nevoie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 Instalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.2 Instalare manuală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4 Construiește-ți primul proiect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.5 Dezinstalarea ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 Referință API

45

2.1 Convenții API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.1 Tratarea erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.2 Structuri de configurare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.3 API-uri private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.4 Componente în exampproiectele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.5 Stabilitatea API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.2 Protocoale de aplicare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.1 Port ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.2.5 Client HTTP ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.2.6 Control local ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.2.7 Legătură serială slave ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

2.2.8 Pachet de certificate ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.2.9 Server HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.2.10 Server HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.2.11 Ecou ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.2.12 Serviciul mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.13 TLS Mbed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.14 Nivelul de rețea IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3 API-ul Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.1 Bluetooth® Comun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.2 Bluetooth® cu consum redus de energie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

2.3.3 Bluetooth® Clasic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

2.3.4 Controler și HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2.3.6 API-uri gazdă bazate pe NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

2.4 Referință coduri de eroare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

2.5 API-uri de rețea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

2.5.3 Fir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

i

2.5.4 ESP-NETIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Nivelul de rețea IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Nivelul aplicației. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API-ul Perifericelor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Driver în mod Oneshot pentru convertor analog-digital (ADC). . . . . . . . . . . . . . . . . 977 2.6.2 Driver în mod continuu pentru convertor analog-digital (ADC). . . . . . . . . . . . . . . 986 2.6.3 Driver de calibrare a convertorului analog-digital (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Arbore de ceasuri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Convertor digital-analogic (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO și RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Temporizator de uz general (GPTimer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Circuit interintegrat (I2C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Sunet inter-IC (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Controlul LED-urilor (LEDC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulator de lățime a impulsurilor pentru controlul motorului (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Contor de impulsuri (PCNT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Emițător-receptor cu telecomandă (RMT). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Cerințe de tracțiune SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Driver gazdă SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Driver gazdă SD SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Driver slave pentru placă SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Modulație Sigma-Delta (SDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Driver principal SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Driver slave SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Element securizat). . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Senzor tactil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Interfață auto cu două fire (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Receptor/emițător asincron universal (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Configurarea proiectului. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Meniul de configurare a proiectului. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Utilizarea fișierului sdkconfig.defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Reguli de formatare Kconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Compatibilitatea cu versiunile anterioare a opțiunilor Kconfig. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Referință opțiuni de configurare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API de furnizare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Comunicare prin protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Aprovizionare unificată. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Aprovizionare Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API-ul de stocare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSuport sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Utilitate producție . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Bibliotecă de stocare nevolatilă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Utilitarul Generator de Partiții NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Driver SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 API Flash SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS Filesistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtual filecomponentă de sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API-ul de nivelare a uzurii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API-ul de sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Format imagine aplicație . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Urmărire la nivel de aplicație . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Apel funcție cu stivă externă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Revizie cip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Consolă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 Manager eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Coduri de eroare și funcții de asistență . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Bibliotecă de bucle de evenimente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (Pesteview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (Funcții suplimentare) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Alocare memorie Heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Depanare memorie Heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Temporizator de înaltă rezoluție (temporizator ESP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 API-uri interne și instabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Apel inter-procesor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Alocare de întreruperi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Bibliotecă de înregistrare în jurnal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 API-uri de sistem diverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Actualizări Over The Air (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Monitor de performanță . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Gestionare energie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 Suport pentru fire de execuție POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Generare de numere aleatorii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Moduri de repaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Capacități SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Ora sistemului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 API-ul de alocare himem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 Programare coprocesor ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Monitorizări (watchdogs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161

3 Referință hardware

2167

3.1 Comparație a seriilor de cipuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167

3.1.1 Documente conexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170

4 Ghiduri API

2171

4.1 Bibliotecă de urmărire la nivel de aplicație . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.2 Moduri de funcționare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.3 Opțiuni de configurare și dependențe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 Cum se utilizează această bibliotecă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173

4.2 Fluxul de pornire a aplicației . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181

4.2.1 Primul stagbootloader e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.2 secundetagbootloader e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.3 Pornirea aplicației . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183

4.3 Bluetooth® Clasic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.4 Bluetooth® cu consum redus de energie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.2 Începeți . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191

4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240

4.5 Încărcător de boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 Compatibilitatea bootloader-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.2 Nivel jurnal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.3 Resetare la setările din fabrică . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.4 Pornirea din firmware-ul de testare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.5 Revenire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 Organism de supraveghere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.7 Dimensiunea bootloader-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.8 Pornire rapidă din modul Repaus profund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.9 Bootloader personalizat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.6 Sistem de construire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.2 Utilizarea sistemului de construire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289

iii

4.6.3 ExampProiectul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Proiect CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Componente CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Configurarea componentelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Definiții ale preprocesorului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Cerințe componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Suprascrierea părților proiectului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Componente numai pentru configurare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Depanare CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 ExampComponenta CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Setări implicite personalizate pentru sdkconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Argumente Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Construirea bootloader-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Scrierea componentelor CMake pure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Utilizarea proiectelor CMake terțe cu componente . . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Utilizarea bibliotecilor precompilate cu componente . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Utilizarea ESP-IDF în proiecte CMake personalizate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API-ul sistemului de compilare ESP-IDF CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Compilări globale și incrementale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Metadate sistem de compilare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Componente interne sistem de compilare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Migrarea de la ESP-IDF GNU Make System . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Core Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Configurații . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Salvarea memoriei core dump în memorie flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Imprimarea memoriei core dump pe UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funcții ROM în Backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Executarea variabilelor la cerere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Rularea espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Elemente de trezire (Wake Stubs) în somn profund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Reguli pentru elementele de trezire (Wake Stubs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementarea unui stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Încărcarea codului în memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Încărcarea datelor în memoria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 Verificare CRC pentru elemente de trezire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Tratarea erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Coduri de eroare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Conversia codurilor de eroare în mesaje de eroare . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 Macrocomanda ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Macrocomanda ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Macrocomanda ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 Macrocomanda ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Macrocomanda ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 Macrocomanda ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 VERIFICARE MACRO-URI Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Modele de tratare a erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Excepții C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Concepte ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Construirea unei rețele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Gestionarea unei rețele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Transmiterea de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Comutare canale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv

4.10.8 Performanță . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Note suplimentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Gestionarea evenimentelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Evenimente Wi-Fi, Ethernet și IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Evenimente Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Evenimente Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Erori fatale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Gestionarea panicii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Dump și backtrace de registru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 Fișă GDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Timeout-ul dispozitivului de supraveghere RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Erori în meditația Guru-ului. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Alte erori fatale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Criptare Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Siguranțe electronice relevante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Procesul de criptare flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Configurarea criptării Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Defecțiuni posibile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Starea criptării flash ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Citirea și scrierea datelor în memorie Flash criptată. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Actualizarea memoriei flash criptate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Dezactivarea criptării Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Puncte cheie despre criptarea flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Limitări ale criptării Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Criptare flash și pornire securizată. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Funcții avansate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Detalii tehnice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Abstractizare hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Arhitectură. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Strat LL (nivel scăzut). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Strat de abstractizare hardware). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Întreruperi de nivel înalt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Niveluri de întrerupere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Note. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Depanare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Cum funcționează? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Selectarea lui JTAG Adaptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Configurarea OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Configurarea țintei ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Lansarea depanatorului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Depanare Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Construirea OpenOCD din surse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Sfaturi și ciudățenii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Documente conexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Generare script linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Pornire rapidă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Componente interne ale generării scriptului linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 API-uri acceptate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API-uri BSD Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API Netconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 Sarcină lwIP FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 Suport IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 modificări personalizate esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v

4.18.7 Optimizarea performanței . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Tipuri de memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (Memorie RAM de date) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (Memorie RAM de instrucțiuni) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (cod executat din memoria flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (date stocate în memorie flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 Memorie RTC lentă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 Memorie RTC RAPIDĂ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Cerință de compatibilitate DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Buffer DMA în stivă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Modurile stivei OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Cum se scrie o aplicație OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 Ruterul de frontieră OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Tabele de partiții . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Tabele de partiții încorporate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Crearea de tabele personalizate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Generarea tabelei de partiții binare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Verificări ale dimensiunii partiției . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Flasharea tabelei de partiții . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Instrumentul de partiționare (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Performanță . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Cum se optimizează performanța . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Ghiduri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 Calibrare RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Calibrare parțială . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Calibrare completă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Fără calibrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Date de inițializare PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Referință API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Pornire securizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Procesul de pornire securizată prinview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Chei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Dimensiune bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 Cum se activează bootarea securizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Bootloader software re-flashabil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Generarea cheii de semnare Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Semnarea la distanță a imaginilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Cele mai bune practici pentru pornirea securizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Detalii tehnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Pornire securizată și criptare flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Verificare aplicație semnată fără pornire securizată hardware . . . . . . . . . . . . . . . . . . 2478 4.24.13 Funcții avansate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Pornire securizată V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Fundal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Avansattages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Procesul de pornire securizată V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Formatul blocului de semnătură . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Căptușeală securizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Verificarea unui bloc de semnătură . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Verificarea unei imagini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Dimensiunea bootloader-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Utilizarea eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Cum se activează Secure Boot V2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Restricții după activarea Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Generarea cheii de semnare Secure Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi

4.25.13 Semnarea la distanță a imaginilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Cele mai bune practici pentru pornirea securizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Detalii tehnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Pornire securizată și criptare flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Verificare aplicație semnată fără pornire securizată hardware . . . . . . . . . . . . . . . . . . 2484 4.25.18 Funcții avansate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Suport pentru RAM externă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Configurarea memoriei RAM externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Restricții . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Eșec la inițializare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Revizii de cip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Stocare locală pe fire de execuție . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 API nativ FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 API Pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 Scule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 Interfață IDF – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Imagine Docker IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 Program de instalare IDF Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Manager de componente IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Instrumente descărcabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Testarea unitară în ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Cazuri de testare normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Cazuri de testare multi-dispozitiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Multi-dispozitivetagCazuri de testare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Teste pentru diferite ținte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Construirea aplicației de testare unitară. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Rularea testelor unitare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Cod de temporizare cu temporizator compensat din memoria cache. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Mock-uri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Testare unitară pe Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Teste de software încorporat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Teste unitare IDF pe gazdă Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Driver Wi-Fi 2520 4.31. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Lista caracteristicilor Wi-Fi ale ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Cum se scrie o aplicație Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Cod de eroare API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inițializarea parametrilor API-ului Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Model de programare ESP32 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Descrierea evenimentului Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Scenariu general pentru stația Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Scenariu general pentru punctul de acces Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Scanare Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Scenariu de conectare a stației Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Stația Wi-Fi ESP32 se conectează când sunt găsite mai multe puncte de acces. . . . . . . . . . . . . 2543 4.31.12 Reconectare Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Timp de expirare a semnalizatorului Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Configurarea Wi-Fi a ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy Connect™ (DPP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Gestionarea rețelei fără fir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Măsurarea resurselor radio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Tranziție rapidă BSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 Mod de economisire a energiei ESP32 Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Debit Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii

4.31.21 Trimitere pachete Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Mod Sniffer Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Antene multiple Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Informații despre starea canalului Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Configurare informații despre starea canalului Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 QoS Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Fragment Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Înscris WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Utilizare buffer Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Cum se îmbunătățește performanța Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Configurare meniu Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Depanare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Securitate Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Funcții de securitate Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Cadre de gestionare protejate (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Coexistență RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Scenarii de coexistență acceptate pentru ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Mecanism și politică de coexistență . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Cum se utilizează funcția de coexistență . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Compilări reproductibile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Motive pentru compilări nereproductibile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Activarea compilărilor reproductibile în ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Cum se realizează compilările reproductibile . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Compilări reproductibile și depanare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Factori care afectează în continuare compilările reproductibile . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Ghid de utilizare pentru modul consum redus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578

5 Ghiduri de migrare

2579

5.1 Ghid de migrare ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

5.1.1 Migrarea de la 4.4 la 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

6 Biblioteci și Framework-uri

2611

6.1 Cadre de lucru în 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 Cadre Espressive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.1 Cadrul de dezvoltare audio Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.3 Biblioteca DSP Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.4 Cadrul de dezvoltare ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-OMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.7 Soluție ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.8 Protocoale ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

viii

6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614

Ghid de 7 contribuții

2615

7.1 Cum să contribui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.2 Înainte de a contribui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.3 Procesul de solicitare de extragere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.4 Partea juridică . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5 Documente conexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.1 Ghid de stil pentru framework-ul de dezvoltare Espressif IoT . . . . . . . . . . . . . . . . . . . . . 2616

7.5.2 Instalarea hook-ului de pre-commit pentru proiectul ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 Documentarea codului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624

7.5.4 Crearea unui Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629

7.5.5 Șablon de documentație API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 Acord de contribuitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632

7.5.7 Ghid pentru antetul cu drepturi de autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634

7.5.8 Teste ESP-IDF cu ghid Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635

8 Versiuni ESP-IDF

2645

8.1 Versiuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.2 Cu ce ​​versiune ar trebui să încep? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.3 Schemă de versiuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.4 Perioade de asistență . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646

8.5 Verificarea versiunii curente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647

8.6 Flux de lucru Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 Actualizarea ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7.1 Actualizarea la versiunea stabilă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.2 Actualizarea la o versiune pre-lansare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.3 Actualizarea la ramura principală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.4 Actualizarea la o ramură de lansare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650

9 Resurse

2651

9.1 PlatformIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.1 Ce este PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.2 Instalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.3 Configurare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.4 Tutoriale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.5 Proiect Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 Pașii următori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 Linkuri utile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

10 Drepturi de autor și licențe

2653

10.1 Drepturi de autor asupra software-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.1 Componente firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.2 Documentație . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.2 Drepturi de autor ale codului sursă ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.3 Licență MIT Xtensa libhal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.4 Licență MIT TinyBasic Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.5 Licență TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 Despre

2657

12 Comutare între limbi

2659

Index

2661

Index

2661

ix

x

Cuprins
Aceasta este documentația pentru Espressif IoT Development Framework (esp-idf). ESP-IDF este framework-ul oficial de dezvoltare pentru SoC-urile din seria ESP32, ESP32-S și ESP32-C. Acest document descrie utilizarea ESP-IDF cu SoC-ul ESP32.

Începeți

Referință API

Ghiduri API

Sisteme Espressif

1 Trimiteți feedback despre document

Versiunea v5.0.9

Cuprins

Sisteme Espressif

2 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1
Începeți
Acest document este destinat să vă ajute să configurați mediul de dezvoltare software pentru hardware-ul bazat pe cipul ESP32 de la Espressif. După aceea, un exemplu simplu...ampVă vom arăta cum să utilizați ESP-IDF (Espressif IoT Development Framework) pentru configurarea meniurilor, apoi pentru construirea și instalarea firmware-ului pe o placă ESP32.
Notă: Aceasta este documentația pentru versiunea stabilă v5.0.9 a ESP-IDF. Sunt disponibile și alte versiuni ESP-IDF.
1.1 Introducere
ESP32 este un sistem pe un cip care integrează următoarele caracteristici: · Wi-Fi (banda de 2.4 GHz) · Bluetooth · Dual nucleu CPU Xtensa® LX6 pe 32 de biți de înaltă performanță · Coprocesor cu consum ultra-redus de energie · Periferice multiple
Bazat pe tehnologie de 40 nm, ESP32 oferă o platformă robustă, extrem de integrată, care ajută la satisfacerea cerințelor continue de utilizare eficientă a energiei, design compact, securitate, performanță ridicată și fiabilitate. Espressif oferă resurse hardware și software de bază pentru a ajuta dezvoltatorii de aplicații să își realizeze ideile utilizând hardware-ul din seria ESP32. Framework-ul de dezvoltare software de la Espressif este destinat dezvoltării de aplicații Internet of-Things (IoT) cu Wi-Fi, Bluetooth, gestionarea energiei și alte caracteristici de sistem.
1.2 De ce aveți nevoie
1.2.1 Hardware
· O placă ESP32. · Cablu USB – USB A / micro USB B. · Calculator cu Windows, Linux sau macOS.
Notă: În prezent, unele dintre plăcile de dezvoltare utilizează conectori USB de tip C. Asigurați-vă că aveți cablul corect pentru a conecta placa!
Dacă aveți una dintre plăcile de dezvoltare oficiale ESP32 listate mai jos, puteți da clic pe link pentru a afla mai multe despre hardware.
3

Capitolul 1. Începeți
ESP32-DevKitS(-R)
Acest ghid al utilizatorului oferă informații despre ESP32-DevKitS(-R), o placă de circuite integrate bazată pe ESP32 produsă de Espressif. ESP32-DevKitS(-R) este o combinație a două nume de plăci: ESP32-DevKitS și ESP32-DevKitS-R. S înseamnă arcuri, iar R înseamnă WROVER.

ESP32-DevKits

ESP32-DevKitS-R

Documentul este alcătuit din următoarele secțiuni principale: · Introducere: Oferă o prezentare generalăview instrucțiuni de configurare a ESP32-DevKitS(-R) și hardware/software pentru a începe. · Referință hardware: Oferă informații mai detaliate despre hardware-ul ESP32-DevKitS(-R)ns. · Documente conexe: Oferă linkuri către documentație conexă.

Noțiuni introductive Această secțiune descrie cum să începeți să utilizați ESP32-DevKitS(-R). Începe cu câteva secțiuni introductive despre ESP32-DevKitS(-R), apoi secțiunea Cum se flashează o placă oferă instrucțiuni despre cum se montează un modul pe ESP32-DevKitS(-R), cum se pregătește și cum se instalează firmware-ul pe acesta.

Pesteview ESP32-DevKitS(-R) este o placă de dezvoltare Espressifn concepută special pentru ESP32. Poate fi utilizată pentru a instala un modul ESP32 fără a-l lipi la sursa de alimentare și la liniile de semnal. Cu un modul montat, ESP32-DevKitS(-R) poate fi utilizat și ca o mini placă de dezvoltare, precum ESP32-DevKitC.
Plăcile ESP32-DevKitS și ESP32-DevKitS-R variază doar în ceea ce privește dispunerea pinilor cu arc pentru a se potrivi următoarelor module ESP32.
· Kituri de dezvoltare ESP32: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB și IPEX) ESP32-WROVER-B (PCB și IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Pentru informații despre modulele de mai sus, vă rugăm să consultați Modulele din seria ESP32.

Descrierea componentelor

Sisteme Espressif

4 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 1: ESP32-DevKitS – față

Sisteme Espressif

Fig. 2: ESP32-DevKitS-R – față 5
Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Componente cheie Pini cu arc Conectori mamă de 2.54 mm
Punte USB-UART Conector LDO Micro-USB/Port Micro USB Buton EN Buton de pornire
LED de pornire

Descriere Introduceți modulul în poziție cu un clic. Pinii se vor potrivi în orificiile crenelate ale modulului. Aceste conectori mamă sunt conectați la pinii modulului montat pe această placă. Pentru descrierea conectorilor mamă, consultați Blocurile conectorilor. Puntea USB la UART pe un singur cip oferă rate de transfer de până la 3 Mbps.
Volum cu cădere de tensiune redusă de la 5V la 3.3Vtagregulator de tensiune (LDO).
Interfață USB. Sursă de alimentare pentru placă, precum și interfața de comunicare dintre un computer și placă.
Butonul de resetare.
Butonul Descărcare. Ținând apăsat butonul Boot și apoi apăsând butonul EN se inițiază modul Descărcare firmware pentru descărcarea firmware-ului prin portul serial.
Se aprinde când USB-ul sau sursa de alimentare este conectată la placă.

Cum se flashează o placă Înainte de a porni ESP32-DevKitS(-R), asigurați-vă că este în stare bună, fără semne evidente de deteriorare.
Hardware necesar · Un modul ESP32 la alegere · Cablu USB 2.0 (Standard-A la Micro-B) · Computer cu Windows, Linux sau macOS
Configurarea hardware-ului Vă rugăm să montați un modul la alegere pe ESP32-DevKitS(-R) conform următorilor pași:
· Așezați cu grijă modulul pe placa ESP32-DevKitS(-R). Asigurați-vă că găurile crenelate de pe modul sunt aliniate cu pinii cu arc de pe placă.
· Apăsați modulul în placă până când se aude un clic. · Verificați dacă toți pinii cu arc sunt introduși în găurile crenelate. Dacă există pinii cu arc nealiniați,
așezați-le în găuri crenate cu o pensetă.
Configurare software
Metodă preferată Framework-ul de dezvoltare ESP-IDF oferă o modalitate preferată de flashare a fișierelor binare pe ESP32-DevKitS(-R). Vă rugăm să treceți la secțiunea Introducere, unde secțiunea Instalare vă va ajuta rapid să configurați mediul de dezvoltare și apoi să flashați un exemplu de aplicație.ample pe ESP32-DevKitS(-R).
Metodă alternativă Ca alternativă, utilizatorii de Windows pot instala fișiere binare folosind Flash Download Tool. Pur și simplu descărcați-l, dezarhivați-l și urmați instrucțiunile din folderul doc.
Notă: 1. Pentru a flasha fișierul binar fileESP32 ar trebui setat în modul de descărcare firmware. Acest lucru se poate face fie automat prin intermediul instrumentului de flashing, fie ținând apăsat butonul Boot și atingând butonul EN. 2. După flashing-ul binar fileInstrumentul de descărcare Flash repornește modulul ESP32 și pornește aplicația flashată în mod implicit.

Dimensiuni placă Conținut și ambalaj

Sisteme Espressif

6 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Introducere Fig. 3: Dimensiunile plăcii ESP32-DevKitS – spate

Sisteme Espressif

Fig. 4: Dimensiunile plăcii ESP32-DevKitS-R – spate 7
Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Comenzi cu amănuntul Dacă comandați câtevaampFiecare ESP32-DevKitS(-R) vine într-un ambalaj individual, fie într-o pungă antistatică, fie în orice alt ambalaj, în funcție de comerciant. Pentru comenzi cu amănuntul, vă rugăm să accesați https://www.espressif.com/en/contact-us/get-samples.
Comenzi en-gros Dacă comandați în vrac, plăcile vin în cutii mari de carton. Pentru comenzi en-gros, vă rugăm să accesați https://www.espressif.com/en/contact-us/sales-questions.
Referință hardware
Diagramă bloc O diagramă bloc de mai jos prezintă componentele ESP32-DevKitS(-R) și interconexiunile acestora.

Fig. 5: ESP32-DevKitS(-R) (clic pentru mărire)
Opțiuni de alimentare Există trei modalități de alimentare a plăcii, care se exclud reciproc: · Port Micro USB, sursă de alimentare implicită · Pini header de 5V și GND · Pini header de 3V3 și GND
Se recomandă utilizarea primei opțiuni: portul micro USB.

Sisteme Espressif

.

Semnal de etichetă

L1 3V3 VDD 3V3

L2 EN CHIP_PU

L3 VP SENSOR_VP

SENZOR VN L4_VN

L5 34

GPIO34

L6 35

GPIO35

L7 32

GPIO32

L8 33

GPIO33

continuă pe pagina următoare

8 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Tabelul 1 a continuat de la pagina anterioară

.

Semnal de etichetă

L9 25

GPIO25

L10 26

GPIO26

L11 27

GPIO27

L12 14

GPIO14

L13 12

GPIO12

L14 Împământare Împământare

L15 13

GPIO13

L16 D2 SD_DATA2

L17 D3 SD_DATA3

L18 CMD SD_CMD

L19 5V

5V extern

R1 Împământare Împământare

R2 23

GPIO23

R3 22

GPIO22

R4 TX U0TXD

R5 RX U0RXD

R6 21

GPIO21

R7 Împământare Împământare

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

Blocuri de antet Pentru imaginea blocurilor de antet, consultați Descrierea componentelor.

Documente conexe
· Scheme ESP32-DevKitS(-R) (PDF) · Fișă tehnică ESP32 (PDF) · Fișă tehnică ESP32-WROOM-32 (PDF) · Fișă tehnică ESP32-WROOM-32D și ESP32-WROOM-32U (PDF) · Fișă tehnică ESP32-SOLO-1 (PDF) · Fișă tehnică ESP32-WROVER (PDF) · Fișă tehnică ESP32-WROVER-B (PDF) · Selector de produse ESP

ESP32-DevKitM-1

Acest ghid de utilizare vă va ajuta să începeți să utilizați ESP32-DevKitM-1 și va oferi, de asemenea, informații mai detaliate.
ESP32-DevKitM-1 este o placă de dezvoltare bazată pe ESP32-MINI-1(1U) produsă de Espressif. Majoritatea pinilor de intrare/ieșire (I/O) sunt separați de conectorii de pe ambele părți pentru o interfațare ușoară. Utilizatorii pot conecta periferice cu fire jumper sau pot monta ESP32-DevKitM-1 pe o placă de testare (breadboard).

Sisteme Espressif

9 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

ESP32-DevKitM-1 – față

ESP32-DevKitM-1 – izometric

Documentul este alcătuit din următoarele secțiuni principale: · Introducere: Oferă o prezentare generalăview a ESP32-DevKitM-1 și instrucțiunile de configurare hardware/software pentru a începe. · Referință hardware: Oferă informații mai detaliate despre hardware-ul ESP32-DevKitM-1ns. · Documente conexe: Oferă linkuri către documentație conexă.

Noțiuni introductive Această secțiune descrie cum să începeți să utilizați ESP32-DevKitM-1. Începe cu câteva secțiuni introductive despre ESP32-DevKitM-1, apoi secțiunea Start Dezvoltare Aplicație oferă instrucțiuni despre cum se efectuează configurarea inițială a hardware-ului și apoi cum se instalează firmware-ul pe ESP32-DevKitM-1.

Pesteview Aceasta este o placă de dezvoltare mică și convenabilă, care include:
· Modul ESP32-MINI-1 sau ESP32-MINI-1U · Interfață de programare USB-serial care asigură și alimentarea plăcii · conectori de pini · butoane pentru resetare și activarea modului de descărcare a firmware-ului · alte câteva componente

Conținut și ambalaj

Comenzi cu amănuntul Dacă comandați câtevaampFiecare ESP32-DevKitM-1 vine într-un ambalaj individual, fie în pungă antistatică, fie în orice alt ambalaj, în funcție de distribuitorul dvs.
Pentru comenzi cu amănuntul, vă rugăm să accesați https://www.espressif.com/en/contact-us/get-samples.

Comenzi en-gros Dacă comandați în vrac, plăcile vin în cutii mari de carton. Pentru comenzi en-gros, vă rugăm să accesați https://www.espressif.com/en/contact-us/sales-questions.

Descrierea componentelor Următoarea figură și tabelul de mai jos descriu componentele cheie, interfețele și comenzile plăcii ESP32-DevKitM-1. Luăm ca exemplu placa cu un modul ESP32-MINI-1.ample în secțiunile următoare.

Sisteme Espressif

10 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 6: ESP32-DevKitM-1 – față

Componentă cheie Modul integrat
Buton de pornire LDO de la 5 V la 3.3 V
Buton de resetare Port Micro-USB
Punte USB-UART 3.3 V LED de pornire
Conector I/O

Descriere
Modul ESP32-MINI-1 sau modul ESP32-MINI-1U. ESP32-MINI-1 este livrat cu o antenă PCB încorporată. ESP32-MINI-1U este livrat cu un conector de antenă externă. Ambele module au o memorie flash de 4 MB încapsulată în cip. Pentru detalii, consultați fișa tehnică ESP32-MINI-1 și ESP32-MINI-1U.
Regulatorul de putere transformă 5 V în 3.3 V.
Butonul Descărcare. Ținând apăsat butonul Boot și apoi apăsând butonul Resetare se inițiază modul Descărcare firmware pentru descărcarea firmware-ului prin portul serial.
Butonul de resetare
interfață USB. Sursa de alimentare pentru placa precum si interfata de comunicare intre un computer si cipul ESP32.
Un singur cip bridge USB-UART oferă rate de transfer de până la 3 Mbps.
Se aprinde când USB-ul este conectat la placă. Pentru detalii, consultați schemele din Documentele conexe. Toți pinii GPIO disponibili (cu excepția magistralei SPI pentru flash) sunt separați în conexiunile de pini de pe placă. Utilizatorii pot programa cipul ESP32 pentru a activa mai multe funcții.

Începeți dezvoltarea aplicației Înainte de a porni ESP32-DevKitM-1, asigurați-vă că este în stare bună, fără semne evidente de deteriorare.
Hardware necesar · ESP32-DevKitM-1 · Cablu USB 2.0 (Standard-A la Micro-B) · Computer cu Windows, Linux sau macOS
Configurarea software-ului Vă rugăm să treceți la secțiunea Introducere, unde secțiunea Instalare vă va ajuta rapid să configurați mediul de dezvoltare și apoi să instalați un exemplu de aplicație.ample pe ESP32-DevKitM-1.

Sisteme Espressif

11 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Atenție: Plăcile ESP32-DevKitM-1 fabricate înainte de 2 decembrie 2021 au instalat un modul cu un singur nucleu. Pentru a verifica ce modul aveți, vă rugăm să verificați informațiile despre marcajul modulelor din PCN-2021-021. Dacă placa dvs. are instalat un modul cu un singur nucleu, vă rugăm să activați modul cu un singur nucleu (CONFIG_FREERTOS_UNICORE) în menuconfig înainte de a instala aplicațiile.
Diagramă bloc de referință hardware O diagramă bloc de mai jos prezintă componentele ESP32-DevKitM-1 și interconexiunile acestora.

Fig. 7: ESP32-DevKitM-1
Selectarea sursei de alimentare Există trei moduri care se exclud reciproc pentru a alimenta placa: · Port Micro USB, sursă de alimentare implicită · Pini header de 5V și GND · Pini header de 3V3 și GND
Atenție: · Alimentarea trebuie să fie asigurată folosind una și numai una dintre opțiunile de mai sus, altfel placa și/sau sursa de alimentare se pot deteriora. · Se recomandă alimentarea prin port micro USB.

Descrierile pinilor Tabelul de mai jos prezintă numele și funcția pinilor de pe ambele părți ale plăcii. Pentru configurațiile pinilor periferici, vă rugăm să consultați fișa tehnică ESP32.

Nu.

Nume

Tip

1

GND

P

2

3V3

P

Funcție Împământare Alimentare 3.3 V

continuă pe pagina următoare

Sisteme Espressif

12 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Tabelul 2 a continuat de la pagina anterioară

Nu.

Nume

Tip

Funcţie

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

Resetare; Ridicat: activare; Scăzut: se oprește

8

I34

I

GPIO34, ADC1_CH6, RTC_GPIO4

9

I35

I

GPIO35, ADC1_CH7, RTC_GPIO5

10

IO32

I/O

GPIO32, XTAL_32K_P (intrare oscilator cu cristal de 32.768 kHz),

ADC1_CH4, TOUCH9, RTC_GPIO9

11

IO33

I/O

GPIO33, XTAL_32K_N (ieșire oscilator cu cristal de 32.768 kHz),

ADC1_CH5, TOUCH8, RTC_GPIO8

12

IO25

I/O

GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0

13

IO26

I/O

GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1

14

IO27

I/O

GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV

15

IO14

I/O

GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,

HS2_CLK, SD_CLK, EMAC_TXD2

16

5V

P

Alimentare 5 V

17

IO12

I/O

GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,

HS2_DATA2, SD_DATA2, EMAC_TXD3

18

IO13

I/O

GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,

HS2_DATA3, SD_DATA3, EMAC_RX_ER

19

IO15

I/O

GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,

HS2_CMD, SD_CMD, EMAC_RXD3

20

IO2

I/O

GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,

HS2_DATA0, SD_DATA0

21

IO0

I/O

GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,

EMAC_TX_CLK

22

IO4

I/O

GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,

HS2_DATA1, SD_DATA1, EMAC_TX_ER

23

IO9

I/O

GPIO9, HS1_DATA2, U1RXD, SD_DATA2

24

IO10

I/O

GPIO10, HS1_DATA3, U1TXD, SD_DATA3

25

IO5

I/O

GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK

26

IO18

I/O

GPIO18, HS1_DATA7, VSPICLK

27

IO23

I/O

GPIO23, HS1_STROBE, VSPID

28

IO19

I/O

GPIO19, VSPIQ, U0CTS, EMAC_TXD0

29

IO22

I/O

GPIO22, VSPIWP, U0RTS, EMAC_TXD1

30

IO21

I/O

GPIO21, VSPIHD, EMAC_TX_EN

31

TXD0

I/O

GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2

32

RXD0

I/O

GPIO3, U0RXD, CLK_OUT2

Detalii despre revizia hardware-ului Nu sunt disponibile versiuni anterioare.
Documente conexe
· Fișă tehnică ESP32-MINI-1 și ESP32-MINI-1U (PDF) · Schemă ESP32-DevKitM-1 (PDF) · Schemă PCB ESP32-DevKitM-1 (PDF) · Schemă ESP32-DevKitM-1 (DXF) – Puteți view cu Autodesk Viewonline · Fișă tehnică ESP32 (PDF) · Selector de produse ESP
Pentru altă documentație de proiectare a plăcii, vă rugăm să ne contactați la adresa sales@espressif.com.

Sisteme Espressif

13 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Software 1.2.2
Pentru a începe să utilizați ESP-IDF pe ESP32, instalați următoarele programe software: · Toolchain pentru a compila codul pentru ESP32 · Instrumente de construire – CMake și Ninja pentru a construi o aplicație completă pentru ESP32 · ESP-IDF care conține în esență API (biblioteci software și cod sursă) pentru ESP32 și scripturi pentru a opera Toolchain-ul

1.3 Instalare
Pentru a instala tot software-ul necesar, oferim câteva modalități diferite de a facilita această sarcină. Alegeți una dintre opțiunile disponibile.
1.3.1 IDE

Notă: Vă recomandăm insistent să instalați ESP-IDF prin intermediul IDE-ului dumneavoastră preferat.
· Plugin Eclipse · Extensie VSCode

1.3.2 Instalare manuală
Pentru procedura manuală, vă rugăm să selectați în funcție de sistemul dumneavoastră de operare.

Sisteme Espressif

14 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Configurare standard a Toolchain pentru Windows
Introducere ESP-IDF necesită instalarea unor instrumente preliminare pentru a putea construi firmware pentru cipurile acceptate. Instrumentele preliminare includ Python, Git, compilatoare încrucișate, instrumente de compilare CMake și Ninja. Pentru această introducere, vom utiliza Linia de comandă, dar după instalarea ESP-IDF, puteți utiliza pluginul Eclipse sau un alt IDE grafic cu suport CMake. Notă: Limitări: – Calea de instalare a ESP-IDF și a instrumentelor ESP-IDF nu trebuie să depășească 90 de caractere. Căile de instalare prea lungi pot duce la o compilare eșuată. – Calea de instalare a Python sau ESP-IDF nu trebuie să conțină spații albe sau paranteze. – Calea de instalare a Python sau ESP-IDF nu trebuie să conțină caractere speciale (nonASCII) decât dacă sistemul de operare este configurat cu suport Unicode UTF-8. Administratorul de sistem poate activa suportul prin intermediul Panoului de control – Modificare format date, oră sau număr – fila Administrator – Modificare setări regionale ale sistemului – bifați opțiunea oBeta: Utilizare Unicode UTF-8 pentru suport lingvistic la nivel mondial – Ok și reporniți computerul.
Program de instalare ESP-IDF Tools Cea mai ușoară modalitate de a instala cerințele ESP-IDFns este să descărcați unul dintre programele de instalare ESP-IDF Tools.

Descărcare program de instalare Windows
Care este cazul de utilizare pentru instalatorul online și offline? Instalatorul online este foarte mic și permite instalarea tuturor versiunilor disponibile de ESP-IDF. Programul de instalare va descărca doar dependențele necesare, inclusiv Git pentru Windows, în timpul procesului de instalare. Programul de instalare stochează fișierele descărcate. files în directorul cache %userprofileespresso
Instalatorul offline nu necesită nicio conexiune la rețea. Programul de instalare conține toate dependențele necesare, inclusiv Git pentru Windows.
Componentele instalării Programul de instalare implementează următoarele componente:
· Python încorporat · Compilări încrucișate · OpenOCD · Instrumente de compilare CMake și Ninja · ESP-IDF
Programul de instalare permite, de asemenea, reutilizarea directorului existent cu ESP-IDF. Directorul recomandat este %userprofile%Desktopesp-idf unde %userprofile% este directorul tău principal.

Sisteme Espressif

15 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Lansarea mediului ESP-IDF La sfârșitul procesului de instalare, puteți bifa opțiunea Executare mediu ESP-IDF PowerShell sau Executare prompt de comandă ESP-IDF (cmd.exe). Programul de instalare va lansa mediul ESP-IDF în promptul selectat. Executare mediu ESP-IDF PowerShell:

Fig. 8: Finalizarea expertului de configurare ESP-IDF Tools cu Run ESP-IDF PowerShell Environment
Executați promptul de comandă ESP-IDF (cmd.exe):
Utilizarea liniei de comandă Pentru pașii introductivi rămași, vom utiliza linia de comandă Windows. Programul de instalare a instrumentelor ESP-IDF creează, de asemenea, o comandă rapidă în meniul Start pentru a lansa linia de comandă ESP-IDF. Această comandă rapidă lansează linia de comandă (cmd.exe) și rulează scriptul export.bat pentru a configura variabilele de mediu (PATH, IDF_PATH și altele). În interiorul acestei linii de comandă, sunt disponibile toate instrumentele instalate. Rețineți că această comandă rapidă este specifică directorului ESP-IDF selectat în programul de instalare a instrumentelor ESP-IDF. Dacă aveți mai multe directoare ESP-IDF pe computer (de ex.ampadică, pentru a lucra cu diferite versiuni de ESP-IDF), aveți două opțiuni pentru a le utiliza:
1. Creați o copie a comenzii rapide create de programul de instalare ESP-IDF Tools și schimbați directorul de lucru al noii comenzi rapide în directorul ESP-IDF pe care doriți să îl utilizați.
2. Alternativ, rulați cmd.exe, apoi accesați directorul ESP-IDF pe care doriți să îl utilizați și rulați export.bat. Rețineți că, spre deosebire de opțiunea anterioară, această metodă necesită ca Python și Git să fie prezente în PATH. Dacă primiți erori legate de faptul că Python sau Git nu au fost găsite, utilizați prima opțiune.
Primii pași în ESP-IDF Acum, deoarece toate cerințele sunt îndeplinite, următorul subiect vă va ghida cu privire la modul de a începe primul dvs. proiect.

Sisteme Espressif

16 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Introducere Fig. 9: ESP-IDF PowerShell

Fig. 10: Finalizarea expertului de configurare ESP-IDF Tools cu ajutorul comenzii Executare prompt de comandă ESP-IDF (cmd.exe)

Sisteme Espressif

17 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 11: Linia de comandă ESP-IDF

Sisteme Espressif

18 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Acest ghid vă va ajuta în primii pași folosind ESP-IDF. Urmați acest ghid pentru a începe un proiect nou pe ESP32 și pentru a construi, flasha și monitoriza ieșirea dispozitivului. Notă: Dacă nu ați instalat încă ESP-IDF, vă rugăm să accesați Instalare și să urmați instrucțiunile pentru a obține tot software-ul necesar pentru a utiliza acest ghid.

Începeți un proiect Acum sunteți gata să vă pregătiți aplicația pentru ESP32. Puteți începe cu proiectul getstarted/hello_world din exampdirectorul les din ESP-IDF.
Important: Sistemul de compilare ESP-IDF nu acceptă spații în căile către ESP-IDF sau către proiecte.
Copiați proiectul get-started/hello_world în directorul ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
Notă: Există o gamă de exempleample proiecte în exampdirectorul les din ESP-IDF. Puteți copia orice proiect în același mod ca cel prezentat mai sus și îl puteți rula. De asemenea, se poate construi example-uri la locul lor fără a le copia mai întâi.

Conectați dispozitivul Acum conectați placa ESP32 la computer și verificați sub ce port serial este vizibilă placa. Numele porturilor seriale încep cu COM în Windows. Dacă nu sunteți sigur cum să verificați numele portului serial, consultați secțiunea Stabilirea conexiunii seriale cu ESP32 pentru detalii complete.
Notă: Păstrați numele portului la îndemână, deoarece veți avea nevoie de el în pașii următori.

Configurați-vă proiectul Navigați la directorul hello_world, setați ESP32 ca țintă și rulați utilitarul de configurare a proiectului menuconfig.
CD-ul Windows %userprofile%esphello_world idf.py setează-ținta esp32 idf.py menuconfig
După deschiderea unui proiect nou, trebuie mai întâi să setați ținta cu idf.py set-target esp32. Rețineți că versiunile și configurațiile existente în proiect, dacă există, vor fi șterse și inițializate în acest proces. Ținta poate fi salvată în variabila de mediu pentru a sări peste acest pas. Consultați Selectarea cipului țintă: set-target pentru informații suplimentare. Dacă pașii anteriori au fost parcurși corect, apare următorul meniu: Utilizați acest meniu pentru a configura variabile specifice proiectului, de exemplu, numele și parola rețelei Wi-Fi, viteza procesorului etc. Configurarea proiectului cu menuconfig poate fi omisă pentru ohello_wordp, deoarece acest example rulează cu configurația implicită.
Atenție: Dacă utilizați placa ESP32-DevKitC cu modulul ESP32-SOLO-1 sau placa ESP32-DevKitM-1 cu modulul ESP32-MIN1-1(1U), vă rugăm să activați modul single core (CONFIG_FREERTOS_UNICORE) în menuconfig înainte de a instala ex.amples.

Sisteme Espressif

19 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 12: Configurarea proiectului – Fereastra principală
Notă: Culorile meniului pot fi diferite în terminalul dvs. Puteți schimba aspectul cu opțiunea –style. Vă rugăm să executați comanda idf.py menuconfig –help pentru informații suplimentare.
Dacă utilizați una dintre plăcile de dezvoltare acceptate, puteți accelera dezvoltarea utilizând Pachetul de asistență pentru plăci. Consultați Sfaturi suplimentare pentru mai multe informații.
Construiți proiectul Construiți proiectul rulând:
build idf.py
Această comandă va compila aplicația și toate componentele ESP-IDF, apoi va genera bootloader-ul, tabelul de partiții și binarele aplicației.
$ idf.py build Se execută cmake în directorul /path/to/hello_world/build Se execută „cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Avertisment despre valorile neinițializate. — Git găsit: /usr/bin/git (versiunea „2.17.0” găsită) — Se construiește o componentă aws_iot goală din cauza configurației — Nume componente: … — Căi componente: …
… (mai multe linii de ieșire a sistemului de compilare)
[527/527] Se generează hello_world.bin esptool.py v2.3.1
Construcția proiectului finalizată. Pentru flashare, executați această comandă: ../../../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 sau executați „idf.py -p PORT flash”
Dacă nu există erori, construcția se va termina prin generarea firmware-ului binar .bin files.

Sisteme Espressif

20 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Flashează fișierele binare pe care tocmai le-ai construit (bootloader.bin, partition-table.bin și hello_world.bin) pe placa ESP32 rulând: idf.py -p PORT [-b BAUD] flash
Înlocuiți PORT cu numele portului serial al plăcii ESP32. De asemenea, puteți modifica rata de transfer a semnalului flasher înlocuind BAUD cu rata de transfer de care aveți nevoie. Rata de transfer implicită este 460800. Pentru mai multe informații despre argumentele idf.py, consultați idf.py.
Notă: Opțiunea flash compilează și actualizează automat proiectul, deci nu este necesară rularea idf.py build.

Ați întâmpinat probleme în timpul flashării? Dacă executați comanda dată și vedeți erori precum „Failed to connectp”, pot exista mai multe motive pentru aceasta. Unul dintre motive ar putea fi problemele întâlnite de esptool.py, utilitarul apelat de sistemul de compilare pentru a reseta cipul, a interacționa cu bootloader-ul ROM și a flasha firmware-ul. O soluție simplă de încercat este resetarea manuală descrisă mai jos, iar dacă nu ajută, puteți găsi mai multe detalii despre posibilele probleme în secțiunea Depanare.
esptool.py resetează automat ESP32 prin activarea liniilor de control DTR și RTS ale cipului convertor USB-serial, de exemplu FTDI sau CP210x (pentru mai multe informații, consultați Stabilirea conexiunii seriale cu ESP32). Liniile de control DTR și RTS sunt la rândul lor conectate la pinii GPIO0 și CHIP_PU (EN) ai ESP32, modificând astfel volumul.tagNivelurile DTR și RTS vor porni ESP32 în modul de descărcare firmware. Ca exempluampAdică, verifică schema plăcii de dezvoltare ESP32 DevKitC.
În general, nu ar trebui să întâmpinați probleme cu plăcile de dezvoltare oficiale esp-idf. Cu toate acestea, esptool.py nu poate reseta automat hardware-ul în următoarele cazuri:
· Hardware-ul dvs. nu are liniile DTR și RTS conectate la GPIO0 și CHIP_PU · Liniile DTR și RTS sunt configurate diferit · Nu există astfel de linii de control serial deloc
În funcție de tipul de hardware pe care îl aveți, este posibil să puneți manual placa ESP32 în modul de descărcare a firmware-ului (resetare).
· Pentru plăcile de dezvoltare produse de Espressif, aceste informații pot fi găsite în ghidurile introductive sau în ghidurile utilizatorului respective. De exempluampAdică, pentru a reseta manual o placă de dezvoltare ESP-IDF, țineți apăsat butonul Boot (GPIO0) și apăsați butonul EN (CHIP_PU).
· Pentru alte tipuri de hardware, încercați să dezactivați GPIO0.

Funcționare normală Când clipește, veți vedea jurnalul de ieșire similar cu următorul:
… 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 Port serial /dev/ttyUSB0 Conectare…….._ Cipul este ESP32D0WDQ6 (revizia 0) Caracteristici: WiFi, BT, Dual Core, Schemă de codare Niciuna Cristalul este de 40MHz MAC: 24:0a:c4:05:b9:14 Se încarcă stub-ul… Se execută stub-ul… Stub-ul rulează… Se schimbă rata baud la 460800 Modificat.
(continuare pe pagina următoare)

Sisteme Espressif

21 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
(continuare de la pagina anterioară) Configurarea dimensiunii memoriei flash… Comprimate 3072 octeți la 103… Scriere la 0x00008000… (100 %) Scrise 3072 octeți (103 comprimați) la 0x00008000 în 0.0 secunde (viteză efectivă 5962.8 kbit/s)… Hash de date verificat. Comprimate 26096 octeți la 15408… Scriere la 0x00001000… (100 %) Scrise 26096 octeți (15408 comprimați) la 0x00001000 în 0.4 secunde (viteză efectivă 546.7 kbit/s)… Hash de date verificat. S-au comprimat 147104 octeți la 77364… Scriere la 0x00010000… (20 %) Scriere la 0x00014000… (40 %) Scriere la 0x00018000… (60 %) Scriere la 0x0001c000… (80 %) Scriere la 0x00020000… (100 %) S-au scris 147104 octeți (77364 comprimați) la 0x00010000 în 1.9 secunde (viteză efectivă 615,5 kbit/s)… Hash de date verificat.
Plec... Resetare completă prin pinul RTS... Gata
Dacă nu există probleme până la sfârșitul procesului de flashare, placa va reporni și va porni aplicația thehello_worldp. Dacă doriți să utilizați IDE-ul Eclipse sau VS Code în loc să rulați idf.py, consultați pluginul Eclipse, extensia VSCode.
Monitorizarea ieșirii Pentru a verifica dacă ohello_world rulează într-adevăr, tastați idf.py -p PORT monitor (Nu uitați să înlocuiți PORT cu numele portului serial).
Această comandă lansează aplicația IDF Monitor:
$ idf.py -p monitor Rularea comenzii idf_monitor în directorul […]/esp/hello_world/build Executarea comenzii „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf”… — idf_monitor pornit 115200 —– Ieșire: Ctrl+] | Meniu: Ctrl+T | Ajutor: Ctrl+T urmat de Ctrl+H –ets 8 iunie 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 iunie 2016 00:22:57 …
După ce jurnalele de pornire și de diagnosticare se derulează în sus, ar trebui să vedeți mesajul „Hello world!” imprimat de aplicație.
... Salut lume! Repornire în 10 secunde... Acesta este un cip esp32 cu 2 nuclee CPU, WiFi/BT/BLE, revizia 1 din silicon, memorie flash externă de 2 MB Dimensiune minimă a memoriei heap libere: 298968 octeți Repornire în 9 secunde... Repornire în 8 secunde... Repornire în 7 secunde...
Pentru a ieși din monitorul IDF, utilizați comanda rapidă Ctrl+].

Sisteme Espressif

22 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Dacă monitorul IDF eșuează la scurt timp după încărcare sau dacă, în loc de mesajele de mai sus, vedeți erori aleatorii similare cu cele de mai jos, placa dvs. utilizează probabil un cristal de 26 MHz. Majoritatea plăcilor de dezvoltare utilizează 40 MHz, așa că ESP-IDF folosește această frecvență ca valoare implicită.

Dacă întâmpinați o astfel de problemă, procedați în felul următor: 1. Ieșiți din monitor. 2. Reveniți la meniul de configurare. 3. Accesați Configurare componente > Setări hardware > Configurație XTAL principală > Frecvență XTAL principală, apoi schimbați CONFIG_XTAL_FREQ_SEL la 26 MHz. 4. După aceea, compilați și flashați din nou aplicația.
În versiunea actuală a ESP-IDF, principalele frecvențe XTAL suportate de ESP32 sunt următoarele:
· 26 MHz · 40 MHz
Notă: Puteți combina construirea, flashing-ul și monitorizarea într-un singur pas rulând: idf.py -p PORT flash monitor
Vedeți și: · Monitor IDF pentru comenzi rapide utile și mai multe detalii despre utilizarea monitorului IDF. · idf.py pentru o referință completă a comenzilor și opțiunilor idf.py.
Asta e tot ce ai nevoie pentru a începe să folosești ESP32! Acum ești gata să încerci și alte exemple.amplese sau treceți direct la dezvoltarea propriilor aplicații.
Important: Unele dintre fosteampȘierele nu suportă ESP32 deoarece hardware-ul necesar nu este inclus în ESP32, deci nu poate fi suportat. Dacă se construiește un example, vă rugăm să verificați fișierul README file pentru tabelul Ținte acceptate. Dacă acesta este prezent, inclusiv ținta ESP32, sau tabelul nu există deloc, exampVa funcționa pe ESP32.
Sfaturi suplimentare
Probleme de permisiuni /dev/ttyUSB0 În cazul unor distribuții Linux, este posibil să primiți mesajul de eroare „Eșuat la deschiderea portului /dev/ttyUSB0” la instalarea ESP32. Această problemă poate fi rezolvată prin adăugarea utilizatorului curent la grupul de dialout.
Compatibilitate cu Python ESP-IDF acceptă Python 3.7 sau o versiune mai nouă. Se recomandă actualizarea sistemului de operare la o versiune recentă care îndeplinește această cerință. Alte opțiuni includ instalarea Python din surse sau utilizarea unui sistem de gestionare a versiunilor Python, cum ar fi pyenv.
Începeți cu pachetul de asistență pentru plăci de dezvoltare Pentru a accelera prototiparea pe unele plăci de dezvoltare, puteți utiliza pachete de asistență pentru plăci de dezvoltare (BSP), care fac inițializarea unei anumite plăci la fel de ușoară ca câteva apeluri de funcții.

Sisteme Espressif

23 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Un BSP suportă de obicei toate componentele hardware furnizate pe placa de dezvoltare. Pe lângă definirea pinilor și funcțiile de inițializare, un BSP este livrat cu drivere pentru componentele externe, cum ar fi senzori, afișaje, codecuri audio etc. BSP-urile sunt distribuite prin intermediul IDF Component Manager, astfel încât pot fi găsite în IDF Component Registry. Iată un exemplu.ampUn exemplu de adăugare a ESP-WROVER-KIT BSP la proiectul dvs.: idf.py add-dependency esp_wrover_kit
Mai mult exampMai puține exemple de utilizare a BSP pot fi găsite în exemplul BSPampfolderul les.
Documente similare Pentru utilizatorii avansați care doresc să personalizeze procesul de instalare: · Actualizarea instrumentelor ESP-IDF pe Windows · Stabilirea conexiunii seriale cu ESP32 · Plugin Eclipse · Extensie VSCode · Monitor IDF
Actualizarea instrumentelor ESP-IDF pe Windows
Instalați instrumentele ESP-IDF folosind un script. Din promptul de comandă Windows, accesați directorul în care este instalat ESPIDF. Apoi executați:
install.bat
Pentru Powershell, accesați directorul în care este instalat ESP-IDF. Apoi executați:
instalare.ps1
Aceasta operațiune va descărca și instala instrumentele necesare pentru utilizarea ESP-IDF. Dacă versiunea specifică a instrumentului este deja instalată, nu se va lua nicio acțiune. Instrumentele sunt descărcate și instalate într-un director specificat în timpul procesului de instalare a instrumentelor ESP-IDF. În mod implicit, acesta este C:Usersusername.espressif.
Adăugați instrumentele ESP-IDF la PATH folosind un script de export. Programul de instalare a instrumentelor ESP-IDF creează o comandă rapidă în meniul Start pentru oLinia de comandă ESP-IDF. Această comandă rapidă deschide o fereastră Linie de comandă în care toate instrumentele sunt deja instalate.
disponibil. În unele cazuri, este posibil să doriți să lucrați cu ESP-IDF într-o fereastră de comandă care nu a fost pornită folosind comanda rapidă respectivă. Dacă acesta este cazul, urmați instrucțiunile de mai jos pentru a adăuga instrumentele ESP-IDF la PATH. În linia de comandă unde trebuie să utilizați ESP-IDF, schimbați directorul în care este instalat ESP-IDF, apoi executați export.bat:
cd %userprofile%espesp-idf export.bat
Alternativ, în Powershell-ul unde trebuie să utilizați ESP-IDF, schimbați directorul în care este instalat ESP-IDF, apoi executați export.ps1:
cd ~/esp/esp-idf export.ps1
Când se face acest lucru, instrumentele vor fi disponibile în această linie de comandă.
Stabilirea conexiunii seriale cu ESP32 Această secțiune oferă îndrumări despre cum se stabilește o conexiune serială între ESP32 și PC.

Sisteme Espressif

24 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Conectați ESP32 la PC Conectați placa ESP32 la PC folosind cablul USB. Dacă driverul dispozitivului nu se instalează automat, identificați cipul convertorului USB-serial de pe placa ESP32 (sau dongle-ul extern al convertorului), căutați drivere pe internet și instalați-le. Mai jos este lista cipurilor de conversie USB-serial instalate pe majoritatea plăcilor ESP32 produse de Espressif, împreună cu link-uri către drivere:
· CP210x: Drivere VCP pentru puntea USB la UART CP210x · FTDI: Drivere pentru port COM virtual FTDI Vă rugăm să consultați ghidul utilizatorului plăcii pentru cipurile specifice de conversie USB-serial utilizate. Driverele de mai sus sunt în principal pentru referință. În circumstanțe normale, driverele ar trebui să fie incluse în pachetul sistemului de operare și instalate automat la conectarea plăcii la PC.
Verificați portul în Windows Verificați lista de porturi COM identificate în Device Manager Windows. Deconectați ESP32 și reconectați-l pentru a verifica care port dispare din listă și apoi reapare. Figurile de mai jos arată portul serial pentru ESP32 DevKitC și ESP32 WROVER KIT

Fig. 13: Punte USB la UART a ESP32-DevKitC în Managerul de dispozitive Windows

Verificați portul pe Linux și macOS Pentru a verifica numele dispozitivului pentru portul serial al plăcii ESP32 (sau al dongle-ului convertor extern), executați această comandă de două ori, mai întâi cu placa/dongle-ul deconectat, apoi cu conectat. Portul care apare a doua oară este cel de care aveți nevoie: Linux
ls /dev/tty*
macOS

Sisteme Espressif

25 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 14: Două porturi seriale USB ale ESP-WROVER-KIT în Device Manager Windows

Sisteme Espressif

26 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

ls /dev/cu.* Notă: Utilizatori macOS: dacă nu vedeți portul serial, verificați dacă aveți instalate driverele USB/serial. Consultați secțiunea Conectarea ESP32 la PC pentru linkuri către drivere. Pentru macOS High Sierra (10.13), este posibil să fie nevoie să permiteți în mod explicit încărcarea driverelor. Deschideți Preferințe sistem -> Securitate și confidențialitate -> General și verificați dacă există un mesaj afișat aici despre oSystem Software de la dezvoltatorul lp, unde numele dezvoltatorului este Silicon Labs sau FTDI.

Adăugarea utilizatorului la grupul de dialout pe Linux Utilizatorul conectat în prezent ar trebui să aibă acces de citire și scriere la portul serial prin USB. Pe majoritatea distribuțiilor Linux, acest lucru se face prin adăugarea utilizatorului la grupul de dialout cu următoarea comandă:
sudo usermod -a -G dialout $USER
pe Arch Linux, acest lucru se face prin adăugarea utilizatorului la grupul uucp cu următoarea comandă:
sudo usermod -a -G uucp $USER
Asigurați-vă că vă reconectați pentru a activa permisiunile de citire și scriere pentru portul serial.
Verificați conexiunea serială Acum verificați dacă conexiunea serială este operațională. Puteți face acest lucru utilizând un program de terminal serial, verificând dacă primiți vreo ieșire pe terminal după resetarea ESP32. Rata de transfer implicită a consolei pe ESP32 este de 115200.
Windows și Linux în acest exempluampDe exemplu, vom folosi clientul PuTTY SSH, disponibil atât pentru Windows, cât și pentru Linux. Puteți utiliza și alte programe seriale și puteți seta parametrii de comunicare, așa cum se arată mai jos. Rulați terminalul și setați portul serial identificat. Rata de transfer = 115200 (dacă este necesar, schimbați-o la rata de transfer implicită a cipului utilizat), biții de date = 8, biții de stop = 1 și paritatea = N. Mai jos sunt exemple...ampCapturi de ecran cu setarea portului și a parametrilor de transmisie (descriși pe scurt ca 115200-8-1-N) pe Windows și Linux. Nu uitați să selectați exact același port serial pe care l-ați identificat în pașii de mai sus. Apoi deschideți portul serial în terminal și verificați dacă vedeți vreun jurnal imprimat de ESP32. Conținutul jurnalului va depinde de aplicația încărcată pe ESP32, consultați Ex.ampIeșire.
Notă: Închideți terminalul serial după verificarea funcționării comunicării. Dacă mențineți sesiunea terminalului deschisă, portul serial va fi inaccesibil pentru încărcarea ulterioară a firmware-ului.

macOS Pentru a vă scuti de efortul de a instala un program de terminal serial, macOS oferă comanda screen. · După cum s-a discutat în Verificarea portului pe Linux și macOS, executați:

ls /dev/cu.* · Ar trebui să vedeți un rezultat similar:

/dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART USBtoUART7

/dev/cu.SLAB_

· Rezultatul va varia în funcție de tipul și numărul de plăci conectate la PC. Apoi, alegeți numele dispozitivului plăcii și rulați (dacă este necesar, schimbați o115200 la rata de baud implicită a cipului utilizat):

screen /dev/cu.device_name 115200 Înlocuiți device_name cu numele găsit la executarea ls /dev/cu.*.

Sisteme Espressif

27 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 15: Configurarea comunicării seriale în PuTTY pe Windows

Sisteme Espressif

28 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Fig. 16: Configurarea comunicării seriale în PuTTY pe Linux

Sisteme Espressif

29 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
· Ceea ce căutați este un jurnal afișat pe ecran. Conținutul jurnalului va depinde de aplicația încărcată pe ESP32, consultați Ex.ampIeșire. Pentru a ieși din sesiunea de ecran, tastați Ctrl-A + .
Notă: Nu uitați să ieșiți din sesiunea de afișare a ecranului după ce verificați dacă comunicarea funcționează. Dacă nu reușiți să faceți acest lucru și pur și simplu închideți fereastra terminalului, portul serial va fi inaccesibil pentru încărcarea ulterioară a firmware-ului.
ExampIeșire Un exempluampJurnalul este afișat mai jos. Resetați placa dacă nu vedeți nimic. ets 8 iunie 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 iunie 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 stagbootloader I (45) e boot: timp de compilare 18:48:10

Dacă puteți vedea ieșirea jurnalului lizibilă, înseamnă că conexiunea serială funcționează și sunteți gata să continuați instalarea și, în final, încărcarea aplicației pe ESP32.
Notă: Pentru unele configurații de cablare a portului serial, pinii seriali RTS și DTR trebuie dezactivați în programul terminalului înainte ca ESP32 să pornească și să producă ieșire serială. Acest lucru depinde de hardware-ul în sine, majoritatea plăcilor de dezvoltare (inclusiv toate plăcile Espressif) nu au această problemă. Problema apare dacă RTS și DTR sunt conectate direct la pinii EN și GPIO0. Consultați documentația esptool pentru mai multe detalii.
Dacă ați ajuns aici de la Pasul 5. Primii pași asupra ESP-IDF la instalarea software-ului pentru dezvoltarea ESP32, atunci puteți continua cu Pasul 5. Primii pași asupra ESP-IDF.
Monitor IDF Monitor IDF este în principal un program de terminal serial care transmite date seriale către și de la portul serial al dispozitivului țintă. De asemenea, oferă unele funcții specifice IDF. Monitorul IDF poate fi lansat dintr-un proiect IDF rulând idf.py monitor.
Comenzi rapide de la tastatură Pentru o interacțiune ușoară cu IDF Monitor, utilizați comenzile rapide de la tastatură indicate în tabel.

Sisteme Espressif

30 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Comandă rapidă de la tastatură Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (sau A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (sau I)
· Ctrl+H (sau H)
· Ctrl+X (sau X)
Ctrl+C

Acţiune

Descriere

Ieșire din program Tastă Escape din meniu Trimite caracterul din meniu către telecomandă
Trimite caracterul de ieșire la distanță
Resetați ținta în bootloader pentru a întrerupe aplicația prin linia RTS
Resetează tabla țintă prin RTS
Construiți și flashați proiectul

Doar construiți și flashați aplicația

Oprirea/reluarea imprimării jurnalului pe ecran

Ieșirea jurnalului de oprire/reluare salvată în file

Timpul de oprire/reluareamps

imprimare

Afișează toate comenzile rapide de la tastatură

Apăsați și urmați una dintre tastele de mai jos.
Resetează placa țintă în bootloader prin linia RTS (dacă este conectată), astfel încât placa să nu ruleze nimic. Util atunci când trebuie să așteptați pornirea unui alt dispozitiv. Resetează placa țintă și repornește aplicația prin linia RTS (dacă este conectată).
Întrerupe idf_monitor pentru a rula ținta flash a proiectului, apoi reia idf_monitor. Orice sursă modificată fileFuncțiile s sunt recompilate și apoi re-flashate. Target encrypted-flash se execută dacă idf_monitor a fost pornit cu argumentul -E. Pune în pauză idf_monitor pentru a rula ținta app-flash, apoi o reia idf_monitor. Similar cu ținta flash, dar numai aplicația principală este construită și re-flashată. Target encrypted-app-flash se execută dacă idf_monitor a fost pornit cu argumentul -E. Elimină toate datele seriale primite cât timp este activat. Permite întreruperea rapidă și examinarea ieșirii jurnalului fără a închide monitorul. Creează un file în directorul proiectului, iar rezultatul este scris în acesta file până când aceasta este dezactivată cu aceeași comandă rapidă de la tastatură (sau IDF Monitor se închide). IDF Monitor poate imprima un timestamp la începutul fiecărei linii. Cel mai scurt momentamp formatul poate fi modificat de –timestamp-format argument din linia de comandă.

Ieșiți din program

Întrerupeți rularea aplicației

Întrerupe Monitorul IDF și rulează depanatorul de proiect GDB pentru a depana aplicația în timpul execuției. Acest lucru necesită activarea opțiunii :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME.

Orice taste apăsate, altele decât Ctrl-] și Ctrl-T, vor fi trimise prin portul serial.

Caracteristici specifice IDF

Decodarea automată a adreselor Ori de câte ori ESP-IDF generează o adresă hexazecimală de forma 0x4_______, IDF Monitor folosește addr2line_ pentru a căuta locația în codul sursă și a găsi numele funcției.
Dacă o aplicație ESP-IDF se blochează și intră în panică, se produce un dump de registru și o backtrace, cum ar fi următoarele:

Sisteme Espressif

31 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Eroare de tip StoreProhibited la meditația Guru pe nucleul 0. Excepția a fost

netratat.

Dump de înregistrare:

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 EXCUZAȚIE:

0x0000001d

EXCVADR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90

IDF Monitor adaugă mai multe detalii la dump:

Eroare de tip StoreProhibited la meditația Guru pe nucleul 0. Excepția a fost

netratat.

Dump de înregistrare:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d: fă_ceva_pentru_a_se_bloca_la /home/gus/esp/32/idf/examples/începeți/

salut_lume/main/./salut_lume_main.c:57

(inclusiv de) inner_dont_crash la /home/gus/esp/32/idf/examples/get-started/hello_

lume/principal/./hello_world_main.c:52

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

A10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

A14

: 0x00000047 A15

: 0x0000000f SAR

: 0x00000019 EXCUZAȚIE:

0x0000001d

EXCVADR: 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 (inclusiv de) inner_dont_crash la /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash la /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash la /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main la /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task la /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254

Pentru a decodifica fiecare adresă, IDF Monitor execută următoarea comandă în fundal: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADRESĂ

Notă: Setați variabila de mediu ESP_MONITOR_DECODE la 0 sau apelați idf_monitor.py cu o linie de comandă specifică.

Sisteme Espressif

32 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
opțiune: idf_monitor.py –disable-address-decoding pentru a dezactiva decodarea adreselor.
Resetare țintă la conectare În mod implicit, IDF Monitor va reseta ținta la conectarea la aceasta. Resetarea cipului țintă se efectuează utilizând liniile seriale DTR și RTS. Pentru a împiedica IDF Monitor să reseteze automat ținta la conectare, apelați IDF Monitor cu opțiunea –no-reset (de exemplu, idf_monitor.py –no-reset).
Notă: Opțiunea –no-reset aplică același comportament chiar și atunci când se conectează IDF Monitor la un anumit port (de exemplu, idf.py monitor –no-reset -p [PORT]).
Lansarea GDB cu GDBStub. GDBStub este o caracteristică utilă de depanare în timpul rulării care rulează pe țintă și se conectează la gazdă prin portul serial pentru a primi comenzi de depanare. GDBStub acceptă comenzi precum citirea memoriei și a variabilelor, examinarea cadrelor stivei de apeluri etc. Deși GDBStub este mai puțin versatil decât JTAG depanare, nu necesită niciun hardware special (cum ar fi un JTAG la puntea USB), deoarece comunicarea se face în întregime prin portul serial. O țintă poate fi configurată să ruleze GDBStub în fundal prin setarea CONFIG_ESP_SYSTEM_PANIC la GDBStub în timpul execuției. GDBStub va rula în fundal până când un mesaj Ctrl+C este trimis prin portul serial și determină GDBStub să întrerupă (adică să oprească execuția) programului, permițând astfel GDBStub să gestioneze comenzile de depanare. În plus, gestionarea panicii poate fi configurată să ruleze GDBStub în cazul unei erori prin setarea CONFIG_ESP_SYSTEM_PANIC la GDBStub în caz de panică. Când apare o eroare, GDBStub va genera un model special de șir de caractere prin portul serial pentru a indica faptul că rulează. În ambele cazuri (adică, trimiterea mesajului Ctrl+C sau primirea modelului special de șir de caractere), IDF Monitor va lansa automat GDB pentru a permite utilizatorului să trimită comenzi de depanare. După ce GDB se închide, ținta este resetată prin linia serială RTS. Dacă această linie nu este conectată, utilizatorii își pot reseta ținta (apăsând butonul Resetare al plăcii).
Notă: În fundal, IDF Monitor execută următoarea comandă pentru a lansa GDB:
xtensa-esp32-elf-gdb -ex „setează baud serial BAUD” -ex „portul țintă la distanță” -ex interrupt build/PROJECT.elf :idf_target:`Salut NUME cip`

Filtrarea ieșirilor Monitorul IDF poate fi invocat ca idf.py monitor –print-filter=”xyz”, unde –print-filter este parametrul pentru filtrarea ieșirilor. Valoarea implicită este un șir gol, ceea ce înseamnă că totul este imprimat.
Restricțiile privind ce se imprimă pot fi specificate ca o serie detag>: articole undetag> este tag șir și este un caracter din mulțimea {N, E, W, I, D, V, *} care se referă la un nivel pentru înregistrare în jurnal.
De exampadică, PRINT_FILTER=”tag1:W” se potrivește și afișează doar ieșirile scrise cu ESP_LOGW(“tag1”, …) sau la un nivel de verbositate mai scăzut, de exemplu ESP_LOGE(“tag1″, …). Nu se specifică un sau utilizarea lui * se va face implicit la nivelul Verbose.
Notă: Folosiți înregistrarea în jurnal principală pentru a dezactiva la compilare ieșirile de care nu aveți nevoie prin intermediul bibliotecii de înregistrare în jurnal. Filtrarea ieșirilor cu monitorul IDF este o soluție secundară care poate fi utilă pentru ajustarea opțiunilor de filtrare fără a recompila aplicația.
Aplicația ta tags nu trebuie să conțină spații, asteriscuri * sau două puncte : pentru a fi compatibil cu funcția de filtrare a ieșirii.
Dacă ultima linie a ieșirii din aplicație nu este urmată de un retur de car, filtrarea ieșirii ar putea fi confuză, de exemplu, monitorul începe să afișeze linia și ulterior descoperă că linia nu ar fi trebuit scrisă. Aceasta este o problemă cunoscută și poate fi evitată prin adăugarea întotdeauna a unui retur de car (mai ales când nu urmează nicio ieșire imediat după aceea).

Sisteme Espressif

33 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Exampreguli de filtrare:
· * poate fi folosit pentru a potrivi orice tagsTotuși, șirul PRINT_FILTER=”*:I tag1:E” în ​​ceea ce privește tag1 afișează doar erori, deoarece regula pentru tag1 are o prioritate mai mare față de regula pentru *.
· Regula implicită (goală) este echivalentă cu *:V deoarece potrivirea fiecărei tag la nivel Verbose sau mai jos înseamnă că se potrivește cu totul.
„*:N” suprimă nu doar ieșirile din funcțiile de înregistrare în jurnal, ci și afișările făcute de printf etc. Pentru a evita acest lucru, utilizați *:E sau un nivel de prolixitate mai ridicat.
· Reguli „tag1:V”, „tag1:v”, „tag1:”, „tag1:*”, și „tag1” sunt echivalente. · Regula „tag1:W tag„1:E” este echivalent cu „tag1:E” deoarece orice apariție consecutivă a aceluiași tag
numele îl suprascrie pe cel precedent. · Regula „tag1:I tagImprimări doar cu 2:W” tag1 la nivelul de verbositate Info sau inferior și tag2 la Avertisment
nivel de verbositate sau mai mic. · Regula „tag1:I tag2:W tag„3:N” este în esență echivalent cu precedentul deoarece tag3:N specifică
că tag3 nu ar trebui tipărit. · tag3:N în regula „tag1:I tag2:W tag„3:N *:V” este mai semnificativ deoarece fără tag3:N
tagAr fi putut fi imprimate 3 mesaje; erorile pentru tag1 și tag2 va fi afișat la nivelul de verbositate specificat (sau inferior), iar orice altceva va fi afișat în mod implicit.
Un exemplu de filtrare mai complexampUrmătorul fragment de jurnal a fost achiziționat fără opțiuni de filtrare:
load:0x40078000,len:13564 entry 0x40078d4c E (31) esp_image: imaginea la 0x30000 are un octet magic invalid W (31) esp_image: imaginea la 0x30000 are un mod SPI invalid 255 E (39) boot: Partiția aplicației din fabrică nu este bootabilă I (568) cpu_start: Pro cpu pornit. I (569) heap_init: Inițializare. RAM disponibilă pentru alocare dinamică: I (603) cpu_start: Cod utilizator de pornire Pro cpu D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range a reușit pentru intervalul <54; 64) și ID-ul VFS 1 I (328) wifi: sarcina driverului wifi: 3ffdbf84, prio:23, stivă:4096, nucleu=0
Rezultatul capturat pentru opțiunile de filtrare PRINT_FILTER=”wifi esp_image:E light_driver:I” este prezentat mai jos:
E (31) esp_image: imaginea la 0x30000 are un octet magic invalid I (328) wifi: sarcina driverului wifi: 3ffdbf84, prio:23, stivă:4096, nucleu=0
Opțiunile „PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" afișează următorul rezultat:
încărcare:0x40078000,len:13564 intrare 0x40078d4c I (569) heap_init: Inițializare. RAM disponibilă pentru alocare dinamică: D (309) light_driver: [light_init, 74]:stare: 1, mod: 2
Probleme cunoscute cu IDF Monitor
Probleme observate pe Windows
· Tastele săgeată, precum și alte taste, nu funcționează în GDB din cauza limitărilor consolei Windows. · Ocazional, când oidf.pype se închide, se poate bloca timp de până la 30 de secunde înainte ca IDF Monitor să se reia. · Când ogdbpis rulează, se poate bloca pentru o scurtă perioadă de timp înainte de a începe să comunice cu GDBStub.

Sisteme Espressif

34 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Introducere Configurarea standard a Toolchain-ului pentru Linux și macOS

Instalare pas cu pas Aceasta este o foaie de parcurs detaliată care vă va ghida prin procesul de instalare.
Configurarea mediului de dezvoltare Aceștia sunt pașii pentru configurarea ESP-IDF pentru ESP32. · Pasul 1. Cerințe preliminare de instalare · Pasul 2. Obțineți ESP-IDF · Pasul 3. Configurați instrumentele · Pasul 4. Configurați variabilele de mediu · Pasul 5. Primii pași în ESP-IDF
Pasul 1. Cerințe preliminare de instalare Pentru a utiliza ESP-IDF cu ESP32, trebuie să instalați câteva pachete software în funcție de sistemul dvs. de operare. Acest ghid de configurare vă va ajuta să instalați totul pe sistemele bazate pe Linux și macOS.
Pentru utilizatorii de Linux Pentru a compila folosind ESP-IDF, veți avea nevoie de următoarele pachete. Comanda de executat depinde de distribuția de Linux pe care o utilizați:
· Ubuntu și 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 și 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 este încă suportat, dar se recomandă CentOS versiunea 8 pentru o experiență mai bună pentru utilizator. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Notă: · Pentru utilizarea cu ESP-IDF este necesară versiunea 3.16 sau o versiune mai nouă a CMake. Rulați comanda otools/idf_tools.py install cmake pentru a instala o versiune potrivită dacă versiunile sistemului de operare nu au una. · Dacă nu vedeți distribuția Linux în lista de mai sus, vă rugăm să consultați documentația acesteia pentru a afla ce comandă să utilizați pentru instalarea pachetului.
Pentru utilizatorii de macOS, ESP-IDF va folosi versiunea de Python instalată implicit pe macOS. · Instalați CMake și Ninja build: Dacă aveți HomeBrew, puteți rula: brew install cmake ninja dfu-util. Dacă aveți MacPorts, puteți rula: sudo port install cmake ninja dfu-util. În caz contrar, consultați paginile principale CMake și Ninja pentru descărcări de instalare macOS.

Sisteme Espressif

35 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
· Se recomandă insistent să instalați și ccache pentru o compilare mai rapidă. Dacă aveți HomeBrew, acest lucru se poate face prin brew install ccache sau sudo port install ccache pe MacPorts.
Notă: Dacă apare o eroare de acest gen în timpul oricărui pas: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), lipsește xcrun la: /Library/Developer/CommandLineTools/usr/bin/xcrun
Apoi, va trebui să instalați instrumentele din linia de comandă XCode pentru a continua. Le puteți instala rulând xcode-select –install.
Utilizatori Apple M1 Dacă utilizați platforma Apple M1 și vedeți o eroare de genul acesta: AVERTISMENT: directorul pentru instrumentul xtensa-esp32-elf versiunea esp-2021r2-patch3-8.4.0 este prezent, dar instrumentul nu a fost găsit EROARE: instrumentul xtensa-esp32-elf nu are versiuni instalate. Vă rugăm să rulați „install.sh” pentru a-l instala.
sau: zsh: tip de CPU greșit în executabil: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Apoi va trebui să instalați Apple Rosetta 2 rulând comanda /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Instalarea Python 3 Conform notelor de lansare pentru macOS Catalina 10.15, utilizarea Python 2.7 nu este recomandată și Python 2.7 nu va fi inclus în mod implicit în versiunile viitoare de macOS. Verificați ce Python aveți în prezent: python –version
Dacă rezultatul este similar cu Python 2.7.17, interpretorul implicit este Python 2.7. Dacă da, verificați și dacă Python 3 nu este deja instalat pe computer: python3 –version
Dacă comanda de mai sus returnează o eroare, înseamnă că Python 3 nu este instalat. Mai jos este o descriereview pașii pentru instalarea Python 3.
· Instalarea cu HomeBrew se poate face astfel: brew install python3
· Dacă aveți MacPorts, puteți rula: sudo port install python38
Pasul 2. Obțineți ESP-IDF Pentru a construi aplicații pentru ESP32, aveți nevoie de bibliotecile software furnizate de Espressif în depozitul ESP-IDF. Pentru a obține ESP-IDF, navigați la directorul de instalare și clonați depozitul cu git clone, urmând instrucțiunile de mai jos specifice sistemului dvs. de operare. Deschideți Terminalul și executați următoarele comenzi:

Sisteme Espressif

36 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF va fi descărcat în ~/esp/esp-idf. Consultați versiunile ESP-IDF pentru informații despre versiunea ESP-IDF de utilizat într-o anumită situație.
Pasul 3. Configurați instrumentele Pe lângă ESP-IDF, trebuie să instalați și instrumentele utilizate de ESP-IDF, cum ar fi compilatorul, depanatorul, pachetele Python etc., pentru proiectele care suportă ESP32. cd ~/esp/esp-idf ./install.sh esp32
sau cu fișierul Fish shell cd ~/esp/esp-idf ./install.fish esp32
Comenzile de mai sus instalează instrumente doar pentru ESP32. Dacă intenționați să dezvoltați proiecte pentru mai multe cipuri, atunci ar trebui să le listați pe toate și să le rulați, de exemplu.ampfișier: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
sau cu fișierul Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
Pentru a instala instrumentele pentru toate țintele acceptate, vă rugăm să executați următoarea comandă: cd ~/esp/esp-idf ./install.sh all
sau cu fișierul Fish shell cd ~/esp/esp-idf ./install.fish all
Notă: Pentru utilizatorii macOS, dacă apare o eroare de acest gen în timpul oricărui pas:urleroare de deschidere [SSL: CERTIFICATE_VERIFY_FAILED] verificare certificat eșuată: imposibil de obținut certificatul emitentului local (_ssl.c:xxx)
Puteți rula comanda Install Certificates. în folderul Python al computerului pentru a instala certificate. Pentru detalii, consultați Eroare de descărcare la instalarea instrumentelor ESP-IDF.

Alternativă File Descărcări Programul de instalare a instrumentelor descarcă o serie de fileeste atașat la versiunile GitHub. Dacă accesarea GitHub este lentă, atunci este posibil să setați o variabilă de mediu pentru a prefera serverul de descărcare Espressifns pentru descărcările de resurse GitHub.

Notă: Această setare controlează doar instrumentele individuale descărcate din versiunile GitHub, nu modifică URLeste folosit pentru a accesa orice depozit Git.

Pentru a prefera serverul de descărcare Espressif la instalarea instrumentelor, utilizați următoarea secvență de comenzi atunci când rulați install.sh:

Sisteme Espressif

37 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Personalizarea căii de instalare a instrumentelor Scripturile introduse în acest pas instalează instrumentele de compilare necesare de ESP-IDF în directorul principal al utilizatorului: $HOME/.espressif pe Linux. Dacă doriți să instalați instrumentele într-un director diferit, setați variabila de mediu IDF_TOOLS_PATH înainte de a rula scripturile de instalare. Asigurați-vă că aveți suficiente permisiuni de citire și scriere pe această cale contului de utilizator. Dacă modificați IDF_TOOLS_PATH, asigurați-vă că este setată la aceeași valoare de fiecare dată când sunt executate scriptul de instalare (install.bat, install.ps1 sau install.sh) și un script de export (export.bat, export.ps1 sau export.sh).
Pasul 4. Configurați variabilele de mediu Instrumentele instalate nu sunt încă adăugate la variabila de mediu PATH. Pentru a face instrumentele utilizabile din linia de comandă, trebuie setate anumite variabile de mediu. ESP-IDF oferă un alt script care face acest lucru. În terminalul unde veți utiliza ESP-IDF, executați:
. $HOME/esp/esp-idf/export.sh
sau pentru pești (acceptat doar de la versiunea 3.0.0 a fish):
. $HOME/esp/esp-idf/export.fish
Rețineți spațiul dintre punctul de început și cale! Dacă intenționați să utilizați esp-idf frecvent, puteți crea un alias pentru executarea export.sh:
1. Copiați și lipiți următoarea comandă în fișierul dvs. shellns profile (.profile, .bashrc, .zprofile, etc.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Reîmprospătați configurația repornind sesiunea terminalului sau rulând comanda source [calea către profile],
de example, sursă ~/.bashrc. Acum puteți rula get_idf pentru a configura sau actualiza mediul esp-idf în orice sesiune de terminal. Tehnic, puteți adăuga export.sh la programul dvs. shellnsfile direct; totuși, nu este recomandat. Această acțiune activează mediul virtual IDF în fiecare sesiune de terminal (inclusiv în cele în care IDF nu este necesar), anulând scopul mediului virtual și afectând probabil alte programe software.
Pasul 5. Primii pași pe ESP-IDF Acum, deoarece toate cerințele sunt îndeplinite, următorul subiect vă va ghida cu privire la modul de începere a primului proiect. Acest ghid vă va ajuta în primii pași folosind ESP-IDF. Urmați acest ghid pentru a începe un nou proiect pe ESP32 și a construi, flasha și monitoriza ieșirea dispozitivului.
Notă: Dacă nu ați instalat încă ESP-IDF, vă rugăm să accesați Instalare și să urmați instrucțiunile pentru a obține tot software-ul necesar pentru a utiliza acest ghid.

Începeți un proiect Acum sunteți gata să vă pregătiți aplicația pentru ESP32. Puteți începe cu proiectul getstarted/hello_world din exampdirectorul les din ESP-IDF.

Important: Sistemul de compilare ESP-IDF nu acceptă spații în căile către ESP-IDF sau către proiecte.

Copiați proiectul get-started/hello_world în directorul ~/esp:

Sisteme Espressif

38 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Notă: Există o gamă de exempleample proiecte în exampdirectorul les din ESP-IDF. Puteți copia orice proiect în același mod ca cel prezentat mai sus și îl puteți rula. De asemenea, se poate construi example-uri la locul lor fără a le copia mai întâi.
Conectați dispozitivul Acum conectați placa ESP32 la computer și verificați sub ce port serial este vizibilă placa. Porturile seriale au următoarele modele de denumire:
· Linux: începând cu /dev/tty · macOS: începând cu /dev/cu. Dacă nu sunteți sigur cum să verificați numele portului serial, consultați secțiunea Stabilirea conexiunii seriale cu ESP32 pentru detalii complete.
Notă: Păstrați numele portului la îndemână, deoarece veți avea nevoie de el în pașii următori.
Configurați-vă proiectul Navigați la directorul hello_world, setați ESP32 ca țintă și rulați utilitarul de configurare a proiectului menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
După deschiderea unui proiect nou, trebuie mai întâi să setați ținta cu idf.py set-target esp32. Rețineți că versiunile și configurațiile existente în proiect, dacă există, vor fi șterse și inițializate în acest proces. Ținta poate fi salvată în variabila de mediu pentru a omite complet acest pas. Consultați Selectarea cipului țintă: set-target pentru informații suplimentare. Dacă pașii anteriori au fost parcurși corect, apare următorul meniu:

Fig. 17: Configurarea proiectului – Fereastra principală. Folosiți acest meniu pentru a configura variabile specifice proiectului, de exemplu, numele și parola rețelei Wi-Fi, viteza procesorului etc. Configurarea proiectului cu menuconfig poate fi omisă pentru hello_worldp, deoarece acest examprulează cu

Sisteme Espressif

39 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
configurația implicită.
Atenție: Dacă utilizați placa ESP32-DevKitC cu modulul ESP32-SOLO-1 sau placa ESP32-DevKitM-1 cu modulul ESP32-MIN1-1(1U), vă rugăm să activați modul single core (CONFIG_FREERTOS_UNICORE) în menuconfig înainte de a instala ex.amples.
Notă: Culorile meniului pot fi diferite în terminalul dvs. Puteți schimba aspectul cu opțiunea –style. Vă rugăm să executați comanda idf.py menuconfig –help pentru informații suplimentare.
Dacă utilizați una dintre plăcile de dezvoltare acceptate, puteți accelera dezvoltarea utilizând Pachetul de asistență pentru plăci. Consultați Sfaturi suplimentare pentru mai multe informații.
Construiți proiectul Construiți proiectul rulând:
build idf.py
Această comandă va compila aplicația și toate componentele ESP-IDF, apoi va genera bootloader-ul, tabelul de partiții și binarele aplicației.
$ idf.py build Se execută cmake în directorul /path/to/hello_world/build Se execută „cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Avertisment despre valorile neinițializate. — Git găsit: /usr/bin/git (versiunea „2.17.0” găsită) — Se construiește o componentă aws_iot goală din cauza configurației — Nume componente: … — Căi componente: …
… (mai multe linii de ieșire a sistemului de compilare)
[527/527] Se generează hello_world.bin esptool.py v2.3.1
Construcția proiectului finalizată. Pentru flashare, executați această comandă: ../../../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 sau executați „idf.py -p PORT flash”
Dacă nu există erori, construcția se va termina prin generarea firmware-ului binar .bin files.
Instalați fișierele binare pe care tocmai le-ați construit (bootloader.bin, partition-table.bin și hello_world.bin) pe placa ESP32 rulând:
idf.py -p PORT [-b BAUD] flash
Înlocuiți PORT cu numele portului serial al plăcii ESP32. De asemenea, puteți modifica rata de transfer a semnalului flasher înlocuind BAUD cu rata de transfer de care aveți nevoie. Rata de transfer implicită este 460800. Pentru mai multe informații despre argumentele idf.py, consultați idf.py.
Notă: Opțiunea flash compilează și actualizează automat proiectul, deci nu este necesară rularea idf.py build.

Sisteme Espressif

40 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți

Ați întâmpinat probleme în timpul flashării? Dacă executați comanda dată și vedeți erori precum „Failed to connectp”, pot exista mai multe motive pentru aceasta. Unul dintre motive ar putea fi problemele întâlnite de esptool.py, utilitarul apelat de sistemul de compilare pentru a reseta cipul, a interacționa cu bootloader-ul ROM și a flasha firmware-ul. O soluție simplă de încercat este resetarea manuală descrisă mai jos, iar dacă nu ajută, puteți găsi mai multe detalii despre posibilele probleme în secțiunea Depanare.
esptool.py resetează automat ESP32 prin activarea liniilor de control DTR și RTS ale cipului convertor USB-serial, de exemplu FTDI sau CP210x (pentru mai multe informații, consultați Stabilirea conexiunii seriale cu ESP32). Liniile de control DTR și RTS sunt la rândul lor conectate la pinii GPIO0 și CHIP_PU (EN) ai ESP32, modificând astfel volumul.tagNivelurile DTR și RTS vor porni ESP32 în modul de descărcare firmware. Ca exempluampAdică, verifică schema plăcii de dezvoltare ESP32 DevKitC.
În general, nu ar trebui să întâmpinați probleme cu plăcile de dezvoltare oficiale esp-idf. Cu toate acestea, esptool.py nu poate reseta automat hardware-ul în următoarele cazuri:
· Hardware-ul dvs. nu are liniile DTR și RTS conectate la GPIO0 și CHIP_PU · Liniile DTR și RTS sunt configurate diferit · Nu există astfel de linii de control serial deloc
În funcție de tipul de hardware pe care îl aveți, este posibil să puneți manual placa ESP32 în modul de descărcare a firmware-ului (resetare).
· Pentru plăcile de dezvoltare produse de Espressif, aceste informații pot fi găsite în ghidurile introductive sau în ghidurile utilizatorului respective. De exempluampAdică, pentru a reseta manual o placă de dezvoltare ESP-IDF, țineți apăsat butonul Boot (GPIO0) și apăsați butonul EN (CHIP_PU).
· Pentru alte tipuri de hardware, încercați să dezactivați GPIO0.

Funcționare normală Când clipește, veți vedea jurnalul de ieșire similar cu următorul:
… 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 Port serial /dev/ttyUSB0 Conectare…….._ Cipul este ESP32D0WDQ6 (revizia 0) Caracteristici: WiFi, BT, Dual Core, Schemă de codare Niciuna Cristalul este de 40MHz MAC: 24:0a:c4:05:b9:14 Se încarcă stub-ul… Se execută stub-ul… Stub-ul rulează… Se schimbă rata baud la 460800 Modificat. Se Configurarea dimensiunii memoriei flash… S-au comprimat 3072 octeți la 103… Se scrie la 0x00008000… (100 %) S-au scris 3072 octeți (103 comprimați) la 0x00008000 în 0.0 secunde (viteză efectivă 5962.8 kbit/s)… Hash de date verificat. S-au comprimat 26096 octeți la 15408… Se scrie la 0x00001000… (100 %) S-au scris 26096 octeți (15408 comprimați) la 0x00001000 în 0.4 secunde (viteză efectivă 546.7 kbit/s)… Hash de date verificat. Comprimat 147104 octeți la 77364… Scriere la 0x00010000… (20 %) Scriere la 0x00014000… (40 %) Scriere la 0x00018000… (60 %) Scriere la 0x0001c000… (80 %)
(continuare pe pagina următoare)

Sisteme Espressif

41 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
(continuare de la pagina anterioară) Scriere la 0x00020000… (100 %) S-au scris 147104 octeți (77364 comprimați) la 0x00010000 în 1.9 secunde (viteză efectivă 615,5 kbit/s)… Hash de date verificat.
Plec... Resetare completă prin pinul RTS... Gata
Dacă nu există probleme până la sfârșitul procesului de flashare, placa va reporni și va porni aplicația thehello_worldp. Dacă doriți să utilizați IDE-ul Eclipse sau VS Code în loc să rulați idf.py, consultați pluginul Eclipse, extensia VSCode.
Monitorizarea ieșirii Pentru a verifica dacă ohello_worldpis rulează într-adevăr, tastați idf.py -p PORT monitor (Nu uitați să înlocuiți PORT cu numele portului serial). Această comandă lansează aplicația IDF Monitor:
$ idf.py -p monitor Rularea comenzii idf_monitor în directorul […]/esp/hello_world/build Executarea comenzii „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf”… — idf_monitor pornit 115200 —– Ieșire: Ctrl+] | Meniu: Ctrl+T | Ajutor: Ctrl+T urmat de Ctrl+H –ets 8 iunie 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 iunie 2016 00:22:57 …
După ce jurnalele de pornire și de diagnosticare se derulează în sus, ar trebui să vedeți mesajul „Hello world!” imprimat de aplicație.
... Salut lume! Repornire în 10 secunde... Acesta este un cip esp32 cu 2 nuclee CPU, WiFi/BT/BLE, revizia 1 din silicon, memorie flash externă de 2 MB Dimensiune minimă a memoriei heap libere: 298968 octeți Repornire în 9 secunde... Repornire în 8 secunde... Repornire în 7 secunde...
Pentru a ieși din monitorizarea IDF, folosiți comanda rapidă Ctrl+]. Dacă monitorizarea IDF eșuează la scurt timp după încărcare sau dacă, în loc de mesajele de mai sus, vedeți mesaje aleatorii similare cu cele de mai jos, placa dvs. utilizează probabil un cristal de 26 MHz. Majoritatea plăcilor de dezvoltare utilizează 40 MHz, așa că ESP-IDF folosește această frecvență ca valoare implicită.

Dacă aveți o astfel de problemă, faceți următoarele:
1. Ieșiți din monitor. 2. Reveniți la meniul de configurare. 3. Accesați Configurare componente > Setări hardware > Configurare XTAL principală > XTAL principal
frecvența, apoi modificați CONFIG_XTAL_FREQ_SEL la 26 MHz. 4. După aceea, compilați și actualizați din nou aplicația.

Sisteme Espressif

42 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
În versiunea actuală a ESP-IDF, principalele frecvențe XTAL suportate de ESP32 sunt următoarele:
· 26 MHz · 40 MHz
Notă: Puteți combina construirea, flashing-ul și monitorizarea într-un singur pas rulând: idf.py -p PORT flash monitor
Vedeți și: · Monitor IDF pentru comenzi rapide utile și mai multe detalii despre utilizarea monitorului IDF. · idf.py pentru o referință completă a comenzilor și opțiunilor idf.py.
Asta e tot ce ai nevoie pentru a începe să folosești ESP32! Acum ești gata să încerci și alte exemple.amplese sau treceți direct la dezvoltarea propriilor aplicații.
Important: Unele dintre fosteampȘierele nu suportă ESP32 deoarece hardware-ul necesar nu este inclus în ESP32, deci nu poate fi suportat. Dacă se construiește un example, vă rugăm să verificați fișierul README file pentru tabelul Ținte acceptate. Dacă acesta este prezent, inclusiv ținta ESP32, sau tabelul nu există deloc, exampVa funcționa pe ESP32.
Sfaturi suplimentare
Probleme de permisiuni /dev/ttyUSB0 În cazul unor distribuții Linux, este posibil să primiți mesajul de eroare „Eșuat la deschiderea portului /dev/ttyUSB0” la instalarea ESP32. Această problemă poate fi rezolvată prin adăugarea utilizatorului curent la grupul de dialout.
Compatibilitate cu Python ESP-IDF acceptă Python 3.7 sau o versiune mai nouă. Se recomandă actualizarea sistemului de operare la o versiune recentă care îndeplinește această cerință. Alte opțiuni includ instalarea Python din surse sau utilizarea unui sistem de gestionare a versiunilor Python, cum ar fi pyenv.
Începeți cu pachetul de asistență pentru plăci de dezvoltare. Pentru a accelera prototiparea pe unele plăci de dezvoltare, puteți utiliza pachete de asistență pentru plăci de dezvoltare (BSP), care fac inițializarea unei anumite plăci la fel de ușoară ca câteva apeluri de funcții. Un BSP acceptă de obicei toate componentele hardware furnizate pe placa de dezvoltare. În afară de definirea pinilor și funcțiile de inițializare, un BSP este livrat cu drivere pentru componentele externe, cum ar fi senzori, afișaje, codecuri audio etc. BSP-urile sunt distribuite prin intermediul IDF Component Manager, astfel încât pot fi găsite în IDF Component Registry. Iată un exemplu.ampUn exemplu de adăugare a ESP-WROVER-KIT BSP la proiectul dvs.: idf.py add-dependency esp_wrover_kit
Mai mult exampMai puține exemple de utilizare a BSP pot fi găsite în exemplul BSPampfolderul les.
Sfat: Actualizarea ESP-IDF Se recomandă actualizarea ESP-IDF periodic, deoarece versiunile mai noi corectează erori și/sau oferă funcții noi. Rețineți că fiecare versiune majoră și minoră a ESP-IDF are o perioadă de asistență asociată, iar atunci când o ramură de lansare se apropie de sfârșitul ciclului de viață (EOL), toți utilizatorii sunt încurajați să își actualizeze proiectele la versiuni ESP-IDF mai recente. Pentru a afla mai multe despre perioadele de asistență, consultați Versiunile ESP-IDF.

Sisteme Espressif

43 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 1. Începeți
Cea mai simplă metodă de a face actualizarea este să ștergeți folderul esp-idf existent și să îl clonați din nou, ca și cum ați efectua instalarea inițială descrisă la Pasul 2. Obțineți ESP-IDF. O altă soluție este să actualizați doar ceea ce s-a modificat. Procedura de actualizare depinde de versiunea de ESP-IDF pe care o utilizați. După actualizarea ESP-IDF, executați din nou scriptul Instalare, în cazul în care noua versiune de ESP-IDF necesită versiuni diferite de instrumente. Consultați instrucțiunile de la Pasul 3. Configurați instrumentele. După ce noile instrumente sunt instalate, actualizați mediul utilizând scriptul Export. Consultați instrucțiunile de la Pasul 4. Configurați variabilele de mediu.
Documente similare · Stabilirea unei conexiuni seriale cu ESP32 · Plugin Eclipse · Extensie VSCode · Monitor IDF
1.4 Construiește-ți primul proiect
Dacă aveți deja ESP-IDF instalat și nu utilizați IDE, puteți construi primul proiect din linia de comandă, urmând comanda Start a Project on Windows sau Start a Project on Linux and macOS.
1.5 Dezinstalarea ESP-IDF
Dacă doriți să eliminați ESP-IDF, urmați pașii Dezinstalare ESP-IDF.

Sisteme Espressif

44 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 2
Referință API
2.1 Convenții API
Acest document descrie convențiile și ipotezele comune interfețelor de programare a aplicațiilor (API-uri) ESP-IDF. ESP-IDF oferă mai multe tipuri de interfețe de programare:
· Funcții C, structuri, enumări, definiții de tip și macrocomenzi preprocesor declarate în antetul public filecomponente ESPIDF. Diverse pagini din secțiunea Referințe API a ghidului de programare conțin descrieri ale acestor funcții, structuri și tipuri.
· Funcții de sistem de compilare, variabile predefinite și opțiuni. Acestea sunt documentate în ghidul sistemului de compilare. · Opțiunile Kconfig pot fi utilizate în cod și în sistemul de compilare (CMakeLists.txt) fileInstrumentele gazdă și parametrii acestora din linia de comandă fac parte, de asemenea, din interfața ESP-IDF. ESP-IDF constă din componente scrise special pentru ESP-IDF, precum și pentru biblioteci terțe. În unele cazuri, la biblioteca terță se adaugă un wrapper specific ESP-IDF, oferind o interfață care este fie mai simplă, fie mai bine integrată cu restul facilităților ESP-IDF. În alte cazuri, API-ul original al bibliotecii terțe este prezentat dezvoltatorilor de aplicații. Secțiunile următoare explică unele dintre aspectele API-urilor ESP-IDF și utilizarea acestora.
2.1.1 Tratarea erorilor
Majoritatea API-urilor ESP-IDF returnează coduri de eroare definite cu tipul esp_err_t. Consultați secțiunea Gestionarea erorilor pentru mai multe informații despre abordările de gestionare a erorilor. Referința codurilor de eroare conține lista codurilor de eroare returnate de componentele ESP-IDF.
2.1.2 Structuri de configurare
Important: Inițializarea corectă a structurilor de configurare este o parte importantă în compatibilitatea aplicației cu versiunile viitoare de ESP-IDF.
Majoritatea funcțiilor de inițializare sau configurare din ESP-IDF iau ca argument un pointer către o structură de configurare. De exempluamppe:
45

Capitolul 2. Referință API

const esp_timer_create_args_t argumentele_timerului_meu = { .callback = &callback_timerului_meu, .arg = arg_callback, .name = „timerul_meu”
}; esp_timer_handle_t cronometrul_meu; esp_err_t err = esp_timer_create(&argumentele_cronometrului_meu, &cronometrul_meu);
Funcțiile de inițializare nu stochează niciodată pointerul către structura de configurare, deci este sigur să alocați structura pe stivă.
Aplicația trebuie să inițializeze toate câmpurile structurii. Următoarele sunt incorecte:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Incorect! Câmpurile .arg și .name nu sunt inițializate */ esp_timer_create(&my_timer_args, &my_timer);
Majoritatea ex-urilor ESP-IDFampȘierele folosesc inițializatori desemnați de C99 pentru inițializarea structurii, deoarece oferă o modalitate concisă de a seta un subset de câmpuri și de a inițializa la zero câmpurile rămase:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Corect, câmpurile .arg și .name sunt inițializate cu zero */
};
Limbajul C++ nu acceptă sintaxa inițializatorilor desemnați până la C++ 20, însă compilatorul GCC îl acceptă parțial ca extensie. Când utilizați API-uri ESP-IDF în cod C++, puteți lua în considerare utilizarea următorului model:
esp_timer_create_args_t my_timer_args = {}; /* Toate câmpurile sunt inițializate cu zero */ my_timer_args.callback = &my_timer_callback;

Inițializatoare implicite
Pentru unele structuri de configurare, ESP-IDF oferă macrocomenzi pentru setarea valorilor implicite ale câmpurilor:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG se extinde la un inițializator desemnat.
Acum toate câmpurile sunt setate la valorile implicite. Orice câmp poate fi modificat în continuare: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Se recomandă utilizarea macrocomenzilor de inițializare implicite ori de câte ori acestea sunt furnizate pentru o anumită structură de configurare.

2.1.3 API-uri private
Anumite anteturi files din ESP-IDF conțin API-uri destinate a fi utilizate doar în codul sursă ESP-IDF și nu de către aplicații. Un astfel de antet files conțin adesea private sau esp_private în nume sau cale. Anumite componente, cum ar fi hal, conțin doar API-uri private. API-urile private pot fi eliminate sau modificate într-un mod incompatibil între versiuni minore sau de patch-uri.

2.1.4 Componente în example proiecte
ESP-IDF exampȘierele conțin o varietate de proiecte care demonstrează utilizarea API-urilor ESP-IDF. Pentru a reduce duplicarea codului în exampcâteva instrumente ajutătoare comune sunt definite în interiorul componentelor care sunt utilizate de mai multe exempleamples.

Sisteme Espressif

46 Trimiteți feedback despre document

Versiunea v5.0.9

Capitolul 2. Referință API
Aceasta include componente situate

Documente/Resurse

Placă de dezvoltare Espressif Systems ESP32 Dev Kitc [pdfGhid de utilizare
Placă de dezvoltare ESP32 Dev Kitc, ESP32, Placă de dezvoltare Dev Kitc, Placă de dezvoltare Kitc, Placă de dezvoltare, Placă

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *