ESP32-C3 belaidis nuotykis
ESP32-C3 belaidis nuotykis
Išsamus IoT vadovas
Espressif Systems 12 m. birželio 2023 d
Specifikacijos
- Produktas: ESP32-C3 Wireless Adventure
- Gamintojas: Espressif Systems
- Data: 12 m. birželio 2023 d
Produkto naudojimo instrukcijos
Pasiruošimas
Prieš naudodami ESP32-C3 Wireless Adventure, įsitikinkite, kad esate
susipažinęs su IoT sąvokomis ir architektūra. Tai padės
Jūs suprantate, kaip įrenginys dera į didesnę IoT ekosistemą
ir jo galimas pritaikymas išmaniuosiuose namuose.
IoT projektų įvadas ir praktika
Šiame skyriuje sužinosite apie tipinius IoT projektus,
įskaitant pagrindinius įprastų daiktų interneto įrenginių modulius, pagrindinius modulius
klientų programų ir įprastų daiktų interneto debesų platformų. Tai bus
suteikti jums pagrindą suprasti ir sukurti savo
savo IoT projektus.
Praktika: Smart Light Project
Šiame praktikos projekte išmoksite susikurti išmanųjį
šviesos naudojant ESP32-C3 Wireless Adventure. Projekto struktūra,
funkcijos, techninės įrangos paruošimas ir kūrimo procesas
išsamiai paaiškino.
Projekto struktūra
Projektą sudaro keli komponentai, įskaitant
ESP32-C3 Wireless Adventure, šviesos diodai, jutikliai ir debesis
backend.
Projekto funkcijos
Išmanusis šviesos projektas leidžia valdyti ryškumą ir
šviesos diodų spalva nuotoliniu būdu per mobiliąją programėlę arba web
sąsaja.
Aparatūros paruošimas
Norėdami pasiruošti projektui, turėsite surinkti
būtinus aparatūros komponentus, pvz., ESP32-C3 Wireless
Nuotykių lenta, šviesos diodai, rezistoriai ir maitinimo šaltinis.
Kūrimo procesas
Kūrimo procesas apima plėtros nustatymą
aplinką, rašydami kodą, skirtą šviesos diodams valdyti, prisijungti prie
„Cloud Backend“ ir išmaniojo telefono funkcionalumo išbandymas
šviesos.
Įvadas į ESP RainMaker
ESP RainMaker yra galinga IoT kūrimo sistema
prietaisai. Šiame skyriuje sužinosite, kas yra ESP RainMaker ir
kaip tai galima įgyvendinti jūsų projektuose.
Kas yra ESP RainMaker?
ESP RainMaker yra debesies pagrindu sukurta platforma, kuri suteikia rinkinį
įrankiai ir paslaugos, skirti daiktų interneto įrenginiams kurti ir valdyti.
ESP RainMaker diegimas
Šiame skyriuje paaiškinami įvairūs komponentai
įdiegti ESP RainMaker, įskaitant pretenzijų pateikimo paslaugą,
„RainMaker Agent“, „Cloud Backend“ ir „RainMaker“ klientas.
Praktika: pagrindiniai dalykai kuriant naudojant ESP RainMaker
Šiame praktikos skyriuje sužinosite apie pagrindinius dalykus
apsvarstykite kurdami su ESP RainMaker. Tai apima įrenginį
pretenzijų pateikimas, duomenų sinchronizavimas ir vartotojų valdymas.
ESP RainMaker savybės
ESP RainMaker siūlo įvairias vartotojų valdymo funkcijas, pabaiga
vartotojai ir administratoriai. Šios funkcijos leidžia lengvai naudoti įrenginį
sąranka, nuotolinis valdymas ir stebėjimas.
Plėtros aplinkos nustatymas
Šiame skyriuje pateikiama pabaigaview ESP-IDF (Espressif IoT
Development Framework), kuri yra oficiali plėtros sistema
ESP32 pagrįstiems įrenginiams. Tai paaiškina skirtingas versijas
ESP-IDF ir kaip nustatyti kūrimo aplinką.
Aparatinės įrangos ir tvarkyklių kūrimas
„Smart Light“ gaminių techninės įrangos projektavimas, pagrįstas ESP32-C3
Šiame skyriuje pagrindinis dėmesys skiriamas išmaniosios šviesos techninės įrangos dizainui
produktai, pagrįsti ESP32-C3 Wireless Adventure. Jis apima
išmaniųjų šviesos gaminių ypatybės ir sudėtis, taip pat
ESP32-C3 pagrindinės sistemos techninės įrangos dizainas.
Smart Light gaminių savybės ir sudėtis
Šiame poskyryje paaiškinamos funkcijos ir komponentai
išmaniųjų šviesos gaminių. Jame aptariamos įvairios funkcijos
ir dizaino aspektai kuriant išmaniuosius žibintus.
ESP32-C3 pagrindinės sistemos techninės įrangos projektavimas
ESP32-C3 pagrindinės sistemos techninės įrangos konstrukcija apima galią
maitinimas, įjungimo seka, sistemos nustatymas iš naujo, SPI blykstė, laikrodžio šaltinis,
RF ir antenos aspektai. Šiame poskyryje numatyta
išsamią informaciją apie šiuos aspektus.
DUK
K: Kas yra ESP RainMaker?
A: ESP RainMaker yra debesies pagrindu sukurta platforma, teikianti įrankius
ir IoT įrenginių kūrimo ir valdymo paslaugos. Tai supaprastina
kūrimo procesą ir leidžia lengvai nustatyti įrenginį nuotoliniu būdu
kontrolė ir stebėjimas.
K: Kaip galiu nustatyti kūrimo aplinką
ESP32-C3?
A: Norėdami nustatyti ESP32-C3 kūrimo aplinką, jums reikia
įdiegti ESP-IDF (Espressif IoT Development Framework) ir
sukonfigūruokite jį pagal pateiktas instrukcijas. ESP-IDF yra
oficiali ESP32 pagrįstų įrenginių kūrimo sistema.
K: Kokios yra ESP RainMaker funkcijos?
A: ESP RainMaker siūlo įvairias funkcijas, įskaitant vartotoją
valdymo, galutinio vartotojo funkcijas ir administratoriaus funkcijas. Vartotojo valdymas
leidžia lengvai pareikšti teises į įrenginį ir sinchronizuoti duomenis. Galutinis vartotojas
funkcijos leidžia nuotoliniu būdu valdyti įrenginius per mobiliąją programėlę arba
web sąsaja. Administratoriaus funkcijos suteikia įrenginių stebėjimo įrankius
ir valdymas.
ESP32-C3 belaidis nuotykis
Išsamus IoT vadovas
Espressif Systems 12 m. birželio 2023 d
Turinys
I Pasiruošimas
1
1 Įvadas į daiktų internetą
3
1.1 IoT architektūra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 IoT programa išmaniuosiuose namuose . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 IoT projektų įvadas ir praktika
9
2.1 Įvadas į tipinius daiktų interneto projektus . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Pagrindiniai įprastų daiktų interneto įrenginių moduliai . . . . . . . . . . . . . . . . . 9
2.1.2 Pagrindiniai klientų taikomųjų programų moduliai . . . . . . . . . . . . . . . . . . . 10
2.1.3 Įprastų daiktų interneto debesų platformų įvadas . . . . . . . . . . . . . . 11
2.2 Praktika: išmaniosios šviesos projektas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Projekto struktūra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Projekto funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Aparatinės įrangos paruošimas . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Kūrimo procesas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Įvadas į ESP RainMaker
19
3.1 Kas yra ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 ESP RainMaker diegimas . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Paraiškų pateikimo paslauga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 RainMaker agentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 „Cloud Backend“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 RainMaker klientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Praktika: pagrindiniai dalykai kuriant naudojant ESP RainMaker . . . . . . . . . . . . 25
3.4 ESP RainMaker savybės . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Vartotojų valdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Galutinio vartotojo funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Administratoriaus funkcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Kūrimo aplinkos nustatymas
31
4.1 ESP-IDF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 ESP-IDF versijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 ESP-IDF Git darbo eiga . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Tinkamos versijos pasirinkimas . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Viršview ESP-IDF SDK katalogo . . . . . . . . . . . . . . . . . . . . 34 4.2 ESP-IDF kūrimo aplinkos nustatymas . . . . . . . . . . . . . . . . . 38 4.2.1 ESP-IDF kūrimo aplinkos nustatymas sistemoje Linux . . . . . . . . 38 4.2.2 ESP-IDF kūrimo aplinkos nustatymas sistemoje Windows . . . . . . 40 4.2.3 ESP-IDF kūrimo aplinkos nustatymas „Mac“ . . . . . . . . . 45 4.2.4 VS kodo diegimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Įvadas į trečiųjų šalių kūrimo aplinkas . . . . . . . . 46 4.3 ESP-IDF kompiliavimo sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Pagrindinės kompiliavimo sistemos sąvokos . . . . . . . . . . . . . . . . . . 47 4.3.2 Projektas File Struktūra . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Numatytosios kompiliavimo sistemos kūrimo taisyklės . . . . . . . . . . . . . 50 4.3.4 Įvadas į kompiliavimo scenarijų . . . . . . . . . . . . . . . . . . 51 4.3.5 Įvadas į bendrąsias komandas . . . . . . . . . . . . . . . . . . . 52 4.4 Praktika: sudarymas PvzampPrograma „Blink“ . . . . . . . . . . . . . . . . . . 53 4.4.1 Pvzample Analizė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Blink programos sudarymas . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Mirksėjimo programos mirksėjimas . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Blink programos nuosekliojo prievado žurnalo analizė . . . . . . . . . . . . . . 60 4.5 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Aparatinės įrangos ir tvarkyklių kūrimas
65
5 „Smart Light“ gaminių techninės įrangos projektavimas, pagrįstas ESP32-C3
67
5.1 Smart Light gaminių savybės ir sudėtis . . . . . . . . . . . . . . . 67
5.2 ESP32-C3 pagrindinės sistemos techninės įrangos projektavimas . . . . . . . . . . . . . . . . . . . 70
5.2.1 Maitinimo šaltinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Įjungimo seka ir sistemos nustatymas iš naujo . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Laikrodžio šaltinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF ir antena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Surišimo kaiščiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO ir PWM valdiklis . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Praktika: Išmaniosios šviesos sistemos sukūrimas naudojant ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Modulių pasirinkimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 PWM signalų GPIO konfigūravimas . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Programinės įrangos atsisiuntimas ir derinimo sąsaja . . . . . . . . . . . . 82
5.3.4 RD projektavimo gairės . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Maitinimo šaltinio projektavimo gairės . . . . . . . . . . . . . . . . . . . 86 5.4 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Vairuotojo kūrimas
87
6.1 Tvarkyklės kūrimo procesas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 išorinės programos . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 LED tvarkyklės pagrindai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Spalvų erdvės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED tvarkyklė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Šviesos diodų pritemdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Įvadas į PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 LED pritemdymo tvarkyklės kūrimas . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Nekintamoji saugykla (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM valdiklis (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM programavimas . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Praktika: tvarkyklių įtraukimas į „Smart Light Project“ . . . . . . . . . . . . . . . . . 103
6.5.1 Mygtuko tvarkyklė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 LED pritemdymo tvarkyklė . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Belaidis ryšys ir valdymas
109
7 „Wi-Fi“ konfigūracija ir prisijungimas
111
7.1 „Wi-Fi“ pagrindai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Įvadas į „Wi-Fi“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 IEEE 802.11 raida. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 „Wi-Fi“ sąvokos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 „Wi-Fi“ ryšys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 „Bluetooth“ pagrindai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 „Bluetooth“ įvadas . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 „Bluetooth“ sąvokos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth ryšys . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 „Wi-Fi“ tinklo konfigūracija . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 „Wi-Fi“ tinklo konfigūravimo vadovas . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Kiti metodai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 „Wi-Fi“ programavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 „Wi-Fi“ komponentai ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Pratimas: „Wi-Fi“ ryšys . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Pratimas: Išmanusis „Wi-Fi“ ryšys . . . . . . . . . . . . . . . . . . . . . 145
7.5 Praktika: „Wi-Fi“ konfigūracija „Smart Light Project“ . . . . . . . . . . . . . . . 156 7.5.1 „Wi-Fi“ ryšys „Smart Light Project“ . . . . . . . . . . . . . . . . . 156 7.5.2 Išmaniojo „Wi-Fi“ konfigūracija . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Vietinis valdymas
159
8.1 Vietinio valdymo įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Vietinio valdymo taikymas . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantagesą vietinis valdymas. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Valdomų įrenginių atradimas naudojant išmaniuosius telefonus . . . . . . . . . . 161
8.1.4 Duomenų ryšys tarp išmaniųjų telefonų ir įrenginių . . . . . . . . 162
8.2 Bendrieji vietinio aptikimo metodai . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Transliacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Daugialypė transliacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Transliacijos ir daugialypės transliacijos palyginimas . . . . . . . . . . . . . . 176
8.2.4 Daugialypės siuntimo programos protokolas mDNS vietiniam aptikimui . . . . . . . . 176
8.3 Bendrieji vietinių duomenų ryšio protokolai . . . . . . . . . . . . . . . 179
8.3.1 Perdavimo valdymo protokolas (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Hiperteksto perdavimo protokolas (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Vartotojo Datagram protokolas (UDP) . . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Apriboto taikymo protokolas (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 „Bluetooth“ protokolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Duomenų perdavimo protokolų santrauka . . . . . . . . . . . . . . . 203
8.4 Duomenų saugumo garantija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Transporto lygmens saugos (TLS) įvadas . . . . . . . . . . . . . 207
8.4.2 Įvadas į Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Praktika: Vietinis valdymas Smart Light projekte . . . . . . . . . . . . . . . . . . 217
8.5.1 „Wi-Fi“ pagrindu veikiančio vietinio valdymo serverio kūrimas . . . . . . . . . . . . . . . 217
8.5.2 Vietinio valdymo funkcionalumo tikrinimas naudojant scenarijus . . . . . . . . . . . 221
8.5.3 „Bluetooth“ pagrindu veikiančio vietinio valdymo serverio kūrimas . . . . . . . . . . . . 222
8.6 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Debesų valdymas
225
9.1 Įvadas į nuotolinio valdymo pultą . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Debesų duomenų perdavimo protokolai . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT principai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT pranešimo formatas . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokolo palyginimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 MQTT Broker nustatymas Linux ir Windows sistemoje . . . . . . . . . . . . 233 9.2.6 MQTT kliento nustatymas remiantis ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 MQTT duomenų saugumo užtikrinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Sertifikatų reikšmė ir funkcijos . . . . . . . . . . . . . . . . . . . 237 9.3.2 Sertifikatų generavimas vietoje . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 MQTT Broker konfigūravimas . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 MQTT kliento konfigūravimas . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Praktika: nuotolinis valdymas per ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMaker pagrindai . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Mazgo ir debesies fono ryšio protokolas . . . . . . . . . . . 244 9.4.3 Ryšys tarp Kliento ir „Cloud Backend“ . . . . . . . . . . . 249 9.4.4 Vartotojo vaidmenys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Pagrindinės paslaugos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Pvzample . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Programėlė RainMaker ir trečiųjų šalių integravimas . . . . . . . . . . . . . . . 262 9.5 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Programėlių išmaniesiems telefonams kūrimas
269
10.1 Išmaniųjų telefonų programų kūrimo įvadas . . . . . . . . . . . . . . . . . . 269
10.1.1 Baigtaview išmaniųjų telefonų programų kūrimas. . . . . . . . . . . . . . . 270
10.1.2 „Android“ projekto struktūra . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 „iOS“ projekto struktūra . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 „Android“ veiklos gyvavimo ciklas . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 „iOS“ gyvavimo ciklas ViewValdiklis . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Naujos išmaniojo telefono programos projekto kūrimas . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Pasiruošimas „Android“ kūrimui . . . . . . . . . . . . . . . . . . . 275
10.2.2 Naujo „Android“ projekto kūrimas . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 „MyRainmaker“ priklausomybių pridėjimas . . . . . . . . . . . . . . . . . 276
10.2.4 Leidimo užklausa sistemoje „Android“ . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Pasiruošimas iOS kūrimui . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Naujo iOS projekto kūrimas . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 „MyRainmaker“ priklausomybių pridėjimas . . . . . . . . . . . . . . . . . 279
10.2.8 Leidimo užklausa sistemoje „iOS“ . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Programėlės funkcinių reikalavimų analizė . . . . . . . . . . . . . . . . . . 281
10.3.1 Projekto funkcinių reikalavimų analizė . . . . . . . . . . . . 282
10.3.2 Vartotojų valdymo reikalavimų analizė . . . . . . . . . . . . . . . 282 10.3.3 Įrenginio aprūpinimo ir įrišimo reikalavimų analizė . . . . . . . 283 10.3.4 Nuotolinio valdymo reikalavimų analizė . . . . . . . . . . . . . . . . 283 10.3.5 Planavimo reikalavimų analizė . . . . . . . . . . . . . . . . . . . 284 10.3.6 Vartotojų centro reikalavimų analizė . . . . . . . . . . . . . . . . . . 285 10.4 Vartotojų valdymo kūrimas . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 RainMaker API įvadas . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Ryšio inicijavimas išmaniuoju telefonu . . . . . . . . . . . . . . . . 286 10.4.3 Paskyros registracija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Prisijungimas prie paskyros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Įrenginių aprūpinimo kūrimas . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Nuskaitymo įrenginiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Įrenginių prijungimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Slaptųjų raktų generavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Mazgo ID gavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Atidėjimų įrenginiai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Įrenginių valdymo kūrimas . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Įrenginių susiejimas su debesies paskyromis . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Įrenginių sąrašo gavimas . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Įrenginio būsenos gavimas . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Įrenginio būsenos keitimas . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Planavimo ir vartotojų centro kūrimas . . . . . . . . . . . . . . . . . . . 313 10.7.1 Planavimo funkcijos įgyvendinimas . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Vartotojų centro diegimas . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Daugiau debesies API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Programinės įrangos atnaujinimas ir versijų valdymas
321
11.1 Programinės įrangos atnaujinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Baigtaview skirsnių lentelių . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Programinės įrangos įkrovos procesas . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Baigtaview OTA mechanizmo . . . . . . . . . . . . . . . . . . . . . 326
11.2 Programinės aparatinės įrangos versijos valdymas . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Programinės įrangos žymėjimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Atšaukimas ir panaikinimas . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Praktika: belaidžiu internetu (OTA) Pvzample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Programinės aparatinės įrangos naujinimas per vietinį pagrindinį kompiuterį . . . . . . . . . . . . . . . . . 332
11.3.2 Programinės aparatinės įrangos atnaujinimas naudojant ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimizavimas ir masinė gamyba
343
12 Energijos valdymas ir mažos galios optimizavimas
345
12.1 ESP32-C3 maitinimo valdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dinaminis dažnio mastelio keitimas . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Energijos valdymo konfigūracija . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 mažos galios režimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modemo pristabdytosios veiksenos režimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Lengvas miego režimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Gilaus miego režimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Srovės suvartojimas skirtingais maitinimo režimais . . . . . . . . . . . . . 358
12.3 Energijos valdymas ir mažos galios derinimas . . . . . . . . . . . . . . . . . 359
12.3.1 Žurnalo derinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 GPIO derinimas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Praktika: energijos valdymas Smart Light projekte . . . . . . . . . . . . . . . 363
12.4.1 Energijos valdymo funkcijos konfigūravimas . . . . . . . . . . . . . . . . . 364
12.4.2 Naudoti energijos valdymo užraktus . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Energijos suvartojimo tikrinimas . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Patobulintos įrenginio saugos funkcijos
369
13.1 Baigtaview IoT įrenginių duomenų saugos . . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Kodėl reikia apsaugoti IoT įrenginio duomenis? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Pagrindiniai IoT įrenginio duomenų saugos reikalavimai . . . . . . . . . . . . 371
13.2 Duomenų vientisumo apsauga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Įvadas į vientisumo tikrinimo metodą . . . . . . . . . . . . . . 372
13.2.2 Programinės aparatinės įrangos duomenų vientisumo patikrinimas . . . . . . . . . . . . . . . . . . 373
13.2.3 Pvzample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Duomenų konfidencialumo apsauga . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Įvadas į duomenų šifravimą . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 „Flash“ šifravimo schemos įvadas . . . . . . . . . . . . . . . . . 376
13.3.3 Flash šifravimo rakto saugykla . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 „Flash“ šifravimo darbo režimas . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Flash šifravimo procesas . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Įvadas į NVS šifravimą . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Pvzamp„Flash“ šifravimas ir NVS šifravimas. . . . . . . . . . . 384
13.4 Duomenų teisėtumo apsauga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Skaitmeninio parašo įvadas . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Baigtaview saugios įkrovos schemos. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Programinės įrangos saugaus įkrovimo įvadas . . . . . . . . . . . . . . . . . . . 388 13.4.4 Aparatinės įrangos saugaus įkrovimo įvadas . . . . . . . . . . . . . . . . . . 390 13.4.5 Pvzamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Praktika: Saugos priemonės masinėje gamyboje . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash šifravimas ir saugus įkrovimas . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 „Flash“ šifravimo ir saugaus įkrovimo su paketiniais „Flash“ įrankiais įgalinimas . . 397 13.5.3 „Flash“ šifravimo ir saugaus įkrovimo įjungimas „Smart Light Project“ . . . 398 13.6 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Programinės įrangos įrašymas ir masinės gamybos bandymas
399
14.1 Programinės įrangos deginimas masinėje gamyboje . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Duomenų skaidinių apibrėžimas . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Programinės įrangos įrašymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Masinės gamybos bandymai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Praktika: masinės gamybos duomenys išmaniosios šviesos projekte . . . . . . . . . . . . . 404
14.4 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP įžvalgų: nuotolinio stebėjimo platforma
405
15.1 Įvadas į ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Darbo su ESP Insights pradžia . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Darbo su ESP Insights pradžia esp-insights projekte . . . . . . 409
15.2.2 Veikia Example in the esp-insights Project . . . . . . . . . . . . . . . 411
15.2.3 Pagrindinės informacijos teikimas . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Interesų žurnalų tinkinimas . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Pranešimas apie perkrovimo priežastį . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Ataskaitų apie tinkintą metriką teikimas . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Praktika: ESP įžvalgų naudojimas „Smart Light Project“ . . . . . . . . . . . . . . . 416
15.4 Santrauka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Įvadas
ESP32-C3 yra vieno branduolio Wi-Fi ir Bluetooth 5 (LE) mikrovaldiklis SoC, pagrįstas atviro kodo RISC-V architektūra. Jis užtikrina tinkamą galios, įvesties / išvesties galimybių ir saugumo pusiausvyrą, todėl siūlo optimalų ekonomišką sprendimą prijungtiems įrenginiams. Norėdami parodyti įvairias ESP32-C3 šeimos programas, ši Espressif knyga nuves jus į įdomią kelionę per AIoT, pradedant nuo daiktų interneto projektų kūrimo ir aplinkos nustatymo pagrindų iki praktinių ex.amples. Pirmuosiuose keturiuose skyriuose kalbama apie daiktų internetą, ESP RainMaker ir ESP-IDF. 5 ir 6 skyriuose trumpai aprašomas techninės įrangos projektavimas ir tvarkyklių kūrimas. Vykdydami pažangą sužinosite, kaip sukonfigūruoti projektą naudodami „Wi-Fi“ tinklus ir programas mobiliesiems. Galiausiai išmoksite optimizuoti savo projektą ir panaudoti jį masinei gamybai.
Jei esate susijusių sričių inžinierius, programinės įrangos architektas, mokytojas, studentas ar bet kas, kas domisi daiktų internetu, ši knyga skirta jums.
Galite atsisiųsti kodą example naudojamas šioje knygoje iš Espressif svetainės GitHub. Norėdami gauti naujausios informacijos apie IoT plėtrą, sekite mūsų oficialią paskyrą.
Pratarmė
Informacinis pasaulis
Įveikiant interneto bangą, daiktų internetas (IoT) debiutavo kaip naujo tipo infrastruktūra skaitmeninėje ekonomikoje. Siekdama priartinti technologiją prie visuomenės, „Espressif Systems“ siekia vizijos, kad kūrėjai iš visų visuomenės sluoksnių gali naudoti daiktų internetą, kad išspręstų kai kurias aktualiausias mūsų laikų problemas. „Pažangaus visų dalykų tinklo“ pasaulis yra tai, ko mes tikimės iš ateities.
Mūsų pačių lustų kūrimas yra esminis šios vizijos komponentas. Tai turi būti maratonas, reikalaujantis nuolatinių proveržių prieš technologines ribas. Nuo „Game Changer“ ESP8266 iki ESP32 serijos, kurioje integruotas „Wi-Fi“ ir „Bluetoothr“ (LE) ryšys, o vėliau – ESP32-S3, aprūpintas dirbtinio intelekto pagreitinimu, „Espressif“ nenustoja tyrinėti ir kurti AIoT sprendimams skirtus produktus. Naudodami atvirojo kodo programinę įrangą, pvz., IoT kūrimo sistemą ESP-IDF, Mesh Development Framework ESP-MDF ir įrenginio ryšio platformą ESP RainMaker, sukūrėme nepriklausomą AIoT taikomųjų programų kūrimo sistemą.
2022 m. liepos mėn. bendras „Espressif“ daiktų interneto mikroschemų rinkinių siuntų skaičius viršijo 800 mln., pirmaujantis „Wi-Fi“ MCU rinkoje ir suaktyvinantis daugybę prijungtų įrenginių visame pasaulyje. Siekdami tobulumo, kiekvienas Espressif produktas yra didelis hitas dėl aukšto integracijos lygio ir ekonomiškumo. ESP32-C3 išleidimas žymi reikšmingą Espressif paties sukurtos technologijos etapą. Tai vieno branduolio, 32 bitų, RISC-V pagrįstas MCU su 400 KB SRAM, kuris gali veikti 160 MHz dažniu. Jame integruotas 2.4 GHz Wi-Fi ir Bluetooth 5 (LE) su ilgo nuotolio palaikymu. Jis užtikrina puikų galios, įvesties / išvesties galimybių ir saugumo balansą, todėl siūlo optimalų ekonomišką sprendimą prijungtiems įrenginiams. Remiantis tokiu galingu ESP32-C3, ši knyga skirta padėti skaitytojams suprasti su daiktų internetu susijusias žinias su išsamiomis iliustracijomis ir praktiniais eks.amples.
Kodėl parašėme šią knygą?
Espressif Systems yra daugiau nei puslaidininkių įmonė. Tai taip pat IoT platformos įmonė, kuri visada siekia proveržių ir naujovių technologijų srityje. Tuo pačiu metu „Espressif“ sukūrė atvirojo kodo šaltinį ir pasidalijo savo sukurta operacine sistema bei programinės įrangos sistema su bendruomene, sudarant unikalią ekosistemą. Inžinieriai, kūrėjai ir technologijų entuziastai aktyviai kuria naujas programinės įrangos programas, pagrįstas Espressif produktais, laisvai bendrauja ir dalijasi savo patirtimi. Įspūdingas kūrėjų idėjas galite nuolat matyti įvairiose platformose, tokiose kaip „YouTube“ ir „GitHub“. Espressif produktų populiarumas paskatino vis daugiau autorių, parengusių daugiau nei 100 knygų, pagrįstų Espressif mikroschemų rinkiniais, daugiau nei dešimčia kalbų, įskaitant anglų, kinų, vokiečių, prancūzų ir japonų.
Būtent bendruomenės partnerių palaikymas ir pasitikėjimas skatina Espressif nuolatines naujoves. „Siekiame, kad mūsų lustai, operacinės sistemos, sistemos, sprendimai, debesys, verslo praktika, įrankiai, dokumentacija, raštai, idėjos ir t. t. vis labiau atitiktų atsakymus, kurių žmonėms reikia sprendžiant aktualiausias šiuolaikinio gyvenimo problemas. Tai yra didžiausias Espressif siekis ir moralinis kompasas. sakė „Espressif“ įkūrėjas ir generalinis direktorius Teo Swee Ann.
Espressif vertina skaitymą ir idėjas. Kadangi nuolatinis daiktų interneto technologijų atnaujinimas kelia didesnius reikalavimus inžinieriams, kaip galime padėti daugiau žmonių greitai įsisavinti daiktų interneto lustus, operacines sistemas, programinės įrangos sistemas, taikomųjų programų schemas ir debesies paslaugų produktus? Kaip sakoma, geriau išmokyti žmogų žvejoti, nei duoti jam žuvies. Protų šturmo sesijoje mums kilo mintis, kad galėtume parašyti knygą, kuri sistemingai sutvarkytų pagrindines žinias apie daiktų interneto plėtrą. Pavyko, greitai subūrėme vyresniųjų inžinierių grupę ir sujungėme techninės komandos patirtį įterptinio programavimo, daiktų interneto aparatinės ir programinės įrangos kūrimo srityje – visa tai prisidėjo prie šios knygos leidybos. Rašydami stengėmės būti objektyvūs ir sąžiningi, atimti nuo kokono ir glaustais posakiais papasakoti apie daiktų interneto sudėtingumą ir žavesį. Atidžiai apibendrinome dažniausiai užduodamus klausimus, rėmėmės bendruomenės atsiliepimais ir pasiūlymais, siekdami aiškiai atsakyti į kūrimo procese iškilusius klausimus, pateikti praktines IoT plėtros gaires atitinkamiems technikai ir sprendimus priimantiems asmenims.
Knygos struktūra
Šioje knygoje žvelgiama į inžinierių orientuotą perspektyvą ir žingsnis po žingsnio paaiškinamos būtinos IoT projekto kūrimo žinios. Jį sudaro keturios dalys:
· Pasiruošimas (1 skyrius): Šioje dalyje pristatoma IoT architektūra, tipinė IoT projektų sistema, ESP RainMakerr debesų platforma ir kūrimo aplinka ESP-IDF, kad būtų sukurtas tvirtas pagrindas IoT projekto plėtrai.
· Aparatūros ir tvarkyklių kūrimas (5 skyrius): Remiantis ESP6-C32 mikroschemų rinkiniu, šioje dalyje išsamiai aprašomas minimalus aparatinės įrangos sistemos ir tvarkyklių kūrimas bei įgyvendinamas pritemdymo, spalvų rūšiavimo ir belaidžio ryšio valdymas.
· Belaidis ryšys ir valdymas (7 skyrius): Šioje dalyje paaiškinama intelektuali Wi-Fi konfigūravimo schema, pagrįsta ESP11-C32 lustu, vietiniais ir debesų valdymo protokolais bei vietiniu ir nuotoliniu įrenginių valdymu. Taip pat pateikiamos išmaniųjų telefonų programėlių kūrimo, programinės įrangos atnaujinimo ir versijų valdymo schemos.
· Optimizavimas ir masinė gamyba (12–15 skyriai): ši dalis skirta pažangioms IoT programoms, daugiausia dėmesio skiriant energijos valdymo produktų optimizavimui, mažos galios optimizavimui ir padidintam saugumui. Taip pat pristatomas programinės aparatinės įrangos įrašymas ir testavimas masinėje gamyboje bei kaip diagnozuoti įrenginio programinės įrangos veikimo būseną ir žurnalus naudojant nuotolinio stebėjimo platformą ESP Insights.
Apie šaltinio kodą
Skaitytojai gali paleisti buvample programoms šioje knygoje, įvesdami kodą rankiniu būdu arba naudodami šaltinio kodą, pateiktą kartu su knyga. Mes pabrėžiame teorijos ir praktikos derinį, todėl beveik kiekviename skyriuje nustatome praktikos skyrių, pagrįstą „Smart Light“ projektu. Visi kodai yra atvirojo kodo. Skaitytojai kviečiami atsisiųsti šaltinio kodą ir aptarti jį skyriuose, susijusiuose su šia knyga GitHub ir mūsų oficialiame forume esp32.com. Šios knygos atvirojo kodo kodui taikomos „Apache License 2.0“ sąlygos.
Autoriaus pastaba
Šią knygą oficialiai pagamino Espressif Systems ir parašė vyresnieji įmonės inžinieriai. Jis tinka su daiktų internetu susijusių pramonės šakų vadovams ir MTEP personalui, susijusių specialybių mokytojams ir studentams bei daiktų interneto srities entuziastams. Tikimės, kad ši knyga gali pasitarnauti kaip darbo vadovas, nuoroda ir knyga prie lovos, kad būtų kaip geras mokytojas ir draugas.
Rengdami šią knygą rėmėmės kai kuriais svarbiais šalies ir užsienio ekspertų, mokslininkų ir technikų tyrimų rezultatais ir stengėmės juos cituoti pagal akademines normas. Tačiau neišvengiama ir nutylėjimų, todėl norime išreikšti gilią pagarbą ir padėką visiems susijusiems autoriams. Be to, citavome informaciją iš interneto, todėl dėkojame originaliems autoriams ir leidėjams bei atsiprašome, kad negalime nurodyti kiekvienos informacijos šaltinio.
Siekdami sukurti kokybišką knygą, organizavome vidinių diskusijų ratus, mokėmės iš bandomųjų skaitytojų ir leidėjų redaktorių pasiūlymų ir atsiliepimų. Norėtume dar kartą padėkoti už jūsų pagalbą, kuri prisidėjo prie šio sėkmingo darbo.
Paskutinis, bet svarbiausias, ačiū visiems Espressif, kurie taip sunkiai dirbo, kad mūsų produktai būtų sukurti ir populiarinti.
IoT projektų kūrimas apima platų žinių spektrą. Apsiribojant knygos apimtimi, taip pat autoriaus lygiu ir patirtimi, nutylėjimai yra neišvengiami. Todėl maloniai prašome ekspertų ir skaitytojų kritikuoti ir ištaisyti mūsų klaidas. Jei turite kokių nors pasiūlymų dėl šios knygos, susisiekite su mumis adresu book@espressif.com. Laukiame jūsų atsiliepimų.
Kaip naudotis šia knyga?
Šios knygos projektų kodas buvo atviro kodo. Galite atsisiųsti jį iš mūsų „GitHub“ saugyklos ir pasidalyti savo mintimis bei klausimais mūsų oficialiame forume. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forumas: https://www.esp32.com/bookc3 Visoje knygoje bus paryškintos dalys, kaip parodyta toliau.
Šaltinio kodas Šioje knygoje akcentuojame teorijos ir praktikos derinį, todėl beveik kiekviename skyriuje pateikiame praktikos skyrių apie Smart Light projektą. Atitinkami veiksmai ir šaltinio puslapis bus pažymėti tarp dviejų eilučių, prasidedančių raide tag Šaltinio kodas.
PASTABA / PATARIMAI Čia galite rasti svarbios informacijos ir priminimų, kaip sėkmingai derinti programą. Jie bus pažymėti tarp dviejų storų linijų, prasidedančių raide tag PASTABA arba PATARIMAI.
Dauguma komandų šioje knygoje vykdomos naudojant „Linux“, jas skatina simbolis „$“. Jei komandai vykdyti reikia supervartotojo privilegijų, raginimas bus pakeistas „#“. „Mac“ sistemų komandų eilutė yra „%“, kaip naudojama 4.2.3 skirsnyje ESP-IDF diegimas „Mac“.
Šios knygos pagrindinis tekstas bus atspausdintas Chartijoje, o kodas examples, komponentai, funkcijos, kintamieji, kodas file vardai, kodų katalogai ir eilutės bus „Courier New“.
Komandos arba tekstai, kuriuos turi įvesti vartotojas, ir komandos, kurias galima įvesti paspaudus „Enter“ klavišą, bus spausdinamos pusjuodžiu šriftu „Courier New“. Žurnalai ir kodų blokai bus pateikiami šviesiai mėlynose dėžutėse.
ExampLe:
Antra, naudokite esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py, kad sugeneruotumėte dvejetainį NVS skaidinį file kūrimo priegloboje su šia komanda:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –įvesties masė prod.csv –išvesties masė prod.bin –dydis NVS SKYRIAUS DYDIS
1 skyrius
Įvadas
į
IoT
XX amžiaus pabaigoje, populiarėjant kompiuterių tinklams ir ryšių technologijoms, internetas sparčiai integravosi į žmonių gyvenimą. Interneto technologijoms toliau bręstant, gimė daiktų interneto (IoT) idėja. Pažodžiui IoT reiškia internetą, kuriame viskas yra sujungta. Nors originalus internetas laužo erdvės ir laiko ribas ir susiaurina atstumą tarp „žmogaus ir asmens“, daiktų internetas daro „daiktus“ svarbiu dalyviu, suartindamas „žmones“ ir „daiktus“. Artimiausioje ateityje daiktų internetas taps varomąja informacijos pramonės jėga.
Taigi, kas yra daiktų internetas?
Sunku tiksliai apibrėžti daiktų internetą, nes jo reikšmė ir apimtis nuolat kinta. 1995 m. Billas Gatesas pirmą kartą iškėlė daiktų interneto idėją savo knygoje „The Road Ahead“. Paprasčiau tariant, daiktų internetas leidžia objektams keistis informacija tarpusavyje per internetą. Galutinis jos tikslas yra sukurti „visko internetą“. Tai ankstyva IoT interpretacija, taip pat ateities technologijų fantazija. Po trisdešimties metų, sparčiai tobulėjant ekonomikai ir technologijoms, fantazija tampa realybe. Nuo išmaniųjų įrenginių, išmaniųjų namų, išmaniųjų miestų, transporto priemonių interneto ir nešiojamų įrenginių iki daiktų interneto technologijų palaikomos „metaversos“ – nuolat atsiranda naujų koncepcijų. Šiame skyriuje pradėsime nuo daiktų interneto architektūros paaiškinimo, o vėliau pristatysime labiausiai paplitusią daiktų interneto programą – išmaniuosius namus, kad padėtume jums aiškiai suprasti daiktų internetą.
1.1 IoT architektūra
Daiktų internetas apima kelias technologijas, kurių taikymo poreikiai ir formos įvairiose pramonės šakose yra skirtingi. Norint sutvarkyti daiktų interneto struktūrą, pagrindines technologijas ir taikymo charakteristikas, būtina sukurti vieningą architektūrą ir standartinę techninę sistemą. Šioje knygoje daiktų interneto architektūra tiesiog padalinta į keturis sluoksnius: suvokimo ir valdymo sluoksnį, tinklo sluoksnį, platformos sluoksnį ir taikomųjų programų sluoksnį.
Suvokimo ir valdymo sluoksnis Kaip pagrindinis daiktų interneto architektūros elementas, suvokimo ir valdymo sluoksnis yra esminis dalykas, leidžiantis suvokti visapusį daiktų internetą. Jo pagrindinė funkcija yra rinkti, identifikuoti ir kontroliuoti informaciją. Jį sudaro įvairūs prietaisai, turintys galimybę suvokti,
3
identifikavimą, valdymą ir vykdymą ir yra atsakingas už duomenų, pvz., medžiagų savybių, elgsenos tendencijų ir įrenginio būsenos, gavimą ir analizę. Tokiu būdu IoT atpažįsta tikrąjį fizinį pasaulį. Be to, sluoksnis taip pat gali valdyti įrenginio būseną.
Labiausiai paplitę šio sluoksnio įrenginiai yra įvairūs jutikliai, kurie atlieka svarbų vaidmenį renkant ir identifikuojant informaciją. Jutikliai yra kaip žmogaus jutimo organai, pavyzdžiui, šviesai jautrūs jutikliai, prilygstantys regėjimui, akustiniai jutikliai klausai, dujų jutikliai uoslei, slėgiui ir temperatūrai jautrūs jutikliai lytėjimui. Su visais šiais „jutimo organais“ objektai tampa „gyvi“ ir gali protingai suvokti, atpažinti ir manipuliuoti fiziniu pasauliu.
Tinklo sluoksnis Pagrindinė tinklo sluoksnio funkcija yra perduoti informaciją, įskaitant duomenis, gautus iš suvokimo ir valdymo sluoksnio, į nurodytą tikslą, taip pat komandas, siunčiamas iš taikomojo sluoksnio, atgal į suvokimo ir valdymo sluoksnį. Jis tarnauja kaip svarbus komunikacijos tiltas, jungiantis skirtingus IoT sistemos sluoksnius. Norint sukurti pagrindinį daiktų interneto modelį, reikia atlikti du objektus į tinklą integruoti: prieigą prie interneto ir perdavimą internetu.
Prieiga prie interneto Internetas suteikia galimybę užmegzti ryšį tarp asmens ir asmens, bet neįtraukia dalykų į didelę šeimą. Prieš atsirandant daiktų internetui, dauguma dalykų nebuvo „tinkami tinkle“. Nuolat tobulėjant technologijoms, IoT sugeba prijungti daiktus prie interneto, taip realizuodamas „žmonių ir daiktų“ bei „daiktų ir daiktų“ tarpusavio ryšį. Yra du įprasti interneto ryšio diegimo būdai: prieiga prie laidinio tinklo ir prieiga prie belaidžio tinklo.
Prieigos prie laidinio tinklo būdai apima eternetą, nuoseklųjį ryšį (pvz., RS-232, RS-485) ir USB, o prieiga prie belaidžio tinklo priklauso nuo belaidžio ryšio, kurį dar galima skirstyti į trumpojo nuotolio belaidį ryšį ir ilgojo nuotolio belaidį ryšį.
Trumpojo nuotolio belaidis ryšys apima „ZigBee“, „Bluetooth“, „Wi-Fi“, artimojo lauko ryšį (NFC) ir radijo dažnio atpažinimą (RFID). Tolimojo nuotolio belaidis ryšys apima patobulintą mašininio tipo ryšį (eMTC), LoRa, siaurajuostį daiktų internetą (NB-IoT), 2G, 3G, 4G, 5G ir kt.
Perdavimas internetu Skirtingi interneto prieigos būdai veda į atitinkamą fizinį duomenų perdavimo ryšį. Kitas dalykas yra nuspręsti, kurį ryšio protokolą naudoti duomenims perduoti. Palyginti su interneto terminalais, daugumoje daiktų interneto terminalų šiuo metu yra mažiau
4 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
turimus išteklius, tokius kaip apdorojimo našumas, saugojimo talpa, tinklo sparta ir kt., todėl būtina pasirinkti ryšio protokolą, kuris užimtų mažiau išteklių daiktų interneto programose. Šiandien yra plačiai naudojami du ryšio protokolai: pranešimų eilės telemetrijos transportavimas (MQTT) ir suvaržytas taikymo protokolas (CoAP).
Platformos sluoksnis Platformos sluoksnis daugiausia susijęs su IoT debesies platformomis. Kai visi daiktų interneto terminalai yra sujungti į tinklą, jų duomenys turi būti apibendrinti IoT debesies platformoje, kad būtų galima apskaičiuoti ir saugoti. Platformos sluoksnis daugiausia palaiko IoT programas, palengvinančias prieigą prie didžiulių įrenginių ir jų valdymą. Ji sujungia IoT terminalus su debesų platforma, renka terminalo duomenis ir terminalams išduoda komandas, kad būtų galima įgyvendinti nuotolinį valdymą. Kaip tarpinė paslauga, skirta įrangai priskirti pramonės programoms, platformos sluoksnis atlieka jungiamąjį vaidmenį visoje IoT architektūroje, turintis abstrakčią verslo logiką ir standartizuotą pagrindinių duomenų modelį, kuris gali ne tik greitai pasiekti įrenginių, bet ir suteikti galingas modulines galimybes. patenkinti įvairius pramonės taikymo scenarijus. Platformos sluoksnis daugiausia apima funkcinius modulius, tokius kaip įrenginio prieiga, įrenginio valdymas, saugos valdymas, pranešimų perdavimas, stebėjimo veikimas ir priežiūra bei duomenų programos.
· Prieiga prie įrenginių, realizuojant ryšį ir ryšį tarp terminalų ir IoT debesies platformų.
· Įrenginių valdymas, įskaitant tokias funkcijas kaip įrenginio kūrimas, įrenginio priežiūra, duomenų konvertavimas, duomenų sinchronizavimas ir įrenginio platinimas.
· Saugumo valdymas, užtikrinant daiktų interneto duomenų perdavimo saugumą saugumo autentifikavimo ir komunikacijos saugumo požiūriu.
· Pranešimų komunikacija, apimanti tris perdavimo kryptis, tai yra, terminalas siunčia duomenis į IoT debesies platformą, IoT debesies platforma siunčia duomenis į serverio pusę arba kitas IoT debesies platformas, o serverio pusė nuotoliniu būdu valdo IoT įrenginius.
· O&M stebėjimas, apimantis stebėjimą ir diagnostiką, programinės įrangos atnaujinimą, internetinį derinimą, žurnalų paslaugas ir kt.
· Duomenų programos, apimančios duomenų saugojimą, analizę ir taikymą.
Programos sluoksnis Taikomųjų sluoksnių duomenys iš platformos sluoksnio naudojami programai valdyti, filtruoti ir apdoroti tokiais įrankiais kaip duomenų bazės ir analizės programinė įranga. Gauti duomenys gali būti naudojami realaus pasaulio daiktų interneto programoms, tokioms kaip išmanioji sveikatos priežiūra, išmanusis žemės ūkis, išmanieji namai ir išmanieji miestai.
Žinoma, daiktų interneto architektūrą galima suskirstyti į daugiau sluoksnių, tačiau nesvarbu, kiek sluoksnių ji sudaryta, pagrindinis principas iš esmės išlieka tas pats. Mokymasis
1 skyrius. Įvadas į IoT 5
apie IoT architektūrą padeda gilinti mūsų supratimą apie daiktų interneto technologijas ir kurti visiškai veikiančius IoT projektus.
1.2 IoT programa išmaniuosiuose namuose
IoT įsiskverbė į visas gyvenimo sritis, o labiausiai su mumis susijusi daiktų interneto programa yra išmanieji namai. Daugelyje tradicinių prietaisų dabar yra vienas ar keli daiktų interneto įrenginiai, o daugelis naujai pastatytų namų nuo pat pradžių suprojektuoti naudojant IoT technologijas. 1.1 paveiksle parodyti kai kurie įprasti išmaniųjų namų įrenginiai.
1.1 pav. Įprasti išmaniųjų namų įrenginiai Išmaniųjų namų kūrimą galima tiesiog suskirstyti į išmaniuosius gaminiustage, scenos sujungimas stage ir protingi stage, kaip parodyta 1.2 pav.
1.2 pav. Vystymas stage of smart home 6 ESP32-C3 Wireless Adventure: Išsamus daiktų interneto vadovas
Pirmieji stage yra apie išmaniuosius produktus. Skirtingai nuo tradicinių namų, išmaniuosiuose namuose daiktų interneto įrenginiai priima signalus su jutikliais ir yra sujungti į tinklą naudojant belaidžio ryšio technologijas, tokias kaip „Wi-Fi“, „Bluetooth LE“ ir „ZigBee“. Vartotojai gali valdyti išmaniuosius gaminius įvairiais būdais, pavyzdžiui, išmaniųjų telefonų programėles, balso asistentus, išmaniųjų garsiakalbių valdymą ir kt.tage daugiausia dėmesio skiria scenos tarpusavio ryšiui. Šiame stage, kūrėjai nebegalvoja valdyti vieno išmaniojo produkto, o sujungti du ar daugiau išmaniųjų produktų, tam tikru mastu automatizuoti ir galiausiai suformuoti pasirinktinį scenos režimą. Pavyzdžiui,ampKai vartotojas paspaus bet kurį scenos režimo mygtuką, šviesos, užuolaidos ir oro kondicionieriai bus automatiškai pritaikyti prie išankstinių nustatymų. Žinoma, yra būtina sąlyga, kad susiejimo logika būtų lengvai nustatyta, įskaitant paleidimo sąlygas ir vykdymo veiksmus. Įsivaizduokite, kad oro kondicionavimo šildymo režimas įsijungia, kai patalpų temperatūra nukrenta žemiau 10°C; kad 7 valandą ryto grojama muzika pažadinant vartotoją, atsidaro išmaniosios užuolaidos, o ryžių viryklė ar duonos skrudintuvas įsijungia per išmanųjį lizdą; vartotojui atsikėlus ir baigus skalbti, pusryčiai jau patiekiami, kad nereikėtų vėluoti eiti į darbą. Koks patogus tapo mūsų gyvenimas! Trečiasis stage eina į žvalgybą stage. Kai bus pasiekiama daugiau išmaniųjų namų įrenginių, didės ir generuojamų duomenų tipai. Debesų kompiuterijos, didžiųjų duomenų ir dirbtinio intelekto pagalba į išmaniuosius namus tarsi įsodintos „išmanesnės smegenys“, kurios nebereikalauja dažnų vartotojo komandų. Jie renka duomenis iš ankstesnių sąveikų ir sužino vartotojo elgesio modelius bei pageidavimus, kad galėtų automatizuoti veiklą, įskaitant sprendimų priėmimo rekomendacijas. Šiuo metu dauguma išmaniųjų namų yra sujungimo vietojetage. Didėjant išmaniųjų produktų skverbties greičiui ir intelektui, kliūtys tarp ryšio protokolų šalinamos. Ateityje išmanieji namai tikrai taps „protingi“, kaip ir „Iron Man“ AI sistema „Jarvis“, galinti ne tik padėti vartotojui valdyti įvairius įrenginius, tvarkyti kasdienius reikalus, bet ir turėti super kompiuterinės galios bei mąstymo galimybes. Intelektualiose stage, žmonės gaus geresnes paslaugas tiek kiekybe, tiek kokybe.
1 skyrius. Įvadas į IoT 7
8 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Skyrius 2 IoT projektų įvadas ir praktika
1 skyriuje pristatėme IoT architektūrą, suvokimo ir valdymo sluoksnio, tinklo sluoksnio, platformos sluoksnio ir taikomųjų programų sluoksnio vaidmenis bei tarpusavio ryšius, taip pat išmaniųjų namų kūrimą. Tačiau, kaip ir mokantis tapyti, teorinių žinių toli gražu neužtenka. Turime „susitepti rankas“, kad galėtume praktiškai įgyvendinti daiktų interneto projektus, kad tikrai įvaldytume technologiją. Be to, projektui pereinant prie masinės gamybos stage, būtina atsižvelgti į daugiau veiksnių, tokių kaip tinklo ryšys, konfigūracija, IoT debesies platformos sąveika, programinės įrangos valdymas ir atnaujinimai, masinės gamybos valdymas ir saugos konfigūracija. Taigi, į ką turime atkreipti dėmesį kuriant pilną IoT projektą? 1 skyriuje minėjome, kad išmanieji namai yra vienas iš labiausiai paplitusių daiktų interneto taikymo scenarijų, o išmanieji šviestuvai yra vienas elementariausių ir praktiškiausių prietaisų, kuriuos galima naudoti namuose, viešbučiuose, sporto salėse, ligoninėse ir kt. Šioje knygoje pradėsime kurti išmaniojo apšvietimo projektą, paaiškinsime jo komponentus ir savybes bei pateiksime projekto kūrimo gaires. Tikimės, kad iš šio atvejo galite padaryti išvadas ir sukurti daugiau daiktų interneto programų.
2.1 Įvadas į tipinius IoT projektus
Kalbant apie kūrimą, pagrindiniai daiktų interneto projektų funkciniai moduliai gali būti suskirstyti į daiktų interneto įrenginių programinės ir techninės įrangos kūrimą, klientų programų kūrimą ir daiktų interneto debesų platformos kūrimą. Svarbu paaiškinti pagrindinius funkcinius modulius, kurie bus išsamiau aprašyti šiame skyriuje.
2.1.1 Pagrindiniai įprastų daiktų interneto įrenginių moduliai
IoT įrenginių programinės ir techninės įrangos kūrimas apima šiuos pagrindinius modulius: Duomenų rinkimas
Kaip apatinis IoT architektūros sluoksnis, suvokimo ir valdymo sluoksnio IoT įrenginiai sujungia jutiklius ir įrenginius per savo lustus ir periferinius įrenginius, kad būtų galima rinkti duomenis ir valdyti veiklą.
9
Paskyros susiejimas ir pradinė konfigūracija Daugumoje daiktų interneto įrenginių paskyros susiejimas ir pradinė konfigūracija atliekami vienu operatyviniu procesu, pvzample, prijungiant įrenginius su vartotojais konfigūruojant Wi-Fi tinklą.
Sąveika su IoT debesies platformomis Norint stebėti ir valdyti IoT įrenginius, taip pat būtina juos prijungti prie IoT debesies platformų, kad būtų galima duoti komandas ir pranešti apie būseną sąveikaujant tarpusavyje.
Įrenginio valdymas Prisijungę prie IoT debesies platformų, įrenginiai gali susisiekti su debesimi ir būti registruojami, susieti arba valdomi. Vartotojai gali pateikti užklausą dėl produkto būsenos ir atlikti kitas operacijas išmaniojo telefono programėlėje naudodamiesi IoT debesies platformomis arba vietiniais ryšio protokolais.
Programinės įrangos atnaujinimas IoT įrenginiai taip pat gali atnaujinti programinę-aparatinę įrangą pagal gamintojų poreikius. Gavus debesies siunčiamas komandas, bus vykdomas programinės įrangos atnaujinimas ir versijų valdymas. Naudodami šią programinės aparatinės įrangos atnaujinimo funkciją galite nuolat tobulinti daiktų interneto įrenginių funkcijas, ištaisyti defektus ir gerinti vartotojo patirtį.
2.1.2 Pagrindiniai klientų taikomųjų programų moduliai
Klientų programos (pvz., išmaniųjų telefonų programos) daugiausia apima šiuos pagrindinius modulius:
Paskyros sistema ir autorizacija Ji palaiko paskyros ir įrenginio autorizavimą.
Įrenginio valdymas Išmaniųjų telefonų programėlėse dažniausiai yra valdymo funkcijos. Vartotojai gali lengvai prisijungti prie daiktų interneto įrenginių ir valdyti juos bet kada ir bet kur naudodami išmaniųjų telefonų programas. Realiame išmaniajame namuose įrenginiai dažniausiai valdomi per išmaniųjų telefonų programėles, kurios leidžia ne tik išmaniai valdyti įrenginius, bet ir taupyti darbo jėgos sąnaudas. Todėl įrenginio valdymas yra būtinas kliento programoms, tokioms kaip įrenginio funkcijų atributų valdymas, scenos valdymas, planavimas, nuotolinis valdymas, įrenginių susiejimas ir kt. Išmaniųjų namų vartotojai taip pat gali pritaikyti scenas pagal asmeninius poreikius, valdyti apšvietimą, buitinę techniką, įėjimą. ir pan., kad gyvenimas namuose būtų patogesnis ir patogesnis. Jie gali nustatyti oro kondicionavimo laiką, išjungti jį nuotoliniu būdu, automatiškai įjungti prieškambario apšvietimą, kai durys atrakinamos, arba vienu mygtuku įjungti „teatro“ režimą.
Pranešimų kliento programos atnaujina daiktų interneto įrenginių būseną realiuoju laiku ir siunčia įspėjimus, kai įrenginiai veikia neįprastai.
10 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Klientų aptarnavimas po pardavimo Išmaniųjų telefonų programėlės gali teikti produktų po pardavimo paslaugas, laiku išspręsti problemas, susijusias su daiktų interneto įrenginių gedimais ir techninėmis operacijomis.
Ypatingos funkcijos Kad būtų patenkinti skirtingų naudotojų poreikiai, gali būti pridėtos kitos funkcijos, pvz., purtymas, NFC, GPS ir kt. GPS gali padėti nustatyti scenos operacijų tikslumą pagal vietą ir atstumą, o funkcija Shake leidžia vartotojams nustatyti komandos, kurios turi būti vykdomos konkrečiam įrenginiui ar scenai purtant.
2.1.3 Įvadas į įprastas daiktų interneto debesų platformas
„IoT“ debesies platforma yra „viskas viename“ platforma, integruojanti tokias funkcijas kaip įrenginio valdymas, duomenų saugos ryšys ir pranešimų valdymas. Pagal tikslinę grupę ir prieinamumą daiktų interneto debesų platformas galima skirstyti į viešąsias IoT debesų platformas (toliau – viešasis debesis) ir privačias IoT debesų platformas (toliau – privatus debesis).
Viešasis debesis paprastai nurodo įmonėms ar asmenims skirtas bendras IoT debesies platformas, kurias valdo ir prižiūri platformos teikėjai ir kuriomis dalijamasi internetu. Jis gali būti nemokamas arba nebrangus ir teikia paslaugas visame atvirame viešajame tinkle, pvz., „Alibaba Cloud“, „Tencent Cloud“, „Baidu Cloud“, „AWS IoT“, „Google IoT“ ir kt. Kaip palaikomoji platforma, viešasis debesis gali integruoti aukštesnio lygio paslaugų teikėjus ir tolesniems galutiniams vartotojams sukurti naują vertės grandinę ir ekosistemą.
Privatus debesis sukurtas tik įmonės naudojimui, todėl garantuojama geriausia duomenų, saugumo ir paslaugų kokybės kontrolė. Jos paslaugas ir infrastruktūrą įmonės prižiūri atskirai, o pagalbinė techninė ir programinė įranga taip pat skirta konkretiems vartotojams. Įmonės gali pritaikyti debesijos paslaugas pagal savo verslo poreikius. Šiuo metu kai kurie išmaniųjų namų gamintojai jau turi privačias IoT debesų platformas ir jų pagrindu sukūrė išmaniųjų namų programas.
Viešasis debesis ir privatus debesis turi savo pranašumątages, kas bus paaiškinta vėliau.
Norint pasiekti ryšio ryšį, būtina užbaigti bent jau įterptąją plėtrą įrenginio pusėje, kartu su verslo serveriais, daiktų interneto debesų platformomis ir išmaniųjų telefonų programėlėmis. Susidūręs su tokiu didžiuliu projektu, viešasis debesis paprastai teikia programinės įrangos kūrimo rinkinius įrenginio ir išmaniųjų telefonų programoms, kad pagreitintų procesą. Tiek viešasis, tiek privatus debesis teikia paslaugas, įskaitant prieigą prie įrenginio, įrenginio valdymą, įrenginio šešėlį ir valdymą bei priežiūrą.
Prieiga prie įrenginių IoT debesies platformose turi būti ne tik sąsajos, skirtos prieigai prie įrenginių naudojant protokolus
2 skyrius. Daiktų interneto projektų įvadas ir praktika 11
pvz., MQTT, CoAP, HTTPS ir WebLizdas, bet ir įrenginio saugumo autentifikavimo funkcija, skirta blokuoti suklastotus ir nelegalius įrenginius, veiksmingai sumažinant pavojų būti pažeistiems. Toks autentifikavimas dažniausiai palaiko skirtingus mechanizmus, todėl kai įrenginiai gaminami masiškai, reikia iš anksto priskirti įrenginio sertifikatą pagal pasirinktą autentifikavimo mechanizmą ir įrašyti jį į įrenginius.
Įrenginių valdymas Įrenginių valdymo funkcija, kurią teikia IoT debesies platformos, gali ne tik padėti gamintojams realiu laiku stebėti savo įrenginių aktyvinimo būseną ir prisijungimo būseną, bet ir tokias parinktis kaip įrenginių pridėjimas / pašalinimas, nuskaitymas, grupių pridėjimas / ištrynimas, programinės įrangos atnaujinimas. ir versijų valdymas.
Įrenginio šešėlio IoT debesies platformos gali sukurti nuolatinę virtualią versiją (įrenginio šešėlį) kiekvienam įrenginiui, o įrenginio šešėlio būsena gali būti sinchronizuojama ir gaunama naudojant išmaniojo telefono programėlę ar kitus įrenginius per interneto perdavimo protokolus. Įrenginio šešėlis saugo naujausią praneštą kiekvieno įrenginio būseną ir numatomą būseną ir net jei įrenginys neprisijungęs, jis vis tiek gali gauti būseną iškviesdamas API. Įrenginio šešėlis teikia visada įjungtas API, todėl lengviau kurti išmaniųjų telefonų programas, kurios sąveikauja su įrenginiais.
Naudojimas ir priežiūra O&M funkcija apima tris aspektus: · Statistinės informacijos apie daiktų interneto įrenginius ir pranešimų demonstravimas. · Žurnalo valdymas leidžia gauti informaciją apie įrenginio elgesį, pranešimų srautą aukštyn / žemyn ir pranešimų turinį. · Įrenginio derinimas palaiko komandų pristatymą, konfigūracijos atnaujinimą ir IoT debesies platformų ir įrenginio pranešimų sąveikos tikrinimą.
2.2 Praktika: išmaniosios šviesos projektas
Po teorinio įvado kiekviename skyriuje rasite praktikos skyrių, susijusį su Smart Light projektu, kuris padės įgyti praktinės patirties. Projektas pagrįstas Espressif ESP32-C3 lustu ir ESP RainMaker IoT debesies platforma ir apima belaidžio modulio aparatinę įrangą išmaniuosiuose šviesos produktuose, įterptąją programinę įrangą išmaniesiems įrenginiams, pagrįstą ESP32C3, išmaniųjų telefonų programėles ir ESP RainMaker sąveiką.
Šaltinio kodas Siekiant geriau mokytis ir tobulinti patirtį, šioje knygoje pateiktas projektas buvo sukurtas atvirojo kodo. Šaltinio kodą galite atsisiųsti iš mūsų „GitHub“ saugyklos adresu https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
2.2.1 Projekto struktūra
Projektas „Smart Light“ susideda iš trijų dalių: i. Išmanieji šviesos įrenginiai, pagrįsti ESP32-C3, atsakingi už sąveiką su daiktų interneto debesų platformomis ir valdymą, šviesos diodo l jungiklio, ryškumo ir spalvų temperatūros valdymą.amp karoliukai. ii. Išmaniųjų telefonų programėlės (įskaitant planšetinio kompiuterio programėles, veikiančias Android ir iOS), atsakingos už išmaniųjų šviesų gaminių tinklo konfigūraciją, taip pat užklausą ir jų būsenos valdymą.
iii. IoT debesies platforma, pagrįsta ESP RainMaker. Siekiant supaprastinimo, šioje knygoje nagrinėjame IoT debesies platformą ir verslo serverį kaip visumą. Išsami informacija apie ESP RainMaker bus pateikta 3 skyriuje.
„Smart Light“ projekto struktūros ir daiktų interneto architektūros atitikimas parodytas 2.1 pav.
2.1 pav. Išmaniosios šviesos projekto struktūra
2.2.2 Projekto funkcijos
Padalinta pagal struktūrą, kiekvienos dalies funkcijos yra tokios. Išmanieji šviesos įrenginiai
· Tinklo konfigūracija ir prijungimas. · LED PWM valdymas, pvz., jungiklis, ryškumas, spalvų temperatūra ir kt. · Automatika arba scenos valdymas, pvz., laiko jungiklis. · Šifravimas ir saugus „Flash“ paleidimas. · Firmware atnaujinimas ir versijų valdymas.
2 skyrius. Daiktų interneto projektų įvadas ir praktika 13
Išmaniųjų telefonų programos · Tinklo konfigūracija ir įrenginio susiejimas. · Išmanusis šviesos gaminio valdymas, pvz., jungiklis, ryškumas, spalvų temperatūra ir kt. · Automatika arba scenos nustatymai, pvz., laiko jungiklis. · Vietinis/nuotolinis valdymas. · Vartotojo registracija, prisijungimas ir kt.
ESP RainMaker IoT debesies platforma · Įgalina prieigą prie daiktų interneto įrenginių. · Įrenginio veikimo API, pasiekiamų išmaniųjų telefonų programėlėms, teikimas. · Firmware atnaujinimas ir versijų valdymas.
2.2.3 Techninės įrangos paruošimas
Susidomėjusiems projekto įgyvendinimu, taip pat prireiks šios techninės įrangos: išmaniųjų šviestuvų, išmaniųjų telefonų, Wi-Fi maršrutizatorių ir kompiuterio, atitinkančio kūrimo aplinkos diegimo reikalavimus. Išmaniosios lemputės
Išmaniosios lemputės – tai naujo tipo lemputės, kurių forma yra tokia pati kaip ir bendrosios kaitrinės lemputės. Išmanioji šviesa susideda iš kondensatoriaus sumažinto reguliuojamo maitinimo šaltinio, belaidžio modulio (su įmontuotu ESP32-C3), LED valdiklio ir RGB LED matricos. Prijungus prie maitinimo, 15 V DC voltagIšėjimas po kondensatoriaus sumažinimo, diodo ištaisymo ir reguliavimo tiekia energiją LED valdikliui ir LED matricai. LED valdiklis gali automatiškai siųsti aukštus ir žemus lygius tam tikrais intervalais, perjungdamas RGB LED matricą iš uždaros (šviesos) ir atviros (išjungtos), kad galėtų skleisti žydrą, geltoną, žalią, violetinę, mėlyną, raudoną ir balta šviesa. Belaidis modulis yra atsakingas už prisijungimą prie „Wi-Fi“ maršrutizatoriaus, išmaniųjų lempučių būsenos priėmimą ir ataskaitų pateikimą bei komandų, skirtų LED valdymui, siuntimą.
2.2 pav. Imituota išmanioji šviesa
Ankstyvojoje raidoje stage, galite imituoti išmaniąją šviesą naudodami ESP32-C3DevKitM-1 plokštę, sujungtą su RGB LED lamp karoliukai (žr. 2.2 pav.). Bet turėtum
14 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
atkreipkite dėmesį, kad tai nėra vienintelis būdas surinkti išmanųjį šviestuvą. Šioje knygoje projekto techninės įrangos dizainą sudaro tik belaidis modulis (su įmontuotu ESP32-C3), bet ne visas išmaniosios šviesos aparatinės įrangos dizainas. Be to, Espressif taip pat gamina ESP32-C3 pagrindu sukurtą garso kūrimo plokštę ESP32C3-Lyra, skirtą šviesoms valdyti garsu. Plokštė turi mikrofonų ir garsiakalbių sąsajas ir gali valdyti LED juosteles. Jis gali būti naudojamas kuriant itin nebrangius, didelio našumo garso transliuotojus ir ritmines šviesos juostas. 2.3 paveiksle parodyta ESP32-C3Lyra plokštė, sujungta su 40 LED lempučių juostele.
2.3 pav. ESP32-C3-Lyra sujungta su 40 LED lempučių juostele
Išmanieji telefonai („Android“ / „iOS“) „Smart Light“ projektas apima išmaniojo telefono programėlės, skirtos išmaniųjų šviesų gaminiams nustatyti ir valdyti, kūrimą.
„Wi-Fi“ maršruto parinktuvai „Wi-Fi“ maršruto parinktuvai konvertuoja laidinio tinklo signalus ir mobiliojo ryšio tinklo signalus į belaidžio tinklo signalus, kad kompiuteriai, išmanieji telefonai, planšetiniai kompiuteriai ir kiti belaidžiai įrenginiai galėtų prisijungti prie tinklo. Pavyzdžiui,ampPlačiajuostis ryšys namuose turi būti prijungtas tik prie „Wi-Fi“ maršruto parinktuvo, kad būtų pasiektas belaidis „Wi-Fi“ įrenginių tinklas. Pagrindinis „Wi-Fi“ maršruto parinktuvų palaikomas protokolo standartas yra IEEE 802.11n, kurio vidutinis TxRate yra 300 Mbps arba daugiausia 600 Mbps. Jie yra suderinami su IEEE 802.11b ir IEEE 802.11g. Espressif ESP32-C3 lustas palaiko IEEE 802.11b/g/n, todėl galite pasirinkti vienos juostos (2.4 GHz) arba dviejų juostų (2.4 GHz ir 5 GHz) Wi-Fi maršruto parinktuvą.
Kompiuterio („Linux“ / „MacOS“ / „Windows“) kūrimo aplinka bus pristatyta 4 skyriuje. 2 skyrius. IoT projektų įvadas ir praktika 15
2.2.4 Kūrimo procesas
2.4 pav. „Smart Light“ projekto kūrimo žingsniai
Aparatinės įrangos projektavimas Daiktų interneto įrenginių aparatinės įrangos projektavimas yra būtinas IoT projektui. Pilnas išmaniosios šviesos projektas skirtas gaminti alamp dirba prie maitinimo tinklo. Skirtingi gamintojai gamina lamps skirtingų stilių ir tvarkyklių tipų, tačiau jų belaidžiai moduliai dažniausiai atlieka tą pačią funkciją. Siekiant supaprastinti „Smart Ligh“ projekto kūrimo procesą, ši knyga apima tik belaidžių modulių techninės įrangos dizainą ir programinės įrangos kūrimą.
„IoT“ debesies platformos konfigūracija Norėdami naudoti „IoT“ debesies platformas, turite sukonfigūruoti projektus vidinėje sistemoje, pvz., kurti produktus, kurti įrenginius, nustatyti įrenginio savybes ir kt.
Įterptosios programinės įrangos kūrimas daiktų interneto įrenginiams Įdiekite numatytas funkcijas su ESP-IDF, Espressif įrenginio pusės SDK, įskaitant prisijungimą prie daiktų interneto debesies platformų, LED tvarkyklių kūrimą ir programinės įrangos atnaujinimą.
Išmaniųjų telefonų programėlių kūrimas Kurkite išmaniųjų telefonų programėles Android ir iOS sistemoms, kad būtų galima realizuoti vartotojo registraciją ir prisijungimą, įrenginio valdymą ir kitas funkcijas.
IoT įrenginio optimizavimas Baigę pagrindinį IoT įrenginio funkcijų kūrimą, galite imtis optimizavimo užduočių, pvz., energijos optimizavimo.
Masinės gamybos bandymai Atlikite masinės gamybos bandymus pagal susijusius standartus, pvz., įrangos veikimo bandymą, senėjimo bandymą, RF bandymą ir kt.
Nepaisant aukščiau išvardytų žingsnių, „Smart Light“ projektui nebūtinai taikoma tokia procedūra, nes tuo pačiu metu gali būti atliekamos ir skirtingos užduotys. Pavyzdžiui,ample, įterptoji programinė įranga ir išmaniųjų telefonų programėlės gali būti kuriamos lygiagrečiai. Taip pat gali tekti kartoti kai kuriuos veiksmus, pvz., daiktų interneto įrenginių optimizavimą ir masinės gamybos testavimą.
16 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
2.3 Santrauka
Šiame skyriuje pirmiausia paaiškinome pagrindinius daiktų interneto projekto komponentus ir funkcinius modulius, o vėliau pristatėme „Smart Light“ atvejį praktikoje, nurodydami jo struktūrą, funkcijas, aparatinės įrangos paruošimą ir kūrimo procesą. Skaitytojai gali daryti išvadas iš praktikos ir įsitikinti, kad ateityje daiktų interneto projektus įgyvendins su kuo mažiau klaidų.
2 skyrius. Daiktų interneto projektų įvadas ir praktika 17
18 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
3 skyrius
Įvadas
į
ESP
RainMaker
Daiktų internetas (IoT) siūlo begalines galimybes pakeisti žmonių gyvenimo būdą, tačiau daiktų interneto inžinerijos plėtra kupina iššūkių. Naudodami viešuosius debesis, terminalų gamintojai gali įdiegti produkto funkcionalumą naudodami šiuos sprendimus:
Remiantis sprendimų teikėjų debesų platformomis. Tokiu būdu terminalų gamintojams tereikia suprojektuoti gaminio techninę įrangą, tada prijungti aparatinę įrangą prie debesies naudojant pateiktą komunikacijos modulį ir sukonfigūruoti gaminio funkcijas vadovaudamiesi gairėmis. Tai efektyvus metodas, nes pašalina serverio ir taikomųjų programų kūrimo ir operacijų bei priežiūros (O&M) poreikį. Tai leidžia terminalų gamintojams sutelkti dėmesį į aparatinės įrangos dizainą, negalvojant apie debesies diegimą. Tačiau tokie sprendimai (pvz., įrenginio programinė įranga ir programa) paprastai nėra atvirojo kodo, todėl produkto funkcijas ribos teikėjo debesies platforma, kurios negalima pritaikyti. Tuo tarpu naudotojo ir įrenginio duomenys taip pat priklauso debesų platformai.
Remiantis debesijos produktais Šiame sprendime baigę aparatinės įrangos projektavimą, terminalų gamintojai ne tik turi įdiegti debesies funkcijas naudodami vieną ar kelis debesies produktus, kuriuos teikia viešasis debesis, bet ir susieti aparatinę įrangą su debesimi. Pavyzdžiui,ample, prisijungti prie Amazon Web Paslaugos (AWS), terminalų gamintojai turi naudoti AWS produktus, tokius kaip „Amazon API Gateway“, „AWS IoT Core“ ir „AWS Lambda“, kad įgalintų įrenginio prieigą, nuotolinį valdymą, duomenų saugojimą, vartotojų valdymą ir kitas pagrindines funkcijas. Tai ne tik reikalauja, kad terminalų gamintojai lanksčiai naudotų ir konfigūruotų debesies produktus, turint išsamų supratimą ir didelę patirtį, bet taip pat reikalaujama, kad jie įvertintų pradinių ir vėlesnių kūrimo ir priežiūros išlaidas.tages Tai kelia didelių iššūkių įmonės energijai ir ištekliams.
Palyginti su viešaisiais debesimis, privatūs debesys paprastai kuriami konkretiems projektams ir produktams. Privatiems debesų kūrėjams suteikiama didžiausia laisvė kuriant protokolus ir įgyvendinant verslo logiką. Terminalų gamintojai savo nuožiūra gali kurti gaminius ir projektavimo schemas bei lengvai integruoti ir suteikti daugiau galios naudotojų duomenis. Didelis viešųjų debesų saugumas, mastelio keitimas ir patikimumas derinamas su „advan“.tagEspressif paleido ESP
19
RainMaker, giliai integruotas privataus debesies sprendimas, pagrįstas Amazon debesiu. Vartotojai gali įdiegti ESP RainMaker ir kurti privatų debesį tiesiog naudodami AWS paskyrą.
3.1 Kas yra ESP RainMaker?
ESP RainMaker yra visa AIoT platforma, sukurta naudojant kelis brandžius AWS produktus. Ji teikia įvairias paslaugas, reikalingas masinei gamybai, pavyzdžiui, įrenginio debesies prieigą, įrenginio atnaujinimą, užpakalinės sistemos valdymą, trečiosios šalies prisijungimą, balso integravimą ir vartotojų valdymą. Naudodami AWS teikiamą be serverio taikomųjų programų saugyklą (SAR), terminalų gamintojai gali greitai įdiegti ESP RainMaker savo AWS paskyrose, o tai taupo laiką ir yra lengvai valdoma. Espressif valdoma ir prižiūrima SAR, kurią naudoja ESP RainMaker, padeda kūrėjams sumažinti debesų priežiūros išlaidas ir paspartinti AIoT produktų kūrimą, taip sukuriant saugius, stabilius ir pritaikomus AIoT sprendimus. 3.1 paveiksle parodyta ESP RainMaker architektūra.
3.1 pav. ESP RainMaker architektūra
ESP RainMaker viešasis serveris, sukurtas Espressif, yra nemokamas visiems ESP entuziastams, kūrėjams ir pedagogams, kad galėtų įvertinti sprendimus. Kūrėjai gali prisijungti naudodami „Apple“, „Google“ ar „GitHub“ paskyras ir greitai sukurti savo daiktų interneto programų prototipus. Viešasis serveris integruoja Alexa ir Google Home ir teikia valdymo balsu paslaugas, kurias palaiko Alexa Skill ir Google Actions. Jo semantinio atpažinimo funkciją taip pat teikia trečiosios šalys. RainMaker IoT įrenginiai reaguoja tik į konkrečius veiksmus. Išsamų palaikomų balso komandų sąrašą rasite trečiųjų šalių platformose. Be to, „Espressif“ siūlo viešą „RainMaker“ programą, skirtą vartotojams valdyti produktus išmaniaisiais telefonais. 20 ESP32-C3 Wireless Adventure: Išsamus daiktų interneto vadovas
3.2 ESP RainMaker diegimas
Kaip parodyta 3.2 pav., ESP RainMaker susideda iš keturių dalių: · Paraiškų pateikimo paslauga, leidžianti RainMaker įrenginiams dinamiškai gauti sertifikatus. · „RainMaker Cloud“ (taip pat žinomas kaip „Cloud Backend“), teikiantis tokias paslaugas kaip pranešimų filtravimas, vartotojų valdymas, duomenų saugojimas ir trečiųjų šalių integravimas. · RainMaker Agent, leidžianti RainMaker įrenginiams prisijungti prie RainMaker Cloud. · RainMaker Client (RainMaker App arba CLI scenarijai), skirtas aprūpinimui, vartotojų kūrimui, įrenginių susiejimu ir valdymu ir kt.
3.2 pav. ESP RainMaker struktūra
ESP RainMaker suteikia visą įrankių rinkinį produktų kūrimui ir masinei gamybai, įskaitant: RainMaker SDK
RainMaker SDK yra pagrįstas ESP-IDF ir pateikia įrenginio pusės agento šaltinio kodą ir susijusias C API programinės įrangos kūrimui. Kūrėjams tereikia parašyti programos logiką, o visa kita palikti „RainMaker“ sistemai. Norėdami gauti daugiau informacijos apie C API, apsilankykite https://bookc3.espressif.com/rm/c-api-reference. RainMaker App Viešoji RainMaker App versija leidžia kūrėjams užbaigti įrenginio aprūpinimą, valdyti įrenginių (pvz., išmaniojo apšvietimo produktų) būseną ir pateikti užklausas apie juos. Jį galima įsigyti tiek iOS, tiek Android programų parduotuvėse. Daugiau informacijos rasite 10 skyriuje. REST API REST API padeda vartotojams kurti savo programas, panašias į RainMaker App. Norėdami gauti daugiau informacijos, apsilankykite https://swaggerapis.rainmaker.espressif.com/.
3 skyrius. Įvadas į ESP RainMaker 21
„Python“ API „Python“ pagrindu sukurta CLI, kuri pateikiama kartu su RainMaker SDK, yra skirta visoms funkcijoms, panašioms į išmaniojo telefono funkcijas, įgyvendinti. Norėdami gauti daugiau informacijos apie Python API, apsilankykite https://bookc3.espressif.com/rm/python-api-reference.
Administratoriaus CLI su aukštesniu prieigos lygiu suteikiama ESP RainMaker privačiam diegimui, kad būtų galima generuoti įrenginių sertifikatus masiškai.
3.2.1 Paraiškų pareiškimo paslauga
Visas ryšys tarp „RainMaker“ įrenginių ir „Cloud Backend“ vykdomas per MQTT+TLS. ESP RainMaker kontekste „Paraiškos pateikimas“ yra procesas, kurio metu įrenginiai gauna sertifikatus iš pretenzijų pateikimo tarnybos, kad galėtų prisijungti prie debesies užpakalinės programos. Atminkite, kad paraiškų teikimo paslauga taikoma tik viešajai RainMaker paslaugai, o privataus diegimo atveju įrenginio sertifikatai turi būti generuojami masiškai naudojant administratoriaus CLI. ESP RainMaker palaiko tris pretenzijų pateikimo paslaugų tipus: Savarankiškas pretenzijų pateikimas
Pats įrenginys paima sertifikatus per slaptą raktą, iš anksto užprogramuotą „eFuse“, prisijungęs prie interneto. Pagrindinis kompiuterinis reikalavimas Sertifikatai gaunami iš kūrimo pagrindinio kompiuterio naudojant RainMaker paskyrą. Pagalbinis pareiškimas Sertifikatai gaunami naudojant išmaniųjų telefonų programas teikiant paslaugas.
3.2.2 RainMaker agentas
3.3 pav. RainMaker SDK struktūra Pagrindinė RainMaker agento funkcija yra užtikrinti ryšį ir padėti taikomosios programos sluoksniui apdoroti aukštyn / žemyn nukreiptus debesies duomenis. Jis sukurtas naudojant RainMaker SDK 22 ESP32-C3 Wireless Adventure: Išsamus daiktų interneto vadovas
ir sukurta remiantis patikrinta ESP-IDF sistema, naudojant ESP-IDF komponentus, tokius kaip RTOS, NVS ir MQTT. 3.3 paveiksle parodyta RainMaker SDK struktūra.
RainMaker SDK apima dvi pagrindines funkcijas.
Ryšys
i. Bendradarbiavimas su „Claiming Service“ siekiant gauti įrenginio sertifikatus.
ii. Prisijungimas prie debesies užpakalinės programos naudojant saugų MQTT protokolą, kad būtų užtikrintas nuotolinis ryšys ir įdiegtas nuotolinis valdymas, pranešimų teikimas, naudotojų valdymas, įrenginių valdymas ir kt. Pagal numatytuosius nustatymus jis naudoja ESP-IDF MQTT komponentą ir suteikia abstrakcijos sluoksnį sąsajai su kitais įrenginiais. protokolų krūvos.
iii. Teikiamas „Wi-Fi“ teikimo komponentas, skirtas „Wi-Fi“ ryšiui ir aprūpinimui, ypač „https ota“ komponentas, skirtas OTA naujinimams, ir vietinis „Ctrl“ komponentas vietiniam įrenginiui aptikti ir prijungti. Visus šiuos tikslus galima pasiekti naudojant paprastą konfigūraciją.
Duomenų apdorojimas
i. „Claiming Service“ išduotų įrenginių sertifikatų ir duomenų, reikalingų paleidžiant „RainMaker“, saugojimas, pagal numatytuosius nustatymus naudojant „nvs flash“ komponento teikiamą sąsają, ir teikiant API kūrėjams tiesioginiam naudojimui.
ii. Naudojant atgalinio ryšio mechanizmą aukštyn / žemyn nukreiptiems debesies duomenims apdoroti ir automatiškai atblokuoti duomenis į programos sluoksnį, kad kūrėjai galėtų lengvai juos apdoroti. Pavyzdžiui,ampRainMaker SDK teikia turtingas sąsajas, skirtas TSL (Thing Specification Language) duomenims nustatyti, kurių reikia norint apibrėžti TSL modelius, apibūdinančius daiktų interneto įrenginius ir įgyvendinant tokias funkcijas kaip laikas, atgalinis skaičiavimas ir valdymas balsu. Pagrindinėms interaktyviosioms funkcijoms, pvz., laiko nustatymui, RainMaker SDK yra nekuriamas sprendimas, kurį prireikus galima tiesiog įjungti. Tada „RainMaker“ agentas tiesiogiai apdoros duomenis, išsiųs juos į debesį per susietą MQTT temą ir grąžins duomenų pakeitimus debesies fone naudodamas atgalinio skambinimo mechanizmą.
3.2.3 „Cloud Backend“.
Debesis yra sukurta naudojant AWS be serverio skaičiavimo ir pasiekiama naudojant AWS Cognito (tapatybės valdymo sistema), Amazon API Gateway, AWS Lambda (be serverio skaičiavimo paslaugą), Amazon DynamoDB (NoSQL duomenų bazę), AWS IoT Core (IoT prieigos branduolį, suteikiantį MQTT prieigą) ir taisyklių filtravimas), „Amazon Simple Email Service“ (paprasto SES pašto paslauga), „Amazon CloudFront“ (greito pristatymo tinklas), „Amazon Simple Queue Service“ (SQS pranešimų eilės statymas) ir „Amazon S3“ (kibirų saugojimo paslauga). Juo siekiama optimizuoti mastelį ir saugumą. Naudodami ESP RainMaker, kūrėjai gali valdyti įrenginius nerašydami kodo debesyje. Įrenginių pranešimai skaidriai perduodami į
3 skyrius. Įvadas į ESP RainMaker 23
taikomųjų programų klientus ar kitas trečiųjų šalių paslaugas. 3.1 lentelėje rodomi AWS debesies produktai ir funkcijos, naudojami debesies foninėje sistemoje, su daugiau kuriamų produktų ir funkcijų.
3.1 lentelė. AWS debesies produktai ir funkcijos, kurias naudoja debesies užpakalinė programa
AWS debesies produktas, naudojamas RainMaker
Funkcija
AWS Cognito
Tvarkyti vartotojo kredencialus ir palaikyti trečiųjų šalių prisijungimus
AWS lambda
Pagrindinės debesų sistemos verslo logikos įgyvendinimas
Amazon Timestream Saugo laiko eilučių duomenis
„Amazon DynamoDB“ Saugo privačią klientų informaciją
AWS IoT branduolys
MQTT komunikacijos palaikymas
Amazon SES
Laiškų siuntimo paslaugų teikimas
„Amazon CloudFront“ Spartina užpakalinės programos valdymą webprieiga prie svetainės
Amazon SQS
Pranešimų persiuntimas iš AWS IoT Core
3.2.4 RainMaker klientas
„RainMaker“ klientai, pvz., „App“ ir „CLI“, bendrauja su „Cloud Backend“ per REST API. Išsamią informaciją ir instrukcijas apie REST API galite rasti „Espressif“ pateiktoje „Swagger“ dokumentacijoje. „RainMaker“ mobiliųjų programų klientas galimas tiek „iOS“, tiek „Android“ sistemoms. Tai leidžia aprūpinti įrenginius, valdyti ir bendrinti, taip pat kurti ir įjungti atvirkštinio skaičiavimo užduotis ir prisijungti prie trečiųjų šalių platformų. Jis gali automatiškai įkelti vartotojo sąsają ir piktogramas pagal įrenginių pateiktą konfigūraciją ir visiškai parodyti įrenginio TSL.
Pavyzdžiui,ample, jei išmanusis šviestuvas yra pastatytas ant RainMaker SDK pateikto examples, lemputės lemputės piktograma ir vartotojo sąsaja bus įkeliama automatiškai, kai bus baigtas aprūpinimas. Vartotojai gali pakeisti šviesos spalvą ir ryškumą naudodami sąsają ir pasiekti trečiosios šalies valdymą, susiedami Alexa Smart Home Skill arba Google Smart Home Actions su savo ESP RainMaker paskyromis. 3.4 paveiksle parodyta piktograma ir vartotojo sąsaja, pvzamplemputės lemputę atitinkamai Alexa, Google Home ir ESP RainMaker App.
24 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
a) Pvzample – Alexa
b) Pvzample – Google Home
(c) Pvzample – ESP RainMaker
3.4 pav. Pvzamppiktogramą ir lemputės lemputės vartotojo sąsają „Alexa“, „Google Home“ ir „ESP RainMaker App“
3.3 Praktika: pagrindiniai dalykai kuriant naudojant ESP RainMaker
Kai įrenginio tvarkyklės sluoksnis bus baigtas, kūrėjai gali pradėti kurti TSL modelius ir apdoroti žemyn nukreiptus duomenis naudodamiesi API, kurias teikia RainMaker SDK, ir įgalinti ESP RainMaker pagrindines paslaugas pagal produkto apibrėžimą ir reikalavimus.
3 skyrius. Įvadas į ESP RainMaker 25
Šios knygos 9.4 skyriuje bus paaiškintas LED išmaniosios lemputės įdiegimas programoje RainMaker. Derindami kūrėjai gali naudoti RainMaker SDK CLI įrankius, kad galėtų susisiekti su išmaniąja šviesa (arba iškviesti REST API iš Swagger).
10 skyriuje bus išsamiai aprašytas REST API naudojimas kuriant išmaniųjų telefonų programas. LED išmaniųjų šviestuvų OTA atnaujinimai bus aptarti 11 skyriuje. Jei kūrėjai įgalino ESP Insights nuotolinį stebėjimą, ESP RainMaker valdymo užpakalinė programa rodys ESP Insights duomenis. Išsami informacija bus pateikta 15 skyriuje.
ESP RainMaker palaiko privatų diegimą, kuris skiriasi nuo viešojo RainMaker serverio šiais būdais:
Reikalavimų teikimo paslauga Norint generuoti sertifikatus privačiuose diegimuose, vietoj pretenzijų pateikimo reikia naudoti RainMaker Admin CLI. Naudojant viešąjį serverį, kūrėjams turi būti suteiktos administratoriaus teisės įdiegti programinės aparatinės įrangos atnaujinimą, tačiau tai nepageidautina naudojant komercinius diegimus. Todėl negali būti teikiama nei atskira autentifikavimo paslauga, kai pareiškiama paraiška savarankiškai, nei administratoriaus teisės prieglobos valdomo ar pagalbinio reikalavimo pareiškimui.
Telefono programos Privataus diegimo metu programas reikia sukonfigūruoti ir kompiliuoti atskirai, kad būtų užtikrinta, jog paskyros sistemos nėra suderinamos.
Trečiosios šalies prisijungimai ir integravimas balsu Kūrėjai turi konfigūruoti atskirai naudodami „Google“ ir „Apple“ kūrėjų paskyras, kad įgalintų trečiųjų šalių prisijungimus, taip pat „Alexa Skill“ ir „Google Voice Assistant“ integraciją.
PATARIMAI Norėdami gauti daugiau informacijos apie debesies diegimą, apsilankykite https://customer.rainmaker.espressif. com. Kalbant apie programinę-aparatinę įrangą, perkėlus iš viešojo serverio į privatų serverį reikia pakeisti tik įrenginio sertifikatus, o tai labai pagerina perkėlimo efektyvumą ir sumažina perkėlimo bei antrinio derinimo išlaidas.
3.4 ESP RainMaker savybės
ESP RainMaker funkcijos daugiausia skirtos trims aspektams – vartotojų valdymui, galutiniams vartotojams ir administratoriams. Visos funkcijos palaikomos tiek viešuose, tiek privačiuose serveriuose, jei nenurodyta kitaip.
3.4.1 Vartotojų valdymas
Vartotojų valdymo funkcijos leidžia galutiniams vartotojams registruotis, prisijungti, keisti slaptažodžius, gauti slaptažodžius ir pan.
26 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Registracija ir prisijungimas RainMaker palaikomi registracijos ir prisijungimo būdai: · El. pašto adresas + Slaptažodis · Telefono numeris + Slaptažodis · Google paskyra · Apple paskyra · GitHub paskyra (tik viešajame serveryje) · Amazon paskyra (tik privatus serveris)
PASTABA Prisiregistruodami naudodami „Google“ / „Amazon“ bendrina naudotojo el. pašto adresą su „RainMaker“. Prisiregistruokite naudodami „Apple“ bendrina netikrą adresą, kurį „Apple“ priskiria vartotojui specialiai „RainMaker“ paslaugai. „RainMaker“ paskyra bus automatiškai sukurta vartotojams, pirmą kartą prisijungiantiems prie „Google“, „Apple“ ar „Amazon“ paskyros.
Keisti slaptažodį Galioja tik prisijungimams pagal el. pašto ID / telefono numerius. Pakeitus slaptažodį, visos kitos aktyvios sesijos bus atjungtos. Atsižvelgiant į AWS Cognito elgseną, atsijungtos sesijos gali išlikti aktyvios iki 1 valandos.
Gauti slaptažodį Galioja tik prisijungimams pagal el. pašto ID / telefono numerį.
3.4.2 Galutinio vartotojo funkcijos
Galutiniams vartotojams prieinamos funkcijos apima vietinį ir nuotolinį valdymą ir stebėjimą, planavimą, įrenginių grupavimą, įrenginių bendrinimą, tiesioginius pranešimus ir trečiųjų šalių integravimą.
Nuotolinis valdymas ir stebėjimas · Užklausa dėl vieno ar visų įrenginių konfigūracijos, parametrų reikšmių ir ryšio būsenos. · Nustatykite parametrus vienam ar keliems įrenginiams.
Vietinis valdymas ir stebėjimas Vietiniam valdymui mobilusis telefonas ir įrenginys turi būti prijungti prie to paties tinklo.
Planavimas · Vartotojai iš anksto nustato tam tikrus veiksmus konkrečiu laiku. · Vykdant tvarkaraštį įrenginiui nereikia interneto ryšio. · Vieną kartą arba pakartotinai (nurodant dienas) vienam ar keliems įrenginiams.
Įrenginių grupavimas Palaiko kelių lygių abstrakčią grupavimą Grupės metaduomenys gali būti naudojami kuriant namų kambario struktūrą.
3 skyrius. Įvadas į ESP RainMaker 27
Įrenginio bendrinimas Vienu ar daugiau įrenginių galima bendrinti su vienu ar daugiau vartotojų.
Push pranešimai Galutiniai naudotojai gaus tiesioginius pranešimus apie įvykius, pvz., · Pridėtas / pašalintas naujas įrenginys (-ai) · Įrenginys prijungtas prie debesies · Įrenginys atjungtas nuo debesies · Įrenginio bendrinimo užklausos sukurtos / priimtos / atmestos · Įspėjimų pranešimai, apie kuriuos praneša įrenginiai
Trečiųjų šalių integracijos „Alexa“ ir „Google Voice Assistant“ palaikomos norint valdyti „RainMaker“ įrenginius, įskaitant šviesas, jungiklius, lizdus, ventiliatorius ir temperatūros jutiklius.
3.4.3 Administratoriaus funkcijos
Administratoriaus funkcijos leidžia administratoriams įdiegti įrenginių registraciją, įrenginių grupavimą, OTA naujinimus ir į view statistika ir ESP Insights duomenys.
Įrenginio registracija Generuokite įrenginio sertifikatus ir užsiregistruokite administratoriaus CLI (tik privačiame serveryje).
Įrenginių grupavimas Kurkite abstrakčias arba struktūrines grupes pagal įrenginio informaciją (tik privatus serveris).
Belaidžio ryšio (OTA) naujinimai Įkelkite programinę-aparatinę įrangą pagal versiją ir modelį į vieną ar daugiau įrenginių arba grupę Stebėkite, atšaukite arba archyvuokite OTA užduotis.
View statistika ViewGalima statistika apima: · Įrenginių registracijas (administratoriaus užregistruotus sertifikatus) · Įrenginio aktyvavimus (įrenginys prijungtas pirmą kartą) · Vartotojų abonementus · Vartotojo ir įrenginio susiejimą
View ESP Insights duomenys ViewGalimi ESP Insights duomenys apima: · klaidas, įspėjimus ir pasirinktinius žurnalus · gedimų ataskaitas ir analizę · paleidimo iš naujo priežastis · metriką, pvz., atminties naudojimą, RSSI ir kt. · Priskirtą metriką ir kintamuosius
28 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
3.5 Santrauka
Šiame skyriuje pristatėme kai kuriuos pagrindinius skirtumus tarp viešo RainMaker diegimo ir privataus diegimo. Privatus ESP RainMaker sprendimas, kurį pristatė Espressif, yra labai patikimas ir išplečiamas. Visi ESP32 serijos lustai buvo prijungti ir pritaikyti AWS, o tai labai sumažina išlaidas. Kūrėjai gali sutelkti dėmesį į prototipo patikrinimą, nesimokydami apie AWS debesies produktus. Taip pat paaiškinome ESP RainMaker diegimą ir ypatybes bei kai kuriuos pagrindinius plėtros naudojant platformą punktus.
Nuskaitykite, kad atsisiųstumėte ESP RainMaker, skirtą Android Nuskaitykite, kad atsisiųstumėte ESP RainMaker, skirtą iOS
3 skyrius. Įvadas į ESP RainMaker 29
30 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Skyrius Sąranka 4 Kūrimo aplinka
Šiame skyriuje pagrindinis dėmesys skiriamas ESP-IDF, oficialiai ESP32-C3 programinės įrangos kūrimo sistemai. Paaiškinsime, kaip nustatyti aplinką įvairiose operacinėse sistemose, supažindinsime su ESP-IDF projekto struktūra ir kūrimo sistema bei susijusių kūrimo įrankių naudojimu. Tada pristatysime buvusio asmens sudarymo ir vykdymo procesąample projektą, kartu pateikdamas išsamų išvesties žurnalo paaiškinimą kiekviename stage.
4.1 ESP-IDF Overview
ESP-IDF („Espressif IoT Development Framework“) yra vieno langelio IoT kūrimo sistema, kurią teikia Espressif Technology. Jis naudoja C/C++ kaip pagrindinę kūrimo kalbą ir palaiko kryžminį kompiliavimą pagrindinėse operacinėse sistemose, tokiose kaip Linux, Mac ir Windows. Buvęsampį šią knygą įtrauktos programos yra sukurtos naudojant ESP-IDF, kuri siūlo šias funkcijas: · SoC sistemos lygio tvarkykles. ESP-IDF apima ESP32, ESP32-S2, ESP32-C3,
ir kiti lustai. Šios tvarkyklės apima periferinę žemo lygio (LL) biblioteką, aparatinės įrangos abstrakcijos lygmens (HAL) biblioteką, RTOS palaikymą ir viršutinio sluoksnio tvarkyklių programinę įrangą ir kt. · Esminiai komponentai. ESP-IDF apima pagrindinius komponentus, reikalingus IoT plėtrai. Tai apima kelis tinklo protokolų paketus, pvz., HTTP ir MQTT, energijos valdymo sistemą su dinamine dažnio moduliacija ir tokias funkcijas kaip „Flash“ šifravimas ir saugus įkrovimas ir kt. · Kūrimo ir gamybos įrankiai. ESP-IDF teikia dažniausiai naudojamus įrankius, skirtus kurti, „flash“ ir derinti kūrimo ir masinės gamybos metu (žr. 4.1 pav.), pvz., pastato sistemą, pagrįstą CMake, kryžminio kompiliavimo įrankių grandinę, pagrįstą GCC, ir JTAG Derinimo įrankis, pagrįstas OpenOCD ir kt. Verta paminėti, kad ESP-IDF kodas visų pirma atitinka Apache 2.0 atvirojo kodo licenciją. Vartotojai gali kurti asmeninę ar komercinę programinę įrangą be apribojimų, laikydamiesi atvirojo kodo licencijos sąlygų. Be to, naudotojams suteikiamos nemokamos nuolatinės patentų licencijos, be įsipareigojimo naudoti atvirojo kodo bet kokius šaltinio kodo pakeitimus.
31
4.1 pav.
Kurti, mirksėti ir derinti
tobulinimo ir masinės gamybos įrankiai
4.1.1 ESP-IDF versijos
ESP-IDF kodas yra priglobtas GitHub kaip atvirojo kodo projektas. Šiuo metu yra trys pagrindinės versijos: v3, v4 ir v5. Kiekvienoje pagrindinėje versijoje paprastai yra įvairių subversijų, tokių kaip v4.2, v4.3 ir pan. „Espressif Systems“ užtikrina kiekvienos išleistos antrinės versijos klaidų pataisų ir saugos pataisų palaikymą 30 mėnesių. Todėl reguliariai išleidžiamos ir subversijų versijos, pvz., v4.3.1, v4.2.2 ir tt. 4.1 lentelėje parodyta skirtingų ESP-IDF versijų, skirtų Espressif lustams, palaikymo būsena, nurodant, ar jos yra iš ankstoview stage (siūlo paramą iš ankstoview versijos, kuriose gali trūkti tam tikrų funkcijų ar dokumentacijos) arba yra oficialiai palaikomos.
4.1 lentelė. Įvairių ESP-IDF versijų, skirtų Espressif lustams, palaikymo būsena
Serija ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
Palaikoma v4.1
Palaikoma v4.2
v4.3 palaikomas palaikomas palaikomas
v4.4 palaikomas palaikomas palaikomas palaikomas
išankstinisview
v5.0 palaikoma palaikoma palaikoma palaikoma palaikoma palaikoma preview
32 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Pagrindinių versijų iteracija dažnai apima sistemos struktūros koregavimus ir kompiliavimo sistemos atnaujinimus. Pavyzdžiui,ample, pagrindinis pokytis iš v3.* į v4.* buvo laipsniškas kūrimo sistemos perkėlimas iš Make į CMake. Kita vertus, atliekant nedidelių versijų iteraciją, paprastai pridedamos naujos funkcijos arba palaikomi nauji lustai.
Svarbu atskirti ir suprasti ryšį tarp stabilių versijų ir GitHub šakų. Versijos, pažymėtos kaip v*.* arba v*.*.*, reiškia stabilias versijas, kurios išlaikė pilną vidinį Espressif testavimą. Pataisius, tos pačios versijos kodas, įrankių grandinė ir išleidimo dokumentai lieka nepakitę. Tačiau „GitHub“ atšakos (pvz., leidimas / v4.3 filialas) dažnai atlieka kodo įpareigojimus, dažnai kasdien. Todėl du toje pačioje šakoje esantys kodo fragmentai gali skirtis, todėl kūrėjai turi nedelsiant atitinkamai atnaujinti savo kodą.
4.1.2 ESP-IDF Git darbo eiga
Espressif vadovaujasi specifine Git darbo eiga, skirta ESP-IDF, aprašyta taip:
· Nauji pakeitimai atliekami pagrindinėje šakoje, kuri yra pagrindinė plėtros šaka. ESP-IDF versija pagrindinėje šakoje visada turi -dev tag nurodyti, kad jis šiuo metu yra kuriamas, pvz., v4.3-dev. Pakeitimai pagrindinėje šakoje pirmiausia bus iš naujoviewRedaguotas ir išbandytas „Espressif“ vidinėje saugykloje, o pasibaigus automatiniam testavimui perkeltas į „GitHub“.
· Kai naujoji versija baigia kurti pagrindinio skyriaus funkcijas ir atitinka beta versijos testavimo kriterijus, ji pereina prie naujos šakos, pvz., leidimas/ v4.3. Be to, šis naujas filialas yra tagged kaip išankstinė versija, pvz., v4.3-beta1. Kūrėjai gali kreiptis į GitHub platformą, kad pasiektų visą filialų sąrašą ir tags skirtas ESP-IDF. Svarbu pažymėti, kad beta versija (išankstinė versija) vis dar gali turėti daug žinomų problemų. Kadangi beta versija nuolat tikrinama, klaidų pataisymai pridedami ir prie šios versijos, ir į pagrindinę šaką vienu metu. Tuo tarpu pagrindinė šaka jau gali būti pradėjusi kurti naujas kitos versijos funkcijas. Kai testavimas beveik baigtas, prie šakos pridedama leidimo kandidato (rc) etiketė, nurodanti, kad ji yra potenciali kandidatė į oficialų leidimą, pvz., v4.3-rc1. Šiuo stage, filialas išlieka išankstinio leidimo versija.
· Jei neaptinkama ar nepranešama didelių klaidų, išankstinė versija galiausiai gauna pagrindinės versijos etiketę (pvz., v5.0) arba nedidelės versijos etiketę (pvz., v4.3) ir tampa oficialia leidimo versija, kuri yra dokumentuojama. išleidimo pastabų puslapyje. Vėliau visos šioje versijoje nustatytos klaidos yra ištaisomos leidimo šakoje. Baigus rankinį testavimą, šakai priskiriama klaidų taisymo versijos etiketė (pvz., v4.3.2), kuri taip pat atsispindi laidos pastabų puslapyje.
4 skyrius. Kūrimo aplinkos nustatymas 33
4.1.3 Tinkamos versijos pasirinkimas
Kadangi ESP-IDF oficialiai pradėjo palaikyti ESP32-C3 nuo 4.3 versijos, o v4.4 dar nebuvo oficialiai išleistas šios knygos rašymo metu, šioje knygoje naudojama versija 4.3.2, kuri yra pataisyta versija. iš v4.3. Tačiau svarbu pažymėti, kad tuo metu, kai perskaitysite šią knygą, 4.4 ar naujesnės versijos jau gali būti prieinamos. Renkantis versiją rekomenduojame:
· Pradinio lygio kūrėjams patartina rinktis stabilią v4.3 versiją arba pataisytą jos versiją, kuri atitinka exampŠioje knygoje naudojama versija.
· Masinės gamybos tikslais rekomenduojama naudoti naujausią stabilią versiją, kad galėtumėte pasinaudoti naujausia technine pagalba.
· Jei ketinate eksperimentuoti su naujais lustais arba ištirti naujas produkto funkcijas, naudokite pagrindinę šaką. Naujausioje versijoje yra visos naujausios funkcijos, tačiau atminkite, kad gali būti žinomų arba nežinomų klaidų.
· Jei naudojamoje stabilioje versijoje nėra norimų naujų funkcijų ir norite sumažinti riziką, susijusią su pagrindine šaka, apsvarstykite galimybę naudoti atitinkamą leidimo šaką, pvz., leidimo / v4.4 šaką. Espressif GitHub saugykla pirmiausia sukurs leidimo / v4.4 šaką, o vėliau išleis stabilią v4.4 versiją, pagrįstą konkrečia istorine šios šakos nuotrauka, kai bus baigtas visų funkcijų kūrimas ir testavimas.
4.1.4 Baigtaview ESP-IDF SDK katalogo
ESP-IDF SDK sudaro du pagrindiniai katalogai: esp-idf ir .espressif. Pirmajame yra ESP-IDF saugyklos šaltinio kodas files ir kompiliavimo scenarijus, o pastarasis daugiausia saugo kompiliavimo įrankių grandines ir kitą programinę įrangą. Šių dviejų katalogų pažinimas padės kūrėjams geriau išnaudoti turimus išteklius ir pagreitinti kūrimo procesą. ESP-IDF katalogo struktūra aprašyta toliau:
(1) ESP-IDF saugyklos kodų katalogas (/esp/esp-idf), kaip parodyta 4.2 pav.
a. Komponentų katalogo komponentai
Šiame pagrindiniame kataloge integruota daug esminių ESP-IDF programinės įrangos komponentų. Jokio projekto kodo negalima sudaryti nepasikliaujant šio katalogo komponentais. Tai apima įvairių Espressif lustų tvarkyklės palaikymą. Nuo LL bibliotekos ir HAL bibliotekos sąsajų periferiniams įrenginiams iki aukščiausio lygio tvarkyklės ir virtualiosios File Sistemos (VFS) sluoksnio palaikymas, kūrėjai gali pasirinkti tinkamus komponentus įvairiais lygiais savo kūrimo poreikiams. ESP-IDF taip pat palaiko keletą standartinių tinklo protokolų, tokių kaip TCP/IP, HTTP, MQTT, WebSocket ir tt Kurdami tinklo programas, kūrėjai gali naudoti pažįstamas sąsajas, pvz., Socket. Komponentai suteikia supratimą
34 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
4.2 pav. ESP-IDF saugyklos kodų katalogas
funkcionalumas ir gali būti lengvai integruotas į programas, todėl kūrėjai gali sutelkti dėmesį tik į verslo logiką. Kai kurie įprasti komponentai: · tvarkyklė: šiame komponente yra įvairių „Espressif“ skirtų periferinių tvarkyklių programų
lustų serijos, tokios kaip GPIO, I2C, SPI, UART, LEDC (PWM) ir kt. Šio komponento periferinės tvarkyklės programos siūlo nuo lustų nepriklausomas abstrakčias sąsajas. Kiekvienas periferinis įrenginys turi bendrą antraštę file (pvz., gpio.h), pašalinant poreikį spręsti įvairius su lustu susijusius palaikymo klausimus. · esp_wifi: Wi-Fi, kaip specialus išorinis įrenginys, yra traktuojamas kaip atskiras komponentas. Tai apima kelias API, pvz., įvairių „Wi-Fi“ tvarkyklės režimų inicijavimą, parametrų konfigūraciją ir įvykių apdorojimą. Tam tikros šio komponento funkcijos pateikiamos statinių saitų bibliotekų pavidalu. ESP-IDF taip pat pateikia išsamią tvarkyklės dokumentaciją, kad būtų lengviau naudoti.
4 skyrius. Kūrimo aplinkos nustatymas 35
· freertos: Šiame komponente yra visas FreeRTOS kodas. „Espressif“ ne tik teikia visapusišką šios operacinės sistemos palaikymą, bet ir išplėtė savo paramą dviejų branduolių lustams. Dviejų branduolių lustams, pvz., ESP32 ir ESP32-S3, vartotojai gali kurti užduotis konkrečiuose branduoliuose.
b. Dokumentų katalogo dokumentai
Šiame kataloge yra su ESP-IDF susiję kūrimo dokumentai, įskaitant darbo pradžios vadovą, API informacinį vadovą, kūrimo vadovą ir kt.
PASTABA Sukompiliavus automatizuotais įrankiais, šio katalogo turinys yra įdiegtas adresu https://docs.espressif.com/projects/esp-idf. Būtinai perjunkite dokumento tikslą į ESP32-C3 ir pasirinkite nurodytą ESP-IDF versiją.
c. Scenarijaus įrankio įrankiai
Šiame kataloge yra dažniausiai naudojami kompiliavimo priekiniai įrankiai, tokie kaip idf.py ir monitoriaus terminalo įrankis idf_monitor.py ir tt Pakatalogyje cmake taip pat yra pagrindinis scenarijus files kompiliavimo sistemos, kuri yra ESP-IDF kompiliavimo taisyklių įgyvendinimo pagrindas. Pridedant aplinkos kintamuosius, įrankių katalogo turinys pridedamas prie sistemos aplinkos kintamojo, todėl idf.py galima vykdyti tiesiogiai projekto kelyje.
d. Pvzample programos katalogas examples
Šiame kataloge yra didžiulė ESP-IDF ex kolekcijaample programas, kurios demonstruoja komponentų API naudojimą. Buvęsamples yra suskirstyti į įvairius pakatalogius pagal kategorijas:
· pradėti: Šiame pakatalogyje yra pradinio lygio, pvzampkaip „labas pasaulis“ ir „mirksėjimas“, kad naudotojai suprastų pagrindus.
· Bluetooth: galite rasti su Bluetooth susijusią pvzamples čia, įskaitant „Bluetooth LE Mesh“, „Bluetooth LE HID“, „BluFi“ ir kt.
· wifi: šiame pakatalogyje daugiausia dėmesio skiriama „Wi-Fi“, pvzamples, įskaitant pagrindines programas, tokias kaip „Wi-Fi SoftAP“, „Wi-Fi Station“, espnow, taip pat patentuotą ryšio protokolą, pvz.amples iš Espressif. Tai taip pat apima kelis taikymo sluoksnius, pvzamppagrįsti „Wi-Fi“, pvz., „Iperf“, „Sniffer“ ir „Smart Config“.
· periferiniai įrenginiai: šis platus pakatalogis yra dar padalintas į daugybę poaplankių pagal periferinių įrenginių pavadinimus. Jame daugiausia yra periferinės tvarkyklės, pvzamples Espressif lustams, su kiekvienu example, kuriame yra keletas subexamples. Pavyzdžiui, gpio pakatalogis apima du examples: GPIO ir GPIO matricinė klaviatūra. Svarbu pažymėti, kad ne visi buvęamples šiame kataloge taikomi ESP32-C3.
36 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Pavyzdžiui,ample, buvęsamples in usb/host galioja tik išoriniams įrenginiams su USB Host aparatūra (pvz., ESP32-S3), o ESP32-C3 šio periferinio įrenginio neturi. Kompiliavimo sistema paprastai pateikia raginimus nustatant tikslą. README file iš kiekvieno buvusioample pateikia palaikomų lustų sąrašą. · protokolai: Šiame pakatalogyje yra pvzamples įvairiems ryšio protokolams, įskaitant MQTT, HTTP, HTTP serverį, PPPoS, Modbus, mDNS, SNTP, apimantį platų ryšio protokolų spektrą, pvz.ampmažiau reikalinga IoT plėtrai. · aprūpinimas: čia rasite aprūpinimą pvzamples skirtingiems metodams, pvz., „Wi-Fi“ teikimui ir „Bluetooth LE“ aprūpinimui. · sistema: Šiame pakatalogyje yra sistemos derinimo, pvzamples (pvz., kamino sekimas, vykdymo laiko sekimas, užduočių stebėjimas), galios valdymas, pvzamples (pvz., įvairūs miego režimai, koprocesoriai) ir pvzampmažiau susiję su įprastais sistemos komponentais, tokiais kaip konsolės terminalas, įvykių ciklas ir sistemos laikmatis. · saugykla: šiame pakatalogyje rasite pvzampmažiau visų file ESP-IDF palaikomos sistemos ir saugojimo mechanizmai (pvz., „Flash“, SD kortelės ir kitų laikmenų skaitymas ir rašymas), taip pat pvz.ampmažiau nepastovios saugyklos (NVS), FatFS, SPIFFS ir kt file sistemos operacijos. · saugumas: Šiame pakatalogyje yra pvzampmažiau susiję su „flash“ šifravimu. (2) ESP-IDF kompiliavimo įrankių grandinės katalogas (/.espressif), kaip parodyta 4.3 pav.
4.3 pav. ESP-IDF kompiliavimo įrankių grandinės katalogas
4 skyrius. Kūrimo aplinkos nustatymas 37
a. Programinės įrangos platinimo katalogas dist
ESP-IDF įrankių grandinė ir kita programinė įranga platinama suspaustų paketų pavidalu. Diegimo proceso metu diegimo įrankis pirmiausia atsisiunčia suspaustą paketą į dist katalogą, o tada ištraukia jį į nurodytą katalogą. Kai diegimas bus baigtas, šio katalogo turinį galima saugiai pašalinti.
b. Python virtualios aplinkos katalogas python env
Įvairios ESP-IDF versijos priklauso nuo konkrečių Python paketų versijų. Diegiant šiuos paketus tiesiai tame pačiame pagrindiniame kompiuteryje, gali kilti paketų versijų konfliktų. Norėdami tai išspręsti, ESP-IDF naudoja Python virtualią aplinką, kad atskirtų skirtingas paketo versijas. Naudodamiesi šiuo mechanizmu, kūrėjai gali įdiegti kelias ESP-IDF versijas tame pačiame pagrindiniame kompiuteryje ir lengvai perjungti jas importuodami skirtingus aplinkos kintamuosius.
c. ESP-IDF kompiliavimo įrankių grandinės katalogo įrankiai
Šiame kataloge daugiausia yra kryžminio kompiliavimo įrankių, reikalingų ESP-IDF projektams sudaryti, pvz., CMake įrankiai, Ninja kūrimo įrankiai ir gcc įrankių grandinė, kuri generuoja galutinę vykdomąją programą. Be to, šiame kataloge yra standartinė C/C++ kalbos biblioteka kartu su atitinkama antrašte files. Jei programa nurodo sistemos antraštę file kaip #įtraukti , kompiliavimo įrankių grandinė suras stdio.h file šiame kataloge.
4.2 ESP-IDF kūrimo aplinkos nustatymas
ESP-IDF kūrimo aplinka palaiko pagrindines operacines sistemas, tokias kaip „Windows“, „Linux“ ir „MacOS“. Šiame skyriuje bus pristatyta, kaip kiekvienoje sistemoje nustatyti kūrimo aplinką. Rekomenduojama sukurti ESP32-C3 Linux sistemoje, kuri bus išsamiai pristatyta čia. Daugelis instrukcijų taikomos įvairiose platformose dėl kūrimo įrankių panašumo. Todėl patartina atidžiai perskaityti šio skyriaus turinį.
PASTABA Galite peržiūrėti internetinius dokumentus, pasiekiamus adresu https://bookc3.espressif.com/esp32c3, kuriuose pateikiamos šiame skyriuje nurodytos komandos.
4.2.1 ESP-IDF kūrimo aplinkos nustatymas Linux sistemoje
GNU kūrimo ir derinimo įrankiai, reikalingi ESP-IDF kūrimo aplinkai, yra Linux sistemoje. Be to, Linux komandų eilutės terminalas yra galingas ir patogus vartotojui, todėl tai idealus pasirinkimas kuriant ESP32-C3. Tu gali
38 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
pasirinkite pageidaujamą Linux platinimą, tačiau rekomenduojame naudoti Ubuntu ar kitas Debian pagrįstas sistemas. Šiame skyriuje pateikiamos gairės, kaip nustatyti ESP-IDF kūrimo aplinką Ubuntu 20.04.
1. Įdiekite reikiamus paketus
Atidarykite naują terminalą ir vykdykite šią komandą, kad įdiegtumėte visus reikalingus paketus. Komanda automatiškai praleis jau įdiegtus paketus.
$ sudo apt-get įdiegti git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
PATARIMAI Pirmiau nurodytai komandai turite naudoti administratoriaus paskyrą ir slaptažodį. Pagal numatytuosius nustatymus įvedant slaptažodį jokia informacija nebus rodoma. Norėdami tęsti procedūrą, tiesiog paspauskite klavišą „Enter“.
Git yra pagrindinis kodo valdymo įrankis ESP-IDF. Sėkmingai nustatę kūrimo aplinką, galite naudoti komandą git log view visi kodo pakeitimai, padaryti nuo ESP-IDF sukūrimo. Be to, Git taip pat naudojamas ESP-IDF versijos informacijai patvirtinti, kuri reikalinga norint įdiegti tinkamą įrankių grandinę, atitinkančią konkrečias versijas. Kartu su Git, kiti svarbūs sistemos įrankiai apima Python. ESP-IDF apima daugybę automatizavimo scenarijų, parašytų Python. Tokie įrankiai kaip CMake, Ninja-build ir Ccache yra plačiai naudojami C/C++ projektuose ir yra numatytieji kodo kompiliavimo ir kūrimo įrankiai ESP-IDF. libusb-1.0-0 ir dfu-util yra pagrindinės tvarkyklės, naudojamos USB nuosekliajam ryšiui ir programinės įrangos įrašymui. Įdiegę programinės įrangos paketus galite naudoti apt show komandą, kad gautumėte išsamų kiekvieno paketo aprašymą. Pavyzdžiui,ample, naudokite apt show git, kad išspausdintumėte Git įrankio aprašo informaciją.
K: Ką daryti, jei Python versija nepalaikoma? A: ESP-IDF v4.3 reikalinga Python versija, kuri nėra senesnė nei v3.6. Jei naudojate senesnes Ubuntu versijas, rankiniu būdu atsisiųskite ir įdiekite aukštesnę Python versiją ir nustatykite Python3 kaip numatytąją Python aplinką. Išsamias instrukcijas rasite ieškodami raktinio žodžio update-alternatives python.
2. Atsisiųskite ESP-IDF saugyklos kodą
Atidarykite terminalą ir sukurkite aplanką pavadinimu esp savo namų kataloge naudodami komandą mkdir. Jei norite, galite pasirinkti kitą aplanko pavadinimą. Norėdami įvesti aplanką, naudokite komandą cd.
4 skyrius. Kūrimo aplinkos nustatymas 39
$ mkdir -p /esp $ cd /esp
Naudokite komandą git clone, kad atsisiųstumėte ESP-IDF saugyklos kodą, kaip parodyta toliau:
$ git klonas -b v4.3.2 – rekursyvus https://github.com/espressif/esp-idf.git
Aukščiau pateiktoje komandoje parametras -b v4.3.2 nurodo atsisiunčiamą versiją (šiuo atveju 4.3.2 versiją). Parametras –recursive užtikrina, kad visos ESP-IDF antrinės saugyklos būtų atsisiunčiamos rekursyviai. Informaciją apie antrines saugyklas galite rasti .gitmodules file.
3. Įdiekite ESP-IDF kūrimo įrankių grandinę
Espressif pateikia automatinį scenarijų install.sh, kad atsisiųstų ir įdiegtų įrankių grandinę. Šis scenarijus patikrina dabartinę ESP-IDF versiją ir operacinės sistemos aplinką, tada atsisiunčia ir įdiegia atitinkamą Python įrankių paketų ir kompiliavimo įrankių grandinių versiją. Numatytasis įrankių grandinės diegimo kelias yra /.espressif. Viskas, ką jums reikia padaryti, tai pereiti į esp-idf katalogą ir paleisti install.sh.
$ cd /esp/esp-idf $ ./install.sh
Jei sėkmingai įdiegsite įrankių grandinę, terminalas parodys:
Viskas padaryta!
Šiuo metu jūs sėkmingai nustatėte ESP-IDF kūrimo aplinką.
4.2.2 ESP-IDF kūrimo aplinkos nustatymas sistemoje Windows
1. Atsisiųskite ESP-IDF įrankių diegimo programą
PATARIMAI Rekomenduojama nustatyti ESP-IDF kūrimo aplinką Windows 10 ar naujesnėje sistemoje. Diegimo programą galite atsisiųsti iš https://dl.espressif.com/dl/esp-idf/. Diegimo programa taip pat yra atvirojo kodo programinė įranga, o jos šaltinio kodas gali būti viewišleista adresu https://github.com/espressif/idf-installer.
· Internetinė ESP-IDF įrankių diegimo programa
Ši diegimo programa yra palyginti maža, maždaug 4 MB, o kiti paketai ir kodas bus atsisiunčiami diegimo proceso metu. AdvanastagInternetinės diegimo programos pranašumai yra tai, kad diegimo proceso metu ne tik galima atsisiųsti programinės įrangos paketus ir kodą pagal poreikį, bet taip pat leidžia įdiegti visus turimus ESP-IDF leidimus ir naujausią GitHub kodo šaką (pvz., pagrindinę šaką). . Disadvanastage yra tai, kad diegimo proceso metu reikalingas tinklo ryšys, o tai gali sukelti diegimo gedimą dėl tinklo problemų.
40 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
· ESP-IDF įrankių diegimo programa neprisijungus Ši diegimo programa yra didesnė, maždaug 1 GB dydžio, joje yra visi programinės įrangos paketai ir kodas, reikalingi aplinkai nustatyti. Pagrindinis advanastagDiegimo programos neprisijungus pranašumas yra tas, kad ją galima naudoti kompiuteriuose be interneto prieigos ir paprastai jos diegimo sėkmės rodiklis yra didesnis. Reikėtų pažymėti, kad neprisijungusi diegimo programa gali įdiegti tik stabilius ESP-IDF leidimus, pažymėtus v*.* arba v*.*.*.
2. Paleiskite ESP-IDF įrankių diegimo programą Atsisiuntę tinkamą diegimo programos versiją (pvz., ESP-IDF Tools Offline 4.3.2ample čia), dukart spustelėkite exe file kad paleistumėte ESP-IDF diegimo sąsają. Toliau parodyta, kaip įdiegti ESP-IDF stabilią versiją v4.3.2 naudojant neprisijungus pasiekiamą diegimo programą.
(1) 4.4 pav. parodytoje sąsajoje „Pasirinkti diegimo kalbą“ išskleidžiamajame sąraše pasirinkite kalbą, kurią norite naudoti.
4.4 pav. Sąsaja „Pasirinkti diegimo kalbą“ (2) Pasirinkę kalbą, spustelėkite „Gerai“, kad būtų rodoma „Licencijos sutarties“ sąsaja.
(žr. 4.5 pav.). Atidžiai perskaitę diegimo licencijos sutartį, pasirinkite „Sutinku su sutartimi“ ir spustelėkite „Kitas“.
4.5 pav. „Licencijos sutarties“ sąsaja 4 skyrius. Kūrimo aplinkos nustatymas 41
(3) Review sistemos konfigūraciją sąsajoje „Pre-installation system check“ (žr. 4.6 pav.). Patikrinkite Windows versiją ir informaciją apie įdiegtą antivirusinę programinę įrangą. Spustelėkite „Kitas“, jei visi konfigūracijos elementai yra normalūs. Kitu atveju galite spustelėti „Visas žurnalas“, kad pamatytumėte sprendimus, pagrįstus pagrindiniais elementais.
4.6 pav. „Sistemos patikrinimas prieš įdiegiant“ sąsajos PATARIMAI
Jei reikia pagalbos, žurnalus galite pateikti adresu https://github.com/espressif/idf-installer/issues. (4) Pasirinkite ESP-IDF diegimo katalogą. Čia pasirinkite D:/.espressif, kaip parodyta
4.7 pav. ir spustelėkite „Kitas“. Atminkite, kad .espressif čia yra paslėptas katalogas. Kai diegimas bus baigtas, galite view konkretų šio katalogo turinį atidarydami file tvarkyklė ir paslėptų elementų rodymas.
4.7 pav. Pasirinkite ESP-IDF diegimo katalogą 42 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
(5) Patikrinkite komponentus, kuriuos reikia sumontuoti, kaip parodyta 4.8 pav. Rekomenduojama naudoti numatytąją parinktį, ty užbaigti diegimą, tada spustelėkite „Kitas“.
4.8 pav. Pasirinkite komponentus, kuriuos norite įdiegti (6) Patvirtinkite komponentus, kuriuos norite įdiegti, ir spustelėkite „Įdiegti“, kad pradėtumėte automatizuotą diegimą.
sustojimo procesas, kaip parodyta 4.9 pav. Diegimo procesas gali trukti keliasdešimt minučių, o diegimo proceso eigos juosta parodyta 4.10 pav. Prašome kantriai palaukti.
4.9 pav. Pasiruošimas diegimui (7) Baigus diegti, rekomenduojama pažymėti „Registruoti ESP-IDF
Įrankių vykdomieji failai kaip „Windows Defender“ išimtys…“, kad antivirusinė programinė įranga nebūtų ištrinta files. Pridėjus išskyrimo elementus taip pat gali būti praleistas dažnas antivirusinės programos nuskaitymas
4 skyrius. Kūrimo aplinkos nustatymas 43
4.10 pav. Diegimo eigos juostos programinė įranga, labai pagerinanti „Windows“ sistemos kodų kompiliavimo efektyvumą. Spustelėkite „Baigti“, kad užbaigtumėte kūrimo aplinkos diegimą, kaip parodyta 4.11 pav. Galite pasirinkti pažymėti „Paleisti ESP-IDF PowerShell aplinką“ arba „Paleisti ESP-IDF komandų eilutę“. Įdiegę paleiskite kompiliavimo langą, kad įsitikintumėte, jog kūrimo aplinka veikia normaliai.
4.11 pav. Diegimas baigtas (8) Programų sąraše atidarykite įdiegtą kūrimo aplinką (ESP-IDF 4.3
CMD arba ESP-IDF 4.3 PowerShell terminalas, kaip parodyta 4.12 pav.), ir ESP-IDF aplinkos kintamasis bus automatiškai įtrauktas, kai jis veikia terminale. Po to operacijoms galite naudoti komandą idf.py. Atidarytas ESP-IDF 4.3 CMD parodytas 4.13 pav. 44 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
4.12 pav. Įdiegta kūrimo aplinka
4.13 pav. ESP-IDF 4.3 CMD
4.2.3 ESP-IDF kūrimo aplinkos nustatymas „Mac“.
ESP-IDF kūrimo aplinkos diegimo procesas Mac sistemoje yra toks pat kaip ir Linux sistemoje. Saugyklos kodo atsisiuntimo ir įrankių grandinės įdiegimo komandos yra lygiai tokios pačios. Tik priklausomybės paketų diegimo komandos šiek tiek skiriasi. 1. Įdiekite priklausomybės paketus Atidarykite terminalą ir įdiekite „Python“ paketų valdymo įrankį pip, vykdydami šią komandą:
% sudo lengva įdiegti pip
Įdiekite „MacOS“ paketų valdymo įrankį „Homebrew“ vykdydami šią komandą:
% /bin/bash -c „$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)“
Įdiekite reikiamus priklausomybės paketus vykdydami šią komandą:
% brew python3 įdiegti cmake ninja ccache dfu-util
2. Atsisiųskite ESP-IDF saugyklos kodą Norėdami atsisiųsti ESP-IDF saugyklos kodą, vadovaukitės 4.2.1 skyriuje pateiktomis instrukcijomis. Veiksmai yra tokie patys kaip atsisiunčiant „Linux“ sistemoje.
4 skyrius. Kūrimo aplinkos nustatymas 45
3. Įdiekite ESP-IDF kūrimo įrankių grandinę
Norėdami įdiegti ESP-IDF kūrimo įrankių grandinę, vadovaukitės 4.2.1 skyriuje pateiktomis instrukcijomis. Veiksmai yra tokie patys kaip ir diegiant Linux sistemoje.
4.2.4 VS kodo diegimas
Pagal numatytuosius nustatymus ESP-IDF SDK neapima kodo redagavimo įrankio (nors naujausia ESP-IDF diegimo programa, skirta Windows, siūlo galimybę įdiegti ESP-IDF Eclipse). Galite naudoti bet kurį pasirinktą teksto redagavimo įrankį kodui redaguoti ir kompiliuoti naudodami terminalo komandas.
Vienas iš populiarių kodo redagavimo įrankių yra VS Code (Visual Studio Code), kuris yra nemokamas ir daug funkcijų turintis kodo rengyklė su patogia sąsaja. Ji siūlo įvairius plugins kurios teikia tokias funkcijas kaip kodo naršymas, sintaksės paryškinimas, Git versijos valdymas ir terminalo integravimas. Be to, Espressif sukūrė specialų įskiepį, vadinamą Espressif IDF, skirtą VS kodui, kuris supaprastina projekto konfigūravimą ir derinimą.
Galite naudoti kodo komandą terminale, kad greitai atidarytumėte dabartinį aplanką VS Code. Arba galite naudoti spartųjį klavišą Ctrl+, kad atidarytumėte numatytąją sistemos terminalo konsolę „VS Code“.
PATARIMAI ESP32-C3 kodo kūrimui rekomenduojama naudoti VS kodą. Atsisiųskite ir įdiekite naujausią VS Code versiją adresu https://code.visualstudio.com/.
4.2.5 Įvadas į trečiųjų šalių kūrimo aplinkas
Be oficialios ESP-IDF kūrimo aplinkos, kurioje visų pirma naudojama C kalba, ESP32-C3 taip pat palaiko kitas pagrindines programavimo kalbas ir platų trečiųjų šalių kūrimo aplinkų spektrą. Kai kurios pastebimos parinktys:
Arduino: atvirojo kodo platforma, skirta aparatinei ir programinei įrangai, palaikanti įvairius mikrovaldiklius, įskaitant ESP32-C3.
Jis naudoja C++ kalbą ir siūlo supaprastintą ir standartizuotą API, paprastai vadinamą Arduino kalba. Arduino plačiai naudojamas prototipų kūrimo ir švietimo kontekstuose. Jame yra išplečiamas programinės įrangos paketas ir IDE, leidžiantis lengvai kompiliuoti ir suaktyvinti.
MicroPython: Python 3 kalbos vertėjas, sukurtas veikti įterptųjų mikrovaldiklių platformose.
Naudodamas paprastą scenarijų kalbą, jis gali tiesiogiai pasiekti ESP32-C3 periferinius išteklius (pvz., UART, SPI ir I2C) ir ryšio funkcijas (pvz., Wi-Fi ir Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
Tai supaprastina techninės įrangos sąveiką. „MicroPython“ kartu su plačia Python matematinių operacijų biblioteka leidžia įgyvendinti sudėtingus ESP32-C3 algoritmus, palengvinančius su AI susijusių programų kūrimą. Kaip scenarijų kalba, nereikia kartoti kompiliavimo; galima atlikti pakeitimus ir tiesiogiai vykdyti scenarijus.
NodeMCU: LUA kalbos vertėjas, sukurtas ESP serijos lustams.
Jis palaiko beveik visas periferines ESP lustų funkcijas ir yra lengvesnis nei MicroPython. Panašiai kaip „MicroPython“, „NodeMCU“ naudoja scenarijų kalbą, todėl nereikia kartoti kompiliavimo.
Be to, ESP32-C3 taip pat palaiko NuttX ir Zephyr operacines sistemas. „NuttX“ yra realaus laiko operacinė sistema, teikianti su POSIX suderinamas sąsajas, pagerinanti programų perkeliamumą. Zephyr yra nedidelė realaus laiko operacinė sistema, specialiai sukurta daiktų interneto programoms. Ji apima daugybę programinės įrangos bibliotekų, reikalingų kuriant daiktų internetą, palaipsniui virstančia visapusiška programinės įrangos ekosistema.
Šioje knygoje nepateikiamos išsamios anksčiau minėtų kūrimo aplinkų diegimo instrukcijos. Galite įdiegti kūrimo aplinką pagal savo poreikius vadovaudamiesi atitinkama dokumentacija ir instrukcijomis.
4.3 ESP-IDF kompiliavimo sistema
4.3.1 Pagrindinės kompiliavimo sistemos sąvokos
ESP-IDF projektas yra pagrindinės programos su įvesties funkcija ir keliais nepriklausomais funkciniais komponentais rinkinys. Pavyzdžiui,ample, LED jungiklius valdantis projektas daugiausia susideda iš pagrindinio įvesties programos ir tvarkyklės komponento, valdančio GPIO. Jei norite realizuoti LED nuotolinio valdymo pultą, taip pat turite pridėti Wi-Fi, TCP/IP protokolų krūvą ir kt.
Kompiliavimo sistema gali kompiliuoti, susieti ir generuoti vykdomąjį failą files (.bin) kodui per statybos taisyklių rinkinį. ESP-IDF v4.0 ir naujesnių versijų kompiliavimo sistema pagal numatytuosius nustatymus yra pagrįsta CMake, o kompiliavimo scenarijus CMakeLists.txt gali būti naudojamas kodo kompiliavimo veikimui valdyti. ESP-IDF kompiliavimo sistema ne tik palaiko pagrindinę CMake sintaksę, bet ir apibrėžia numatytųjų kompiliavimo taisyklių rinkinį ir CMake funkcijas, o kompiliavimo scenarijų galite rašyti naudodami paprastus teiginius.
4.3.2 Projektas File Struktūra
Projektas yra aplankas, kuriame yra pagrindiniai įvedimo programos komponentai, vartotojo nustatyti komponentai ir files reikalingos kuriant vykdomąsias programas, pvz., kompiliavimo scenarijus, konfigūraciją
4 skyrius. Kūrimo aplinkos nustatymas 47
files, skaidinių lentelės ir tt Projektus galima kopijuoti ir perduoti, ir tą patį vykdomąjį failą file gali būti kompiliuojamas ir generuojamas mašinose su ta pačia ESP-IDF kūrimo aplinkos versija. Tipiškas ESP-IDF projektas file struktūra parodyta 4.14 pav.
4.14 pav. Tipiškas ESP-IDF projektas file struktūra Kadangi ESP-IDF palaiko kelis IoT lustus iš Espressif, įskaitant ESP32, ESP32-S seriją, ESP32-C seriją, ESP32-H seriją ir kt., prieš sudarant kodą reikia nustatyti tikslą. Tikslas yra ir aparatūros įrenginys, kuriame vykdoma taikomoji programa, ir kompiliavimo sistemos kūrimo tikslas. Priklausomai nuo jūsų poreikių, galite nurodyti vieną ar daugiau savo projekto tikslų. Pavyzdžiui,ample, naudodami komandą idf.py set-target esp32c3, galite nustatyti kompiliavimo tikslą į ESP32-C3, kurio metu bus įkeliami numatytieji ESP32C3 parametrai ir kompiliavimo įrankio grandinės kelias. Po kompiliavimo galima sugeneruoti vykdomąją programą ESP32C3. Taip pat galite dar kartą paleisti komandą set-target, kad nustatytumėte kitą tikslą, o kompiliavimo sistema bus automatiškai išvalyta ir iš naujo sukonfigūruota. Komponentai
ESP-IDF komponentai yra moduliniai ir nepriklausomi kodo vienetai, valdomi kompiliavimo sistemoje. Jie yra suskirstyti į aplankus, pagal numatytuosius nustatymus aplanko pavadinimas atitinka komponento pavadinimą. Kiekvienas komponentas turi savo kompiliavimo scenarijų, kuris 48 ESP32-C3 Wireless Adventure: Išsamus daiktų interneto vadovas.
nurodo jo kompiliavimo parametrus ir priklausomybes. Kompiliavimo proceso metu komponentai sukompiliuojami į atskiras statines bibliotekas (.a files) ir galiausiai sujungiami su kitais komponentais, kad sudarytų taikomąją programą.
ESP-IDF komponentų pavidalu teikia esmines funkcijas, pvz., operacinę sistemą, periferines tvarkykles ir tinklo protokolų krūvą. Šie komponentai saugomi komponentų kataloge, esančiame ESP-IDF šakniniame kataloge. Kūrėjams nereikia kopijuoti šių komponentų į myProject komponentų katalogą. Vietoj to jiems tereikia nurodyti šių komponentų priklausomybės ryšius projekto CMakeLists.txt faile file naudojant REQUIRES arba PRIV_REQUIRES direktyvas. Kompiliavimo sistema automatiškai suras ir sukompiliuos reikiamus komponentus.
Todėl myProject komponentų katalogas nėra būtinas. Jis naudojamas tik įtraukti kai kuriuos pasirinktinius projekto komponentus, kurie gali būti trečiųjų šalių bibliotekos arba vartotojo nustatytas kodas. Be to, komponentai gali būti gaunami iš bet kurio katalogo, išskyrus ESP-IDF arba dabartinį projektą, pvz., iš atvirojo kodo projekto, išsaugoto kitame kataloge. Tokiu atveju tereikia pridėti komponento kelią, nustatant EXTRA_COMPONENT_DIRS kintamąjį CMakeLists.txt, esantį šakniniame kataloge. Šis katalogas pakeis bet kurį ESP-IDF komponentą tuo pačiu pavadinimu, užtikrinant, kad naudojamas tinkamas komponentas.
Įvedimo programa pagrindinis Pagrindinis projekto katalogas yra toks pat file struktūra kaip ir kiti komponentai (pvz., komponentas1). Tačiau jis turi ypatingą reikšmę, nes tai yra privalomas komponentas, kuris turi būti kiekviename projekte. Pagrindiniame kataloge yra projekto šaltinio kodas ir vartotojo programos įėjimo taškas, paprastai vadinamas app_main. Pagal numatytuosius nustatymus vartotojo programos vykdymas pradedamas nuo šio įvesties taško. Pagrindinis komponentas taip pat skiriasi tuo, kad jis automatiškai priklauso nuo visų paieškos kelio komponentų. Todėl nereikia aiškiai nurodyti priklausomybių naudojant REQUIRES arba PRIV_REQUIRES direktyvas faile CMakeLists.txt file.
Konfigūracija file Projekto šakniniame kataloge yra konfigūracija file vadinamas sdkconfig, kuriame yra visų projekto komponentų konfigūracijos parametrai. Sdkconfig file yra automatiškai sugeneruotas kompiliavimo sistemos ir gali būti pakeistas ir atkurtas naudojant komandą idf.py menuconfig. Menuconfig parinktys daugiausia kyla iš projekto Kconfig.projbuild ir komponentų Kconfig. Komponentų kūrėjai paprastai prideda konfigūracijos elementus į Kconfig, kad komponentas būtų lankstus ir konfigūruojamas.
Sukūrimo katalogas Pagal numatytuosius nustatymus projekto kūrimo kataloge saugomas tarpinis katalogas files ir fi-
4 skyrius. Kūrimo aplinkos nustatymas 49
nal vykdomosios programos, sugeneruotos idf.py build komandos. Apskritai nebūtina tiesiogiai pasiekti kūrimo katalogo turinio. ESP-IDF pateikia iš anksto nustatytas komandas, skirtas sąveikauti su katalogu, pvz., naudojant idf.py flash komandą, kad būtų galima automatiškai rasti sukompiliuotą dvejetainį failą file ir paleiskite jį nurodytu „flash“ adresu arba naudodami komandą idf.py fullclean, kad išvalytumėte visą kūrimo katalogą.
Skirsnių lentelė (partitions.csv) Kiekvienam projektui reikia skaidinių lentelės, kad būtų galima padalyti „flash“ erdvę ir nurodyti vykdomosios programos bei vartotojo duomenų erdvės dydį ir pradžios adresą. Komanda idf.py flash arba OTA naujinimo programa suaktyvins programinę-aparatinę įrangą atitinkamu adresu pagal šią lentelę. ESP-IDF pateikia keletą numatytųjų skaidinių lentelių komponentuose/partition_table, pvz., partitions_singleapp.csv ir parttions_two_ ota.csv, kurias galima pasirinkti meniuconfig.
Jei numatytoji sistemos skaidinių lentelė neatitinka projekto reikalavimų, į projekto katalogą galima įtraukti pasirinktinį partitions.csv ir pasirinkti meniuconfig.
4.3.3 Numatytosios kompiliavimo sistemos kūrimo taisyklės
Komponentų su tuo pačiu pavadinimu nepaisymo taisyklės Komponentų paieškos proceso metu kompiliavimo sistema vadovaujasi tam tikra tvarka. Pirmiausia ji ieško vidinių ESP-IDF komponentų, tada ieško vartotojo projekto komponentų ir galiausiai ieško komponentų EXTRA_COMPONENT_DIRS. Tais atvejais, kai keliuose kataloguose yra komponentų tuo pačiu pavadinimu, paskutiniame kataloge rastas komponentas pakeis visus ankstesnius komponentus tuo pačiu pavadinimu. Ši taisyklė leidžia tinkinti ESP-IDF komponentus vartotojo projekte, išlaikant originalų ESP-IDF kodą nepažeistą.
Įprastų komponentų įtraukimo pagal numatytuosius nustatymus taisyklės Kaip minėta 4.3.2 skyriuje, komponentai turi aiškiai nurodyti savo priklausomybę nuo kitų CMakeLists.txt komponentų. Tačiau įprasti komponentai, tokie kaip freertos, pagal numatytuosius nustatymus automatiškai įtraukiami į kūrimo sistemą, net jei jų priklausomybės santykiai nėra aiškiai apibrėžti kompiliavimo scenarijuje. Įprasti ESP-IDF komponentai yra freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv ir cxx. Naudojant šiuos įprastus komponentus išvengiama pasikartojančio darbo rašant CMakeLists.txt ir jis bus glaustesnis.
Konfigūracijos elementų nepaisymo taisyklės Kūrėjai gali pridėti numatytuosius konfigūracijos parametrus pridėdami numatytąją konfigūraciją file projektui pavadintas sdkconfig.defaults. Pavyzdžiui,ample, pridedant CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
DEFAULT_LEVEL_NONE = y gali sukonfigūruoti UART sąsają nespausdinti žurnalo duomenų pagal numatytuosius nustatymus. Be to, jei konkrečiam tikslui reikia nustatyti konkrečius parametrus, konfigūraciją file Galima pridėti pavadinimu sdkconfig.defaults.TARGET_NAME, kur TARGET_NAME gali būti esp32s2, esp32c3 ir pan. Šios konfigūracijos files yra importuojami į sdkconfig kompiliavimo metu, naudojant bendrą numatytąją konfigūraciją file Pirmiausia importuojama sdkconfig.defaults, o po to - konkrečios paskirties konfigūracija file, pvz., sdkconfig.defaults.esp32c3. Tais atvejais, kai yra konfigūracijos elementų tuo pačiu pavadinimu, pastaroji konfigūracija file panaikins buvusįjį.
4.3.4 Įvadas į kompiliavimo scenarijų
Kurdami projektą naudodami ESP-IDF, kūrėjai turi ne tik parašyti šaltinio kodą, bet ir parašyti CMakeLists.txt projektui ir komponentams. CMakeLists.txt yra tekstas file, taip pat žinomas kaip kompiliavimo scenarijus, apibrėžiantis kompiliavimo objektų, kompiliavimo konfigūracijos elementų ir komandų, skirtų šaltinio kodo kompiliavimo procesui, seriją. ESP-IDF v4.3.2 kompiliavimo sistema yra pagrįsta CMake. Be vietinių CMake funkcijų ir komandų palaikymo, ji taip pat apibrėžia daugybę pasirinktinių funkcijų, todėl daug lengviau rašyti kompiliavimo scenarijus.
ESP-IDF kompiliavimo scenarijus daugiausia apima projekto kompiliavimo scenarijus ir komponentų kompiliavimo scenarijus. CMakeLists.txt, esantis projekto šakniniame kataloge, vadinamas projekto kompiliavimo scenarijumi, kuris vadovauja viso projekto kompiliavimo procesui. Pagrindinis projekto kompiliavimo scenarijus paprastai apima šias tris eilutes:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Tarp jų pirmoje eilutėje turi būti nurodyta cmake_minimum_required (VERSION 3.5), kuri naudojama norint nurodyti minimalų projekto reikalaujamą CMake versijos numerį. Naujesnės CMake versijos paprastai yra suderinamos su senesnėmis versijomis, todėl atitinkamai pakoreguokite versijos numerį naudodami naujesnes CMake komandas, kad užtikrintumėte suderinamumą.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) importuoja iš anksto apibrėžtus konfigūracijos elementus ir ESP-IDF kompiliavimo sistemos komandas, įskaitant numatytąsias kompiliavimo sistemos kūrimo taisykles, aprašytas 4.3.3 skyriuje. project(myProject) sukuria patį projektą ir nurodo jo pavadinimą. Šis pavadinimas bus naudojamas kaip galutinis dvejetainis išvesties failas file pavadinimas, ty myProject.elf ir myProject.bin.
Projektą gali sudaryti keli komponentai, įskaitant pagrindinį komponentą. Kiekvieno komponento aukščiausio lygio kataloge yra CMakeLists.txt file, kuris vadinamas komponentų kompiliavimo scenarijumi. Komponentų kompiliavimo scenarijai daugiausia naudojami komponentų priklausomybėms, konfigūracijos parametrams, šaltinio kodui nurodyti files ir įtraukta antraštė files už
4 skyrius. Kūrimo aplinkos nustatymas 51
kompiliacija. Naudojant ESP-IDF pasirinktinę funkciją idf_component_register, minimalus reikalingas komponento kompiliavimo scenarijaus kodas yra toks:
1. idf_component_register(SRCS "src1.c"
2.
INCLUDE_DIRS „įtraukti“
3.
REIKALINGAS komponentas1)
SRCS parametras pateikia šaltinio sąrašą files komponente, atskirti tarpais, jei yra keli files. Parametras INCLUDE_DIRS pateikia viešosios antraštės sąrašą file komponento katalogai, kurie bus įtraukti į įtraukimo paieškos kelią kitiems komponentams, kurie priklauso nuo dabartinio komponento. Parametras REQUIRES identifikuoja viešąsias dabartinio komponento priklausomybes. Komponentams būtina aiškiai nurodyti, nuo kurių komponentų jie priklauso, pvz., komponentas2 priklauso nuo 1 komponento. Tačiau pagrindiniam komponentui, kuris pagal numatytuosius nustatymus priklauso nuo visų komponentų, parametro REIKALAVIMAS galima praleisti.
Be to, kompiliavimo scenarijuje taip pat gali būti naudojamos vietinės CMake komandos. Pavyzdžiui,ample, naudokite komandą set, kad nustatytumėte kintamuosius, pvz., set(VARIABLE "VALUE").
4.3.5 Įvadas į bendrąsias komandas
ESP-IDF kodo kompiliavimo procese naudoja CMake (projekto konfigūravimo įrankį), Ninja (projekto kūrimo įrankį) ir esptool (flash įrankį). Kiekvienas įrankis atlieka skirtingą vaidmenį kompiliavimo, kūrimo ir atkūrimo procese, taip pat palaiko skirtingas valdymo komandas. Siekdama palengvinti vartotojo darbą, ESP-IDF prideda vieningą sąsają idf.py, leidžiančią greitai iškviesti aukščiau nurodytas komandas.
Prieš naudodami idf.py, įsitikinkite, kad:
· ESP-IDF aplinkos kintamasis IDF_PATH buvo įtrauktas į dabartinį terminalą. · Komandų vykdymo katalogas yra projekto šakninis katalogas, kuriame yra
projekto kompiliavimo scenarijus CMakeLists.txt.
Įprastos idf.py komandos yra šios:
· idf.py –help: rodomas komandų sąrašas ir jų naudojimo instrukcijos. · idf.py set-target : kompiliacijos taidf.py fullcleanrget nustatymas, pvz
kaip pakeičiant su esp32c3. · idf.py menuconfig: paleidžiama meniuconfig, terminalo grafinė konfigūracija
įrankį, kuris gali pasirinkti arba keisti konfigūracijos parinktis, o konfigūracijos rezultatai išsaugomi sdkconfig file. · idf.py build: inicijuojamas kodo kompiliavimas. Tarpinis files ir galutinė vykdomoji programa, sukurta kompiliacijos metu, pagal numatytuosius nustatymus bus išsaugota projekto kūrimo kataloge. Kompiliavimo procesas yra laipsniškas, o tai reiškia, kad jei tik vienas šaltinis file yra modifikuotas, tik modifikuotas file bus sudarytas kitą kartą.
52 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
· idf.py clean: tarpinio valymas files, sugeneruotas rengiant projektą. Visas projektas bus priverstas kompiliuoti kitame rinkinyje. Atminkite, kad CMake konfigūracija ir meniuconfig atlikti konfigūracijos pakeitimai nebus ištrinti valymo metu.
· idf.py fullclean: ištrina visą kūrimo katalogą, įskaitant visą CMake konfigūracijos išvestį files. Dar kartą kurdama projektą CMake sukonfigūruos projektą nuo nulio. Atminkite, kad ši komanda rekursyviai ištrins viską files kūrimo kataloge, todėl naudokite jį atsargiai ir projekto konfigūraciją file nebus ištrintas.
· idf.py flash: vykdomosios programos dvejetainis mirksėjimas file sugeneruotas naudojant tikslinį ESP32-C3. Parinktys -p ir -b naudojami nustatyti nuosekliojo prievado įrenginio pavadinimą ir mirksėjimo spartą. Jei šios dvi parinktys nenurodytos, nuoseklusis prievadas bus aptiktas automatiškai ir bus naudojamas numatytasis duomenų perdavimo sparta.
· idf.py monitorius: rodomas tikslinio ESP32-C3 nuosekliojo prievado išvestis. Parinktis -p gali būti naudojama norint nurodyti pagrindinio kompiuterio nuosekliojo prievado įrenginio pavadinimą. Spausdinant nuoseklųjį prievadą, paspauskite klavišų kombinaciją Ctrl+], kad išeitumėte iš monitoriaus.
Aukščiau pateiktos komandos taip pat gali būti derinamos pagal poreikį. Pavyzdžiui,ample, komanda idf.py build flash monitor iš eilės atliks kodo kompiliavimą, flash ir atidarys nuosekliojo prievado monitorių.
Norėdami sužinoti daugiau apie ESP-IDF kompiliavimo sistemą, galite apsilankyti https://bookc3.espressif.com/build-system.
4.4 Praktika: sudaryti Pvzampprograma „Blink“
4.4.1 Pvzample Analizė
Šiame skyriuje programa Blink bus naudojama kaip buvample analizuoti file realaus projekto struktūra ir kodavimo taisyklės detaliai. Blink programa įgyvendina LED mirksėjimo efektą, o projektas yra kataloge examples/get-started/blink, kuriame yra šaltinis file, konfigūracija files, ir keli kompiliavimo scenarijai.
Šioje knygoje pristatomas išmaniosios šviesos projektas yra pagrįstas šiuo buvusiuample programa. Funkcijos bus palaipsniui pridedamos vėlesniuose skyriuose, kad galiausiai būtų užbaigtos.
Šaltinio kodas Siekiant parodyti visą kūrimo procesą, programa Blink buvo nukopijuota į esp32c3-iot-projects/device firmware/1 blink.
Blink projekto katalogo struktūra files parodyta 4.15 pav.
Blink projekte yra tik vienas pagrindinis katalogas, kuris yra specialus komponentas
4 skyrius. Kūrimo aplinkos nustatymas 53
4.15 pav. File mirksėjimo projekto katalogo struktūra
turi būti įtraukti, kaip aprašyta 4.3.2 skirsnyje. Pagrindinis katalogas daugiausia naudojamas saugoti funkcijos app_main() įgyvendinimą, kuri yra įėjimo į vartotojo programą taškas. Blink projektas neapima komponentų katalogo, nes šis example reikia naudoti tik su ESP-IDF esančius komponentus ir nereikalauja papildomų komponentų. CMakeLists.txt, įtrauktas į blink projektą, naudojamas kompiliavimo procesui vadovauti, o Kconfig.projbuild naudojamas konfigūracijos elementams pridėti šiam ex.ampprograma meniu config. Kiti nereikalingi files neturės įtakos kodo sudarymui, todėl čia jie nebus aptariami. Išsamus mirksėjimo projekto įvadas files yra taip.
1. /*blink.c yra tokia antraštė files*/
2. #įtraukti
//Standartinė C bibliotekos antraštė file
3. #include "freertos/freeRTOS.h" //FreeRTOS pagrindinė antraštė file
4. #įtraukti „freertos/task.h“
//FreeRTOS Užduočių antraštė file
5. #include „sdkconfig.h“
//Konfigūracijos antraštė file sukūrė kconfig
6. #include „driver/gpio.h“
//GPIO tvarkyklės antraštė file
Šaltinis file blink.c yra antraštės serija files atitinka funkcijos deklaraciją-
cijos. ESP-IDF paprastai vadovaujasi standartinės bibliotekos antraštės įtraukimo tvarka files, FreeR-
TOS antraštė files, vairuotojo antraštė files, kitų komponentų antraštė files ir projekto antraštę files.
Antraštės tvarka files įtrauktos gali turėti įtakos galutiniam kompiliavimo rezultatui, todėl pabandykite
vadovaukitės numatytomis taisyklėmis. Reikėtų pažymėti, kad sdkconfig.h generuojamas automatiškai
kconfig ir gali būti sukonfigūruotas tik naudojant komandą idf.py menuconfig.
Tiesioginis šios antraštės modifikavimas file bus perrašytas.
1. /*Galite pasirinkti GPIO, atitinkantį šviesos diodą idf.py menuconfig, o meniuconfig modifikacijos rezultatas yra toks, kad CONFIG_BLINK reikšmė
_GPIO bus pakeistas. Taip pat galite tiesiogiai keisti makrokomandos apibrėžimą
čia ir pakeiskite CONFIG_BLINK_GPIO į fiksuotą reikšmę.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Konfigūruokite IO kaip numatytąją GPIO funkciją, įgalinkite ištraukimo režimą ir
6.
išjungti įvesties ir išvesties režimus*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Wireless Adventure: Išsamus IoT vadovas
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Nustatyti GPIO į išvesties režimą*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Spausdinti žurnalą*/ printf („LEDn išjungimas“); /*Išjungti šviesos diodą (žemas išvesties lygis)*/ gpio_set_level(BLINK_GPIO, 0); /*Delay (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf („LEDn įjungimas“); /*Įjungti šviesos diodą (aukštas išvesties lygis)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Funkcija app_main() programoje Blink example programa yra vartotojo programų įėjimo taškas. Tai paprasta funkcija be jokių parametrų ir be grąžinamos vertės. Ši funkcija iškviečiama po to, kai sistema baigia inicijavimą, kuris apima tokias užduotis kaip žurnalo nuosekliojo prievado inicijavimas, vieno / dviejų branduolių konfigūravimas ir stebėjimo programos konfigūravimas.
Funkcija app_main() veikia užduoties, pavadintos main, kontekste. Šios užduoties krūvos dydį ir prioritetą galima reguliuoti meniuconfig Componentconfig Common ESP susiję.
Norint atlikti paprastas užduotis, pvz., mirksėti šviesos diodą, visas reikalingas kodas gali būti įdiegtas tiesiogiai funkcijoje app_main(). Paprastai tai apima GPIO inicijavimą, atitinkantį šviesos diodą, ir trumpos (1) kilpos naudojimą šviesos diodui įjungti ir išjungti. Arba galite naudoti FreeRTOS API, kad sukurtumėte naują užduotį, kuri tvarkytų LED mirksėjimą. Sėkmingai sukūrę naują užduotį, galite išeiti iš funkcijos app_main().
Pagrindinis/CMakeLists.txt turinys file, kuri vadovauja pagrindinio komponento sudarymo procesui, yra tokia:
1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS "." )
Tarp jų pagrindinis/CMakeLists.txt iškviečia tik vieną kompiliavimo sistemos funkciją, tai yra idf_component_register. Panašiai kaip CMakeLists.txt daugeliui kitų komponentų, blink.c pridedamas prie SRCS, o šaltinis files, įtrauktos į SRCS, bus sudarytos. Tuo pačiu metu „.“, kuris nurodo kelią, kuriame yra CMakeLists.txt, turėtų būti įtrauktas į INCLUDE_DIRS kaip antraštės paieškos katalogus files. CMakeLists.txt turinys yra toks:
1. #Nurodykite v3.5 kaip seniausią dabartinio projekto palaikomą CMake versiją 2. #Versijos, mažesnės nei v3.5, turi būti atnaujintos prieš tęsiant kompiliavimą 3. cmake_minimum_required(VERSION 3.5) 4. #Įtraukite numatytąją ESP CMake konfigūraciją -IDF kompiliavimo sistema
4 skyrius. Kūrimo aplinkos nustatymas 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Sukurkite projektą pavadinimu „blink“ 7. project(myProject)
Tarp jų CMakeLists.txt šakniniame kataloge daugiausia apima $ENV{IDF_ PATH}/tools/cmake/project.cmake, kuri yra pagrindinė CMake konfigūracija. file pateikė ESP-IDF. Jis naudojamas kon
Dokumentai / Ištekliai
![]() |
Espressif Systems ESP32-C3 Wireless Adventure [pdfVartotojo vadovas ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |