ESP32-C3 bežična avantura
ESP32-C3 bežična avantura
Sveobuhvatni vodič za IoT
Espressif Systems 12. lipnja 2023
Tehnički podaci
- Proizvod: ESP32-C3 Wireless Adventure
- Proizvođač: Espressif Systems
- Datum: 12. lipnja 2023
Upute za uporabu proizvoda
Priprema
Prije korištenja ESP32-C3 Wireless Adventure, provjerite jeste li
upoznati s konceptima i arhitekturom IoT-a. Ovo će pomoći
razumijete kako se uređaj uklapa u veći IoT ekosustav
i njegove potencijalne primjene u pametnim kućama.
Uvod i praksa IoT projekata
U ovom odjeljku naučit ćete o tipičnim IoT projektima,
uključujući osnovne module za uobičajene IoT uređaje, osnovne module
klijentskih aplikacija i uobičajenih IoT platformi u oblaku. Ovo će
pružiti vam temelj za razumijevanje i stvaranje vašeg
vlastite IoT projekte.
Praksa: Projekt pametnog svjetla
U ovom praktičnom projektu naučit ćete kako stvoriti smart
svjetlo pomoću ESP32-C3 Wireless Adventure. Struktura projekta,
funkcije, priprema hardvera i proces razvoja bit će
detaljno objašnjeno.
Struktura projekta
Projekt se sastoji od nekoliko komponenti, uključujući
ESP32-C3 Wireless Adventure, LED diode, senzori i oblak
pozadina.
Projektne funkcije
Projekt pametnog svjetla omogućuje vam kontrolu svjetline i
boju LED dioda na daljinu putem mobilne aplikacije ili web
sučelje.
Priprema hardvera
Da biste se pripremili za projekt, morat ćete prikupiti
potrebne hardverske komponente, kao što je ESP32-C3 Wireless
Pustolovna ploča, LED diode, otpornici i napajanje.
Razvojni proces
Proces razvoja uključuje postavljanje razvoja
okruženje, pisanje koda za kontrolu LED dioda, povezivanje s
cloud backend, te testiranje funkcionalnosti smarta
svjetlo.
Uvod u ESP RainMaker
ESP RainMaker moćan je okvir za razvoj IoT-a
uređaja. U ovom odjeljku naučit ćete što je ESP RainMaker i
kako se može implementirati u vaše projekte.
Što je ESP RainMaker?
ESP RainMaker je platforma temeljena na oblaku koja pruža skup
alate i usluge za izgradnju i upravljanje IoT uređajima.
Implementacija ESP RainMaker-a
Ovaj odjeljak objašnjava različite komponente uključene u
implementacija ESP RainMaker-a, uključujući uslugu podnošenja zahtjeva,
RainMaker Agent, pozadina u oblaku i RainMaker klijent.
Praksa: Ključne točke za razvoj uz ESP RainMaker
U ovom dijelu prakse naučit ćete o ključnim točkama
uzeti u obzir pri razvoju s ESP RainMaker. Ovo uključuje uređaj
polaganje prava, sinkronizacija podataka i upravljanje korisnicima.
Značajke ESP RainMaker-a
ESP RainMaker nudi različite značajke za upravljanje korisnicima
korisnicima i administratorima. Ove značajke omogućuju jednostavan uređaj
postavljanje, daljinsko upravljanje i nadzor.
Postavljanje razvojnog okruženja
Ovaj odjeljak pruža overview ESP-IDF (Espressif IoT
Development Framework), koji je službeni razvojni okvir
za uređaje temeljene na ESP32. Objašnjava različite verzije
ESP-IDF i kako postaviti razvojno okruženje.
Razvoj hardvera i upravljačkih programa
Dizajn hardvera pametnih svjetlosnih proizvoda temeljenih na ESP32-C3
Ovaj se odjeljak fokusira na hardverski dizajn pametnog svjetla
proizvodi temeljeni na ESP32-C3 Wireless Adventure. Pokriva
značajke i sastav pametnih svjetlosnih proizvoda, kao i
hardverski dizajn jezgrenog sustava ESP32-C3.
Značajke i sastav Smart Light proizvoda
Ovaj pododjeljak objašnjava značajke i komponente koje čine
pametne svjetlosne proizvode. Razgovara o različitim funkcionalnostima
i razmatranja dizajna za stvaranje pametnih svjetala.
Hardverski dizajn jezgrenog sustava ESP32-C3
Hardverski dizajn jezgrenog sustava ESP32-C3 uključuje napajanje
napajanje, redoslijed uključivanja, resetiranje sustava, SPI flash, izvor takta,
i razmatranja RF i antene. Ovaj pododjeljak pruža
detaljne informacije o ovim aspektima.
FAQ
P: Što je ESP RainMaker?
O: ESP RainMaker je platforma temeljena na oblaku koja pruža alate
i usluge za izgradnju i upravljanje IoT uređajima. Pojednostavljuje
proces razvoja i omogućuje jednostavno postavljanje uređaja, daljinski
kontrolu i praćenje.
P: Kako mogu postaviti razvojno okruženje za
ESP32-C3?
O: Da biste postavili razvojno okruženje za ESP32-C3, trebate
instalirati ESP-IDF (Espressif IoT Development Framework) i
konfigurirajte ga prema priloženim uputama. ESP-IDF je
službeni razvojni okvir za uređaje temeljene na ESP32.
P: Koje su značajke ESP RainMaker-a?
O: ESP RainMaker nudi različite značajke, uključujući korisničke
upravljanje, značajke krajnjeg korisnika i značajke administratora. Upravljanje korisnicima
omogućuje jednostavno preuzimanje uređaja i sinkronizaciju podataka. Krajnji korisnik
značajke omogućuju daljinsko upravljanje uređajima putem mobilne aplikacije ili
web sučelje. Administratorske značajke pružaju alate za nadzor uređaja
i upravljanje.
ESP32-C3 bežična avantura
Sveobuhvatni vodič za IoT
Espressif Systems 12. lipnja 2023
Sadržaj
I Priprema
1
1 Uvod u IoT
3
1.1 Arhitektura IoT-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Primjena IoT-a u pametnim domovima . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Uvod i praksa IoT projekata
9
2.1 Uvod u tipične IoT projekte . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Osnovni moduli za uobičajene IoT uređaje . . . . . . . . . . . . . . . . . 9
2.1.2 Osnovni moduli klijentskih aplikacija . . . . . . . . . . . . . . . . . . . 10
2.1.3 Uvod u uobičajene IoT Cloud platforme . . . . . . . . . . . . . . 11
2.2 Praksa: Projekt pametnog svjetla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Struktura projekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Projektne funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Priprema hardvera . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Razvojni proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Uvod u ESP RainMaker
19
3.1 Što je ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Implementacija ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Usluga podnošenja zahtjeva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 RainMaker agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 RainMaker klijent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Praksa: Ključne točke za razvoj s ESP RainMaker . . . . . . . . . . . . 25
3.4 Značajke ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Upravljanje korisnicima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Značajke krajnjeg korisnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Administratorske značajke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Postavljanje razvojnog okruženja
31
4.1 ESP-IDF višeview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 ESP-IDF verzije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 Tijek rada ESP-IDF Git . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Odabir prikladne verzije . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Krajview imenika ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 Postavljanje ESP-IDF razvojnog okruženja . . . . . . . . . . . . . . . . . 38 4.2.1 Postavljanje ESP-IDF razvojnog okruženja na Linuxu . . . . . . . . 38 4.2.2 Postavljanje ESP-IDF razvojnog okruženja na Windows . . . . . . 40 4.2.3 Postavljanje ESP-IDF razvojnog okruženja na Macu . . . . . . . . . 45 4.2.4 Instaliranje VS koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Uvod u razvojna okruženja trećih strana . . . . . . . . 46 4.3 ESP-IDF sustav kompilacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Osnovni koncepti sustava kompilacije . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Struktura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Zadana pravila izgradnje sustava kompilacije . . . . . . . . . . . . . 50 4.3.4 Uvod u skriptu kompilacije . . . . . . . . . . . . . . . . . . 51 4.3.5 Uvod u uobičajene naredbe . . . . . . . . . . . . . . . . . . . 52 4.4 Vježbanje: Sastavljanje prample Program “Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Nprample Analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Prevođenje Blink programa . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Treperenje Blink programa . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analiza dnevnika serijskog porta programa Blink . . . . . . . . . . . . . . 60 4.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Razvoj hardvera i upravljačkih programa
65
5 Dizajn hardvera pametnih svjetlosnih proizvoda temeljenih na ESP32-C3
67
5.1 Značajke i sastav Smart Light proizvoda . . . . . . . . . . . . . . . 67
5.2 Dizajn hardvera jezgrenog sustava ESP32-C3 . . . . . . . . . . . . . . . . . . . 70
5.2.1 Napajanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Redoslijed uključivanja i resetiranje sustava . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Izvor takta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF i antena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Igle za vezivanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO i PWM kontroler . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Praksa: Izgradnja sustava pametnog svjetla s ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Odabir modula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Konfiguriranje GPIO-a PWM signala . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Preuzimanje firmvera i sučelje za otklanjanje pogrešaka . . . . . . . . . . . . 82
5.3.4 Smjernice za RF dizajn . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Smjernice za dizajn napajanja . . . . . . . . . . . . . . . . . . . 86 5.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Razvoj pokretača
87
6.1 Proces razvoja upravljačkog programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 periferne aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Osnove upravljačkog programa za LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Prostori boja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED upravljački program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 LED zatamnjenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Uvod u PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Razvoj upravljačkog programa za prigušivanje LED . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Neisparljiva pohrana (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM kontroler (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Vježba: Dodavanje upravljačkih programa projektu Smart Light . . . . . . . . . . . . . . . . . 103
6.5.1 Upravljački program gumba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Upravljački program za prigušivanje LED dioda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Bežična komunikacija i kontrola
109
7 Wi-Fi konfiguracija i veza
111
7.1 Osnove Wi-Fi-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Uvod u Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evolucija IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Wi-Fi koncepti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Wi-Fi veza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Osnove Bluetootha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Uvod u Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Koncepti Bluetootha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth veza . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Konfiguracija Wi-Fi mreže . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Vodič za konfiguraciju Wi-Fi mreže . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Ostale metode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Wi-Fi programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi komponente u ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Vježba: Wi-Fi veza . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Vježba: pametna Wi-Fi veza . . . . . . . . . . . . . . . . . . . . . 145
7.5 Vježba: Wi-Fi konfiguracija u projektu Smart Light . . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi veza u projektu Smart Light . . . . . . . . . . . . . . . . . 156 7.5.2 Pametna Wi-Fi konfiguracija . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Lokalna kontrola
159
8.1 Uvod u lokalno upravljanje . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Primjena lokalne kontrole . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantaglokalne kontrole. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Otkrivanje kontroliranih uređaja putem pametnih telefona . . . . . . . . . . 161
8.1.4 Podatkovna komunikacija između pametnih telefona i uređaja . . . . . . . . 162
8.2 Uobičajene lokalne metode otkrivanja . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Emitiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Usporedba između emitiranja i multicasta . . . . . . . . . . . . . . 176
8.2.4 Multicast aplikacijski protokol mDNS za lokalno otkrivanje . . . . . . . . 176
8.3 Uobičajeni komunikacijski protokoli za lokalne podatke . . . . . . . . . . . . . . . 179
8.3.1 Protokol kontrole prijenosa (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Protokol za prijenos hiperteksta (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Korisnik Datagram protokol (UDP) . . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protokol ograničene aplikacije (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Bluetooth protokol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Sažetak protokola za prijenos podataka . . . . . . . . . . . . . . . 203
8.4 Jamstvo sigurnosti podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Uvod u sigurnost transportnog sloja (TLS) . . . . . . . . . . . . . 207
8.4.2 Uvod u Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Praksa: Lokalna kontrola u projektu Smart Light . . . . . . . . . . . . . . . . . . 217
8.5.1 Stvaranje lokalnog kontrolnog poslužitelja temeljenog na Wi-Fi . . . . . . . . . . . . . . . 217
8.5.2 Provjera funkcionalnosti lokalne kontrole pomoću skripti . . . . . . . . . . . 221
8.5.3 Stvaranje lokalnog kontrolnog poslužitelja temeljenog na Bluetoothu . . . . . . . . . . . . 222
8.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Kontrola oblaka
225
9.1 Uvod u daljinsko upravljanje . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Protokoli za komunikaciju podacima u oblaku . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 Uvod u MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT načela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Format MQTT poruke . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Usporedba protokola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Postavljanje MQTT Brokera na Linux i Windows . . . . . . . . . . . . 233 9.2.6 Postavljanje MQTT klijenta na temelju ESP-IDF-a . . . . . . . . . . . . . . . . 235 9.3 Osiguranje sigurnosti MQTT podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Značenje i funkcija certifikata . . . . . . . . . . . . . . . . . . . 237 9.3.2 Lokalno generiranje certifikata . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Konfiguriranje MQTT brokera . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Konfiguriranje MQTT klijenta . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Vježbanje: Daljinsko upravljanje putem ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Osnove programa ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Pozadinski komunikacijski protokol čvora i oblaka . . . . . . . . . . . 244 9.4.3 Komunikacija između klijenta i pozadine u oblaku . . . . . . . . . . . 249 9.4.4 Korisničke uloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Osnovne usluge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplikacija RainMaker i integracije trećih strana . . . . . . . . . . . . . . . 262 9.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Razvoj aplikacija za pametne telefone
269
10.1 Uvod u razvoj aplikacija za pametne telefone . . . . . . . . . . . . . . . . . . 269
10.1.1 Krajview razvoja aplikacija za pametne telefone. . . . . . . . . . . . . . . 270
10.1.2 Struktura Android projekta . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Struktura iOS projekta . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Životni ciklus Android aktivnosti . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Životni ciklus iOS-a ViewKontrolor . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Stvaranje novog projekta aplikacije za pametni telefon . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Priprema za Android razvoj . . . . . . . . . . . . . . . . . . . 275
10.2.2 Stvaranje novog Android projekta . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Dodavanje ovisnosti za MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Zahtjev za dopuštenje u Androidu . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Priprema za iOS razvoj . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Stvaranje novog iOS projekta . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Dodavanje ovisnosti za MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Zahtjev za dopuštenje u iOS-u . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analiza funkcionalnih zahtjeva aplikacije . . . . . . . . . . . . . . . . . . 281
10.3.1 Analiza funkcionalnih zahtjeva projekta . . . . . . . . . . . . 282
10.3.2 Analiza zahtjeva za upravljanje korisnicima . . . . . . . . . . . . . . . 282 10.3.3 Analiza zahtjeva za opskrbu uređaja i vezanje . . . . . . . 283 10.3.4 Analiza zahtjeva za daljinsko upravljanje . . . . . . . . . . . . . . . . 283 10.3.5 Analiza zahtjeva za rasporedom . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analiza zahtjeva korisničkog centra . . . . . . . . . . . . . . . . . . 285 10.4 Razvoj upravljanja korisnicima . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Uvod u RainMaker API-je . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Pokretanje komunikacije putem pametnog telefona . . . . . . . . . . . . . . . . 286 10.4.3 Registracija računa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Prijava na račun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Razvoj opskrbe uređaja . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Uređaji za skeniranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Povezivanje uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generiranje tajnih ključeva . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Dobivanje ID-a čvora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Uređaji za opskrbu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Razvoj kontrole uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Povezivanje uređaja s računima u oblaku . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Dobivanje popisa uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Dohvaćanje statusa uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Promjena statusa uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Razvoj rasporeda i korisničkog centra . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementacija funkcije raspoređivanja . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementacija korisničkog centra . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Više Cloud API-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Nadogradnja firmvera i upravljanje verzijama
321
11.1 Nadogradnja firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Krajview pregradnih tablica. . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Proces pokretanja firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Krajview OTA mehanizma. . . . . . . . . . . . . . . . . . . . . 326
11.2 Upravljanje verzijom firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Označavanje firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Vraćanje i zaštita od vraćanja . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Vježbanje: OTA (Over-the-Air) Prample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Nadogradnja firmvera preko lokalnog glavnog računala . . . . . . . . . . . . . . . . . 332
11.3.2 Nadogradnja firmvera putem ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimizacija i masovna proizvodnja
343
12 Upravljanje napajanjem i optimizacija niske potrošnje energije
345
12.1 ESP32-C3 Upravljanje napajanjem . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dinamičko skaliranje frekvencije . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Konfiguracija upravljanja napajanjem . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Način rada niske potrošnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Način mirovanja modema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Način laganog mirovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Način dubokog mirovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Potrošnja struje u različitim načinima napajanja . . . . . . . . . . . . . 358
12.3 Upravljanje napajanjem i otklanjanje pogrešaka niske potrošnje . . . . . . . . . . . . . . . . . 359
12.3.1 Otklanjanje pogrešaka u zapisniku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 GPIO otklanjanje pogrešaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Praksa: Upravljanje napajanjem u projektu Smart Light . . . . . . . . . . . . . . . 363
12.4.1 Konfiguriranje značajke upravljanja napajanjem . . . . . . . . . . . . . . . . . 364
12.4.2 Upotreba brava za upravljanje napajanjem . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Provjera potrošnje energije . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Poboljšane sigurnosne značajke uređaja
369
13.1 Krajview sigurnosti podataka IoT uređaja. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Zašto osigurati podatke IoT uređaja? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Osnovni zahtjevi za sigurnost podataka IoT uređaja . . . . . . . . . . . . 371
13.2 Zaštita integriteta podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Uvod u metodu provjere integriteta . . . . . . . . . . . . . . 372
13.2.2 Provjera integriteta podataka firmvera . . . . . . . . . . . . . . . . . . 373
13.2.3 Prample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Zaštita povjerljivosti podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Uvod u šifriranje podataka . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Uvod u shemu šifriranja Flasha . . . . . . . . . . . . . . . . . 376
13.3.3 Pohranjivanje Flash ključa šifriranja . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Način rada Flash enkripcije . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Proces Flash enkripcije . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Uvod u NVS šifriranje . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Prampdatoteke Flash enkripcije i NVS enkripcije. . . . . . . . . . . 384
13.4 Zaštita zakonitosti podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Uvod u digitalni potpis . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Krajview sheme sigurnog pokretanja . . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Uvod u sigurno pokretanje softvera . . . . . . . . . . . . . . . . . . . 388 13.4.4 Uvod u hardversko sigurno pokretanje . . . . . . . . . . . . . . . . . . 390 13.4.5 Npramples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Praksa: Sigurnosne značajke u masovnoj proizvodnji . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash šifriranje i sigurno pokretanje . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Omogućivanje Flash enkripcije i sigurnog pokretanja s Batch Flash alatima . . 397 13.5.3 Omogućavanje Flash enkripcije i sigurnog pokretanja u projektu Smart Light . . . 398 13.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Snimanje i testiranje firmvera za masovnu proizvodnju
399
14.1 Snimanje firmvera u masovnoj proizvodnji . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definiranje particija podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Snimanje firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Testiranje masovne proizvodnje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Praksa: Podaci o masovnoj proizvodnji u projektu Smart Light . . . . . . . . . . . . . 404
14.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: platforma za daljinski nadzor
405
15.1 Uvod u ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Početak rada s ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Početak rada s ESP Insights u projektu esp-insights . . . . . . 409
15.2.2 Pokretanje Example u projektu esp-insights. . . . . . . . . . . . . . . 411
15.2.3 Izvještavanje o informacijama Coredump-a . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Prilagodba zapisnika interesa . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Prijava razloga ponovnog pokretanja . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Izvještavanje o prilagođenim mjernim podacima . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Praksa: Korištenje ESP Insights u projektu Smart Light . . . . . . . . . . . . . . . 416
15.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Uvod
ESP32-C3 je jednojezgreni Wi-Fi i Bluetooth 5 (LE) mikrokontroler SoC, temeljen na RISC-V arhitekturi otvorenog koda. Postiže pravu ravnotežu snage, I/O mogućnosti i sigurnosti, čime nudi optimalno troškovno učinkovito rješenje za povezane uređaje. Kako bi prikazala razne primjene obitelji ESP32-C3, ova Espressifova knjiga odvest će vas na zanimljivo putovanje kroz AIoT, počevši od osnova razvoja IoT projekta i postavljanja okruženja do praktičnih primjeraamples. Prva četiri poglavlja govore o IoT, ESP RainMaker i ESP-IDF. Poglavlje 5 i 6 ukratko o dizajnu hardvera i razvoju upravljačkih programa. Kako napredujete, otkrit ćete kako konfigurirati svoj projekt putem Wi-Fi mreža i mobilnih aplikacija. Konačno, naučit ćete optimizirati svoj projekt i staviti ga u masovnu proizvodnju.
Ako ste inženjer u srodnim područjima, softverski arhitekt, učitelj, student ili bilo tko koga zanima IoT, ova je knjiga za vas.
Možete preuzeti kod nprample korišten u ovoj knjizi s Espressifove stranice na GitHubu. Za najnovije informacije o razvoju IoT-a pratite naš službeni račun.
Predgovor
Informatizirajući svijet
Jašući na valu Interneta, Internet of Things (IoT) napravio je svoj veliki debi i postao nova vrsta infrastrukture u digitalnom gospodarstvu. Kako bi približili tehnologiju javnosti, Espressif Systems radi na viziji da programeri iz svih sfera života mogu koristiti IoT za rješavanje nekih od najhitnijih problema našeg vremena. Svijet "Inteligentne mreže svih stvari" ono je što očekujemo od budućnosti.
Dizajniranje vlastitih čipova čini kritičnu komponentu te vizije. Bit će to maraton koji će zahtijevati stalna probijanja tehnoloških granica. Od “Game Changer” ESP8266 do ESP32 serije koja integrira Wi-Fi i Bluetoothr (LE) povezivost, nakon čega slijedi ESP32-S3 opremljen AI akceleracijom, Espressif nikada ne prestaje istraživati i razvijati proizvode za AIoT rješenja. S našim softverom otvorenog koda, kao što je IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF i Device Connectivity Platform ESP RainMaker, stvorili smo neovisni okvir za izgradnju AIoT aplikacija.
Od srpnja 2022., kumulativne isporuke Espressifovih IoT čipseta premašile su 800 milijuna, vodeći na tržištu Wi-Fi MCU i napajajući ogroman broj povezanih uređaja diljem svijeta. Težnja za izvrsnošću čini svaki Espressif proizvod velikim hitom zbog visoke razine integracije i isplativosti. Izdanje ESP32-C3 označava značajnu prekretnicu Espressifove tehnologije koju je sam razvio. To je jednojezgreni, 32-bitni MCU baziran na RISC-V s 400 KB SRAM-a, koji može raditi na 160 MHz. Ima integrirani 2.4 GHz Wi-Fi i Bluetooth 5 (LE) s podrškom dugog dometa. Ostvaruje finu ravnotežu snage, I/O mogućnosti i sigurnosti, čime nudi optimalno troškovno učinkovito rješenje za povezane uređaje. Utemeljena na tako moćnom ESP32-C3, ova je knjiga namijenjena pomoći čitateljima da razumiju znanje o IoT-u s detaljnim ilustracijama i praktičnim primjerimaamples.
Zašto smo napisali ovu knjigu?
Espressif Systems više je od poluvodičke tvrtke. Također je tvrtka za IoT platformu, koja uvijek teži pomacima i inovacijama na polju tehnologije. U isto vrijeme, Espressif je otvorio i podijelio svoj vlastiti operativni sustav i softverski okvir sa zajednicom, tvoreći jedinstveni ekosustav. Inženjeri, proizvođači i tehnološki entuzijasti aktivno razvijaju nove softverske aplikacije temeljene na Espressifovim proizvodima, slobodno komuniciraju i dijele svoja iskustva. Možete vidjeti fascinantne ideje programera na raznim platformama cijelo vrijeme, kao što su YouTube i GitHub. Popularnost Espressifovih proizvoda potaknula je sve veći broj autora koji su napisali preko 100 knjiga temeljenih na Espressifovim čipsetovima, na više od deset jezika, uključujući engleski, kineski, njemački, francuski i japanski.
Podrška i povjerenje partnera u zajednici potiče Espressifove stalne inovacije. “Nastojimo učiniti naše čipove, operativne sustave, okvire, rješenja, Cloud, poslovne prakse, alate, dokumentaciju, spise, ideje itd. sve relevantnijima za odgovore koji su ljudima potrebni u najhitnijim životnim problemima suvremenog doba. Ovo je Espressifova najveća ambicija i moralni kompas.” rekao je g. Teo Swee Ann, osnivač i izvršni direktor Espressifa.
Espressif cijeni čitanje i ideje. Budući da stalna nadogradnja IoT tehnologije postavlja veće zahtjeve za inženjere, kako možemo pomoći većem broju ljudi da brzo ovladaju IoT čipovima, operativnim sustavima, softverskim okvirima, aplikacijskim shemama i proizvodima usluga u oblaku? Kako se kaže, bolje je čovjeka naučiti pecati nego mu dati ribu. U jednoj sesiji razmišljanja palo nam je na pamet da bismo mogli napisati knjigu u kojoj bismo sustavno razvrstali ključna znanja o razvoju IoT-a. Pogodili smo se, brzo smo okupili grupu starijih inženjera i spojili iskustvo tehničkog tima u ugrađenom programiranju, IoT hardveru i razvoju softvera, što je sve pridonijelo izdavanju ove knjige. U procesu pisanja dali smo sve od sebe da budemo objektivni i pošteni, lišeni čahure, te da jezgrovitim izrazima ispričamo složenost i šarm Interneta stvari. Pažljivo smo saželi uobičajena pitanja, uputili na povratne informacije i prijedloge zajednice, kako bismo jasno odgovorili na pitanja s kojima se susrećemo u procesu razvoja i pružili praktične smjernice za razvoj IoT-a za relevantne tehničare i donositelje odluka.
Struktura knjige
Ova knjiga ima perspektivu usmjerenu na inženjere i korak po korak izlaže potrebno znanje za razvoj IoT projekta. Sastoji se od četiri dijela, kako slijedi:
· Priprema (Poglavlje 1): Ovaj dio predstavlja arhitekturu IoT-a, okvir tipičnog IoT projekta, platformu u oblaku ESP RainMakerr i razvojno okruženje ESP-IDF, kako bi se postavili čvrsti temelji za razvoj IoT projekta.
· Razvoj hardvera i upravljačkog programa (Poglavlje 5): Na temelju ESP6-C32 čipseta, ovaj dio razrađuje minimalni hardverski sustav i razvoj upravljačkog programa, te implementira kontrolu zatamnjivanja, stupnjevanja boja i bežične komunikacije.
· Bežična komunikacija i kontrola (Poglavlje 7): Ovaj dio objašnjava shemu inteligentne Wi-Fi konfiguracije koja se temelji na ESP11-C32 čipu, lokalnim i oblakovim kontrolnim protokolima te lokalnom i daljinskom upravljanju uređajima. Također pruža sheme za razvoj aplikacija za pametne telefone, nadogradnju firmvera i upravljanje verzijama.
· Optimizacija i masovna proizvodnja (poglavlje 12-15): Ovaj je dio namijenjen naprednim IoT aplikacijama, s fokusom na optimizaciju proizvoda u upravljanju energijom, optimizaciju niske potrošnje i poboljšanu sigurnost. Također predstavlja snimanje firmvera i testiranje u masovnoj proizvodnji, te kako dijagnosticirati radni status i zapisnike firmvera uređaja putem platforme za daljinsko praćenje ESP Insights.
O izvornom kodu
Čitatelji mogu pokrenuti exampprograme u ovoj knjizi, bilo ručnim unosom koda ili korištenjem izvornog koda koji prati knjigu. Stavljamo naglasak na spoj teorije i prakse te stoga u gotovo svakom poglavlju postavljamo dio Praksa temeljen na projektu Smart Light. Svi su kodovi otvorenog izvora. Čitatelji su dobrodošli preuzeti izvorni kod i raspravljati o njemu u odjeljcima koji se odnose na ovu knjigu na GitHubu i našem službenom forumu esp32.com. Otvoreni kôd ove knjige podliježe uvjetima licence Apache 2.0.
Bilješka autora
Ovu je knjigu službeno izradio Espressif Systems, a napisali su je stariji inženjeri tvrtke. Prikladan je za menadžere i osoblje za istraživanje i razvoj u industrijama povezanim s IoT-om, nastavnike i studente srodnih smjerova te entuzijaste u području Interneta stvari. Nadamo se da ova knjiga može poslužiti kao priručnik za rad, referenca i knjiga uz krevet, kao dobar učitelj i prijatelj.
Pri sastavljanju ove knjige pozivali smo se na neke relevantne rezultate istraživanja stručnjaka, znanstvenika i tehničara u zemlji i inozemstvu, te smo se potrudili citirati ih u skladu s akademskim normama. No neizbježno je da će biti i propusta, pa ovim putem želimo izraziti duboko poštovanje i zahvalnost svim relevantnim autorima. Osim toga, citirali smo podatke s interneta, pa se zahvaljujemo izvornim autorima i izdavačima te se ispričavamo što ne možemo navesti izvor svake informacije.
Kako bismo proizveli knjigu visoke kvalitete, organizirali smo krugove internih rasprava i učili iz prijedloga i povratnih informacija probnih čitatelja i urednika izdavača. Ovim putem Vam se još jednom zahvaljujemo na pomoći koja je doprinijela ovom uspješnom radu.
Posljednje, ali najvažnije, hvala svima u Espressifu koji su toliko radili na rađanju i popularizaciji naših proizvoda.
Razvoj IoT projekata uključuje širok raspon znanja. Ograničeni na duljinu knjige, kao i na razinu i iskustvo autora, propusti su neizbježni. Stoga ljubazno molimo stručnjake i čitatelje da kritiziraju i isprave naše pogreške. Ako imate prijedloge za ovu knjigu, kontaktirajte nas na book@espressif.com. Radujemo se vašim povratnim informacijama.
Kako koristiti ovu knjigu?
Kod projekata u ovoj knjizi je otvoren. Možete ga preuzeti s našeg GitHub repozitorija i podijeliti svoja razmišljanja i pitanja na našem službenom forumu. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Kroz knjigu će biti istaknuti dijelovi kao što je prikazano u nastavku.
Izvorni kod U ovoj knjizi naglašavamo kombinaciju teorije i prakse, te stoga u gotovo svakom poglavlju postavljamo odjeljak Praksa o projektu Smart Light. Odgovarajući koraci i izvorna stranica bit će označeni između dva retka koji počinju s tag Izvorni kod.
NAPOMENA/SAVJETI Ovdje možete pronaći neke kritične informacije i podsjetnike za uspješno otklanjanje pogrešaka u vašem programu. Oni će biti označeni između dvije debele crte koje počinju s tag NAPOMENA ili SAVJETI.
Većina naredbi u ovoj knjizi izvršava se pod Linuxom, a zahtijeva ih znak "$". Ako naredba zahtijeva privilegije superkorisnika za izvršenje, upit će biti zamijenjen s "#". Naredbeni redak na Mac sustavima je “%”, kao što se koristi u odjeljku 4.2.3 Instaliranje ESP-IDF-a na Mac.
Glavni tekst u ovoj knjizi bit će tiskan u Povelji, dok će šifra prampdatoteke, komponente, funkcije, varijable, kod file imena, direktoriji kodova i nizovi bit će u Courier New.
Naredbe ili tekstovi koje treba unijeti korisnik, te naredbe koje se mogu unijeti pritiskom na tipku “Enter” bit će ispisani podebljano Courier New. Dnevnici i blokovi koda bit će prikazani u svijetloplavim okvirima.
Exampono:
Drugo, upotrijebite esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py za generiranje binarne NVS particije file na razvojnom hostu sljedećom naredbom:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –ulazna masa prod.csv –izlazna masa prod.bin –veličina VELIČINA NVS PARTICIJE
Poglavlje 1
Uvod
do
IoT
Krajem 20. stoljeća, usponom računalnih mreža i komunikacijskih tehnologija, Internet se brzo integrirao u ljudske živote. Kako internetska tehnologija nastavlja sazrijevati, rođena je ideja o Internetu stvari (IoT). Doslovno, IoT znači Internet gdje su stvari povezane. Dok izvorni Internet ruši granice prostora i vremena i sužava udaljenost između "osobe i osobe", IoT čini "stvari" važnim sudionikom, zbližavajući "ljude" i "stvari". U doglednoj budućnosti, IoT će postati pokretačka snaga informacijske industrije.
Dakle, što je Internet stvari?
Teško je točno definirati Internet stvari jer se njegovo značenje i opseg neprestano mijenjaju. Godine 1995. Bill Gates prvi je iznio ideju IoT-a u svojoj knjizi The Road Ahead. Jednostavno rečeno, IoT omogućuje objektima da međusobno razmjenjuju informacije putem Interneta. Njegov krajnji cilj je uspostaviti "Internet svega". Ovo je rana interpretacija IoT-a, kao i fantazija tehnologije budućnosti. Tridesetak godina kasnije, brzim razvojem gospodarstva i tehnologije, mašta postaje stvarnost. Od pametnih uređaja, pametnih domova, pametnih gradova, Interneta vozila i nosivih uređaja, do "metaverzuma" podržanog IoT tehnologijama, stalno se pojavljuju novi koncepti. U ovom ćemo poglavlju započeti s objašnjenjem arhitekture Interneta stvari, a zatim ćemo predstaviti najčešću IoT aplikaciju, pametnu kuću, kako bismo vam pomogli da bolje razumijete IoT.
1.1 Arhitektura IoT-a
Internet stvari uključuje više tehnologija koje imaju različite potrebe primjene i oblike u različitim industrijama. Kako bi se sredila struktura, ključne tehnologije i aplikativne karakteristike IoT-a, potrebno je uspostaviti jedinstvenu arhitekturu i standardni tehnički sustav. U ovoj knjizi, arhitektura IoT-a jednostavno je podijeljena na četiri sloja: sloj percepcije i kontrole, mrežni sloj, sloj platforme i sloj aplikacije.
Sloj percepcije i kontrole Kao najosnovniji element IoT arhitekture, sloj percepcije i kontrole je srž za realizaciju sveobuhvatnog detektiranja IoT-a. Njegova glavna funkcija je prikupljanje, identificiranje i kontrola informacija. Sastoji se od niza uređaja sa sposobnošću percepcije,
3
identifikaciju, kontrolu i izvršenje te je odgovoran za dohvaćanje i analizu podataka kao što su svojstva materijala, trendovi ponašanja i status uređaja. Na ovaj način IoT prepoznaje stvarni fizički svijet. Osim toga, sloj također može kontrolirati status uređaja.
Najčešći uređaji ovog sloja su različiti senzori, koji imaju važnu ulogu u prikupljanju informacija i identifikaciji. Senzori su poput ljudskih osjetilnih organa, kao što su fotoosjetljivi senzori jednaki vidu, akustični senzori sluhu, plinski senzori mirisu i senzori osjetljivi na pritisak i temperaturu dodiru. Sa svim tim “osjetnim organima” objekti postaju “živi” i sposobni za inteligentnu percepciju, prepoznavanje i manipulaciju fizičkim svijetom.
Mrežni sloj Glavna funkcija mrežnog sloja je prijenos informacija, uključujući podatke dobivene od percepcijskog i kontrolnog sloja do određenog cilja, kao i naredbe izdane od aplikacijskog sloja natrag do percepcijskog i kontrolnog sloja. Služi kao važan komunikacijski most koji povezuje različite slojeve IoT sustava. Postavljanje osnovnog modela Interneta stvari uključuje dva koraka za integraciju objekata u mrežu: pristup Internetu i prijenos putem Interneta.
Pristup Internetu Internet omogućava međusobno povezivanje između čovjeka i čovjeka, ali ne uključuje stvari u veliku obitelj. Prije pojave IoT-a većina stvari nije bila "umrežna". Zahvaljujući kontinuiranom razvoju tehnologije, IoT uspijeva povezati stvari s internetom, čime se ostvaruje međusobna povezanost između “ljudi i stvari” i “stvari i stvari”. Postoje dva uobičajena načina za implementaciju internetske veze: žičani pristup mreži i bežični pristup mreži.
Metode pristupa žičanoj mreži uključuju Ethernet, serijsku komunikaciju (npr. RS-232, RS-485) i USB, dok pristup bežičnoj mreži ovisi o bežičnoj komunikaciji, koja se dalje može podijeliti na bežičnu komunikaciju kratkog dometa i bežičnu komunikaciju velikog dometa.
Bežična komunikacija kratkog dometa uključuje ZigBee, Bluetoothr, Wi-Fi, komunikaciju kratkog dometa (NFC) i radiofrekvencijsku identifikaciju (RFID). Bežična komunikacija velikog dometa uključuje poboljšanu komunikaciju strojnog tipa (eMTC), LoRa, uskopojasni internet stvari (NB-IoT), 2G, 3G, 4G, 5G itd.
Prijenos Internetom Različiti načini pristupa Internetu dovode do odgovarajuće fizičke veze prijenosa podataka. Sljedeća stvar je odlučiti koji komunikacijski protokol koristiti za prijenos podataka. U usporedbi s internetskim terminalima, većina IoT terminala trenutno ima manje
4 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
dostupnih resursa, kao što su performanse obrade, kapacitet pohrane, brzina mreže itd., stoga je potrebno odabrati komunikacijski protokol koji zauzima manje resursa u IoT aplikacijama. Postoje dva komunikacijska protokola koji se danas naširoko koriste: Telemetry Transport (MQTT) i Protokol ograničene aplikacije (CoAP).
Sloj platforme Sloj platforme uglavnom se odnosi na IoT platforme u oblaku. Kada su svi IoT terminali umreženi, njihovi podaci moraju biti agregirani na IoT platformi u oblaku kako bi se izračunali i pohranili. Sloj platforme uglavnom podržava IoT aplikacije u olakšavanju pristupa i upravljanja masivnim uređajima. Povezuje IoT terminale s platformom u oblaku, prikuplja podatke o terminalima i izdaje naredbe terminalima kako bi implementirao daljinsko upravljanje. Kao posrednička usluga za dodjelu opreme industrijskim aplikacijama, sloj platforme igra povezujuću ulogu u cijeloj IoT arhitekturi, noseći apstraktnu poslovnu logiku i standardizirani temeljni podatkovni model, koji ne samo da može ostvariti brzi pristup uređajima, već također pruža moćne modularne mogućnosti zadovoljiti različite potrebe u scenarijima primjene u industriji. Sloj platforme uglavnom uključuje funkcionalne module kao što su pristup uređaju, upravljanje uređajem, upravljanje sigurnošću, komunikacija porukama, nadzor rada i održavanje te podatkovne aplikacije.
· Pristup uređaju, ostvarivanje veze i komunikacije između terminala i IoT platformi u oblaku.
· Upravljanje uređajem, uključujući funkcije kao što su stvaranje uređaja, održavanje uređaja, pretvorba podataka, sinkronizacija podataka i distribucija uređaja.
· Upravljanje sigurnošću, osiguravanje sigurnosti prijenosa podataka IoT iz perspektive sigurnosne autentifikacije i sigurnosti komunikacije.
· Komunikacija porukama, uključujući tri smjera prijenosa, odnosno terminal šalje podatke na IoT platformu u oblaku, IoT platforma u oblaku šalje podatke na stranu poslužitelja ili druge IoT platforme u oblaku, a strana poslužitelja daljinski upravlja IoT uređajima.
· Praćenje O&M, uključujući praćenje i dijagnozu, nadogradnju firmvera, mrežno otklanjanje pogrešaka, usluge zapisivanja itd.
· Podatkovne aplikacije, koje uključuju pohranu, analizu i primjenu podataka.
Aplikacijski sloj Aplikacijski sloj koristi podatke sa sloja platforme za upravljanje aplikacijom, filtrirajući ih i obrađujući pomoću alata kao što su baze podataka i softver za analizu. Dobiveni podaci mogu se koristiti za IoT aplikacije u stvarnom svijetu kao što su pametno zdravstvo, pametna poljoprivreda, pametni domovi i pametni gradovi.
Naravno, arhitektura IoT-a može se dalje podijeliti na više slojeva, ali bez obzira na to koliko se slojeva sastoji, temeljni princip ostaje u biti isti. Učenje
Poglavlje 1. Uvod u IoT 5
o arhitekturi IoT-a pomaže produbiti naše razumijevanje IoT tehnologija i izgraditi potpuno funkcionalne IoT projekte.
1.2 IoT aplikacija u pametnim domovima
IoT je prodro u sve sfere života, a nama najbliža IoT aplikacija je pametna kuća. Mnogi tradicionalni uređaji sada su opremljeni s jednim ili više IoT uređaja, a mnoge su novoizgrađene kuće dizajnirane s IoT tehnologijama od samog početka. Slika 1.1 prikazuje neke uobičajene pametne kućne uređaje.
Slika 1.1. Uobičajeni pametni kućni uređaji Razvoj pametnog doma može se jednostavno podijeliti na pametne proizvodetage, međupovezanost scene stage i inteligentni stage, kao što je prikazano na slici 1.2.
Slika 1.2. Razvoj stagpametnog doma 6 ESP32-C3 bežična avantura: opsežan vodič za IoT
Prvi stage radi se o pametnim proizvodima. Za razliku od tradicionalnih domova, u pametnim domovima IoT uređaji primaju signale pomoću senzora i umreženi su putem bežičnih komunikacijskih tehnologija kao što su Wi-Fi, Bluetooth LE i ZigBee. Korisnici mogu upravljati pametnim proizvodima na različite načine, kao što su aplikacije za pametne telefone, glasovni pomoćnici, kontrola pametnih zvučnika itd. Drugi stage usredotočuje se na međupovezanost scene. U ovom stage, razvojni programeri više ne razmatraju upravljanje jednim pametnim proizvodom, već međusobno povezivanje dvaju ili više pametnih proizvoda, automatizaciju do određene mjere i konačno formiranje prilagođenog scenskog načina rada. Na primjerample, kada korisnik pritisne bilo koji gumb za način rada scene, svjetla, zavjese i klima uređaji automatski će se prilagoditi unaprijed postavljenim postavkama. Naravno, postoji preduvjet da se logika povezivanja lako postavlja, uključujući uvjete okidača i radnje izvršenja. Zamislite da se način grijanja klima uređaja aktivira kada unutarnja temperatura padne ispod 10°C; da se u 7 sati ujutro pušta glazba za buđenje korisnika, otvaraju se pametne zavjese, a kuhalo za rižu ili toster za kruh pokreće se preko pametne utičnice; kako korisnik ustane i završi s pranjem, doručak je već poslužen, tako da neće biti kašnjenja odlaska na posao. Kako nam je život postao zgodan! Treći stage ide u inteligenciju stage. Kako se bude pristupalo sve više pametnih kućnih uređaja, tako će se povećavati i vrste generiranih podataka. Uz pomoć računalstva u oblaku, velikih podataka i umjetne inteligencije, kao da je "pametniji mozak" usađen u pametne domove, koji više ne zahtijevaju česte naredbe od korisnika. Oni prikupljaju podatke iz prethodnih interakcija i uče obrasce ponašanja i preferencije korisnika, kako bi automatizirali aktivnosti, uključujući davanje preporuka za donošenje odluka. Trenutno je većina pametnih domova na sceni međusobnog povezivanjatage. Kako se stopa prodora i inteligencija pametnih proizvoda povećava, prepreke između komunikacijskih protokola se uklanjaju. U budućnosti će pametne kuće sigurno postati stvarno “pametne”, baš poput AI sustava Jarvis u Iron Manu, koji ne samo da može pomoći korisniku u kontroli raznih uređaja, rješavanju svakodnevnih poslova, već ima i super računalnu snagu i sposobnost razmišljanja. U inteligentnom stage, ljudska bića će dobiti bolje usluge i u kvantitetu i u kvaliteti.
Poglavlje 1. Uvod u IoT 7
8 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Poglavlje Uvod i praksa 2 IoT projekta
U 1. poglavlju predstavili smo arhitekturu IoT-a, uloge i međuodnose sloja percepcije i kontrole, mrežnog sloja, sloja platforme i sloja aplikacije, kao i razvoj pametnog doma. Međutim, baš kao i kad učimo slikati, poznavanje teorijskog znanja nije dovoljno. Moramo "uprljati ruke" da bismo IoT projekte proveli u praksi kako bismo doista ovladali tehnologijom. Osim toga, kada projekt prijeđe u masovnu proizvodnju stage, potrebno je uzeti u obzir više čimbenika kao što su mrežna veza, konfiguracija, interakcija IoT platforme u oblaku, upravljanje firmverom i ažuriranja, upravljanje masovnom proizvodnjom i sigurnosna konfiguracija. Dakle, na što trebamo obratiti pozornost kada razvijamo cjeloviti IoT projekt? U 1. poglavlju spomenuli smo da je pametna kuća jedan od najčešćih scenarija primjene IoT-a, a pametna svjetla su jedan od najosnovnijih i najpraktičnijih uređaja koji se mogu koristiti u domovima, hotelima, teretanama, bolnicama itd. Stoga, u U ovoj ćemo knjizi kao početnu točku uzeti konstrukciju projekta pametnog svjetla, objasniti njegove komponente i značajke te dati smjernice za razvoj projekta. Nadamo se da možete izvući zaključke iz ovog slučaja za stvaranje više IoT aplikacija.
2.1 Uvod u tipične IoT projekte
Što se tiče razvoja, osnovni funkcionalni moduli IoT projekata mogu se klasificirati na razvoj softvera i hardvera IoT uređaja, razvoj klijentskih aplikacija i razvoj IoT cloud platformi. Važno je razjasniti osnovne funkcionalne module, koji će biti dodatno opisani u ovom odjeljku.
2.1.1 Osnovni moduli za uobičajene IoT uređaje
Razvoj softvera i hardvera IoT uređaja uključuje sljedeće osnovne module: Prikupljanje podataka
Kao donji sloj IoT arhitekture, IoT uređaji sloja percepcije i kontrole povezuju senzore i uređaje putem svojih čipova i perifernih uređaja kako bi se postiglo prikupljanje podataka i kontrola rada.
9
Povezivanje računa i početna konfiguracija Za većinu IoT uređaja, vezanje računa i početna konfiguracija dovršeni su u jednom operativnom procesu, npr.ample, povezivanje uređaja s korisnicima konfiguracijom Wi-Fi mreže.
Interakcija s IoT platformama u oblaku Za praćenje i kontrolu IoT uređaja također je potrebno povezati ih s IoT platformama u oblaku, kako bi davali naredbe i izvještavali o statusu kroz međusobnu interakciju.
Kontrola uređaja Kada su povezani s IoT platformama u oblaku, uređaji mogu komunicirati s oblakom i biti registrirani, vezani ili kontrolirani. Korisnici mogu postavljati upite o statusu proizvoda i obavljati druge operacije na aplikaciji za pametni telefon putem IoT platformi u oblaku ili lokalnih komunikacijskih protokola.
Nadogradnja firmvera IoT uređaji također mogu postići nadogradnju firmvera na temelju potreba proizvođača. Primanjem naredbi koje šalje oblak, realizirat će se nadogradnja firmvera i upravljanje verzijama. S ovom značajkom nadogradnje firmvera možete kontinuirano poboljšavati funkcije IoT uređaja, popraviti kvarove i poboljšati korisničko iskustvo.
2.1.2 Osnovni moduli klijentskih aplikacija
Klijentske aplikacije (npr. aplikacije za pametne telefone) uglavnom uključuju sljedeće osnovne module:
Sustav računa i autorizacija Podržava autorizaciju računa i uređaja.
Kontrola uređaja Aplikacije za pametne telefone obično su opremljene funkcijama upravljanja. Korisnici se mogu jednostavno povezati s IoT uređajima i njima upravljati bilo kada i bilo gdje putem aplikacija za pametne telefone. U stvarnom pametnom domu, uređajima se uglavnom upravlja putem aplikacija za pametne telefone, što ne samo da omogućuje inteligentno upravljanje uređajima, već i štedi troškove radne snage. Stoga je kontrola uređaja neophodna za klijentske aplikacije, kao što je kontrola atributa funkcije uređaja, kontrola scene, planiranje, daljinsko upravljanje, povezivanje uređaja itd. Korisnici pametne kuće također mogu prilagoditi scene prema osobnim potrebama, upravljati rasvjetom, kućanskim aparatima, ulazom , itd., kako bi kućni život bio ugodniji i praktičniji. Oni mogu tempirati klimatizaciju, isključiti je na daljinu, automatski uključiti svjetlo u hodniku nakon što se vrata otključaju ili prebaciti na način rada "kazalište" jednim jedinim gumbom.
Obavijest Klijentske aplikacije ažuriraju status IoT uređaja u stvarnom vremenu i šalju upozorenja kada uređaji ne rade normalno.
10 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Služba za korisnike nakon prodaje Aplikacije za pametne telefone mogu pružiti usluge nakon prodaje za proizvode, kako bi se pravodobno riješili problemi povezani s kvarovima IoT uređaja i tehničkim operacijama.
Istaknute funkcije Kako bi se zadovoljile potrebe različitih korisnika, mogu se dodati druge funkcije, kao što su Shake, NFC, GPS, itd. GPS može pomoći u postavljanju točnosti operacija scene prema lokaciji i udaljenosti, dok funkcija Shake korisnicima omogućuje postavljanje naredbe koje treba izvršiti za određeni uređaj ili scenu trešenjem.
2.1.3 Uvod u uobičajene IoT platforme u oblaku
IoT platforma u oblaku sveobuhvatna je platforma koja integrira funkcije kao što su upravljanje uređajima, komunikacija o sigurnosti podataka i upravljanje obavijestima. IoT cloud platforme se prema ciljnoj skupini i dostupnosti mogu podijeliti na javne IoT cloud platforme (u daljnjem tekstu „javni oblak“) i privatne IoT cloud platforme (u daljnjem tekstu „privatni oblak“).
Javni oblak obično označava zajedničke IoT platforme u oblaku za poduzeća ili pojedince, kojima upravljaju i održavaju pružatelji platformi, a dijele se putem interneta. Može biti besplatan ili jeftin i pruža usluge u cijeloj otvorenoj javnoj mreži, kao što su Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT itd. Kao platforma za podršku, javni oblak može integrirati uzvodne pružatelje usluga i daljnjim krajnjim korisnicima kako bi stvorili novi lanac vrijednosti i ekosustav.
Privatni oblak izgrađen je samo za korporativnu upotrebu, čime se jamči najbolja kontrola nad podacima, sigurnošću i kvalitetom usluge. Njegove usluge i infrastrukturu zasebno održavaju poduzeća, a prateći hardver i softver također su namijenjeni određenim korisnicima. Poduzeća mogu prilagoditi usluge u oblaku kako bi zadovoljile potrebe svog poslovanja. Trenutačno su neki proizvođači pametnih kuća već dobili privatne IoT platforme u oblaku i razvili pametne kućne aplikacije temeljene na njima.
Javni oblak i privatni oblak imaju svoje prednostitages, što će biti objašnjeno kasnije.
Za postizanje komunikacijske povezanosti potrebno je dovršiti barem ugrađeni razvoj na strani uređaja, zajedno s poslovnim poslužiteljima, IoT platformama u oblaku i aplikacijama za pametne telefone. Suočavajući se s tako velikim projektom, javni oblak obično osigurava pakete za razvoj softvera za aplikacije na strani uređaja i pametne telefone kako bi se ubrzao proces. I javni i privatni oblak pružaju usluge uključujući pristup uređaju, upravljanje uređajem, sjenčanje uređaja te rad i održavanje.
Pristup uređaju IoT platforme u oblaku moraju osigurati ne samo sučelja za pristup uređaju pomoću protokola
Poglavlje 2. Uvod i praksa IoT projekata 11
kao što su MQTT, CoAP, HTTPS i WebUtičnica, ali i funkcija sigurnosne provjere autentičnosti uređaja za blokiranje krivotvorenih i ilegalnih uređaja, čime se učinkovito smanjuje rizik od ugrožavanja. Takva autentifikacija obično podržava različite mehanizme, pa je kod masovne proizvodnje uređaja potrebno unaprijed dodijeliti certifikat uređaja prema odabranom autentifikacijskom mehanizmu i urezati ga u uređaje.
Upravljanje uređajima Funkcija upravljanja uređajima koju pružaju IoT platforme u oblaku ne samo da može pomoći proizvođačima u praćenju statusa aktivacije i mrežnog statusa njihovih uređaja u stvarnom vremenu, već također omogućuje opcije kao što su dodavanje/uklanjanje uređaja, dohvaćanje, dodavanje/brisanje grupa, nadogradnja firmvera i upravljanje verzijama.
Sjena uređaja IoT platforme u oblaku mogu stvoriti trajnu virtualnu verziju (sjena uređaja) za svaki uređaj, a status sjene uređaja može se sinkronizirati i dobiti aplikacijom za pametni telefon ili drugim uređajima putem internetskih protokola za prijenos. Sjena uređaja pohranjuje najnoviji prijavljeni status i očekivani status svakog uređaja, a čak i ako je uređaj izvan mreže, još uvijek može dobiti status pozivanjem API-ja. Sjena uređaja pruža uvijek uključene API-je, što olakšava izradu aplikacija za pametne telefone koje komuniciraju s uređajima.
Rad i održavanje Funkcija O&M uključuje tri aspekta: · Demonstriranje statističkih informacija o IoT uređajima i obavijestima. · Upravljanje zapisima omogućuje pronalaženje informacija o ponašanju uređaja, protoku poruka gore/dolje i sadržaju poruka. · Debugging uređaja podržava isporuku naredbi, ažuriranje konfiguracije i provjeru interakcije između IoT platformi u oblaku i poruka uređaja.
2.2 Praksa: Projekt pametnog svjetla
Nakon teorijskog uvoda u svakom poglavlju, pronaći ćete odjeljak za praksu povezan s projektom Smart Light koji će vam pomoći da steknete praktično iskustvo. Projekt se temelji na Espressifovom ESP32-C3 čipu i ESP RainMaker IoT Cloud Platformi, a pokriva hardver bežičnog modula u pametnim rasvjetnim proizvodima, ugrađeni softver za pametne uređaje temeljen na ESP32C3, aplikacije za pametne telefone i interakciju ESP RainMaker.
Izvorni kod Radi boljeg učenja i iskustva razvoja, projekt u ovoj knjizi je otvoren. Možete preuzeti izvorni kod iz našeg GitHub repozitorija na https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
2.2.1 Struktura projekta
Projekt Smart Light sastoji se od tri dijela: i. Pametni rasvjetni uređaji temeljeni na ESP32-C3, odgovorni za interakciju s IoT platformama u oblaku i kontrolu prekidača, svjetline i temperature boje LED lamp kuglice. ii. Aplikacije za pametne telefone (uključujući aplikacije za tablete koje rade na Androidu i iOS-u), odgovorne za mrežnu konfiguraciju pametnih rasvjetnih proizvoda, kao i za upite i kontrolu njihovog statusa.
iii. IoT cloud platforma temeljena na ESP RainMaker. Radi pojednostavljenja, u ovoj knjizi razmatramo IoT cloud platformu i poslovni poslužitelj kao cjelinu. Pojedinosti o ESP RainMakeru bit će navedene u 3. poglavlju.
Korespondencija između strukture projekta Smart Light i arhitekture IoT-a prikazana je na slici 2.1.
Slika 2.1. Struktura projekta pametnog svjetla
2.2.2 Funkcije projekta
Podijeljene prema strukturi, funkcije svakog dijela su sljedeće. Pametni rasvjetni uređaji
· Mrežna konfiguracija i veza. · LED PWM kontrola, kao što je prekidač, svjetlina, temperatura boje, itd. · Automatizacija ili kontrola scene, npr. vremenski prekidač. · Šifriranje i sigurno pokretanje Flasha. · Nadogradnja firmvera i upravljanje verzijama.
Poglavlje 2. Uvod i praksa IoT projekata 13
Aplikacije za pametne telefone · Mrežna konfiguracija i povezivanje uređaja. · Pametna kontrola rasvjete proizvoda, kao što je prekidač, svjetlina, temperatura boje, itd. · Automatizacija ili postavke scene, npr. vremenski prekidač. · Lokalno/daljinsko upravljanje. · Registracija korisnika, prijava itd.
ESP RainMaker IoT cloud platforma · Omogućivanje pristupa IoT uređajima. · Pružanje API-ja za rad uređaja dostupnih aplikacijama za pametne telefone. · Nadogradnja firmvera i upravljanje verzijama.
2.2.3 Priprema hardvera
Ako ste zainteresirani za provedbu projekta u praksi, trebat će vam i sljedeći hardver: pametna svjetla, pametni telefoni, Wi-Fi usmjerivači i računalo koje zadovoljava instalacijske zahtjeve razvojnog okruženja. Pametna svjetla
Pametna svjetla su nova vrsta žarulja, čiji je oblik isti kao i standardne žarulje sa žarnom niti. Pametna svjetiljka sastoji se od kondenzatorskog step-down reguliranog napajanja, bežičnog modula (s ugrađenim ESP32-C3), LED kontrolera i RGB LED matrice. Kada je spojen na napajanje, 15 V DC voltagIzlaz nakon smanjenja kondenzatora, ispravljanja diode i regulacije daje energiju LED kontroleru i LED matrici. LED kontroler može automatski slati visoke i niske razine u određenim intervalima, prebacujući RGB LED matricu između zatvorene (svjetla uključena) i otvorene (svjetla isključena), tako da može emitirati cijan, žutu, zelenu, ljubičastu, plavu, crvenu i bijela svjetlost. Bežični modul odgovoran je za povezivanje s Wi-Fi usmjerivačem, primanje i izvješćivanje o statusu pametnih svjetala te slanje naredbi za upravljanje LED diodom.
Slika 2.2. Simulirano pametno svjetlo
U ranom razvoju stage, možete simulirati pametno svjetlo pomoću ESP32-C3DevKitM-1 ploče povezane s RGB LED lamp kuglice (vidi sliku 2.2). Ali trebala bi
14 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
imajte na umu da ovo nije jedini način sastavljanja pametnog svjetla. Hardverski dizajn projekta u ovoj knjizi sadrži samo bežični modul (s ugrađenim ESP32-C3), ali ne i potpuni hardverski dizajn pametnog svjetla. Osim toga, Espressif također proizvodi audio razvojnu ploču ESP32C3-Lyra temeljenu na ESP32-C3 za upravljanje svjetlima sa zvukom. Ploča ima sučelja za mikrofone i zvučnike i može kontrolirati LED trake. Može se koristiti za razvoj ultra jeftinih audio emitera visokih performansi i ritamskih svjetlosnih traka. Slika 2.3 prikazuje ESP32-C3Lyra ploču povezanu s trakom od 40 LED svjetala.
Slika 2.3. ESP32-C3-Lyra povezana trakom od 40 LED svjetala
Pametni telefoni (Android/iOS) Projekt Smart Light uključuje razvoj aplikacije za pametne telefone za postavljanje i upravljanje pametnim svjetlosnim proizvodima.
Wi-Fi usmjerivači Wi-Fi usmjerivači pretvaraju signale žične mreže i signale mobilne mreže u signale bežične mreže za računala, pametne telefone, tablete i druge bežične uređaje za povezivanje s mrežom. Na primjerample, širokopojasna mreža u domu mora biti povezana samo s Wi-Fi usmjerivačem kako bi se postiglo bežično umrežavanje Wi-Fi uređaja. Standard glavnog protokola koji podržavaju Wi-Fi usmjerivači je IEEE 802.11n, s prosječnom TxRate od 300 Mbps ili maksimalno 600 Mbps. Kompatibilni su s prethodnim standardima IEEE 802.11b i IEEE 802.11g. ESP32-C3 čip tvrtke Espressif podržava IEEE 802.11b/g/n, tako da možete odabrati jednopojasni (2.4 GHz) ili dvopojasni (2.4 GHz i 5 GHz) Wi-Fi usmjerivač.
Računalo (Linux/macOS/Windows) Razvojno okruženje bit će predstavljeno u 4. poglavlju. 2. poglavlje. Uvod i praksa IoT projekata 15
2.2.4 Proces razvoja
Slika 2.4. Koraci razvoja projekta Smart Light
Dizajn hardvera Dizajn hardvera IoT uređaja bitan je za IoT projekt. Kompletan projekt pametnog svjetla namijenjen je proizvodnji alamp radi pod glavnim napajanjem. Različiti proizvođači proizvode lamprazličitih stilova i vrsta upravljačkih programa, ali njihovi bežični moduli obično imaju istu funkciju. Kako bi se pojednostavio proces razvoja projekta Smart Ligh, ova knjiga pokriva samo dizajn hardvera i razvoj softvera bežičnih modula.
Konfiguracija IoT platforme u oblaku Da biste koristili IoT platforme u oblaku, trebate konfigurirati projekte na pozadini, kao što je stvaranje proizvoda, stvaranje uređaja, postavljanje svojstava uređaja itd.
Razvoj ugrađenog softvera za IoT uređaje Implementirajte očekivane funkcije s ESP-IDF-om, Espressifovim SDK-om na strani uređaja, uključujući povezivanje s IoT platformama u oblaku, razvoj LED upravljačkih programa i nadogradnju firmvera.
Razvoj aplikacija za pametne telefone Razvijte aplikacije za pametne telefone za Android i iOS sustave za realizaciju registracije i prijave korisnika, kontrole uređaja i drugih funkcija.
Optimizacija IoT uređaja Nakon što je osnovni razvoj funkcija IoT uređaja dovršen, možete se okrenuti zadacima optimizacije, kao što je optimizacija napajanja.
Ispitivanje masovne proizvodnje Provedite ispitivanja masovne proizvodnje u skladu s povezanim standardima, kao što je ispitivanje funkcije opreme, ispitivanje starenja, RF ispitivanje itd.
Unatoč gore navedenim koracima, Smart Light projekt ne mora nužno podlijegati takvoj proceduri jer se različiti zadaci također mogu obavljati u isto vrijeme. Na primjerample, ugrađeni softver i aplikacije za pametne telefone mogu se razvijati paralelno. Neki će se koraci također morati ponoviti, poput optimizacije IoT uređaja i testiranja masovne proizvodnje.
16 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
2.3 Sažetak
U ovom poglavlju prvo smo objasnili osnovne komponente i funkcionalne module IoT projekta, a zatim smo predstavili kućište Smart Light za praksu, govoreći o njegovoj strukturi, funkcijama, pripremi hardvera i procesu razvoja. Čitatelji mogu izvući zaključke iz prakse i postati sigurni u izvođenje IoT projekata uz minimalne pogreške u budućnosti.
Poglavlje 2. Uvod i praksa IoT projekata 17
18 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Poglavlje 3
Uvod
do
ESP
RainMaker
Internet stvari (IoT) nudi beskrajne mogućnosti za promjenu načina na koji ljudi žive, a ipak je razvoj IoT inženjeringa pun izazova. Uz javne oblake, proizvođači terminala mogu implementirati funkcionalnost proizvoda putem sljedećih rješenja:
Na temelju cloud platformi pružatelja rješenja. Na ovaj način proizvođači terminala trebaju samo dizajnirati hardver proizvoda, zatim povezati hardver s oblakom pomoću dostavljenog komunikacijskog modula i konfigurirati funkcije proizvoda slijedeći smjernice. Ovo je učinkovit pristup budući da eliminira potrebu za razvojem na strani poslužitelja i aplikacije te operacijama i održavanjem (O&M). Omogućuje proizvođačima terminala da se usredotoče na dizajn hardvera bez razmatranja implementacije u oblaku. Međutim, takva rješenja (npr. programska oprema uređaja i aplikacija) općenito nisu otvorenog koda, pa će funkcije proizvoda biti ograničene cloud platformom pružatelja usluga koja se ne može prilagoditi. U međuvremenu, podaci o korisniku i uređaju također pripadaju platformi u oblaku.
Na temelju proizvoda u oblaku. U ovom rješenju, nakon dovršetka dizajna hardvera, proizvođači terminala ne samo da trebaju implementirati funkcije oblaka koristeći jedan ili više proizvoda u oblaku koje pruža javni oblak, već također trebaju povezati hardver s oblakom. Na primjerample, za povezivanje s Amazonom Web Usluge (AWS), proizvođači terminala trebaju koristiti AWS proizvode kao što su Amazon API Gateway, AWS IoT Core i AWS Lambda kako bi omogućili pristup uređaju, daljinsko upravljanje, pohranu podataka, upravljanje korisnicima i druge osnovne funkcije. Ne samo da traži od proizvođača terminala da fleksibilno koriste i konfiguriraju proizvode u oblaku s dubinskim razumijevanjem i bogatim iskustvom, već također zahtijeva da uzmu u obzir troškove izgradnje i održavanja za početne i kasnijetagTo predstavlja velike izazove za energiju i resurse tvrtke.
U usporedbi s javnim oblacima, privatni se oblaci obično grade za specifične projekte i proizvode. Programerima privatnog oblaka dana je najviša razina slobode u dizajnu protokola i implementaciji poslovne logike. Proizvođači terminala mogu izraditi proizvode i sheme dizajna po želji te jednostavno integrirati i osnažiti korisničke podatke. Kombinacija visoke sigurnosti, skalabilnosti i pouzdanosti javnog oblaka s advantagprivatnog oblaka, Espressif je lansirao ESP
19
RainMaker, duboko integrirano rješenje privatnog oblaka temeljeno na Amazonovom oblaku. Korisnici mogu implementirati ESP RainMaker i izgraditi privatni oblak jednostavno s AWS računom.
3.1 Što je ESP RainMaker?
ESP RainMaker cjelovita je AIoT platforma izgrađena s više zrelih AWS proizvoda. Pruža različite usluge potrebne za masovnu proizvodnju kao što su pristup oblaku uređaja, nadogradnja uređaja, upravljanje pozadinom, prijava treće strane, glasovna integracija i upravljanje korisnicima. Korištenjem Serverless Application Repository (SAR) koje osigurava AWS, proizvođači terminala mogu brzo implementirati ESP RainMaker na svoje AWS račune, što je vremenski učinkovito i jednostavno za rukovanje. Upravlja i održava Espressif, SAR koji koristi ESP RainMaker pomaže programerima smanjiti troškove održavanja oblaka i ubrzati razvoj AIoT proizvoda, čime se grade sigurna, stabilna i prilagodljiva AIoT rješenja. Slika 3.1 prikazuje arhitekturu ESP RainMaker-a.
Slika 3.1. Arhitektura ESP RainMaker-a
Javni poslužitelj ESP RainMaker tvrtke Espressif besplatan je za sve ESP entuzijaste, proizvođače i edukatore za procjenu rješenja. Programeri se mogu prijaviti s Apple, Google ili GitHub računima i brzo izgraditi vlastite prototipove IoT aplikacija. Javni poslužitelj integrira Alexa i Google Home te pruža usluge glasovne kontrole, koje podržavaju Alexa Skill i Google Actions. Njegovu funkciju semantičkog prepoznavanja također pokreću treće strane. RainMaker IoT uređaji reagiraju samo na određene radnje. Iscrpan popis podržanih glasovnih naredbi potražite na platformama trećih strana. Osim toga, Espressif nudi javnu aplikaciju RainMaker za korisnike za kontrolu proizvoda putem pametnih telefona. 20 Bežična avantura ESP32-C3: Sveobuhvatni vodič za IoT
3.2 Implementacija ESP RainMaker
Kao što je prikazano na slici 3.2, ESP RainMaker sastoji se od četiri dijela: · Usluga potraživanja, koja omogućava RainMaker uređajima da dinamički dobiju certifikate. · RainMaker Cloud (također poznat kao pozadina oblaka), pruža usluge kao što su filtriranje poruka, upravljanje korisnicima, pohranjivanje podataka i integracije trećih strana. · RainMaker Agent, omogućuje spajanje RainMaker uređaja na RainMaker Cloud. · RainMaker klijent (RainMaker App ili CLI skripte), za dodjelu, stvaranje korisnika, pridruživanje uređaja i kontrolu, itd.
Slika 3.2. Struktura ESP RainMaker-a
ESP RainMaker pruža kompletan set alata za razvoj proizvoda i masovnu proizvodnju, uključujući: RainMaker SDK
RainMaker SDK temelji se na ESP-IDF-u i pruža izvorni kod agenta na strani uređaja i povezane C API-je za razvoj firmvera. Programeri samo trebaju napisati logiku aplikacije, a ostalo prepustiti okviru RainMaker. Za više informacija o C API-jima posjetite https://bookc3.espressif.com/rm/c-api-reference. Aplikacija RainMaker Javna verzija aplikacije RainMaker omogućuje razvojnim programerima da dovrše dodjelu uređaja, te kontroliraju i ispituju status uređaja (npr. proizvodi pametne rasvjete). Dostupna je u trgovinama aplikacija za iOS i Android. Za više detalja, molimo pogledajte Poglavlje 10. REST API-ji REST API-ji pomažu korisnicima da izgrade vlastite aplikacije slične aplikaciji RainMaker. Za više informacija posjetite https://swaggerapis.rainmaker.espressif.com/.
Poglavlje 3. Uvod u ESP RainMaker 21
Python API-ji CLI temeljen na Pythonu, koji dolazi s RainMaker SDK, osiguran je za implementaciju svih funkcija sličnih značajkama pametnog telefona. Za više informacija o Python API-jima posjetite https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, s višom razinom pristupa, dostupan je za privatnu implementaciju ESP RainMaker za skupno generiranje certifikata uređaja.
3.2.1 Usluga podnošenja zahtjeva
Sva komunikacija između RainMaker uređaja i pozadine oblaka odvija se putem MQTT+TLS. U kontekstu ESP RainMaker-a, "Claiming" je proces u kojem uređaji dobivaju certifikate od Claiming Service-a za povezivanje s pozadinom oblaka. Imajte na umu da je Claiming Service primjenjiv samo na javnu uslugu RainMaker, dok se za privatnu implementaciju certifikati uređaja moraju skupno generirati putem Admin CLI-ja. ESP RainMaker podržava tri vrste usluge potraživanja: Samopotraživanje
Uređaj sam dohvaća certifikate putem tajnog ključa unaprijed programiranog u eFuse nakon spajanja na internet. Host Driven Claiming Certifikati se dobivaju od razvojnog hosta s RainMaker računom. Potpomognuto potraživanje Certifikati se dobivaju putem aplikacija za pametne telefone tijekom pružanja usluga.
3.2.2 RainMaker Agent
Slika 3.3. Struktura RainMaker SDK-a Primarna funkcija RainMaker Agenta je pružanje povezivosti i pomoć aplikacijskom sloju u obradi uplink/downlink podataka u oblaku. Izgrađen je putem RainMaker SDK 22 ESP32-C3 Wireless Adventure: Opsežan vodič za IoT
i razvijen na temelju provjerenog ESP-IDF okvira, koristeći ESP-IDF komponente kao što su RTOS, NVS i MQTT. Slika 3.3 prikazuje strukturu RainMaker SDK.
RainMaker SDK uključuje dvije glavne značajke.
Veza
ja Suradnja s Claiming Serviceom za dobivanje certifikata uređaja.
ii. Povezivanje s pozadinom u oblaku pomoću sigurnog MQTT protokola za pružanje daljinskog povezivanja i implementaciju daljinskog upravljanja, izvješćivanje o porukama, upravljanje korisnicima, upravljanje uređajima itd. Prema zadanim postavkama koristi komponentu MQTT u ESP-IDF-u i pruža sloj apstrakcije za sučelje s drugim hrpe protokola.
iii. Pružanje komponente za pružanje wifi za Wi-Fi vezu i pružanje, esp https ota komponente za OTA nadogradnje i esp lokalne ctrl komponente za lokalno otkrivanje uređaja i povezivanje. Svi ovi ciljevi mogu se postići jednostavnom konfiguracijom.
Obrada podataka
ja Pohranjivanje certifikata uređaja izdanih od strane Claiming Service i podataka potrebnih prilikom pokretanja RainMakera, prema zadanim postavkama pomoću sučelja koje pruža nvs flash komponenta i pružanje API-ja programerima za izravnu upotrebu.
ii. Korištenje mehanizma povratnog poziva za obradu uplink/downlink podataka u oblaku i automatsko deblokiranje podataka na aplikacijskom sloju za jednostavnu obradu od strane programera. Na primjerampDalje, RainMaker SDK pruža bogata sučelja za uspostavljanje TSL (Thing Specification Language) podataka, koji su potrebni za definiranje TSL modela za opisivanje IoT uređaja i implementaciju funkcija kao što su mjerenje vremena, odbrojavanje i glasovna kontrola. Za osnovne interaktivne značajke kao što je mjerenje vremena, RainMaker SDK pruža rješenje bez razvoja koje se može jednostavno omogućiti kada je potrebno. Zatim će RainMaker Agent izravno obraditi podatke, poslati ih u oblak putem pridružene MQTT teme i vratiti promjene podataka u pozadini oblaka putem mehanizma povratnog poziva.
3.2.3 Cloud Backend
Pozadina oblaka izgrađena je na AWS Serverless Computing i ostvarena kroz AWS Cognito (sustav za upravljanje identitetom), Amazon API Gateway, AWS Lambda (serverless computing service), Amazon DynamoDB (NoSQL baza podataka), AWS IoT Core (IoT pristupna jezgra koja pruža MQTT pristup i filtriranje pravila), Amazon Simple Email Service (SES jednostavna usluga e-pošte), Amazon CloudFront (mreža za brzu isporuku), Amazon Simple Queue Service (SQS poruka u redu čekanja) i Amazon S3 (bucket storage service). Cilj mu je optimizirati skalabilnost i sigurnost. Uz ESP RainMaker, programeri mogu upravljati uređajima bez pisanja koda u oblaku. Poruke koje prijavljuju uređaji transparentno se prenose na
Poglavlje 3. Uvod u ESP RainMaker 23
klijentima aplikacija ili drugim uslugama trećih strana. Tablica 3.1 prikazuje proizvode i funkcije AWS oblaka koji se koriste u pozadini oblaka, s više proizvoda i značajki u razvoju.
Tablica 3.1. AWS cloud proizvodi i funkcije koje koristi cloud backend
AWS Cloud proizvod koji koristi RainMaker
Funkcija
AWS Cognito
Upravljanje korisničkim vjerodajnicama i podrška prijavama trećih strana
AWS Lambda
Implementacija temeljne poslovne logike pozadine u oblaku
Amazon Timestream Pohranjivanje podataka vremenske serije
Amazon DynamoDB Pohranjivanje osobnih podataka kupaca
AWS IoT Core
Podržava MQTT komunikaciju
Amazon SES
Pružanje usluga slanja elektroničke pošte
Amazon CloudFront Ubrzavanje upravljanja pozadinom webpristup stranici
Amazon SQS
Prosljeđivanje poruka iz AWS IoT Core
3.2.4 RainMaker klijent
RainMaker klijenti, kao što su App i CLI, komuniciraju s pozadinom u oblaku putem REST API-ja. Detaljne informacije i upute o REST API-jima mogu se pronaći u Swagger dokumentaciji koju osigurava Espressif. Klijent mobilne aplikacije RainMaker dostupan je za iOS i Android sustave. Omogućuje dodjelu uređaja, kontrolu i dijeljenje, kao i stvaranje i omogućavanje zadataka odbrojavanja i povezivanje s platformama trećih strana. Može automatski učitati korisničko sučelje i ikone u skladu s konfiguracijom koju su prijavili uređaji i u potpunosti prikazati TSL uređaja.
Na primjerample, ako je pametno svjetlo izgrađeno na RainMaker SDK-u exampdatoteke, ikona i korisničko sučelje žarulje automatski će se učitati kada se dodjela dovrši. Korisnici mogu promijeniti boju i svjetlinu svjetla kroz sučelje i postići kontrolu treće strane povezivanjem Alexa Smart Home Skill ili Google Smart Home Actions sa svojim ESP RainMaker računima. Slika 3.4 prikazuje ikonu i UI nprampsvjetla žarulje na Alexa, Google Home i ESP RainMaker App.
24 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
(a) Nprample – Alexa
(b) Nprample – Google početna
(c) Nprample – ESP RainMaker
Slika 3.4. Primampdatoteke ikona i korisničko sučelje žarulje na Alexa, Google Home i ESP RainMaker App
3.3 Praksa: Ključne točke za razvoj s ESP RainMaker
Nakon što je sloj upravljačkog programa uređaja dovršen, programeri mogu početi stvarati TSL modele i obrađivati podatke vezane uz silaznu vezu koristeći API-je koje pruža RainMaker SDK i omogućiti osnovne usluge ESP RainMaker na temelju definicije proizvoda i zahtjeva.
Poglavlje 3. Uvod u ESP RainMaker 25
Odjeljak 9.4 ove knjige objasnit će implementaciju LED pametnog svjetla u RainMakeru. Tijekom otklanjanja pogrešaka, programeri mogu koristiti CLI alate u RainMaker SDK-u za komunikaciju s pametnim svjetlom (ili pozvati REST API-je iz Swaggera).
Poglavlje 10 će razraditi korištenje REST API-ja u razvoju aplikacija za pametne telefone. OTA nadogradnje LED pametnih svjetiljki bit će pokrivene u 11. poglavlju. Ako su programeri omogućili daljinski nadzor ESP Insights, pozadina za upravljanje ESP RainMaker prikazat će podatke ESP Insights. Pojedinosti će biti predstavljene u 15. poglavlju.
ESP RainMaker podržava privatnu implementaciju, koja se razlikuje od javnog RainMaker poslužitelja na sljedeće načine:
Claiming Service Za generiranje certifikata u privatnim implementacijama, potrebno je koristiti RainMaker Admin CLI umjesto Claiming. S javnim poslužiteljem, programeri moraju dobiti administratorska prava za implementaciju nadogradnje firmvera, ali to je nepoželjno u komercijalnim implementacijama. Stoga se ne može pružiti zasebna usluga provjere autentičnosti za samopotraživanje, niti administratorska prava za potraživanje koje pokreće ili pomaže host.
Telefonske aplikacije U privatnim implementacijama, aplikacije se moraju zasebno konfigurirati i kompilirati kako bi se osiguralo da sustavi računa nisu interoperabilni.
Prijave treće strane i glasovna integracija Programeri moraju zasebno konfigurirati putem Google i Apple računa razvojnog programera kako bi omogućili prijave trećih strana, kao i integraciju Alexa Skill i Google Voice Assistant.
SAVJETI Za detalje o implementaciji oblaka posjetite https://customer.rainmaker.espressif. com. Što se tiče firmvera, migracija s javnog poslužitelja na privatni poslužitelj zahtijeva samo zamjenu certifikata uređaja, što uvelike poboljšava učinkovitost migracije i smanjuje troškove migracije i sekundarnog otklanjanja pogrešaka.
3.4 Značajke ESP RainMaker
Značajke ESP RainMakera uglavnom su usmjerene na tri aspekta – upravljanje korisnicima, krajnji korisnici i administratori. Sve značajke podržane su i na javnim i na privatnim poslužiteljima osim ako nije drugačije navedeno.
3.4.1 Upravljanje korisnicima
Značajke upravljanja korisnicima omogućuju krajnjim korisnicima registraciju, prijavu, promjenu lozinki, dohvaćanje lozinki itd.
26 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Registrirajte se i prijavite Metode registracije i prijave koje podržava RainMaker uključuju: · ID e-pošte + Lozinka · Broj telefona + Lozinka · Google račun · Apple račun · GitHub račun (samo javni poslužitelj) · Amazon račun (samo privatni poslužitelj)
NAPOMENA Prijavite se pomoću Googlea/Amazon dijeli korisničku adresu e-pošte s RainMakerom. Prijavite se koristeći Apple dijeli lažnu adresu koju Apple dodjeljuje korisniku posebno za uslugu RainMaker. RainMaker račun će se automatski kreirati za korisnike koji se po prvi put prijavljuju s Google, Apple ili Amazon računom.
Promjena lozinke Vrijedi samo za prijave na temelju ID-a e-pošte/telefonskog broja. Sve druge aktivne sesije bit će odjavljene nakon promjene lozinke. Prema ponašanju AWS Cognita, odjavljene sesije mogu ostati aktivne do 1 sat.
Dohvaćanje lozinke Vrijedi samo za prijave na temelju ID-a e-pošte/telefonskog broja.
3.4.2 Značajke krajnjeg korisnika
Značajke otvorene krajnjim korisnicima uključuju lokalno i daljinsko upravljanje i praćenje, planiranje, grupiranje uređaja, dijeljenje uređaja, push obavijesti i integracije trećih strana.
Daljinsko upravljanje i nadzor · Konfiguracija upita, vrijednosti parametara i status veze za jedan ili sve uređaje. · Postavite parametre za jedan ili više uređaja.
Lokalno upravljanje i nadzor Mobilni telefon i uređaj moraju biti spojeni na istu mrežu za lokalno upravljanje.
Zakazivanje · Korisnici unaprijed postavljaju određene radnje u određeno vrijeme. · Nije potrebna internetska veza za uređaj tijekom izvršavanja rasporeda. · Jednokratno ili ponavljanje (određivanjem dana) za jedan ili više uređaja.
Grupiranje uređaja Podržava višerazinsko apstraktno grupiranje Grupni metapodaci mogu se koristiti za stvaranje strukture kućne sobe.
Poglavlje 3. Uvod u ESP RainMaker 27
Dijeljenje uređaja Jedan ili više uređaja može se dijeliti s jednim ili više korisnika.
Push obavijesti Krajnji će korisnici primati push obavijesti za događaje kao što su · Dodani/uklonjeni novi uređaj(i) · Uređaj povezan s oblakom · Uređaj prekinut s oblakom · Izrađeni/prihvaćeni/odbijeni zahtjevi za dijeljenje uređaja · Poruke upozorenja koje su prijavili uređaji
Integracije trećih strana Alexa i Google Voice Assistant podržane su za upravljanje RainMaker uređajima, uključujući svjetla, prekidače, utičnice, ventilatore i temperaturne senzore.
3.4.3 Administratorske značajke
Administratorske značajke dopuštaju administratorima implementaciju registracije uređaja, grupiranja uređaja i OTA nadogradnje, te view statistiku i podatke ESP Insights.
Registracija uređaja Generirajte certifikate uređaja i registrirajte se s Admin CLI (samo privatni poslužitelj).
Grupiranje uređaja Stvorite apstraktne ili strukturirane grupe na temelju informacija o uređaju (samo privatni poslužitelj).
Over-the-Air (OTA) nadogradnje Učitajte firmware na temelju verzije i modela na jedan ili više uređaja ili grupu Pratite, otkažite ili arhivirajte OTA poslove.
View statistika Viewsposobna statistika uključuje: · Registracije uređaja (certifikati koje je registrirao administrator) · Aktivacije uređaja (uređaj povezan po prvi put) · Korisničke račune · Povezivanje korisnika i uređaja
View ESP Insights podaci Viewsposobni ESP Insights podaci uključuju: · Pogreške, upozorenja i prilagođene zapisnike · Izvješća o rušenju i analizu · Razloge ponovnog pokretanja · Mjerne podatke kao što je upotreba memorije, RSSI, itd. · Prilagođene mjerne podatke i varijable
28 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
3.5 Sažetak
U ovom poglavlju predstavili smo neke ključne razlike između javne implementacije RainMakera i privatne implementacije. Privatno rješenje ESP RainMaker koje je lansirao Espressif vrlo je pouzdano i proširivo. Svi čipovi serije ESP32 povezani su i prilagođeni AWS-u, što uvelike smanjuje troškove. Programeri se mogu usredotočiti na provjeru prototipa bez potrebe da uče o AWS proizvodima u oblaku. Također smo objasnili implementaciju i značajke ESP RainMakera te neke ključne točke za razvoj pomoću platforme.
Skenirajte za preuzimanje ESP RainMaker za Android Skenirajte za preuzimanje ESP RainMaker za iOS
Poglavlje 3. Uvod u ESP RainMaker 29
30 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Poglavlje Postavljanje 4 razvojnog okruženja
Ovo se poglavlje fokusira na ESP-IDF, službeni okvir za razvoj softvera za ESP32-C3. Objasnit ćemo kako postaviti okruženje na različitim operativnim sustavima, te predstaviti strukturu projekta i sustav izgradnje ESP-IDF-a, kao i korištenje povezanih razvojnih alata. Zatim ćemo predstaviti proces kompajliranja i pokretanja example projekta, dok nudi detaljno objašnjenje izlaznog dnevnika na svakom stage.
4.1 ESP-IDF višeview
ESP-IDF (Espressif IoT Development Framework) je razvojni okvir IoT na jednom mjestu koji pruža Espressif Technology. Koristi C/C++ kao glavni razvojni jezik i podržava unakrsnu kompilaciju pod glavnim operativnim sustavima kao što su Linux, Mac i Windows. BivšiampDatotečni programi uključeni u ovu knjigu razvijeni su pomoću ESP-IDF-a, koji nudi sljedeće značajke: · SoC upravljačke programe na razini sustava. ESP-IDF uključuje upravljačke programe za ESP32, ESP32-S2, ESP32-C3,
i drugi čips. Ovi upravljački programi obuhvaćaju biblioteku periferne niske razine (LL), biblioteku sloja hardverske apstrakcije (HAL), podršku za RTOS i upravljački softver gornjeg sloja, itd. · Bitne komponente. ESP-IDF uključuje temeljne komponente potrebne za razvoj IoT-a. Ovo uključuje više skupova mrežnih protokola kao što su HTTP i MQTT, okvir za upravljanje napajanjem s dinamičkom frekvencijskom modulacijom i značajke poput Flash enkripcije i sigurnog pokretanja itd. · Alati za razvoj i proizvodnju. ESP-IDF pruža često korištene alate za izgradnju, flash i otklanjanje pogrešaka tijekom razvoja i masovne proizvodnje (vidi sliku 4.1), kao što je sustav izgradnje temeljen na CMakeu, lanac alata za unakrsnu kompilaciju temeljen na GCC-u i JTAG alat za otklanjanje pogrešaka temeljen na OpenOCD-u, itd. Važno je napomenuti da se ESP-IDF kod primarno pridržava licence otvorenog koda Apache 2.0. Korisnici mogu razvijati osobni ili komercijalni softver bez ograničenja uz pridržavanje uvjeta licence otvorenog koda. Uz to, korisnici dobivaju besplatne trajne patentne licence, bez obveze otvaranja bilo kakvih izmjena izvornog koda.
31
Slika 4.1.
Izgradnja, bljeskanje i otklanjanje pogrešaka
alate za razvoj i masovnu proizvodnju
4.1.1 ESP-IDF verzije
ESP-IDF kod nalazi se na GitHubu kao projekt otvorenog koda. Trenutno su dostupne tri glavne verzije: v3, v4 i v5. Svaka glavna verzija obično sadrži različite subverzije, kao što su v4.2, v4.3, i tako dalje. Espressif Systems osigurava 30-mjesečnu podršku za ispravke grešaka i sigurnosne zakrpe za svaku objavljenu podverziju. Stoga se redovito objavljuju i revizije subverzija, kao što su v4.3.1, v4.2.2, itd. Tablica 4.1 prikazuje status podrške različitih verzija ESP-IDF za Espressif čipove, pokazujući jesu li u preview stage (nudi podršku za preview verzije, kojima možda nedostaju određene značajke ili dokumentacija) ili su službeno podržane.
Tablica 4.1. Status podrške za različite verzije ESP-IDF za Espressif čipove
Serija ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 podržan
v4.2 podržano podržano
v4.3 podržano podržano podržano
v4.4 podržano podržano podržano podržano podržano
preview
v5.0 podržano podržano podržano podržano podržano podržano podržano preview
32 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Iteracija glavnih verzija često uključuje prilagodbe strukture okvira i ažuriranja sustava kompilacije. Na primjerample, glavna promjena s v3.* na v4.* bila je postupna migracija sustava izrade s Make na CMake. S druge strane, ponavljanje manjih verzija obično uključuje dodavanje novih značajki ili podršku za nove čipove.
Važno je razlikovati i razumjeti odnos između stabilnih verzija i GitHub grana. Verzije označene kao v*.* ili v*.*.* predstavljaju stabilne verzije koje su prošle kompletno interno testiranje od strane Espressifa. Nakon popravka, kôd, lanac alata i dokumenti izdanja za istu verziju ostaju nepromijenjeni. Međutim, GitHub grane (npr. grana release/v4.3) podvrgavaju se čestim obvezama koda, često na dnevnoj bazi. Stoga se dva isječka koda u istoj grani mogu razlikovati, zbog čega programeri moraju odmah ažurirati svoj kod u skladu s tim.
4.1.2 Tijek rada ESP-IDF Git
Espressif slijedi određeni Git tijek rada za ESP-IDF, opisan na sljedeći način:
· Nove promjene se rade na glavnoj grani, koja služi kao glavna razvojna grana. ESP-IDF verzija na glavnoj grani uvijek nosi -dev tag da naznači da je trenutno u razvoju, kao što je v4.3-dev. Promjene na glavnoj grani prvo će biti reviewizdana i testirana u Espressifovom internom repozitoriju, a zatim prebačena na GitHub nakon završetka automatiziranog testiranja.
· Nakon što nova verzija dovrši razvoj značajki na glavnoj grani i ispuni kriterije za ulazak u beta testiranje, prelazi se na novu granu, kao što je izdanje/v4.3. Osim toga, ova nova grana je tagged kao verzija prije izdanja, poput v4.3-beta1. Programeri se mogu obratiti GitHub platformi za pristup kompletnom popisu podružnica i tags za ESP-IDF. Važno je napomenuti da beta verzija (verzija prije izdanja) još uvijek može imati značajan broj poznatih problema. Budući da beta verzija prolazi kontinuirano testiranje, ispravci grešaka se dodaju i ovoj verziji i glavnoj grani istovremeno. U međuvremenu, glavna grana je možda već počela razvijati nove značajke za sljedeću verziju. Kada je testiranje skoro dovršeno, grani se dodaje oznaka kandidata za izdanje (rc), koja označava da je potencijalni kandidat za službeno izdanje, kao što je v4.3-rc1. Na ovom stage, grana ostaje verzija prije izdanja.
· Ako se ne otkriju ili prijave veće pogreške, verzija prije izdanja na kraju dobiva oznaku glavne verzije (npr. v5.0) ili oznaku sporedne verzije (npr. v4.3) i postaje službena verzija izdanja, što je dokumentirano na stranici s bilješkama o izdanju. Naknadno, sve pogreške identificirane u ovoj verziji popravljene su u grani izdanja. Nakon završetka ručnog testiranja, ogranku se dodjeljuje oznaka verzije ispravka pogrešaka (npr. v4.3.2), što se također odražava na stranici s napomenama o izdanju.
Poglavlje 4. Postavljanje razvojnog okruženja 33
4.1.3 Odabir prikladne verzije
Budući da je ESP-IDF službeno počeo podržavati ESP32-C3 od verzije v4.3, a v4.4 još nije službeno objavljen u vrijeme pisanja ove knjige, verzija korištena u ovoj knjizi je v4.3.2, koja je revidirana verzija od v4.3. Međutim, važno je imati na umu da u vrijeme kada pročitate ovu knjigu, v4.4 ili novije verzije mogu već biti dostupne. Prilikom odabira verzije preporučujemo sljedeće:
· Za početne programere, preporučljivo je odabrati stabilnu verziju v4.3 ili njezinu revidiranu verziju, koja je usklađena s prethodnimample verzija korištena u ovoj knjizi.
· Za potrebe masovne proizvodnje, preporuča se korištenje najnovije stabilne verzije kako biste imali koristi od najsuvremenije tehničke podrške.
· Ako namjeravate eksperimentirati s novim čipovima ili istraživati nove značajke proizvoda, koristite glavnu granu. Najnovija verzija sadrži sve najnovije značajke, ali imajte na umu da mogu biti prisutne poznate ili nepoznate greške.
· Ako stabilna verzija koja se koristi ne uključuje željene nove značajke, a želite minimizirati rizike povezane s glavnom granom, razmislite o korištenju odgovarajuće grane izdanja, kao što je grana release/v4.4. Espressifov GitHub repozitorij prvo će stvoriti ogranak release/v4.4, a zatim objaviti stabilnu verziju v4.4 na temelju specifične povijesne snimke ovog ogranka, nakon dovršetka razvoja svih značajki i testiranja.
4.1.4 Krajview imenika ESP-IDF SDK
ESP-IDF SDK sastoji se od dva glavna direktorija: esp-idf i .espressif. Prvi sadrži izvorni kod ESP-IDF repozitorija files i kompilacijske skripte, dok potonji uglavnom pohranjuje lance alata za kompilaciju i drugi softver. Poznavanje ova dva direktorija pomoći će programerima da bolje iskoriste raspoložive resurse i ubrzaju proces razvoja. Struktura direktorija ESP-IDF-a opisana je u nastavku:
(1) ESP-IDF direktorij koda repozitorija (/esp/esp-idf), kao što je prikazano na slici 4.2.
a. Komponente imenika komponenti
Ovaj osnovni direktorij integrira brojne bitne softverske komponente ESP-IDF-a. Nijedan projektni kod ne može se kompajlirati bez oslanjanja na komponente unutar ovog direktorija. Uključuje podršku za upravljačke programe za razne Espressif čipove. Od LL biblioteke i HAL biblioteke sučelja za periferne uređaje do više razine Driver i Virtual File Podrška za sloj sustava (VFS), programeri mogu odabrati odgovarajuće komponente na različitim razinama za svoje razvojne potrebe. ESP-IDF također podržava više standardnih skupova mrežnih protokola kao što su TCP/IP, HTTP, MQTT, WebSocket, itd. Programeri mogu koristiti poznata sučelja kao što je Socket za izradu mrežnih aplikacija. Komponente omogućuju razumijevanje
34 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Slika 4.2. ESP-IDF direktorij kodova repozitorija
sive funkcionalnosti i može se lako integrirati u aplikacije, omogućujući programerima da se usredotoče isključivo na poslovnu logiku. Neke uobičajene komponente uključuju: · upravljački program: Ova komponenta sadrži periferne upravljačke programe za razne Espressif
serije čipova, kao što su GPIO, I2C, SPI, UART, LEDC (PWM), itd. Programi perifernih upravljačkih programa u ovoj komponenti nude apstraktna sučelja neovisna o čipu. Svaka periferija ima zajedničko zaglavlje file (kao što je gpio.h), eliminirajući potrebu rješavanja različitih pitanja vezanih uz podršku za čip. · esp_wifi: Wi-Fi, kao posebna periferija, tretira se kao zasebna komponenta. Uključuje višestruke API-je kao što su inicijalizacija različitih načina rada Wi-Fi upravljačkog programa, konfiguracija parametara i obrada događaja. Određene funkcije ove komponente dostupne su u obliku knjižnica statičkih veza. ESP-IDF također nudi sveobuhvatnu dokumentaciju za upravljački program za jednostavno korištenje.
Poglavlje 4. Postavljanje razvojnog okruženja 35
· freertos: Ova komponenta sadrži kompletan FreeRTOS kod. Osim sveobuhvatne podrške za ovaj operativni sustav, Espressif je također proširio svoju podršku na dvojezgrene čipove. Za dvojezgrene čipove kao što su ESP32 i ESP32-S3, korisnici mogu kreirati zadatke na određenim jezgrama.
b. Imenik dokumenata docs
Ovaj direktorij sadrži razvojne dokumente povezane s ESP-IDF-om, uključujući Vodič za početak rada, Referentni priručnik za API, Vodič za razvoj itd.
NAPOMENA Nakon što su ga sastavili automatizirani alati, sadržaj ovog imenika postavlja se na https://docs.espressif.com/projects/esp-idf. Provjerite jeste li prebacili cilj dokumenta na ESP32-C3 i odaberite navedenu verziju ESP-IDF.
c. Alati za skripte
Ovaj direktorij sadrži često korištene prednje alate za kompilaciju kao što su idf.py i alat za nadzor terminala idf_monitor.py, itd. Poddirektorij cmake također sadrži jezgrenu skriptu files sustava kompilacije, koji služi kao temelj za implementaciju ESP-IDF pravila kompilacije. Prilikom dodavanja varijabli okruženja, sadržaji unutar direktorija alata dodaju se varijabli okruženja sustava, dopuštajući da se idf.py izvrši izravno u putanji projekta.
d. nprample programski direktorij npramples
Ovaj direktorij sadrži veliku zbirku ESP-IDF example programe koji pokazuju korištenje komponentnih API-ja. Bivšiampdatoteke su organizirane u različite poddirektorije na temelju svojih kategorija:
· početak rada: Ovaj poddirektorij uključuje početnu razinu exampkao što su "hello world" i "blink" kako bi pomogli korisnicima da shvate osnove.
· bluetooth: Možete pronaći Bluetooth povezan nprampovdje, uključujući Bluetooth LE Mesh, Bluetooth LE HID, BluFi i još mnogo toga.
· wifi: Ovaj poddirektorij fokusiran je na Wi-Fi exampdatoteke, uključujući osnovne programe kao što su Wi-Fi SoftAP, Wi-Fi Station, espnow, kao i vlasnički komunikacijski protokol npr.amples iz Espressifa. Također uključuje više slojeva aplikacije nprampdatoteke temeljene na Wi-Fi-ju, kao što su Iperf, Sniffer i Smart Config.
· periferne jedinice: Ovaj opsežni poddirektorij dalje je podijeljen na brojne podmape na temelju naziva perifernih uređaja. Uglavnom sadrži periferni upravljački program example za Espressif čips, uz svaki prample s nekoliko pod-examples. Na primjer, gpio poddirektorij uključuje dva examples: GPIO i GPIO matrična tipkovnica. Važno je napomenuti da nisu svi bivšiampdatoteke u ovom direktoriju primjenjive su na ESP32-C3.
36 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Na primjerample, bivšiampdatoteke u usb/host primjenjive su samo na periferne uređaje s USB host hardverom (kao što je ESP32-S3), a ESP32-C3 nema ovaj periferni uređaj. Sustav kompilacije obično daje upite prilikom postavljanja cilja. PROČITAJ ME file svakog bivšegample navodi podržane čipove. · protokoli: Ovaj poddirektorij sadrži exampdatoteke za razne komunikacijske protokole, uključujući MQTT, HTTP, HTTP poslužitelj, PPPoS, Modbus, mDNS, SNTP, pokrivajući širok raspon komunikacijskih protokola npr.ampmanje potrebnih za razvoj IoT-a. · osiguranje: Ovdje ćete pronaći rezerviranje nprampdatoteke za različite metode, kao što je pružanje Wi-Fi i Bluetooth LE pružanje usluga. · sustav: Ovaj poddirektorij uključuje otklanjanje pogrešaka sustava nprampdatoteke (npr. praćenje hrpe, praćenje vremena izvođenja, praćenje zadataka), upravljanje napajanjem nprampdatoteke (npr. razni načini mirovanja, koprocesori) i prampdatoteke koje se odnose na uobičajene komponente sustava kao što su konzolni terminal, petlja događaja i sistemski mjerač vremena. · pohrana: Unutar ovog poddirektorija, otkrit ćete exampmanje od svega file sustavi i mehanizmi za pohranu koje podržava ESP-IDF (kao što je čitanje i pisanje Flasha, SD kartice i drugih medija za pohranu), kao i pr.ampdatoteke trajne pohrane (NVS), FatFS, SPIFFS i drugo file operacije sustava. · sigurnost: Ovaj poddirektorij sadrži nprampvezane uz flash enkripciju. (2) Direktorij lanca alata za kompilaciju ESP-IDF (/.espressif), kao što je prikazano na slici 4.3.
Slika 4.3. Direktorij lanca alata za kompilaciju ESP-IDF
Poglavlje 4. Postavljanje razvojnog okruženja 37
a. Distribucijski imenik softvera dist
Lanac alata ESP-IDF i ostali softver distribuiraju se u obliku komprimiranih paketa. Tijekom procesa instalacije, instalacijski alat prvo preuzima komprimirani paket u dist direktorij, a zatim ga izdvaja u navedeni direktorij. Nakon dovršetka instalacije sadržaj u ovom direktoriju može se sigurno ukloniti.
b. Python virtualni direktorij okruženja python env
Različite verzije ESP-IDF-a oslanjaju se na specifične verzije Python paketa. Instaliranje ovih paketa izravno na isto glavno računalo može dovesti do sukoba između verzija paketa. Kako bi to riješio, ESP-IDF koristi Python virtualna okruženja za izolaciju različitih verzija paketa. Pomoću ovog mehanizma programeri mogu instalirati više verzija ESP-IDF-a na isto glavno računalo i jednostavno se prebacivati između njih uvozom različitih varijabli okruženja.
c. ESP-IDF alat za kompilaciju lančani direktorijski alati
Ovaj direktorij uglavnom sadrži alate za unakrsnu kompilaciju potrebne za kompajliranje ESP-IDF projekata, kao što su CMake alati, Ninja alati za izgradnju i gcc lanac alata koji generira konačni izvršni program. Osim toga, ovaj direktorij sadrži standardnu biblioteku jezika C/C++ zajedno s odgovarajućim zaglavljem files. Ako se program poziva na sistemsko zaglavlje file poput #uključi , lanac alata za kompilaciju će locirati stdio.h file unutar ovog imenika.
4.2 Postavljanje ESP-IDF razvojnog okruženja
Razvojno okruženje ESP-IDF podržava glavne operativne sustave kao što su Windows, Linux i macOS. Ovaj odjeljak će predstaviti kako postaviti razvojno okruženje na svakom sustavu. Preporuča se razvoj ESP32-C3 na Linux sustavu, koji će biti detaljno predstavljen ovdje. Mnoge su upute primjenjive na svim platformama zbog sličnosti razvojnih alata. Stoga se savjetuje da pažljivo pročitate sadržaj ovog odjeljka.
NAPOMENA Možete pogledati online dokumente dostupne na https://bookc3.espressif.com/esp32c3, koji sadrže naredbe spomenute u ovom odjeljku.
4.2.1 Postavljanje ESP-IDF razvojnog okruženja na Linuxu
GNU razvojni alati i alati za ispravljanje pogrešaka potrebni za ESP-IDF razvojno okruženje izvorni su za Linux sustav. Osim toga, terminal naredbenog retka u Linuxu je moćan i jednostavan za korištenje, što ga čini idealnim izborom za razvoj ESP32-C3. Možeš
38 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
odaberite željenu distribuciju Linuxa, ali preporučujemo korištenje Ubuntua ili drugih sustava temeljenih na Debianu. Ovaj odjeljak pruža smjernice za postavljanje ESP-IDF razvojnog okruženja na Ubuntu 20.04.
1. Instalirajte potrebne pakete
Otvorite novi terminal i izvršite sljedeću naredbu za instalaciju svih potrebnih paketa. Naredba će automatski preskočiti pakete koji su već instalirani.
$ 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
SAVJETI Morate koristiti administratorski račun i lozinku za gornju naredbu. Prema zadanim postavkama, prilikom unosa lozinke neće biti prikazane informacije. Jednostavno pritisnite tipku "Enter" za nastavak postupka.
Git je ključni alat za upravljanje kodom u ESP-IDF-u. Nakon uspješnog postavljanja razvojnog okruženja, možete koristiti naredbu git log za view sve promjene koda napravljene od stvaranja ESP-IDF-a. Osim toga, Git se također koristi u ESP-IDF-u za potvrdu informacija o verziji, što je neophodno za instalaciju ispravnog lanca alata koji odgovara određenim verzijama. Uz Git, drugi važni sistemski alati uključuju Python. ESP-IDF uključuje brojne skripte za automatizaciju napisane u Pythonu. Alati kao što su CMake, Ninja-build i Ccache naširoko se koriste u C/C++ projektima i služe kao zadani alati za kompilaciju i izgradnju koda u ESP-IDF-u. libusb-1.0-0 i dfu-util glavni su upravljački programi koji se koriste za USB serijsku komunikaciju i snimanje firmvera. Nakon što su softverski paketi instalirani, možete koristiti apt show naredba za dobivanje detaljnih opisa svakog paketa. Na primjerample, upotrijebite apt show git za ispis informacija o opisu alata Git.
P: Što učiniti ako Python verzija nije podržana? O: ESP-IDF v4.3 zahtijeva verziju Pythona koja nije starija od v3.6. Za starije verzije Ubuntua, ručno preuzmite i instalirajte noviju verziju Pythona i postavite Python3 kao zadano Python okruženje. Detaljne upute možete pronaći pretraživanjem ključne riječi update-alternatives python.
2. Preuzmite kod repozitorija ESP-IDF
Otvorite terminal i stvorite mapu pod nazivom esp u svom matičnom direktoriju pomoću naredbe mkdir. Ako želite, možete odabrati drugi naziv mape. Koristite naredbu cd za ulazak u mapu.
Poglavlje 4. Postavljanje razvojnog okruženja 39
$ mkdir -p /esp $ cd /esp
Koristite naredbu git clone za preuzimanje koda ESP-IDF repozitorija, kao što je prikazano u nastavku:
$ git clone -b v4.3.2 – rekurzivno https://github.com/espressif/esp-idf.git
U gornjoj naredbi, parametar -b v4.3.2 navodi verziju za preuzimanje (u ovom slučaju, verziju 4.3.2). Parametar –recursive osigurava da se sva podspremišta ESP-IDF-a preuzimaju rekurzivno. Informacije o podspremištima mogu se pronaći u .gitmodules file.
3. Instalirajte lanac alata za razvoj ESP-IDF
Espressif nudi automatiziranu skriptu install.sh za preuzimanje i instaliranje lanca alata. Ova skripta provjerava trenutnu verziju ESP-IDF-a i okruženje operativnog sustava, a zatim preuzima i instalira odgovarajuću verziju paketa alata Python i lanaca alata za kompilaciju. Zadana staza instalacije za lanac alata je /.espressif. Sve što trebate učiniti je otići do direktorija esp-idf i pokrenuti install.sh.
$ cd /esp/esp-idf $ ./install.sh
Ako uspješno instalirate lanac alata, terminal će prikazati:
Gotovo!
U ovom trenutku ste uspješno postavili ESP-IDF razvojno okruženje.
4.2.2 Postavljanje ESP-IDF razvojnog okruženja na Windows
1. Preuzmite instalacijski program ESP-IDF alata
SAVJETI Preporučuje se postavljanje ESP-IDF razvojnog okruženja na Windows 10 ili noviji. Instalacijski program možete preuzeti s https://dl.espressif.com/dl/esp-idf/. Instalacijski program također je softver otvorenog koda, a njegov izvorni kod može biti viewizdano na https: //github.com/espressif/idf-installer.
· Online alat za instalaciju ESP-IDF alata
Ovaj instalacijski program je relativno malen, veličine oko 4 MB, a drugi paketi i kod će se preuzeti tijekom procesa instalacije. NapredaktagMrežni instalacijski program ne samo da se softverski paketi i kod mogu preuzeti na zahtjev tijekom procesa instalacije, već također omogućuje instalaciju svih dostupnih izdanja ESP-IDF-a i najnovije grane GitHub koda (kao što je glavna grana) . Nedostataktage je da zahtijeva mrežnu vezu tijekom postupka instalacije, što može uzrokovati neuspjeh instalacije zbog problema s mrežom.
40 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
· Izvanmrežni instalacijski program ESP-IDF alata Ovaj instalacijski program je veći, veličine oko 1 GB, i sadrži sve softverske pakete i kod potrebne za postavljanje okruženja. Glavni advantagIzvanmrežni instalacijski program je taj što se može koristiti na računalima bez pristupa internetu i općenito ima veću stopu uspješnosti instalacije. Treba imati na umu da izvanmrežni instalacijski program može instalirati samo stabilna izdanja ESP-IDF-a identificirana s v*.* ili v*.*.*.
2. Pokrenite instalacijski program za ESP-IDF alate Nakon preuzimanja odgovarajuće verzije instalacijskog programa (uzmite ESP-IDF Tools Offline 4.3.2 za npr.ample ovdje), dvaput kliknite na exe file za pokretanje instalacijskog sučelja ESP-IDF. Sljedeće pokazuje kako instalirati ESP-IDF stabilnu verziju v4.3.2 pomoću izvanmrežnog programa za instalaciju.
(1) U sučelju "Odaberi jezik instalacije" prikazanom na slici 4.4, odaberite jezik koji će se koristiti s padajućeg popisa.
Slika 4.4. Sučelje “Odaberite instalacijski jezik” (2) Nakon odabira jezika kliknite “U redu” da bi se pojavilo sučelje “Licencni ugovor”
(vidi sliku 4.5). Nakon što pažljivo pročitate instalacijski licencni ugovor, odaberite “Prihvaćam ugovor” i kliknite “Dalje”.
Slika 4.5. Sučelje “Licencnog ugovora” Poglavlje 4. Postavljanje razvojnog okruženja 41
(3) Odgview konfiguraciju sustava u sučelju "Provjera sustava prije instalacije" (vidi sliku 4.6). Provjerite verziju sustava Windows i informacije o instaliranom antivirusnom softveru. Pritisnite "Dalje" ako su sve konfiguracijske stavke normalne. U suprotnom, možete kliknuti "Cijeli zapisnik" za rješenja temeljena na ključnim stavkama.
Slika 4.6. SAVJETI sučelja “Provjera sustava prije instalacije”.
Za pomoć možete poslati zapisnike na https://github.com/espressif/idf-installer/issues. (4) Odaberite ESP-IDF instalacijski direktorij. Ovdje odaberite D:/.espressif, kao što je prikazano u
Slika 4.7 i kliknite na “Dalje”. Imajte na umu da je .espressif ovdje skriveni direktorij. Nakon dovršetka instalacije, možete view određeni sadržaj ovog imenika otvaranjem file upravitelj i prikazivanje skrivenih stavki.
Slika 4.7. Odaberite ESP-IDF instalacijski direktorij 42 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT
(5) Provjerite komponente koje je potrebno instalirati, kao što je prikazano na slici 4.8. Preporučljivo je koristiti zadanu opciju, odnosno dovršiti instalaciju, a zatim kliknuti “Dalje”.
Slika 4.8. Odaberite komponente za instalaciju (6) Potvrdite komponente koje želite instalirati i kliknite "Instaliraj" za pokretanje automatizirane instalacije
proces postavljanja, kao što je prikazano na slici 4.9. Proces instalacije može trajati desetke minuta, a traka napretka procesa instalacije prikazana je na slici 4.10. Molimo vas da strpljivo pričekate.
Slika 4.9. Priprema za instalaciju (7) Nakon dovršetka instalacije, preporuča se označiti “Registrirajte ESP-IDF
Izvršne alate kao izuzeća programa Windows Defender…” kako biste spriječili brisanje antivirusnog softvera files. Dodavanje stavki isključenja također može preskočiti česta antivirusna skeniranja
Poglavlje 4. Postavljanje razvojnog okruženja 43
Slika 4.10. Softver za traku napretka instalacije, uvelike poboljšava učinkovitost kompilacije koda Windows sustava. Pritisnite “Finish” za dovršetak instalacije razvojnog okruženja, kao što je prikazano na slici 4.11. Možete označiti “Pokreni ESP-IDF PowerShell okruženje” ili “Pokreni ESP-IDF naredbeni redak”. Pokrenite prozor kompilacije neposredno nakon instalacije kako biste osigurali normalno funkcioniranje razvojnog okruženja.
Slika 4.11. Instalacija dovršena (8) Otvorite instalirano razvojno okruženje na popisu programa (ili ESP-IDF 4.3
CMD ili ESP-IDF 4.3 PowerShell terminal, kao što je prikazano na slici 4.12), i varijabla okoline ESP-IDF automatski će se dodati kada se pokreće u terminalu. Nakon toga možete koristiti naredbu idf.py za operacije. Otvoreni ESP-IDF 4.3 CMD prikazan je na slici 4.13. 44 ESP32-C3 Bežična avantura: Sveobuhvatni vodič za IoT
Slika 4.12. Instalirano razvojno okruženje
Slika 4.13. ESP-IDF 4.3 CMD
4.2.3 Postavljanje ESP-IDF razvojnog okruženja na Macu
Proces instaliranja ESP-IDF razvojnog okruženja na Mac sustavu isti je kao i na Linux sustavu. Naredbe za preuzimanje koda repozitorija i instaliranje lanca alata potpuno su iste. Samo su naredbe za instaliranje paketa ovisnosti malo drugačije. 1. Instalirajte pakete ovisnosti. Otvorite terminal i instalirajte pip, Python alat za upravljanje paketima, pokretanjem sljedeće naredbe:
% sudo laka instalacija pip
Instalirajte Homebrew, alat za upravljanje paketima za macOS, pokretanjem sljedeće naredbe:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
Instalirajte potrebne pakete ovisnosti izvođenjem sljedeće naredbe:
% kuhati python3 instalirati cmake ninja ccache dfu-util
2. Preuzmite kod ESP-IDF repozitorija Slijedite upute navedene u odjeljku 4.2.1 za preuzimanje koda ESP-IDF repozitorija. Koraci su isti kao za preuzimanje na Linux sustavu.
Poglavlje 4. Postavljanje razvojnog okruženja 45
3. Instalirajte lanac alata za razvoj ESP-IDF
Slijedite upute navedene u odjeljku 4.2.1 za instalaciju lanca razvojnih alata ESP-IDF. Koraci su isti kao za instalaciju na Linux sustavu.
4.2.4 Instaliranje VS koda
Prema zadanim postavkama, ESP-IDF SDK ne uključuje alat za uređivanje koda (iako najnoviji instalacijski program ESP-IDF za Windows nudi opciju instaliranja ESP-IDF Eclipse). Možete koristiti bilo koji alat za uređivanje teksta po vašem izboru za uređivanje koda i zatim ga prevesti pomoću naredbi terminala.
Jedan popularan alat za uređivanje koda je VS Code (Visual Studio Code), koji je besplatan uređivač koda bogat značajkama sa sučeljem koje je jednostavno za korisnika. Nudi razne plugins koji pružaju funkcionalnosti kao što su navigacija kodom, označavanje sintakse, kontrola Git verzije i integracija terminala. Osim toga, Espressif je razvio namjenski dodatak pod nazivom Espressif IDF za VS Code, koji pojednostavljuje konfiguraciju projekta i otklanjanje pogrešaka.
Možete koristiti naredbu code u terminalu za brzo otvaranje trenutne mape u VS Codeu. Alternativno, možete upotrijebiti prečac Ctrl+ za otvaranje zadane konzole terminala unutar VS koda.
SAVJETI Preporučuje se korištenje VS koda za razvoj koda ESP32-C3. Preuzmite i instalirajte najnoviju verziju VS Codea na https://code.visualstudio.com/.
4.2.5 Uvod u razvojna okruženja trećih strana
Uz službeno razvojno okruženje ESP-IDF, koje primarno koristi jezik C, ESP32-C3 također podržava druge glavne programske jezike i širok raspon razvojnih okruženja trećih strana. Neke značajne opcije uključuju:
Arduino: platforma otvorenog koda za hardver i softver, koja podržava različite mikrokontrolere, uključujući ESP32-C3.
Koristi jezik C++ i nudi pojednostavljeni i standardizirani API, koji se obično naziva Arduino jezik. Arduino se široko koristi u razvoju prototipa i obrazovnim kontekstima. Omogućuje proširivi softverski paket i IDE koji omogućuje jednostavno kompiliranje i flashanje.
MicroPython: prevoditelj jezika Python 3 dizajniran za rad na ugrađenim platformama mikrokontrolera.
Uz jednostavan skriptni jezik, može izravno pristupiti perifernim resursima ESP32-C3 (kao što su UART, SPI i I2C) i komunikacijskim funkcijama (kao što su Wi-Fi i Bluetooth LE).
46 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
Ovo pojednostavljuje interakciju hardvera. MicroPython, u kombinaciji s Pythonovom opsežnom bibliotekom matematičkih operacija, omogućuje implementaciju složenih algoritama na ESP32-C3, olakšavajući razvoj aplikacija povezanih s umjetnom inteligencijom. Kao skriptni jezik, nema potrebe za ponavljanim kompiliranjem; mogu se napraviti izmjene i izravno izvršiti skripte.
NodeMCU: tumač LUA jezika razvijen za čipove serije ESP.
Podržava gotovo sve periferne funkcije ESP čipova i lakši je od MicroPythona. Slično MicroPythonu, NodeMCU koristi skriptni jezik, eliminirajući potrebu za ponovljenom kompilacijom.
Nadalje, ESP32-C3 također podržava operativne sustave NuttX i Zephyr. NuttX je operativni sustav u stvarnom vremenu koji pruža POSIX-kompatibilna sučelja, poboljšavajući prenosivost aplikacija. Zephyr je mali operativni sustav u stvarnom vremenu posebno dizajniran za IoT aplikacije. Uključuje brojne softverske biblioteke potrebne za razvoj IoT-a, postupno se razvijajući u sveobuhvatni softverski ekosustav.
Ova knjiga ne pruža detaljne upute za instalaciju za gore navedena razvojna okruženja. Možete instalirati razvojno okruženje na temelju vaših zahtjeva slijedeći odgovarajuću dokumentaciju i upute.
4.3 ESP-IDF sustav kompilacije
4.3.1 Osnovni koncepti sustava kompilacije
Projekt ESP-IDF skup je glavnog programa s funkcijom unosa i više neovisnih funkcionalnih komponenti. Na primjerample, projekt koji kontrolira LED prekidače uglavnom se sastoji od glavnog ulaznog programa i komponente upravljačkog programa koja kontrolira GPIO. Ako želite realizirati LED daljinski upravljač, također morate dodati Wi-Fi, TCP/IP protokol protokola, itd.
Sustav kompilacije može kompilirati, povezati i generirati izvršnu datoteku files (.bin) za kod kroz skup pravila izgradnje. Sustav kompilacije ESP-IDF v4.0 i novijih verzija temeljen je na CMakeu prema zadanim postavkama, a skripta kompilacije CMakeLists.txt može se koristiti za kontrolu ponašanja koda kod kompilacije. Osim što podržava osnovnu sintaksu CMake-a, sustav kompilacije ESP-IDF također definira skup zadanih pravila kompilacije i CMake funkcija, a skriptu kompilacije možete napisati jednostavnim izjavama.
4.3.2 Projekt File Struktura
Projekt je mapa koja sadrži glavne komponente ulaznog programa, korisnički definirane komponente i filepotrebni za izgradnju izvršnih aplikacija, kao što su kompilacijske skripte, konfiguracija
Poglavlje 4. Postavljanje razvojnog okruženja 47
files, particijske tablice, itd. Projekti se mogu kopirati i proslijeđivati dalje, a isti izvršni file može se prevesti i generirati na strojevima s istom verzijom ESP-IDF razvojnog okruženja. Tipičan ESP-IDF projekt file struktura je prikazana na slici 4.14.
Slika 4.14. Tipičan ESP-IDF projekt file struktura Budući da ESP-IDF podržava višestruke IoT čipove iz Espressifa, uključujući ESP32, seriju ESP32-S, seriju ESP32-C, seriju ESP32-H itd., potrebno je odrediti cilj prije sastavljanja koda. Cilj je i hardverski uređaj koji pokreće aplikacijski program i cilj izgradnje sustava kompilacije. Ovisno o vašim potrebama, možete odrediti jedan ili više ciljeva za svoj projekt. Na primjerample, putem naredbe idf.py set-target esp32c3, možete postaviti cilj kompilacije na ESP32-C3, tijekom čega će se učitati zadani parametri i putanja lanca alata kompilacije za ESP32C3. Nakon kompilacije može se generirati izvršni program za ESP32C3. Također možete ponovno pokrenuti naredbu set-target da biste postavili drugi cilj, a sustav kompilacije će se automatski očistiti i ponovno konfigurirati. Komponente
Komponente u ESP-IDF-u su modularne i neovisne kodne jedinice kojima se upravlja unutar sustava kompilacije. Organizirani su kao mape, pri čemu naziv mape prema zadanim postavkama predstavlja naziv komponente. Svaka komponenta ima vlastitu kompilacijsku skriptu koja 48 ESP32-C3 Wireless Adventure: Opsežan vodič za IoT
specificira svoje parametre kompilacije i ovisnosti. Tijekom procesa kompilacije, komponente se kompajliraju u zasebne statičke biblioteke (.a files) i eventualno u kombinaciji s drugim komponentama u obliku aplikacijskog programa.
ESP-IDF pruža bitne funkcije, kao što su operativni sustav, periferni upravljački programi i skup mrežnih protokola, u obliku komponenti. Ove komponente su pohranjene u direktoriju komponenti koji se nalazi unutar ESP-IDF korijenskog direktorija. Programeri ne moraju kopirati te komponente u direktorij komponenti myProjecta. Umjesto toga, samo trebaju navesti odnose ovisnosti ovih komponenti u CMakeLists.txt projekta file korištenjem REQUIRES ili PRIV_REQUIRES direktiva. Sustav kompajliranja automatski će locirati i kompajlirati potrebne komponente.
Stoga direktorij komponenti pod myProject nije potreban. Koristi se samo za uključivanje nekih prilagođenih komponenti projekta, koje mogu biti biblioteke trećih strana ili korisnički definirani kod. Osim toga, komponente se mogu nabaviti iz bilo kojeg direktorija osim ESP-IDF-a ili trenutnog projekta, kao što je projekt otvorenog koda spremljen u drugom direktoriju. U ovom slučaju trebate samo dodati putanju komponente postavljanjem varijable EXTRA_COMPONENT_DIRS u CMakeLists.txt u korijenskom direktoriju. Ovaj direktorij će nadjačati bilo koju ESP-IDF komponentu s istim nazivom, osiguravajući da se koristi ispravna komponenta.
Entry program main Glavni direktorij unutar projekta slijedi isti file struktura kao i druge komponente (npr. komponenta1). No, on ima poseban značaj jer je obavezna komponenta koja mora postojati u svakom projektu. Glavni direktorij sadrži izvorni kod projekta i ulaznu točku korisničkog programa, obično nazvanu app_main. Prema zadanim postavkama, izvođenje korisničkog programa počinje od ove ulazne točke. Glavna komponenta se također razlikuje po tome što automatski ovisi o svim komponentama unutar putanje pretraživanja. Stoga nema potrebe eksplicitno naznačiti ovisnosti pomoću direktiva REQUIRES ili PRIV_REQUIRES u CMakeLists.txt file.
Konfiguracija file Korijenski direktorij projekta sadrži konfiguraciju file nazvan sdkconfig, koji sadrži konfiguracijske parametre za sve komponente unutar projekta. Sdkconfig file automatski generira sustav kompilacije i može se modificirati i regenerirati naredbom idf.py menuconfig. Opcije menuconfig uglavnom potječu iz Kconfig.projbuild projekta i Kconfig komponenti. Programeri komponenti općenito dodaju konfiguracijske stavke u Kconfig kako bi komponentu učinili fleksibilnom i podesivom.
Direktorij za izgradnju Prema zadanim postavkama, direktorij za izgradnju unutar projekta pohranjuje posrednike files i fi-
Poglavlje 4. Postavljanje razvojnog okruženja 49
nalni izvršni programi generirani naredbom idf.py build. Općenito, nije potrebno izravno pristupiti sadržaju direktorija za izgradnju. ESP-IDF pruža unaprijed definirane naredbe za interakciju s imenikom, kao što je korištenje idf.py flash naredbe za automatsko lociranje kompajlirane binarne datoteke file i flashirajte ga na navedenu flash adresu, ili korištenjem naredbe idf.py fullclean za čišćenje cijelog direktorija za izgradnju.
Particijska tablica (partitions.csv) Svaki projekt zahtijeva particijsku tablicu za podjelu prostora flasha i određivanje veličine i početne adrese izvršnog programa i prostora korisničkih podataka. Naredba idf.py flash ili OTA program za nadogradnju će flashati firmware na odgovarajuću adresu prema ovoj tablici. ESP-IDF pruža nekoliko zadanih tablica particija u komponentama/partition_table, kao što su partitions_singleapp.csv i partitions_two_ ota.csv, koje se mogu odabrati u menuconfig.
Ako zadana tablica particija sustava ne može zadovoljiti zahtjeve projekta, prilagođeni partitions.csv može se dodati u direktorij projekta i odabrati u menuconfig.
4.3.3 Zadana pravila izgradnje sustava kompilacije
Pravila za nadjačavanje komponenti s istim imenom Tijekom procesa pretraživanja komponenti, sustav kompilacije slijedi određeni redoslijed. Prvo traži interne komponente ESP-IDF-a, zatim traži komponente korisničkog projekta i na kraju traži komponente u EXTRA_COMPONENT_DIRS. U slučajevima kada više direktorija sadrži komponente s istim imenom, komponenta pronađena u posljednjem direktoriju će nadjačati sve prethodne komponente s istim nazivom. Ovo pravilo dopušta prilagodbu komponenti ESP-IDF-a unutar korisničkog projekta, uz zadržavanje izvornog ESP-IDF koda netaknutim.
Pravila za uključivanje uobičajenih komponenti prema zadanim postavkama Kao što je spomenuto u odjeljku 4.3.2, komponente moraju eksplicitno navesti svoje ovisnosti o drugim komponentama u CMakeLists.txt. Međutim, uobičajene komponente kao što je freertos automatski su uključene u sustav izgradnje prema zadanim postavkama, čak i ako njihovi odnosi ovisnosti nisu eksplicitno definirani u skripti kompilacije. Uobičajene komponente ESP-IDF-a uključuju freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv i cxx. Korištenjem ovih uobičajenih komponenti izbjegava se ponavljajući rad prilikom pisanja CMakeLists.txt i čini ga sažetijim.
Pravila za nadjačavanje konfiguracijskih stavki Programeri mogu dodati zadane konfiguracijske parametre dodavanjem zadane konfiguracije file pod nazivom sdkconfig.zadano za projekt. Na primjerample, dodavanje CONFIG_LOG_
50 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
DEFAULT_LEVEL_NONE = y može konfigurirati UART sučelje da prema zadanim postavkama ne ispisuje podatke dnevnika. Nadalje, ako je potrebno postaviti specifične parametre za određeni cilj, konfiguraciju file pod nazivom sdkconfig.defaults.TARGET_NAME može se dodati, gdje TARGET_NAME može biti esp32s2, esp32c3 i tako dalje. Ove konfiguracije files se uvoze u sdkconfig tijekom kompilacije, s općom zadanom konfiguracijom file Prvo se uvozi sdkconfig.defaults, nakon čega slijedi konfiguracija specifična za cilj file, kao što je sdkconfig.defaults.esp32c3. U slučajevima kada postoje stavke konfiguracije s istim nazivom, potonja konfiguracija file će nadjačati prijašnje.
4.3.4 Uvod u skriptu kompilacije
Kada razvijate projekt koristeći ESP-IDF, programeri ne samo da trebaju napisati izvorni kod, već moraju napisati i CMakeLists.txt za projekt i komponente. CMakeLists.txt je tekst file, također poznat kao skripta kompilacije, koja definira niz objekata kompilacije, stavki konfiguracije kompilacije i naredbi za vođenje procesa kompilacije izvornog koda. Sustav kompilacije ESP-IDF v4.3.2 temelji se na CMake. Uz podršku izvornih CMake funkcija i naredbi, također definira niz prilagođenih funkcija, čineći mnogo lakšim pisanje kompilacijskih skripti.
Skripte kompilacije u ESP-IDF-u uglavnom uključuju skriptu kompilacije projekta i kompilacijske skripte komponenti. CMakeLists.txt u korijenskom direktoriju projekta naziva se skriptom kompilacije projekta, koja vodi proces kompilacije cijelog projekta. Osnovna skripta kompilacije projekta obično uključuje sljedeća tri retka:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Među njima, cmake_minimum_required (VERZIJA 3.5) mora biti postavljen u prvi redak, koji se koristi za označavanje minimalnog broja verzije CMake-a koji je potreban za projekt. Novije verzije CMakea općenito su kompatibilne sa starijim verzijama, pa prema tome prilagodite broj verzije kada koristite novije CMake naredbe kako biste osigurali kompatibilnost.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) uvozi unaprijed definirane konfiguracijske stavke i naredbe ESP-IDF sustava kompilacije, uključujući zadana pravila izgradnje sustava kompilacije opisana u odjeljku 4.3.3. project(myProject) kreira sam projekt i navodi njegov naziv. Ovo će se ime koristiti kao konačna izlazna binarna datoteka file ime, tj. myProject.elf i myProject.bin.
Projekt može imati više komponenti, uključujući glavnu komponentu. Direktorij najviše razine svake komponente sadrži CMakeLists.txt file, koji se naziva skripta kompilacije komponente. Skripte za kompilaciju komponenti uglavnom se koriste za određivanje ovisnosti komponenti, konfiguracijskih parametara, izvornog koda files, i uključeno zaglavlje files za
Poglavlje 4. Postavljanje razvojnog okruženja 51
kompilacija. S ESP-IDF-ovom prilagođenom funkcijom idf_component_register, minimalni potreban kod za skriptu kompilacije komponente je sljedeći:
1. idf_component_register(SRCS “src1.c”
2.
INCLUDE_DIRS “uključi”
3.
ZAHTJEVA komponentu1)
Parametar SRCS daje popis izvora files u komponenti, odvojene razmacima ako ih ima više files. Parametar INCLUDE_DIRS daje popis javnih zaglavlja file direktorije za komponentu, koji će biti dodani uključenoj stazi pretraživanja za druge komponente koje ovise o trenutnoj komponenti. Parametar REQUIRES identificira ovisnosti javne komponente za trenutnu komponentu. Za komponente je potrebno eksplicitno navesti o kojim komponentama ovise, kao što je komponenta2 ovisno o komponenti1. Međutim, za glavnu komponentu, koja prema zadanim postavkama ovisi o svim komponentama, parametar REQUIRES može se izostaviti.
Osim toga, izvorne CMake naredbe također se mogu koristiti u skripti kompilacije. Na primjerample, koristite naredbu set za postavljanje varijabli, kao što je set(VARIABLE “VALUE”).
4.3.5 Uvod u uobičajene naredbe
ESP-IDF koristi CMake (alat za konfiguraciju projekta), Ninja (alat za izgradnju projekta) i esptool (alat za flash) u procesu kompilacije koda. Svaki alat ima različitu ulogu u procesu kompilacije, izgradnje i flasha, a također podržava različite operativne naredbe. Kako bi se olakšao korisnički rad, ESP-IDF dodaje unificirani front-end idf.py koji omogućuje brzo pozivanje gore navedenih naredbi.
Prije upotrebe idf.py provjerite sljedeće:
· Varijabla okoline IDF_PATH ESP-IDF-a dodana je trenutnom terminalu. · Direktorij za izvršavanje naredbi je korijenski direktorij projekta, koji uključuje
skripta kompilacije projekta CMakeLists.txt.
Uobičajene naredbe idf.py su sljedeće:
· idf.py –pomoć: prikaz popisa naredbi i njihovih uputa za korištenje. · idf.py set-target : postavljanje kompilacije taidf.py fullcleanrget, npr
kao zamjena s esp32c3. · idf.py menuconfig: pokretanje menuconfig-a, grafičke konfiguracije terminala
alat, koji može odabrati ili izmijeniti konfiguracijske opcije, a rezultati konfiguracije spremaju se u sdkconfig file. · idf.py build: pokretanje kompilacije koda. Međuprodukt files i konačni izvršni program generiran kompilacijom će se prema zadanim postavkama spremiti u direktorij za izgradnju projekta. Proces kompilacije je inkrementalan, što znači da ako postoji samo jedan izvor file je modificirano, samo modificirano file bit će sastavljeno sljedeći put.
52 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
· idf.py clean: čišćenje međuprodukta files generiran kompilacijom projekta. Cijeli projekt bit će prisiljen kompajlirati u sljedećoj kompilaciji. Imajte na umu da CMake konfiguracija i konfiguracijske izmjene koje je napravio menuconfig neće biti izbrisane tijekom čišćenja.
· idf.py fullclean: brisanje cijelog direktorija za izgradnju, uključujući sve CMake konfiguracijske izlaze files. Prilikom ponovne izgradnje projekta, CMake će konfigurirati projekt od nule. Imajte na umu da će ova naredba rekurzivno izbrisati sve files u direktoriju za izgradnju, stoga ga koristite s oprezom, i konfiguraciju projekta file neće biti izbrisani.
· idf.py flash: flashanje izvršnog binarnog programa file generirano nadogradnjom ciljanog ESP32-C3. Opcije -str i -b koriste se za postavljanje naziva uređaja serijskog priključka i brzine prijenosa podataka za treptanje. Ako ove dvije opcije nisu navedene, automatski će se otkriti serijski priključak i koristit će se zadana brzina prijenosa podataka.
· idf.py monitor: prikazuje izlaz serijskog porta ciljanog ESP32-C3. Opcija -p može se koristiti za određivanje naziva uređaja serijskog porta na strani glavnog računala. Tijekom ispisa serijskog porta pritisnite kombinaciju tipki Ctrl+] za izlaz iz monitora.
Gore navedene naredbe također se mogu kombinirati prema potrebi. Na primjerample, naredba idf.py build flash monitor izvršit će kompilaciju koda, flash i otvoriti monitor serijskog porta u nizu.
Možete posjetiti https://bookc3.espressif.com/build-system kako biste saznali više o ESP-IDF sustavu kompilacije.
4.4 Vježbanje: sastavljanje prample Program “Blink”
4.4.1 Prample Analiza
Ovaj odjeljak će uzeti program Blink kao primjerample analizirati file struktura i pravila kodiranja stvarnog projekta u detalje. Blink program implementira LED blinking efekt, a projekt se nalazi u imeniku examples/get-started/blink, koji sadrži izvor file, konfiguracija files, i nekoliko kompilacijskih skripti.
Projekt pametnog svjetla predstavljen u ovoj knjizi temelji se na ovom primjeruample program. Funkcije će se postupno dodavati u kasnijim poglavljima kako bi se konačno dovršilo.
Izvorni kod Kako bi se pokazao cijeli razvojni proces, Blink program je kopiran u esp32c3-iot-projects/device firmware/1 blink.
Struktura direktorija blink projekta files prikazan je na slici 4.15.
Projekt blink sadrži samo jedan glavni direktorij, koji je posebna komponenta koja
Poglavlje 4. Postavljanje razvojnog okruženja 53
Slika 4.15. File struktura direktorija blink projekta
moraju biti uključeni kako je opisano u odjeljku 4.3.2. Glavni direktorij se uglavnom koristi za pohranjivanje implementacije funkcije app_main(), koja je ulazna točka u korisnički program. Projekt blink ne uključuje direktorij komponenti, jer ovaj example treba koristiti samo komponente koje dolaze s ESP-IDF-om i ne zahtijeva dodatne komponente. CMakeLists.txt uključen u blink projekt koristi se za vođenje procesa kompilacije, dok se Kconfig.projbuild koristi za dodavanje konfiguracijskih stavki za ovaj example program u menuconfig. Ostalo nepotrebno files neće utjecati na kompilaciju koda, tako da se o njima neće raspravljati ovdje. Detaljan uvod u blink projekt files je kako slijedi.
1. /*blink.c uključuje sljedeće zaglavlje files*/
2. #uključi
//Standardno zaglavlje C biblioteke file
3. #include “freertos/freeRTOS.h” //FreeRTOS glavno zaglavlje file
4. #include “freertos/task.h”
//FreeRTOS Zaglavlje zadatka file
5. #include “sdkconfig.h”
//Konfiguracijsko zaglavlje file generira kconfig
6. #include “driver/gpio.h”
//Zaglavlje GPIO upravljačkog programa file
Izvor file blink.c sadrži niz zaglavlja files odgovara deklaraciji funkcije
cije. ESP-IDF općenito slijedi redoslijed uključivanja zaglavlja standardne biblioteke files, slobodnoR-
TOS zaglavlje files, zaglavlje vozača files, zaglavlje druge komponente files, i zaglavlje projekta files.
Redoslijed kojim zaglavljem filemogu utjecati na konačni rezultat kompilacije, pa pokušajte
slijedite zadana pravila. Treba napomenuti da se sdkconfig.h automatski generira
by kconfig i može se konfigurirati samo putem naredbe idf.py menuconfig.
Izravna izmjena ovog zaglavlja file bit će prepisana.
1. /*Možete odabrati GPIO koji odgovara LED-u u idf.py menuconfig, a rezultat izmjene menuconfig je da je vrijednost CONFIG_BLINK
_GPIO će se promijeniti. Također možete izravno izmijeniti definiciju makronaredbe
ovdje i promijenite CONFIG_BLINK_GPIO na fiksnu vrijednost.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Konfigurirajte IO kao GPIO zadanu funkciju, omogućite pull-up način i
6.
onemogućite načine unosa i izlaza*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 bežična avantura: Sveobuhvatni vodič za IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Postavi GPIO na izlazni mod*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); dok(1) {
/*Ispis dnevnika*/ printf(“Isključivanje LEDn”); /*Isključi LED (niska razina izlaza)*/ gpio_set_level(BLINK_GPIO, 0); /*Odgoda (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“Uključivanje LEDn”); /*Uključi LED (visoka razina izlaza)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Funkcija app_main() u Blink example program služi kao ulazna točka za korisničke programe. To je jednostavna funkcija bez parametara i bez povratne vrijednosti. Ova funkcija se poziva nakon što je sustav dovršio inicijalizaciju, što uključuje zadatke kao što su inicijalizacija serijskog porta dnevnika, konfiguracija single/dual core i konfiguracija nadzornog psa.
Funkcija app_main() izvodi se u kontekstu zadatka pod nazivom main. Veličina hrpe i prioritet ovog zadatka mogu se prilagoditi u menuconfig Componentconfig Common ESP-related.
Za jednostavne zadatke poput treptanja LED-a, sav potreban kod može se implementirati izravno u funkciju app_main(). To obično uključuje inicijaliziranje GPIO-a koji odgovara LED-u i korištenje while(1) petlje za uključivanje i isključivanje LED-a. Alternativno, možete koristiti FreeRTOS API za stvaranje novog zadatka koji upravlja treptanjem LED-a. Nakon što je novi zadatak uspješno kreiran, možete izaći iz funkcije app_main().
Sadržaj datoteke main/CMakeLists.txt file, koji vodi proces kompilacije za glavnu komponentu, je kako slijedi:
1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )
Među njima, main/CMakeLists.txt poziva samo jednu funkciju sustava kompilacije, a to je idf_component_register. Slično CMakeLists.txt za većinu drugih komponenti, blink.c se dodaje u SRCS, a izvor fileDodani u SRCS će se kompajlirati. U isto vrijeme, “.”, koji predstavlja stazu na kojoj se nalazi CMakeLists.txt, treba dodati u INCLUDE_DIRS kao direktorije za pretraživanje zaglavlja files. Sadržaj CMakeLists.txt je sljedeći:
1. #Navedite v3.5 kao najstariju CMake verziju koju podržava trenutni projekt 2. #Verzije niže od v3.5 moraju se nadograditi prije nastavka kompilacije 3. cmake_minimum_required(VERZIJA 3.5) 4. #Uključite zadanu CMake konfiguraciju ESP-a -IDF kompilacijski sustav
Poglavlje 4. Postavljanje razvojnog okruženja 55
5. uključi($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Stvori projekt pod nazivom “blink” 7. projekt(mojProjekt)
Među njima, CMakeLists.txt u korijenskom direktoriju uglavnom uključuje $ENV{IDF_ PATH}/tools/cmake/project.cmake, što je glavna CMake konfiguracija file pruža ESP-IDF. Koristi se za kon
Dokumenti / Resursi
![]() |
Espressif Systems ESP32-C3 bežična avantura [pdf] Korisnički priručnik ESP32-C3 bežična avantura, ESP32-C3, bežična avantura, avantura |