„Espressif Systems ESP32 Dev Kitc“ kūrimo plokštės naudotojo vadovas

ESP32 Dev Kitc kūrimo plokštė

Informacija apie produktą

Specifikacijos

  • Produktas: ESP32
  • Programavimo vadovas: ESP-IDF
  • Išleidimo versija: v5.0.9
  • Gamintojas: Espressif Systems
  • Išleidimo data: 16 m. gegužės 2025 d

Produkto naudojimo instrukcijos

1. Pradėkite

Prieš pradėdami naudoti ESP32, susipažinkite su
sekantis:

1.1 Įvadas

Sužinokite apie pagrindines funkcijas ir galimybes
ESP32.

1.2 Ko jums reikia

Įsitikinkite, kad turite reikiamą aparatinę ir programinę įrangą:

  • Techninė įranga: Patikrinkite reikalingos įrangos sąrašą
    komponentai.
  • Programinė įranga: Įdiekite reikiamą programinę įrangą
    komponentai.

1.3 diegimas

Norėdami įdiegti IDE ir nustatyti, atlikite šiuos veiksmus
aplinka:

  • IDE: Įdiekite rekomenduojamą IDE, skirtą
    ESP32 programavimas.
  • Rankinis montavimas: Rankiniu būdu nustatykite
    aplinka, jei reikia.

1.4 Sukurkite savo pirmąjį projektą

Sukurkite ir statykite savo pradinį projektą naudodami ESP32.

1.5 ESP-IDF pašalinimas

Jei reikia, sužinokite, kaip pašalinti ESP-IDF iš savo
sistema.

2. API nuoroda

Išsamesnės informacijos ieškokite API dokumentacijoje
programų protokolai, klaidų tvarkymas ir konfigūracija
struktūros.

Dažnai užduodami klausimai (DUK)

K: Kaip išspręsti dažniausiai pasitaikančias ESP32 problemas?

A: Žr. programavimo vadovo trikčių šalinimo skyrių.
arba kreipkitės į gamintoją webpalaikymo išteklių svetainė.

K: Ar galiu naudoti ESP-IDF su kitais mikrovaldikliais?

A: ESP-IDF yra specialiai sukurtas ESP32, bet galite pastebėti, kad
Suderinamumas su kitais „Espressif“ mikrovaldikliais.

ESP32
ESP-IDF programavimo vadovas
„Espressif Systems“ 5.0.9 versijos leidimas, 2025 m. gegužės 16 d.

Turinys

Turinys

i

1 Pradėkite

3

1.1 Įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Ko jums reikia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Aparatinė įranga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 Programinė įranga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 Įrengimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

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

1.3.2 Rankinis diegimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4 Sukurkite savo pirmąjį projektą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.5 ESP-IDF pašalinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 API nuoroda

45

2.1 API konvencijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.1 Klaidų tvarkymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.2 Konfigūracijos struktūros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.3 Privačios API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.4 Komponentai example projektai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.5 API stabilumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.2 Taikymo protokolai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.1 ASIO prievadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

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

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

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

2.2.5 ESP HTTP klientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.2.6 Vietinis ESP valdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.2.7 ESP nuoseklusis pavaldinio ryšys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

2.2.8 ESP x509 sertifikatų paketas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.2.9 HTTP serveris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.2.10 HTTPS serveris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.2.11 ICMP aidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.2.12 mDNS paslauga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

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

2.2.14 IP tinklo sluoksnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3 „Bluetooth“ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.1 „Bluetooth®“ bendrasis ryšys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.2 „Bluetooth®“ mažai energijos naudojantis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

2.3.3 „Bluetooth® Classic“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

2.3.4 Valdiklis ir HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

2.3.5 ESP-BLE-TINKLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2.3.6 „NimBLE“ pagrįstos pagrindinių kompiuterių API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

2.4 Klaidų kodų nuoroda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

2.5 Tinklo API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.1 „Wi-Fi“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.2 Eternetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

2.5.3 Sriegis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

i

