Brezžična avantura ESP32-C3

Brezžična avantura ESP32-C3

Obsežen vodnik po IoT

Espressif Systems 12. junij 2023

Specifikacije

  • Izdelek: ESP32-C3 Wireless Adventure
  • Proizvajalec: Espressif Systems
  • Datum: 12. junij 2023

Navodila za uporabo izdelka

Priprava

Preden uporabite ESP32-C3 Wireless Adventure, se prepričajte, da ste
seznanjen s koncepti in arhitekturo IoT. To bo pomagalo
razumete, kako se naprava prilega širšemu ekosistemu interneta stvari
in njegove možne uporabe v pametnih domovih.

Predstavitev in praksa IoT projektov

V tem razdelku boste spoznali tipične IoT projekte,
vključno z osnovnimi moduli za običajne naprave interneta stvari, osnovni moduli
odjemalskih aplikacij in običajnih oblačnih platform IoT. To bo
vam nudi osnovo za razumevanje in ustvarjanje vašega
lastne IoT projekte.

Praksa: Projekt Smart Light

V tem praktičnem projektu se boste naučili ustvariti pametno
osvetlite s pomočjo ESP32-C3 Wireless Adventure. Struktura projekta,
funkcije, priprava strojne opreme in razvojni proces bodo
podrobno razloženo.

Struktura projekta

Projekt je sestavljen iz več komponent, vključno z
ESP32-C3 Wireless Adventure, LED, senzorji in oblak
backend.

Projektne funkcije

Projekt pametne luči vam omogoča nadzor svetlosti in
barvo LED diod na daljavo preko mobilne aplikacije oz web
vmesnik.

Priprava strojne opreme

Za pripravo na projekt boste morali zbrati
potrebnih komponent strojne opreme, kot je ESP32-C3 Wireless
Pustolovska plošča, LED diode, upori in napajalnik.

Razvojni proces

Razvojni proces vključuje nastavitev razvoja
okolje, pisanje kode za nadzor LED diod, povezovanje z
zaledju v oblaku ter preizkušanju funkcionalnosti pametnega
svetloba.

Uvod v ESP RainMaker

ESP RainMaker je zmogljivo ogrodje za razvoj interneta stvari
naprave. V tem razdelku boste izvedeli, kaj je ESP RainMaker in
kako ga lahko implementirate v svoje projekte.

Kaj je ESP RainMaker?

ESP RainMaker je platforma v oblaku, ki ponuja nabor
orodja in storitve za gradnjo in upravljanje naprav IoT.

Implementacija ESP RainMaker

V tem razdelku so razložene različne komponente, vključene v
implementacija ESP RainMaker, vključno s storitvijo zahtevkov,
Agent RainMaker, zaledje v oblaku in odjemalec RainMaker.

Praksa: ključne točke za razvoj z ESP RainMaker

V tem praktičnem razdelku boste spoznali ključne točke za
upoštevajte pri razvoju z ESP RainMaker. To vključuje napravo
zahtevanje, sinhronizacija podatkov in upravljanje uporabnikov.

Lastnosti programa ESP RainMaker

ESP RainMaker ponuja različne funkcije za upravljanje uporabnikov
uporabniki in skrbniki. Te lastnosti omogočajo enostavno napravo
nastavitev, daljinsko upravljanje in spremljanje.

Nastavitev razvojnega okolja

Ta razdelek ponuja overview ESP-IDF (Espressif IoT
Development Framework), ki je uradni razvojni okvir
za naprave, ki temeljijo na ESP32. Pojasnjuje različne različice
ESP-IDF in kako nastaviti razvojno okolje.

Razvoj strojne opreme in gonilnikov

Oblikovanje strojne opreme izdelkov Smart Light, ki temeljijo na ESP32-C3

Ta razdelek se osredotoča na zasnovo strojne opreme pametne luči
izdelki, ki temeljijo na ESP32-C3 Wireless Adventure. Zajema
značilnosti in sestavo izdelkov pametne svetlobe ter
zasnova strojne opreme jedrnega sistema ESP32-C3.

Značilnosti in sestava izdelkov Smart Light

Ta pododdelek razlaga funkcije in komponente, ki sestavljajo
izdelkov pametne svetlobe. Razpravlja o različnih funkcionalnostih
in oblikovne premisleke za ustvarjanje pametnih luči.

Zasnova strojne opreme jedrnega sistema ESP32-C3

Zasnova strojne opreme jedrnega sistema ESP32-C3 vključuje napajanje
napajanje, zaporedje vklopa, ponastavitev sistema, bliskavica SPI, vir ure,
ter premisleke o RF in anteni. Ta pododdelek zagotavlja
podrobne informacije o teh vidikih.

pogosta vprašanja

V: Kaj je ESP RainMaker?

O: ESP RainMaker je platforma v oblaku, ki ponuja orodja
in storitve za gradnjo in upravljanje naprav IoT. Poenostavlja
proces razvoja in omogoča enostavno nastavitev naprave, oddaljeno
nadzor in spremljanje.

V: Kako lahko nastavim razvojno okolje za
ESP32-C3?

O: Če želite nastaviti razvojno okolje za ESP32-C3, potrebujete
za namestitev ESP-IDF (Espressif IoT Development Framework) in
ga konfigurirajte v skladu s priloženimi navodili. ESP-IDF je
uradni razvojni okvir za naprave, ki temeljijo na ESP32.

V: Kakšne so funkcije ESP RainMaker?

O: ESP RainMaker ponuja različne funkcije, vključno z uporabniškimi
upravljanje, funkcije za končnega uporabnika in skrbniške funkcije. Upravljanje uporabnikov
omogoča enostavno zahtevanje naprave in sinhronizacijo podatkov. Končni uporabnik
funkcije omogočajo daljinsko upravljanje naprav preko mobilne aplikacije oz
web vmesnik. Skrbniške funkcije nudijo orodja za nadzor naprave
in upravljanje.

Brezžična avantura ESP32-C3
Obsežen vodnik po IoT
Espressif Systems 12. junij 2023

Vsebina

I Priprava

1

1 Uvod v IoT

3

1.1 Arhitektura IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Uporaba IoT v pametnih domovih . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Uvod in praksa IoT projektov

9

2.1 Uvod v tipične projekte IoT . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Osnovni moduli za običajne naprave IoT . . . . . . . . . . . . . . . . . 9

2.1.2 Osnovni moduli odjemalskih aplikacij . . . . . . . . . . . . . . . . . . . 10

2.1.3 Uvod v skupne oblačne platforme IoT . . . . . . . . . . . . . . 11

2.2 Praksa: Projekt Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Struktura projekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Projektne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Priprava strojne opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Razvojni proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Uvod v ESP RainMaker

19

3.1 Kaj je ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Implementacija ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Storitev reklamacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 Agent RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Zaledje v oblaku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 Odjemalec RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Praksa: ključne točke za razvoj z ESP RainMaker . . . . . . . . . . . . 25

3.4 Lastnosti programa ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Upravljanje uporabnikov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Funkcije končnega uporabnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Skrbniške funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Nastavitev razvojnega okolja

31

4.1 ESP-IDF Konecview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Različice ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 Potek dela ESP-IDF Git . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Izbira primerne različice . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Konecview imenika ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 Nastavitev razvojnega okolja ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Nastavitev razvojnega okolja ESP-IDF v sistemu Linux . . . . . . . . 38 4.2.2 Nastavitev razvojnega okolja ESP-IDF v sistemu Windows . . . . . . 40 4.2.3 Nastavitev razvojnega okolja ESP-IDF na Macu . . . . . . . . . 45 4.2.4 Namestitev kode VS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Uvod v razvojna okolja tretjih oseb . . . . . . . . 46 4.3 Sistem za prevajanje ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Osnovni koncepti prevajalnega sistema . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Zgradba . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Privzeta gradbena pravila sistema za prevajanje . . . . . . . . . . . . . 50 4.3.4 Uvod v kompilacijski skript . . . . . . . . . . . . . . . . . . 51 4.3.5 Uvod v pogoste ukaze . . . . . . . . . . . . . . . . . . . 52 4.4 Vaja: Sestavljanje primeraample Program “Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Nprample Analiza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Prevajanje programa Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Utripanje programa Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analiza dnevnika serijskih vrat programa Blink . . . . . . . . . . . . . . 60 4.5 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Razvoj strojne opreme in gonilnikov

65

5 Oblikovanje strojne opreme izdelkov Smart Light, ki temeljijo na ESP32-C3

67

5.1 Značilnosti in sestava izdelkov Smart Light . . . . . . . . . . . . . . . 67

5.2 Zasnova strojne opreme jedrnega sistema ESP32-C3 . . . . . . . . . . . . . . . . . . . 70

5.2.1 Napajanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Zaporedje vklopa in ponastavitev sistema . . . . . . . . . . . . . . . . . . 74

5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.4 Vir ure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 RF in antena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Zatiči za jermenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 Krmilnik GPIO in PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Praksa: Izdelava pametnega sistema luči z ESP32-C3 . . . . . . . . . . . . . 80

5.3.1 Izbira modulov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 Konfiguriranje GPIO signalov PWM . . . . . . . . . . . . . . . . . . . . 82

5.3.3 Prenos vdelane programske opreme in vmesnik za odpravljanje napak . . . . . . . . . . . . 82

5.3.4 Smernice za načrtovanje RF . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Smernice za načrtovanje napajalnika . . . . . . . . . . . . . . . . . . . 86 5.4 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Razvoj gonilnikov

87

