ESP32-C3 Wireless Adventure

ESP32-C3 Wireless Adventure

Sveobuhvatni vodič za IoT

Espressif Systems 12. juna 2023

Specifikacije

  • Proizvod: ESP32-C3 Wireless Adventure
  • Proizvođač: Espressif Systems
  • Datum: 12. jun 2023

Upute za upotrebu proizvoda

Priprema

Prije korištenja ESP32-C3 Wireless Adventure, uvjerite se da jeste
upoznati sa konceptima i arhitekturom IoT-a. Ovo će pomoći
razumijete kako se uređaj uklapa u veći IoT ekosistem
i njegove potencijalne primjene u pametnim kućama.

Uvod i praksa IoT projekata

U ovom odeljku ćete naučiti 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 osnovu za razumijevanje i stvaranje vašeg
sopstvene IoT projekte.

Praksa: Projekt pametnog svjetla

U ovom praktičnom projektu naučit ćete kako stvoriti pametno
svjetlo koristeći ESP32-C3 Wireless Adventure. Struktura projekta,
funkcije, priprema hardvera i proces razvoja
detaljno objašnjeno.

Struktura projekta

Projekat se sastoji od nekoliko komponenti, uključujući
ESP32-C3 Wireless Adventure, LED diode, senzori i oblak
backend.

Projektne funkcije

Projekt pametnog svjetla vam omogućava da kontrolirate svjetlinu i
boja LED dioda na daljinu putem mobilne aplikacije ili web
interfejs.

Priprema hardvera

Da biste se pripremili za projekat, moraćete da sakupite
neophodne hardverske komponente, kao što je ESP32-C3 Wireless
Adventure ploča, LED diode, otpornici i napajanje.

Razvojni proces

Proces razvoja uključuje postavljanje razvoja
okruženje, pisanje koda za kontrolu LED dioda, povezivanje na
cloud backend, i testiranje funkcionalnosti smart
svjetlo.

Uvod u ESP RainMaker

ESP RainMaker je moćan okvir za razvoj IoT-a
uređaja. U ovom odeljku ćete naučiti šta je ESP RainMaker i
kako se to može implementirati u vaše projekte.

Šta je ESP RainMaker?

ESP RainMaker je platforma zasnovana na oblaku koja nudi skup
alati i usluge za izgradnju i upravljanje IoT uređajima.

Implementacija ESP RainMaker-a

Ovaj odjeljak objašnjava različite komponente koje su uključene
implementacija ESP RainMaker-a, uključujući uslugu za polaganje prava,
RainMaker agent, cloud backend i RainMaker klijent.

Praksa: Ključne tačke za razvoj sa ESP RainMaker

U ovom odjeljku o praksi naučit ćete o ključnim točkama
uzeti u obzir prilikom razvoja sa ESP RainMaker. Ovo uključuje uređaj
polaganje prava, sinhronizacija podataka i upravljanje korisnicima.

Karakteristike ESP RainMaker-a

ESP RainMaker nudi razne funkcije za upravljanje korisnicima, kraj
korisnika i administratora. Ove karakteristike omogućavaju jednostavan uređaj
podešavanje, daljinsko upravljanje i nadzor.

Postavljanje razvojnog okruženja

Ovaj odeljak pruža prekoview ESP-IDF (Espressif IoT
Razvojni okvir), koji je službeni razvojni okvir
za uređaje zasnovane na ESP32. Objašnjava različite verzije
ESP-IDF i kako postaviti razvojno okruženje.

Razvoj hardvera i drajvera

Dizajn hardvera Smart Light proizvoda zasnovanih na ESP32-C3

Ovaj odjeljak se fokusira na hardverski dizajn pametnog svjetla
proizvodi bazirani na ESP32-C3 Wireless Adventure. Pokriva
karakteristike i sastav pametnih svjetlosnih proizvoda, kao i
hardverski dizajn sistema jezgre ESP32-C3.

Karakteristike i sastav Smart Light proizvoda

Ovaj pododjeljak objašnjava karakteristike i komponente koje čine
do pametnih svjetlosnih proizvoda. Govori o različitim funkcionalnostima
i razmatranja dizajna za kreiranje pametnih svjetala.

Dizajn hardvera ESP32-C3 Core System

Hardverski dizajn sistema jezgre ESP32-C3 uključuje napajanje
napajanje, sekvenca uključivanja, resetovanje sistema, SPI flash, izvor takta,
i razmatranja RF i antena. Ovaj pododjeljak pruža
detaljne informacije o ovim aspektima.

FAQ

P: Šta je ESP RainMaker?

O: ESP RainMaker je platforma zasnovana na oblaku koja pruža alate
i usluge za izgradnju i upravljanje IoT uređajima. To pojednostavljuje
proces razvoja i omogućava jednostavno podešavanje 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, potrebno vam je
da instalirate ESP-IDF (Espressif IoT razvojni okvir) i
konfigurirajte ga prema priloženim uputama. ESP-IDF je
službeni razvojni okvir za uređaje zasnovane na ESP32.

P: Koje su karakteristike ESP RainMaker-a?

O: ESP RainMaker nudi različite funkcije, uključujući korisničke
upravljanje, funkcije krajnjeg korisnika i funkcije administratora. Upravljanje korisnicima
omogućava jednostavno traženje uređaja i sinhronizaciju podataka. Krajnji korisnik
funkcije omogućavaju daljinsko upravljanje uređajima putem mobilne aplikacije ili
web interfejs. Funkcije administratora pružaju alate za praćenje uređaja
i menadžment.

ESP32-C3 Wireless Adventure
Sveobuhvatni vodič za IoT
Espressif Systems 12. juna 2023

Sadržaj

I Priprema

1

1 Uvod u IoT

3

1.1 Arhitektura IoT-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 IoT aplikacija 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 zajedničke IoT Cloud platforme . . . . . . . . . . . . . . 11

2.2 Vježba: Projekt Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

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

2.2.2 Funkcije projekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Šta je ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Implementacija ESP RainMaker-a . . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Usluga potraživanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

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

3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 RainMaker klijent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Vježba: Ključne točke za razvoj s ESP RainMaker . . . . . . . . . . . . 25

3.4 Karakteristike ESP RainMaker-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Upravljanje korisnicima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Karakteristike krajnjeg korisnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Admin funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Postavljanje razvojnog okruženja

31

4.1 ESP-IDF Prekoview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 ESP-IDF verzije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 ESP-IDF Git radni tok . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Odabir odgovarajuće verzije . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Prekoview ESP-IDF SDK direktorija . . . . . . . . . . . . . . . . . . . . 34 4.2 Postavljanje ESP-IDF razvojnog okruženja . . . . . . . . . . . . . . . . . 38 4.2.1 Postavljanje ESP-IDF razvojnog okruženja na Linux . . . . . . . . 38 4.2.2 Postavljanje ESP-IDF razvojnog okruženja na Windows . . . . . . 40 4.2.3 Postavljanje ESP-IDF razvojnog okruženja na Mac . . . . . . . . . 45 4.2.4 Instaliranje VS koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Uvod u razvojna okruženja trećih strana . . . . . . . . 46 4.3 ESP-IDF sistem kompilacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Osnovni koncepti sistema kompilacije . . . . . . . . . . . . . . . . . . 47 4.3.2 Projekat File Struktura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Zadana pravila izgradnje sistema kompilacije . . . . . . . . . . . . . 50 4.3.4 Uvod u skriptu kompilacije . . . . . . . . . . . . . . . . . . 51 4.3.5 Uvod u zajedničke naredbe . . . . . . . . . . . . . . . . . . . 52 4.4 Vježba: Sastavljanje prample Program “Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Prample Analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Sastavljanje Blink programa . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Treptanje programa treptanja . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analiza dnevnika serijskog porta programa treptanja . . . . . . . . . . . . . . 60 4.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Razvoj hardvera i drajvera

65

5 Hardverski dizajn Smart Light proizvoda zasnovanih na ESP32-C3

67

5.1 Karakteristike i sastav Smart Light proizvoda . . . . . . . . . . . . . . . 67

5.2 Dizajn hardvera sistema jezgre ESP32-C3 . . . . . . . . . . . . . . . . . . . 70

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

5.2.2 Redosled uključivanja i resetovanje sistema . . . . . . . . . . . . . . . . . . 74

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

5.2.4 Izvor sata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Vježba: Izgradnja sistema pametnog svjetla sa ESP32-C3 . . . . . . . . . . . . . 80

5.3.1 Odabir modula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 Konfiguriranje GPIO-a PWM signala . . . . . . . . . . . . . . . . . . . . 82

5.3.3 Preuzimanje firmvera i interfejsa za otklanjanje grešaka . . . . . . . . . . . . 82

5.3.4 Smjernice za RF dizajn . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Smjernice za projektiranje izvora napajanja . . . . . . . . . . . . . . . . . . . 86 5.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Razvoj drajvera

87

6.1 Proces razvoja drajvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 ESP32-C3 periferne aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 Osnove LED drajvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Prostori boja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 LED drajver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 Zatamnjenje LED dioda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 Uvod u PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 Razvoj drajvera za LED zatamnjenje . . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Nehlapivo skladištenje (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

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

6.4.3 LED PWM programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Vježba: Dodavanje drajvera u Smart Light Project . . . . . . . . . . . . . . . . . 103

6.5.1 Upravljački program gumba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 Drajver za LED zatamnjenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 veze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Bluetooth-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 Uvod u Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Bluetooth koncepti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Druge 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 Smart Wi-Fi konfiguracija . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Lokalna kontrola

159

8.1 Uvod u lokalnu kontrolu . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Primjena lokalne kontrole . . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 Advantages lokalne kontrole. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Otkrivanje kontroliranih uređaja putem pametnih telefona . . . . . . . . . . 161

8.1.4 Komunikacija podataka između pametnih telefona i uređaja . . . . . . . . 162

8.2 Uobičajene metode lokalnog otkrivanja . . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Emitovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

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

8.2.3 Poređenje između emitiranja i višestrukog prijenosa . . . . . . . . . . . . . . 176

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

8.3 Zajednički 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 komunikaciju podataka . . . . . . . . . . . . . . . 203

8.4 Garancija sigurnosti podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Uvod u sigurnost transportnog sloja (TLS) . . . . . . . . . . . . . 207

8.4.2 Uvod u Datagram Sigurnost transportnog sloja (DTLS) . . . . . . . 213

8.5 Vježba: Lokalna kontrola u projektu Smart Light . . . . . . . . . . . . . . . . . . 217

8.5.1 Kreiranje lokalnog kontrolnog servera baziranog na Wi-Fi . . . . . . . . . . . . . . . 217

8.5.2 Provjera funkcionalnosti lokalne kontrole pomoću skripti . . . . . . . . . . . 221

8.5.3 Kreiranje lokalnog kontrolnog servera zasnovanog na Bluetooth-u . . . . . . . . . . . . 222

8.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Kontrola oblaka

225

9.1 Uvod u daljinski upravljač . . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Cloud Data Communication Protocols . . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 MQTT Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT principi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT format poruke . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Poređenje protokola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Postavljanje MQTT Brokera na Linux i Windows . . . . . . . . . . . . 233 9.2.6 Postavljanje MQTT klijenta na osnovu ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Osiguravanje MQTT sigurnosti 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žba: Daljinsko upravljanje putem ESP RainMaker-a . . . . . . . . . . . . . . . . 243 9.4.1 Osnove ESP RainMaker-a . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Pozadinski komunikacioni protokol čvorova i oblaka . . . . . . . . . . . 244 9.4.3 Komunikacija između klijenta i Cloud Backenda . . . . . . . . . . . 249 9.4.4 Uloge korisnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Osnovne usluge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplikacija RainMaker i integracije treće strane . . . . . . . . . . . . . . . 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 Prekoview 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 ViewKontroler . . . . . . . . . . . . . . . . . . . . . . 273

10.2 Kreiranje projekta nove aplikacije za pametne telefone . . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Priprema za razvoj Androida . . . . . . . . . . . . . . . . . . . 275

10.2.2 Kreiranje novog Android projekta . . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 Dodavanje zavisnosti za MyRainmaker . . . . . . . . . . . . . . . . . 276

10.2.4 Zahtjev za dozvolu u Androidu . . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Priprema za razvoj iOS-a . . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Kreiranje novog iOS projekta . . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 Dodavanje zavisnosti za MyRainmaker . . . . . . . . . . . . . . . . . 279

10.2.8 Zahtjev za dozvolu 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 obezbjeđivanje uređaja i vezivanje . . . . . . . 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 pripremu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Razvoj kontrole uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Povezivanje uređaja s računima u oblaku . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Dobijanje liste uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Dobivanje statusa uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Promjena statusa uređaja . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Razvoj planiranja i korisničkog centra . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementacija funkcije planiranja . . . . . . . . . . . . . . . . . . . . 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 Prekoview particionih tabela . . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Proces pokretanja firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Prekoview OTA mehanizma. . . . . . . . . . . . . . . . . . . . . 326

11.2 Upravljanje verzijom firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Označavanje firmvera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Vraćanje i zabrana vraćanja . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Vježba: Vazdušni (OTA) prample . . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Nadogradnja firmvera putem lokalnog hosta . . . . . . . . . . . . . . . . . 332

11.3.2 Nadogradnja firmvera putem ESP RainMaker-a . . . . . . . . . . . . . . . 335

11.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Optimizacija i masovna proizvodnja

343

12 Upravljanje napajanjem i optimizacija niske potrošnje

345

12.1 Upravljanje napajanjem ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Dinamičko skaliranje frekvencije . . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Konfiguracija upravljanja napajanjem . . . . . . . . . . . . . . . . . . . . 348

12.2 Režim niske potrošnje ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Modem-sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Lagani režim spavanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Režim dubokog spavanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Potrošnja struje u različitim režimima napajanja . . . . . . . . . . . . . 358

12.3 Upravljanje napajanjem i otklanjanje grešaka male potrošnje . . . . . . . . . . . . . . . . . 359

12.3.1 Otklanjanje grešaka dnevnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

12.3.2 GPIO Otklanjanje grešaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

12.4 Vježba: Upravljanje napajanjem u projektu Smart Light . . . . . . . . . . . . . . . 363

12.4.1 Konfiguriranje funkcije upravljanja napajanjem . . . . . . . . . . . . . . . . . 364

12.4.2 Upotreba zaključavanja upravljanja napajanjem . . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Provjera potrošnje energije . . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Poboljšane sigurnosne funkcije uređaja

369

13.1 Prekoview sigurnosti podataka IoT uređaja . . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 Zašto osigurati podatke o IoT uređajima? . . . . . . . . . . . . . . . . . . . . . . 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 o firmveru . . . . . . . . . . . . . . . . . . 373

13.2.3 dokample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Zaštita povjerljivosti podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Uvod u šifriranje podataka . . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Uvod u Flash šemu šifriranja . . . . . . . . . . . . . . . . . 376

13.3.3 Skladištenje ključeva za flash šifriranje . . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Radni način Flash enkripcije . . . . . . . . . . . . . . . . . . . . 380

13.3.5 Proces Flash šifriranja . . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 Uvod u NVS enkripciju . . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 dokamplesovi Flash enkripcije i NVS enkripcije. . . . . . . . . . . 384

13.4 Zaštita legitimiteta podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 Uvod u digitalni potpis . . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Prekoview sheme sigurnog pokretanja. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Uvod u softversko sigurno pokretanje . . . . . . . . . . . . . . . . . . . 388 13.4.4 Uvod u hardversko sigurno pokretanje . . . . . . . . . . . . . . . . . . 390 13.4.5 Pramples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Vježba: Sigurnosne karakteristike u masovnoj proizvodnji . . . . . . . . . . . . . . . . . . 396 13.5.1 Flash enkripcija i sigurno pokretanje . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Omogućavanje Flash šifriranja i sigurnog pokretanja pomoću paketnih Flash alata . . 397 13.5.3 Omogućavanje Flash šifriranja i sigurnog pokretanja u Smart Light projektu . . . 398 13.6 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Narezivanje firmvera i testiranje za masovnu proizvodnju

399

14.1 Narezivanje firmvera u masovnoj proizvodnji . . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Definiranje particija podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Narezivanje 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 daljinsko praćenje

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 prample u projektu esp-insights. . . . . . . . . . . . . . . 411

15.2.3 Izvještavanje informacija Coredump . . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Prilagođavanje evidencije interesa . . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Prijavljivanje razloga ponovnog pokretanja . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Izvještavanje o prilagođenim metrikama . . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Vježba: Korištenje ESP Insights u Smart Light projektu . . . . . . . . . . . . . . . 416

15.4 Sažetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Uvod
ESP32-C3 je jednojezgarni Wi-Fi i Bluetooth 5 (LE) mikrokontroler SoC, zasnovan na RISC-V arhitekturi otvorenog koda. Postiže pravi balans snage, I/O mogućnosti i sigurnosti, nudeći tako optimalno isplativo rješenje za povezane uređaje. Kako biste prikazali različite primjene porodice ESP32-C3, ova Espressifova knjiga vodi vas na zanimljivo putovanje kroz AIoT, počevši od osnova razvoja IoT projekata i podešavanja okruženja do praktičnihamples. Prva četiri poglavlja govore o IoT-u, ESP RainMaker-u i ESP-IDF-u. Poglavlje 5 i 6 ukratko o dizajnu hardvera i razvoju drajvera. 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 oblastima, softverski arhitekta, nastavnik, student ili bilo ko ko se interesuje za IoT, ova knjiga je za vas.
Možete preuzeti kod nprampkorišćeno u ovoj knjizi sa Espressifovog sajta na GitHubu. Za najnovije informacije o razvoju IoT-a pratite naš službeni nalog.

Predgovor
Informatizirajući svijet
Jašući na talasu interneta, Internet stvari (IoT) je napravio svoj veliki debi kako bi postao nova vrsta infrastrukture u digitalnoj ekonomiji. Kako bi približio 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” je ono što očekujemo od budućnosti.
Dizajniranje vlastitih čipova čini kritičnu komponentu te vizije. To će biti maraton koji će zahtijevati stalne prodore prema tehnološkim granicama. Od „Game Changer“ ESP8266 do serije ESP32 koja integriše Wi-Fi i Bluetoothr (LE) povezivost, praćena ESP32-S3 opremljenim AI ubrzanjem, Espressif nikada ne prestaje da istražuje i razvija proizvode za AIoT rješenja. Sa našim softverom otvorenog koda, kao što su IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF i Device Connectivity Platform ESP RainMaker, stvorili smo nezavisan okvir za izgradnju AIoT aplikacija.
Od jula 2022. godine, kumulativna isporuka Espressifovih IoT čipseta premašila je 800 miliona, što je vodeći na tržištu Wi-Fi MCU i pokreće ogroman broj povezanih uređaja širom svijeta. Težnja za izvrsnošću čini svaki Espressif proizvod velikim hitom zbog visokog nivoa integracije i ekonomičnosti. Izdavanje ESP32-C3 označava značajnu prekretnicu Espressif-ove samorazvijene tehnologije. To je jednojezgarni, 32-bitni, RISC-V baziran MCU sa 400KB SRAM-a, koji može raditi na 160MHz. Ima integrisani 2.4 GHz Wi-Fi i Bluetooth 5 (LE) sa podrškom za dugi domet. Postiže finu ravnotežu snage, I/O mogućnosti i sigurnosti, nudeći tako optimalno isplativo rješenje za povezane uređaje. Zasnovana na tako moćnom ESP32-C3, ova knjiga je namijenjena da pomogne čitaocima da razumiju znanje vezano za internet stvari uz detaljnu ilustraciju i praktične primjere.amples.
Zašto smo napisali ovu knjigu?
Espressif Systems je više od kompanije za proizvodnju poluprovodnika. To je također kompanija za IoT platformu, koja uvijek teži otkrićima i inovacijama u oblasti tehnologije. Istovremeno, Espressif je otvorio i podijelio svoj samorazvijeni operativni sistem i softverski okvir sa zajednicom, formirajući jedinstveni ekosistem. Inženjeri, proizvođači i tehnološki entuzijasti aktivno razvijaju nove softverske aplikacije zasnovane 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 stimulisala je sve veći broj autora koji su proizveli preko 100 knjiga zasnovanih na Espressif čipsetima, na više od deset jezika, uključujući engleski, kineski, nemački, francuski i japanski.

Podrška i povjerenje partnera iz zajednice je ono što potiče Espressifove kontinuirane inovacije. „Nastojimo da naši čipovi, operativni sistemi, okviri, rješenja, oblak, poslovna praksa, alati, dokumentacija, spisi, ideje itd. budu sve relevantniji za odgovore koji su ljudima potrebni u najhitnijim problemima savremenog života. 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. Kako kontinuirana nadogradnja IoT tehnologije postavlja veće zahtjeve pred inženjere, kako možemo pomoći većem broju ljudi da brzo ovladaju IoT čipovima, operativnim sistemima, softverskim okvirima, šemama aplikacija i proizvodima usluga u oblaku? Kako se kaže, bolje je naučiti čovjeka da peca nego mu dati ribu. U sesiji razmišljanja, palo nam je na pamet da bismo mogli napisati knjigu koja bi sistematski razvrstala ključna znanja o razvoju interneta stvari. Pogodili smo, brzo okupili grupu viših inženjera i spojili iskustvo tehničkog tima u ugrađenom programiranju, razvoju IoT hardvera i softvera, što je sve doprinijelo objavljivanju ove knjige. U procesu pisanja dali smo sve od sebe da budemo objektivni i pošteni, lišeni čahure, te da koristimo sažete izraze kako bismo dočarali složenost i šarm Interneta stvari. Pažljivo smo saželi uobičajena pitanja, uputili se na povratne informacije i sugestije zajednice, kako bismo jasno odgovorili na pitanja na koja se susreću u procesu razvoja, i pružili praktične smjernice za razvoj IoT-a za relevantne tehničare i donosioce odluka.
Book Structure
Ova knjiga ima perspektivu usmjerenu na inženjera i izlaže neophodna znanja za razvoj IoT projekata korak po korak. Sastoji se iz četiri dijela, i to:
· Priprema (Poglavlje 1): Ovaj dio predstavlja arhitekturu IoT-a, tipičan okvir IoT projekta, ESP RainMakerr cloud platformu i razvojno okruženje ESP-IDF, kako bi se postavila čvrsta osnova za razvoj IoT projekta.
· Razvoj hardvera i drajvera (Poglavlje 5): Zasnovano na ESP6-C32 čipsetu, ovaj dio elaborira minimalni hardverski sistem i razvoj drajvera, te implementira kontrolu zatamnjivanja, rangiranje boja i bežičnu komunikaciju.
· Bežična komunikacija i kontrola (poglavlje 7): Ovaj dio objašnjava inteligentnu Wi-Fi konfiguracijsku šemu zasnovanu na ESP11-C32 čipu, protokolima lokalne i cloud kontrole, te lokalnoj i daljinskoj kontroli uređaja. Takođe pruža šeme za razvoj aplikacija za pametne telefone, nadogradnju firmvera i upravljanje verzijama.
· Optimizacija i masovna proizvodnja (Poglavlje 12-15): Ovaj dio je namijenjen naprednim IoT aplikacijama, fokusirajući se na optimizaciju proizvoda u upravljanju energijom, optimizaciju male potrošnje i poboljšanu sigurnost. Takođe uvodi narezivanje i testiranje firmvera u masovnoj proizvodnji, kao i kako dijagnosticirati status rada i evidencije firmvera uređaja putem platforme za daljinsko praćenje ESP Insights.

O izvornom kodu
Čitaoci mogu pokrenuti exampprograma u ovoj knjizi, bilo ručnim unosom koda ili korištenjem izvornog koda koji prati knjigu. Naglašavamo kombinaciju teorije i prakse, te tako u gotovo svako poglavlje postavljamo odjeljak Praksa baziran na projektu Smart Light. Svi kodovi su otvorenog koda. Čitaoci su dobrodošli da preuzmu izvorni kod i razgovaraju o njemu u odjeljcima koji se odnose na ovu knjigu na GitHubu i našem službenom forumu esp32.com. Otvoreni kod ove knjige podliježe uslovima Apache License 2.0.
Napomena autora
Ovu knjigu službeno proizvodi Espressif Systems, a napisali su je viši inženjeri kompanije. Pogodan je za menadžere i osoblje za istraživanje i razvoj u industrijama vezanim za internet stvari, nastavnike i studente srodnih smjerova, te entuzijaste u oblasti 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.
Prilikom sastavljanja ove knjige osvrnuli smo se na neke relevantne rezultate istraživanja stručnjaka, naučnika i tehničara u zemlji i inostranstvu, te smo se potrudili da ih citiramo u skladu sa akademskim normama. Međutim, neizbježno je da dođe do nekih propusta, pa ovim putem želimo izraziti duboko poštovanje i zahvalnost svim relevantnim autorima. Osim toga, citirali smo informacije sa interneta, pa se zahvaljujemo originalnim autorima i izdavačima i izvinjavamo se što ne možemo navesti izvor svake informacije.
Kako bismo proizveli knjigu visokog kvaliteta, organizovali smo runde internih diskusija i učili na sugestijama i povratnim informacijama probnih čitalaca i urednika izdavača. Ovdje se još jednom zahvaljujemo na pomoći koja je doprinijela ovom uspješnom radu.
Na kraju, ali najvažnije, hvala svima u Espressifu koji su toliko radili na nastanku i popularizaciji naših proizvoda.
Razvoj IoT projekata uključuje širok spektar znanja. Ograničeni na dužinu knjige, kao i nivo i iskustvo autora, propusti su neizbježni. Stoga ljubazno molimo da stručnjaci i čitatelji kritikuju i ispravljaju naše greške. Ako imate bilo kakve 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 otvorenog koda. Možete ga preuzeti iz 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 i tako postavljamo odjeljak Praksa o projektu Smart Light u skoro svako poglavlje. Odgovarajući koraci i izvorna stranica biće označeni između dva reda koji počinju sa tag Izvorni kod.
NAPOMENA/SAVJETI Ovdje možete pronaći neke kritične informacije i podsjetnike za uspješno otklanjanje grešaka u vašem programu. Oni će biti označeni između dvije debele linije koje počinju sa tag NAPOMENA ili SAVJETI.
Većina naredbi u ovoj knjizi izvršava se pod Linuxom, a na to upućuje znak “$”. Ako naredba zahtijeva privilegije superkorisnika za izvršenje, prompt će biti zamijenjen sa “#”. Komandni redak na Mac sistemima je „%“, kao što se koristi u odjeljku 4.2.3 Instaliranje ESP-IDF na Mac.
Osnovni tekst ove knjige biće štampan u Povelji, dok će kod prampdatoteke, komponente, funkcije, varijable, kod file imena, direktoriji kodova i stringovi će biti u Courier New.
Komande ili tekstovi koje korisnik treba da unese, kao i komande koje se mogu uneti pritiskom na taster „Enter“ biće štampane podebljano za Courier New. Dnevnici i blokovi kodova će biti predstavljeni u svijetloplavim okvirima.
Example:
Drugo, koristite esp-idf/components/nvs flash/nvs generator particije/nvs particiju gen.py da generišete binarnu NVS particiju file na razvojnom hostu sa sljedećom naredbom:
$ python $IDF PATH/components/nvs flash/nvs generator particije/nvs particija gen.py –ulaz masa prod.csv –izlazna masa prod.bin –veličina NVS VELIČINA PARTICIJE

Poglavlje 1

Uvod

to

IoT

Krajem 20. vijeka, sa usponom kompjuterskih mreža i komunikacijskih tehnologija, Internet se brzo integrirao u živote ljudi. Kako Internet tehnologija nastavlja da sazrijeva, rodila se ideja o Internetu stvari (IoT). Doslovno, IoT znači Internet na kojem su stvari povezane. Dok originalni Internet razbija granice prostora i vremena i sužava distancu između "osobe i osobe", IoT čini "stvari" važnim učesnikom, približavajući "ljude" i "stvari". U doglednoj budućnosti, IoT će postati pokretačka snaga informatičke industrije.
Dakle, šta je Internet stvari?
Teško je precizno definisati Internet stvari, jer se njegovo značenje i obim stalno razvijaju. Godine 1995. Bill Gates je prvi put iznio ideju IoT-a u svojoj knjizi The Road Ahead. Jednostavno rečeno, IoT omogućava objektima da međusobno razmjenjuju informacije putem Interneta. Njegov krajnji cilj je uspostavljanje “Interneta svega”. Ovo je rana interpretacija IoT-a, kao i fantazija tehnologije budućnosti. Trideset godina kasnije, sa brzim razvojem ekonomije i tehnologije, fantazija postaje stvarnost. Od pametnih uređaja, pametnih domova, pametnih gradova, interneta vozila i nosivih uređaja, do „metaverzuma“ podržanog IoT tehnologijama, novi koncepti se stalno pojavljuju. U ovom poglavlju počet ćemo s objašnjenjem arhitekture Interneta stvari, a zatim ćemo predstaviti najčešću IoT aplikaciju, pametni dom, kako bismo vam pomogli da steknete jasno razumijevanje IoT-a.
1.1 Arhitektura IoT-a
Internet stvari uključuje više tehnologija koje imaju različite potrebe i oblike primjene u različitim industrijama. Da bi se sredila struktura, ključne tehnologije i aplikativne karakteristike IoT-a, potrebno je uspostaviti jedinstvenu arhitekturu i standardni tehnički sistem. U ovoj knjizi, arhitektura Interneta stvari jednostavno je podijeljena na četiri sloja: sloj percepcije i kontrole, sloj mreže, sloj platforme i sloj aplikacije.
Sloj percepcije i kontrole Kao najosnovniji element arhitekture IoT-a, sloj percepcije i kontrole je srž za realizaciju sveobuhvatnog otkrivanja IoT-a. Njegova glavna funkcija je prikupljanje, identifikacija i kontrola informacija. Sastoji se od raznih uređaja sa sposobnošću percepcije,
3

identifikaciju, kontrolu i izvršenje, i odgovoran je za pronalaženje i analizu podataka kao što su svojstva materijala, trendovi ponašanja i status uređaja. Na ovaj način IoT može prepoznati 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 igraju važnu ulogu u prikupljanju i identifikaciji informacija. Senzori su poput ljudskih osjetilnih organa, kao što su fotoosjetljivi senzori za vid, akustični senzori za sluh, plinski senzori za miris i senzori osjetljivi na pritisak i temperaturu za dodir. 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 da prenosi informacije, uključujući podatke dobijene od percepcionog i kontrolnog sloja do specificiranog cilja, kao i komande izdate od sloja aplikacije natrag u sloj percepcije i kontrole. Služi kao važan komunikacioni most koji povezuje različite slojeve IoT sistema. Za 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đusobnu povezanost između osobe i osobe, ali ne uključuje stvari u veliku porodicu. Prije pojave IoT-a, većina stvari nije bila “mrežna”. Zahvaljujući kontinuiranom razvoju tehnologije, IoT uspijeva povezati stvari s internetom, čime se ostvaruje međupovezanost između “ljudi i stvari” i “stvari i stvari”. Postoje dva uobičajena načina za implementaciju internetske veze: pristup ožičenoj mreži i pristup bežičnoj 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, Near-Field Communication (NFC) i radio-frekvencijsku identifikaciju (RFID). Bežična komunikacija velikog dometa uključuje poboljšanu komunikaciju tipa mašine (eMTC), LoRa, uskopojasni internet stvari (NB-IoT), 2G, 3G, 4G, 5G, itd.
Prijenos putem Interneta Različiti načini pristupa Internetu dovode do odgovarajuće fizičke veze za prijenos podataka. Sljedeća stvar je odlučiti koji komunikacijski protokol koristiti za prijenos podataka. U poređenju s internetskim terminalima, većina IoT terminala trenutno ima manje
4 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

dostupnih resursa, kao što su performanse obrade, kapacitet skladištenja, brzina mreže itd., pa je potrebno odabrati komunikacijski protokol koji zauzima manje resursa u IoT aplikacijama. Postoje dva komunikacijska protokola koja se danas široko koriste: Telemetrijski transport s redovima poruka (MQTT) i Protokol ograničene aplikacije (CoAP).
Sloj platforme Platformski sloj se uglavnom odnosi na IoT cloud platforme. Kada su svi IoT terminali umreženi, njihovi podaci moraju biti agregirani na IoT cloud platformi kako bi se izračunali i pohranili. Platformski sloj uglavnom podržava IoT aplikacije u olakšavanju pristupa i upravljanja masivnim uređajima. Povezuje IoT terminale sa platformom u oblaku, prikuplja podatke terminala i izdaje komande terminalima, kako bi se implementiralo daljinsko upravljanje. Kao posredni servis za dodjelu opreme industrijskim aplikacijama, sloj platforme igra povezujuću ulogu u cijeloj IoT arhitekturi, noseći apstraktnu poslovnu logiku i standardizirani osnovni model podataka, koji ne samo da može ostvariti brzi pristup uređajima, već također pruža moćne modularne mogućnosti. kako bi se zadovoljile različite potrebe u scenarijima primjene u industriji. Platformski sloj uglavnom uključuje funkcionalne module kao što su pristup uređajima, upravljanje uređajima, upravljanje sigurnošću, komunikacija porukama, nadzor rada i održavanja i aplikacije podataka.
· Pristup uređaju, ostvarivanje veze i komunikacije između terminala i IoT cloud platformi.
· Upravljanje uređajem, uključujući funkcije kao što su kreiranje uređaja, održavanje uređaja, konverzija podataka, sinhronizacija podataka i distribucija uređaja.
· Upravljanje sigurnošću, osiguravanje sigurnosti IoT prijenosa podataka iz perspektive sigurnosne autentifikacije i sigurnosti komunikacije.
· Komunikacija poruka, uključujući tri smjera prijenosa, odnosno terminal šalje podatke na IoT cloud platformu, IoT cloud platforma šalje podatke serverskoj strani ili drugim IoT cloud platformama, a strana servera daljinski kontrolira IoT uređaje.
· Nadgledanje O&M, uključujući praćenje i dijagnozu, nadogradnju firmvera, online otklanjanje grešaka, usluge evidencije itd.
· Aplikacije podataka, koje uključuju skladištenje, analizu i primjenu podataka.
Sloj aplikacije Aplikacioni sloj koristi podatke sa sloja platforme za upravljanje aplikacijom, filtriranje i obradu pomoću alata kao što su baze podataka i softver za analizu. Dobijeni podaci mogu se koristiti za realne IoT aplikacije kao što su pametna zdravstvena zaštita, pametna poljoprivreda, pametne kuće i pametni gradovi.
Naravno, arhitektura IoT-a može se podijeliti na više slojeva, ali bez obzira od koliko se slojeva sastoji, osnovni princip ostaje u suštini 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 jednim ili više IoT uređaja, a mnoge novoizgrađene kuće su od samog početka dizajnirane s IoT tehnologijama. 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, interkonekcija scene stage i inteligentni stage, kao što je prikazano na slici 1.2.
Slika 1.2. Razvoj stage of smart home 6 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Prvi stage je o pametnim proizvodima. Za razliku od tradicionalnih domova, u pametnim domovima, IoT uređaji primaju signale sa senzorima i umreženi su putem bežičnih komunikacijskih tehnologija kao što su Wi-Fi, Bluetooth LE i ZigBee. Korisnici mogu kontrolirati pametne proizvode na razne načine, kao što su aplikacije za pametne telefone, glasovni asistenti, pametna kontrola zvučnika, itd.tage se fokusira na međusobno povezivanje scene. U ovom stage, programeri više ne razmišljaju o kontroli jednog pametnog proizvoda, već o međusobnom povezivanju dva ili više pametnih proizvoda, automatizaciji do određene mjere i konačno formiranju prilagođenog načina scene. Za nprampKada korisnik pritisne bilo koje dugme za režim scene, svetla, zavese i klima uređaji će se automatski prilagoditi unapred podešenim vrednostima. Naravno, postoji preduslov da je logika povezivanja lako postavljena, uključujući uslove okidača i radnje izvršenja. Zamislite da se režim grijanja klima uređaja aktivira kada unutrašnja temperatura padne ispod 10°C; da se u 7 sati ujutro pušta muzika da probudi korisnika, otvaraju se pametne zavjese, a kuhalo za pirinač ili toster za hljeb se uključuje preko pametne utičnice; kako korisnik ustane i završi pranje, doručak je već serviran, tako da neće biti odlaganja odlaska na posao. Kako je naš život postao zgodan! Treći stage ide do obavještajnih stage. Kako se pristupa više pametnih kućnih uređaja, tako će se pristupiti i vrstama generiranih podataka. Uz pomoć računarstva u oblaku, velikih podataka i veštačke inteligencije, kao da je „pametniji mozak“ usađen u pametne kuće, koje više ne zahtevaju česte komande od korisnika. Oni prikupljaju podatke iz prethodnih interakcija i uče obrasce ponašanja i preferencije korisnika, kako bi automatizirali aktivnosti, uključujući pružanje preporuka za donošenje odluka. Trenutno je većina pametnih domova na sceni interkonekcije stage. Kako se povećava stopa penetracije i inteligencija pametnih proizvoda, uklanjaju se barijere između komunikacijskih protokola. Pametne kuće će u budućnosti postati zaista „pametne“, baš kao i AI sistem Jarvis u Iron Manu, koji ne samo da može pomoći korisniku da kontroliše razne uređaje, da se bavi svakodnevnim poslovima, već ima i super računarsku snagu i sposobnost razmišljanja. U inteligentnom stage, ljudska bića će dobiti bolje usluge i po količini i po kvalitetu.
Poglavlje 1. Uvod u IoT 7

8 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Poglavlje Uvod i praksa 2 IoT projekta
U prvom poglavlju predstavili smo arhitekturu IoT-a, te uloge i međusobne odnose sloja percepcije i kontrole, sloja mreže, sloja platforme i sloja aplikacije, kao i razvoj pametnog doma. Međutim, baš kao i kada učimo da slikamo, poznavanje teoretskog znanja je daleko od dovoljnog. Moramo "uprljati ruke" da bismo IoT projekte implementirali u praksu kako bismo istinski ovladali tehnologijom. Osim toga, kada projekat pređe u masovnu proizvodnju stage, potrebno je uzeti u obzir više faktora kao što su mrežna veza, konfiguracija, interakcija IoT cloud platforme, upravljanje firmverom i ažuriranja, upravljanje masovnom proizvodnjom i sigurnosna konfiguracija. Dakle, na šta trebamo obratiti pažnju kada razvijamo kompletan IoT projekat? U prvom 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 praktičnijih uređaja, koji se mogu koristiti u domovima, hotelima, teretanama, bolnicama itd. U ovoj knjizi uzet ćemo izgradnju projekta pametnog svjetla kao početnu tačku, objasniti njegove komponente i karakteristike i dati smjernice za razvoj projekta. Nadamo se da možete izvući zaključke iz ovog slučaja kako biste kreirali više IoT aplikacija.
2.1 Uvod u tipične IoT projekte
U smislu razvoja, osnovni funkcionalni moduli IoT projekata mogu se svrstati u razvoj softvera i hardvera IoT uređaja, razvoj klijentskih aplikacija i razvoj IoT cloud platforme. Važno je razjasniti osnovne funkcionalne module, koji će biti dalje opisani u ovom odeljku.
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 preko svojih čipova i perifernih uređaja kako bi postigli prikupljanje podataka i kontrolu rada.
9

Vezivanje naloga i početna konfiguracija Za većinu IoT uređaja, vezivanje naloga i početna konfiguracija se završavaju u jednom operativnom procesu, npr.ample, povezivanje uređaja sa korisnicima konfiguracijom Wi-Fi mreže.
Interakcija sa IoT cloud platformama Za praćenje i kontrolu IoT uređaja, potrebno je i njihovo povezivanje sa IoT cloud platformama, kako bi se davale komande i izveštavale o statusu kroz međusobnu interakciju.
Kontrola uređaja Kada su povezani sa IoT platformama u oblaku, uređaji mogu komunicirati sa oblakom i biti registrovani, vezani ili kontrolirani. Korisnici mogu ispitivati ​​status proizvoda i obavljati druge operacije na aplikaciji za pametne telefone putem IoT platformi u oblaku ili lokalnih komunikacijskih protokola.
Nadogradnja firmvera IoT uređaji također mogu postići nadogradnju firmvera na osnovu potreba proizvođača. Primanjem komandi koje šalje oblak, realizovaće se nadogradnja firmvera i upravljanje verzijama. Pomoću ove funkcije nadogradnje firmvera možete kontinuirano poboljšavati funkcije IoT uređaja, popraviti nedostatke 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:
Sistem naloga i autorizacija Podržava autorizaciju naloga i uređaja.
Kontrola uređaja Aplikacije za pametne telefone obično su opremljene kontrolnim funkcijama. Korisnici se mogu lako povezati na IoT uređaje i upravljati njima 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ćava 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 funkcija uređaja, kontrola scene, zakazivanje, daljinsko upravljanje, povezivanje uređaja, itd. Korisnici pametnog doma također mogu prilagoditi scene prema ličnim potrebama, kontrolirajući rasvjetu, kućne aparate, ulaz itd., kako bi kućni život bio udobniji i praktičniji. Oni mogu tempirati klimatizaciju, isključiti je na daljinu, automatski uključiti svjetlo u hodniku kada se vrata otključaju ili se prebaciti u "pozorište" način rada s jednim dugmetom.
Obavještenje Klijentske aplikacije ažuriraju status IoT uređaja u realnom vremenu i šalju upozorenja kada uređaji počnu nenormalno.
10 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Služba za korisnike nakon prodaje Aplikacije za pametne telefone mogu pružiti postprodajne usluge za proizvode, kako bi se na vrijeme riješili problemi povezani s kvarovima IoT uređaja i tehničkim operacijama.
Istaknute funkcije Da bi se zadovoljile potrebe različitih korisnika, mogu se dodati i 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 omogućava korisnicima da podese komande koje se izvršavaju za određeni uređaj ili scenu protresanjem.
2.1.3 Uvod u uobičajene IoT Cloud platforme
IoT cloud platforma je platforma sve-u-jednom koja integrira funkcije kao što su upravljanje uređajima, komunikacija sigurnosti podataka i upravljanje obavijestima. Prema svojoj ciljnoj grupi i dostupnosti, IoT cloud platforme se 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 preduzeća ili pojedince, kojima upravljaju i održavaju dobavljači platformi, a dijele se putem Interneta. Može biti besplatno ili jeftino i pruža usluge širom otvorene javne mreže, kao što su Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, itd. Kao platforma za podršku, javni oblak može integrirati upstream provajdere usluga i krajnjim korisnicima koji se nalaze na nizvodnom nivou kako bi stvorili novi lanac vrijednosti i ekosistem.
Privatni oblak je napravljen samo za upotrebu u preduzećima, čime se garantuje najbolja kontrola nad podacima, sigurnošću i kvalitetom usluga. Njegove usluge i infrastrukturu odvojeno održavaju preduzeća, a prateći hardver i softver takođe su namenjeni određenim korisnicima. Preduzeća mogu prilagoditi usluge oblaka kako bi zadovoljile potrebe svog poslovanja. Trenutno, neki proizvođači pametnih kuća već imaju privatne IoT platforme u oblaku i na njima su razvili aplikacije za pametne kuće.
Javni oblak i privatni oblak imaju svoje prednostitages, što će biti objašnjeno kasnije.
Da bi se postigla komunikacijska povezanost, potrebno je dovršiti barem ugrađeni razvoj na strani uređaja, zajedno s poslovnim serverima, IoT platformama u oblaku i aplikacijama za pametne telefone. Suočen sa tako velikim projektom, javni oblak obično pruža komplete za razvoj softvera za aplikacije na strani uređaja i pametnih telefona kako bi se ubrzao proces. I javni i privatni oblak pružaju usluge uključujući pristup uređajima, upravljanje uređajima, sjenu uređaja i rad i održavanje.
Pristup uređajima IoT platforme u oblaku moraju da obezbede ne samo interfejse za pristup uređajima koristeći protokole
Poglavlje 2. Uvod i praksa IoT projekata 11

kao što su MQTT, CoAP, HTTPS i WebSocket, ali i funkcija sigurnosne autentifikacije uređaja za blokiranje krivotvorenih i ilegalnih uređaja, efektivno smanjujući rizik od kompromitacije. Takva autentifikacija obično podržava različite mehanizme, pa je kada se uređaji masovno proizvode potrebno unaprijed dodijeliti certifikat uređaja prema odabranom mehanizmu autentifikacije i snimiti ga u uređaje.
Upravljanje uređajima Funkcija upravljanja uređajima koju pružaju IoT cloud platforme ne samo da može pomoći proizvođačima da prate status aktivacije i online status svojih uređaja u realnom vremenu, već također omogućava opcije kao što su dodavanje/uklanjanje uređaja, preuzimanje, dodavanje/brisanje grupa, nadogradnja firmvera , i upravljanje verzijama.
Device shadow IoT cloud platforme mogu kreirati trajnu virtuelnu verziju (device shadow) za svaki uređaj, a status sjene uređaja može se sinkronizirati i dobiti putem aplikacije za pametne telefone ili drugih uređaja putem protokola za internet prijenos. Sjena uređaja pohranjuje najnoviji prijavljen status i očekivani status svakog uređaja, pa čak i ako je uređaj van mreže, i dalje može dobiti status pozivanjem API-ja. Device shadow 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 dnevnikom omogućava pronalaženje informacija o ponašanju uređaja, protoku poruka gore/dole i sadržaju poruke. · Otklanjanje grešaka uređaja podržava isporuku naredbi, ažuriranje konfiguracije i provjeru interakcije između IoT platformi u oblaku i poruka uređaja.
2.2 Vježba: Projekt pametnog svjetla
Nakon teoretskog uvoda u svakom poglavlju, naći ćete odjeljak za praksu koji se odnosi na projekt Smart Light koji će vam pomoći da steknete praktično iskustvo. Projekat je baziran na Espressifovom ESP32-C3 čipu i ESP RainMaker IoT Cloud Platformi, a pokriva hardver bežičnog modula u pametnim svjetlosnim proizvodima, ugrađeni softver za pametne uređaje zasnovane na ESP32C3, aplikacije za pametne telefone i ESP RainMaker interakciju.
Izvorni kod Za bolje iskustvo učenja i razvoja, projekat u ovoj knjizi je otvoren. Izvorni kod možete preuzeti iz našeg GitHub repozitorija na https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

2.2.1 Struktura projekta
Projekt Smart Light sastoji se od tri dijela: i. Pametni svjetlosni uređaji bazirani na ESP32-C3, odgovorni za interakciju s IoT platformama u oblaku i kontrolu prekidača, svjetline i temperature boje LED lamp perle. ii. Aplikacije za pametne telefone (uključujući aplikacije za tablete koje rade na Androidu i iOS-u), odgovorne su za mrežnu konfiguraciju pametnih svjetlosnih proizvoda, kao i za upite i kontrolu njihovog statusa.
iii. IoT cloud platforma zasnovana na ESP RainMakeru. Radi pojednostavljenja, u ovoj knjizi razmatramo IoT cloud platformu i poslovni server kao cjelinu. Detalji o ESP RainMaker-u će biti dati u 3. poglavlju.
Korespondencija između strukture Smart Light projekta i arhitekture IoT-a prikazana je na slici 2.1.
Slika 2.1. Struktura projekta pametnog svjetla
2.2.2 Funkcije projekta
Podijeljeni prema strukturi, funkcije svakog dijela su sljedeće. Pametni svjetlosni uređaji
· Mrežna konfiguracija i konekcija. · LED PWM kontrola, kao što je prekidač, svjetlina, temperatura boje, itd. · Automatizacija ili kontrola scene, npr. vremenski prekidač. · Šifrovanje i bezbedno pokretanje Flash-a. · 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 proizvoda za osvetljenje, kao što je prekidač, osvetljenost, temperatura boje, itd. · Automatizacija ili podešavanja scene, npr. vremenska sklopka. · Lokalna/daljinska kontrola. · Registracija korisnika, prijava itd.
ESP RainMaker IoT platforma u oblaku · Omogućavanje 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 zainteresovani da projekat sprovedete u praksu, biće vam potreban i sledeći hardver: pametna svetla, pametni telefoni, Wi-Fi ruteri i računar koji ispunjava instalacijske zahteve razvojnog okruženja. Pametna svetla
Pametna svjetla su nova vrsta sijalica, čiji je oblik isti kao obična sijalica sa žarnom niti. Pametno svjetlo se sastoji od kondenzatorskog regulatora napajanja, bežičnog modula (sa ugrađenim ESP32-C3), LED kontrolera i RGB LED matrice. Kada je priključen 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 (svjetlo uključeno) i otvoreno (svijetlo isključeno), tako da može emitovati cijan, žutu, zelenu, ljubičastu, plavu, crvenu i bijelo svjetlo. Bežični modul je odgovoran za povezivanje na Wi-Fi ruter, primanje i izvještavanje o statusu pametnih svjetala i slanje komandi za kontrolu LED-a.
Slika 2.2. Simulirano pametno svjetlo
U ranom razvoju stage, možete simulirati pametno svjetlo pomoću ESP32-C3DevKitM-1 ploče povezane sa RGB LED lamp perle (vidi sliku 2.2). Ali trebao bi
14 ESP32-C3 Wireless Adventure: 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 (sa ugrađenim ESP32-C3), ali ne i kompletan dizajn hardvera pametnog svjetla. Pored toga, Espressif takođe proizvodi ploču za razvoj zvuka zasnovanu na ESP32-C3 ESP32C3-Lyra za kontrolu svetla sa zvukom. Ploča ima interfejse za mikrofone i zvučnike i može da kontroliše LED trake. Može se koristiti za razvoj ultra jeftinih audio emitera visokih performansi i ritam svjetlosnih traka. Slika 2.3 prikazuje ESP32-C3Lyra ploču povezanu sa trakom od 40 LED lampica.
Slika 2.3. ESP32-C3-Lyra povezan sa trakom od 40 LED lampica
Pametni telefoni (Android/iOS) Projekt Smart Light uključuje razvoj aplikacije za pametne telefone za postavljanje i kontrolu pametnih svjetlosnih proizvoda.
Wi-Fi ruteri Wi-Fi ruteri pretvaraju žičane mrežne signale i signale mobilne mreže u signale bežične mreže, za povezivanje računala, pametnih telefona, tableta i drugih bežičnih uređaja na mrežu. Za nprampDakle, širokopojasni pristup u kući treba samo biti povezan na Wi-Fi ruter da bi se postiglo bežično umrežavanje Wi-Fi uređaja. Glavni standard protokola koji podržavaju Wi-Fi ruteri je IEEE 802.11n, sa prosječnom TxRateom od 300 Mbps, ili maksimalno 600 Mbps. Povratno su kompatibilni sa IEEE 802.11b i IEEE 802.11g. Espressif čip ESP32-C3 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 ruter.
Razvojno okruženje računara (Linux/macOS/Windows) biće predstavljeno u poglavlju 4. Poglavlje 2. Uvod i praksa IoT projekata 15

2.2.4 Razvojni proces
Slika 2.4. Koraci razvoja projekta Smart Light
Dizajn hardvera Dizajn hardvera IoT uređaja je od suštinskog značaja za IoT projekat. Kompletan projekt pametnog svjetla namijenjen je proizvodnji alamp rade na mrežnom napajanju. Različiti proizvođači proizvode lamprazličitih stilova i tipova drajvera, ali njihovi bežični moduli obično imaju istu funkciju. Da bi se pojednostavio proces razvoja Smart Ligh projekta, ova knjiga pokriva samo dizajn hardvera i razvoj softvera bežičnih modula.
Konfiguracija IoT cloud platforme Da biste koristili IoT cloud platforme, morate konfigurirati projekte na pozadinskom dijelu, kao što je kreiranje proizvoda, kreiranje uređaja, postavljanje svojstava uređaja itd.
Ugrađeni razvoj softvera za IoT uređaje Implementirajte očekivane funkcije sa ESP-IDF, Espressifovim SDK-om na strani uređaja, uključujući povezivanje na IoT cloud platforme, razvoj LED drajvera i nadogradnju firmvera.
Razvoj aplikacija za pametne telefone Razvijte aplikacije za pametne telefone za Android i iOS sisteme kako biste ostvarili registraciju i prijavu korisnika, kontrolu uređaja i druge funkcije.
Optimizacija IoT uređaja Kada se završi osnovni razvoj funkcija IoT uređaja, možete se obratiti zadacima optimizacije, kao što je optimizacija napajanja.
Testiranje masovne proizvodnje Izvršite testove masovne proizvodnje u skladu sa srodnim standardima, kao što su test funkcije opreme, test starenja, RF test itd.
Uprkos gore navedenim koracima, projekat Smart Light ne mora nužno biti predmet takve procedure jer se različiti zadaci mogu obavljati istovremeno. Za nprampUgrađeni softver i aplikacije za pametne telefone mogu se razvijati paralelno. Neki koraci će se možda morati ponoviti, kao što je optimizacija IoT uređaja i testiranje masovne proizvodnje.
16 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

2.3 Sažetak
U ovom poglavlju prvo smo izložili osnovne komponente i funkcionalne module IoT projekta, a zatim uveli slučaj Smart Light za praksu, osvrćući se na njegovu strukturu, funkcije, pripremu hardvera i razvojni proces. Čitaoci mogu izvući zaključke iz prakse i postati sigurni u izvođenje IoT projekata sa minimalnim greškama u budućnosti.
Poglavlje 2. Uvod i praksa IoT projekata 17

18 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Poglavlje 3

Uvod

to

ESP

RainMaker

Internet stvari (IoT) nudi beskrajne mogućnosti za promjenu načina na koji ljudi žive, ali je razvoj IoT inženjeringa pun izazova. Sa javnim oblacima, proizvođači terminala mogu implementirati funkcionalnost proizvoda kroz sljedeća rješenja:
Zasnovano na platformama u oblaku dobavljača rješenja. Na ovaj način, proizvođači terminala trebaju samo dizajnirati hardver proizvoda, zatim povezati hardver sa oblakom pomoću priloženog komunikacijskog modula i konfigurirati funkcije proizvoda slijedeći smjernice. Ovo je efikasan pristup jer eliminiše potrebu za razvojem i radom i održavanjem na strani servera i aplikacije (O&M). Omogućuje proizvođačima terminala da se usredsrede na dizajn hardvera bez potrebe za razmatranjem implementacije u oblaku. Međutim, takva rješenja (npr. firmver uređaja i aplikacija) općenito nisu otvorenog koda, tako da će funkcije proizvoda biti ograničene platformom u oblaku dobavljača koja se ne može prilagoditi. U međuvremenu, podaci o korisnicima i uređajima također pripadaju platformi u oblaku.
Zasnovano na proizvodima u oblaku U ovom rješenju, nakon završetka hardverskog dizajna, proizvođači terminala ne samo da moraju implementirati cloud funkcije koristeći jedan ili više cloud proizvoda koje pruža javni oblak, već također moraju povezati hardver sa oblakom. Za nprample, da se povežete na Amazon 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 od proizvođača terminala traži da fleksibilno koriste i konfiguriraju proizvode u oblaku s dubljim razumijevanjem i bogatim iskustvom, već također zahtijeva od njih da uzmu u obzir troškove izgradnje i održavanja za početne i kasnijetages Ovo predstavlja veliki izazov za energiju i resurse kompanije.
U poređenju sa javnim oblacima, privatni oblaci se obično grade za specifične projekte i proizvode. Programeri privatnog oblaka dobijaju najviši nivo slobode u dizajnu protokola i implementaciji poslovne logike. Proizvođači terminala mogu praviti proizvode i dizajnirati šeme po svojoj volji i lako integrisati i osnažiti korisničke podatke. Kombinacija visoke sigurnosti, skalabilnosti i pouzdanosti javnog oblaka sa prednostimatages privatnog oblaka, Espressif je pokrenuo ESP
19

RainMaker, duboko integrirano rješenje privatnog oblaka zasnovano na Amazon oblaku. Korisnici mogu implementirati ESP RainMaker i izgraditi privatni oblak jednostavno pomoću AWS naloga.
3.1 Šta je ESP RainMaker?
ESP RainMaker je kompletna AIoT platforma izgrađena sa 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šćenjem Repozitorija aplikacija bez servera (SAR) koji obezbeđuje AWS, proizvođači terminala mogu brzo da primene ESP RainMaker na svoje AWS naloge, što je vremenski efikasno i lako za rukovanje. Upravlja i održava Espressif, SAR koji koristi ESP RainMaker pomaže programerima da smanje troškove održavanja oblaka i ubrzaju razvoj AIoT proizvoda, čime grade sigurna, stabilna i prilagodljiva AIoT rješenja. Slika 3.1 prikazuje arhitekturu ESP RainMaker-a.
Slika 3.1. Arhitektura ESP RainMaker-a
Javni server ESP RainMaker kompanije Espressif besplatan je za sve ESP entuzijaste, kreatore i edukatore za evaluaciju rješenja. Programeri se mogu prijaviti s Apple, Google ili GitHub računima i brzo izgraditi vlastite prototipove IoT aplikacija. Javni server integriše Alexa i Google Home, i 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 odgovaraju samo na određene radnje. Za iscrpnu listu podržanih glasovnih komandi, provjerite platforme trećih strana. Osim toga, Espressif nudi javnu aplikaciju RainMaker za korisnike da kontroliraju proizvode putem pametnih telefona. 20 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

3.2 Implementacija ESP RainMaker-a
Kao što je prikazano na slici 3.2, ESP RainMaker se sastoji od četiri dela: · Usluge zahtevanja, omogućavajući RainMaker uređajima da dinamički dobijaju sertifikate. · RainMaker Cloud (također poznat kao cloud backend), pruža usluge kao što su filtriranje poruka, upravljanje korisnicima, skladištenje podataka i integracije trećih strana. · RainMaker Agent, omogućava RainMaker uređajima da se povežu na RainMaker Cloud. · RainMaker Client (RainMaker App ili CLI skripte), za obezbjeđivanje, kreiranje korisnika, povezivanje uređaja i kontrolu, itd.
Slika 3.2. Struktura ESP RainMaker-a
ESP RainMaker pruža kompletan skup alata za razvoj proizvoda i masovnu proizvodnju, uključujući: RainMaker SDK
RainMaker SDK je baziran 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 RainMaker okviru. Za više informacija o C API-jima, posjetite https://bookc3.espressif.com/rm/c-api-reference. RainMaker App Javna verzija aplikacije RainMaker omogućava programerima da završe obezbjeđivanje uređaja, te kontroliraju i ispituju status uređaja (npr. proizvodi za pametno osvjetljenje). Dostupan je na iOS i Android prodavnicama aplikacija. Za više detalja, pogledajte Poglavlje 10. REST API-ji REST API-ji pomažu korisnicima da naprave svoje aplikacije slične RainMaker aplikaciji. Za više informacija posjetite https://swaggerapis.rainmaker.espressif.com/.
Poglavlje 3. Uvod u ESP RainMaker 21

Python API-ji CLI baziran na Pythonu, koji dolazi sa RainMaker SDK-om, obezbjeđen je za implementaciju svih funkcija sličnih karakteristikama pametnog telefona. Za više informacija o Python API-jima, posjetite https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, sa višim nivoom pristupa, obezbeđen je za privatnu implementaciju ESP RainMaker-a za generisanje sertifikata uređaja na veliko.
3.2.1 Usluga potraživanja
Sva komunikacija između RainMaker uređaja i cloud backend-a odvija se putem MQTT+TLS. U kontekstu ESP RainMaker-a, “Zahtjev” je proces u kojem uređaji dobijaju certifikate od Claiming Service-a za povezivanje na pozadinu oblaka. Imajte na umu da je Claiming Service primjenjiv samo na javnu RainMaker uslugu, dok za privatnu implementaciju, certifikati uređaja moraju biti generirani grupno preko Admin CLI. ESP RainMaker podržava tri vrste usluga za podnošenje zahteva: Samopolaganje
Sam uređaj preuzima certifikate putem tajnog ključa koji je unaprijed programiran u eFuseu nakon povezivanja na Internet. Host Driven Claiming Certifikati se dobijaju od razvojnog hosta sa RainMaker nalogom. Potpomognuto traženje Certifikati se dobijaju putem aplikacija za pametne telefone tokom obezbjeđivanja.
3.2.2 RainMaker Agent
Slika 3.3. Struktura RainMaker SDK-a Primarna funkcija RainMaker Agenta je da obezbijedi povezanost i pomogne sloju aplikacije da obradi podatke u oblaku uzlazne/dolazne veze. Izgrađen je kroz RainMaker SDK 22 ESP32-C3 Wireless Adventure: sveobuhvatni vodič za IoT

i razvijen na osnovu dokazanog ESP-IDF okvira, koristeći ESP-IDF komponente kao što su RTOS, NVS i MQTT. Slika 3.3 prikazuje strukturu RainMaker SDK-a.
RainMaker SDK uključuje dvije glavne karakteristike.
Veza
i. Saradnja sa Službom za zahtjeve za dobivanje certifikata uređaja.
ii. Povezivanje na pozadinu oblaka pomoću sigurnog MQTT protokola za pružanje daljinskog povezivanja i implementaciju daljinske kontrole, izvještavanje o porukama, upravljanje korisnicima, upravljanje uređajem, itd. Koristi MQTT komponentu u ESP-IDF-u prema zadanim postavkama i pruža sloj apstrakcije za povezivanje s drugim stekovi protokola.
iii. Pružanje komponente za pružanje Wi-Fi veze za Wi-Fi vezu i obezbjeđivanje, esp https ota komponente za OTA nadogradnje i esp lokalne ctrl komponente za otkrivanje lokalnog uređaja i povezivanje. Svi ovi ciljevi se mogu postići jednostavnom konfiguracijom.
Obrada podataka
i. Pohranjivanje certifikata uređaja koje je izdala Claiming Service i podataka potrebnih prilikom pokretanja RainMakera, prema zadanim postavkama koristeći sučelje koje pruža nvs flash komponenta, i pružanje API-ja za programere za direktnu upotrebu.
ii. Korištenje mehanizma povratnog poziva za obradu podataka u oblaku uzlazne/dolazne veze i automatsko deblokiranje podataka na sloju aplikacije za laku obradu od strane programera. Za nprampRainMaker 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 funkcije kao što je mjerenje vremena, RainMaker SDK pruža rješenje bez razvoja koje se može jednostavno omogućiti kada je potrebno. Zatim, RainMaker Agent će direktno obraditi podatke, poslati ih u oblak kroz pridruženu MQTT temu i vratiti promjene podataka u pozadinu oblaka kroz mehanizam povratnog poziva.
3.2.3 Cloud Backend
Pozadina oblaka je izgrađena na AWS Serverless Computingu i postiže se putem AWS Cognito (sistem za upravljanje identitetom), Amazon API Gateway, AWS Lambda (usluga računarstva bez servera), Amazon DynamoDB (NoSQL baza podataka), AWS IoT Core (IoT pristupno jezgro koje pruža MQTT pristup i filtriranje pravila), Amazon Simple Email Service (SES jednostavna usluga pošte), Amazon CloudFront (mreža za brzu isporuku), Amazon Simple Queue Service (SQS poruka u redu čekanja) i Amazon S3 (usluga za skladištenje podataka). Cilj mu je optimizirati skalabilnost i sigurnost. Uz ESP RainMaker, programeri mogu upravljati uređajima bez potrebe da pišu kod u oblaku. Poruke koje prijavljuju uređaji se transparentno prenose na
Poglavlje 3. Uvod u ESP RainMaker 23

klijente aplikacije ili druge usluge treće strane. Tabela 3.1 prikazuje AWS proizvode i funkcije u oblaku koji se koriste u pozadini oblaka, s više proizvoda i funkcija u razvoju.
Tabela 3.1. AWS cloud proizvodi i funkcije koje koristi pozadinska strana oblaka

AWS Cloud proizvod koji koristi RainMaker

Funkcija

AWS Cognito

Upravljanje korisničkim vjerodajnicama i podrška za prijavu trećih strana

AWS Lambda

Implementacija osnovne poslovne logike cloud backend-a

Amazon Timestream Pohranjivanje podataka vremenskih serija

Amazon DynamoDB Čuvanje privatnih podataka kupaca

AWS IoT Core

Podržava MQTT komunikaciju

Amazon SES

Pružanje usluga slanja e-pošte

Amazon CloudFront Ubrzavanje upravljanja pozadinom webpristup sajtu

Amazon SQS

Prosljeđivanje poruka iz AWS IoT Core

3.2.4 RainMaker klijent
RainMaker klijenti, kao što su App i CLI, komuniciraju sa pozadinom oblaka preko REST API-ja. Detaljne informacije i uputstva o REST API-jima mogu se naći u Swagger dokumentaciji koju obezbeđuje Espressif. RainMaker-ov klijent za mobilne aplikacije dostupan je za iOS i Android sisteme. Omogućava obezbjeđivanje uređaja, kontrolu i dijeljenje, kao i kreiranje i omogućavanje zadataka odbrojavanja i povezivanje s platformama trećih strana. Može automatski učitati korisničko sučelje i ikone prema konfiguraciji koju su prijavili uređaji i u potpunosti prikazati TSL uređaja.
Za nprample, ako je pametno svjetlo izgrađeno na RainMaker SDK-u, examples, ikona i korisničko sučelje sijalice će se automatski učitati kada se dostavljanje završi. Korisnici mogu promijeniti boju i svjetlinu svjetlosti putem interfejsa i postići kontrolu treće strane povezivanjem Alexa Smart Home Skill ili Google Smart Home Actions sa svojim ESP RainMaker nalozima. Slika 3.4 prikazuje ikonu i korisničko sučelje prampsijalice na Alexa, Google Home i ESP RainMaker aplikaciji.

24 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

(a) Prample – Alexa

(b) Dokample – Google Home

(c) Dokample – ESP RainMaker
Slika 3.4. Primamples ikona i korisničko sučelje sijalice na Alexa, Google Home i ESP RainMaker aplikaciji
3.3 Vježba: Ključne točke za razvoj s ESP RainMaker
Kada je sloj drajvera uređaja završen, programeri mogu početi da kreiraju TSL modele i obrađuju podatke za downlink koristeći API-je koje obezbeđuje RainMaker SDK, i omogućavaju osnovne usluge ESP RainMaker na osnovu definicije proizvoda i zahteva.
Poglavlje 3. Uvod u ESP RainMaker 25

Odjeljak 9.4 ove knjige će objasniti implementaciju LED pametnog svjetla u RainMaker. Tokom otklanjanja grešaka, programeri mogu koristiti CLI alate u RainMaker SDK-u za komunikaciju sa pametnim svjetlom (ili pozvati REST API-je iz Swaggera).
Poglavlje 10 će razraditi upotrebu REST API-ja u razvoju aplikacija za pametne telefone. OTA nadogradnje LED pametnih svjetala će biti pokrivene u Poglavlju 11. Ako su programeri omogućili daljinsko praćenje ESP Insights, pozadinsko upravljanje ESP RainMaker će prikazati podatke ESP Insights. Detalji će biti predstavljeni u poglavlju 15.
ESP RainMaker podržava privatnu implementaciju, koja se razlikuje od javnog RainMaker servera na sljedeće načine:
Usluga zahtjeva za generiranje certifikata u privatnim implementacijama, potrebno je koristiti RainMaker Admin CLI umjesto Claiming. Sa javnim serverom, programeri moraju dobiti administratorska prava za implementaciju nadogradnje firmvera, ali je to nepoželjno u komercijalnim implementacijama. Stoga se ne može pružiti ni posebna usluga provjere autentičnosti za samopolaganje prava, niti administratorska prava za polaganje prava koje pokreće host ili potpomognuto.
Aplikacije za telefon U privatnim implementacijama, aplikacije se moraju zasebno konfigurirati i kompajlirati kako bi se osiguralo da sistemi naloga nisu interoperabilni.
Prijave trećih strana i glasovna integracija Programeri moraju zasebno da konfigurišu preko Google i Apple Developer naloga 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 sa javnog servera na privatni server zahteva samo zamenu sertifikata uređaja, što uveliko poboljšava efikasnost migracije i smanjuje troškove migracije i sekundarnog otklanjanja grešaka.
3.4 Karakteristike ESP RainMaker-a
Funkcije ESP RainMaker-a su uglavnom ciljane na tri aspekta – upravljanje korisnicima, krajnjim korisnicima i administratorima. Sve funkcije su podržane i na javnim i na privatnim serverima osim ako nije drugačije navedeno.
3.4.1 Upravljanje korisnicima
Funkcije upravljanja korisnicima omogućavaju krajnjim korisnicima da se registruju, prijave, mijenjaju lozinke, preuzimaju lozinke itd.
26 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Registrirajte se i prijavite Metode registracije i prijave koje podržava RainMaker uključuju: · Email ID + Lozinka · Broj telefona + Lozinka · Google račun · Apple račun · GitHub račun (samo javni server) · Amazon račun (samo privatni server)
NAPOMENA Prijavite se koristeći Google/Amazon dijeli adresu e-pošte korisnika sa RainMaker-om. Prijavite se koristeći Apple dijeli lažnu adresu koju Apple dodjeljuje korisniku posebno za uslugu RainMaker. RainMaker nalog će se automatski kreirati za korisnike koji se po prvi put prijavljuju sa Google, Apple ili Amazon nalogom.
Promjena lozinke Vrijedi samo za prijave zasnovane na ID-u e-pošte/broju telefona. Sve ostale aktivne sesije će biti odjavljene nakon promjene lozinke. Prema ponašanju AWS Cognito, odjavljene sesije mogu ostati aktivne do 1 sat.
Preuzimanje lozinke Važi samo za prijave zasnovane na ID-u e-pošte/broju telefona.
3.4.2 Karakteristike krajnjeg korisnika
Funkcije otvorene krajnjim korisnicima uključuju lokalnu i daljinsku kontrolu i nadzor, zakazivanje, grupisanje uređaja, dijeljenje uređaja, push obavijesti i integracije trećih strana.
Daljinsko upravljanje i nadzor · Upitajte konfiguraciju, vrijednosti parametara i status veze za jedan ili sve uređaje. · Postavite parametre za jedan ili više uređaja.
Lokalna kontrola i nadzor Mobilni telefon i uređaj moraju biti povezani na istu mrežu radi lokalne kontrole.
Planiranje · Korisnici unaprijed postavljaju određene radnje u određeno vrijeme. · Nije potrebna internetska veza za uređaj dok se izvršava raspored. · Jednom ili ponavljanjem (navođenjem dana) za jedan ili više uređaja.
Grupisanje uređaja Podržava apstraktno grupisanje na više nivoa. Metapodaci grupe mogu se koristiti za kreiranje 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 obavještenja Krajnji korisnici će primati push obavještenja za događaje kao što su · Novi uređaj(i) dodani/uklonjeni · Uređaj povezan s oblakom · Uređaj prekinut s oblakom · Zahtjevi za dijeljenje uređaja kreirani/prihvaćeni/odbijeni · Poruke upozorenja koje su prijavili uređaji
Integracije treće strane Alexa i Google Voice Assistant su podržane za kontrolu RainMaker uređaja, uključujući svjetla, prekidače, utičnice, ventilatore i temperaturne senzore.
3.4.3 Admin funkcije
Funkcije administratora omogućavaju administratorima da implementiraju registraciju uređaja, grupisanje uređaja i OTA nadogradnje i da view statistika i ESP Insights podaci.
Registracija uređaja Generirajte certifikate uređaja i registrirajte se na Admin CLI (samo privatni server).
Grupiranje uređaja Kreirajte apstraktne ili strukturirane grupe na osnovu informacija o uređaju (samo privatni server).
Over-the-Air (OTA) nadogradnje Prenesite firmver na osnovu verzije i modela, na jedan ili više uređaja ili grupu Nadgledajte, otkažite ili arhivirajte OTA poslove.
View statistika Viewmoguća statistika uključuje: · Registracije uređaja (sertifikati koje je registrovao administrator) · Aktivacije uređaja (uređaj povezan po prvi put) · Korisnički nalozi · Povezivanje korisnika i uređaja
View ESP Insights podaci Viewsposobni ESP Insights podaci uključuju: · Greške, upozorenja i prilagođene evidencije · Izvještaje o rušenju i analize · Razlozi ponovnog pokretanja · metrike poput upotrebe memorije, RSSI, itd. · Prilagođene metrike i varijable
28 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

3.5 Sažetak
U ovom poglavlju uveli smo neke ključne razlike između javne implementacije RainMakera i privatne implementacije. Privatno ESP RainMaker rješenje koje je lansirao Espressif je vrlo pouzdano i proširivo. Svi čipovi serije ESP32 su povezani i prilagođeni AWS-u, što značajno smanjuje troškove. Programeri se mogu fokusirati na verifikaciju prototipa bez potrebe da uče o AWS cloud proizvodima. Takođe smo objasnili implementaciju i karakteristike ESP RainMaker-a, te neke ključne tačke za razvoj pomoću platforme.
Skenirajte da preuzmete ESP RainMaker za Android Skenirajte da preuzmete ESP RainMaker za iOS
Poglavlje 3. Uvod u ESP RainMaker 29

30 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Poglavlje Postavljanje 4 Razvojno okruženje
Ovo poglavlje se fokusira na ESP-IDF, službeni okvir za razvoj softvera za ESP32-C3. Objasnićemo kako postaviti okruženje na različite operativne sisteme, predstaviti strukturu projekta i izgraditi sistem ESP-IDF, kao i upotrebu odgovarajućih razvojnih alata. Zatim ćemo predstaviti proces kompajliranja i pokretanja example projekta, nudeći detaljno objašnjenje izlaznog dnevnika za svaki stage.
4.1 ESP-IDF Prekoview
ESP-IDF (Espressif IoT razvojni okvir) je okvir za razvoj IoT-a na jednom mjestu koji pruža Espressif Technology. Koristi C/C++ kao glavni razvojni jezik i podržava unakrsnu kompilaciju pod glavnim operativnim sistemima kao što su Linux, Mac i Windows. BivšiampProgrami uključeni u ovu knjigu razvijeni su pomoću ESP-IDF, koji nudi sljedeće karakteristike: · SoC drajvere na nivou sistema. ESP-IDF uključuje drajvere za ESP32, ESP32-S2, ESP32-C3,
i drugi čips. Ovi drajveri obuhvataju biblioteku perifernog niskog nivoa (LL), biblioteku sloja apstrakcije hardvera (HAL), RTOS podršku i softver za drajver gornjeg nivoa, itd. · Osnovne komponente. ESP-IDF uključuje osnovne komponente potrebne za razvoj IoT-a. Ovo uključuje višestruke stekove mrežnih protokola kao što su HTTP i MQTT, okvir za upravljanje napajanjem sa dinamičkom frekvencijskom modulacijom i funkcije kao što su Flash Enkripcija i Secure Boot, itd. · Razvojni i proizvodni alati. ESP-IDF pruža najčešće korišćene alate za pravljenje, flešovanje i otklanjanje grešaka tokom razvoja i masovne proizvodnje (pogledajte sliku 4.1), kao što je sistem izgradnje zasnovan na CMake, lanac alata za unakrsnu kompilaciju zasnovan na GCC-u i JTAG alat za otklanjanje grešaka baziran na OpenOCD-u, itd. Vrijedi napomenuti da se ESP-IDF kod prvenstveno pridržava licence otvorenog koda Apache 2.0. Korisnici mogu razvijati lični ili komercijalni softver bez ograničenja uz pridržavanje uslova licence otvorenog koda. Pored toga, korisnicima se besplatno odobravaju trajne patentne licence, bez obaveze otvaranja bilo kakvih modifikacija u izvornom kodu.
31

Slika 4.1.

Izgradnja, flešovanje i otklanjanje grešaka-

alati za razvoj i masovnu proizvodnju

4.1.1 ESP-IDF verzije
ESP-IDF kod je hostovan na GitHubu kao projekat 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 revizije subverzija takođe redovno objavljuju, kao što su v4.3.1, v4.2.2, itd. Tabela 4.1 prikazuje status podrške različitih ESP-IDF verzija za Espressif čipove, pokazujući da li su u prethodnomview stage (nudi podršku za preview verzije, kojima možda nedostaju određene funkcije ili dokumentacija) ili su službeno podržane.

Tabela 4.1. Status podrške za različite ESP-IDF verzije 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
preview

v5.0 podržano podržano podržano podržano podržano preview

32 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Iteracija glavnih verzija često uključuje prilagođavanja strukture okvira i ažuriranja sistema kompilacije. Za nprampDakle, glavna promena sa v3.* na v4.* bila je postepena migracija sistema za izgradnju sa Make na CMake. S druge strane, ponavljanje manjih verzija obično podrazumijeva dodavanje novih funkcija 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 Espressif-a. Kada se popravi, kod, lanac alata i dokumenti izdanja za istu verziju ostaju nepromijenjeni. Međutim, grane GitHub-a (npr. grana izdanja/v4.3) prolaze kroz česta urezivanja koda, često na dnevnoj bazi. Stoga se dva isječka koda u istoj grani mogu razlikovati, što zahtijeva od programera da brzo ažuriraju svoj kod u skladu s tim.
4.1.2 ESP-IDF Git radni tok
Espressif prati određeni Git radni tok za ESP-IDF, naveden na sljedeći način:
· Nove promjene su napravljene na master 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 će se prvo ponovno izvršitiviewed i testiran u Espressif-ovom internom spremištu, a zatim proslijeđen na GitHub nakon što je automatsko testiranje završeno.
· Kada nova verzija završi razvoj karakteristika na glavnoj grani i ispuni kriterijume za ulazak u beta testiranje, prelazi na novu granu, kao što je release/v4.3. Osim toga, ova nova podružnica je tagged kao verzija prije izdanja, poput v4.3-beta1. Programeri se mogu obratiti na GitHub platformu da pristupe kompletnoj listi grana i tags za ESP-IDF. Važno je napomenuti da beta verzija (verzija prije objavljivanja) još uvijek može imati značajan broj poznatih problema. Kako beta verzija prolazi kroz kontinuirano testiranje, ispravke grešaka se dodaju i ovoj verziji i glavnoj grani istovremeno. U međuvremenu, glavna grana je možda već počela razvijati nove funkcije za sljedeću verziju. Kada je testiranje skoro završeno, na granu se dodaje oznaka kandidata za izdanje (rc), što ukazuje da je potencijalni kandidat za službeno izdanje, kao što je v4.3-rc1. Kod ovog stage, grana ostaje verzija prije izdanja.
· Ako nisu otkrivene ili prijavljene nikakve veće greške, verzija prije izdanja na kraju dobiva oznaku glavne verzije (npr. v5.0) ili oznaku manje verzije (npr. v4.3) i postaje službena verzija izdanja, što je dokumentirano na stranici s napomenama o izdanju. Nakon toga, sve greške identificirane u ovoj verziji su popravljene na grani izdanja. Nakon što je ručno testiranje završeno, grani se dodjeljuje oznaka verzije za popravku greš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 odgovarajuće verzije
Pošto je ESP-IDF zvanično počeo da podržava ESP32-C3 od verzije v4.3, a v4.4 još nije zvanično objavljen u vreme pisanja ove knjige, verzija koja se koristi u ovoj knjizi je v4.3.2, što je revidirana verzija od v4.3. Međutim, važno je napomenuti da do trenutka kada pročitate ovu knjigu, v4.4 ili novije verzije možda već budu dostupne. Prilikom odabira verzije preporučujemo sljedeće:
· Za početnike programere, preporučljivo je odabrati stabilnu verziju v4.3 ili njenu revidiranu verziju, koja je u skladu s prethodnomampverzija koja se koristi u ovoj knjizi.
· Za potrebe masovne proizvodnje, preporučuje se korištenje najnovije stabilne verzije kako biste iskoristili najnoviju tehničku podršku.
· Ako namjeravate eksperimentirati s novim čipovima ili istraživati ​​nove karakteristike proizvoda, koristite glavnu granu. Najnovija verzija sadrži sve najnovije funkcije, ali imajte na umu da mogu postojati poznate ili nepoznate greške.
· Ako stabilna verzija koja se koristi ne uključuje željene nove značajke i želite minimizirati rizike povezane s glavnom granom, razmislite o korištenju odgovarajuće grane izdanja, kao što je grana release/v4.4. Espressif-ovo GitHub spremište će prvo kreirati granu release/v4.4, a zatim će objaviti stabilnu verziju v4.4 zasnovanu na specifičnom povijesnom snimku ove grane, nakon završetka razvoja i testiranja svih funkcija.
4.1.4 Prekoview ESP-IDF SDK direktorija
ESP-IDF SDK se sastoji od dva glavna direktorija: esp-idf i .espressif. Prvi sadrži izvorni kod ESP-IDF spremišta files i skripte za kompilaciju, dok potonji uglavnom pohranjuje lance alata za kompilaciju i drugi softver. Poznavanje ova dva direktorija pomoći će programerima da bolje iskoriste dostupne resurse i ubrzaju proces razvoja. Struktura direktorija ESP-IDF-a je opisana u nastavku:
(1) ESP-IDF direktorij kodova spremišta (/esp/esp-idf), kao što je prikazano na slici 4.2.
a. Komponente direktorija komponenti
Ovaj osnovni direktorij integrira brojne bitne softverske komponente ESP-IDF-a. Nijedan projektni kod se ne može kompajlirati bez oslanjanja na komponente unutar ovog direktorija. Uključuje podršku za drajvere za razne Espressif čipove. Od LL biblioteke i HAL bibliotečkog sučelja za periferne uređaje do upravljačkog programa višeg nivoa i virtualnog File Podrška sistemskog (VFS) sloja, programeri mogu izabrati odgovarajuće komponente na različitim nivoima za svoje razvojne potrebe. ESP-IDF takođe podržava višestruke standardne stekove 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 pružaju razumijevanje-
34 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Slika 4.2. ESP-IDF direktorij kodova spremišta
sive funkcionalnosti i mogu se lako integrirati u aplikacije, omogućavajući programerima da se fokusiraju isključivo na poslovnu logiku. Neke uobičajene komponente uključuju: · drajver: Ova komponenta sadrži periferne upravljačke programe za različite Espressif
serije čipova, kao što su GPIO, I2C, SPI, UART, LEDC (PWM), itd. Programi perifernih drajvera u ovoj komponenti nude apstraktne interfejse nezavisne od čipa. Svaka periferija ima zajedničko zaglavlje file (kao što je gpio.h), eliminirajući potrebu za rješavanjem različitih pitanja podrške specifičnih za čip. · esp_wifi: Wi-Fi, kao posebna periferna jedinica, se tretira kao posebna komponenta. Uključuje više API-ja kao što su inicijalizacija različitih načina rada Wi-Fi drajvera, konfiguracija parametara i obrada događaja. Određene funkcije ove komponente su obezbeđene u obliku statičkih biblioteka linkova. ESP-IDF takođe pruža sveobuhvatnu dokumentaciju drajvera za jednostavnu upotrebu.
Poglavlje 4. Postavljanje razvojnog okruženja 35

· freertos: Ova komponenta sadrži kompletan FreeRTOS kod. Osim pružanja sveobuhvatne podrške za ovaj operativni sistem, 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 dokumenti
Ovaj direktorij sadrži razvojne dokumente koji se odnose na ESP-IDF, uključujući Vodič za početak, Referentni priručnik za API, Vodič za razvoj itd.
NAPOMENA Nakon što ga kompajliraju automatizovani alati, sadržaj ovog direktorijuma se postavlja na https://docs.espressif.com/projects/esp-idf. Obavezno prebacite cilj dokumenta na ESP32-C3 i odaberite navedenu ESP-IDF verziju.
c. Alati za skripte
Ovaj direktorij sadrži najčešće korištene alate za kompilaciju kao što je idf.py i alat za terminal monitora idf_monitor.py, itd. Poddirektorij cmake također sadrži core skriptu files sistema kompilacije, koji služi kao osnova za implementaciju ESP-IDF pravila kompilacije. Prilikom dodavanja varijabli okruženja, sadržaj unutar direktorija alata se dodaje sistemskoj varijabli okruženja, omogućavajući idf.py da se izvrši direktno ispod putanje projekta.
d. Prample programski direktorij examples
Ovaj direktorij sadrži ogromnu kolekciju ESP-IDF example programi koji demonstriraju upotrebu komponentnih API-ja. Bivšiamplesovi su organizovani u različite poddirektorije na osnovu njihovih kategorija:
· početak: Ovaj poddirektorij uključuje početni nivo exampriječi poput "zdravo svijet" i "treptanje" kako bi pomogli korisnicima da shvate osnove.
· bluetooth: Možete pronaći nprampOvdje možete pronaći sve stavke, uključujući Bluetooth LE Mesh, Bluetooth LE HID, BluFi i još mnogo toga.
· wifi: Ovaj poddirektorijum se fokusira na Wi-Fi npramples, uključujući osnovne programe kao što su Wi-Fi SoftAP, Wi-Fi Station, espnow, kao i vlasnički komunikacijski protokol examples od Espressifa. Takođe uključuje više slojeva aplikacija nprampdatoteke zasnovane na Wi-Fi, kao što su Iperf, Sniffer i Smart Config.
· periferne jedinice: Ovaj opsežni poddirektorij dalje je podijeljen u brojne poddirektorije na osnovu naziva periferije. Uglavnom sadrži periferne drajvere npramples za Espressif čips, sa svakim example sa nekoliko sub-examples. Na primjer, gpio poddirektorij uključuje dva examples: GPIO i GPIO matrična tastatura. Važno je napomenuti da nisu svi bivšiampdatoteke u ovom direktoriju su primjenjive na ESP32-C3.
36 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

Za nprample, bivšiampdatoteke u usb/host su primenljive samo na periferne uređaje sa USB Host hardverom (kao što je ESP32-S3), a ESP32-C3 nema ovu periferiju. Sistem kompilacije obično daje upite prilikom postavljanja cilja. README file svakog example navodi podržane čipove. · protokoli: Ovaj poddirektorij sadrži npramplesovi za različite komunikacijske protokole, uključujući MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, koji pokrivaju širok spektar komunikacijskih protokola npr.ampmanje potrebne za razvoj IoT-a. · Provizija: Ovdje ćete pronaći proviziju exampdatoteke za različite metode, kao što su Wi-Fi provizija i Bluetooth LE obezbjeđivanje. · sistem: Ovaj poddirektorij uključuje otklanjanje grešaka u sistemu npramples (npr. praćenje steka, praćenje vremena izvođenja, praćenje zadataka), upravljanje napajanjem npramples (npr. različiti režimi mirovanja, koprocesori) i nprampdatoteke koje se odnose na uobičajene sistemske komponente kao što su terminal konzole, petlja događaja i sistemski tajmer. · pohrana: Unutar ovog poddirektorijuma, otkrit ćete exampmanje od svih file sistemi i mehanizmi za skladištenje koje podržava ESP-IDF (kao što je čitanje i pisanje Flash, SD kartice i drugih medija za skladištenje), kao i exampdatoteke nepromjenjive memorije (NVS), FatFS, SPIFFS i druge file sistemske operacije. · sigurnost: Ovaj poddirektorij sadrži exampstvari koje se odnose na 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. Direktorij distribucije softvera dist
ESP-IDF lanac alata i drugi softver se distribuiraju u obliku komprimiranih paketa. Tokom procesa instalacije, instalacijski alat prvo preuzima komprimirani paket u dist direktorij, a zatim ga izdvaja u navedeni direktorij. Kada se instalacija završi, sadržaj u ovom direktoriju može se sigurno ukloniti.
b. Python direktorij virtualnog okruženja python env
Različite verzije ESP-IDF-a oslanjaju se na specifične verzije Python paketa. Instaliranje ovih paketa direktno na isti host može dovesti do sukoba između verzija paketa. Da bi to riješio, ESP-IDF koristi Python virtuelna okruženja za izolaciju različitih verzija paketa. Sa ovim mehanizmom, programeri mogu instalirati više verzija ESP-IDF-a na isti host i lako se prebacivati ​​između njih uvozom različitih varijabli okruženja.
c. Alati direktorija lanca alata za kompilaciju ESP-IDF
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 generiše konačni izvršni program. Dodatno, ovaj direktorij sadrži standardnu ​​biblioteku jezika C/C++ zajedno sa odgovarajućim zaglavljem files. Ako program referencira zaglavlje sistema file poput #include , 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 sisteme kao što su Windows, Linux i macOS. Ovaj odjeljak će predstaviti kako postaviti razvojno okruženje na svakom sistemu. Preporučuje se razvoj ESP32-C3 na Linux sistemu, koji će ovdje biti detaljno predstavljen. Mnoga uputstva su primjenjiva na svim platformama zbog sličnosti razvojnih alata. Stoga se savjetuje da pažljivo pročitate sadržaj ovog odjeljka.
NAPOMENA Možete pogledati dokumente na mreži koji su dostupni na https://bookc3.espressif.com/esp32c3, koji pružaju komande navedene u ovom odeljku.
4.2.1 Postavljanje ESP-IDF razvojnog okruženja na Linux
GNU alati za razvoj i otklanjanje grešaka potrebni za razvojno okruženje ESP-IDF su izvorni za Linux sistem. Dodatno, terminal komandne linije u Linuxu je moćan i lak za upotrebu, što ga čini idealnim izborom za razvoj ESP32-C3. Možeš
38 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

odaberite svoju željenu distribuciju Linuxa, ali preporučujemo korištenje Ubuntua ili drugih Debian sistema. 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 da instalirate sve potrebne pakete. Komanda ć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 nalog i lozinku za gornju naredbu. Podrazumevano, nikakva informacija neće biti prikazana prilikom unosa lozinke. Jednostavno pritisnite tipku “Enter” za nastavak postupka.
Git je alat za upravljanje ključem u ESP-IDF-u. Nakon uspješnog postavljanja razvojnog okruženja, možete koristiti git log naredbu 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, koja je neophodna za instaliranje 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 se naširoko koriste u C/C++ projektima i služe kao zadani alati za kompilaciju i pravljenje koda u ESP-IDF-u. libusb-1.0-0 i dfu-util su glavni drajveri koji se koriste za USB serijsku komunikaciju i snimanje firmvera. Nakon što su softverski paketi instalirani, možete koristiti apt show naredbu za dobivanje detaljnih opisa svakog paketa. Za nprample, koristite apt show git da ispišete informacije o opisu za Git alat.
P: Šta učiniti ako Python verzija nije podržana? O: ESP-IDF v4.3 zahtijeva verziju Pythona koja nije niža od v3.6. Za starije verzije Ubuntua, ručno preuzmite i instalirajte višu verziju Pythona i postavite Python3 kao zadano Python okruženje. Detaljna uputstva možete pronaći traženjem ključne riječi update-alternatives python.
2. Preuzmite ESP-IDF kod spremišta
Otvorite terminal i kreirajte fasciklu pod imenom esp u svom početnom direktorijumu koristeći naredbu mkdir. Možete odabrati drugo ime za folder ako želite. Koristite naredbu cd da uđete u folder.
Poglavlje 4. Postavljanje razvojnog okruženja 39

$ mkdir -p /esp $ cd /esp
Koristite naredbu git clone da preuzmete ESP-IDF kod spremišta, kao što je prikazano ispod:
$ git clone -b v4.3.2 – rekurzivno https://github.com/espressif/esp-idf.git
U gornjoj naredbi, parametar -b v4.3.2 specificira verziju za preuzimanje (u ovom slučaju verzija 4.3.2). Parametar –recursive osigurava da se sva podrepozitorija ESP-IDF-a preuzimaju rekurzivno. Informacije o podrepozitorijumima mogu se naći u .gitmodules file.
3. Instalirajte lanac razvojnih alata ESP-IDF
Espressif obezbeđuje automatizovanu skriptu install.sh za preuzimanje i instalaciju lanca alata. Ova skripta provjerava trenutnu ESP-IDF verziju i okruženje operativnog sistema, a zatim preuzima i instalira odgovarajuću verziju paketa Python alata i lanaca alata za kompilaciju. Zadana staza instalacije za lanac alata je /.espressif. Sve što trebate učiniti je navigirati do esp-idf direktorija i pokrenuti install.sh.
$ cd /esp/esp-idf $ ./install.sh
Ako uspješno instalirate lanac alata, terminal će prikazati:
Sve urađeno!
U ovom trenutku, uspješno ste postavili ESP-IDF razvojno okruženje.
4.2.2 Postavljanje ESP-IDF razvojnog okruženja na Windows
1. Preuzmite program za instalaciju ESP-IDF alata
SAVJETI Preporučuje se postavljanje ESP-IDF razvojnog okruženja na Windows 10 ili noviji. Instalacioni program možete preuzeti sa https://dl.espressif.com/dl/esp-idf/. Instalacijski program je također softver otvorenog koda, a njegov izvorni kod može biti viewobjavljeno na https://github.com/espressif/idf-installer.
· Online program za instalaciju ESP-IDF alata
Ovaj instalater je relativno mali, veličine oko 4 MB, a drugi paketi i kod će biti preuzeti tokom procesa instalacije. AdvantagE od online instalatora je da ne samo da se softverski paketi i kod mogu preuzeti na zahtjev tokom procesa instalacije, već također omogućava instalaciju svih dostupnih izdanja ESP-IDF-a i najnovije grane GitHub koda (kao što je glavna grana) . Nedostataktage je da zahtijeva mrežnu vezu tokom procesa instalacije, što može uzrokovati neuspjeh instalacije zbog problema s mrežom.
40 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

· Vanmrežni program za instalaciju ESP-IDF alata Ovaj program za instalaciju je veći, veličine oko 1 GB i sadrži sve softverske pakete i kod potreban za podešavanje okruženja. Glavni advantagE od oflajn instalatera je to što se može koristiti na računarima bez pristupa Internetu i općenito ima veću stopu uspješnosti instalacije. Treba napomenuti da vanmrežni instalater može instalirati samo stabilna izdanja ESP-IDF identificirana s v*.* ili v*.*.*.
2. Pokrenite program za instalaciju ESP-IDF alata Nakon preuzimanja odgovarajuće verzije instalacionog programa (uzmite ESP-IDF Tools Offline 4.3.2 za npr.ample here), dvaput kliknite na exe file da pokrenete instalacijski interfejs ESP-IDF. Sljedeće pokazuje kako instalirati ESP-IDF stabilnu verziju v4.3.2 koristeći vanmrežni instalater.
(1) U interfejsu „Odaberi jezik instalacije“ prikazanom na slici 4.4, izaberite jezik koji će se koristiti sa padajuće liste.
Slika 4.4. Interfejs “Odaberi jezik instalacije” (2) Nakon odabira jezika, kliknite na “OK” da bi se pojavio “License ugovor” sučelje
(vidi sliku 4.5). Nakon što ste pažljivo pročitali licencni ugovor za instalaciju, odaberite “Prihvatam ugovor” i kliknite “Dalje”.
Slika 4.5. Interfejs „Licencni ugovor” Poglavlje 4. Postavljanje razvojnog okruženja 41

(3) Review konfiguraciju sistema u interfejsu „Provera sistema pre instalacije“ (pogledajte sliku 4.6). Provjerite verziju Windowsa i informacije o instaliranom antivirusnom softveru. Kliknite na “Dalje” ako su sve stavke konfiguracije normalne. U suprotnom, možete kliknuti na “Puna evidencija” za rješenja zasnovana na ključnim stavkama.
Slika 4.6. SAVJETI interfejsa “Provjera sistema prije instalacije”.
Za pomoć možete poslati zapisnike na https://github.com/espressif/idf-installer/issues. (4) Odaberite instalacijski direktorij ESP-IDF. Ovdje odaberite D:/.espressif, kao što je prikazano na
Slika 4.7 i kliknite na “Dalje”. Imajte na umu da je .espressif ovdje skriveni direktorij. Nakon što je instalacija završena, možete view specifični sadržaj ovog direktorija otvaranjem file menadžer i prikazivanje skrivenih stavki.
Slika 4.7. Odaberite instalacijski direktorij ESP-IDF 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 na “Dalje”.
Slika 4.8. Odaberite komponente za instaliranje (6) Potvrdite komponente koje želite instalirati i kliknite na “Instaliraj” da pokrenete automatiziranu instalaciju.
proces stajanja, kao što je prikazano na slici 4.9. Proces instalacije može trajati desetine minuta, a traka napretka procesa instalacije prikazana je na slici 4.10. Molimo sačekajte strpljivo.
Slika 4.9. Priprema za instalaciju (7) Nakon što je instalacija završena, preporučuje se da provjerite “Registrirajte ESP-IDF
Izvršne datoteke alata kao izuzeća Windows Defender-a…” kako biste spriječili brisanje antivirusnog softvera files. Dodavanje stavki isključenja također može preskočiti česta skeniranja antivirusa
Poglavlje 4. Postavljanje razvojnog okruženja 43

Slika 4.10. Softver za traku napretka instalacije, značajno poboljšava efikasnost kompilacije koda Windows sistema. Kliknite na “Finish” da završite instalaciju razvojnog okruženja, kao što je prikazano na slici 4.11. Možete odabrati da označite “Pokreni ESP-IDF PowerShell okruženje” ili “Pokreni ESP-IDF komandnu liniju”. Pokrenite prozor za kompilaciju direktno nakon instalacije kako biste osigurali da razvojno okruženje normalno funkcionira.
Slika 4.11. Instalacija završena (8) Otvorite instalirano razvojno okruženje na listi programa (ili ESP-IDF 4.3
CMD ili ESP-IDF 4.3 PowerShell terminal, kao što je prikazano na slici 4.12), i varijabla okruženja ESP-IDF će se automatski dodati prilikom pokretanja 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 Wireless Adventure: 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 Mac
Proces instaliranja ESP-IDF razvojnog okruženja na Mac sistem je isti kao i na Linux sistemu. Naredbe za preuzimanje koda spremišta i instaliranje lanca alata su potpuno iste. Samo su komande za instaliranje paketa zavisnosti malo drugačije. 1. Instalirajte pakete zavisnosti 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 zavisnosti tako što ćete pokrenuti sljedeću naredbu:
% brew python3 install cmake ninja ccache dfu-util
2. Preuzmite ESP-IDF kod spremišta Slijedite upute date u odjeljku 4.2.1 za preuzimanje koda ESP-IDF spremišta. Koraci su isti kao i za preuzimanje na Linux sistemu.
Poglavlje 4. Postavljanje razvojnog okruženja 45

3. Instalirajte lanac razvojnih alata ESP-IDF
Slijedite upute u odjeljku 4.2.1 da instalirate lanac razvojnih alata ESP-IDF. Koraci su isti kao za instalaciju na Linux sistemu.
4.2.4 Instaliranje VS koda
Podrazumevano, ESP-IDF SDK ne uključuje alat za uređivanje koda (iako najnoviji ESP-IDF instalater za Windows nudi opciju za instaliranje ESP-IDF Eclipse). Možete koristiti bilo koji alat za uređivanje teksta po vašem izboru da uredite kod, a zatim ga prevedete pomoću terminalskih naredbi.
Jedan popularan alat za uređivanje koda je VS Code (Visual Studio Code), koji je besplatan uređivač koda bogat funkcijama sa korisničkim interfejsom. Nudi razne plugins koji pružaju funkcionalnosti kao što su navigacija kodom, isticanje sintakse, kontrola verzije Git-a i integracija terminala. Pored toga, Espressif je razvio namenski dodatak pod nazivom Espressif IDF za VS Code, koji pojednostavljuje konfiguraciju projekta i otklanjanje grešaka.
Možete koristiti naredbu koda u terminalu za brzo otvaranje trenutne mape u VS Code-u. Alternativno, možete koristiti prečicu Ctrl+ da otvorite podrazumevanu terminalnu konzolu sistema unutar VS Code.
SAVJETI Preporučuje se korištenje VS koda za razvoj ESP32-C3 koda. Preuzmite i instalirajte najnoviju verziju VS Code-a na https://code.visualstudio.com/.
4.2.5 Uvod u razvojna okruženja trećih strana
Pored zvaničnog ESP-IDF razvojnog okruženja, koje prvenstveno koristi jezik C, ESP32-C3 takođe podržava druge glavne programske jezike i širok spektar razvojnih okruženja trećih strana. Neke značajne opcije uključuju:
Arduino: platforma otvorenog koda za hardver i softver, 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 obrazovnom kontekstu. Pruža proširivi softverski paket i IDE koji omogućava jednostavnu kompilaciju i flešovanje.
MicroPython: tumač jezika Python 3 dizajniran za rad na platformama ugrađenih mikrokontrolera.
Sa jednostavnim jezikom skripte, može direktno 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 Wireless Adventure: Sveobuhvatni vodič za IoT

Ovo pojednostavljuje hardversku interakciju. MicroPython, u kombinaciji sa Pythonovom opsežnom bibliotekom matematičkih operacija, omogućava implementaciju složenih algoritama na ESP32-C3, olakšavajući razvoj aplikacija povezanih s umjetnom inteligencijom. Kao skriptni jezik, nema potrebe za ponovljenom kompilacijom; modifikacije se mogu izvršiti i skripte se mogu izvršiti direktno.
NodeMCU: LUA jezički tumač razvijen za ESP seriju čipova.
Podržava skoro sve periferne funkcije ESP čipova i lakši je od MicroPython-a. Slično MicroPython-u, NodeMCU koristi skriptni jezik, eliminirajući potrebu za ponovljenom kompilacijom.
Štaviše, ESP32-C3 takođe podržava NuttX i Zephyr operativne sisteme. NuttX je operativni sistem u realnom vremenu koji pruža POSIX-kompatibilna sučelja, poboljšavajući prenosivost aplikacija. Zephyr je mali operativni sistem u realnom vremenu posebno dizajniran za IoT aplikacije. Uključuje brojne softverske biblioteke potrebne za razvoj IoT-a, postepeno evoluirajući u sveobuhvatan softverski ekosistem.
Ova knjiga ne pruža detaljna uputstva za instalaciju za gore pomenuta razvojna okruženja. Možete instalirati razvojno okruženje na osnovu vaših zahteva prateći odgovarajuću dokumentaciju i uputstva.
4.3 ESP-IDF kompilacijski sistem
4.3.1 Osnovni koncepti sistema kompilacije
ESP-IDF projekat je kolekcija glavnog programa sa ulaznom funkcijom i više nezavisnih funkcionalnih komponenti. Za nprample, projekat koji kontroliše LED prekidače uglavnom se sastoji od glavnog programa za ulaz i komponente drajvera koja kontroliše GPIO. Ako želite realizirati LED daljinski upravljač, također morate dodati Wi-Fi, TCP/IP protokol protokola itd.
Sistem kompilacije može kompajlirati, povezati i generirati izvršni fajl files (.bin) za kod kroz skup pravila izgradnje. Sistem kompilacije ESP-IDF v4.0 i novijih verzija baziran je na CMake-u prema zadanim postavkama, a skripta za kompilaciju CMakeLists.txt se može koristiti za kontrolu ponašanja pri kompilaciji koda. Osim što podržava osnovnu sintaksu CMake-a, ESP-IDF kompilacijski sistem također definira skup zadanih pravila kompilacije i CMake funkcija, a vi možete napisati skriptu za kompilaciju jednostavnim izjavama.
4.3.2 Projekat File Struktura
Projekt je mapa koja sadrži glavni program za unos, korisnički definirane komponente i filePotrebni su za pravljenje izvršnih aplikacija, kao što su skripte za kompilaciju, konfiguracija
Poglavlje 4. Postavljanje razvojnog okruženja 47

files, tabele particija, itd. Projekti se mogu kopirati i prosljeđivati, a isti izvršni file može se kompajlirati i generisati na mašinama sa istom verzijom ESP-IDF razvojnog okruženja. Tipičan ESP-IDF projekat file struktura je prikazana na slici 4.14.
Slika 4.14. Tipičan ESP-IDF projekat file struktura Pošto ESP-IDF podržava više IoT čipova iz Espressifa, uključujući ESP32, ESP32-S seriju, ESP32-C seriju, ESP32-H seriju, itd., potrebno je odrediti cilj prije kompajliranja koda. Cilj je i hardverski uređaj koji pokreće aplikacijski program i cilj izgradnje kompilacijskog sistema. Ovisno o vašim potrebama, možete odrediti jedan ili više ciljeva za vaš projekat. Za nprampda, preko komande idf.py set-target esp32c3, možete postaviti cilj kompilacije na ESP32-C3, tokom kojeg će se učitati zadani parametri i putanja lanca alata za kompilaciju za ESP32C3. Nakon kompilacije, izvršni program se može generirati za ESP32C3. Također možete ponovo pokrenuti naredbu set-target da postavite drugi cilj, a sistem kompilacije će se automatski očistiti i ponovo konfigurirati. Komponente
Komponente u ESP-IDF-u su modularne i nezavisne jedinice koda kojima se upravlja unutar sistema kompilacije. Oni su organizovani kao fascikle, pri čemu ime fascikle podrazumevano predstavlja naziv komponente. Svaka komponenta ima svoju vlastitu skriptu za kompilaciju koja 48 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

specificira svoje parametre kompilacije i zavisnosti. Tokom procesa kompilacije, komponente se kompajliraju u zasebne statičke biblioteke (.a files) i na kraju se kombinuje sa drugim komponentama kako bi se formirao aplikativni program.
ESP-IDF pruža osnovne funkcije, kao što su operativni sistem, drajveri periferije i stek 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 ove komponente u direktorij komponenti myProject. Umjesto toga, samo trebaju specificirati odnose ovisnosti ovih komponenti u CMakeLists.txt projekta file koristeći direktive REQUIRES ili PRIV_REQUIRES. Sistem kompilacije će automatski locirati i kompajlirati potrebne komponente.
Stoga direktorij komponenti pod myProject nije neophodan. Koristi se samo za uključivanje nekih prilagođenih komponenti projekta, koje mogu biti biblioteke trećih strana ili korisnički definirani kod. Dodatno, komponente se mogu dobiti 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 ispod korijenskog direktorija. Ovaj direktorij će nadjačati bilo koju ESP-IDF komponentu s istim imenom, osiguravajući da se koristi ispravna komponenta.
Ulazni program main Glavni direktorij unutar projekta slijedi isto file strukturu kao i druge komponente (npr. komponenta1). Međutim, on ima poseban značaj jer je obavezna komponenta koja mora postojati u svakom projektu. Glavni direktorij sadrži izvorni kod projekta i ulaznu tačku korisničkog programa, obično pod nazivom app_main. Po defaultu, izvršavanje 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 staze pretraživanja. Stoga, nema potrebe da se eksplicitno naznačuju zavisnosti koristeći REQUIRES ili PRIV_REQUIRES direktive u CMakeLists.txt file.
Konfiguracija file Korijenski direktorij projekta sadrži konfiguraciju file pod nazivom sdkconfig, koji sadrži konfiguracijske parametre za sve komponente unutar projekta. Sdkconfig file se automatski generiše od strane sistema kompilacije i može se modifikovati i regenerisati naredbom idf.py menuconfig. Opcije menuconfig uglavnom potiču iz Kconfig.projbuild projekta i Kconfig komponenti. Programeri komponenti općenito dodaju konfiguracijske stavke u Kconfig kako bi komponentu učinili fleksibilnom i konfigurabilnom.
Direktorij izgradnje Po defaultu, direktorij izgradnje unutar projekta pohranjuje međuprodukte files i fi-
Poglavlje 4. Postavljanje razvojnog okruženja 49

konačni izvršni programi generirani naredbom za izgradnju idf.py. Općenito, nije potrebno direktno pristupiti sadržaju direktorija izgradnje. ESP-IDF obezbeđuje unapred definisane komande za interakciju sa direktorijumom, kao što je korišćenje idf.py flash komande za automatsko lociranje kompajlirane binarne datoteke file i flešujte ga na navedenu fleš adresu ili pomoću naredbe idf.py fullclean da očistite ceo direktorijum izgradnje.
Particiona tabela (partitions.csv) Svaki projekat zahteva particionu tabelu da podeli prostor flash-a i odredi veličinu i početnu adresu izvršnog programa i prostora korisničkih podataka. Naredba idf.py flash ili OTA program za nadogradnju će flešovati firmver na odgovarajuću adresu prema ovoj tabeli. ESP-IDF pruža nekoliko zadanih tabela 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 sistema ne može zadovoljiti zahtjeve projekta, prilagođeni partitions.csv se može dodati u projektni direktorij i odabrati u menuconfig.
4.3.3 Podrazumevana pravila izgradnje sistema kompilacije
Pravila za nadjačavanje komponenti sa istim imenom Tokom procesa pretraživanja komponenti, sistem kompilacije prati određeni redosled. 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 imenom. Ovo pravilo dozvoljava prilagođavanje komponenti ESP-IDF unutar korisničkog projekta, zadržavajući originalni ESP-IDF kod netaknutim.
Pravila za podrazumevano uključivanje uobičajenih komponenti Kao što je pomenuto u odeljku 4.3.2, komponente moraju eksplicitno da specificiraju svoje zavisnosti od drugih komponenti u CMakeLists.txt. Međutim, uobičajene komponente kao što je freertos su automatski uključene u sistem izgradnje prema zadanim postavkama, čak i ako njihovi odnosi zavisnosti nisu eksplicitno definirani u skripti kompilacije. ESP-IDF uobičajene komponente uključuju freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv i cxx. Korištenje ovih uobičajenih komponenti izbjegava rad koji se ponavlja 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.defaults za projekat. Za nprample, dodavanjem CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

DEFAULT_LEVEL_NONE = y može konfigurirati UART sučelje da ne ispisuje podatke dnevnika prema zadanim postavkama. 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, itd. Ove konfiguracije files se uvoze u sdkconfig tokom kompilacije, sa opštom podrazumevanom konfiguracijom file Prvo se uvoze sdkconfig.defaults, a zatim konfiguracija specifična za cilj file, kao što je sdkconfig.defaults.esp32c3. U slučajevima kada postoje stavke konfiguracije sa istim imenom, potonja konfiguracija file će nadjačati prethodni.
4.3.4 Uvod u skriptu kompilacije
Kada razvijaju projekat koristeći ESP-IDF, programeri ne samo da moraju da napišu izvorni kod, već i da napišu CMakeLists.txt za projekat i komponente. CMakeLists.txt je tekst file, također poznat kao skripta za kompilaciju, koja definira niz objekata kompilacije, stavki konfiguracije kompilacije i naredbi za vođenje procesa kompilacije izvornog koda. Sistem kompilacije ESP-IDF v4.3.2 je baziran na CMake. Osim podrške izvornim CMake funkcijama i naredbama, on također definira niz prilagođenih funkcija, čineći mnogo lakšim pisanje skripti za kompilaciju.
Skripte za kompilaciju u ESP-IDF uglavnom uključuju skriptu za kompilaciju projekta i skripte za kompilaciju komponenti. CMakeLists.txt u korijenskom direktoriju projekta naziva se skripta za kompilaciju projekta, koja vodi proces kompilacije cijelog projekta. Osnovna skripta za kompilaciju projekta obično uključuje sljedeća tri reda:
1. cmake_minimum_required(VERZIJA 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 red, koji se koristi za označavanje minimalnog broja verzije CMake koji je potreban za projekat. Novije verzije CMake-a su općenito kompatibilne sa starijim verzijama, stoga prilagodite broj verzije u skladu s tim kada koristite novije CMake komande kako biste osigurali kompatibilnost.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) uvozi unaprijed definirane konfiguracijske stavke i komande ESP-IDF kompilacijskog sistema, uključujući zadana pravila izgradnje sistema kompilacije opisana u Odjeljku 4.3.3. project(myProject) kreira sam projekat i navodi njegovo ime. Ovo ime će se koristiti kao konačni binarni izlaz file ime, tj. myProject.elf i myProject.bin.
Projekat može imati više komponenti, uključujući i glavnu komponentu. Direktorij najviše razine svake komponente sadrži CMakeLists.txt file, koji se zove skripta kompilacije komponente. Skripte za kompilaciju komponenti se uglavnom koriste za specificiranje zavisnosti komponenti, konfiguracijskih parametara, izvornog koda files, i uključeno zaglavlje files for
Poglavlje 4. Postavljanje razvojnog okruženja 51

kompilacija. Sa ESP-IDF 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čiti”

3.

ZAHTEVA komponentu1)