2.5.4 ESP-NETIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP tinklo sluoksnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Taikomųjų programų lygmuo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 Periferinių įrenginių API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Analoginio-skaitmeninio keitiklio (ADC) vieno kadro režimo tvarkyklė. . . . . . . . . . . . . . . . . 977 2.6.2 Analoginio-skaitmeninio keitiklio (ADC) nuolatinio režimo tvarkyklė. . . . . . . . . . . . . . . 986 2.6.3 Analoginio-skaitmeninio keitiklio (ADC) kalibravimo tvarkyklė. . . . . . . . . . . . . . . . . . . 993 2.6.4 Laikrodžių medis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Skaitmeninis-analoginis keitiklis (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO ir RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Bendrosios paskirties laikmatis (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Integrinė grandinė (I2C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Garsas tarp IC (I2S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 Skystųjų kristalų ekranas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Šviesos diodų valdymas (LEDC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Variklio valdymo impulsų pločio moduliatorius (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Impulsų skaitiklis (PCNT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Nuotolinio valdymo siųstuvas-imtuvas (RMT). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 SD prisitraukimų reikalavimai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 SDMMC pagrindinio kompiuterio tvarkyklė. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 SD SPI pagrindinio kompiuterio tvarkyklė. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 SDIO plokštės pavaldinio tvarkyklė. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Sigma-Delta moduliacija (SDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 SPI pagrindinio valdiklio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 SPI pavaldinio tvarkyklė. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (saugus elementas). . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Jutiklinis jutiklis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Dviejų laidų automobilinė sąsaja (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Universalus asinchroninis imtuvas-siųstuvas (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Projekto konfigūracija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Įvadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Projekto konfigūracijos meniu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 „sdkconfig.defaults“ naudojimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 „Kconfig“ formatavimo taisyklės. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 „Kconfig“ parinkčių atgalinis suderinamumas. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Konfigūracijos parinkčių nuoroda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 Aprūpinimo API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Protokolinis bendravimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Vieningas aprūpinimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 „Wi-Fi“ aprūpinimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 Saugyklos API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSistemos palaikymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Gamybos programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Nepastoviosios atminties biblioteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 NVS skaidinių generatoriaus programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 SD/SDIO/MMC tvarkyklė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI „Flash“ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS Filesistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtuali filesistemos komponentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 Dėvėjimosi išlyginimo API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 Sistemos API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Programos vaizdo formatas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Programos lygio sekimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Iškvietimo funkcija su išoriniu steku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Lusto versija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Konsolė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 „eFuse“ tvarkyklė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Klaidų kodai ir pagalbinės funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Įvykių ciklo biblioteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 „FreeRTOS“ (viršview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 „FreeRTOS“ (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 „FreeRTOS“ (papildomos funkcijos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Dinaminės atminties paskirstymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Dinaminės atminties derinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Didelės raiškos laikmatis (ESP laikmatis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 Vidinės ir nestabilios API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Tarpprocesorinis iškvietimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Pertraukimų paskirstymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Registravimo biblioteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 Įvairios sistemos API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Atnaujinimai belaidžiu būdu (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Našumo monitorius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Energijos valdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 POSIX gijų palaikymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Atsitiktinių skaičių generavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Miego režimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Sistemos rinkinio galimybės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Sistemos laikas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 Hiem paskirstymo API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 ULP koprocesorių programavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Sarginiai šunys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161

3 Aparatinės įrangos nuoroda

2167

3.1 Lustų serijų palyginimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167

3.1.1 Susiję dokumentai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170

4 API vadovai

2171

4.1 Taikomojo lygio sekimo biblioteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.1 Baigtaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.2 Veikimo režimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.3 Konfigūracijos parinktys ir priklausomybės . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 Kaip naudotis šia biblioteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173

4.2 Programos paleidimo srautas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181

4.2.1 Pirmosios stage įkrovos įkrovos programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.2 sekundės stage įkrovos įkrovos programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.3 Programos paleidimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183

4.3 „Bluetooth® Classic“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 Baigtaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.4 „Bluetooth®“ mažai energijos naudojantis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.1 Baigtaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.2 Pradžia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191

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

4.5 Paleidimo įkrovos programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 Paleidimo įkrovos programos suderinamumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.2 Žurnalo lygis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.3 Gamyklinių parametrų atkūrimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.4 Paleidimas iš bandomosios programinės įrangos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.5 Atšaukimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 Sarginis šuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.7 Paleidimo įkrovos programos dydis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.8 Greitas paleidimas iš gilaus miego režimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.9 Pasirinktinis įkrovos įkroviklis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.6 Sukūrimo sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.1 Baigtaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.2 Sukūrimo sistemos naudojimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289

iii

4.6.3 Pvzample Projektas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Projekto CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Komponentų CMakeList sąrašai Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Komponentų konfigūracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Išankstinio apdorojimo apibrėžimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Komponentų reikalavimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Viršijančios projekto dalys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Tik konfigūracijai skirti komponentai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 CMake derinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Pvz.ample komponentų CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Pasirinktinės sdkconfig numatytosios vertės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 „Flash“ argumentai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Paleidimo įkrovos programos kūrimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Grynų „CMake“ komponentų rašymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Trečiųjų šalių „CMake“ projektų naudojimas su komponentais . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Iš anksto sukurtų bibliotekų naudojimas su komponentais . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 ESP-IDF naudojimas pasirinktiniuose CMake projektuose . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 ESP-IDF CMake kūrimo sistemos API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Globingas ir prieauginis kompiliavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Sistemos metaduomenų kompiliavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Sistemos vidinių komponentų kompiliavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Migracija iš ESP-IDF GNU Make System . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Pagrindinių duomenų išklotinė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Viršytaview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Konfigūracijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Pagrindinių duomenų išklotinės išsaugojimas „flash“ atmintyje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Spausdinimo pagrindinio turinio išklotinė į UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 ROM funkcijos atgaliniuose pėdsakuose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Kintamųjų išklotinė pagal poreikį . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 „espcoredump.py“ vykdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Gilaus miego pažadinimo įrašai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Pažadinimo įrašų taisyklės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Įdubimo įdiegimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Kodo įkėlimas į RTC atmintį . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Duomenų įkėlimas į RTC atmintį . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 CRC žadinimo kodų patikrinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Klaidų apdorojimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Viršview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Klaidų kodai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Klaidų kodų konvertavimas į klaidų pranešimus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 ESP_ERROR_CHECK makrokomanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 ESP_ERROR_CHECK_WITHOUT_ABORT makrokomanda . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 ESP_RETURN_ON_ERROR makrokomanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 ESP_GOTO_ON_ERROR makrokomanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 ESP_RETURN_ON_FALSE makrokomanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 ESP_GOTO_ON_FALSE makrokomanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 PATIKRINTI MAKROKOMANDAS Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Klaidų tvarkymo šablonai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 C++ išimtys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Viršview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 ESP-WIFI-MESH koncepcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Tinklo kūrimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Tinklo valdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Duomenų perdavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Kanalų perjungimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv

4.10.8 Našumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Papildomos pastabos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Įvykių apdorojimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 „Wi-Fi“, eterneto ir IP įvykiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Tinklo įvykiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 „Bluetooth“ įvykiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Lemtingos klaidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Viršview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Panikos valdymas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Registrų išvedimas ir sekimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB fragmentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 RTC sarginio šuns skirtasis laikas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Guru meditacijos klaidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Kitos kritinės klaidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 „Flash“ šifravimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Įvadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Svarbūs eFuse'ai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 „Flash“ šifravimo procesas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 „Flash“ šifravimo konfigūracija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Galimi gedimai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 ESP32 „Flash“ šifravimo būsena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Duomenų skaitymas ir rašymas į užšifruotą „flash“ atmintinę. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Užšifruotos „Flash“ atminties atnaujinimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 „Flash“ šifravimo išjungimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Svarbiausi dalykai apie „Flash“ šifravimą. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 „Flash“ šifravimo apribojimai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 „Flash“ šifravimas ir saugus įkrovimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Išplėstinės funkcijos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Techninės detalės. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Aparatinės įrangos abstrakcija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Architektūra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 LL (žemo lygio) sluoksnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (aparatinės įrangos abstrakcijos sluoksnis) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Aukšto lygio pertraukimai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Pertraukčių lygiai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Pastabos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Derinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Kaip tai veikia? . . . . . . . . . . . . . . . . . . . 2379 4.16.3 J pasirinkimasTAG Adapteris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 „OpenOCD“ sąranka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 ESP32 paskirties konfigūravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Derintuvo paleidimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Derinimo pavyzdysamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 „OpenOCD“ kūrimas iš šaltinio kodų . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Patarimai ir subtilybės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Susiję dokumentai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Susiejimo scenarijaus generavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Viršview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Greitas paleidimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Susiejimo scenarijaus generavimo vidinės funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 Palaikomos API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 BSD Sockets API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 „Netconn“ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 „lwIP FreeRTOS“ užduotis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 IPv6 palaikymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 „esp-lwip“ pasirinktiniai pakeitimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v

4.18.7 Našumo optimizavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Atminties tipai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (duomenų RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (instrukcijų RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (kodas vykdomas iš „flash“ atminties) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (duomenys saugomi „flash“ atmintyje) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 RTC lėta atmintis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 RTC FAST atmintis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 DMA palaikymo reikalavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 DMA buferis steke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 „OpenThread“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 „OpenThread“ steko režimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Kaip parašyti „OpenThread“ programą . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 „OpenThread“ pasienio maršrutizatorius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Skirsnių lentelės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Viršview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Integruotos skaidinių lentelės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Pasirinktinių lentelių kūrimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Dvejetainės skaidinio lentelės generavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Skaičiaus dydžio patikrinimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Skaičiaus lentelės mirksėjimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Skirsčių įrankis (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Našumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Kaip optimizuoti našumą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Vadovai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 RF kalibravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Dalinis kalibravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Pilnas kalibravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Be kalibravimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 FHY inicializavimo duomenys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 API nuoroda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Saugus įkrovimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Fonas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Saugaus įkrovimo procesasview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Raktai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Pakrovėjo dydis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 Kaip įjungti saugų paleidimą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Pakartotinai mirksintis programinės įrangos paleidimo įkrovos programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Saugaus paleidimo pasirašymo rakto generavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Nuotolinis vaizdų pasirašymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Saugaus įkrovos geriausia praktika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Techninės detalės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Saugus įkrovimas ir „Flash“ šifravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Pasirašytų programėlių patvirtinimas be aparatinės įrangos. Saugus įkrovimas . . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 Išplėstinės funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Saugus įkrovimas V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Fonas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Išplėstinėtages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Saugaus įkrovimo V2 procesas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Parašo bloko formatas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Saugus užpildymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Parašo bloko tikrinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Vaizdo tikrinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Paleidimo įkrovos programos dydis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 „eFuse“ naudojimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Kaip įjungti saugų paleidimą V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Apribojimai įjungus saugų įkrovimą . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Saugaus įkrovimo pasirašymo rakto generavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi

4.25.13 Nuotolinis vaizdų pasirašymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Saugaus įkrovos geriausia praktika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Techninės detalės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Saugus įkrovimas ir „Flash“ šifravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Pasirašytų programėlių patvirtinimas be aparatinės įrangos. Saugus įkrovimas . . . . . . . . . . . . . . . . . . . . . 2484 4.25.18 Išplėstinės funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Išorinės RAM palaikymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Aparatinė įranga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Išorinės RAM konfigūravimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Apribojimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Nepavyksta inicijuoti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Lustų versijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Gijų vietinė saugykla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Daugiauview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 „FreeRTOS“ gimtoji API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 „Pthread“ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 Standartas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 Įrankiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 IDF priekinė dalis – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 IDF „Docker“ atvaizdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 IDF „Windows“ diegimo programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 IDF komponentų tvarkyklė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF „Clang Tidy“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Atsisiunčiami įrankiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Vienetų testavimas ESP32 kalba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Įprasti testų atvejai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Kelių įrenginių testavimo atvejai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Kelių įrenginių testavimastage Bandomieji atvejai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Testai skirtingiems taikiniams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Pastato blokų testavimo programėlė. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Vienetų testų vykdymas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Laiko kodas su talpyklos kompensuojamu laikmačiu. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Juokingi variantai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Vienetų testavimas Linux sistemoje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Įterptosios programinės įrangos testai. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 IDF vienetų testavimas „Linux“ pagrindiniame kompiuteryje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 „Wi-Fi“ tvarkyklė. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 ESP32 „Wi-Fi“ funkcijų sąrašas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Kaip parašyti „Wi-Fi“ programą. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 ESP32 „Wi-Fi“ API klaidos kodas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 ESP32 „Wi-Fi“ API parametrų inicijavimas. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 ESP32 „Wi-Fi“ programavimo modelis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 ESP32 „Wi-Fi“ įvykio aprašymas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 ESP32 „Wi-Fi“ stoties bendrasis scenarijus. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 ESP32 „Wi-Fi“ prieigos taško bendrasis scenarijus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 „Wi-Fi“ nuskaitymas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 ESP32 „Wi-Fi“ stoties prijungimo scenarijus. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 ESP32 „Wi-Fi“ stotelės prisijungimas, kai randami keli prieigos taškai. . . . . . . . . . . . . 2543 4.31.12 Pakartotinis „Wi-Fi“ prisijungimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 „Wi-Fi“ švyturėlio skirtasis laikas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 ESP32 „Wi-Fi“ konfigūracija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 „Wi-Fi Easy Connect™“ (DPP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Belaidžio tinklo valdymas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Radijo išteklių matavimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Greitas BSS perėjimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 „Wi-Fi“ energijos taupymo režimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 ESP32 „Wi-Fi“ pralaidumas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii

4.31.21 „Wi-Fi 80211“ paketų siuntimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 „Wi-Fi“ šnipinėjimo režimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 „Wi-Fi“ kelios antenos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 „Wi-Fi“ kanalo būsenos informacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 „Wi-Fi“ kanalo būsenos informacija. Konfigūruoti . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 „Wi-Fi HT20/40“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 Wi-Fi QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 „Wi-Fi“ fragmentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 WPS registratorius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 „Wi-Fi“ buferio naudojimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Kaip pagerinti „Wi-Fi“ našumą . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 „Wi-Fi“ meniu konfigūracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Trikčių šalinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 „Wi-Fi“ saugumas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 ESP32 „Wi-Fi“ saugumo funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Apsaugoti valdymo rėmeliai (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 „WiFi Enterprise“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 „WPA3-Personal“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 „Wi-Fi Enhanced OpenTM“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 RF sambūvis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Viršview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Palaikomas sambūvio scenarijus ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Sambūvio mechanizmas ir politika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Kaip naudoti sambūvio funkciją . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Atkuriami kompiliavimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Neatkuriamų komponavimo versijų priežastys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Atkuriamų komponavimo versijų įjungimas ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Kaip pasiekiamos atkuriamos komponavimo versijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Atkuriamos kompiliacijos ir derinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Veiksniai, kurie vis dar turi įtakos atkuriamoms kompiliacijoms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Mažos energijos sąnaudos režimo naudotojo vadovas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578

5 migracijos vadovai

2579

5.1 ESP-IDF 5.x perkėlimo vadovas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

5.1.1 Migracija iš 4.4 į 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

6 bibliotekos ir sistemos

2611

6.1 Debesų kompiuterijos sistemos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.1 ESP „RainMaker“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.2 AWS daiktų internetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.3 „Azure“ daiktų internetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.4 „Google IoT Core“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.5 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.6 „Joylink“ daiktų internetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.7 „Tencent“ daiktų internetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.8 „Tencentyun“ daiktų internetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.9 „Baidu“ daiktų internetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2 „Espressions“ karkasai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.1 „Espressif“ garso kūrimo sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

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

6.2.3 „Espressif“ DSP biblioteka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.4 ESP-WIFI-MESH kūrimo sistema . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-PSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.6 ESP „RainMaker“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.7 ESP-IoT-sprendimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.8 ESP protokolai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

viii

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

7 Įnašų vadovas

2615

7.1 Kaip prisidėti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.2 Prieš prisidedant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.3 Užklausų ištraukimo procesas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.4 Teisinė dalis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5 Susiję dokumentai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.1 „Espressif“ daiktų interneto kūrimo platformos stiliaus vadovas . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.2 Įdiegti išankstinio patvirtinimo kablį ESP-IDF projektui . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 Kodo dokumentavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624

7.5.4 Ex kūrimasamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629

7.5.5 API dokumentacijos šablonas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 Bendradarbio sutartis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632

7.5.7 Autorių teisių antraštės vadovas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634

7.5.8 ESP-IDF testai su „Pytest“ vadovu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635

8 ESP-IDF versijos

2645

8.1 Leidimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.2 Nuo kurios versijos turėčiau pradėti? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.3 Versijų schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.4 Palaikymo laikotarpiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646

8.5 Dabartinės versijos tikrinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647

8.6 „Git“ darbo eiga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 ESP-IDF atnaujinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7.1 Atnaujinimas į stabilią versiją . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.2 Atnaujinimas į išankstinę versiją . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.3 Atnaujinimas į pagrindinę šaką . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.4 Atnaujinimas į leidimo šaką . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650

9 Ištekliai

2651

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

9.1.1 Kas yra „PlatformIO“? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.2 Įrengimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.3 Konfigūracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.4 Mokymai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.5 Projekto pavyzdysamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 Tolesni žingsniai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 Naudingos nuorodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

10 Autorių teisės ir licencijos

2653

10.1 Programinės įrangos autorių teisės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.1 Programinės-aparatinės įrangos komponentai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.2 Dokumentacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.2 ROM šaltinio kodo autorių teisės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.3 Xtensa libhal MIT licencija. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.4 TinyBasic Plus MIT licencija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.5 „TJpgDec“ licencija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 Apie

2657

12 Perjungti kalbas

2659

Rodyklė

2661

Rodyklė

2661

ix

x

Turinys
Tai yra „Espressif IoT Development Framework“ (esp-idf) dokumentacija. ESP-IDF yra oficiali ESP32, ESP32-S ir ESP32-C serijos lustų rinkinių (SoC) kūrimo sistema. Šiame dokumente aprašomas ESP-IDF naudojimas su ESP32 lustų rinkiniu.

Pradėkite

API nuoroda

API vadovai

Espressif sistemos

1 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

Turinys

Espressif sistemos

2 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius
Pradėkite
Šis dokumentas skirtas padėti jums sukurti programinės įrangos kūrimo aplinką aparatinei įrangai, pagrįstai „Espressif“ ESP32 lustu. Po to atliekamas paprastas egzemplioriusampParodysime, kaip naudoti ESP-IDF („Espressif IoT Development Framework“) meniu konfigūravimui, o tada programinės įrangos kūrimui ir diegimui ESP32 plokštėje.
Pastaba: tai yra stabilios ESP-IDF v5.0.9 versijos dokumentacija. Taip pat yra ir kitų ESP-IDF versijų.
1.1 Įvadas
ESP32 yra lustinė sistema, kurioje integruotos šios funkcijos: · „Wi-Fi“ (2.4 GHz diapazonas) · „Bluetooth“ · Du didelio našumo „Xtensa®“ 32 bitų LX6 procesoriaus branduoliai · Itin mažai energijos naudojantis koprocesorius · Keli periferiniai įrenginiai
Pagrįsta 40 nm technologija, ESP32 suteikia tvirtą, labai integruotą platformą, kuri padeda patenkinti nuolatinius efektyvaus energijos vartojimo, kompaktiško dizaino, saugumo, didelio našumo ir patikimumo poreikius. „Espressif“ teikia pagrindinius aparatinės ir programinės įrangos išteklius, padedančius programų kūrėjams įgyvendinti savo idėjas naudojant ESP32 serijos aparatinę įrangą. „Espressif“ programinės įrangos kūrimo sistema skirta daiktų interneto (IoT) programų kūrimui su „Wi-Fi“, „Bluetooth“, energijos valdymu ir keliomis kitomis sistemos funkcijomis.
1.2 Ko jums reikia
1.2.1 aparatinė įranga
· ESP32 plokštė. · USB laidas – USB A / mikro USB B. · Kompiuteris su „Windows“, „Linux“ arba „macOS“.
Pastaba: Šiuo metu kai kurios kūrimo plokštės naudoja USB C tipo jungtis. Įsitikinkite, kad turite tinkamą laidą plokštei prijungti!
Jei turite vieną iš žemiau išvardytų oficialių ESP32 kūrimo plokščių, galite spustelėti nuorodą, kad sužinotumėte daugiau apie aparatinę įrangą.
3

1 skyrius. Pradžia
ESP32-DevKitS(-R)
Šiame naudotojo vadove pateikiama informacija apie ESP32-DevKitS(-R) – „Espressif“ pagamintą ESP32 pagrindu sukurtą mirksinčią plokštę. ESP32-DevKitS(-R) yra dviejų plokščių pavadinimų derinys: ESP32-DevKitS ir ESP32-DevKitS-R. S reiškia spyruokles, o R – WROVER.

ESP32-DevKitS

ESP32-DevKitS-R

Dokumentą sudaro šios pagrindinės dalys: · Darbo pradžia: pateikiamas bendrasview „ESP32-DevKitS(-R)“ ir aparatinės bei programinės įrangos sąrankos instrukcijas, kad galėtumėte pradėti. · Aparatinės įrangos nuoroda: pateikiama išsamesnė informacija apie „ESP32-DevKitS(-R)ns“ aparatinę įrangą. · Susiję dokumentai: pateikiamos nuorodos į susijusius dokumentus.

Pradžia Šiame skyriuje aprašoma, kaip pradėti naudotis „ESP32-DevKitS(-R). Pradžioje pateikiami keli įvadiniai skyriai apie „ESP32-DevKitS(-R), o skyriuje „Kaip įdiegti plokštę“ pateikiamos instrukcijos, kaip prijungti modulį prie „ESP32-DevKitS(-R), jį paruošti ir įdiegti programinę-aparatinę įrangą.

Baigėsiview „ESP32-DevKitS(-R)“ yra „Espressifns“ mirksinčios plokštės, specialiai sukurtos „ESP32“. Ja galima mirksėti ESP32 moduliui nelituojant jo prie maitinimo šaltinio ir signalo linijų. Sumontavus modulį, „ESP32-DevKitS(-R)“ taip pat galima naudoti kaip mini kūrimo plokštę, tokią kaip „ESP32-DevKitC“.
ESP32-DevKitS ir ESP32-DevKitS-R plokštės skiriasi tik spyruoklinių kaiščių išdėstymu, kad tilptų į šiuos ESP32 modulius.
· ESP32-DevKitS: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (spausdintinė plokštė ir IPEX) ESP32-WROVER-B (spausdintinė plokštė ir IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Informacijos apie aukščiau nurodytus modulius ieškokite ESP32 serijos moduliuose.

Komponentų aprašymas

Espressif sistemos

4 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

1 pav.: ESP32-DevKitS – priekis

Espressif sistemos

2 pav.: ESP32-DevKitS-R – priekinė dalis 5
Pateikite atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

Pagrindinių komponentų spyruokliniai kaiščiai, 2.54 mm moteriškos jungtys
USB-UART tiltas LDO Micro USB jungtis / Micro USB prievadas EN mygtukas Įkrovos mygtukas
Maitinimo šviesos diodas

Aprašymas Įstatykite modulį. Kaiščiai tilps į modulio išdrožas. Šios „female“ tipo jungtys jungiamos prie šioje plokštėje sumontuoto modulio kaiščių. „Features“ tipo jungčių aprašymą rasite skyriuje „Antraštės blokai“. Vieno lusto USB–UART tiltas užtikrina iki 3 Mbps perdavimo greitį.
5 V–3.3 V mažo iškrovimo garsumastage reguliatorius (LDO).
USB sąsaja. Maitinimo šaltinis plokštei, taip pat ryšio sąsaja tarp kompiuterio ir plokštės.
Atstatyti mygtukas.
Atsisiuntimo mygtukas. Laikant nuspaustą „Boot“ ir paspaudus EN, įjungiamas programinės įrangos atsisiuntimo režimas, skirtas programinės įrangos atsisiuntimui per nuoseklųjį prievadą.
Įsijungia, kai prie plokštės prijungiamas USB arba maitinimo šaltinis.

Kaip atnaujinti plokštę Prieš įjungdami ESP32-DevKitS(-R), įsitikinkite, kad ji yra geros būklės ir nėra akivaizdžių pažeidimo požymių.
Reikalinga įranga · Pasirinktas ESP32 modulis · USB 2.0 laidas (iš standartinio A į mikro B) · Kompiuteris su „Windows“, „Linux“ arba „macOS“
Aparatinės įrangos sąranka. Pritvirtinkite pasirinktą modulį prie savo ESP32-DevKitS(-R) atlikdami šiuos veiksmus:
· Atsargiai uždėkite modulį ant ESP32-DevKitS(-R) plokštės. Įsitikinkite, kad modulio išlenktos skylės sutampa su plokštės spyruokliniais kaiščiais.
· Spauskite modulį žemyn į plokštę, kol jis spragtelės. · Patikrinkite, ar visi spyruokliniai kaiščiai įstatyti į griovelius. Jei yra nesuderintų spyruoklinių kaiščių,
Įdėkite juos į iškaltas skylutes pincetu.
Programinės įrangos sąranka
Pageidaujamas metodas ESP-IDF kūrimo sistema suteikia pageidaujamą dvejetainių failų perkėlimo į ESP32-DevKitS(-R) būdą. Pereikite prie „Pradėti“, kur skyrius „Diegimas“ padės greitai nustatyti kūrimo aplinką ir perkelti programos ex.ampįkelkite jį į savo ESP32-DevKitS(-R).
Alternatyvus metodas Kaip alternatyvą, „Windows“ naudotojai gali perkelti dvejetainius failus naudodami „Flash Download Tool“. Tiesiog atsisiųskite jį, išarchyvuokite ir vykdykite instrukcijas, pateiktas aplanke „doc“.
Pastaba: 1. Dvejetainių failų mirksėjimui fileESP32 turėtų būti nustatytas į programinės įrangos atsisiuntimo režimą. Tai galima padaryti automatiškai naudojant „flash“ įrankį arba laikant nuspaustą „Boot“ mygtuką ir bakstelint EN mygtuką. 2. Po dvejetainio failo mirksėjimo file„Flash Download Tool“ iš naujo paleidžia jūsų ESP32 modulį ir pagal numatytuosius nustatymus paleidžia įdiegtą programą.

Lentos matmenys, turinys ir pakuotė

Espressif sistemos

6 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Darbo pradžia. 3 pav.: ESP32-DevKitS plokštės matmenys – galinė pusė

Espressif sistemos

4 pav.: ESP32-DevKitS-R plokštės matmenys – galinė pusė 7
Pateikite atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Mažmeninės prekybos užsakymai. Jei užsisakote kelisampKiekvienas ESP32-DevKitS(-R) tiekiamas atskiroje pakuotėje – antistatiniame maišelyje arba bet kokioje kitoje pakuotėje, priklausomai nuo mažmenininko. Norėdami pateikti užsakymus mažmeninėje prekyboje, apsilankykite https://www.espressif.com/en/contact-us/get-samples.
Didmeniniai užsakymai Jei užsakote urmu, lentos supakuojamos į dideles kartonines dėžes. Didmeninius užsakymus galite pateikti adresu https://www.espressif.com/en/contact-us/sales-questions.
Aparatinės įrangos nuoroda
Blokinė schema Žemiau pateiktoje blokinėje schemoje parodyti ESP32-DevKitS(-R) komponentai ir jų tarpusavio jungtys.

5 pav.: ESP32-DevKitS(-R) (spustelėkite, kad padidintumėte)
Maitinimo parinktys Yra trys vienas kitą paneigiantys būdai tiekti maitinimą plokštei: · „Micro USB“ prievadas, numatytasis maitinimo šaltinis · 5 V ir GND antgalio kontaktai · 3 V ir GND antgalio kontaktai
Patartina naudoti pirmąjį variantą: „micro USB“ prievadą.

Espressif sistemos

.

Etiketės signalas

L1 3V3 VDD 3V3

L2 EN CHIP_PU

L3 VP JUTIKLIS_VP

L4 VN JUTIKLIS_VN

L5 34

GPIO34

L6 35

GPIO35

L7 32

GPIO32

L8 33

GPIO33

tęsinys kitame puslapyje

8 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

1 lentelė tęsiasi iš ankstesnio puslapio

.

Etiketės signalas

L9 25

GPIO25

L10 26

GPIO26

L11 27

GPIO27

L12 14

GPIO14

L13 12

GPIO12

L14 Įžeminimas Įžeminimas

L15 13

GPIO13

L16 D2 SD_DUOMENYS2

L17 D3 SD_DUOMENYS3

L18 CMD SD_CMD

L19 5V

Išorinė 5V

R1 Įžeminimas Įžeminimas

R2 23

GPIO23

R3 22

GPIO22

R4 TX U0TXD

R5 RX U0RXD

R6 21

GPIO21

R7 Įžeminimas Įžeminimas

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_DUOMENYS1

R18 D0 SD_DUOMENYS0

R19 CLK SD_CLK

Antraštės blokai Antraščių blokų vaizdą žr. Komponentų aprašyme.

Susiję dokumentai
· ESP32-DevKitS(-R) schemos (PDF) · ESP32 duomenų lapas (PDF) · ESP32-WROOM-32 duomenų lapas (PDF) · ESP32-WROOM-32D ir ESP32-WROOM-32U duomenų lapas (PDF) · ESP32-SOLO-1 duomenų lapas (PDF) · ESP32-WROVER duomenų lapas (PDF) · ESP32-WROVER-B duomenų lapas (PDF) · ESP produkto parinkiklis

ESP32-DevKitM-1

Šis naudotojo vadovas padės jums pradėti naudotis ESP32-DevKitM-1 ir pateiks išsamesnės informacijos.
„ESP32-DevKitM-1“ yra „Espressif“ gaminama „ESP32-MINI-1(1U)“ pagrindu sukurta kūrimo plokštė. Dauguma įvesties/išvesties kontaktų yra išskelti į abiejų pusių kontaktų antgalius, kad būtų lengviau sujungti. Vartotojai gali prijungti periferinius įrenginius jungiamaisiais laidais arba montuoti „ESP32-DevKitM-1“ ant maketo.

Espressif sistemos

9 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

ESP32-DevKitM-1 – priekinė

ESP32-DevKitM-1 – izometrinis

Dokumentą sudaro šios pagrindinės dalys: · Pradžia: Pateikiama apžvalgaview ESP32-DevKitM-1 ir aparatinės bei programinės įrangos sąrankos instrukcijas, kad galėtumėte pradėti. · Aparatinės įrangos nuoroda: Pateikia išsamesnės informacijos apie ESP32-DevKitM-1ns aparatinę įrangą. · Susiję dokumentai: Pateikia nuorodas į susijusius dokumentus.

Pradžia Šiame skyriuje aprašoma, kaip pradėti naudotis ESP32-DevKitM-1. Pradžioje pateikiami keli įvadiniai skyriai apie ESP32-DevKitM-1, o skyriuje „Programos kūrimo pradžia“ pateikiamos instrukcijos, kaip atlikti pradinę aparatinės įrangos sąranką ir kaip įdiegti programinę-aparatinę įrangą į ESP32-DevKitM-1.

Baigėsiview Tai maža ir patogi kūrimo lenta, turinti:
· ESP32-MINI-1 arba ESP32-MINI-1U modulis · USB-nuosekliojo prievado programavimo sąsaja, kuri taip pat maitina plokštę · kontaktų antgaliai · mygtukai, skirti atstatymui ir programinės įrangos atsisiuntimo režimo aktyvavimui · keli kiti komponentai

Turinys ir pakuotė

Mažmeninės prekybos užsakymai. Jei užsisakote kelisampKiekvienas ESP32-DevKitM-1 tiekiamas atskiroje pakuotėje – antistatiniame maišelyje arba bet kokioje kitoje pakuotėje, priklausomai nuo jūsų pardavėjo.
Dėl mažmeninių užsakymų apsilankykite https://www.espressif.com/en/contact-us/get-samples.

Didmeniniai užsakymai Jei užsakote urmu, lentos supakuojamos į dideles kartonines dėžes. Didmeninius užsakymus galite pateikti adresu https://www.espressif.com/en/contact-us/sales-questions.

Komponentų aprašymas Šiame paveikslėlyje ir lentelėje aprašomi pagrindiniai ESP32-DevKitM-1 plokštės komponentai, sąsajos ir valdikliai. Kaip pavyzdį panagrinėsime plokštę su ESP32-MINI-1 moduliu.ample tolesniuose skyriuose.

Espressif sistemos

10 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

6 pav.: ESP32-DevKitM-1 – priekis

Pagrindinis komponentas Borto modulis
5 V–3.3 V LDO įkrovos mygtukas
Atstatymo mygtukas, mikro USB prievadas
USB-UART tiltas, 3.3 V maitinimo LED
I/O jungtis

Aprašymas
ESP32-MINI-1 arba ESP32-MINI-1U modulis. ESP32-MINI-1 komplektuojamas su integruota PCB antena. ESP32-MINI-1U komplektuojamas su išorinės antenos jungtimi. Abu moduliai turi po 4 MB „flash“ atmintį mikroschemos korpuse. Išsamesnės informacijos ieškokite ESP32-MINI-1 ir ESP32-MINI-1U duomenų lapuose.
Galios reguliatorius konvertuoja 5 V į 3.3 V.
Atsisiuntimo mygtukas. Laikant nuspaustą „Boot“ ir paspaudus „Reset“, inicijuojamas programinės įrangos atsisiuntimo režimas, skirtas programinės įrangos atsisiuntimui per nuoseklųjį prievadą.
Atkūrimo mygtukas
USB sąsaja. Plokštės maitinimo šaltinis, taip pat ryšio sąsaja tarp kompiuterio ir ESP32 lusto.
Vienas USB-UART tilto lustas užtikrina perdavimo greitį iki 3 Mbps.
Įsijungia, kai prie plokštės prijungiamas USB. Išsamesnės informacijos ieškokite schemose susijusiuose dokumentuose. Visi galimi GPIO kontaktai (išskyrus SPI magistralę, skirtą „flash“ atmintinei) yra išskaidyti į plokštės kontaktų antgalius. Vartotojai gali užprogramuoti ESP32 lustą, kad būtų įjungtos kelios funkcijos.

Programos kūrimo pradžia Prieš įjungdami ESP32-DevKitM-1, įsitikinkite, kad jis yra geros būklės ir nėra akivaizdžių pažeidimo požymių.
Reikalinga įranga · ESP32-DevKitM-1 · USB 2.0 laidas (standartinis A–micro-B) · Kompiuteris su „Windows“, „Linux“ arba „macOS“
Programinės įrangos diegimas. Pereikite prie „Pradėti“, kur skyrius „Diegimas“ padės jums greitai nustatyti kūrimo aplinką ir tada įdiegti programos ex. versiją.ampį savo ESP32-DevKitM-1.

Espressif sistemos

11 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Dėmesio: ESP32-DevKitM-1 plokštėse, pagamintose iki 2021 m. gruodžio 2 d., įdiegtas vieno branduolio modulis. Norėdami patikrinti, kokį modulį turite, patikrinkite modulio žymėjimo informaciją PCN-2021-021. Jei jūsų plokštėje įdiegtas vieno branduolio modulis, prieš diegdami programas, įjunkite vieno branduolio režimą (CONFIG_FREERTOS_UNICORE) meniu konfigūracijoje.
Aparatinės įrangos etaloninė blokinė schema Žemiau pateiktoje blokinėje schemoje parodyti ESP32-DevKitM-1 komponentai ir jų sujungimai.

7 pav.: ESP32-DevKitM-1
Maitinimo šaltinio pasirinkimas Yra trys vienas kitą paneigiantys būdai tiekti maitinimą plokštei: · „Micro USB“ prievadas, numatytasis maitinimo šaltinis · 5 V ir GND antgalio kontaktai · 3 V ir GND antgalio kontaktai
Įspėjimas: · Maitinimas turi būti tiekiamas naudojant vieną ir tik vieną iš aukščiau pateiktų parinkčių, kitaip gali būti pažeista plokštė ir (arba) maitinimo šaltinis. · Rekomenduojama maitinti per „micro USB“ prievadą.

Kontaktų aprašymai Žemiau esančioje lentelėje pateikti abiejų plokštės pusių kontaktų pavadinimai ir funkcijos. Informacijos apie periferinių įrenginių kontaktų konfigūracijas žr. ESP32 duomenų lape.

Nr.

Vardas

Tipas

1

GND

P

2

3V3

P

Funkcija Įžeminimas 3.3 V maitinimo šaltinis

tęsinys kitame puslapyje

Espressif sistemos

12 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

2 lentelė tęsiasi iš ankstesnio puslapio

Nr.

Vardas

Tipas

Funkcija

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

Atstatyti; Aukštas: įjungti; Žemas: maitinimas išjungiamas

8

I34

I

GPIO34, ADC1_CH6, RTC_GPIO4

9

I35

I

GPIO35, ADC1_CH7, RTC_GPIO5

10

IO32

I/O

GPIO32, XTAL_32K_P (32.768 kHz kristalinio osciliatoriaus įvestis),

ADC1_CH4, TOUCH9, RTC_GPIO9

11

IO33

I/O

GPIO33, XTAL_32K_N (32.768 kHz kristalų generatoriaus išvestis),

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

5 V maitinimo šaltinis

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

Aparatinės įrangos versijos informacija Ankstesnių versijų nėra.
Susiję dokumentai
· ESP32-MINI-1 ir ESP32-MINI-1U duomenų lapas (PDF) · ESP32-DevKitM-1 schemos (PDF) · ESP32-DevKitM-1 PCB išdėstymas (PDF) · ESP32-DevKitM-1 išdėstymas (DXF) – Galite view tai su „Autodesk“ Viewinternetu · ESP32 duomenų lapas (PDF) · ESP produktų parinkiklis
Dėl kitos plokštės projektavimo dokumentacijos susisiekite su mumis el. paštu sales@espressif.com.

Espressif sistemos

13 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
1.2.2 Programinė įranga
Norėdami pradėti naudoti ESP-IDF ESP32 sistemoje, įdiekite šią programinę įrangą: · „Toolchain“, skirtą ESP32 kodui kompiliuoti · Įrankių kūrimas – „CMake“ ir „Ninja“, skirtas pilnai ESP32 programai sukurti · ESP-IDF, kuriame iš esmės yra API (programinės įrangos bibliotekos ir šaltinio kodas), skirta ESP32, ir scenarijai, skirti „Toolchain“ valdymui

1.3 diegimas
Norėdami įdiegti visą reikiamą programinę įrangą, siūlome keletą skirtingų būdų, kaip palengvinti šią užduotį. Pasirinkite vieną iš galimų variantų.
1.3.1 IDE

Pastaba: primygtinai rekomenduojame įdiegti ESP-IDF per mėgstamą IDE.
· „Eclipse“ įskiepis · „VSCode“ plėtinys

1.3.2 Rankinis diegimas
Rankiniam procesui pasirinkite pagal savo operacinę sistemą.

Espressif sistemos

14 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Standartinė įrankių grandinės sąranka, skirta „Windows“.
Įvadas Norint naudoti ESP-IDF, reikia įdiegti keletą būtinų įrankių, kad galėtumėte kurti palaikomų lustų programinę-aparatinę įrangą. Būtini įrankiai yra „Python“, „Git“, kryžminiai kompiliatoriai, „CMake“ ir „Ninja“ kūrimo įrankiai. Šioje pradžioje naudosime komandinę eilutę, tačiau įdiegę ESP-IDF galite naudoti „Eclipse“ papildinį arba kitą grafinę IDE su „CMake“ palaikymu. Pastaba: Apribojimai: – ESP-IDF ir ESP-IDF įrankių diegimo kelias neturi būti ilgesnis nei 90 simbolių. Per ilgi diegimo keliai gali sukelti nesėkmingą kūrimą. – „Python“ arba „ESP-IDF“ diegimo kelyje neturi būti tarpų ar skliaustų. – „Python“ arba „ESP-IDF“ diegimo kelyje neturėtų būti specialiųjų simbolių (ne ASCII), nebent operacinė sistema sukonfigūruota su „Unicode UTF-8“ palaikymu. Sistemos administratorius gali įjungti palaikymą per valdymo skydą – Pakeisti datos, laiko arba skaičių formatus – Administravimas – Pakeisti sistemos lokalę – pažymėkite parinktį „oBeta: Naudoti Unicode UTF-8 pasauliniam kalbų palaikymui“ – Gerai ir paleiskite kompiuterį iš naujo.
ESP-IDF įrankių diegimo programa. Lengviausias būdas įdiegti ESP-IDFns būtinąsias programas yra atsisiųsti vieną iš ESP-IDF įrankių diegimo programų.

„Windows“ diegimo programos atsisiuntimas
Kam naudojamas internetinis ir neprisijungus diegimo įrankis? Internetinis diegimo įrankis yra labai mažas ir leidžia įdiegti visas galimas ESP-IDF versijas. Diegimo metu diegimo programa atsisiųs tik būtinas priklausomybes, įskaitant „Git for Windows“. Diegimo programa išsaugo atsisiųstus failus. files talpyklos kataloge %userprofile%. espresas
Diegimo neprisijungus programai nereikia jokio tinklo ryšio. Diegimo programoje yra visos reikalingos priklausomybės, įskaitant „Git for Windows“.
Diegimo komponentai Diegimo programa įdiegia šiuos komponentus:
· Įterptinis Python · Kryžminiai kompiliatoriai · OpenOCD · CMake ir Ninja kūrimo įrankiai · ESP-IDF
Diegimo programa taip pat leidžia pakartotinai naudoti esamą katalogą su ESP-IDF. Rekomenduojamas katalogas yra %userprofile%Desktopesp-idf, kur %userprofile% yra jūsų namų katalogas.

Espressif sistemos

15 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
ESP-IDF aplinkos paleidimas Diegimo proceso pabaigoje galite pažymėti parinktį „Vykdyti ESP-IDF PowerShell aplinką“ arba „Vykdyti ESP-IDF komandinę eilutę“ (cmd.exe). Diegimo programa paleis ESP-IDF aplinką pasirinktoje eilutėje. Paleiskite ESP-IDF PowerShell aplinką:

8 pav.: ESP-IDF įrankių sąrankos vedlio užbaigimas naudojant „Run ESP-IDF PowerShell Environment“
Paleiskite ESP-IDF komandinę eilutę (cmd.exe):
Komandinės eilutės naudojimas Likusiems pradžios veiksmams naudosime „Windows“ komandinę eilutę. ESP-IDF įrankių diegimo programa taip pat sukuria nuorodą meniu Pradėti, kad paleistumėte ESP-IDF komandinę eilutę. Ši nuoroda paleidžia komandinę eilutę (cmd.exe) ir paleidžia scenarijų export.bat, kad nustatytų aplinkos kintamuosius (PATH, IDF_PATH ir kitus). Šioje komandinėje eilutėje yra visi įdiegti įrankiai. Atminkite, kad ši nuoroda taikoma tik ESP-IDF katalogui, pasirinktam ESP-IDF įrankių diegimo programoje. Jei kompiuteryje yra keli ESP-IDF katalogai (pvz.,amppvz., norint dirbti su skirtingomis ESP-IDF versijomis), turite dvi jų naudojimo galimybes:
1. Sukurkite ESP-IDF įrankių diegimo programos sukurtos nuorodos kopiją ir pakeiskite naujos nuorodos darbinį katalogą į norimą naudoti ESP-IDF katalogą.
2. Arba paleiskite cmd.exe, tada pereikite į norimą naudoti ESP-IDF katalogą ir paleiskite export.bat. Atminkite, kad, skirtingai nei ankstesnis būdas, šiuo būdu PATH turi būti Python ir Git. Jei gaunate klaidų, susijusių su nerandamu Python arba Git, naudokite pirmąjį variantą.
Pirmieji ESP-IDF žingsniai Kadangi visi reikalavimai įvykdyti, kita tema padės jums pradėti savo pirmąjį projektą.

Espressif sistemos

16 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Darbo pradžia. 9 pav.: ESP-IDF „PowerShell“

10 pav.: ESP-IDF įrankių sąrankos vedlio užbaigimas paleidžiant ESP-IDF komandinę eilutę (cmd.exe)

Espressif sistemos

17 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

11 pav.: ESP-IDF komandinė eilutė

Espressif sistemos

18 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Šis vadovas padės jums atlikti pirmuosius ESP-IDF naudojimo veiksmus. Vadovaukitės šiuo vadovu, kad pradėtumėte naują projektą ESP32 ir sukurtumėte, įdiegtumėte bei stebėtumėte įrenginio išvestį. Pastaba: jei dar neįdiegėte ESP-IDF, eikite į diegimo skyrių ir vykdykite instrukcijas, kad gautumėte visą programinę įrangą, reikalingą šiam vadovui naudoti.

Pradėkite projektą Dabar esate pasiruošę parengti savo paraišką ESP32. Galite pradėti nuo projekto getstarted/hello_world iš pvz.amples katalogą ESP-IDF.
Svarbu: ESP-IDF kūrimo sistema nepalaiko tarpų keliuose į ESP-IDF ar projektus.
Nukopijuokite projektą „get-started/hello_world“ į katalogą „~/esp“: cd %userprofile%esp xcopy /e /i %IDF_PATH%exampleget-startedhello_world hello_world
Pastaba: Yra įvairių pavyzdžiųample projektus buvamples katalogą ESP-IDF. Galite nukopijuoti bet kurį projektą taip pat, kaip aprašyta aukščiau, ir paleisti jį. Taip pat galima statyti exampfailus vietoje jų pirmiausia nenukopijavus.

Prijunkite įrenginį. Dabar prijunkite ESP32 plokštę prie kompiuterio ir patikrinkite, kuriame nuosekliajame prievade ji matoma. Nuosekliojo prievado pavadinimai sistemoje „Windows“ prasideda COM. Jei nežinote, kaip patikrinti nuosekliojo prievado pavadinimą, išsamios informacijos rasite skyriuje „Nuosekliojo ryšio su ESP32 užmezgimas“.
Pastaba: prievado pavadinimą laikykite po ranka, nes jo prireiks atliekant kitus veiksmus.

Konfigūruokite savo projektą. Eikite į savo hello_world katalogą, nustatykite ESP32 kaip paskirties vietą ir paleiskite projekto konfigūravimo įrankį menuconfig.
„Windows“ kompaktinis diskas %userprofile%esphello_world idf.py nustatytas paskirties taškas esp32 idf.py meniu konfigūracija
Atidarę naują projektą, pirmiausia turėtumėte nustatyti paskirties vietą naudodami komandą „idf.py set-target esp32“. Atminkite, kad esamos projekto versijos ir konfigūracijos, jei tokių yra, šio proceso metu bus išvalytos ir inicijuotos. Paskirties vietą galima išsaugoti aplinkos kintamajame, kad šis žingsnis būtų praleistas. Daugiau informacijos rasite skyriuje „Pasirinkite paskirties lustą: set-target“. Jei ankstesni veiksmai atlikti teisingai, pasirodys toks meniu: Šį meniu naudojate projektui būdingiems kintamiesiems nustatyti, pvz., „Wi-Fi“ tinklo pavadinimui ir slaptažodžiui, procesoriaus greičiui ir kt. Projekto nustatymas naudojant „menuconfig“ gali būti praleistas „ohello_wordp“ atveju, nes šis pavyzdys...ampfailas veikia su numatytąja konfigūracija.
Dėmesio: jei naudojate ESP32-DevKitC plokštę su ESP32-SOLO-1 moduliu arba ESP32-DevKitM-1 plokštę su ESP32-MIN1-1(1U) moduliu, prieš mirksėdami įjunkite vieno branduolio režimą (CONFIG_FREERTOS_UNICORE) meniu konfigūracijoje.amples.

Espressif sistemos

19 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

12 pav.: Projekto konfigūracija – pagrindinis langas
Pastaba: Meniu spalvos jūsų terminale gali skirtis. Išvaizdą galite pakeisti naudodami parinktį „–style“. Norėdami gauti daugiau informacijos, paleiskite komandą „idf.py menuconfig –help“.
Jei naudojate vieną iš palaikomų kūrimo plokščių, galite paspartinti kūrimą naudodami plokščių palaikymo paketą. Daugiau informacijos žr. skyriuje „Papildomi patarimai“.
Sukurkite projektą Sukurkite projektą paleisdami:
idf.py build
Ši komanda sukompiliuos programą ir visus ESP-IDF komponentus, tada sugeneruos įkrovos įkroviklį, skaidinių lentelę ir programos dvejetainius failus.
$ idf.py build Vykdomas cmake kataloge /kelias/iki/hello_pasaulio/build Vykdomas „cmake -G Ninja –warn-unitialized /kelias/iki/hello_pasaulio“… Įspėjimas apie neinicializuotas reikšmes. — Rasta Git: /usr/bin/git (rasta versija „2.17.0“) — Kuriamas tuščias aws_iot komponentas dėl konfigūracijos — Komponentų pavadinimai: … — Komponentų keliai: …
… (daugiau kūrimo sistemos išvesties eilučių)
[527/527] Generuojamas hello_world.bin esptool.py v2.3.1
Projekto kūrimas baigtas. Norėdami atlikti „flash“ operaciją, paleiskite šią komandą: ../../../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 arba paleiskite „idf.py -p PORT flash“
Jei klaidų nėra, kūrimas bus baigtas generuojant dvejetainį programinės įrangos failą .bin files.

Espressif sistemos

20 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Įrenginyje įdiekite ką tik sukurtus dvejetainius failus (bootloader.bin, partition-table.bin ir hello_world.bin) į savo ESP32 plokštę paleisdami: idf.py -p PORT [-b BAUD] flash
Pakeiskite PORT savo ESP32 plokštės nuosekliojo prievado pavadinimu. Taip pat galite pakeisti mirksinčios programos duomenų perdavimo spartą pakeisdami BAUD reikiama duomenų perdavimo sparta. Numatytoji duomenų perdavimo sparta yra 460800. Daugiau informacijos apie idf.py argumentus rasite idf.py faile.
Pastaba: Pasirinkus „flash“, projektas automatiškai kompiliuojamas ir mirksi, todėl paleisti „idf.py build“ nebūtina.

Iškilo problemų mirksėjimo metu? Jei vykdydami nurodytą komandą matote tokias klaidas kaip „Failed to connectp“, tam gali būti kelios priežastys. Viena iš priežasčių gali būti problemos, su kuriomis susiduria „esptool.py“ – programa, kurią iškviečia kompiliavimo sistema, norėdama iš naujo nustatyti lustą, sąveikauti su ROM įkrovos įkrovikliu ir atnaujinti programinę-aparatinę įrangą. Vienas paprastas sprendimas, kurį galite išbandyti, yra rankinis atkūrimas, aprašytas toliau, o jei tai nepadeda, daugiau informacijos apie galimas problemas galite rasti skyriuje „Trikčių šalinimas“.
„esptool.py“ automatiškai atstato ESP32, prijungdamas USB-nuosekliojo keitiklio mikroschemos, pvz., FTDI arba CP210x, DTR ir RTS valdymo linijas (daugiau informacijos žr. skyriuje „Nuosekliojo ryšio su ESP32 užmezgimas“). DTR ir RTS valdymo linijos savo ruožtu prijungiamos prie ESP32 GPIO0 ir CHIP_PU (EN) kontaktų, todėl pasikeičia garsumas.tagDTR ir RTS lygiai paleis ESP32 į programinės įrangos atsisiuntimo režimą. Pavyzdžiui,ampTaigi, patikrinkite ESP32 DevKitC kūrimo plokštės schemą.
Apskritai, su oficialiomis „esp-idf“ kūrimo plokštėmis problemų kilti neturėtų. Tačiau „esptool.py“ negali automatiškai atkurti jūsų aparatinės įrangos šiais atvejais:
· Jūsų aparatinėje įrangoje DTR ir RTS linijos nėra prijungtos prie GPIO0 ir CHIP_PU · DTR ir RTS linijos sukonfigūruotos skirtingai · Tokių nuosekliųjų valdymo linijų iš viso nėra
Priklausomai nuo turimos aparatinės įrangos tipo, gali būti įmanoma rankiniu būdu įjungti ESP32 plokštę į programinės įrangos atsisiuntimo režimą (atstatyti).
· „Espressif“ pagamintų kūrimo plokščių atveju šią informaciją galite rasti atitinkamuose pradžios vadovuose arba naudotojo vadovuose. Pavyzdžiui,ampPavyzdžiui, norėdami rankiniu būdu atkurti ESP-IDF kūrimo plokštę, palaikykite nuspaudę „Boot“ mygtuką (GPIO0) ir paspauskite EN mygtuką (CHIP_PU).
· Kitų tipų aparatinei įrangai pabandykite ištraukti GPIO0.

Normalus veikimas Mirksėdami matysite išvesties žurnalą, panašų į šį:
... 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 Nuoseklusis prievadas /dev/ttyUSB0 Prisijungiama…….._ Lustas yra ESP32D0WDQ6 (0 versija) Funkcijos: WiFi, BT, dviejų branduolių, kodavimo schema Nėra Crystal yra 40MHz MAC: 24:0a:c4:05:b9:14 Įkeliamas fragmentas… Veikia fragmentas… Funkcinis fragmentas veikia… Keičiamas perdavimo greitis į 460800 Pakeista.
(tęsinys kitame puslapyje)

Espressif sistemos

21 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
(tęsinys iš ankstesnio puslapio) „Flash“ dydžio konfigūravimas… Suspausta 3072 baitai iki 103… Rašoma 0x00008000… (100 %) Parašė 3072 baitus (103 suspausti) 0x00008000 greičiu per 0.0 sekundžių (efektyvus 5962.8 kbit/s)… Duomenų maiša patvirtinta. Suspausta 26096 baitai iki 15408… Rašoma 0x00001000 greičiu… (100 %) Parašė 26096 baitus (15408 suspausti) 0x00001000 greičiu per 0.4 sekundės (efektyvus 546.7 kbit/s)… Duomenų maiša patvirtinta. Suspausta 147104 baitai iki 77364… Rašoma ties 0x00010000… (20 %) Rašoma ties 0x00014000… (40 %) Rašoma ties 0x00018000… (60 %) Rašoma ties 0x0001c000… (80 %) Rašoma ties 0x00020000… (100 %) Įrašė 147104 baitus (77364 suspausti) ties 0x00010000 per 1.9 sekundės (efektyvus 615,5 kbit/s)… Duomenų maiša patvirtinta.
Išeinama... Sunkus nustatymas iš naujo naudojant RTS kaištį... Atlikta
Jei pasibaigus atminties įdiegimo procesui problemų nekils, plokštė bus paleista iš naujo ir paleis „theohello_worldpapplication“. Jei norite naudoti „Eclipse“ arba „VS Code IDE“, o ne paleisti „idf.py“, peržiūrėkite „Eclipse“ papildinį, „VSCode“ plėtinį.
Išvesties stebėjimas Norėdami patikrinti, ar „ohello_worldpis“ tikrai veikia, įveskite idf.py -p PORT monitor (nepamirškite PORT pakeisti savo nuosekliojo prievado pavadinimu).
Ši komanda paleidžia programą IDF Monitor:
$ idf.py -p monitorius Vykdomas „idf_monitor“ kataloge […]/esp/hello_world/build Vykdomas „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf“… — idf_monitor įjungtas 115200 —– Išeiti: Ctrl+] | Meniu: Ctrl+T | Pagalba: Ctrl+T, o tada Ctrl+H –ets 2016 m. birželio 8 d. 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016 m. birželio 8 d. 00:22:57 …
Slinkdami aukštyn paleikdami ir diagnostinius žurnalus, turėtumėte pamatyti programos atspausdintą tekstą „Sveikas, pasauli!“.
... Sveikas, pasauli! Paleidžiama iš naujo po 10 sekundžių… Tai yra „esp32“ lustas su 2 procesoriaus branduoliais, „WiFi“ / „BT“ / „BLE“, 1-a silicio versija, 2 MB išorine „flash“ atmintimi. Minimalus laisvos atminties dydis: 298968 baitai. Paleidžiama iš naujo po 9 sekundžių… Paleidžiama iš naujo po 8 sekundžių… Paleidžiama iš naujo po 7 sekundžių…
Norėdami išeiti iš IDF monitoriaus, naudokite spartųjį klavišą Ctrl+].

Espressif sistemos

22 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Jei IDF monitorius sugenda netrukus po įkėlimo arba jei vietoj aukščiau pateiktų pranešimų matote atsitiktinius pranešimus, panašius į pateiktus toliau, jūsų plokštėje greičiausiai naudojamas 26 MHz kristalas. Dauguma kūrimo plokščių konstrukcijų naudoja 40 MHz dažnį, todėl ESP-IDF šį dažnį naudoja kaip numatytąją reikšmę.

Jei kyla tokių problemų, atlikite šiuos veiksmus: 1. Išeikite iš monitoriaus. 2. Grįžkite į „menuconfig“. 3. Eikite į „Component config“ > „Hardware Settings“ > „Main XTAL Config“ > „Main XTAL frequency“, tada pakeiskite CONFIG_XTAL_FREQ_SEL į 26 MHz. 4. Po to dar kartą sukompiliuokite ir įdiekite programą.
Dabartinėje ESP-IDF versijoje pagrindiniai ESP32 palaikomi XTAL dažniai yra šie:
· 26 MHz · 40 MHz
Pastaba: galite sujungti kūrimą, mirksėjimą ir stebėjimą į vieną veiksmą paleisdami: idf.py -p PORT flash monitor
Taip pat žr.: · IDF monitorius, kuriame pateikiami patogūs spartieji klavišai ir daugiau informacijos apie IDF monitoriaus naudojimą. · idf.py, kuriame pateikiama išsami informacija apie idf.py komandas ir parinktis.
Tai viskas, ko jums reikia norint pradėti naudoti ESP32! Dabar esate pasiruošę išbandyti kitus buvusį...amparba iš karto pradėkite kurti savo programas.
Svarbu: Kai kurie iš buvusiųampfailai nepalaiko ESP32, nes reikalinga aparatinė įranga nėra įtraukta į ESP32, todėl ji negali būti palaikoma. Jei kuriate exampprašome patikrinti README failą file Palaikomų taikinių lentelėje. Jei ji yra, įskaitant ESP32 taikinį, arba lentelės iš viso nėra, pvz.ampVeiks su ESP32.
Papildomi patarimai
Leidimų problemos /dev/ttyUSB0 Naudojant kai kurias „Linux“ distribucijas, mirksint ESP32, gali būti parodytas klaidos pranešimas „Nepavyko atidaryti prievado /dev/ttyUSB0“. Tai galima išspręsti pridedant dabartinį vartotoją prie išrenkamųjų numerių grupės.
„Python“ suderinamumas ESP-IDF palaiko „Python 3.7“ arba naujesnę versiją. Rekomenduojama atnaujinti operacinę sistemą į naujausią versiją, atitinkančią šį reikalavimą. Kitos parinktys apima „Python“ diegimą iš šaltinių arba „Python“ versijų valdymo sistemos, pvz., „pyenv“, naudojimą.
Pradėkite nuo plokštės palaikymo paketo. Norėdami pagreitinti prototipų kūrimą kai kuriose kūrimo plokštėse, galite naudoti plokštės palaikymo paketus (BSP), kurie leidžia inicijuoti konkrečią plokštę taip paprastai, kad tereikia vos kelių funkcijų.

Espressif sistemos

23 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

BSP paprastai palaiko visus kūrimo plokštėje esančius aparatinės įrangos komponentus. Be kontaktų išdėstymo apibrėžimo ir inicijavimo funkcijų, BSP pateikiamas su išorinių komponentų, tokių kaip jutikliai, ekranai, garso kodekai ir kt., tvarkyklėmis. BSP platinami per IDF komponentų tvarkyklę, todėl juos galima rasti IDF komponentų registre. Čia yra pavyzdys.ampKaip pridėti ESP-WROVER-KIT BSP prie savo projekto: idf.py add-dependency esp_wrover_kit
Daugiau exampBSP naudojimo būdus galima rasti BSP pavyzdyjeamples aplankas.
Susiję dokumentai Patyrusiems vartotojams, norintiems pritaikyti diegimo procesą: · ESP-IDF įrankių atnaujinimas sistemoje „Windows“ · Nuoseklaus ryšio užmezgimas naudojant ESP32 · „Eclipse“ papildinys · VSCode plėtinys · IDF monitorius
ESP-IDF įrankių atnaujinimas sistemoje „Windows“
ESP-IDF įrankių diegimas naudojant scenarijų. „Windows“ komandų eilutėje pereikite į katalogą, kuriame įdiegtas ESPIDF. Tada paleiskite:
install.bat
„Powershell“ atveju pereikite į katalogą, kuriame įdiegtas ESP-IDF. Tada paleiskite:
įdiegti.ps1
Tai atsisiųs ir įdiegs įrankius, reikalingus naudoti ESP-IDF. Jei konkreti įrankio versija jau įdiegta, jokių veiksmų nebus imtasi. Įrankiai atsisiunčiami ir įdiegiami į katalogą, nurodytą ESP-IDF įrankių diegimo proceso metu. Pagal numatytuosius nustatymus tai yra C:\Users\username\name.espressif.
Pridėkite ESP-IDF įrankius prie PATH naudodami eksportavimo scenarijų. ESP-IDF įrankių diegimo programa sukuria meniu Pradėti nuorodą, skirtą oESP-IDF komandinei eilutei. Ši nuoroda atidaro komandinės eilutės langą, kuriame jau yra visi įrankiai.
galima. Kai kuriais atvejais galite norėti dirbti su ESP-IDF komandinės eilutės lange, kuris nebuvo paleistas naudojant tą spartųjį klavišą. Tokiu atveju vadovaukitės toliau pateiktomis instrukcijomis, kad pridėtumėte ESP-IDF įrankius prie PATH. Komandinėje eilutėje, kurioje reikia naudoti ESP-IDF, pereikite į katalogą, kuriame įdiegtas ESP-IDF, tada vykdykite export.bat:
cd % userprofile%espesp-idf export.bat
Arba „Powershell“ faile, kuriame reikia naudoti ESP-IDF, pereikite į katalogą, kuriame įdiegtas ESP-IDF, ir vykdykite „export.ps1“:
cd ~/esp/esp-idf export.ps1
Kai tai bus padaryta, įrankiai bus pasiekiami šioje komandų eilutėje.
Nuoseklaus ryšio su ESP32 užmezgimas Šiame skyriuje pateikiamos instrukcijos, kaip užmegzti nuoseklų ryšį tarp ESP32 ir kompiuterio.

Espressif sistemos

24 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Prijunkite ESP32 prie kompiuterio. Prijunkite ESP32 plokštę prie kompiuterio naudodami USB kabelį. Jei įrenginio tvarkyklė neįdiegiama automatiškai, suraskite USB į nuoseklųjį prievadą keitiklio lustą savo ESP32 plokštėje (arba išoriniame keitiklio adapteryje), internete ieškokite tvarkyklių ir jas įdiekite. Žemiau pateikiamas daugumoje „Espressif“ gaminamų ESP32 plokščių įdiegtų USB į nuoseklųjį prievadą keitiklių lustų sąrašas kartu su nuorodomis į tvarkykles:
· CP210x: CP210x USB į UART tilto VCP tvarkyklės · FTDI: FTDI virtualaus COM prievado tvarkyklės. Dėl konkrečios naudojamos USB į nuoseklųjį prievadą keitiklio mikroschemos ieškokite plokštės naudotojo vadove. Aukščiau pateiktos tvarkyklės pirmiausia skirtos informaciniams tikslams. Įprastomis aplinkybėmis tvarkyklės turėtų būti pateikiamos kartu su operacine sistema ir automatiškai įdiegiamos prijungus plokštę prie kompiuterio.
Patikrinkite prievadą sistemoje „Windows“. Patikrinkite identifikuotų COM prievadų sąrašą „Windows“ įrenginių tvarkytuvėje. Atjunkite ESP32 ir vėl prijunkite, kad patikrintumėte, kuris prievadas dingsta iš sąrašo ir vėl pasirodo. Žemiau pateiktuose paveikslėliuose parodytas ESP32 DevKitC ir ESP32 WROVER KIT nuoseklusis prievadas.

13 pav.: ESP32-DevKitC USB–UART tiltas „Windows“ įrenginių tvarkytuvėje

Patikrinkite prievadą „Linux“ ir „macOS“ sistemose. Norėdami patikrinti ESP32 plokštės (arba išorinio keitiklio) nuosekliojo prievado įrenginio pavadinimą, du kartus paleiskite šią komandą: pirmiausia atjungę plokštę / prievadą, o tada prijungę. Antrą kartą rodomas prievadas yra tas, kurio jums reikia: „Linux“.
ls /dev/tty*
macOS

Espressif sistemos

25 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

14 pav.: Du ESP-WROVER-KIT USB nuoseklieji prievadai „Windows“ įrenginių tvarkytuvėje

Espressif sistemos

26 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

ls /dev/cu.* Pastaba: macOS naudotojams: jei nematote nuosekliojo prievado, patikrinkite, ar įdiegėte USB/nuosekliojo prievado tvarkykles. Nuorodas į tvarkykles rasite skyriuje „Prijunkite ESP32 prie kompiuterio“. „macOS High Sierra“ (10.13) sistemoje taip pat gali tekti aiškiai leisti įkelti tvarkykles. Atidarykite Sistemos nuostatos -> Saugumas ir privatumas -> Bendrieji ir patikrinkite, ar čia rodomas pranešimas apie kūrėjo „lp“ sukurtą „oSystem Software“, kur kūrėjo vardas yra „Silicon Labs“ arba „FTDI“.

Vartotojo pridėjimas prie išėjimo į dialout grupės sistemoje „Linux“. Šiuo metu prisijungęs vartotojas turėtų turėti skaitymo ir rašymo prieigą prie nuosekliojo prievado per USB. Daugumoje „Linux“ distribucijų tai atliekama pridedant vartotoją prie išėjimo į dialout grupės naudojant šią komandą:
sudo usermod -a -G skambutis $USER
„Arch Linux“ tai daroma pridedant vartotoją prie uucp grupės su šia komanda:
sudo usermod -a -G uucp $USER
Įsitikinkite, kad iš naujo prisijunkite, kad įgalintumėte nuosekliojo prievado skaitymo ir rašymo teises.
Patikrinkite nuoseklųjį ryšį. Dabar patikrinkite, ar veikia nuoseklusis ryšys. Tai galite padaryti naudodami nuosekliojo terminalo programą, patikrindami, ar po ESP32 nustatymo iš naujo terminale gaunate kokią nors išvestį. Numatytasis konsolės duomenų perdavimo greitis ESP32 yra 115200.
„Windows“ ir „Linux“ šiame pavyzdyjeampTaigi, naudosime „PuTTY SSH“ klientą, kuris yra prieinamas tiek „Windows“, tiek „Linux“ sistemoms. Galite naudoti kitas nuosekliojo prievado programas ir nustatyti ryšio parametrus, kaip nurodyta toliau. Paleiskite terminalą ir nustatykite identifikuotą nuoseklųjį prievadą. Baud sparta = 115200 (jei reikia, pakeiskite ją į numatytąją naudojamo lusto baudos spartą), duomenų bitai = 8, stop bitai = 1 ir lyginumas = N. Žemiau pateikiami pavyzdžiai:ampEkrano kopijos, kuriose parodytas prievado ir tokių perdavimo parametrų (trumpai apibūdinamų kaip 115200-8-1-N) nustatymas „Windows“ ir „Linux“ sistemose. Nepamirškite pasirinkti tiksliai to paties nuosekliojo prievado, kurį nurodėte atlikdami aukščiau nurodytus veiksmus. Tada terminale atidarykite nuoseklųjį prievadą ir patikrinkite, ar matote kokį nors ESP32 atspausdintą žurnalą. Žurnalo turinys priklausys nuo į ESP32 įkeltos programos, žr. pvz.ampIšvestis.
Pastaba: Uždarykite nuoseklųjį terminalą įsitikinę, kad ryšys veikia. Jei terminalo sesija paliksite atidarytą, nuoseklusis prievadas vėliau nebus pasiekiamas programinės įrangos įkėlimui.

macOS Kad nereikėtų vargti diegiant nuosekliojo terminalo programą, macOS siūlo komandą „screen“. · Kaip aptarta skyriuje „Prievado tikrinimas Linux ir macOS sistemose“, paleiskite:

ls /dev/cu.* · Turėtumėte matyti panašią išvestį:

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

/dev/cu.SLAB_

· Išvestis skirsis priklausomai nuo prie kompiuterio prijungtų plokščių tipo ir skaičiaus. Tada pasirinkite savo plokštės įrenginio pavadinimą ir paleiskite (jei reikia, pakeiskite o115200p į numatytąją naudojamo lusto baudos spartą):

screen /dev/cu.device_name 115200 Pakeiskite device_name pavadinimu, rastu vykdant ls /dev/cu.*.

Espressif sistemos

27 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

15 pav.: Nuosekliojo ryšio nustatymas „PuTTY“ sistemoje „Windows“

Espressif sistemos

28 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

16 pav.: Nuosekliojo ryšio nustatymas „PuTTY“ programoje „Linux“ sistemoje

Espressif sistemos

29 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
· Jums reikia ekrane rodomo žurnalo. Žurnalo turinys priklausys nuo į ESP32 įkeltos programos, žr. pvz.ample Output. Norėdami išeiti iš ekrano sesijos, paspauskite Ctrl-A + .
Pastaba: nepamirškite uždaryti ekrano sesijos patikrinę, ar ryšys veikia. Jei to nepadarysite ir tiesiog uždarysite terminalo langą, nuoseklusis prievadas vėliau nebus pasiekiamas programinės įrangos įkėlimui.
Example Output An exampŽurnalas parodytas žemiau. Jei nieko nematote, iš naujo nustatykite lentą. ets 2016 m. birželio 8 d. 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016 m. birželio 8 d. 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage bootloader I (45) paleidimas: kompiliavimo laikas 18:48:10

Jei matote įskaitomą žurnalo išvestį, tai reiškia, kad nuoseklusis ryšys veikia ir esate pasiruošę tęsti diegimą bei galiausiai įkelti programą į ESP32.
Pastaba: kai kurioms nuosekliojo prievado laidų konfigūracijoms, norint, kad ESP32 įsijungtų ir generuotų nuosekliąją išvestį, terminalo programoje reikia išjungti nuosekliuosius RTS ir DTR kontaktus. Tai priklauso nuo pačios aparatinės įrangos, daugumoje kūrimo plokščių (įskaitant visas „Espressif“ plokštes) šios problemos nėra. Problema kyla, jei RTS ir DTR yra prijungti tiesiai prie EN ir GPIO0 kontaktų. Daugiau informacijos rasite „esptool“ dokumentacijoje.
Jei diegdami ESP32 kūrimo programinę įrangą perėjote prie šio etapo nuo 5 veiksmo „Pirmieji ESP-IDF žingsniai“, galite tęsti nuo 5 veiksmo „Pirmieji ESP-IDF žingsniai“.
IDF Monitor „IDF Monitor“ daugiausia yra nuosekliojo prievado terminalo programa, kuri perduoda nuosekliuosius duomenis į tikslinio įrenginio nuoseklųjį prievadą ir iš jo. Ji taip pat teikia kai kurias IDF būdingas funkcijas. IDF Monitor galima paleisti iš IDF projekto vykdant komandą „idf.py monitor“.
Spartieji klavišai Kad būtų lengviau sąveikauti su IDF monitoriumi, naudokite lentelėje pateiktus sparčiuosius klavišus.

Espressif sistemos

30 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

Spartieji klaviatūros klavišai Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (arba A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (arba I)
· Ctrl+H (arba H)
· Ctrl+X (arba X)
Ctrl + C

Veiksmas

Aprašymas

Išeikite iš programos Meniu Escape klavišas Išsiųskite patį meniu simbolį į nuotolinio valdymo pultą
Siųsti patį išėjimo simbolį į nuotolinį serverį
Iš naujo nustatyti taikinį įkrovos įkroviklyje, kad pristabdytumėte programą per RTS liniją
Atkurti tikslinę plokštę per RTS
Sukurkite ir įdiekite projektą

Sukurkite ir mirksėkite tik programėlę

Sustabdyti/tęsti žurnalo išvesties spausdinimą ekrane

Stabdymo/tęsti žurnalo išvestį išsaugota file

Sustabdymo / tęsimo laikasamps

spausdinimas

Rodyti visus sparčiuosius klavišus

Paspauskite ir sekite vienu iš žemiau pateiktų klavišų.
Atkuria paskirties plokštę į įkrovos tvarkyklę per RTS liniją (jei prijungta), kad plokštė nieko neveiktų. Naudinga, kai reikia laukti, kol bus paleistas kitas įrenginys. Atkuria paskirties plokštę ir iš naujo paleidžia programą per RTS liniją (jei prijungta).
Pristabdo „idf_monitor“, kad paleistų projekto „flash“ paskirties vietą, tada tęsia „idf_monitor“. Bet koks pakeistas šaltinis. fileyra perkompiliuojami ir tada iš naujo perprogramuojami. „Target encrypted-flash“ paleidžiama, jei „idf_monitor“ buvo paleistas su argumentu -E. Pristabdo „idf_monitor“, kad paleistų „app-flash“ target, tada tęsia „idf_monitor“. Panašiai kaip „flash“ target, bet sukuriama ir iš naujo perprogramuojama tik pagrindinė programa. „Target encrypted-app-flash“ paleidžiama, jei „idf_monitor“ buvo paleistas su argumentu -E. Aktyvinimo metu atmeta visus gaunamus serijinius duomenis. Leidžia greitai pristabdyti ir peržiūrėti žurnalo išvestį neišeinant iš monitoriaus. Sukuria file projekto kataloge, o išvestis įrašoma į tą file kol tai išjungiama tuo pačiu sparčiuoju klavišu (arba IDF monitorius uždaromas). IDF monitorius gali atspausdinti laikąamp kiekvienos eilutės pradžioje. Kartąamp formatą galima keisti –timestamp-format komandinės eilutės argumentas.

Išeikite iš programos

Nutraukti veikiančią programą

Pristabdo IDF stebėjimą ir paleidžia GDB projekto derinimo įrankį, kad programa būtų derinama vykdymo metu. Tam reikia įjungti parinktį :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME.

Visi paspausti klavišai, išskyrus Ctrl-] ir Ctrl-T, bus siunčiami per nuoseklųjį prievadą.

IDF būdingos funkcijos

Automatinis adreso dekodavimas. Kai ESP-IDF išveda šešioliktainį kodo adresą, kurio formatas yra 0x4_______, IDF monitorius naudoja addr2line_, kad surastų vietą šaltinio kode ir funkcijos pavadinimą.
Jei ESP-IDF programa sugenda ir pradeda kelti paniką, sukuriamas registro išklotinės ir atgalinio sekimo failas, pvz.:

Espressif sistemos

31 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

0 branduolyje įvyko „StoreProhibited“ tipo Guru meditacijos klaida. Išimtis buvo atlikta.

netvarkomas.

Registro išklotinė:

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

SAR: 0x0000000f

: 0x00000019 PASITAISYMAS:

0x0000001d

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

0x00000000

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

IDF monitorius į išklotinę įtraukia daugiau informacijos:

0 branduolyje įvyko „StoreProhibited“ tipo Guru meditacijos klaida. Išimtis buvo atlikta.

netvarkomas.

Registro išklotinė:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d: atlikti_sužidimą_kažkam_užbaigti /home/gus/esp/32/idf/examples/pradėti-darbą/

labas_pasaulis/main/./labas_pasaulis_main.c:57

(įterpta) inner_dont_crash faile /home/gus/esp/32/idf/examples/pradėti-darbą/labas_

world/main/./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

SAR: 0x0000000f

: 0x00000019 PASITAISYMAS:

0x0000001d

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

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:57 (įterpta) inner_dont_crash adresu /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: vis dar_negauna_kelio /home/gus/esp/32/idf/ex aplankeamples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash ties /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:42 0x400dbf82: app_main adresu /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: pagrindinė_užduotis adresu /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254

Norėdamas iššifruoti kiekvieną adresą, IDF monitorius fone vykdo šią komandą: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS

Pastaba: nustatykite aplinkos kintamąjį ESP_MONITOR_DECODE į 0 arba iškvieskite idf_monitor.py naudodami konkrečią komandinę eilutę

Espressif sistemos

32 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
parinktis: idf_monitor.py –disable-address-decoding, kad būtų išjungtas adreso dekodavimas.
Tikslinio lusto nustatymas iš naujo prisijungus Pagal numatytuosius nustatymus IDF monitorius iš naujo nustatys tikslą, kai prie jo prisijungs. Tikslinio lusto nustatymas iš naujo atliekamas naudojant DTR ir RTS nuosekliąsias linijas. Norėdami išvengti, kad IDF monitorius automatiškai neatkurtų tikslo prisijungus, iškvieskite IDF monitorių su parinktimi –no-reset (pvz., idf_monitor.py –no-reset).
Pastaba: parinktis „–no-reset“ taiko tą patį veikimą net ir prijungus IDF monitorių prie konkretaus prievado (pvz., idf.py monitor –no-reset -p [PORT]).
GDB paleidimas naudojant GDBStub GDBStub yra naudinga derinimo vykdymo laiko funkcija, kuri veikia tiksliniame kompiuteryje ir prisijungia prie pagrindinio kompiuterio per nuoseklųjį prievadą, kad gautų derinimo komandas. GDBStub palaiko tokias komandas kaip atminties ir kintamųjų skaitymas, iškvietimų steko rėmelių nagrinėjimas ir kt. Nors GDBStub yra mažiau universalus nei JTAG derinimo, jam nereikia jokios specialios įrangos (pvz., JTAG (pvz., USB tiltą), nes ryšys vyksta tik per nuoseklųjį prievadą. Tikslinį įrenginį galima sukonfigūruoti taip, kad jis paleistų GDBStub fone, vykdymo metu nustatant CONFIG_ESP_SYSTEM_PANIC reikšmę GDBStub. GDBStub veiks fone, kol per nuoseklųjį prievadą bus išsiųstas Ctrl+C pranešimas, kuris sustabdys GDBStub programos vykdymą, taip leisdamas GDBStub apdoroti derinimo komandas. Be to, panikos tvarkyklę galima sukonfigūruoti taip, kad ji paleistų GDBStub gedimo atveju, nustatant CONFIG_ESP_SYSTEM_PANIC reikšmę GDBStub. Įvykus gedimui, GDBStub per nuoseklųjį prievadą išves specialų eilutės modelį, nurodantį, kad jis veikia. Abiem atvejais (t. y. siunčiant Ctrl+C pranešimą arba gaunant specialų eilutės modelį), IDF monitorius automatiškai paleis GDB, kad vartotojas galėtų siųsti derinimo komandas. Uždarius GDB, tikslinis įrenginys nustatomas iš naujo per RTS nuosekliąją liniją. Jei ši linija neprijungta, vartotojai gali atkurti savo taikinį (paspausdami plokštės mygtuką „Atstatyti“).
Pastaba: Fone IDF Monitor vykdo šią komandą, kad paleistų GDB:
xtensa-esp32-elf-gdb -ex „nustatyti nuoseklųjį perdavimo greitį BAUD“ -ex „paskirties nuotolinis prievadas“ -ex pertraukti build/PROJECT.elf :idf_target:`Sveiki, NAME lustas`

Išvesties filtravimo IDF monitorių galima iškviesti taip: idf.py monitor –print-filter=”xyz”, kur –print-filter yra išvesties filtravimo parametras. Numatytoji reikšmė yra tuščia eilutė, o tai reiškia, kad atspausdinama viskas.
Apribojimai, ką spausdinti, gali būti nurodyti kaip sekatag>: daiktai, kurtag> yra tag styga ir yra simbolis iš aibės {N, E, W, I, D, V, *}, nurodantis registravimo lygį.
Pavyzdžiui,amppvz., PRINT_FILTER=”tag1:W“ sutampa ir atspausdina tik rezultatus, įrašytus su ESP_LOGW(“tag1“, …) arba žemesniu išsamumo lygiu, pvz., ESP_LOGE(“tag1 colio, …). Nenurodant a arba naudojant * numatytasis nustatymas yra išsamus lygis.
Pastaba: naudokite pirminį registravimą, kad kompiliavimo metu išjungtumėte nereikalingus rezultatus registravimo bibliotekoje. Išvesties filtravimas naudojant IDF monitorių yra antrinis sprendimas, kuris gali būti naudingas norint reguliuoti filtravimo parinktis nekompiliuojant programos iš naujo.
Jūsų programėlė tags negali būti tarpų, žvaigždučių * arba dvitaškių : kad būtų suderinama su išvesties filtravimo funkcija.
Jei po paskutinės programos išvesties eilutės nėra eilutės grįžimo simbolis, išvesties filtravimas gali sutrikti, t. y. monitorius pradeda spausdinti eilutę, o vėliau nustato, kad jos nereikėjo rašyti. Tai žinoma problema, kurios galima išvengti visada pridedant eilutės grįžimo simbolį (ypač kai iš karto po jos neseka jokia išvestis).

Espressif sistemos

33 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
ExampFiltravimo taisyklių pavyzdžiai:
· * gali būti naudojamas norint atitikti bet kurį tagsTačiau eilutė PRINT_FILTER=”*:I tag1:E“ dėl tag1 spausdina tik klaidas, nes taisyklė, skirta tag1 turi didesnį prioritetą nei * taisyklę.
· Numatytoji (tuščia) taisyklė yra lygiavertė *:V, nes atitinkanti kiekvieną tag „Verbose“ arba žemesniame lygmenyje reiškia, kad reikia atitikti viską.
· „*:N“ slopina ne tik registravimo funkcijų išvestis, bet ir „printf“ ir kt. atspaudus. Norėdami to išvengti, naudokite *:E arba didesnį išsamumo lygį.
· Taisyklės “tag1:V“, „tag1:v“, „tag1:“, „tag1:*“ ir „tag1“ yra lygiaverčiai. · Taisyklė „tag1:V tag1:E“ atitinka „tag1:E“, nes bet koks to paties pasikartojimas tag
pavadinimas perrašo ankstesnį. · Taisyklė „tag1:I tag2:W“ spausdina tik tag1 informacijos išsamumo lygiu arba žemesniu ir tag2 prie įspėjimo
daugiažodiškumo lygis arba žemesnis. · Taisyklė „tag1:I tag2:V tag3:N“ iš esmės atitinka ankstesnįjį, nes tag3:N nurodo
kad tag3 neturėtų būti spausdinamas. · tag3:N taisyklėje „tag1:I tag2:V tag3:N *:V“ yra prasmingesnis, nes be jo tag3:N
taggalėjo būti atspausdinti 3 pranešimai; klaidos, skirtos tag1 ir tag2 bus atspausdintas nurodytu (arba žemesniu) išsamumo lygiu, o visa kita bus atspausdinta pagal numatytuosius nustatymus.
Sudėtingesnis filtravimo pavyzdysample Šis žurnalo fragmentas buvo gautas be jokių filtravimo parinkčių:
load:0x40078000,len:13564 įrašas 0x40078d4c E (31) esp_image: atvaizdas, esantis 0x30000, turi netinkamą magiškąjį baitą W (31) esp_image: atvaizdas, esantis 0x30000, turi netinkamą SPI režimą 255 E (39) boot: Gamyklinės programos skaidinys nepaleidžiamas I (568) cpu_start: Pro procesorius paleistas. I (569) heap_init: Inicializuojama. RAM prieinama dinaminiam paskirstymui: I (603) cpu_start: Pro procesoriaus paleidimo vartotojo kodas D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range sėkmingai apdorotas diapazone <54; 64) ir VFS ID 1 I (328) wifi: wifi tvarkyklės užduotis: 3ffdbf84, prio:23, stack:4096, core=0
Filtravimo parinkčių PRINT_FILTER=”wifi esp_image:E light_driver:I” užfiksuota išvestis pateikta žemiau:
E (31) esp_image: paveikslėlyje ties 0x30000 yra neteisingas magiškasis baitas I (328) wifi: wifi driver task: 3ffdbf84, prio:23, stack:4096, core=0
Parinktys „PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" rodo tokią išvestį:
load:0x40078000,len:13564 entry 0x40078d4c I (569) heap_init: Inicializuojama. Dinaminiam paskirstymui prieinama RAM: D (309) light_driver: [light_init, 74]:status: 1, mode: 2
Žinomos IDF monitoriaus problemos
Problemos, pastebėtos sistemoje „Windows“
· Rodyklių klavišai, kaip ir kai kurie kiti klavišai, neveikia GDB dėl „Windows“ konsolės apribojimų. · Kartais, kai „oidf.pypexits“ uždaromas, jis gali užstrigti iki 30 sekundžių, kol atnaujinamas IDF monitorius. · Kai vykdomas „ogdbpis“, jis gali trumpam užstrigti, kol pradeda bendrauti su GDBStub.

Espressif sistemos

34 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Darbo pradžia. Standartinė įrankių grandinės sąranka „Linux“ ir „macOS“ sistemose.

Diegimas žingsnis po žingsnio Tai išsamus diegimo proceso vadovas.
Kūrimo aplinkos nustatymas Štai kaip nustatyti ESP-IDF jūsų ESP32. · 1 veiksmas. Įdiekite būtinąsias sąlygas · 2 veiksmas. Gaukite ESP-IDF · 3 veiksmas. Nustatykite įrankius · 4 veiksmas. Nustatykite aplinkos kintamuosius · 5 veiksmas. Pirmieji ESP-IDF žingsniai
1 veiksmas. Įdiegimo prielaidos. Norint naudoti ESP-IDF su ESP32, reikia įdiegti kai kuriuos programinės įrangos paketus, pagrįstus jūsų operacine sistema. Šis sąrankos vadovas padės jums viską įdiegti „Linux“ ir „macOS“ pagrindu sukurtose sistemose.
„Linux“ naudotojams. Norėdami kompiliuoti naudodami ESP-IDF, turėsite gauti šiuos paketus. Paleistiną komandą lemia naudojama „Linux“ distribucija:
· Ubuntu ir 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“ ir „8“: sudo yum -y update ir sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
„CentOS 7“ vis dar palaikoma, tačiau geresnei naudotojo patirčiai rekomenduojama „CentOS 8“ versija. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Pastaba: · Norint naudoti su ESP-IDF, reikalinga „CMake“ 3.16 arba naujesnė versija. Jei jūsų OS versijose nėra tinkamos versijos, paleiskite komandą „otools/idf_tools.py install cmakepta“. · Jei aukščiau pateiktame sąraše nematote savo „Linux“ distribucijos, patikrinkite jos dokumentaciją, kad sužinotumėte, kurią komandą naudoti paketų diegimui.
„macOS“ naudotojams ESP-IDF naudos „macOS“ sistemoje pagal numatytuosius nustatymus įdiegtą „Python“ versiją. · „CMake“ ir „Ninja build“ diegimas: Jei turite „HomeBrew“, galite paleisti: brew install cmake ninja dfu-util Jei turite „MacPorts“, galite paleisti: sudo port install cmake ninja dfu-util Priešingu atveju, „macOS“ diegimo atsisiuntimus rasite „CMake“ ir „Ninja“ pagrindiniuose puslapiuose.

Espressif sistemos

35 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
· Taip pat primygtinai rekomenduojama įdiegti „ccache“, kad kompiliavimas vyktų greičiau. Jei turite „HomeBrew“, tai galima padaryti naudojant „brew install ccache“ arba „sudo port install ccache“ „MacPort“ įrenginiuose.
Pastaba: jei bet kurio veiksmo metu rodoma tokia klaida: xcrun: klaida: netinkamas aktyvus kūrėjo kelias (/Library/Developer/CommandLineTools), trūksta xcrun adresu: /Library/Developer/CommandLineTools/usr/bin/xcrun
Tada, norėdami tęsti, turėsite įdiegti „XCode“ komandinės eilutės įrankius. Juos galite įdiegti paleisdami „xcode-select –install“.
„Apple M1“ naudotojams. Jei naudojate „Apple M1“ platformą ir matote tokią klaidą: ĮSPĖJIMAS: įrankio „xtensa-esp32-elf“ versijos esp-2021r2-patch3-8.4.0 katalogas yra, bet įrankis nerastas. KLAIDA: įrankio „xtensa-esp32-elf“ versijų nėra. Paleiskite „install.sh“, kad jį įdiegtumėte.
arba: zsh: blogas procesoriaus tipas vykdomajame faile: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Tada turėsite įdiegti „Apple Rosetta 2“ paleisdami /usr/sbin/softwareupdate –install-rosetta –agree-to-license
„Python 3“ diegimas. Remiantis „macOS Catalina 10.15“ išleidimo pastabomis, nerekomenduojama naudoti „Python 2.7“, o „Python 2.7“ nebus įtraukta pagal numatytuosius nustatymus į būsimas „macOS“ versijas. Patikrinkite, kokį „Python“ šiuo metu naudojate: python –version
Jei išvestis yra kaip „Python 2.7.17“, jūsų numatytasis interpretatorius yra „Python 2.7“. Jei taip, patikrinkite, ar jūsų kompiuteryje dar nėra įdiegta „Python 3“: python3 –version
Jei aukščiau pateikta komanda grąžina klaidą, tai reiškia, kad „Python 3“ neįdiegtas. Žemiau pateikiamas pavyzdys.view „Python 3“ diegimo veiksmai.
· Įdiegimas naudojant „HomeBrew“ gali būti atliktas taip: brew install python3
· Jei turite „MacPorts“, galite paleisti: sudo port install python38
2 veiksmas. Gaukite ESP-IDF. Norėdami kurti programas ESP32, jums reikia „Espressif“ pateiktų programinės įrangos bibliotekų ESP-IDF saugykloje. Norėdami gauti ESP-IDF, eikite į diegimo katalogą ir klonuokite saugyklą naudodami „git clone“, vadovaudamiesi toliau pateiktomis instrukcijomis, skirtomis jūsų operacinei sistemai. Atidarykite terminalą ir vykdykite šias komandas:

Espressif sistemos

36 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 – rekursyvus https://github.com/espressif/esp-idf.git
ESP-IDF bus atsisiųstas į ~/esp/esp-idf. Informacijos apie tai, kurią ESP-IDF versiją naudoti konkrečioje situacijoje, rasite skyriuje ESP-IDF versijos.
3 veiksmas. Įrankių nustatymas. Be ESP-IDF, taip pat turite įdiegti ESP-IDF naudojamus įrankius, pvz., kompiliatorių, derinimo įrankį, „Python“ paketus ir kt., projektams, palaikantiems ESP32. cd ~/esp/esp-idf ./install.sh esp32
arba su „Fish shell“ kompaktiniu disku ~/esp/esp-idf ./install.fish esp32
Aukščiau pateiktos komandos įdiegia įrankius tik ESP32. Jei ketinate kurti projektus, skirtus daugiau lustų taikinių, turėtumėte juos visus išvardyti ir paleisti, pvz.ampfailas: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
arba su „Fish shell“ kompaktiniu disku ~/esp/esp-idf ./install.fish esp32,esp32s2
Norėdami įdiegti įrankius visoms palaikomoms programoms, paleiskite šią komandą: cd ~/esp/esp-idf ./install.sh all
arba su „Fish shell“ kompaktiniu disku ~/esp/esp-idf ./install.fish
Pastaba: „macOS“ naudotojams, jei bet kurio veiksmo metu rodoma tokia klaida:urlAtidarymo klaida [SSL: CERTIFICATE_VERIFY_FAILED] Nepavyko patikrinti sertifikato: nepavyko gauti vietinio išdavėjo sertifikato (_ssl.c:xxx)
Sertifikatus galite įdiegti paleisdami komandą „Install Certificates.command“ savo kompiuterio „Python“ aplanke. Išsamesnės informacijos žr. skyriuje „Atsisiuntimo klaida diegiant ESP-IDF įrankius“.

Alternatyva File Atsisiuntimai Įrankių diegimo programa atsisiunčia keletą filepridedama prie „GitHub“ leidimų. Jei prieiga prie „GitHub“ lėta, galima nustatyti aplinkos kintamąjį, kad „GitHub“ išteklių atsisiuntimams būtų teikiama pirmenybė „Espressifns“ atsisiuntimo serveriui.

Pastaba: šis nustatymas valdo tik atskirus įrankius, atsisiųstus iš „GitHub“ leidimų, jis nekeičia URLNaudojamas norint pasiekti bet kurias „Git“ saugyklas.

Norėdami diegdami įrankius pirmenybę teikti „Espressif“ atsisiuntimo serveriui, vykdydami install.sh naudokite šią komandų seką:

Espressif sistemos

37 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Įrankių diegimo kelio tinkinimas Šiame veiksme pristatyti scenarijai įdiegia ESP-IDF reikalingus kompiliavimo įrankius vartotojo pagrindiniame kataloge: $HOME/.espressif sistemoje „Linux“. Jei norite įdiegti įrankius kitame kataloge, prieš paleisdami diegimo scenarijus nustatykite aplinkos kintamąjį IDF_TOOLS_PATH. Įsitikinkite, kad jūsų vartotojo paskyra turi pakankamai teisių skaityti ir rašyti šį kelią. Jei keičiate IDF_TOOLS_PATH, įsitikinkite, kad jis nustatytas į tą pačią reikšmę kiekvieną kartą vykdant diegimo scenarijų („install.bat“, „install.ps1“ arba „install.sh“) ir eksportavimo scenarijų („export.bat“, „export.ps1“ arba „export.sh“).
4 veiksmas. Nustatykite aplinkos kintamuosius. Įdiegti įrankiai dar nėra įtraukti į PATH aplinkos kintamąjį. Kad įrankius būtų galima naudoti komandinėje eilutėje, reikia nustatyti kai kuriuos aplinkos kintamuosius. ESP-IDF pateikia kitą scenarijų, kuris tai atlieka. Terminale, kuriame ketinate naudoti ESP-IDF, paleiskite:
. $HOME/esp/esp-idf/export.sh
arba žuvims (palaikoma tik nuo žuvų 3.0.0 versijos):
$HOME/esp/esp-idf/export.fish
Atkreipkite dėmesį į tarpą tarp taško ir kelio! Jei planuojate dažnai naudoti „esp-idf“, galite sukurti pseudonimą „export.sh“ vykdymui:
1. Nukopijuokite ir įklijuokite šią komandą į savo „shellns pro“file (.profile, .bashrc, .zprofileir tt)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Atnaujinkite konfigūraciją paleisdami terminalo sesiją iš naujo arba paleisdami kodą source [kelias į pro]file],
pvzample, šaltinis ~/.bashrc. Dabar galite paleisti „get_idf“, kad nustatytumėte arba atnaujintumėte „esp-idf“ aplinką bet kurioje terminalo sesijoje. Techniškai galite pridėti „export.sh“ prie savo „shellns pro“.file tiesiogiai; tačiau tai nerekomenduojama. Taip padarius, IDF virtualioji aplinka bus aktyvuota kiekvienoje terminalo sesijoje (įskaitant tas, kuriose IDF nereikalingas), taip pažeidžiant virtualiosios aplinkos paskirtį ir tikėtina, kad paveikus kitą programinę įrangą.
5 veiksmas. Pirmieji ESP-IDF žingsniai Kadangi visi reikalavimai įvykdyti, kita tema padės jums pradėti savo pirmąjį projektą. Šis vadovas padės jums atlikti pirmuosius ESP-IDF naudojimo žingsnius. Vadovaukitės šiuo vadovu, kad pradėtumėte naują projektą ESP32 ir sukurtumėte, įdiegtumėte ir stebėtumėte įrenginio išvestį.
Pastaba: jei dar neįdiegėte ESP-IDF, eikite į diegimo skyrių ir vykdykite instrukcijas, kad gautumėte visą šiam vadovui naudoti reikalingą programinę įrangą.

Pradėkite projektą Dabar esate pasiruošę parengti savo paraišką ESP32. Galite pradėti nuo projekto getstarted/hello_world iš pvz.amples katalogą ESP-IDF.

Svarbu: ESP-IDF kūrimo sistema nepalaiko tarpų keliuose į ESP-IDF ar projektus.

Nukopijuokite projektą „get-started/hello_world“ į katalogą „~/esp“:

Espressif sistemos

38 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Pastaba: Yra įvairių pavyzdžiųample projektus buvamples katalogą ESP-IDF. Galite nukopijuoti bet kurį projektą taip pat, kaip aprašyta aukščiau, ir paleisti jį. Taip pat galima statyti exampfailus vietoje jų pirmiausia nenukopijavus.
Prijunkite įrenginį. Dabar prijunkite ESP32 plokštę prie kompiuterio ir patikrinkite, kuriame nuosekliajame prievade ji matoma. Nuosekliųjų prievadų pavadinimai yra tokie:
· Linux: pradedant nuo /dev/tty · macOS: pradedant nuo /dev/cu. Jei nežinote, kaip patikrinti nuosekliojo prievado pavadinimą, išsamią informaciją rasite skyriuje „Nuoseklaus ryšio užmezgimas naudojant ESP32“.
Pastaba: prievado pavadinimą laikykite po ranka, nes jo prireiks atliekant kitus veiksmus.
Projekto konfigūravimas Eikite į savo hello_world katalogą, nustatykite ESP32 kaip paskirties vietą ir paleiskite projekto konfigūravimo įrankį menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Atidarę naują projektą, pirmiausia turėtumėte nustatyti paskirties vietą naudodami komandą „idf.py set-target esp32“. Atminkite, kad esamos projekto versijos ir konfigūracijos, jei tokių yra, šio proceso metu bus išvalytos ir inicijuotos. Paskirties vietą galima išsaugoti aplinkos kintamajame, kad šis žingsnis būtų praleistas. Daugiau informacijos rasite skyriuje „Pasirinkite paskirties lustą: set-target“. Jei ankstesni veiksmai atlikti teisingai, pasirodys šis meniu:

17 pav.: Projekto konfigūracija – pagrindinis langas. Šiame meniu galite nustatyti projektui būdingus kintamuosius, pvz., „Wi-Fi“ tinklo pavadinimą ir slaptažodį, procesoriaus greitį ir kt. Projekto nustatymas naudojant „menuconfig“ gali būti praleistas, jei tai „hello_worldp“, nes ši funkcija...ample bėga su

Espressif sistemos

39 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
numatytoji konfigūracija.
Dėmesio: jei naudojate ESP32-DevKitC plokštę su ESP32-SOLO-1 moduliu arba ESP32-DevKitM-1 plokštę su ESP32-MIN1-1(1U) moduliu, prieš mirksėdami įjunkite vieno branduolio režimą (CONFIG_FREERTOS_UNICORE) meniu konfigūracijoje.amples.
Pastaba: Meniu spalvos jūsų terminale gali skirtis. Išvaizdą galite pakeisti naudodami parinktį „–style“. Norėdami gauti daugiau informacijos, paleiskite komandą „idf.py menuconfig –help“.
Jei naudojate vieną iš palaikomų kūrimo plokščių, galite paspartinti kūrimą naudodami plokščių palaikymo paketą. Daugiau informacijos žr. skyriuje „Papildomi patarimai“.
Sukurkite projektą Sukurkite projektą paleisdami:
idf.py build
Ši komanda sukompiliuos programą ir visus ESP-IDF komponentus, tada sugeneruos įkrovos įkroviklį, skaidinių lentelę ir programos dvejetainius failus.
$ idf.py build Vykdomas cmake kataloge /kelias/iki/hello_pasaulio/build Vykdomas „cmake -G Ninja –warn-unitialized /kelias/iki/hello_pasaulio“… Įspėjimas apie neinicializuotas reikšmes. — Rasta Git: /usr/bin/git (rasta versija „2.17.0“) — Kuriamas tuščias aws_iot komponentas dėl konfigūracijos — Komponentų pavadinimai: … — Komponentų keliai: …
… (daugiau kūrimo sistemos išvesties eilučių)
[527/527] Generuojamas hello_world.bin esptool.py v2.3.1
Projekto kūrimas baigtas. Norėdami atlikti „flash“ operaciją, paleiskite šią komandą: ../../../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 arba paleiskite „idf.py -p PORT flash“
Jei klaidų nėra, kūrimas bus baigtas generuojant dvejetainį programinės įrangos failą .bin files.
Įrenginio perrašymas Įkelkite ką tik sukurtus dvejetainius failus (bootloader.bin, partition-table.bin ir hello_world.bin) į savo ESP32 plokštę paleisdami:
idf.py -p PORT [-b BAUD] blykstė
Pakeiskite PORT savo ESP32 plokštės nuosekliojo prievado pavadinimu. Taip pat galite pakeisti mirksinčios programos duomenų perdavimo spartą pakeisdami BAUD reikiama duomenų perdavimo sparta. Numatytoji duomenų perdavimo sparta yra 460800. Daugiau informacijos apie idf.py argumentus rasite idf.py faile.
Pastaba: Pasirinkus „flash“, projektas automatiškai kompiliuojamas ir mirksi, todėl paleisti „idf.py build“ nebūtina.

Espressif sistemos

40 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia

Iškilo problemų mirksėjimo metu? Jei vykdydami nurodytą komandą matote tokias klaidas kaip „Failed to connectp“, tam gali būti kelios priežastys. Viena iš priežasčių gali būti problemos, su kuriomis susiduria „esptool.py“ – programa, kurią iškviečia kompiliavimo sistema, norėdama iš naujo nustatyti lustą, sąveikauti su ROM įkrovos įkrovikliu ir atnaujinti programinę-aparatinę įrangą. Vienas paprastas sprendimas, kurį galite išbandyti, yra rankinis atkūrimas, aprašytas toliau, o jei tai nepadeda, daugiau informacijos apie galimas problemas galite rasti skyriuje „Trikčių šalinimas“.
„esptool.py“ automatiškai atstato ESP32, prijungdamas USB-nuosekliojo keitiklio mikroschemos, pvz., FTDI arba CP210x, DTR ir RTS valdymo linijas (daugiau informacijos žr. skyriuje „Nuosekliojo ryšio su ESP32 užmezgimas“). DTR ir RTS valdymo linijos savo ruožtu prijungiamos prie ESP32 GPIO0 ir CHIP_PU (EN) kontaktų, todėl pasikeičia garsumas.tagDTR ir RTS lygiai paleis ESP32 į programinės įrangos atsisiuntimo režimą. Pavyzdžiui,ampTaigi, patikrinkite ESP32 DevKitC kūrimo plokštės schemą.
Apskritai, su oficialiomis „esp-idf“ kūrimo plokštėmis problemų kilti neturėtų. Tačiau „esptool.py“ negali automatiškai atkurti jūsų aparatinės įrangos šiais atvejais:
· Jūsų aparatinėje įrangoje DTR ir RTS linijos nėra prijungtos prie GPIO0 ir CHIP_PU · DTR ir RTS linijos sukonfigūruotos skirtingai · Tokių nuosekliųjų valdymo linijų iš viso nėra
Priklausomai nuo turimos aparatinės įrangos tipo, gali būti įmanoma rankiniu būdu įjungti ESP32 plokštę į programinės įrangos atsisiuntimo režimą (atstatyti).
· „Espressif“ pagamintų kūrimo plokščių atveju šią informaciją galite rasti atitinkamuose pradžios vadovuose arba naudotojo vadovuose. Pavyzdžiui,ampPavyzdžiui, norėdami rankiniu būdu atkurti ESP-IDF kūrimo plokštę, palaikykite nuspaudę „Boot“ mygtuką (GPIO0) ir paspauskite EN mygtuką (CHIP_PU).
· Kitų tipų aparatinei įrangai pabandykite ištraukti GPIO0.

Normalus veikimas Mirksėdami matysite išvesties žurnalą, panašų į šį:
... 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 Nuoseklusis prievadas /dev/ttyUSB0 Prisijungiama…….._ Lustas yra ESP32D0WDQ6 (0 versija) Funkcijos: WiFi, BT, dviejų branduolių, kodavimo schema Nėra Crystal yra 40MHz MAC: 24:0a:c4:05:b9:14 Įkeliamas fragmentas… Veikia fragmentas… Funkcinis fragmentas veikia… Keičiamas perdavimo greitis į 460800 Pakeista. Konfigūruojamas „flash“ atminties dydis… Suspausta 3072 baitai iki 103… Rašoma 0x00008000… (100 %) Parašė 3072 baitus (103 suspausti) 0x00008000 greičiu per 0.0 sekundžių (efektyvus 5962.8 kbit/s)… Duomenų maiša patvirtinta. Suspausta 26096 baitai iki 15408… Rašoma 0x00001000 greičiu… (100 %) Parašė 26096 baitus (15408 suspausti) 0x00001000 greičiu per 0.4 sekundės (efektyvus 546.7 kbit/s)… Duomenų maiša patvirtinta. Suspausta 147104 baitai iki 77364… Rašoma ties 0x00010000… (20 %) Rašoma ties 0x00014000… (40 %) Rašoma ties 0x00018000… (60 %) Rašoma ties 0x0001c000… (80 %)
(tęsinys kitame puslapyje)

Espressif sistemos

41 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
(tęsinys iš ankstesnio puslapio) Rašoma 0x00020000… (100 %). Įrašė 147104 baitus (77364 suspausti) 0x00010000 greičiu per 1.9 sekundės (efektyvus 615,5 kbit/s)… Duomenų maiša patvirtinta.
Išeinama... Sunkus nustatymas iš naujo naudojant RTS kaištį... Atlikta
Jei pasibaigus atminties įdiegimo procesui problemų nekils, plokštė bus paleista iš naujo ir paleis „theohello_worldpapplication“. Jei norite naudoti „Eclipse“ arba „VS Code IDE“, o ne paleisti „idf.py“, peržiūrėkite „Eclipse“ papildinį, „VSCode“ plėtinį.
Išvesties stebėjimas Norėdami patikrinti, ar „ohello_worldpis“ tikrai veikia, įveskite idf.py -p PORT monitor (nepamirškite PORT pakeisti savo nuosekliojo prievado pavadinimu). Ši komanda paleidžia IDF monitoriaus programą:
$ idf.py -p monitorius Vykdomas „idf_monitor“ kataloge […]/esp/hello_world/build Vykdomas „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf“… — idf_monitor įjungtas 115200 —– Išeiti: Ctrl+] | Meniu: Ctrl+T | Pagalba: Ctrl+T, o tada Ctrl+H –ets 2016 m. birželio 8 d. 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016 m. birželio 8 d. 00:22:57 …
Slinkdami aukštyn paleikdami ir diagnostinius žurnalus, turėtumėte pamatyti programos atspausdintą tekstą „Sveikas, pasauli!“.
... Sveikas, pasauli! Paleidžiama iš naujo po 10 sekundžių… Tai yra „esp32“ lustas su 2 procesoriaus branduoliais, „WiFi“ / „BT“ / „BLE“, 1-a silicio versija, 2 MB išorine „flash“ atmintimi. Minimalus laisvos atminties dydis: 298968 baitai. Paleidžiama iš naujo po 9 sekundžių… Paleidžiama iš naujo po 8 sekundžių… Paleidžiama iš naujo po 7 sekundžių…
Norėdami išeiti iš IDF monitoriaus, naudokite spartųjį klavišą Ctrl+]. Jei IDF monitorius sugenda netrukus po įkėlimo arba jei vietoj aukščiau pateiktų pranešimų matote atsitiktines šiukšles, panašias į pateiktus toliau, jūsų plokštėje greičiausiai naudojamas 26 MHz kristalas. Dauguma kūrimo plokščių konstrukcijų naudoja 40 MHz dažnį, todėl ESP-IDF šį dažnį naudoja kaip numatytąją reikšmę.

Jei turite tokią problemą, atlikite šiuos veiksmus:
1. Išeikite iš monitoriaus. 2. Grįžkite į meniu konfigūrą. 3. Eikite į Komponentų konfigūracija > Aparatūros nustatymai > Pagrindinė XTAL konfigūracija > Pagrindinė XTAL
dažnį, tada pakeiskite CONFIG_XTAL_FREQ_SEL į 26 MHz. 4. Po to dar kartą sukompiliuokite ir įdiekite programą.

Espressif sistemos

42 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Dabartinėje ESP-IDF versijoje pagrindiniai ESP32 palaikomi XTAL dažniai yra šie:
· 26 MHz · 40 MHz
Pastaba: galite sujungti kūrimą, mirksėjimą ir stebėjimą į vieną veiksmą paleisdami: idf.py -p PORT flash monitor
Taip pat žr.: · IDF monitorius, kuriame pateikiami patogūs spartieji klavišai ir daugiau informacijos apie IDF monitoriaus naudojimą. · idf.py, kuriame pateikiama išsami informacija apie idf.py komandas ir parinktis.
Tai viskas, ko jums reikia norint pradėti naudoti ESP32! Dabar esate pasiruošę išbandyti kitus buvusį...amparba iš karto pradėkite kurti savo programas.
Svarbu: Kai kurie iš buvusiųampfailai nepalaiko ESP32, nes reikalinga aparatinė įranga nėra įtraukta į ESP32, todėl ji negali būti palaikoma. Jei kuriate exampprašome patikrinti README failą file Palaikomų taikinių lentelėje. Jei ji yra, įskaitant ESP32 taikinį, arba lentelės iš viso nėra, pvz.ampVeiks su ESP32.
Papildomi patarimai
Leidimų problemos /dev/ttyUSB0 Naudojant kai kurias „Linux“ distribucijas, mirksint ESP32, gali būti parodytas klaidos pranešimas „Nepavyko atidaryti prievado /dev/ttyUSB0“. Tai galima išspręsti pridedant dabartinį vartotoją prie išrenkamųjų numerių grupės.
„Python“ suderinamumas ESP-IDF palaiko „Python 3.7“ arba naujesnę versiją. Rekomenduojama atnaujinti operacinę sistemą į naujausią versiją, atitinkančią šį reikalavimą. Kitos parinktys apima „Python“ diegimą iš šaltinių arba „Python“ versijų valdymo sistemos, pvz., „pyenv“, naudojimą.
Pradėkite nuo plokštės palaikymo paketo. Norėdami pagreitinti prototipų kūrimą kai kuriose kūrimo plokštėse, galite naudoti plokštės palaikymo paketus (BSP), kurie leidžia lengvai inicijuoti konkrečią plokštę vos keliais funkcijų iškvietimais. BSP paprastai palaiko visus kūrimo plokštėje esančius aparatinės įrangos komponentus. Be kontaktų išdėstymo apibrėžimo ir inicijavimo funkcijų, BSP pateikiamas su išorinių komponentų, tokių kaip jutikliai, ekranai, garso kodekai ir kt., tvarkyklėmis. BSP platinami per IDF komponentų tvarkyklę, todėl juos galima rasti IDF komponentų registre. Čia yra pavyzdys.ampKaip pridėti ESP-WROVER-KIT BSP prie savo projekto: idf.py add-dependency esp_wrover_kit
Daugiau exampBSP naudojimo būdus galima rasti BSP pavyzdyjeamples aplankas.
Patarimas: ESP-IDF atnaujinimas Rekomenduojama kartkartėmis atnaujinti ESP-IDF, nes naujesnės versijos ištaiso klaidas ir (arba) pateikia naujų funkcijų. Atminkite, kad kiekviena pagrindinė ir papildoma ESP-IDF versija turi susijusį palaikymo laikotarpį, ir kai vienos leidimo šakos gyvavimo laikas artėja prie pabaigos (EOL), visiems vartotojams rekomenduojama atnaujinti savo projektus į naujesnius ESP-IDF leidimus. Norėdami sužinoti daugiau apie palaikymo laikotarpius, žr. ESP-IDF versijos.

Espressif sistemos

43 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

1 skyrius. Pradžia
Paprasčiausias būdas atlikti atnaujinimą – ištrinti esamą aplanką „esp-idf“ ir jį dar kartą klonuoti, tarsi atliekant pradinį diegimą, aprašytą 2 veiksme. Gaukite ESP-IDF. Kitas sprendimas – atnaujinti tik tai, kas pasikeitė. Atnaujinimo procedūra priklauso nuo naudojamos ESP-IDF versijos. Atnaujinę ESP-IDF, dar kartą paleiskite diegimo scenarijų, jei naujai ESP-IDF versijai reikalingos skirtingos įrankių versijos. Žr. 3 veiksmo instrukcijas. Nustatykite įrankius. Įdiegę naujus įrankius, atnaujinkite aplinką naudodami eksportavimo scenarijų. Žr. 4 veiksmo instrukcijas. Nustatykite aplinkos kintamuosius.
Susiję dokumentai · Nuoseklaus ryšio užmezgimas naudojant ESP32 · „Eclipse“ papildinys · „VSCode“ plėtinys · IDF monitorius
1.4 Sukurkite savo pirmąjį projektą
Jei jau turite įdiegtą ESP-IDF ir nenaudojate IDE, galite sukurti savo pirmąjį projektą iš komandinės eilutės, atlikdami veiksmus „Pradėti projektą sistemoje „Windows““ arba „Pradėti projektą sistemoje „Linux“ ir „macOS“.
1.5 ESP-IDF pašalinimas
Jei norite pašalinti ESP-IDF, atlikite toliau nurodytus veiksmus, kaip pašalinti ESP-IDF.

Espressif sistemos

44 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

2 skyrius
API nuoroda
2.1 API konvencijos
Šiame dokumente aprašomos ESP-IDF taikomųjų programų programavimo sąsajoms (API) būdingos konvencijos ir prielaidos. ESP-IDF teikia kelių rūšių programavimo sąsajas:
· Viešojoje antraštėje deklaruojamos C funkcijos, struktūros, sąrašai, tipų apibrėžimai ir išankstinio apdorojimo makrokomandos fileESPIDF komponentų. Įvairiuose programavimo vadovo API nuorodų skyriaus puslapiuose pateikiami šių funkcijų, struktūrų ir tipų aprašymai.
· Kompiliavimo sistemos funkcijos, iš anksto apibrėžti kintamieji ir parinktys. Jos aprašytos kompiliavimo sistemos vadove. · „Kconfig“ parinktis galima naudoti kode ir kompiliavimo sistemoje (CMakeLists.txt). files. · Pagrindiniai įrankiai ir jų komandinės eilutės parametrai taip pat yra ESP-IDF sąsajos dalis. ESP-IDF sudaro komponentai, specialiai parašyti ESP-IDF, taip pat trečiųjų šalių bibliotekos. Kai kuriais atvejais prie trečiosios šalies bibliotekos pridedamas ESP-IDF skirtas apvalkalas, suteikiantis sąsają, kuri yra paprastesnė arba geriau integruota su kitomis ESP-IDF priemonėmis. Kitais atvejais programų kūrėjams pateikiama originali trečiosios šalies bibliotekos API. Tolesniuose skyriuose paaiškinami kai kurie ESP-IDF API aspektai ir jų naudojimas.
2.1.1 Klaidų tvarkymas
Dauguma ESP-IDF API grąžina klaidų kodus, apibrėžtus su esp_err_t tipu. Daugiau informacijos apie klaidų tvarkymo metodus rasite skyriuje „Klaidų tvarkymas“. Klaidų kodų nuorodoje pateikiamas ESP-IDF komponentų grąžinamų klaidų kodų sąrašas.
2.1.2 Konfigūracijos struktūros
Svarbu: teisingas konfigūracijos struktūrų inicijavimas yra svarbi programos suderinamumo su būsimomis ESP-IDF versijomis dalis.
Dauguma ESP-IDF inicijavimo arba konfigūravimo funkcijų kaip argumentą priima rodyklę į konfigūracijos struktūrą. Pavyzdžiui,ampLe:
45

2 skyrius. API nuoroda

const esp_timer_create_args_t my_timer_args = { .callback = ir my_timer_callback, .arg = callback_arg, .name = „my_timer“}
}; esp_timer_handle_t mano_laikmatis; esp_err_t klaida = esp_timer_create(&my_timer_args, &my_timer);
Inicializacijos funkcijos niekada neišsaugo rodyklės į konfigūracijos struktūrą, todėl saugu paskirstyti struktūrą stekoje.
Programa turi inicijuoti visus struktūros laukus. Toliau nurodyta informacija yra neteisinga:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Neteisinga! Laukai .arg ir .name nėra inicijuoti */ esp_timer_create(&my_timer_args, &my_timer);
Dauguma ESP-IDF buv.ampStruktūros inicializavimui naudoja C99 skirtus inicializatorius, nes jie suteikia glaustą būdą nustatyti laukų poaibį ir likusius laukus inicijuoti iki nulio:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Teisingai, laukai .arg ir .name inicijuoti nuliu */
};
C++ kalba nepalaiko nurodytos inicializatorių sintaksės iki C++20 versijos, tačiau GCC kompiliatorius ją iš dalies palaiko kaip plėtinį. Naudojant ESP-IDF API C++ kode, galite apsvarstyti galimybę naudoti šį šabloną:
esp_timer_create_args_t my_timer_args = {}; /* Visi laukai inicijuojami nuliu */ my_timer_args.callback = &my_timer_callback;

Numatytieji inicializatoriai
Kai kurioms konfigūracijos struktūroms ESP-IDF pateikia makrokomandas laukų numatytosioms reikšmėms nustatyti:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG išplečiamas iki nurodyto inicializatoriaus.
Dabar visi laukai nustatyti pagal numatytąsias reikšmes. Bet kurį lauką vis dar galima modifikuoti: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Rekomenduojama naudoti numatytąsias inicializavimo makrokomandas, kai jos pateikiamos konkrečiai konfigūracijos struktūrai.

2.1.3 Privačios API sąsajos
Tam tikra antraštė fileESP-IDF aprašuose yra API, skirti naudoti tik ESP-IDF šaltinio kode, o ne programose. Tokia antraštė filedažnai savo pavadinime arba kelyje yra „private“ arba „esp_private“. Tam tikri komponentai, pvz., „hal“, turi tik privačias API sąsajas. Privačios API sąsajos gali būti pašalintos arba nesuderinamai pakeistos tarp nedidelių arba pataisų leidimų.

2.1.4 Komponentai example projektus
ESP-IDF exampFailuose yra įvairių projektų, demonstruojančių ESP-IDF API naudojimą. Siekiant sumažinti kodo dubliavimą pvz.ampkomponentuose, kuriuos naudoja kelios egz., yra apibrėžtos kelios įprastos pagalbinės funkcijos.amples.

Espressif sistemos

46 Pateikti atsiliepimą apie dokumentą

5.0.9 versijos leidimas

2 skyrius. API nuoroda
Tai apima komponentus, esančius

Dokumentai / Ištekliai

„Espressif Systems ESP32 Dev Kitc“ kūrimo plokštė [pdfVartotojo vadovas
ESP32 Dev Kitc kūrimo plokštė, ESP32, Dev Kitc kūrimo plokštė, Kitc kūrimo plokštė, Plėtros plokštė, Valdyba

Nuorodos

Palikite komentarą

Jūsų el. pašto adresas nebus skelbiamas. Privalomi laukai pažymėti *