6.1 Postopek razvoja gonilnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 Periferne aplikacije ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 Osnove gonilnika LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Barvni prostori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 Gonilnik LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 Zatemnitev LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 Uvod v PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 Razvoj gonilnika za zatemnitev LED . . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Nehlapna shramba (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

6.4.2 Krmilnik LED PWM (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98

6.4.3 Programiranje LED PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Praksa: Dodajanje gonilnikov projektu Smart Light . . . . . . . . . . . . . . . . . 103

6.5.1 Gonilnik gumbov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 Gonilnik za zatemnitev LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III Brezžična komunikacija in nadzor

109

7 Konfiguracija in povezava Wi-Fi

111

7.1 Osnove Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.1 Uvod v Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 Razvoj IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.3 Koncepti Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.1.4 Povezava Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7.2 Osnove Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 Uvod v Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Koncepti Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 Povezava Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3 Konfiguracija omrežja Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.3.1 Priročnik za konfiguracijo omrežja Wi-Fi . . . . . . . . . . . . . . . . . . . . 131

7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.3.5 Druge metode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 Programiranje Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Komponente Wi-Fi v ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Vaja: Povezava Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Vaja: pametna povezava Wi-Fi . . . . . . . . . . . . . . . . . . . . . 145
7.5 Praksa: Konfiguracija Wi-Fi v projektu Smart Light . . . . . . . . . . . . . . . 156 7.5.1 Povezava Wi-Fi v projektu Smart Light . . . . . . . . . . . . . . . . . 156 7.5.2 Pametna konfiguracija Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Lokalni nadzor

159

8.1 Uvod v lokalni nadzor . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Uporaba lokalnega nadzora . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 Napredtaglokalnega nadzora. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Odkrivanje nadzorovanih naprav prek pametnih telefonov . . . . . . . . . . 161

8.1.4 Podatkovna komunikacija med pametnimi telefoni in napravami . . . . . . . . 162

8.2 Pogoste lokalne metode odkrivanja . . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Oddajanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2.3 Primerjava med Broadcast in Multicast . . . . . . . . . . . . . . 176

8.2.4 Multicast aplikacijski protokol mDNS za lokalno odkrivanje . . . . . . . . 176

8.3 Skupni komunikacijski protokoli za lokalne podatke . . . . . . . . . . . . . . . 179

8.3.1 Protokol za nadzor prenosa (TCP) . . . . . . . . . . . . . . . . . . . 179

8.3.2 Protokol za prenos hiperbesedila (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Uporabnik Datagram protokol (UDP). . . . . . . . . . . . . . . . . . . . . . 189

8.3.4 Protokol omejene aplikacije (CoAP) . . . . . . . . . . . . . . . . 192

8.3.5 Protokol Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

8.3.6 Povzetek podatkovnih komunikacijskih protokolov . . . . . . . . . . . . . . . 203

8.4 Jamstvo za varnost podatkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Uvod v varnost transportnega sloja (TLS) . . . . . . . . . . . . . 207

8.4.2 Uvod v Datagram Varnost transportne plasti (DTLS) . . . . . . . 213

8.5 Praksa: lokalni nadzor v projektu Smart Light . . . . . . . . . . . . . . . . . . 217

8.5.1 Ustvarjanje lokalnega nadzornega strežnika na osnovi Wi-Fi . . . . . . . . . . . . . . . 217

8.5.2 Preverjanje funkcionalnosti lokalnega nadzora s pomočjo skriptov . . . . . . . . . . . 221

8.5.3 Ustvarjanje lokalnega nadzornega strežnika na osnovi Bluetooth . . . . . . . . . . . . 222

8.6 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Nadzor v oblaku

225

9.1 Uvod v daljinsko upravljanje . . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Protokoli za komunikacijo podatkov v oblaku . . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 Uvod v MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Načela MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Oblika sporočila MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Primerjava protokolov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Nastavitev posrednika MQTT v sistemih Linux in Windows . . . . . . . . . . . . 233 9.2.6 Nastavitev odjemalca MQTT na podlagi ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Zagotavljanje varnosti podatkov MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Pomen in funkcija potrdil . . . . . . . . . . . . . . . . . . . 237 9.3.2 Lokalno generiranje potrdil . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Konfiguracija posrednika MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Konfiguriranje odjemalca MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Vaja: Daljinsko upravljanje prek programa ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Osnove programa ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Komunikacijski protokol vozlišča in zalednega oblaka . . . . . . . . . . . 244 9.4.3 Komunikacija med odjemalcem in zaledjem v oblaku . . . . . . . . . . . 249 9.4.4 Uporabniške vloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Osnovne storitve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplikacija RainMaker in integracije tretjih oseb . . . . . . . . . . . . . . . 262 9.5 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Razvoj aplikacij za pametne telefone

269

10.1 Uvod v razvoj aplikacij za pametne telefone . . . . . . . . . . . . . . . . . . 269

10.1.1 Konecview razvoja aplikacij za pametne telefone. . . . . . . . . . . . . . . 270

10.1.2 Struktura projekta Android . . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 Struktura projekta iOS . . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Življenjski cikel dejavnosti Android . . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 Življenjski cikel sistema iOS ViewKrmilnik . . . . . . . . . . . . . . . . . . . . . . 273

10.2 Ustvarjanje novega projekta aplikacije za pametni telefon . . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Priprave na razvoj za Android . . . . . . . . . . . . . . . . . . . 275

10.2.2 Ustvarjanje novega projekta Android . . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 Dodajanje odvisnosti za MyRainmaker . . . . . . . . . . . . . . . . . 276

10.2.4 Zahteva za dovoljenje v sistemu Android. . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Priprave na razvoj za iOS . . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Ustvarjanje novega projekta iOS . . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 Dodajanje odvisnosti za MyRainmaker . . . . . . . . . . . . . . . . . 279

10.2.8 Zahteva za dovoljenje v sistemu iOS. . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 Analiza funkcionalnih zahtev aplikacije . . . . . . . . . . . . . . . . . . 281

10.3.1 Analiza funkcionalnih zahtev projekta . . . . . . . . . . . . 282

10.3.2 Analiza zahtev za upravljanje uporabnikov . . . . . . . . . . . . . . . 282 10.3.3 Analiza zahtev za zagotavljanje naprav in vezavo . . . . . . . 283 10.3.4 Analiza zahtev za daljinsko upravljanje . . . . . . . . . . . . . . . . 283 10.3.5 Analiza zahtev glede razporejanja . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analiza zahtev uporabniškega središča . . . . . . . . . . . . . . . . . . 285 10.4 Razvoj upravljanja uporabnikov . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Uvod v API-je RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Začetek komunikacije prek pametnega telefona . . . . . . . . . . . . . . . . 286 10.4.3 Registracija računa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Prijava v račun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Razvoj zagotavljanja naprav . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Naprave za skeniranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Povezovanje naprav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generiranje skrivnih ključev . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Pridobivanje ID-ja vozlišča . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Naprave za zagotavljanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Razvoj nadzora naprav . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Povezovanje naprav z računi v oblaku . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Pridobivanje seznama naprav . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Pridobivanje stanja naprave . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Spreminjanje stanja naprave . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Razvoj razporejanja in uporabniškega centra . . . . . . . . . . . . . . . . . . . 313 10.7.1 Izvajanje funkcije razporejanja . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementacija uporabniškega centra . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Več API-jev v oblaku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11 Nadgradnja vdelane programske opreme in upravljanje različic

321

11.1 Nadgradnja vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

11.1.1 Konecview particijskih tabel. . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Postopek zagona vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Konecview mehanizma OTA. . . . . . . . . . . . . . . . . . . . . 326

11.2 Upravljanje različic vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Označevanje vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Povrnitev in preprečevanje povrnitve nazaj . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Vadba: OTA (Over-the-Air) Nprample . . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Nadgradnja vdelane programske opreme prek lokalnega gostitelja . . . . . . . . . . . . . . . . . 332

11.3.2 Nadgradnja vdelane programske opreme prek programa ESP RainMaker . . . . . . . . . . . . . . . 335

11.4 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Optimizacija in masovna proizvodnja

343

12 Upravljanje porabe energije in optimizacija nizke porabe energije

345

12.1 Upravljanje napajanja ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Dinamično frekvenčno skaliranje . . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Konfiguracija upravljanja porabe energije . . . . . . . . . . . . . . . . . . . . 348

12.2 Način nizke porabe ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Način mirovanja modema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Način lahkega spanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Način globokega spanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Poraba toka v različnih načinih napajanja . . . . . . . . . . . . . 358

12.3 Upravljanje porabe energije in odpravljanje napak pri nizki porabi . . . . . . . . . . . . . . . . . 359

12.3.1 Odpravljanje napak v dnevniku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

12.3.2 Odpravljanje napak GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

12.4 Praksa: Upravljanje porabe energije v projektu Smart Light . . . . . . . . . . . . . . . 363

12.4.1 Konfiguracija funkcije upravljanja porabe energije . . . . . . . . . . . . . . . . . 364

12.4.2 Uporaba ključavnic za upravljanje porabe . . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Preverjanje porabe energije . . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Izboljšane varnostne funkcije naprave

369

13.1 Konecview varnosti podatkov naprav IoT. . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 Zakaj zaščititi podatke naprav IoT? . . . . . . . . . . . . . . . . . . . . . . 370

13.1.2 Osnovne zahteve za varnost podatkov naprave IoT . . . . . . . . . . . . 371

13.2 Zaščita celovitosti podatkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

13.2.1 Uvod v metodo preverjanja integritete . . . . . . . . . . . . . . 372

13.2.2 Preverjanje celovitosti podatkov vdelane programske opreme . . . . . . . . . . . . . . . . . . 373

13.2.3 Prample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Varovanje zaupnosti podatkov . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Uvod v šifriranje podatkov . . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Uvod v shemo šifriranja Flash . . . . . . . . . . . . . . . . . 376

13.3.3 Shranjevanje šifrirnega ključa Flash . . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Delovni način šifriranja Flash . . . . . . . . . . . . . . . . . . . . 380

13.3.5 Postopek šifriranja Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 Uvod v šifriranje NVS . . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 Prampšifriranja Flash in šifriranja NVS. . . . . . . . . . . 384

13.4 Zaščita zakonitosti podatkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 Uvod v digitalni podpis . . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Konecview sheme varnega zagona. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Uvod v programski varni zagon . . . . . . . . . . . . . . . . . . . 388 13.4.4 Uvod v varen zagon strojne opreme . . . . . . . . . . . . . . . . . . 390 13.4.5 Npramples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Praksa: Varnostne funkcije v masovni proizvodnji . . . . . . . . . . . . . . . . . . 396 13.5.1 Šifriranje Flash in varen zagon . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Omogočanje šifriranja Flash in varnega zagona z orodji Batch Flash . . 397 13.5.3 Omogočanje šifriranja Flash in varnega zagona v projektu Smart Light . . . 398 13.6 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Zapisovanje vdelane programske opreme in testiranje za množično proizvodnjo

399

14.1 Zapis vdelane programske opreme v masovni proizvodnji . . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Definiranje podatkovnih particij . . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Zapisovanje vdelane programske opreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Testiranje množične proizvodnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Praksa: Podatki o množični proizvodnji v projektu Smart Light . . . . . . . . . . . . . 404

14.4 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 ESP Insights: platforma za oddaljeni nadzor

405

15.1 Uvod v ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 Kako začeti uporabljati ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 Začetek uporabe ESP Insights v projektu esp-insights. . . . . . 409

15.2.2 Zagon Example v projektu esp-insights. . . . . . . . . . . . . . . 411

15.2.3 Poročanje o informacijah Coredump . . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Prilagajanje zanimivih dnevnikov . . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Poročanje o razlogu za ponovni zagon . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Poročanje meritev po meri . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Praksa: Uporaba ESP Insights v projektu Smart Light . . . . . . . . . . . . . . . 416

15.4 Povzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Uvod
ESP32-C3 je enojedrni Wi-Fi in Bluetooth 5 (LE) mikrokontroler SoC, ki temelji na odprtokodni arhitekturi RISC-V. Vzpostavi pravo razmerje moči, V/I zmogljivosti in varnosti ter tako ponuja optimalno stroškovno učinkovito rešitev za povezane naprave. Za prikaz različnih aplikacij družine ESP32-C3 vas bo ta Espressifova knjiga popeljala na zanimivo potovanje skozi AIoT, začenši od osnov razvoja projektov IoT in nastavitve okolja do praktičnih primerov.amples. Prva štiri poglavja govorijo o IoT, ESP RainMaker in ESP-IDF. Poglavja 5 in 6 kratek opis načrtovanja strojne opreme in razvoja gonilnikov. Ko boste napredovali, boste odkrili, kako konfigurirati svoj projekt prek omrežij Wi-Fi in mobilnih aplikacij. Končno se boste naučili optimizirati svoj projekt in ga dati v množično proizvodnjo.
Če ste inženir na sorodnih področjih, arhitekt programske opreme, učitelj, študent ali kdor koli, ki ga zanima IoT, je ta knjiga za vas.
Lahko prenesete kodo nprample, uporabljen v tej knjigi, z Espressifovega mesta na GitHubu. Za najnovejše informacije o razvoju interneta stvari spremljajte naš uradni račun.

Predgovor
Informatiziran svet
Na valu interneta je internet stvari (IoT) doživel svoj veliki prvenec in postal nova vrsta infrastrukture v digitalnem gospodarstvu. Da bi tehnologijo približali javnosti, si Espressif Systems prizadeva za vizijo, da lahko razvijalci iz vseh družbenih slojev uporabljajo IoT za reševanje nekaterih najbolj perečih problemov našega časa. Svet »Inteligentnega omrežja vseh stvari« je tisto, kar pričakujemo od prihodnosti.
Oblikovanje lastnih čipov je ključna sestavina te vizije. To bo maraton, ki bo zahteval nenehne preboje čez tehnološke meje. Od "Game Changer" ESP8266 do serije ESP32, ki vključuje povezljivost Wi-Fi in Bluetoothr (LE), ki ji sledi ESP32-S3, opremljen s pospeškom AI, Espressif nikoli ne preneha raziskovati in razvijati izdelkov za rešitve AIoT. Z našo odprtokodno programsko opremo, kot je IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF in Device Connectivity Platform ESP RainMaker, smo ustvarili neodvisno ogrodje za gradnjo aplikacij AIoT.
Od julija 2022 so kumulativne pošiljke Espressifovih naborov čipov IoT presegle 800 milijonov, kar vodi na trgu Wi-Fi MCU in napaja ogromno število povezanih naprav po vsem svetu. V prizadevanju za odličnost je vsak izdelek Espressif velika uspešnica zaradi visoke stopnje integracije in stroškovne učinkovitosti. Izdaja ESP32-C3 pomeni pomemben mejnik Espressifove samorazvite tehnologije. Je enojedrni, 32-bitni MCU, ki temelji na RISC-V, s 400 KB SRAM-a, ki lahko deluje pri 160 MHz. Vgrajen ima 2.4 GHz Wi-Fi in Bluetooth 5 (LE) s podporo za dolge dosege. Vzpostavi dobro ravnovesje med močjo, V/I zmogljivostmi in varnostjo ter tako ponuja optimalno stroškovno učinkovito rešitev za povezane naprave. Ta knjiga, ki temelji na tako zmogljivem ESP32-C3, naj bi bralcem pomagala razumeti znanje, povezano z IoT, s podrobnimi ilustracijami in praktičnimi primeri.amples.
Zakaj smo napisali to knjigo?
Espressif Systems je več kot podjetje za polprevodnike. Je tudi IoT platformsko podjetje, ki vedno stremi k prebojem in inovacijam na področju tehnologije. Hkrati je Espressif odprl kodo in delil svoj samorazviti operacijski sistem in programsko ogrodje s skupnostjo, ki tvori edinstven ekosistem. Inženirji, izdelovalci in tehnološki navdušenci aktivno razvijajo nove programske aplikacije, ki temeljijo na izdelkih Espressif, prosto komunicirajo in delijo svoje izkušnje. Fascinantne ideje razvijalcev lahko ves čas vidite na različnih platformah, kot sta YouTube in GitHub. Priljubljenost izdelkov Espressif je spodbudila naraščajoče število avtorjev, ki so izdali več kot 100 knjig, ki temeljijo na naborih čipov Espressif, v več kot desetih jezikih, vključno z angleščino, kitajščino, nemščino, francoščino in japonščino.

Podpora in zaupanje partnerjev v skupnosti spodbuja Espressifovo nenehno inovativnost. »Prizadevamo si, da bi bili naši čipi, operacijski sistemi, ogrodja, rešitve, oblak, poslovne prakse, orodja, dokumentacija, zapisi, ideje itd. vedno bolj ustrezni za odgovore, ki jih ljudje potrebujejo pri najbolj perečih težavah sodobnega življenja. To je Espressifova najvišja ambicija in moralni kompas.” je dejal g. Teo Swee Ann, ustanovitelj in izvršni direktor podjetja Espressif.
Espressif ceni branje in ideje. Ker nenehno nadgrajevanje tehnologije IoT postavlja višje zahteve za inženirje, kako lahko pomagamo več ljudem, da hitro obvladajo čipe IoT, operacijske sisteme, programska ogrodja, aplikacijske sheme in izdelke storitev v oblaku? Kot pravi pregovor, je človeka bolje naučiti loviti ribe, kot mu dati ribe. V nevihti možganov se nam je zazdelo, da bi lahko napisali knjigo, v kateri bi sistematično uredili ključna znanja o razvoju interneta stvari. Ujeli smo se, hitro zbrali skupino višjih inženirjev in združili izkušnje tehnične ekipe pri vgrajenem programiranju, razvoju strojne in programske opreme interneta stvari, kar je vse prispevalo k izdaji te knjige. V procesu pisanja smo se trudili biti objektivni in pošteni, brez zapredka, ter z jedrnatimi izrazi povedati kompleksnost in čar interneta stvari. Skrbno smo povzeli pogosta vprašanja, se sklicevali na povratne informacije in predloge skupnosti, da bi jasno odgovorili na vprašanja, ki so se pojavila v procesu razvoja, in zagotovili praktične smernice za razvoj interneta stvari za ustrezne tehnike in odločevalce.
Struktura knjige
Ta knjiga ima perspektivo, osredotočeno na inženirje, in korak za korakom razlaga potrebno znanje za razvoj projekta IoT. Sestavljen je iz štirih delov, in sicer:
· Priprava (poglavje 1): Ta del predstavlja arhitekturo IoT, tipično projektno ogrodje IoT, platformo v oblaku ESP RainMakerr in razvojno okolje ESP-IDF, da se postavijo trdni temelji za razvoj projekta IoT.
· Razvoj strojne opreme in gonilnikov (poglavje 5): Ta del, ki temelji na naboru vezij ESP6-C32, podrobneje obravnava minimalni sistem strojne opreme in razvoj gonilnikov ter izvaja nadzor zatemnitve, barvnega razvrščanja in brezžične komunikacije.
· Brezžična komunikacija in nadzor (poglavje 7): Ta del pojasnjuje inteligentno konfiguracijsko shemo Wi-Fi, ki temelji na čipu ESP11-C32, lokalnih protokolih in protokolih za nadzor v oblaku ter lokalnem in oddaljenem nadzoru naprav. Ponuja tudi sheme za razvoj aplikacij za pametne telefone, nadgradnjo vdelane programske opreme in upravljanje različic.
· Optimizacija in masovna proizvodnja (poglavja 12–15): Ta del je namenjen naprednim aplikacijam interneta stvari, s poudarkom na optimizaciji izdelkov pri upravljanju porabe energije, optimizaciji nizke porabe energije in izboljšani varnosti. Predstavlja tudi zapisovanje vdelane programske opreme in testiranje v množični proizvodnji ter kako diagnosticirati stanje delovanja in dnevnike vdelane programske opreme naprave prek platforme za oddaljeno spremljanje ESP Insights.

O izvorni kodi
Bralci lahko zaženejo exampprogramov v tej knjigi, bodisi z ročnim vnosom kode ali z uporabo izvorne kode, ki je priložena knjigi. Poudarek dajemo na kombinacijo teorije in prakse, zato skoraj v vsakem poglavju postavljamo sklop Praksa, ki temelji na projektu Smart Light. Vse kode so odprtokodne. Bralci so vabljeni, da prenesejo izvorno kodo in o njej razpravljajo v razdelkih, povezanih s to knjigo, na GitHubu in našem uradnem forumu esp32.com. Za odprtokodno kodo te knjige veljajo pogoji licence Apache 2.0.
Opomba avtorja
To knjigo je uradno izdelal Espressif Systems, napisali pa so jo višji inženirji podjetja. Primeren je za menedžerje in osebje za raziskave in razvoj v panogah, povezanih z IoT, učitelje in študente sorodnih smeri ter navdušence na področju interneta stvari. Upamo, da bo ta knjiga lahko služila kot delovni priročnik, referenca in knjiga ob postelji, kot dober učitelj in prijatelj.
Pri nastajanju te knjige smo se sklicevali na nekatere relevantne rezultate raziskav domačih in tujih strokovnjakov, znanstvenikov in tehnikov ter se potrudili, da smo jih citirali v skladu z akademskimi normami. Vendar je neizogibno, da pride do nekaterih izpustov, zato želimo na tem mestu izraziti globoko spoštovanje in hvaležnost vsem relevantnim avtorjem. Poleg tega smo citirali podatke iz interneta, zato se zahvaljujemo izvirnim avtorjem in založnikom ter se opravičujemo, ker ne moremo navesti vira vsakega podatka.
Da bi izdelali knjigo visoke kakovosti, smo organizirali kroge internih razprav ter se učili iz predlogov in povratnih informacij poskusnih bralcev in urednikov založb. Na tem mestu se vam še enkrat zahvaljujemo za vašo pomoč, ki je pripomogla k uspešnemu delu.
Nazadnje, a najpomembnejše, hvala vsem v Espressifu, ki so tako trdo delali za rojstvo in popularizacijo naših izdelkov.
Razvoj IoT projektov vključuje širok spekter znanja. Izpusti so neizogibni, saj so omejeni na dolžino knjige, pa tudi na raven in izkušnje avtorja. Zato vljudno prosimo strokovnjake in bralce, da kritizirajo in popravijo naše napake. Če imate kakršne koli predloge za to knjigo, nam pišite na book@espressif.com. Veselimo se vaših povratnih informacij.

Kako uporabljati to knjigo?
Koda projektov v tej knjigi je odprtokodna. Lahko ga prenesete iz našega repozitorija GitHub in delite svoje misli in vprašanja na našem uradnem forumu. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 V celotni knjigi bodo poudarjeni deli, kot je prikazano spodaj.
Izvorna koda V tej knjigi poudarjamo kombinacijo teorije in prakse in tako v skoraj vsakem poglavju postavljamo razdelek Praksa o projektu Smart Light. Ustrezni koraki in izvorna stran bodo označeni med dvema vrsticama, ki se začneta z tag Izvorna koda.
OPOMBA/NASVETI Tukaj lahko najdete nekaj pomembnih informacij in opomnikov za uspešno odpravljanje napak v vašem programu. Označeni bodo med dvema debelima črtama, ki se začneta z tag OPOMBA ali NASVETI.
Večina ukazov v tej knjigi se izvaja pod Linuxom, nanje pa opozarja znak "$". Če ukaz za izvedbo zahteva privilegije superuporabnika, bo poziv nadomeščen z »#«. Ukazni poziv v sistemih Mac je »%«, kot je uporabljeno v razdelku 4.2.3 Namestitev ESP-IDF v Mac.
Osnovno besedilo v tej knjigi bo natisnjeno v listini, medtem ko bo koda exampdatoteke, komponente, funkcije, spremenljivke, koda file imena, kodni imeniki in nizi bodo v Courier New.
Ukazi ali besedila, ki jih mora vnesti uporabnik, in ukazi, ki jih lahko vnesemo s pritiskom na tipko “Enter”, bodo natisnjeni v krepkem tisku Courier New. Dnevniki in kodni bloki bodo predstavljeni v svetlo modrih poljih.
Example:
Drugič, uporabite esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py za ustvarjanje binarne datoteke NVS particije file na razvojnem gostitelju z naslednjim ukazom:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –vhodna masa prod.csv –izhodna masa prod.bin –velikost VELIKOST PARTICIJE NVS

1. poglavje

Uvod

do

IoT

Ob koncu 20. stoletja, z vzponom računalniških omrežij in komunikacijskih tehnologij, se je internet hitro vključil v življenja ljudi. Ker internetna tehnologija še naprej dozoreva, se je rodila ideja o internetu stvari (IoT). Dobesedno IoT pomeni internet, kjer so stvari povezane. Medtem ko prvotni internet podira meje prostora in časa ter zmanjšuje razdaljo med »osebo in osebo«, IoT naredi »stvari« pomembnega udeleženca, ki zbližuje »ljudi« in »stvari«. V dogledni prihodnosti naj bi IoT postal gonilna sila informacijske industrije.
Torej, kaj je internet stvari?
Težko je natančno opredeliti internet stvari, saj se njegov pomen in obseg nenehno spreminjata. Leta 1995 je Bill Gates v svoji knjigi The Road Ahead prvič omenil idejo IoT. Preprosto povedano, IoT omogoča objektom izmenjavo informacij med seboj prek interneta. Njegov končni cilj je vzpostaviti »internet vsega«. To je zgodnja interpretacija interneta stvari, pa tudi fantazija tehnologije prihodnosti. Trideset let pozneje, s hitrim razvojem gospodarstva in tehnologije, se fantazija uresničuje. Od pametnih naprav, pametnih domov, pametnih mest, interneta vozil in nosljivih naprav do »metaverzuma«, ki ga podpirajo tehnologije IoT, nenehno nastajajo novi koncepti. V tem poglavju bomo začeli z razlago arhitekture interneta stvari, nato pa predstavili najpogostejšo aplikacijo interneta stvari, pametni dom, da vam pomagamo do jasnega razumevanja interneta stvari.
1.1 Arhitektura IoT
Internet stvari vključuje več tehnologij, ki imajo različne potrebe uporabe in oblike v različnih panogah. Da bi uredili strukturo, ključne tehnologije in aplikativne značilnosti IoT, je treba vzpostaviti enotno arhitekturo in standardni tehnični sistem. V tej knjigi je arhitektura IoT preprosto razdeljena na štiri plasti: plast zaznavanja in nadzora, omrežna plast, plast platforme in plast aplikacije.
Plast zaznavanja in nadzora Kot najosnovnejši element arhitekture IoT je plast zaznavanja in nadzora jedro za uresničitev celovitega zaznavanja IoT. Njegova glavna naloga je zbiranje, prepoznavanje in nadzor informacij. Sestavljen je iz različnih naprav s sposobnostjo zaznavanja,
3

identifikacijo, nadzor in izvajanje ter je odgovoren za pridobivanje in analizo podatkov, kot so lastnosti materiala, vedenjski trendi in status naprave. Na ta način lahko IoT prepozna resnični fizični svet. Poleg tega lahko sloj nadzoruje tudi status naprave.
Najpogostejše naprave tega sloja so različni senzorji, ki imajo pomembno vlogo pri zbiranju in identifikaciji informacij. Senzorji so kot človeški čutilni organi, kot so fotoobčutljivi senzorji za vid, akustični senzorji za sluh, senzorji za pline za vonj in senzorji, občutljivi na pritisk in temperaturo za dotik. Z vsemi temi »čutilnimi organi« predmeti postanejo »živi« in sposobni inteligentnega zaznavanja, prepoznavanja in manipulacije fizičnega sveta.
Omrežna plast Glavna funkcija omrežne plasti je prenos informacij, vključno s podatki, pridobljenimi iz plasti zaznavanja in nadzora, do določenega cilja, kot tudi ukazov, izdanih iz plasti aplikacije nazaj v plast zaznavanja in nadzora. Služi kot pomemben komunikacijski most, ki povezuje različne plasti sistema IoT. Postavitev osnovnega modela interneta stvari vključuje dva koraka za integracijo predmetov v omrežje: dostop do interneta in prenos prek interneta.
Dostop do interneta Internet omogoča medsebojno povezovanje med človekom, ne vključuje pa stvari v veliko družino. Pred pojavom interneta stvari večina stvari ni bila »omrežna«. Zahvaljujoč nenehnemu razvoju tehnologije IoT uspeva povezati stvari z internetom in tako uresničiti medsebojno povezavo med »ljudmi in stvarmi« ter »stvari in stvarmi«. Obstajata dva običajna načina za vzpostavitev internetne povezave: žični in brezžični dostop do omrežja.
Metode dostopa do žičnega omrežja vključujejo Ethernet, serijsko komunikacijo (npr. RS-232, RS-485) in USB, medtem ko je brezžični dostop do omrežja odvisen od brezžične komunikacije, ki jo lahko nadalje razdelimo na brezžično komunikacijo kratkega dosega in brezžično komunikacijo velikega dosega.
Brezžična komunikacija kratkega dosega vključuje ZigBee, Bluetoothr, Wi-Fi, komunikacijo bližnjega polja (NFC) in radiofrekvenčno identifikacijo (RFID). Brezžična komunikacija na velike razdalje vključuje izboljšano strojno komunikacijo (eMTC), LoRa, ozkopasovni internet stvari (NB-IoT), 2G, 3G, 4G, 5G itd.
Prenos preko interneta Različni načini dostopa do interneta vodijo do ustrezne fizične prenosne povezave podatkov. Naslednja stvar je odločitev, kateri komunikacijski protokol uporabiti za prenos podatkov. V primerjavi z internetnimi terminali ima večina IoT terminalov trenutno manj
4 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

razpoložljivih virov, kot so zmogljivost obdelave, zmogljivost shranjevanja, hitrost omrežja ipd., zato je treba izbrati komunikacijski protokol, ki v aplikacijah IoT zaseda manj virov. Obstajata dva komunikacijska protokola, ki se danes pogosto uporabljata: prenos telemetrije s čakalno vrsto sporočil (MQTT) in protokol omejene aplikacije (CoAP).
Plast platforme Plast platforme se v glavnem nanaša na oblačne platforme IoT. Ko so vsi terminali IoT povezani v omrežje, je treba njihove podatke združiti na platformi v oblaku IoT, da se izračunajo in shranijo. Plast platforme v glavnem podpira aplikacije IoT pri omogočanju dostopa in upravljanja velikih naprav. Povezuje terminale IoT s platformo v oblaku, zbira podatke o terminalih in izdaja ukaze terminalom, tako da izvaja nadzor na daljavo. Kot vmesna storitev za dodeljevanje opreme industrijskim aplikacijam ima sloj platforme povezovalno vlogo v celotni arhitekturi IoT, ki nosi abstraktno poslovno logiko in standardiziran osrednji podatkovni model, ki lahko ne samo realizira hiter dostop do naprav, ampak tudi zagotavlja zmogljive modularne zmogljivosti. za izpolnjevanje različnih potreb v scenarijih uporabe v industriji. Plast platforme vključuje predvsem funkcionalne module, kot so dostop do naprave, upravljanje naprave, upravljanje varnosti, sporočilna komunikacija, spremljanje delovanja in vzdrževanje ter podatkovne aplikacije.
· Dostop do naprav, vzpostavitev povezave in komunikacije med terminali in oblačnimi platformami IoT.
· Upravljanje naprav, vključno s funkcijami, kot so ustvarjanje naprav, vzdrževanje naprav, pretvorba podatkov, sinhronizacija podatkov in distribucija naprav.
· Upravljanje varnosti, zagotavljanje varnosti prenosa podatkov IoT z vidika varnostne avtentikacije in varnosti komunikacije.
· Sporočilna komunikacija, vključno s tremi smermi prenosa, to je, da terminal pošilja podatke v platformo v oblaku IoT, platforma v oblaku IoT pošilja podatke na stran strežnika ali druge platforme v oblaku IoT, strežniška stran pa daljinsko upravlja naprave IoT.
· Spremljanje O&M, ki vključuje spremljanje in diagnozo, nadgradnjo vdelane programske opreme, spletno odpravljanje napak, storitve dnevnika itd.
· Podatkovne aplikacije, ki vključujejo shranjevanje, analizo in uporabo podatkov.
Aplikacijska plast Aplikacijska plast uporablja podatke iz plasti platforme za upravljanje aplikacije, njihovo filtriranje in obdelavo z orodji, kot so baze podatkov in programska oprema za analizo. Dobljene podatke je mogoče uporabiti za aplikacije IoT v resničnem svetu, kot so pametno zdravstvo, pametno kmetijstvo, pametni domovi in ​​pametna mesta.
Seveda se lahko arhitektura IoT razdeli na več plasti, vendar ne glede na to, koliko plasti sestoji iz tega, osnovni princip ostaja v bistvu enak. Učenje
Poglavje 1. Uvod v IoT 5

o arhitekturi interneta stvari pomaga poglobiti naše razumevanje tehnologij interneta stvari in zgraditi popolnoma delujoče projekte interneta stvari.
1.2 Aplikacija IoT v pametnih domovih
IoT je prodrl v vsa področja življenja in najbolj povezana aplikacija IoT je pametni dom. Številne tradicionalne naprave so zdaj opremljene z eno ali več napravami IoT, številne novozgrajene hiše pa so že od samega začetka zasnovane s tehnologijami IoT. Slika 1.1 prikazuje nekaj pogostih naprav pametnega doma.
Slika 1.1. Običajne naprave pametnega doma Razvoj pametnega doma lahko preprosto razdelimo na pametne izdelketage, scenska medsebojna povezava stage in inteligentni stage, kot je prikazano na sliki 1.2.
Slika 1.2. Razvoj stage pametnega doma 6 ESP32-C3 Wireless Adventure: Obsežen vodnik po IoT

Prvi stage gre za pametne izdelke. Za razliko od tradicionalnih domov v pametnih domovih naprave IoT sprejemajo signale s senzorji in so povezane v omrežje prek brezžičnih komunikacijskih tehnologij, kot so Wi-Fi, Bluetooth LE in ZigBee. Uporabniki lahko nadzorujejo pametne izdelke na različne načine, kot so aplikacije za pametne telefone, glasovni pomočniki, nadzor pametnih zvočnikov itd.tage osredotoča na medsebojno povezovanje prizorov. V tem stage, razvijalci ne razmišljajo več o nadzoru enega samega pametnega izdelka, temveč o medsebojnem povezovanju dveh ali več pametnih izdelkov, do določene mere avtomatizaciji in končno oblikovanju scenskega načina po meri. Na primerample, ko uporabnik pritisne kateri koli gumb scenskega načina, se luči, zavese in klimatske naprave samodejno prilagodijo prednastavitvam. Seveda obstaja predpogoj, da je povezovalna logika takoj nastavljena, vključno s sprožilnimi pogoji in izvedbenimi dejanji. Predstavljajte si, da se način ogrevanja klimatske naprave sproži, ko notranja temperatura pade pod 10°C; da se ob 7. uri zjutraj predvaja glasba, ki prebudi uporabnika, odprejo se pametne zavese, preko pametne vtičnice se zažene kuhalnik riža ali opekač kruha; ko uporabnik vstane in zaključi s pranjem, je zajtrk že postrežen, tako da ne bo zamude pri odhodu v službo. Kako udobno je postalo naše življenje! Tretji stage gre v inteligenco stage. Z več dostopa do pametnih domačih naprav se bodo povečale tudi vrste ustvarjenih podatkov. S pomočjo računalništva v oblaku, velikih podatkov in umetne inteligence, kot da bi v pametne domove vsadili »pametnejše možgane«, ki ne zahtevajo več pogostih ukazov uporabnika. Zbirajo podatke iz prejšnjih interakcij in se učijo uporabnikovih vedenjskih vzorcev in preferenc, da bi avtomatizirali dejavnosti, vključno z zagotavljanjem priporočil za odločanje. Trenutno je večina pametnih domov na prizorišču medsebojne povezave stage. Ko se stopnja prodora in inteligenca pametnih izdelkov povečujeta, se ovire med komunikacijskimi protokoli odstranjujejo. Pametni domovi bodo v prihodnosti zagotovo postali res »pametni«, tako kot AI sistem Jarvis v Iron Manu, ki ne more le pomagati uporabniku pri nadzoru različnih naprav, urejanju vsakodnevnih opravil, temveč ima tudi super računalniško moč in sposobnost razmišljanja. V inteligentnem stage, bodo ljudje prejeli boljše storitve tako v količini kot v kakovosti.
Poglavje 1. Uvod v IoT 7

8 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Poglavje Uvod in praksa 2 projektov IoT
V 1. poglavju smo predstavili arhitekturo interneta stvari ter vloge in medsebojne odnose sloja zaznavanja in nadzora, omrežnega sloja, sloja platforme in sloja aplikacije ter razvoj pametnega doma. Vendar, tako kot takrat, ko se učimo slikati, teoretično znanje še zdaleč ni dovolj. Moramo si »umazati roke«, da projekte IoT prenesemo v prakso, da bi resnično obvladali tehnologijo. Poleg tega, ko se projekt premakne v množično proizvodnjo stage, je treba upoštevati več dejavnikov, kot so omrežna povezava, konfiguracija, interakcija s platformo v oblaku IoT, upravljanje in posodobitve vdelane programske opreme, upravljanje množične proizvodnje in varnostna konfiguracija. Na kaj moramo torej biti pozorni pri razvoju celotnega IoT projekta? V 1. poglavju smo omenili, da je pametni dom eden najpogostejših scenarijev uporabe interneta stvari, pametne luči pa ena najbolj osnovnih in praktičnih naprav, ki jih je mogoče uporabljati v domovih, hotelih, telovadnicah, bolnišnicah itd. V tej knjigi bomo kot izhodišče vzeli konstrukcijo projekta pametne luči, razložili njegove sestavne dele in funkcije ter zagotovili smernice za razvoj projekta. Upamo, da boste iz tega primera lahko potegnili sklepe za ustvarjanje več aplikacij IoT.
2.1 Uvod v tipične projekte IoT
Razvojno lahko osnovne funkcionalne module projektov IoT razvrstimo v razvoj programske in strojne opreme naprav IoT, razvoj odjemalskih aplikacij in razvoj oblačne platforme IoT. Pomembno je razjasniti osnovne funkcionalne module, ki bodo podrobneje opisani v tem razdelku.
2.1.1 Osnovni moduli za običajne naprave IoT
Razvoj programske in strojne opreme naprav IoT vključuje naslednje osnovne module: Zbiranje podatkov
Kot spodnja plast arhitekture interneta stvari naprave interneta stvari plasti zaznavanja in nadzora povezujejo senzorje in naprave prek svojih čipov in perifernih naprav, da dosežejo zbiranje podatkov in nadzor delovanja.
9

Vezava računa in začetna konfiguracija Za večino naprav IoT se vezava računa in začetna konfiguracija zaključita v enem operativnem procesu, npr.ample, povezovanje naprav z uporabniki s konfiguracijo omrežja Wi-Fi.
Interakcija z oblačnimi platformami IoT Za spremljanje in nadzor naprav IoT jih je potrebno tudi povezati z oblačnimi platformami IoT, da lahko prek medsebojne interakcije podajajo ukaze in poročajo o statusu.
Nadzor naprav Ko so naprave povezane z oblačnimi platformami IoT, lahko komunicirajo z oblakom in so registrirane, vezane ali nadzorovane. Uporabniki lahko poizvedujejo o stanju izdelka in izvajajo druge operacije v aplikaciji za pametni telefon prek oblačnih platform IoT ali lokalnih komunikacijskih protokolov.
Nadgradnja vdelane programske opreme Naprave interneta stvari lahko dosežejo tudi nadgradnjo vdelane programske opreme glede na potrebe proizvajalcev. S prejemanjem ukazov, poslanih iz oblaka, bo izvedena nadgradnja vdelane programske opreme in upravljanje različic. S to funkcijo nadgradnje vdelane programske opreme lahko nenehno izboljšujete funkcije naprav IoT, popravljate napake in izboljšujete uporabniško izkušnjo.
2.1.2 Osnovni moduli odjemalskih aplikacij
Odjemalske aplikacije (npr. aplikacije za pametne telefone) vključujejo predvsem naslednje osnovne module:
Sistem računa in avtorizacija Podpira avtorizacijo računa in naprave.
Nadzor naprave Aplikacije za pametne telefone so običajno opremljene s funkcijami za nadzor. Uporabniki se lahko preprosto povežejo z napravami IoT in jih upravljajo kadarkoli in kjerkoli prek aplikacij za pametne telefone. V resničnem pametnem domu se naprave večinoma upravljajo prek aplikacij za pametne telefone, kar ne omogoča le inteligentnega upravljanja naprav, temveč tudi prihrani stroške delovne sile. Zato je nadzor naprave nujen za odjemalske aplikacije, kot je nadzor atributov funkcij naprave, nadzor scene, razporejanje, daljinski nadzor, povezava naprav itd. Uporabniki pametnega doma lahko tudi prilagodijo scene glede na osebne potrebe, nadzorujejo osvetlitev, gospodinjske aparate, vhod , itd., da bo domače življenje bolj udobno in udobno. Z enim samim gumbom lahko nastavijo čas klimatske naprave, jo izklopijo na daljavo, samodejno nastavijo osvetlitev na hodniku, ko so vrata odklenjena, ali preklopijo na način »kino«.
Obveščanje Odjemalske aplikacije posodabljajo stanje naprav IoT v realnem času in pošiljajo opozorila, ko naprave ne delujejo normalno.
10 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Poprodajne storitve za stranke Aplikacije za pametne telefone lahko zagotovijo poprodajne storitve za izdelke, da pravočasno rešijo težave, povezane z okvarami naprav interneta stvari in tehničnimi operacijami.
Predstavljene funkcije Za izpolnjevanje potreb različnih uporabnikov se lahko dodajo druge funkcije, kot so tresenje, NFC, GPS itd. GPS lahko pomaga nastaviti natančnost operacij scene glede na lokacijo in razdaljo, medtem ko funkcija tresenja uporabnikom omogoča nastavitev ukaze, ki jih je treba izvesti za določeno napravo ali sceno s tresenjem.
2.1.3 Uvod v skupne oblačne platforme IoT
Platforma v oblaku IoT je platforma vse v enem, ki združuje funkcije, kot so upravljanje naprav, komunikacija glede varnosti podatkov in upravljanje obvestil. IoT oblačne platforme lahko glede na ciljno skupino in dostopnost razdelimo na javne IoT oblačne platforme (v nadaljevanju »javni oblak«) in zasebne IoT oblačne platforme (v nadaljevanju »zasebni oblak«).
Javni oblak običajno označuje skupne oblačne platforme IoT za podjetja ali posameznike, ki jih upravljajo in vzdržujejo ponudniki platform in se delijo prek interneta. Lahko je brezplačen ali poceni in zagotavlja storitve v celotnem odprtem javnem omrežju, kot so Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT itd. Kot podporna platforma lahko javni oblak integrira ponudnike storitev navzgor in nadaljnjimi končnimi uporabniki za ustvarjanje nove vrednostne verige in ekosistema.
Zasebni oblak je zgrajen samo za poslovno uporabo, kar zagotavlja najboljši nadzor nad podatki, varnostjo in kakovostjo storitev. Njegove storitve in infrastrukturo ločeno vzdržujejo podjetja, podporna strojna in programska oprema pa sta prav tako namenjeni določenim uporabnikom. Podjetja lahko storitve v oblaku prilagodijo potrebam svojega poslovanja. Trenutno so nekateri proizvajalci pametnih domov že dobili zasebne oblačne platforme IoT in na njihovi osnovi razvili aplikacije za pametne domove.
Javni in zasebni oblak imata svojo prednosttages, kar bo pojasnjeno kasneje.
Za doseganje komunikacijske povezljivosti je treba dokončati vsaj vgrajeni razvoj na strani naprave, skupaj s poslovnimi strežniki, platformami v oblaku IoT in aplikacijami za pametne telefone. Ob soočanju s tako velikim projektom javni oblak običajno zagotavlja komplete za razvoj programske opreme za aplikacije na strani naprave in pametne telefone, da pospeši proces. Javni in zasebni oblak zagotavljata storitve, vključno z dostopom do naprave, upravljanjem naprave, senco naprave ter delovanjem in vzdrževanjem.
Dostop do naprav Oblačne platforme interneta stvari morajo zagotoviti ne le vmesnike za dostop do naprav z uporabo protokolov
Poglavje 2. Uvod in praksa projektov IoT 11

kot so MQTT, CoAP, HTTPS in WebSocket, ampak tudi funkcija varnostnega preverjanja pristnosti naprave za blokiranje ponarejenih in nezakonitih naprav, kar učinkovito zmanjša tveganje za ogrožanje. Takšna avtentikacija običajno podpira različne mehanizme, zato je pri serijski proizvodnji naprav potrebno predhodno dodeliti certifikat naprave glede na izbrani avtentikacijski mehanizem in ga vpisati v naprave.
Upravljanje naprav Funkcija upravljanja naprav, ki jo zagotavljajo platforme v oblaku IoT, ne more samo pomagati proizvajalcem pri spremljanju statusa aktivacije in spletnega stanja njihovih naprav v realnem času, temveč omogoča tudi možnosti, kot so dodajanje/odstranjevanje naprav, pridobivanje, dodajanje/brisanje skupin, nadgradnja strojne programske opreme in upravljanje različic.
Device shadow Oblačne platforme IoT lahko ustvarijo trajno navidezno različico (device shadow) za vsako napravo, status sence naprave pa je mogoče sinhronizirati in pridobiti z aplikacijo pametnega telefona ali drugimi napravami prek internetnih protokolov za prenos. Device shadow shranjuje zadnje poročano stanje in pričakovano stanje vsake naprave, in tudi če je naprava brez povezave, lahko še vedno pridobi stanje s klicem API-jev. Device shadow zagotavlja vedno vklopljene API-je, kar olajša gradnjo aplikacij za pametne telefone, ki komunicirajo z napravami.
Delovanje in vzdrževanje Funkcija O&M vključuje tri vidike: · Predstavljanje statističnih informacij o napravah IoT in obvestilih. · Upravljanje dnevnika omogoča pridobivanje informacij o obnašanju naprave, toku sporočil navzgor/navzdol in vsebini sporočil. · Razhroščevanje naprave podpira dostavo ukazov, posodobitev konfiguracije in preverjanje interakcije med platformami v oblaku IoT in sporočili naprave.
2.2 Praksa: Projekt Smart Light
Po teoretičnem uvodu v vsakem poglavju boste našli praktični del, povezan s projektom Smart Light, ki vam bo pomagal pridobiti praktične izkušnje. Projekt temelji na Espressifovem čipu ESP32-C3 in oblačni platformi ESP RainMaker IoT ter zajema strojno opremo brezžičnega modula v izdelkih pametne svetlobe, vdelano programsko opremo za pametne naprave, ki temeljijo na ESP32C3, aplikacije za pametne telefone in interakcijo ESP RainMaker.
Izvorna koda Za boljše učenje in razvijanje izkušenj je bil projekt v tej knjigi odprtokoden. Izvorno kodo lahko prenesete iz našega repozitorija GitHub na https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

2.2.1 Struktura projekta
Projekt Smart Light je sestavljen iz treh delov: i. Pametne svetlobne naprave, ki temeljijo na ESP32-C3, odgovorne za interakcijo s platformami v oblaku IoT in nadzor stikala, svetlosti in barvne temperature LED lamp kroglice. ii. Aplikacije za pametne telefone (vključno z aplikacijami za tablične računalnike, ki se izvajajo v sistemih Android in iOS), odgovorne za omrežno konfiguracijo izdelkov pametne svetlobe ter za poizvedovanje in nadzor njihovega stanja.
iii. Oblačna platforma interneta stvari, ki temelji na ESP RainMaker. Za poenostavitev v tej knjigi obravnavamo platformo v oblaku IoT in poslovni strežnik kot celoto. Podrobnosti o programu ESP RainMaker bodo na voljo v 3. poglavju.
Skladnost med strukturo projekta Smart Light in arhitekturo IoT je prikazana na sliki 2.1.
Slika 2.1. Struktura projekta pametne luči
2.2.2 Projektne funkcije
Funkcije vsakega dela, razdeljene glede na strukturo, so naslednje. Pametne svetlobne naprave
· Omrežna konfiguracija in povezava. · LED PWM nadzor, kot je stikalo, svetlost, barvna temperatura itd. · Avtomatizacija ali nadzor scene, npr. časovno stikalo. · Šifriranje in varen zagon Flasha. · Nadgradnja vdelane programske opreme in upravljanje različic.
Poglavje 2. Uvod in praksa projektov IoT 13

Aplikacije za pametne telefone · Konfiguracija omrežja in vezava naprave. · Pametno krmiljenje svetlobnih izdelkov, kot so stikalo, svetlost, barvna temperatura itd. · Avtomatizacija ali nastavitve scene, npr. časovno stikalo. · Lokalni/daljinski nadzor. · Registracija uporabnika, prijava itd.
Platforma v oblaku ESP RainMaker IoT · Omogočanje dostopa do naprav IoT. · Zagotavljanje API-jev za delovanje naprave, ki so dostopni aplikacijam za pametne telefone. · Nadgradnja vdelane programske opreme in upravljanje različic.
2.2.3 Priprava strojne opreme
Če želite projekt izvesti v praksi, boste potrebovali tudi naslednjo strojno opremo: pametne luči, pametne telefone, usmerjevalnike Wi-Fi in računalnik, ki izpolnjuje zahteve za namestitev razvojnega okolja. Pametne luči
Pametne luči so nova vrsta žarnic, katerih oblika je enaka običajni žarnici z žarilno nitko. Pametna svetilka je sestavljena iz kondenzatorskega znižano reguliranega napajanja, brezžičnega modula (z vgrajenim ESP32-C3), LED krmilnika in RGB LED matrike. Ko je priključen na napajanje, 15 V DC voltagIzhod po znižanju kondenzatorja, popravljanju diode in regulaciji zagotavlja energijo krmilniku LED in matriki LED. Krmilnik LED lahko samodejno pošlje visoke in nizke ravni v določenih intervalih, preklaplja matriko RGB LED med zaprto (prižgane) in odprto (izklopljene luči), tako da lahko oddaja cian, rumeno, zeleno, vijolično, modro, rdečo in bela svetloba. Brezžični modul je odgovoren za povezavo z usmerjevalnikom Wi-Fi, sprejemanje in poročanje o stanju pametnih luči ter pošiljanje ukazov za nadzor LED.
Slika 2.2. Simulirana pametna luč
V zgodnjem razvoju stage, lahko simulirate pametno luč z uporabo plošče ESP32-C3DevKitM-1, povezane z RGB LED lamp kroglice (glej sliko 2.2). Ampak bi moral
14 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

upoštevajte, da to ni edini način za sestavljanje pametne luči. Zasnova strojne opreme projekta v tej knjigi vsebuje samo brezžični modul (z vgrajenim ESP32-C3), ne pa tudi celotne zasnove strojne opreme pametne luči. Poleg tega Espressif izdeluje tudi avdio razvojno ploščo ESP32C3-Lyra na osnovi ESP32-C3 za krmiljenje luči z zvokom. Plošča ima vmesnike za mikrofone in zvočnike ter lahko krmili LED trakove. Uporablja se lahko za razvoj izjemno poceni, visoko zmogljivih avdio oddajnikov in ritmičnih svetlobnih trakov. Slika 2.3 prikazuje ploščo ESP32-C3Lyra, povezano s trakom 40 LED lučk.
Slika 2.3. ESP32-C3-Lyra, povezana s trakom 40 LED lučk
Pametni telefoni (Android/iOS) Projekt Smart Light vključuje razvoj aplikacije za pametne telefone za nastavitev in nadzor izdelkov pametne luči.
Usmerjevalniki Wi-Fi Usmerjevalniki Wi-Fi pretvarjajo signale žičnih omrežij in signale mobilnih omrežij v signale brezžičnega omrežja, da se računalniki, pametni telefoni, tablični računalniki in druge brezžične naprave povežejo z omrežjem. Na primerample, širokopasovni dostop doma mora biti povezan le z usmerjevalnikom Wi-Fi, da se doseže brezžično povezovanje naprav Wi-Fi v omrežje. Glavni standard protokola, ki ga podpirajo usmerjevalniki Wi-Fi, je IEEE 802.11n s povprečno hitrostjo TxRate 300 Mbps ali največ 600 Mbps. So nazaj združljivi z IEEE 802.11b in IEEE 802.11g. Čip ESP32-C3 podjetja Espressif podpira IEEE 802.11b/g/n, tako da lahko izberete enopasovni (2.4 GHz) ali dvopasovni (2.4 GHz in 5 GHz) Wi-Fi usmerjevalnik.
Računalnik (Linux/macOS/Windows) Razvojno okolje bo predstavljeno v 4. poglavju. 2. poglavje: Uvod in praksa projektov IoT 15

2.2.4 Razvojni proces
Slika 2.4. Koraki razvoja projekta Smart Light
Zasnova strojne opreme Zasnova strojne opreme naprav IoT je bistvena za projekt IoT. Celoten projekt pametne luči je namenjen proizvodnji alamp delo pod omrežnim napajanjem. Različni proizvajalci proizvajajo lampimajo različne sloge in vrste gonilnikov, vendar imajo njihovi brezžični moduli običajno enako funkcijo. Da bi poenostavili razvojni proces projekta Smart Ligh, ta knjiga pokriva le načrtovanje strojne opreme in razvoj programske opreme brezžičnih modulov.
Konfiguracija platforme v oblaku IoT Če želite uporabljati platforme v oblaku IoT, morate konfigurirati projekte v ozadju, kot je ustvarjanje izdelkov, ustvarjanje naprav, nastavitev lastnosti naprav itd.
Razvoj vgrajene programske opreme za naprave IoT Implementirajte pričakovane funkcije z ESP-IDF, Espressifovim SDK-jem na strani naprave, vključno s povezovanjem s platformami v oblaku IoT, razvojem gonilnikov LED in nadgradnjo vdelane programske opreme.
Razvoj aplikacij za pametne telefone Razvijte aplikacije za pametne telefone za sisteme Android in iOS za realizacijo registracije in prijave uporabnikov, nadzor naprave in druge funkcije.
Optimizacija naprav IoT Ko je osnovni razvoj funkcij naprav IoT zaključen, se lahko obrnete na naloge optimizacije, kot je optimizacija porabe energije.
Testiranje množične proizvodnje Izvedite teste množične proizvodnje v skladu s povezanimi standardi, kot so preskus delovanja opreme, preskus staranja, RF test itd.
Kljub zgoraj navedenim korakom projekt Smart Light ni nujno predmet takega postopka, saj se lahko hkrati izvajajo tudi različne naloge. Na primerample, je mogoče vdelano programsko opremo in aplikacije za pametne telefone razvijati vzporedno. Nekatere korake bo morda treba ponoviti, na primer optimizacijo naprave IoT in testiranje množične proizvodnje.
16 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

2.3 Povzetek
V tem poglavju smo najprej razložili osnovne komponente in funkcionalne module projekta IoT, nato pa predstavili primer Smart Light za prakso, pri čemer smo se sklicevali na njegovo strukturo, funkcije, pripravo strojne opreme in razvojni proces. Bralci lahko potegnejo sklepe iz prakse in postanejo samozavestni, da bodo v prihodnosti izvajali projekte IoT z najmanj napakami.
Poglavje 2. Uvod in praksa projektov IoT 17

18 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

3. poglavje

Uvod

do

ESP

RainMaker

Internet stvari (IoT) ponuja neskončne možnosti za spreminjanje načina življenja ljudi, vendar je razvoj inženiringa IoT poln izzivov. Z javnimi oblaki lahko proizvajalci terminalov implementirajo funkcionalnost izdelka prek naslednjih rešitev:
Temelji na oblačnih platformah ponudnikov rešitev. Na ta način morajo proizvajalci terminalov samo oblikovati strojno opremo izdelka, nato povezati strojno opremo z oblakom s pomočjo priloženega komunikacijskega modula in konfigurirati funkcije izdelka v skladu s smernicami. To je učinkovit pristop, saj odpravlja potrebo po razvoju in delovanju ter vzdrževanju na strani strežnika in aplikacije (O&M). Proizvajalcem terminalov omogoča, da se osredotočijo na načrtovanje strojne opreme, ne da bi morali upoštevati implementacijo v oblaku. Vendar takšne rešitve (npr. vdelana programska oprema naprave in aplikacija) na splošno niso odprtokodne, zato bodo funkcije izdelka omejene s platformo v oblaku ponudnika, ki je ni mogoče prilagoditi. Oblačni platformi pripadajo tudi podatki o uporabnikih in napravah.
Temelji na izdelkih v oblaku. V tej rešitvi morajo proizvajalci terminalov po končani zasnovi strojne opreme ne samo implementirati funkcije v oblaku z uporabo enega ali več izdelkov v oblaku, ki jih zagotavlja javni oblak, temveč morajo strojno opremo tudi povezati z oblakom. Na primerample, da se povežete z Amazonom Web Storitve (AWS), proizvajalci terminalov morajo uporabljati izdelke AWS, kot so Amazon API Gateway, AWS IoT Core in AWS Lambda, da omogočijo dostop do naprave, daljinski nadzor, shranjevanje podatkov, upravljanje uporabnikov in druge osnovne funkcije. Od proizvajalcev terminalov ne zahteva le prožne uporabe in konfiguracije izdelkov v oblaku s poglobljenim razumevanjem in bogatimi izkušnjami, ampak tudi od njih zahteva, da upoštevajo stroške gradnje in vzdrževanja za začetne in poznejše stagTo predstavlja velik izziv za energijo in vire podjetja.
V primerjavi z javnimi oblaki so zasebni oblaki običajno zgrajeni za posebne projekte in izdelke. Razvijalcem zasebnih oblakov je dana najvišja stopnja svobode pri oblikovanju protokola in implementaciji poslovne logike. Proizvajalci terminalov lahko poljubno izdelujejo izdelke in načrtovalske sheme ter enostavno integrirajo in opolnomočijo uporabniške podatke. Združuje visoko varnost, razširljivost in zanesljivost javnega oblaka z advantagzasebnega oblaka je Espressif predstavil ESP
19

RainMaker, globoko integrirana rešitev zasebnega oblaka, ki temelji na oblaku Amazon. Uporabniki lahko namestijo ESP RainMaker in zgradijo zasebni oblak preprosto z računom AWS.
3.1 Kaj je ESP RainMaker?
ESP RainMaker je popolna platforma AIoT, zgrajena z več zrelimi izdelki AWS. Zagotavlja različne storitve, potrebne za množično proizvodnjo, kot so dostop do oblaka naprave, nadgradnja naprave, upravljanje zaledja, prijava tretjih oseb, glasovna integracija in upravljanje uporabnikov. Z uporabo strežniškega skladišča aplikacij (SAR), ki ga zagotavlja AWS, lahko proizvajalci terminalov hitro namestijo ESP RainMaker v svoje račune AWS, kar je časovno učinkovito in enostavno za upravljanje. SAR, ki ga upravlja in vzdržuje Espressif, uporablja ESP RainMaker, pomaga razvijalcem zmanjšati stroške vzdrževanja v oblaku in pospeši razvoj izdelkov AIoT ter tako gradi varne, stabilne in prilagodljive rešitve AIoT. Slika 3.1 prikazuje arhitekturo ESP RainMaker.
Slika 3.1. Arhitektura ESP RainMaker
Javni strežnik ESP RainMaker proizvajalca Espressif je brezplačen za vse navdušence nad ESP, izdelovalce in učitelje za oceno rešitev. Razvijalci se lahko prijavijo z računi Apple, Google ali GitHub in hitro sestavijo lastne prototipe aplikacij IoT. Javni strežnik združuje Alexa in Google Home ter zagotavlja storitve glasovnega nadzora, ki jih podpirata Alexa Skill in Google Actions. Njegovo funkcijo semantičnega prepoznavanja poganjajo tudi tretje osebe. Naprave RainMaker IoT se odzivajo samo na določena dejanja. Za izčrpen seznam podprtih glasovnih ukazov preverite platforme tretjih oseb. Poleg tega Espressif ponuja javno aplikacijo RainMaker, s katero lahko uporabniki upravljajo izdelke prek pametnih telefonov. 20 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

3.2 Implementacija ESP RainMaker
Kot je prikazano na sliki 3.2, je ESP RainMaker sestavljen iz štirih delov: · Storitev zahtevka, ki napravam RainMaker omogoča dinamično pridobivanje potrdil. · RainMaker Cloud (znan tudi kot zaledje v oblaku), ki zagotavlja storitve, kot so filtriranje sporočil, upravljanje uporabnikov, shranjevanje podatkov in integracije tretjih oseb. · RainMaker Agent, ki napravam RainMaker omogoča povezavo z RainMaker Cloud. · RainMaker Client (RainMaker App ali skripti CLI), za zagotavljanje, ustvarjanje uporabnikov, povezovanje in nadzor naprav itd.
Slika 3.2. Struktura ESP RainMaker
ESP RainMaker ponuja celoten nabor orodij za razvoj izdelkov in množično proizvodnjo, vključno z: RainMaker SDK
RainMaker SDK temelji na ESP-IDF in zagotavlja izvorno kodo agenta na strani naprave in povezane API-je C za razvoj vdelane programske opreme. Razvijalci morajo samo napisati logiko aplikacije, ostalo pa prepustiti ogrodju RainMaker. Za več informacij o API-jih C obiščite https://bookc3.espressif.com/rm/c-api-reference. Aplikacija RainMaker Javna različica aplikacije RainMaker omogoča razvijalcem dokončanje zagotavljanja naprav ter nadzor in poizvedovanje o stanju naprav (npr. izdelkov pametne razsvetljave). Na voljo je v trgovinah z aplikacijami za iOS in Android. Za več podrobnosti glejte 10. poglavje. API-ji REST API-ji REST pomagajo uporabnikom zgraditi lastne aplikacije, podobne aplikaciji RainMaker. Za več informacij obiščite https://swaggerapis.rainmaker.espressif.com/.
Poglavje 3. Uvod v ESP RainMaker 21

API-ji Python CLI, ki temelji na Pythonu in je priložen RainMaker SDK, je na voljo za izvajanje vseh funkcij, podobnih funkcijam pametnega telefona. Za več informacij o API-jih Python obiščite https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI z višjo stopnjo dostopa je na voljo za zasebno uvedbo ESP RainMaker za množično ustvarjanje potrdil naprave.
3.2.1 Storitev reklamacije
Vsa komunikacija med napravami RainMaker in zaledjem v oblaku se izvaja prek MQTT+TLS. V kontekstu ESP RainMaker je »Claiming« postopek, v katerem naprave od storitve Claiming Service pridobijo potrdila za povezavo z zaledjem v oblaku. Upoštevajte, da je Claiming Service uporabna samo za javno storitev RainMaker, medtem ko je treba za zasebno uvajanje potrdila naprave generirati v velikem obsegu prek Admin CLI. ESP RainMaker podpira tri vrste storitve reklamiranja: Samoreklamiranje
Naprava sama pridobi potrdila prek skrivnega ključa, vnaprej programiranega v eFuse, po povezavi z internetom. Zahtevanje na podlagi gostitelja Certifikati se pridobijo od gostitelja razvoja z računom RainMaker. Pomoč pri zahtevku Potrdila se pridobijo prek aplikacij na pametnem telefonu med zagotavljanjem.
3.2.2 Agent RainMaker
Slika 3.3. Struktura RainMaker SDK Primarna funkcija RainMaker Agenta je zagotoviti povezljivost in pomagati aplikacijskemu sloju pri obdelavi podatkov v oblaku navzgor/navzdol. Zgrajen je prek RainMaker SDK 22 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT

in razvit na podlagi preverjenega okvira ESP-IDF z uporabo komponent ESP-IDF, kot so RTOS, NVS in MQTT. Slika 3.3 prikazuje strukturo RainMaker SDK.
RainMaker SDK vključuje dve glavni funkciji.
Povezava
jaz. Sodelovanje s Claiming Service za pridobitev certifikatov naprav.
ii. Povezovanje z zaledjem v oblaku z uporabo varnega protokola MQTT za zagotavljanje povezljivosti na daljavo in izvajanje daljinskega nadzora, poročanja o sporočilih, upravljanja uporabnikov, upravljanja naprav itd. Privzeto uporablja komponento MQTT v ESP-IDF in zagotavlja plast abstrakcije za vmesnik z drugimi skladi protokolov.
iii. Zagotavljanje komponente za zagotavljanje wifi za povezavo in zagotavljanje Wi-Fi, komponente esp https ota za nadgradnje OTA in komponente esp local ctrl za lokalno odkrivanje naprav in povezavo. Vse te cilje je mogoče doseči s preprosto konfiguracijo.
Obdelava podatkov
jaz. Shranjevanje certifikatov naprave, ki jih izda Claiming Service, in podatkov, potrebnih pri izvajanju RainMakerja, privzeto z uporabo vmesnika, ki ga zagotavlja komponenta nvs flash, in zagotavljanje API-jev za razvijalce za neposredno uporabo.
ii. Uporaba mehanizma povratnega klica za obdelavo podatkov v oblaku navzgor/navzdol in samodejno odblokiranje podatkov v aplikacijski plasti za preprosto obdelavo s strani razvijalcev. Na primerampRainMaker SDK ponuja bogate vmesnike za vzpostavitev podatkov TSL (Thing Specification Language), ki so potrebni za definiranje modelov TSL za opisovanje naprav IoT in izvajanje funkcij, kot so časovno merjenje, odštevanje in glasovno upravljanje. Za osnovne interaktivne funkcije, kot je merjenje časa, RainMaker SDK ponuja rešitev brez razvoja, ki jo je mogoče preprosto omogočiti, ko je to potrebno. Nato bo RainMaker Agent neposredno obdelal podatke, jih poslal v oblak prek povezane teme MQTT in posredoval spremembe podatkov v ozadju oblaka prek mehanizma povratnega klica.
3.2.3 Zaledje v oblaku
Zaledje v oblaku je zgrajeno na AWS Serverless Computing in doseženo prek AWS Cognito (sistem za upravljanje identitete), Amazon API Gateway, AWS Lambda (brezstrežniška računalniška storitev), Amazon DynamoDB (podatkovna baza NoSQL), AWS IoT Core (jedro dostopa do IoT, ki omogoča dostop MQTT in filtriranje pravil), Amazon Simple Email Service (enostavna poštna storitev SES), Amazon CloudFront (omrežje za hitro dostavo), Amazon Simple Queue Service (čakalna vrsta sporočil SQS) in Amazon S3 (storitev za shranjevanje v vedrih). Namenjen je optimizaciji razširljivosti in varnosti. Z ESP RainMaker lahko razvijalci upravljajo naprave, ne da bi morali pisati kodo v oblaku. Sporočila, ki jih sporočijo naprave, se pregledno prenašajo v
Poglavje 3. Uvod v ESP RainMaker 23

odjemalci aplikacij ali druge storitve tretjih oseb. Tabela 3.1 prikazuje izdelke in funkcije v oblaku AWS, ki se uporabljajo v zaledju v oblaku, z več izdelki in funkcijami v razvoju.
Tabela 3.1. Izdelki in funkcije v oblaku AWS, ki jih uporablja zaledje v oblaku

Izdelek v oblaku AWS, ki ga uporablja RainMaker

funkcija

AWS Cognito

Upravljanje uporabniških poverilnic in podpora za prijave tretjih oseb

AWS Lambda

Implementacija osnovne poslovne logike zaledja v oblaku

Amazon Timestream Shranjevanje podatkov o časovni vrsti

Amazon DynamoDB Shranjevanje zasebnih podatkov strank

AWS IoT Core

Podpira komunikacijo MQTT

Amazon SES

Nudenje storitev pošiljanja elektronske pošte

Amazon CloudFront Pospeševanje upravljanja zaledja webdostop do spletnega mesta

Amazon SQS

Posredovanje sporočil iz AWS IoT Core

3.2.4 Odjemalec RainMaker
Odjemalci RainMaker, kot sta App in CLI, komunicirajo z zaledjem v oblaku prek API-jev REST. Podrobne informacije in navodila o REST API-jih najdete v dokumentaciji Swagger, ki jo zagotavlja Espressif. Odjemalec mobilne aplikacije RainMaker je na voljo za sisteme iOS in Android. Omogoča zagotavljanje naprav, nadzor in skupno rabo, kot tudi ustvarjanje in omogočanje odštevalnih nalog ter povezovanje s platformami tretjih oseb. Lahko samodejno naloži uporabniški vmesnik in ikone v skladu s konfiguracijo, ki jo sporočijo naprave, in v celoti prikaže TSL naprave.
Na primerample, če je pametna luč zgrajena na osnovi RainMaker SDK exampdatotek, se bosta ikona in uporabniški vmesnik žarnice samodejno naložila, ko bo oskrba končana. Uporabniki lahko spremenijo barvo in svetlost svetlobe prek vmesnika in dosežejo nadzor tretjih oseb tako, da povežejo Alexa Smart Home Skill ali Google Smart Home Actions s svojimi računi ESP RainMaker. Slika 3.4 prikazuje ikono in uporabniški vmesnik, nprampluči žarnice v aplikacijah Alexa, Google Home in ESP RainMaker.

24 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

(a) Nprample – Alexa

(b) Nprample – Googlova domača stran

(c) Nprample – ESP RainMaker
Slika 3.4. Prampdatoteke ikone in uporabniškega vmesnika žarnice v aplikacijah Alexa, Google Home in ESP RainMaker
3.3 Praksa: ključne točke za razvoj z ESP RainMaker
Ko je plast gonilnika naprave dokončana, lahko razvijalci začnejo ustvarjati modele TSL in obdelovati podatke o povezavi navzdol z uporabo API-jev, ki jih zagotavlja RainMaker SDK, ter omogočiti osnovne storitve ESP RainMaker na podlagi definicije in zahtev izdelka.
Poglavje 3. Uvod v ESP RainMaker 25

Razdelek 9.4 te knjige pojasnjuje implementacijo pametne luči LED v RainMakerju. Med odpravljanjem napak lahko razvijalci uporabljajo orodja CLI v RainMaker SDK za komunikacijo s pametno lučjo (ali kličejo API-je REST iz Swaggerja).
Poglavje 10 bo podrobneje opisalo uporabo API-jev REST pri razvoju aplikacij za pametne telefone. OTA nadgradnje pametnih LED luči bodo obravnavane v 11. poglavju. Če so razvijalci omogočili daljinsko spremljanje ESP Insights, bo zaledje za upravljanje ESP RainMaker prikazalo podatke ESP Insights. Podrobnosti bodo predstavljene v 15. poglavju.
ESP RainMaker podpira zasebno uvajanje, ki se od javnega strežnika RainMaker razlikuje na naslednje načine:
Storitev Claiming Za ustvarjanje potrdil v zasebnih uvedbah je potrebna uporaba vmesnika CLI RainMaker Admin namesto Claiming. Pri javnem strežniku morajo razvijalci dobiti skrbniške pravice za izvedbo nadgradnje vdelane programske opreme, vendar je to nezaželeno pri komercialnih uvedbah. Zato ni mogoče zagotoviti niti ločene storitve preverjanja pristnosti za samozahtevanje, niti skrbniških pravic za zatrjevanje, ki ga poganja ali podpira gostitelj.
Telefonske aplikacije Pri zasebnih uvedbah je treba aplikacije konfigurirati in prevesti ločeno, da zagotovite, da sistemi računov niso interoperabilni.
Prijave tretjih oseb in glasovna integracija Razvijalci morajo konfigurirati ločeno prek Googlovih in Appleovih računov razvijalcev, da omogočijo prijave tretjih oseb, kot tudi integracijo Alexa Skill in Google Voice Assistant.
NAMIGI Za podrobnosti o uvajanju v oblak obiščite https://customer.rainmaker.espressif. com. Kar zadeva vdelano programsko opremo, selitev z javnega strežnika na zasebni strežnik zahteva samo zamenjavo potrdil naprave, kar močno izboljša učinkovitost selitve in zmanjša stroške selitve in sekundarnega odpravljanja napak.
3.4 Lastnosti programa ESP RainMaker
Funkcije ESP RainMaker so namenjene predvsem trem vidikom – upravljanju uporabnikov, končnim uporabnikom in skrbnikom. Vse funkcije so podprte v javnih in zasebnih strežnikih, razen če ni navedeno drugače.
3.4.1 Upravljanje uporabnikov
Funkcije za upravljanje uporabnikov omogočajo končnim uporabnikom, da se registrirajo, prijavijo, spremenijo gesla, pridobijo gesla itd.
26 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Registrirajte se in se prijavite Metode registracije in prijave, ki jih podpira RainMaker, vključujejo: · E-poštni ID + Geslo · Telefonsko številko + Geslo · Google Račun · Račun Apple · Račun GitHub (samo javni strežnik) · Račun Amazon (samo zasebni strežnik)
OPOMBA Prijavite se z uporabo Googla/Amazon deli uporabnikov e-poštni naslov z RainMakerjem. Prijavite se z uporabo Apple deli navidezni naslov, ki ga Apple dodeli uporabniku posebej za storitev RainMaker. Račun RainMaker bo samodejno ustvarjen za uporabnike, ki se prvič prijavijo z računom Google, Apple ali Amazon.
Spremeni geslo Velja le za prijave na podlagi e-poštnega ID-ja/telefonske številke. Vse druge aktivne seje bodo po spremembi gesla odjavljene. V skladu z vedenjem AWS Cognito lahko odjavljene seje ostanejo aktivne do 1 ure.
Pridobi geslo Velja samo za prijave na podlagi e-poštnega ID-ja/telefonske številke.
3.4.2 Funkcije končnega uporabnika
Funkcije, ki so na voljo končnim uporabnikom, vključujejo lokalni in daljinski nadzor ter spremljanje, razporejanje, združevanje naprav v skupine, skupno rabo naprav, potisna obvestila in integracije tretjih oseb.
Oddaljeno upravljanje in spremljanje · Konfiguracija poizvedbe, vrednosti parametrov in status povezave za eno ali vse naprave. · Nastavite parametre za eno ali več naprav.
Lokalni nadzor in nadzor Mobilni telefon in naprava morata biti povezana v isto omrežje za lokalni nadzor.
Načrtovanje · Uporabniki vnaprej nastavijo določena dejanja ob določenem času. · Med izvajanjem urnika naprava ne potrebuje internetne povezave. · Enkrat ali ponovitev (z določitvijo dni) za eno ali več naprav.
Združevanje naprav v skupine Podpira večnivojsko abstraktno združevanje Metapodatke skupine je mogoče uporabiti za ustvarjanje strukture domače sobe.
Poglavje 3. Uvod v ESP RainMaker 27

Skupna raba naprav Eno ali več naprav lahko delite z enim ali več uporabniki.
Potisna obvestila Končni uporabniki bodo prejeli potisna obvestila za dogodke, kot so · Dodane/odstranjene nove naprave · Naprava povezana z oblakom · Prekinjena povezava naprave z oblakom · Ustvarjene/sprejete/zavrnjene zahteve za skupno rabo naprave · Opozorilna sporočila, ki jih poročajo naprave
Integracije tretjih oseb Alexa in Google Voice Assistant sta podprti za nadzor naprav RainMaker, vključno z lučmi, stikali, vtičnicami, ventilatorji in temperaturnimi senzorji.
3.4.3 Skrbniške funkcije
Skrbniške funkcije omogočajo skrbnikom, da izvajajo registracijo naprave, združevanje naprav v skupine in nadgradnje OTA ter view statistiko in podatke ESP Insights.
Registracija naprave Ustvarite potrdila naprave in se registrirajte s skrbniškim CLI (samo zasebni strežnik).
Združevanje naprav Ustvarite abstraktne ali strukturirane skupine na podlagi informacij o napravi (samo zasebni strežnik).
Nadgradnje OTA (Over-the-Air) Naložite vdelano programsko opremo glede na različico in model v eno ali več naprav ali skupino Spremljajte, prekličite ali arhivirajte opravila OTA.
View statistika Viewmogoča statistika vključuje: · Registracije naprav (potrdila, ki jih je registriral skrbnik) · Aktivacije naprav (naprava je bila prvič povezana) · Uporabniške račune · Povezava med uporabniki in napravami
View Podatki ESP Insights Viewzmožni podatki ESP Insights vključujejo: · Napake, opozorila in dnevnike po meri · Poročila o zrušitvah in analize · Razloge za ponovni zagon · Meritve, kot je uporaba pomnilnika, RSSI itd. · Meritve in spremenljivke po meri
28 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

3.5 Povzetek
V tem poglavju smo predstavili nekaj ključnih razlik med javno uvedbo RainMaker in zasebno uvedbo. Zasebna rešitev ESP RainMaker, ki jo je lansiral Espressif, je zelo zanesljiva in razširljiva. Vsi čipi serije ESP32 so povezani in prilagojeni AWS, kar močno zniža stroške. Razvijalci se lahko osredotočijo na preverjanje prototipa, ne da bi morali spoznati izdelke v oblaku AWS. Razložili smo tudi izvedbo in funkcije ESP RainMaker ter nekaj ključnih točk za razvoj z uporabo platforme.
Skenirajte za prenos ESP RainMaker za Android Skenirajte za prenos ESP RainMaker za iOS
Poglavje 3. Uvod v ESP RainMaker 29

30 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Poglavje Nastavitev 4 razvojnega okolja
To poglavje se osredotoča na ESP-IDF, uradno ogrodje za razvoj programske opreme za ESP32-C3. Pojasnili bomo, kako nastaviti okolje na različnih operacijskih sistemih, predstavili strukturo projekta in sistem gradnje ESP-IDF ter uporabo povezanih razvojnih orodij. Nato bomo predstavili postopek prevajanja in izvajanja example projekt, hkrati pa nudi podrobno razlago izhodnega dnevnika pri vsakem stage.
4.1 ESP-IDF Konecview
ESP-IDF (Espressif IoT Development Framework) je razvojni okvir IoT na enem mestu, ki ga zagotavlja Espressif Technology. Uporablja C/C++ kot glavni razvojni jezik in podpira navzkrižno prevajanje pod glavnimi operacijskimi sistemi, kot so Linux, Mac in Windows. BivšiampDatotečni programi, vključeni v to knjigo, so razviti z uporabo ESP-IDF, ki ponuja naslednje funkcije: · Gonilnike na ravni sistema SoC. ESP-IDF vključuje gonilnike za ESP32, ESP32-S2, ESP32-C3,
in drugi čipi. Ti gonilniki obsegajo knjižnico periferne nizke ravni (LL), knjižnico plasti abstrakcije strojne opreme (HAL), podporo za RTOS in gonilniško programsko opremo zgornje plasti itd. · Bistvene komponente. ESP-IDF vključuje temeljne komponente, potrebne za razvoj IoT. To vključuje več skladov omrežnih protokolov, kot sta HTTP in MQTT, ogrodje za upravljanje porabe energije z dinamično frekvenčno modulacijo in funkcije, kot sta šifriranje Flash in varen zagon itd. · Razvojna in produkcijska orodja. ESP-IDF nudi običajno uporabljena orodja za gradnjo, flash in razhroščevanje med razvojem in množično proizvodnjo (glejte sliko 4.1), kot je gradbeni sistem, ki temelji na CMake, veriga orodij za navzkrižno prevajanje, ki temelji na GCC, in JTAG orodje za odpravljanje napak, ki temelji na OpenOCD itd. Omeniti velja, da koda ESP-IDF v prvi vrsti ustreza licenci za odprto kodo Apache 2.0. Uporabniki lahko brez omejitev razvijajo osebno ali komercialno programsko opremo ob upoštevanju pogojev odprtokodne licence. Poleg tega so uporabnikom brezplačno podeljene trajne patentne licence, brez obveznosti, da odprejo kakršno koli spremembo izvorne kode.
31

Slika 4.1.

Gradnja, utripanje in odpravljanje napak

orodja za razvoj in množično proizvodnjo

4.1.1 Različice ESP-IDF
Koda ESP-IDF gostuje na GitHubu kot odprtokodni projekt. Trenutno so na voljo tri glavne različice: v3, v4 in v5. Vsaka večja različica običajno vsebuje različne podverzije, kot so v4.2, v4.3 itd. Espressif Systems zagotavlja 30-mesečno podporo za popravke napak in varnostne popravke za vsako izdano podrazličico. Zato se redno objavljajo tudi revizije podverzij, kot so v4.3.1, v4.2.2 itd. Tabela 4.1 prikazuje status podpore za različne različice ESP-IDF za čipe Espressif, pri čemer je prikazano, ali so v predview stage (nudi podporo za predview različice, ki morda nimajo določenih funkcij ali dokumentacije) ali so uradno podprte.

Tabela 4.1. Stanje podpore različnih različic ESP-IDF za čipe Espressif

Serija ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

v4.1 podprt

v4.2 podprto podprto

v4.3 podprto podprto podprto

v4.4 podprto podprto podprto podprto podprto
predview

v5.0 podprto podprto podprto podprto podprto podprto predview

32 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Ponavljanje večjih različic pogosto vključuje prilagoditve strukture ogrodja in posodobitve sistema prevajanja. Na primerample je bila glavna sprememba iz v3.* v v4.* postopna selitev sistema gradnje iz Make v CMake. Po drugi strani pa ponavljanje manjših različic običajno vključuje dodajanje novih funkcij ali podporo za nove čipe.
Pomembno je razlikovati in razumeti razmerje med stabilnimi različicami in vejami GitHub. Različice, označene kot v*.* ali v*.*.*, predstavljajo stabilne različice, ki so opravile popolno interno testiranje Espressifa. Ko so popravljeni, ostanejo koda, veriga orodij in izdajni dokumenti za isto različico nespremenjeni. Vendar pa so veje GitHub (npr. veja release/v4.3) podvržene pogostim objavam kode, pogosto vsakodnevno. Zato se lahko dva delčka kode v isti veji razlikujeta, zaradi česar morajo razvijalci takoj ustrezno posodobiti svojo kodo.
4.1.2 Potek dela ESP-IDF Git
Espressif sledi posebnemu delovnemu toku Git za ESP-IDF, ki je opisan na naslednji način:
· Nove spremembe so narejene na glavni veji, ki služi kot glavna razvojna veja. Različica ESP-IDF na glavni veji vedno nosi -dev tag za navedbo, da je trenutno v razvoju, na primer v4.3-dev. Spremembe na glavni veji bodo najprej ponovneviewizdano in preizkušeno v Espressifovem notranjem repozitoriju, nato pa po končanem avtomatiziranem testiranju potisnjeno na GitHub.
· Ko nova različica zaključi razvoj funkcij na glavni veji in izpolni kriterije za vstop v beta testiranje, preide na novo vejo, kot je izdaja/v4.3. Poleg tega je ta nova podružnica tagged kot različica pred izdajo, na primer v4.3-beta1. Razvijalci se lahko obrnejo na platformo GitHub za dostop do celotnega seznama podružnic in tags za ESP-IDF. Pomembno je vedeti, da ima različica beta (različica pred izdajo) morda še veliko znanih težav. Ker je različica beta podvržena nenehnemu testiranju, so popravki napak dodani tako tej različici kot glavni veji hkrati. Medtem je glavna veja morda že začela razvijati nove funkcije za naslednjo različico. Ko je testiranje skoraj končano, se veji doda oznaka kandidata za izdajo (rc), ki označuje, da gre za potencialnega kandidata za uradno izdajo, kot je v4.3-rc1. Pri tem stage, veja ostaja različica pred izdajo.
· Če niso odkrite ali sporočene večje napake, različica pred izdajo sčasoma prejme oznako glavne različice (npr. v5.0) ali oznako podrazličice (npr. v4.3) in postane uradna različica za izdajo, ki je dokumentirana na strani z opombami ob izdaji. Pozneje so vse napake, ugotovljene v tej različici, popravljene v izdajni veji. Po končanem ročnem testiranju je veji dodeljena oznaka različice popravka napak (npr. v4.3.2), kar se odraža tudi na strani z opombami ob izdaji.
Poglavje 4. Nastavitev razvojnega okolja 33

4.1.3 Izbira primerne različice
Ker je ESP-IDF uradno začel podpirati ESP32-C3 od različice v4.3 in v4.4 v času pisanja te knjige še ni bil uradno izdan, je v tej knjigi uporabljena različica v4.3.2, ki je spremenjena različica od v4.3. Vendar je pomembno vedeti, da bo morda že na voljo različica 4.4 ali novejše, ko boste prebrali to knjigo. Pri izbiri različice priporočamo naslednje:
· Začetne razvijalce je priporočljivo izbrati stabilno različico v4.3 ali njeno revidirano različico, ki je usklajena s prejšnjimample različica, uporabljena v tej knjigi.
· Za namene množične proizvodnje je priporočljiva uporaba najnovejše stabilne različice, da bi izkoristili najsodobnejšo tehnično podporo.
· Če nameravate eksperimentirati z novimi čipi ali raziskati nove funkcije izdelka, uporabite glavno vejo. Najnovejša različica vsebuje vse najnovejše funkcije, vendar ne pozabite, da so lahko prisotne znane ali neznane napake.
· Če stabilna različica, ki se uporablja, ne vključuje želenih novih funkcij in želite čim bolj zmanjšati tveganja, povezana z glavno vejo, razmislite o uporabi ustrezne veje za izdajo, kot je veja za izdajo/v4.4. Epressifov repozitorij GitHub bo najprej ustvaril vejo za izdajo/v4.4 in nato izdal stabilno različico v4.4, ki temelji na specifičnem zgodovinskem posnetku te veje, po zaključku razvoja in testiranja vseh funkcij.
4.1.4 Konecview imenika ESP-IDF SDK
ESP-IDF SDK je sestavljen iz dveh glavnih imenikov: esp-idf in .espressif. Prvi vsebuje izvorno kodo repozitorija ESP-IDF files in prevajalske skripte, medtem ko slednji večinoma shranjuje verige orodij za prevajanje in drugo programsko opremo. Poznavanje teh dveh imenikov bo razvijalcem pomagalo bolje izkoristiti razpoložljive vire in pospešiti razvojni proces. Struktura imenika ESP-IDF je opisana spodaj:
(1) Imenik kode repozitorija ESP-IDF (/esp/esp-idf), kot je prikazano na sliki 4.2.
a. Komponente imenika komponent
Ta osnovni imenik vključuje številne bistvene komponente programske opreme ESP-IDF. Nobene projektne kode ni mogoče prevesti brez zanašanja na komponente v tem imeniku. Vključuje podporo za gonilnik za različne čipe Espressif. Od knjižnice LL in vmesnikov knjižnice HAL za periferne naprave do gonilnika višje ravni in Virtuala File Sistemska (VFS) podpora, razvijalci lahko izberejo ustrezne komponente na različnih ravneh za svoje razvojne potrebe. ESP-IDF podpira tudi več standardnih nizov omrežnih protokolov, kot so TCP/IP, HTTP, MQTT, WebSocket itd. Razvijalci lahko uporabijo znane vmesnike, kot je Socket, za izdelavo omrežnih aplikacij. Komponente zagotavljajo razumljivo
34 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Slika 4.2. Imenik kod repozitorija ESP-IDF
sive funkcionalnosti in jih je mogoče enostavno integrirati v aplikacije, kar razvijalcem omogoča, da se osredotočijo samo na poslovno logiko. Nekatere pogoste komponente vključujejo: · gonilnik: Ta komponenta vsebuje programe gonilnikov za različne naprave Espressif
serije čipov, kot so GPIO, I2C, SPI, UART, LEDC (PWM) itd. Programi perifernih gonilnikov v tej komponenti ponujajo abstraktne vmesnike, neodvisne od čipov. Vsaka periferija ima skupno glavo file (kot je gpio.h), kar odpravlja potrebo po obravnavanju različnih podpornih vprašanj, specifičnih za čip. · esp_wifi: Wi-Fi kot posebna periferija se obravnava kot ločena komponenta. Vključuje več API-jev, kot je inicializacija različnih načinov gonilnika Wi-Fi, konfiguracija parametrov in obdelava dogodkov. Nekatere funkcije te komponente so na voljo v obliki statičnih povezovalnih knjižnic. ESP-IDF nudi tudi obsežno dokumentacijo gonilnika za enostavno uporabo.
Poglavje 4. Nastavitev razvojnega okolja 35

· freertos: Ta komponenta vsebuje celotno kodo FreeRTOS. Poleg celovite podpore za ta operacijski sistem je Espressif svojo podporo razširil tudi na dvojedrne čipe. Za dvojedrne čipe, kot sta ESP32 in ESP32-S3, lahko uporabniki ustvarijo naloge na določenih jedrih.
b. Imenik dokumentov docs
Ta imenik vsebuje razvojne dokumente, povezane z ESP-IDF, vključno z vodnikom za začetek, referenčnim priročnikom za API, razvojnim vodnikom itd.
OPOMBA Potem ko je bila vsebina tega imenika prevedena z avtomatiziranimi orodji, je razporejena na https://docs.espressif.com/projects/esp-idf. Prepričajte se, da ste preklopili cilj dokumenta na ESP32-C3 in izberite določeno različico ESP-IDF.
c. Orodja za skriptno orodje
Ta imenik vsebuje pogosto uporabljena sprednja orodja za prevajanje, kot je idf.py in orodje za nadzorni terminal idf_monitor.py itd. Podimenik cmake vsebuje tudi jedrni skript files sistema prevajanja, ki služi kot osnova za izvajanje pravil prevajanja ESP-IDF. Ko dodajate spremenljivke okolja, se vsebina v imeniku orodij doda spremenljivki okolja sistema, kar omogoča izvajanje idf.py neposredno pod potjo projekta.
d. nprample programski imenik npramples
Ta imenik obsega obsežno zbirko ESP-IDF exampdatoteke, ki prikazujejo uporabo API-jev komponent. Bivšiampdatoteke so organizirane v različne podimenike glede na njihove kategorije:
· začetek: ta podimenik vključuje začetno raven examples, kot sta »zdravo, svet« in »mežik«, ki uporabnikom pomagajo razumeti osnove.
· bluetooth: Najdete Bluetooth povezano npramptukaj, vključno z Bluetooth LE Mesh, Bluetooth LE HID, BluFi in drugimi.
· wifi: Ta podimenik se osredotoča na Wi-Fi exampdatoteke, vključno z osnovnimi programi, kot so Wi-Fi SoftAP, Wi-Fi Station, espnow, kot tudi lastniški komunikacijski protokol npr.amples iz Espressifa. Vključuje tudi več aplikacijskih slojev, nprampdatoteke, ki temeljijo na Wi-Fi, kot so Iperf, Sniffer in Smart Config.
· periferne naprave: Ta obsežen podimenik je nadalje razdeljen na številne podmape, ki temeljijo na imenih perifernih naprav. Vsebuje predvsem periferni gonilnik examples za Espressif čips, z vsakim example z več sub-examples. Na primer, podimenik gpio vključuje dva examples: GPIO in GPIO matrična tipkovnica. Pomembno je omeniti, da niso vsi bivšiampdatoteke v tem imeniku veljajo za ESP32-C3.
36 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Na primerample, bivšiampdatoteke v usb/host so uporabne samo za zunanje naprave s strojno opremo USB Host (kot je ESP32-S3), ESP32-C3 pa te zunanje naprave nima. Sistem prevajanja običajno ponudi pozive pri nastavitvi cilja. README file vsakega bivšegaample navaja podprte čipe. · protokoli: ta podimenik vsebuje nprampdatoteke za različne komunikacijske protokole, vključno z MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, ki pokrivajo širok spekter komunikacijskih protokolov, npr.ampmanj potrebnih za razvoj interneta stvari. · zagotavljanje: Tukaj boste našli zagotavljanje nprampdatoteke za različne metode, kot sta zagotavljanje Wi-Fi in Bluetooth LE. · sistem: Ta podimenik vključuje odpravljanje napak v sistemu nprampdatoteke (npr. sledenje skladu, sledenje med izvajanjem, spremljanje opravil), upravljanje porabe energije nprampdatoteke (npr. različni načini mirovanja, koprocesorji) in nprampdatoteke, povezane s pogostimi sistemskimi komponentami, kot so konzolni terminal, zanka dogodkov in sistemski časovnik. · shranjevanje: v tem podimeniku boste odkrili nprampmanj od vseh file sistemi in mehanizmi za shranjevanje, ki jih podpira ESP-IDF (kot je branje in pisanje bliskavice, kartice SD in drugih medijev za shranjevanje), kot tudi npr.ampdatoteke trajnega pomnilnika (NVS), FatFS, SPIFFS in drugo file sistemske operacije. · varnost: ta podimenik vsebuje npramples, povezanih s šifriranjem flash. (2) Verižni imenik orodja za prevajanje ESP-IDF (/.espressif), kot je prikazano na sliki 4.3.
Slika 4.3. Verižni imenik orodja za prevajanje ESP-IDF
Poglavje 4. Nastavitev razvojnega okolja 37

a. Distribucijski imenik programske opreme dist
Veriga orodij ESP-IDF in druga programska oprema se distribuirajo v obliki stisnjenih paketov. Med postopkom namestitve namestitveno orodje najprej prenese stisnjen paket v imenik dist in ga nato ekstrahira v navedeni imenik. Ko je namestitev končana, lahko vsebino v tem imeniku varno odstranite.
b. Imenik virtualnega okolja Python python env
Različne različice ESP-IDF se zanašajo na posebne različice paketov Python. Namestitev teh paketov neposredno na istega gostitelja lahko povzroči spore med različicami paketov. Za reševanje tega ESP-IDF uporablja virtualna okolja Python za izolacijo različnih različic paketov. S tem mehanizmom lahko razvijalci namestijo več različic ESP-IDF na istega gostitelja in enostavno preklapljajo med njimi z uvozom različnih spremenljivk okolja.
c. Orodja za prevajanje ESP-IDF veriga imenikov
Ta imenik vsebuje predvsem orodja za navzkrižno prevajanje, ki so potrebna za prevajanje projektov ESP-IDF, kot so orodja CMake, orodja za gradnjo Ninja in veriga orodij gcc, ki generira končni izvršljivi program. Poleg tega je v tem imeniku standardna knjižnica jezika C/C++ skupaj z ustrezno glavo files. Če se program sklicuje na sistemsko glavo file všeč #include , bo veriga orodij za prevajanje poiskala stdio.h file znotraj tega imenika.
4.2 Nastavitev razvojnega okolja ESP-IDF
Razvojno okolje ESP-IDF podpira glavne operacijske sisteme, kot so Windows, Linux in macOS. Ta razdelek bo predstavil, kako nastaviti razvojno okolje v vsakem sistemu. Priporočljivo je razvijati ESP32-C3 v sistemu Linux, ki bo podrobneje predstavljen tukaj. Številna navodila so uporabna na različnih platformah zaradi podobnosti razvojnih orodij. Zato je priporočljivo natančno prebrati vsebino tega razdelka.
OPOMBA Lahko se obrnete na spletne dokumente, ki so na voljo na https://bookc3.espressif.com/esp32c3 in vsebujejo ukaze, omenjene v tem razdelku.
4.2.1 Nastavitev razvojnega okolja ESP-IDF v sistemu Linux
Orodja za razvoj in odpravljanje napak GNU, ki so potrebna za razvojno okolje ESP-IDF, so izvirna iz sistema Linux. Poleg tega je terminal ukazne vrstice v Linuxu zmogljiv in uporabniku prijazen, zaradi česar je idealna izbira za razvoj ESP32-C3. Ti lahko
38 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

izberite želeno distribucijo Linuxa, vendar priporočamo uporabo Ubuntuja ali drugih sistemov, ki temeljijo na Debianu. V tem razdelku so navodila za nastavitev razvojnega okolja ESP-IDF v Ubuntu 20.04.
1. Namestite zahtevane pakete
Odprite nov terminal in izvedite naslednji ukaz za namestitev vseh potrebnih paketov. Ukaz bo samodejno preskočil pakete, ki so že nameščeni.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
NAMIGI Za zgornji ukaz morate uporabiti skrbniški račun in geslo. Pri vnosu gesla privzeto ne bodo prikazane nobene informacije. Za nadaljevanje postopka preprosto pritisnite tipko "Enter".
Git je ključno orodje za upravljanje kode v ESP-IDF. Ko uspešno nastavite razvojno okolje, lahko uporabite ukaz git log za view vse spremembe kode od nastanka ESP-IDF. Poleg tega se Git uporablja tudi v ESP-IDF za potrditev informacij o različici, ki je potrebna za namestitev pravilne verige orodij, ki ustreza določenim različicam. Poleg Gita druga pomembna sistemska orodja vključujejo Python. ESP-IDF vključuje številne skripte za avtomatizacijo, napisane v Pythonu. Orodja, kot so CMake, Ninja-build in Ccache, se pogosto uporabljajo v projektih C/C++ in služijo kot privzeta orodja za prevajanje in gradnjo kode v ESP-IDF. libusb-1.0-0 in dfu-util sta glavna gonilnika, ki se uporabljata za serijsko komunikacijo USB in zapisovanje vdelane programske opreme. Ko so programski paketi nameščeni, lahko uporabite apt show ukaz za pridobitev podrobnih opisov vsakega paketa. Na primerample uporabite apt show git za tiskanje opisnih informacij za orodje Git.
V: Kaj storiti, če različica Python ni podprta? O: ESP-IDF v4.3 zahteva različico Python, ki ni nižja od v3.6. Za starejše različice Ubuntuja ročno prenesite in namestite višjo različico Pythona ter nastavite Python3 kot privzeto okolje Python. Podrobna navodila najdete tako, da iščete ključno besedo update-alternatives python.
2. Prenesite kodo repozitorija ESP-IDF
Odprite terminal in ustvarite mapo z imenom esp v domačem imeniku z ukazom mkdir. Če želite, lahko izberete drugo ime za mapo. Za vstop v mapo uporabite ukaz cd.
Poglavje 4. Nastavitev razvojnega okolja 39

$ mkdir -p /esp $ cd /esp
Uporabite ukaz git clone za prenos kode repozitorija ESP-IDF, kot je prikazano spodaj:
$ git clone -b v4.3.2 –rekurzivno https://github.com/espressif/esp-idf.git
V zgornjem ukazu parameter -b v4.3.2 določa različico za prenos (v tem primeru različica 4.3.2). Parameter –recursive zagotavlja, da se vsa podskladišča ESP-IDF prenesejo rekurzivno. Informacije o podrepozitorijih najdete v modulih .gitmodules file.
3. Namestite verigo razvojnega orodja ESP-IDF
Espressif ponuja avtomatiziran skript install.sh za prenos in namestitev verige orodij. Ta skript preveri trenutno različico ESP-IDF in okolje operacijskega sistema ter nato prenese in namesti ustrezno različico paketov orodij Python in verig orodij za prevajanje. Privzeta namestitvena pot za verigo orodij je /.espressif. Vse kar morate storiti je, da se pomaknete do imenika esp-idf in zaženete install.sh.
$ cd /esp/esp-idf $ ./install.sh
Če verigo orodij uspešno namestite, bo terminal prikazal:
Vse opravljeno!
Na tej točki ste uspešno nastavili razvojno okolje ESP-IDF.
4.2.2 Nastavitev razvojnega okolja ESP-IDF v sistemu Windows
1. Prenesite namestitveni program orodij ESP-IDF
NAMIGI Priporočljivo je, da razvojno okolje ESP-IDF nastavite v sistemu Windows 10 ali novejšem. Namestitveni program lahko prenesete s https://dl.espressif.com/dl/esp-idf/. Namestitveni program je tudi odprtokodna programska oprema in njegova izvorna koda je lahko viewizdano na https: //github.com/espressif/idf-installer.
· Spletni namestitveni program za orodja ESP-IDF
Ta namestitveni program je razmeroma majhen, velik približno 4 MB, drugi paketi in koda pa bodo preneseni med postopkom namestitve. NapredektagSpletni namestitveni program je v tem, da je med postopkom namestitve na zahtevo mogoče prenesti programske pakete in kodo, poleg tega pa omogoča tudi namestitev vseh razpoložljivih izdaj ESP-IDF in najnovejše veje kode GitHub (kot je glavna veja) . Slabosttage, da med postopkom namestitve zahteva omrežno povezavo, kar lahko povzroči napako namestitve zaradi težav z omrežjem.
40 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

· Namestitveni program orodij ESP-IDF brez povezave Ta namestitveni program je večji, velik približno 1 GB in vsebuje vse programske pakete in kodo, ki je potrebna za nastavitev okolja. Glavni advantagNamestitveni program brez povezave je, da ga je mogoče uporabljati v računalnikih brez dostopa do interneta in ima na splošno višjo stopnjo uspešnosti namestitve. Upoštevati je treba, da lahko namestitveni program brez povezave namesti samo stabilne izdaje ESP-IDF, označene z v*.* ali v*.*.*.
2. Zaženite namestitveni program ESP-IDF Tools Po prenosu ustrezne različice namestitvenega programa (vzemite ESP-IDF Tools Offline 4.3.2 za npr.ample tukaj), dvokliknite exe file za zagon namestitvenega vmesnika ESP-IDF. V nadaljevanju je prikazano, kako namestiti stabilno različico ESP-IDF v4.3.2 z namestitvenim programom brez povezave.
(1) V vmesniku »Izberi jezik namestitve«, prikazanem na sliki 4.4, s spustnega seznama izberite jezik, ki ga želite uporabiti.
Slika 4.4. Vmesnik »Izberi jezik namestitve« (2) Ko izberete jezik, kliknite »V redu«, da se odpre vmesnik »Licenčne pogodbe«.
(glej sliko 4.5). Ko natančno preberete licenčno pogodbo za namestitev, izberite »Sprejmem pogodbo« in kliknite »Naprej«.
Slika 4.5. Vmesnik »Licenčne pogodbe« Poglavje 4. Nastavitev razvojnega okolja 41

(3) Review konfiguracijo sistema v vmesniku »Preverjanje sistema pred namestitvijo« (glejte sliko 4.6). Preverite različico sistema Windows in informacije o nameščeni protivirusni programski opremi. Kliknite »Naprej«, če so vsi elementi konfiguracije normalni. V nasprotnem primeru lahko kliknete »Celoten dnevnik« za rešitve, ki temeljijo na ključnih elementih.
Slika 4.6. NASVETI vmesnika »Preverjanje sistema pred namestitvijo«.
Za pomoč lahko pošljete dnevnike na https://github.com/espressif/idf-installer/issues. (4) Izberite namestitveni imenik ESP-IDF. Tukaj izberite D:/.espressif, kot je prikazano v
Slika 4.7 in kliknite »Naprej«. Upoštevajte, da je .espressif tukaj skriti imenik. Ko je namestitev končana, lahko view določeno vsebino tega imenika tako, da odprete file upravitelj in prikaz skritih predmetov.
Slika 4.7. Izberite namestitveni imenik ESP-IDF 42 ESP32-C3 Wireless Adventure: Izčrpen vodnik po IoT

(5) Preverite komponente, ki jih je treba namestiti, kot je prikazano na sliki 4.8. Priporočljivo je, da uporabite privzeto možnost, to je dokončanje namestitve in nato kliknite »Naprej«.
Slika 4.8. Izberite komponente, ki jih želite namestiti (6) Potrdite komponente, ki jih želite namestiti, in kliknite »Namesti«, da zaženete samodejno namestitev.
postopek namestitve, kot je prikazano na sliki 4.9. Postopek namestitve lahko traja več deset minut, vrstica napredka postopka namestitve pa je prikazana na sliki 4.10. Prosimo, počakajte potrpežljivo.
Slika 4.9. Priprava na namestitev (7) Ko je namestitev končana, je priporočljivo, da obkljukate »Registracija ESP-IDF
Izvedljive datoteke orodij kot izključitve programa Windows Defender ...«, da preprečite brisanje protivirusne programske opreme files. Če dodate elemente izključitve, lahko tudi preskočite pogoste preglede s protivirusnim programom
Poglavje 4. Nastavitev razvojnega okolja 43

Slika 4.10. Programska oprema vrstice napredka namestitve, ki močno izboljša učinkovitost prevajanja kode v sistemu Windows. Kliknite »Dokončaj«, da dokončate namestitev razvojnega okolja, kot je prikazano na sliki 4.11. Izberete lahko možnost »Zaženi okolje ESP-IDF PowerShell« ali »Zaženi ukazni poziv ESP-IDF«. Zaženite okno za prevajanje neposredno po namestitvi, da zagotovite normalno delovanje razvojnega okolja.
Slika 4.11. Namestitev končana (8) Odprite nameščeno razvojno okolje na seznamu programov (bodisi ESP-IDF 4.3
CMD ali ESP-IDF 4.3 PowerShell terminal, kot je prikazano na sliki 4.12), in spremenljivka okolja ESP-IDF bosta samodejno dodani, ko se izvajata v terminalu. Po tem lahko za operacije uporabite ukaz idf.py. Odprt CMD ESP-IDF 4.3 je prikazan na sliki 4.13. 44 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

Slika 4.12. Nameščeno razvojno okolje
Slika 4.13. ESP-IDF 4.3 CMD
4.2.3 Nastavitev razvojnega okolja ESP-IDF na Macu
Postopek namestitve razvojnega okolja ESP-IDF v sistemu Mac je enak kot v sistemu Linux. Ukaza za prenos kode repozitorija in namestitev verige orodij sta popolnoma enaka. Le ukazi za namestitev paketov odvisnosti so nekoliko drugačni. 1. Namestite pakete odvisnosti Odprite terminal in namestite pip, orodje za upravljanje paketov Python, tako da zaženete naslednji ukaz:
% sudo enostavna namestitev pip
Namestite Homebrew, orodje za upravljanje paketov za macOS, tako da zaženete naslednji ukaz:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
Namestite zahtevane pakete odvisnosti tako, da zaženete naslednji ukaz:
% pripravite python3 namestite cmake ninja ccache dfu-util
2. Prenesite kodo repozitorija ESP-IDF Sledite navodilom v razdelku 4.2.1 za prenos kode repozitorija ESP-IDF. Koraki so enaki kot pri prenosu v sistemu Linux.
Poglavje 4. Nastavitev razvojnega okolja 45

3. Namestite verigo razvojnega orodja ESP-IDF
Sledite navodilom v razdelku 4.2.1 za namestitev verige razvojnih orodij ESP-IDF. Koraki so enaki kot pri namestitvi v sistemu Linux.
4.2.4 Namestitev kode VS
ESP-IDF SDK privzeto ne vključuje orodja za urejanje kode (čeprav najnovejši namestitveni program ESP-IDF za Windows ponuja možnost namestitve ESP-IDF Eclipse). Uporabite lahko katero koli orodje za urejanje besedila po vaši izbiri, da uredite kodo in jo nato prevedete s terminalskimi ukazi.
Eno priljubljenih orodij za urejanje kode je VS Code (Visual Studio Code), ki je brezplačen in s funkcijami bogat urejevalnik kode z uporabniku prijaznim vmesnikom. Ponuja različne plugins ki zagotavljajo funkcije, kot so krmarjenje po kodi, označevanje sintakse, nadzor različic Git in integracija terminala. Poleg tega je Espressif razvil namenski vtičnik, imenovan Espressif IDF za kodo VS, ki poenostavlja konfiguracijo projekta in odpravljanje napak.
Z ukazom kode v terminalu lahko hitro odprete trenutno mapo v VS Code. Lahko pa uporabite bližnjico Ctrl+, da odprete sistemsko privzeto terminalsko konzolo znotraj kode VS.
NAMIGI Priporočljivo je, da za razvoj kode ESP32-C3 uporabite kodo VS. Prenesite in namestite najnovejšo različico VS Code na https://code.visualstudio.com/.
4.2.5 Uvod v razvojna okolja tretjih oseb
Poleg uradnega razvojnega okolja ESP-IDF, ki uporablja predvsem jezik C, ESP32-C3 podpira tudi druge običajne programske jezike in široko paleto razvojnih okolij tretjih oseb. Nekatere pomembne možnosti vključujejo:
Arduino: odprtokodna platforma za strojno in programsko opremo, ki podpira različne mikrokontrolerje, vključno z ESP32-C3.
Uporablja jezik C++ in ponuja poenostavljen in standardiziran API, ki se običajno imenuje jezik Arduino. Arduino se pogosto uporablja pri razvoju prototipov in izobraževalnih kontekstih. Zagotavlja razširljiv programski paket in IDE, ki omogoča enostavno prevajanje in utripanje.
MicroPython: tolmač jezika Python 3, zasnovan za delovanje na platformah vgrajenih mikrokrmilnikov.
S preprostim skriptnim jezikom lahko neposredno dostopa do perifernih virov ESP32-C3 (kot so UART, SPI in I2C) in komunikacijskih funkcij (kot sta Wi-Fi in Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

To poenostavlja interakcijo strojne opreme. MicroPython v kombinaciji z obsežno knjižnico matematičnih operacij Python omogoča implementacijo kompleksnih algoritmov na ESP32-C3, kar olajša razvoj aplikacij, povezanih z AI. Kot skriptni jezik ni potrebe po ponavljajočem prevajanju; možne so spremembe in neposredno izvajanje skriptov.
NodeMCU: tolmač jezika LUA, razvit za čipe serije ESP.
Podpira skoraj vse periferne funkcije čipov ESP in je lažji od MicroPythona. Podobno kot MicroPython tudi NodeMCU uporablja skriptni jezik, kar odpravlja potrebo po ponavljajočem sevajanju.
Poleg tega ESP32-C3 podpira tudi operacijska sistema NuttX in Zephyr. NuttX je operacijski sistem v realnem času, ki nudi vmesnike, združljive s POSIX, kar izboljšuje prenosljivost aplikacij. Zephyr je majhen operacijski sistem v realnem času, posebej zasnovan za aplikacije IoT. Vključuje številne knjižnice programske opreme, potrebne za razvoj IoT, ki se postopoma razvijajo v celovit programski ekosistem.
Ta knjiga ne vsebuje podrobnih navodil za namestitev zgoraj omenjenih razvojnih okolij. Razvojno okolje lahko namestite glede na vaše zahteve, tako da sledite ustrezni dokumentaciji in navodilom.
4.3 Sistem za prevajanje ESP-IDF
4.3.1 Osnovni koncepti prevajalnega sistema
Projekt ESP-IDF je zbirka glavnega programa z vnosno funkcijo in več neodvisnimi funkcionalnimi komponentami. Na primerample, projekt, ki nadzoruje stikala LED, je v glavnem sestavljen iz glavnega vstopnega programa in komponente gonilnika, ki nadzoruje GPIO. Če želite realizirati LED daljinski upravljalnik, morate dodati tudi Wi-Fi, TCP/IP protokolni sklad itd.
Sistem za prevajanje lahko prevede, poveže in ustvari izvršljivo datoteko files (.bin) za kodo prek niza gradbenih pravil. Sistem prevajanja različic ESP-IDF v4.0 in novejših privzeto temelji na CMake, skript za prevajanje CMakeLists.txt pa je mogoče uporabiti za nadzor obnašanja kode pri prevajanju. Poleg podpore osnovni sintaksi CMake sistem za prevajanje ESP-IDF definira tudi nabor privzetih pravil prevajanja in funkcij CMake, skript za prevajanje pa lahko napišete s preprostimi stavki.
4.3.2 Projekt File Struktura
Projekt je mapa, ki vsebuje glavne komponente vstopnega programa, uporabniško določene komponente in filepotrebni za izdelavo izvedljivih aplikacij, kot so skripti za prevajanje, konfiguracija
Poglavje 4. Nastavitev razvojnega okolja 47

files, particijske tabele itd. Projekte je mogoče kopirati in posredovati naprej ter isto izvršljivo file je mogoče prevesti in generirati v strojih z isto različico razvojnega okolja ESP-IDF. Tipičen projekt ESP-IDF file struktura je prikazana na sliki 4.14.
Slika 4.14. Tipičen projekt ESP-IDF file Struktura Ker ESP-IDF podpira več čipov IoT iz Espressifa, vključno s serijami ESP32, ESP32-S, serijami ESP32-C, serijami ESP32-H itd., je treba pred sestavljanjem kode določiti cilj. Cilj je strojna naprava, ki poganja aplikacijski program, in gradbeni cilj sistema za prevajanje. Glede na vaše potrebe lahko določite enega ali več ciljev za svoj projekt. Na primerample z ukazom idf.py set-target esp32c3 lahko nastavite cilj prevajanja na ESP32-C3, med katerim se bodo naložili privzeti parametri in verižna pot orodja za prevajanje za ESP32C3. Po prevajanju je mogoče ustvariti izvršljiv program za ESP32C3. Prav tako lahko znova zaženete ukaz set-target, da nastavite drug cilj, in sistem za prevajanje bo samodejno počistil in znova konfiguriral. Komponente
Komponente v ESP-IDF so modularne in neodvisne kodne enote, ki jih upravlja sistem za prevajanje. Organizirani so kot mape, pri čemer ime mape privzeto predstavlja ime komponente. Vsaka komponenta ima svoj skript za kompilacijo, ki 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT

določa svoje parametre prevajanja in odvisnosti. Med postopkom prevajanja se komponente prevedejo v ločene statične knjižnice (.a files) in sčasoma združeni z drugimi komponentami, da tvorijo aplikacijski program.
ESP-IDF zagotavlja bistvene funkcije, kot so operacijski sistem, gonilniki perifernih naprav in sklad omrežnih protokolov, v obliki komponent. Te komponente so shranjene v imeniku komponent, ki se nahaja znotraj korenskega imenika ESP-IDF. Razvijalcem teh komponent ni treba kopirati v imenik komponent myProject. Namesto tega morajo samo določiti razmerja odvisnosti teh komponent v CMakeLists.txt projekta file z uporabo direktiv REQUIRES ali PRIV_REQUIRES. Sistem za prevajanje bo samodejno poiskal in prevedel zahtevane komponente.
Zato imenik komponent pod myProject ni potreben. Uporablja se le za vključitev nekaterih komponent projekta po meri, ki so lahko knjižnice tretjih oseb ali koda, ki jo določi uporabnik. Poleg tega lahko komponente pridobite iz katerega koli imenika, ki ni ESP-IDF ali trenutnega projekta, na primer iz odprtokodnega projekta, shranjenega v drugem imeniku. V tem primeru morate samo dodati pot komponente tako, da nastavite spremenljivko EXTRA_COMPONENT_DIRS v CMakeLists.txt pod korenskim imenikom. Ta imenik bo preglasil katero koli komponento ESP-IDF z enakim imenom, kar bo zagotovilo uporabo pravilne komponente.
Vstopni program main Glavni imenik znotraj projekta je enak file strukturo kot druge komponente (npr. komponenta1). Ima pa poseben pomen, saj je obvezna komponenta, ki mora obstajati v vsakem projektu. Glavni imenik vsebuje izvorno kodo projekta in vstopno točko uporabniškega programa, ki se običajno imenuje app_main. Privzeto se izvajanje uporabniškega programa začne s te vstopne točke. Glavna komponenta se razlikuje tudi po tem, da je samodejno odvisna od vseh komponent znotraj iskalne poti. Zato ni potrebe po izrecnem navajanju odvisnosti z uporabo direktiv REQUIRES ali PRIV_REQUIRES v CMakeLists.txt file.
Konfiguracija file Korenski imenik projekta vsebuje konfiguracijo file imenovan sdkconfig, ki vsebuje konfiguracijske parametre za vse komponente v projektu. Konfiguracija sdkconfig file samodejno ustvari sistem za prevajanje in ga je mogoče spreminjati in znova generirati z ukazom idf.py menuconfig. Možnosti menuconfig večinoma izvirajo iz Kconfig.projbuild projekta in Kconfig komponent. Razvijalci komponent običajno dodajo konfiguracijske elemente v Kconfig, da naredijo komponento prilagodljivo in nastavljivo.
Imenik gradnje Privzeto imenik gradnje znotraj projekta shranjuje vmesne podatke files in fi-
Poglavje 4. Nastavitev razvojnega okolja 49

končni izvedljivi programi, ustvarjeni z ukazom idf.py build. Na splošno ni potreben neposreden dostop do vsebine gradbenega imenika. ESP-IDF ponuja vnaprej določene ukaze za interakcijo z imenikom, kot je uporaba ukaza idf.py flash za samodejno iskanje prevedenega binarnega zapisa file in ga bliskajte na podani naslov flash ali uporabite ukaz idf.py fullclean za čiščenje celotnega gradbenega imenika.
Particijska tabela (partitions.csv) Vsak projekt zahteva particijsko tabelo za razdelitev prostora flash in podajanje velikosti in začetnega naslova izvršljivega programa in prostora uporabniških podatkov. Ukaz idf.py flash ali program za nadgradnjo OTA bo vdelano programsko opremo prešinil na ustrezen naslov v skladu s to tabelo. ESP-IDF ponuja več privzetih particijskih tabel v komponentah/ partition_table, kot sta partitions_singleapp.csv in partitions_two_ ota.csv, ki ju lahko izberete v meniju menuconfig.
Če privzeta particijska tabela sistema ne more izpolniti zahtev projekta, lahko particije.csv po meri dodate v imenik projekta in izberete v meniju menuconfig.
4.3.3 Privzeta gradbena pravila sistema za prevajanje
Pravila za preglasitev komponent z istim imenom Med postopkom iskanja komponent sledi sistem prevajanja določenemu vrstnemu redu. Najprej išče notranje komponente ESP-IDF, nato išče komponente uporabniškega projekta in nazadnje išče komponente v EXTRA_COMPONENT_DIRS. V primerih, ko več imenikov vsebuje komponente z istim imenom, bo komponenta, najdena v zadnjem imeniku, preglasila vse prejšnje komponente z istim imenom. To pravilo omogoča prilagoditev komponent ESP-IDF znotraj uporabniškega projekta, pri čemer ohrani izvirno kodo ESP-IDF nedotaknjeno.
Pravila za privzeto vključitev skupnih komponent Kot je omenjeno v razdelku 4.3.2, morajo komponente izrecno podati svoje odvisnosti od drugih komponent v CMakeLists.txt. Vendar pa so običajne komponente, kot je freertos, privzeto samodejno vključene v gradbeni sistem, tudi če njihova razmerja odvisnosti niso izrecno definirana v skriptu prevajanja. Skupne komponente ESP-IDF vključujejo freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv in cxx. Z uporabo teh pogostih komponent se izognete ponavljajočemu se delu pri pisanju datoteke CMakeLists.txt in jo naredite bolj jedrnato.
Pravila za preglasitev konfiguracijskih elementov Razvijalci lahko dodajo privzete konfiguracijske parametre tako, da dodajo privzeto konfiguracijo file z imenom sdkconfig.defaults za projekt. Na primerample z dodajanjem CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

DEFAULT_LEVEL_NONE = y lahko vmesnik UART konfigurira tako, da privzeto ne tiska podatkov dnevnika. Nadalje, če je treba za določen cilj nastaviti posebne parametre, konfiguracijo file z imenom sdkconfig.defaults.TARGET_NAME je mogoče dodati, kjer je TARGET_NAME lahko esp32s2, esp32c3 itd. Te konfiguracije fileso uvoženi v sdkconfig med prevajanjem s splošno privzeto konfiguracijo file Najprej se uvozi sdkconfig.defaults, ki mu sledi konfiguracija, specifična za cilj file, kot je sdkconfig.defaults.esp32c3. V primerih, ko obstajajo konfiguracijski elementi z istim imenom, zadnja konfiguracija file bo preglasil prejšnjega.
4.3.4 Uvod v kompilacijski skript
Pri razvoju projekta z uporabo ESP-IDF morajo razvijalci ne le napisati izvorne kode, temveč morajo napisati tudi CMakeLists.txt za projekt in komponente. CMakeLists.txt je besedilo file, znan tudi kot skript za prevajanje, ki definira vrsto objektov prevajanja, postavk konfiguracije prevajanja in ukazov za vodenje postopka prevajanja izvorne kode. Sistem prevajanja ESP-IDF v4.3.2 temelji na CMake. Poleg podpore izvornih funkcij in ukazov CMake definira tudi vrsto funkcij po meri, zaradi česar je pisanje skriptov za prevajanje veliko lažje.
Skripti za prevajanje v ESP-IDF vključujejo predvsem skripte za prevajanje projekta in skripte za prevajanje komponent. CMakeLists.txt v korenskem imeniku projekta se imenuje skript za prevajanje projekta, ki vodi postopek prevajanja celotnega projekta. Osnovni skript za prevajanje projekta običajno vključuje naslednje tri vrstice:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Med njimi mora biti cmake_minimum_required (RAZLIČICA 3.5) postavljen v prvo vrstico, ki se uporablja za navedbo najmanjše številke različice CMake, ki jo zahteva projekt. Novejše različice CMake so na splošno nazaj združljive s starejšimi različicami, zato ustrezno prilagodite številko različice, ko uporabljate novejše ukaze CMake, da zagotovite združljivost.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) uvozi vnaprej določene konfiguracijske elemente in ukaze sistema za prevajanje ESP-IDF, vključno s privzetimi pravili gradnje sistema za prevajanje, opisanimi v razdelku 4.3.3. project(myProject) sam ustvari projekt in poda njegovo ime. To ime bo uporabljeno kot končna izhodna dvojiška datoteka file ime, tj. myProject.elf in myProject.bin.
Projekt ima lahko več komponent, vključno z glavno komponento. Najvišji imenik vsake komponente vsebuje CMakeLists.txt file, ki se imenuje skript za prevajanje komponente. Skripti za prevajanje komponent se večinoma uporabljajo za določanje odvisnosti komponent, konfiguracijskih parametrov, izvorne kode files, in vključeno glavo files za
Poglavje 4. Nastavitev razvojnega okolja 51

kompilacija. S funkcijo po meri idf_component_register ESP-IDF je minimalna zahtevana koda za skript za prevajanje komponente naslednja:

1. idf_component_register(SRCS “src1.c”

2.

INCLUDE_DIRS “vključi”

3.

ZAHTEVA komponento1)

Parameter SRCS nudi seznam virov files v komponenti, ločeni s presledki, če jih je več files. Parameter INCLUDE_DIRS zagotavlja seznam javnih glav file imenikov za komponento, ki bodo dodani v vključeno iskalno pot za druge komponente, ki so odvisne od trenutne komponente. Parameter REQUIRES identificira odvisnosti javne komponente za trenutno komponento. Komponente morajo izrecno navesti, od katerih komponent so odvisne, na primer komponenta2, ki je odvisna od komponente1. Za glavno komponento, ki je privzeto odvisna od vseh komponent, pa lahko parameter REQUIRES izpustite.

Poleg tega je mogoče v skriptu prevajanja uporabiti tudi izvorne ukaze CMake. Na primerample uporabite ukaz set za nastavitev spremenljivk, kot je set(VARIABLE “VALUE”).

4.3.5 Uvod v pogoste ukaze
ESP-IDF uporablja CMake (orodje za konfiguracijo projekta), Ninja (orodje za gradnjo projekta) in esptool (orodje za flash) v procesu prevajanja kode. Vsako orodje igra drugačno vlogo v procesu prevajanja, gradnje in flasha ter podpira tudi različne operacijske ukaze. Za olajšanje uporabniškega delovanja ESP-IDF doda poenoten sprednji del idf.py, ki omogoča hiter klic zgornjih ukazov.
Pred uporabo idf.py se prepričajte, da:
· Spremenljivka okolja IDF_PATH ESP-IDF je bila dodana trenutnemu terminalu. · Imenik za izvajanje ukazov je korenski imenik projekta, ki vključuje
skript za prevajanje projekta CMakeLists.txt.
Pogosti ukazi idf.py so naslednji:
· idf.py –pomoč: prikaz seznama ukazov in navodil za njihovo uporabo. · idf.py set-target : nastavitev kompilacije taidf.py fullcleanrget, npr
kot zamenjava z esp32c3. · idf.py menuconfig: zagon menuconfig, terminalske grafične konfiguracije
orodje, ki lahko izbere ali spremeni konfiguracijske možnosti, rezultati konfiguracije pa se shranijo v sdkconfig file. · idf.py build: začetek prevajanja kode. Vmesni files in končni izvršljivi program, ustvarjen s kompilacijo, bo privzeto shranjen v imeniku gradnje projekta. Postopek prevajanja je postopen, kar pomeni, da če le en vir file je spremenjeno, samo spremenjeno file bo sestavljen naslednjič.

52 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

· idf.py clean: čiščenje vmesnega files, ki jih ustvari kompilacija projekta. Celoten projekt bo prisiljen prevesti v naslednji kompilaciji. Upoštevajte, da konfiguracija CMake in spremembe konfiguracije, ki jih naredi menuconfig, med čiščenjem ne bodo izbrisane.
· idf.py fullclean: brisanje celotnega gradbenega imenika, vključno z vsemi konfiguracijskimi izhodi CMake files. Pri ponovni gradnji projekta bo CMake konfiguriral projekt od začetka. Upoštevajte, da bo ta ukaz rekurzivno izbrisal vse files v imeniku gradnje, zato ga uporabljajte previdno, in konfiguracijo projekta file ne bodo izbrisani.
· idf.py flash: utripanje binarne datoteke izvedljivega programa file ustvarjen z gradnjo cilja ESP32-C3. Možnosti -p in -b se uporabljajo za nastavitev imena naprave serijskih vrat oziroma hitrosti prenosa za utripanje. Če ti dve možnosti nista podani, bodo serijska vrata samodejno zaznana in uporabljena bo privzeta hitrost prenosa.
· monitor idf.py: prikazuje izhod serijskih vrat ciljnega ESP32-C3. Možnost -p lahko uporabite za podajanje imena naprave serijskih vrat na strani gostitelja. Med tiskanjem serijskih vrat pritisnite kombinacijo tipk Ctrl+] za izhod iz monitorja.
Zgornje ukaze lahko po potrebi tudi kombinirate. Na primerample, bo ukaz idf.py build flash monitor izvedel prevajanje kode, flash in zaporedoma odprl nadzornik serijskih vrat.
Če želite izvedeti več o sistemu prevajanja ESP-IDF, lahko obiščete https://bookc3.espressif.com/build-system.
4.4 Praksa: Sestavljanje Exampprogram "Blink"
4.4.1 Prample Analiza
Ta razdelek bo program Blink vzel kot primerample za analizo file podrobna struktura in pravila kodiranja pravega projekta. Program Blink izvaja efekt utripanja LED, projekt pa se nahaja v imeniku examples/get-started/blink, ki vsebuje vir file, konfiguracija files in več skriptov za prevajanje.
Projekt pametne luči, predstavljen v tej knjigi, temelji na tem primeruample program. Funkcije bodo postopoma dodane v kasnejših poglavjih, da se končno dokonča.
Izvorna koda Da bi prikazali celoten razvojni proces, je bil program Blink kopiran v esp32c3-iot-projects/device firmware/1 blink.
Imeniška struktura projekta blink files je prikazan na sliki 4.15.
Projekt blink vsebuje samo en glavni imenik, ki je posebna komponenta, ki
Poglavje 4. Nastavitev razvojnega okolja 53

Slika 4.15. File struktura imenikov projekta blink

morajo biti vključeni, kot je opisano v razdelku 4.3.2. Glavni imenik se v glavnem uporablja za shranjevanje izvedbe funkcije app_main(), ki je vstopna točka v uporabniški program. Projekt blink ne vključuje imenika komponent, ker ta pr.ample mora uporabljati samo komponente, ki so priložene ESP-IDF, in ne potrebuje dodatnih komponent. CMakeLists.txt, vključen v projekt blink, se uporablja za vodenje postopka prevajanja, medtem ko se Kconfig.projbuild uporablja za dodajanje konfiguracijskih elementov za ta exampda v meniju menuconfig. Drugo nepotrebno files ne bodo vplivali na prevajanje kode, zato o njih tukaj ne bomo razpravljali. Podroben uvod v projekt blink files je naslednji.

1. /*blink.c vključuje naslednjo glavo files*/

2. #vključi

//Standardna glava knjižnice C file

3. #include “freertos/freeRTOS.h” //Glavna glava FreeRTOS file

4. #include “freertos/task.h”

//Glava opravila FreeRTOS file

5. #include “sdkconfig.h”

//Glava konfiguracije file generira kconfig

6. #include “driver/gpio.h”

//Glava gonilnika GPIO file

Vir file blink.c vsebuje niz glav files ustreza deklaraciji funkcije

cij. ESP-IDF na splošno sledi vrstnemu redu vključitve standardne glave knjižnice files, FreeR-

glava TOS files, glava voznika files, glava druge komponente files in glavo projekta files.

Vrstni red, v katerem glava filevključeni lahko vplivajo na končni rezultat prevajanja, zato poskusite

upoštevajte privzeta pravila. Upoštevati je treba, da je sdkconfig.h samodejno ustvarjen

s kconfig in ga je mogoče konfigurirati samo z ukazom idf.py menuconfig.

Neposredna sprememba te glave file bo prepisana.

1. /*Izberete lahko GPIO, ki ustreza LED v idf.py menuconfig, in rezultat spremembe menuconfig je, da je vrednost CONFIG_BLINK

_GPIO bo spremenjen. Prav tako lahko neposredno spremenite definicijo makra

tukaj in spremenite CONFIG_BLINK_GPIO na fiksno vrednost.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main(void)

4. {

5.

/*Konfigurirajte IO kot privzeto funkcijo GPIO, omogočite vlečni način in

6.

onemogoči vhodne in izhodne načine*/

7.

gpio_reset_pin(BLINK_GPIO);

54 ESP32-C3 Wireless Adventure: Celovit vodnik po IoT

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }

/*Nastavi GPIO na izhodni način*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); medtem ko(1) {
/*Natisni dnevnik*/ printf(“Izklop LEDn”); /*Izklopi LED (nizka izhodna raven)*/ gpio_set_level(BLINK_GPIO, 0); /*Zakasnitev (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“Vklop LEDn”); /*Vklopi LED (izhod visoka raven)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

Funkcija app_main() v Blink example program služi kot vstopna točka za uporabniške programe. Je preprosta funkcija brez parametrov in vrnjene vrednosti. Ta funkcija se pokliče po zaključku inicializacije sistema, ki vključuje naloge, kot so inicializacija serijskih vrat dnevnika, konfiguracija enega/dvojedra in konfiguracija čuvaja.

Funkcija app_main() se izvaja v kontekstu naloge z imenom main. Velikost sklada in prioriteto te naloge je mogoče prilagoditi v menuconfig Componentconfig Common ESP-related.

Za preproste naloge, kot je utripanje LED, lahko vso potrebno kodo implementirate neposredno v funkcijo app_main(). To običajno vključuje inicializacijo GPIO, ki ustreza LED, in uporabo zanke while(1) za vklop in izklop LED. Lahko pa uporabite API FreeRTOS, da ustvarite novo nalogo, ki obravnava utripanje LED. Ko je novo opravilo uspešno ustvarjeno, lahko zapustite funkcijo app_main().

Vsebina datoteke main/CMakeLists.txt file, ki vodi postopek prevajanja za glavno komponento, je naslednji:

1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )

Med njimi main/CMakeLists.txt kliče samo eno sistemsko funkcijo prevajanja, to je idf_component_register. Podobno kot CMakeLists.txt za večino drugih komponent je blink.c dodan v SRCS in vir filedodani v SRCS bodo prevedeni. Hkrati je treba ».«, ki predstavlja pot, kjer se nahaja CMakeLists.txt, dodati v INCLUDE_DIRS kot iskalne imenike za glavo files. Vsebina CMakeLists.txt je naslednja:
1. #Navedite v3.5 kot najstarejšo različico CMake, ki jo podpira trenutni projekt 2. #Različice, nižje od v3.5, je treba nadgraditi pred nadaljevanjem prevajanja 3. cmake_minimum_required(RAZLIČICA 3.5) 4. #Vključite privzeto konfiguracijo CMake za ESP -IDF kompilacijski sistem

Poglavje 4. Nastavitev razvojnega okolja 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Ustvarite projekt z imenom “blink” 7. project(myProject)
Med njimi CMakeLists.txt v korenskem imeniku vključuje predvsem $ENV{IDF_ PATH}/tools/cmake/project.cmake, ki je glavna konfiguracija CMake file zagotavlja ESP-IDF. Uporablja se za con

Dokumenti / Viri

Brezžična avantura Espressif Systems ESP32-C3 [pdf] Uporabniški priročnik
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

Reference

Pustite komentar

Vaš elektronski naslov ne bo objavljen. Obvezna polja so označena *