SRCS parametar daje popis izvora files u komponenti, odvojene razmacima ako ih ima više files. Parametar INCLUDE_DIRS daje listu javnog zaglavlja file direktorije za komponentu, koji će biti dodati u uključenu stazu pretraživanja za druge komponente koje ovise o trenutnoj komponenti. Parametar REQUIRES identificira ovisnosti javne komponente za trenutnu komponentu. Potrebno je da komponente eksplicitno navedu o kojim komponentama zavise, kao što je komponenta2 u zavisnosti od komponente1. Međutim, za glavnu komponentu, koja po defaultu ovisi o svim komponentama, parametar REQUIRES se može izostaviti.

Osim toga, izvorne CMake komande se također mogu koristiti u skripti za kompilaciju. Za nprampda, koristite naredbu set za postavljanje varijabli, kao što je set(VARIABLE “VRIJEDNOST”).

4.3.5 Uvod u zajedničke komande
ESP-IDF koristi CMake (alat za konfiguraciju projekta), Ninja (alat za izgradnju projekta) i esptool (flash alat) u procesu kompilacije koda. Svaki alat igra različitu ulogu u procesu kompilacije, izgradnje i flešovanja, a takođe podržava različite operativne komande. Da bi olakšao rad korisnika, ESP-IDF dodaje objedinjeni front-end idf.py koji omogućava brzo pozivanje gornjih komandi.
Prije korištenja idf.py, uvjerite se da:
· Varijabla okruženja IDF_PATH od ESP-IDF je dodana trenutnom terminalu. · Direktorij za izvršavanje naredbi je korijenski direktorij projekta, koji uključuje
Skripta za kompilaciju projekta CMakeLists.txt.
Uobičajene naredbe idf.py su sljedeće:
· idf.py –help: prikazuje listu komandi i uputstva za njihovo korišćenje. · idf.py set-target : postavljanje kompilacije taidf.py fullcleanrget, tako
kao zamena sa esp32c3. · idf.py menuconfig: pokretanje menuconfig, grafička konfiguracija terminala
alat, koji može odabrati ili modificirati opcije konfiguracije, a rezultati konfiguracije se spremaju u sdkconfi file. · idf.py build: pokretanje kompilacije koda. Intermediate files i konačni izvršni program generiran kompilacijom će po defaultu biti sačuvan u direktoriju izgradnje projekta. Proces kompilacije je inkrementalan, što znači da je samo jedan izvor file je modificirano, samo modificirano file bit će sastavljen sljedeći put.

52 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

· idf.py clean: čišćenje međuproizvoda files generiran kompilacijom projekta. Ceo projekat će biti primoran da se kompajlira u sledećoj kompilaciji. Imajte na umu da konfiguracija CMake i modifikacije konfiguracije koje je napravio menuconfig neće biti izbrisane tokom čišćenja.
· idf.py fullclean: brisanje cijelog direktorija izgradnje, uključujući sav izlaz CMake konfiguracije files. Kada ponovo gradite projekat, CMake će konfigurisati projekat od nule. Imajte na umu da će ova komanda rekurzivno izbrisati sve files u build direktoriju, pa ga koristite s oprezom i konfiguracijom projekta file neće biti obrisan.
· idf.py flash: treperi izvršni program file generirano izgradnjom na ciljni ESP32-C3. Opcije -str i -b se koriste za postavljanje naziva uređaja serijskog porta i brzine prijenosa za treptanje, respektivno. Ako ove dvije opcije nisu specificirane, serijski port će se automatski otkriti i koristit će se zadana brzina prijenosa.
· idf.py monitor: prikazuje izlaz serijskog porta ciljnog ESP32-C3. Opcija -p se može koristiti za specificiranje naziva uređaja serijskog porta na strani domaćina. Tokom štampanja serijskog porta, pritisnite kombinaciju tastera Ctrl+] da biste izašli iz monitora.
Gore navedene naredbe se također mogu kombinirati po potrebi. Za nprampNaredba idf.py build flash monitor će izvršiti kompilaciju koda, flešovati i otvoriti monitor serijskog porta u nizu.
Možete posjetiti https://bookc3.espressif.com/build-system da saznate više o ESP-IDF sistemu kompilacije.
4.4 Vježba: Sastavljanje prampprogram “Blink”
4.4.1 dokample Analysis
Ovaj odjeljak će program Blink uzeti kao primjerampda analiziramo file struktura i pravila kodiranja stvarnog projekta u detalje. Program Blink implementira efekat treptanja LED dioda, a projekat se nalazi u direktoriju examples/get-started/blink, koji sadrži izvor file, konfiguracija files, i nekoliko kompilacijskih skripti.
Projekt pametnog svjetla predstavljen u ovoj knjizi zasniva se na ovom primjeruample program. Funkcije će se postepeno dodavati u kasnijim poglavljima kako bi se to konačno završilo.
Izvorni kod Kako bi se demonstrirao ceo proces razvoja, Blink program je kopiran na esp32c3-iot-projects/device firmware/1 blink.
Struktura direktorija blink projekta files je prikazan na slici 4.15.
Blink projekat 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 app_main() funkcije, koja je ulazna točka u korisnički program. Blink projekt ne uključuje direktorij komponenti, jer ovaj npr.ample treba da koristi samo komponente koje dolaze sa ESP-IDF i ne zahteva dodatne komponente. CMakeLists.txt uključen u blink projekat se koristi 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 uticati na kompilaciju koda, tako da se o njima ovdje neće raspravljati. Detaljan uvod u blink projekat files je kako slijedi.

1. /*blink.c uključuje sljedeće zaglavlje files*/

2. #include

//Zaglavlje standardne C biblioteke file

3. #include “freertos/freeRTOS.h” //FreeRTOS glavno zaglavlje file

4. #include “freertos/task.h”

//Zaglavlje zadatka FreeRTOS file

5. #include “sdkconfig.h”

//Zaglavlje konfiguracije file generira kconfig

6. #include “driver/gpio.h”

//zaglavlje GPIO drajvera file

Izvor file blink.c sadrži seriju zaglavlja files odgovara deklaraciji funkcije-

cije. ESP-IDF općenito prati redoslijed uključivanja standardnog zaglavlja biblioteke files, FreeR-

TOS zaglavlje files, zaglavlje vozača files, zaglavlje druge komponente files, i zaglavlje projekta files.

Redoslijed kojim zaglavlje files uključeni mogu utjecati na konačni rezultat kompilacije, pa pokušajte

slijedite zadana pravila. Treba napomenuti da se sdkconfig.h automatski generiše

pomoću kconfig i može se konfigurisati samo preko naredbe idf.py menuconfig.

Direktna izmjena ovog zaglavlja file će biti prepisana.

1. /*Možete odabrati GPIO koji odgovara LED diodi u idf.py menuconfig, a rezultat modifikacije menuconfig je vrijednost CONFIG_BLINK

_GPIO će biti promijenjen. Također možete direktno izmijeniti makro definiciju

ovdje i promijenite CONFIG_BLINK_GPIO na fiksnu vrijednost.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main(void)

4. {

5.

/*Konfigurišite IO kao podrazumevanu funkciju GPIO, omogućite pull-up mod i

6.

onemogući ulazne i izlazne modove*/

7.

gpio_reset_pin(BLINK_GPIO);

54 ESP32-C3 Wireless Adventure: Sveobuhvatni vodič za IoT

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

/*Podesite GPIO na izlazni način*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); dok(1) {
/*Štampaj dnevnik*/ printf(“Isključivanje LEDn”); /*Isključiti LED (nizak nivo izlaza)*/ gpio_set_level(BLINK_GPIO, 0); /*Odgoda (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“Uključivanje LEDn”); /*Uključiti LED (visok nivo izlaza)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

Funkcija app_main() u Blink example program služi kao ulazna tačka za korisničke programe. To je jednostavna funkcija bez parametara i bez povratne vrijednosti. Ova funkcija se poziva nakon što je sistem završio inicijalizaciju, što uključuje zadatke kao što su inicijalizacija serijskog porta dnevnika, konfiguriranje jednojezgrenog/dvojezgrenog i konfiguriranje nadzornog računala.

Funkcija app_main() radi u kontekstu zadatka pod nazivom main. Veličina steka i prioritet ovog zadatka mogu se podesiti u menuconfig Componentconfig Common ESP-related.

Za jednostavne zadatke kao što je treptanje LED-a, sav potreban kod se može implementirati direktno u funkciju app_main(). Ovo obično uključuje inicijalizaciju 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 kreiranje 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 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 sistemsku funkciju kompilacije, to je idf_component_register. Slično CMakeLists.txt za većinu drugih komponenti, blink.c se dodaje u SRCS, a izvor files dodani u SRCS će biti kompajlirani. Istovremeno, ".", koji predstavlja putanju 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 nego što se kompilacija nastavi 3. cmake_minimum_required(VERZIJA 3.5) 4. #Uključi zadanu CMake konfiguraciju ESP-a -IDF kompilacijski sistem

Poglavlje 4. Postavljanje razvojnog okruženja 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Kreirajte projekat pod nazivom “blink” 7. project(myProject)
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 Wireless Adventure [pdf] Korisnički priručnik
ESP32-C3 bežična avantura, ESP32-C3, bežična avantura, avantura

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *