Aventura fără fir ESP32-C3
Aventura fără fir ESP32-C3
Un ghid cuprinzător pentru IoT
Espressif Systems 12 iunie 2023
Specificații
- Produs: ESP32-C3 Wireless Adventure
- Producator: Espressif Systems
- Data: 12 iunie 2023
Instrucțiuni de utilizare a produsului
Pregătirea
Înainte de a utiliza ESP32-C3 Wireless Adventure, asigurați-vă că sunteți
familiarizat cu conceptele și arhitectura IoT. Aceasta va ajuta
înțelegeți cum se încadrează dispozitivul în ecosistemul IoT mai mare
și potențialele sale aplicații în casele inteligente.
Introducerea și practicarea proiectelor IoT
În această secțiune, veți afla despre proiecte tipice IoT,
inclusiv modulele de bază pentru dispozitivele IoT obișnuite, modulele de bază
a aplicațiilor client și a platformelor cloud comune IoT. Asta va
să vă ofere o bază pentru înțelegerea și crearea dvs
propriile proiecte IoT.
Practică: Proiect Smart Light
În acest proiect de practică, veți învăța cum să creați un smart
lumina folosind ESP32-C3 Wireless Adventure. Structura proiectului,
funcțiile, pregătirea hardware și procesul de dezvoltare vor fi
explicat în detaliu.
Structura proiectului
Proiectul constă din mai multe componente, inclusiv
ESP32-C3 Wireless Adventure, LED-uri, senzori și un nor
backend.
Funcțiile proiectului
Proiectul de lumină inteligentă vă permite să controlați luminozitatea și
culoarea LED-urilor de la distanță printr-o aplicație mobilă sau web
interfata.
Pregătirea hardware-ului
Pentru a vă pregăti pentru proiect, va trebui să adunați
componente hardware necesare, cum ar fi ESP32-C3 Wireless
Placă de aventură, LED-uri, rezistențe și o sursă de alimentare.
Procesul de dezvoltare
Procesul de dezvoltare presupune stabilirea dezvoltării
mediu, scrierea codului pentru a controla LED-urile, conectarea la
backend cloud și testarea funcționalității smart
aprinde.
Introducere în ESP RainMaker
ESP RainMaker este un cadru puternic pentru dezvoltarea IoT
dispozitive. În această secțiune, veți afla ce este ESP RainMaker și
cum poate fi implementat în proiectele dvs.
Ce este ESP RainMaker?
ESP RainMaker este o platformă bazată pe cloud care oferă un set de
instrumente și servicii pentru construirea și gestionarea dispozitivelor IoT.
Implementarea ESP RainMaker
Această secțiune explică diferitele componente implicate în
implementarea ESP RainMaker, inclusiv serviciul de revendicare,
Agent RainMaker, backend cloud și client RainMaker.
Practică: puncte cheie pentru dezvoltarea cu ESP RainMaker
În această secțiune de practică, veți afla despre punctele cheie
luați în considerare atunci când dezvoltați cu ESP RainMaker. Aceasta include dispozitivul
revendicarea, sincronizarea datelor și gestionarea utilizatorilor.
Caracteristicile ESP RainMaker
ESP RainMaker oferă diverse funcții pentru managementul utilizatorilor, final
utilizatori și administratori. Aceste caracteristici permit un dispozitiv ușor
configurare, control de la distanță și monitorizare.
Configurarea mediului de dezvoltare
Această secțiune oferă un overview al ESP-IDF (Espressif IoT
Cadrul de dezvoltare), care este cadrul oficial de dezvoltare
pentru dispozitivele bazate pe ESP32. Acesta explică diferitele versiuni ale
ESP-IDF și modul de configurare a mediului de dezvoltare.
Dezvoltare hardware și drivere
Design hardware al produselor Smart Light pe baza ESP32-C3
Această secțiune se concentrează pe designul hardware al luminii inteligente
produse bazate pe ESP32-C3 Wireless Adventure. Acesta acoperă
caracteristicile și compoziția produselor inteligente de lumină, precum și
designul hardware al sistemului de bază ESP32-C3.
Caracteristicile și compoziția produselor Smart Light
Această subsecțiune explică caracteristicile și componentele care fac
produse inteligente de lumină. Se discută despre diferitele funcționalități
și considerente de proiectare pentru crearea de lumini inteligente.
Design hardware al sistemului de bază ESP32-C3
Designul hardware al sistemului de bază ESP32-C3 include putere
alimentare, secvență de pornire, resetare a sistemului, bliț SPI, sursă de ceas,
și considerente RF și antenă. Această subsecțiune prevede
informaţii detaliate despre aceste aspecte.
FAQ
Î: Ce este ESP RainMaker?
R: ESP RainMaker este o platformă bazată pe cloud care oferă instrumente
și servicii pentru construirea și gestionarea dispozitivelor IoT. Se simplifică
procesul de dezvoltare și permite configurarea ușoară a dispozitivului, la distanță
control și monitorizare.
Î: Cum pot configura mediul de dezvoltare pentru
ESP32-C3?
R: Pentru a configura mediul de dezvoltare pentru ESP32-C3, aveți nevoie
să instaleze ESP-IDF (Espressif IoT Development Framework) și
configurați-l conform instrucțiunilor furnizate. ESP-IDF este
cadru oficial de dezvoltare pentru dispozitivele bazate pe ESP32.
Î: Care sunt caracteristicile ESP RainMaker?
R: ESP RainMaker oferă diverse funcții, inclusiv utilizator
management, funcții pentru utilizatorul final și funcții de administrare. Managementul utilizatorilor
permite revendicarea ușoară a dispozitivului și sincronizarea datelor. Utilizator final
caracteristicile permit controlul de la distanță al dispozitivelor printr-o aplicație mobilă sau
web interfata. Funcțiile de administrare oferă instrumente pentru monitorizarea dispozitivului
si management.
Aventura fără fir ESP32-C3
Un ghid cuprinzător pentru IoT
Espressif Systems 12 iunie 2023
Cuprins
I Pregătirea
1
1 Introducere în IoT
3
1.1 Arhitectura IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Aplicație IoT în case inteligente . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Introducere și practica proiectelor IoT
9
2.1 Introducere în proiecte tipice IoT . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Module de bază pentru dispozitive comune IoT . . . . . . . . . . . . . . . . . 9
2.1.2 Modulele de bază ale aplicațiilor client . . . . . . . . . . . . . . . . . . . 10
2.1.3 Introducere în platformele comune IoT Cloud . . . . . . . . . . . . . . 11
2.2 Practică: Proiect Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Structura proiectului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Funcţiile proiectului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Pregătirea hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Procesul de dezvoltare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Introducere în ESP RainMaker
19
3.1 Ce este ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Implementarea ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Serviciul de revendicare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Agent RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Client RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Practică: puncte cheie pentru dezvoltarea cu ESP RainMaker . . . . . . . . . . . . 25
3.4 Caracteristicile ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Gestionarea utilizatorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Caracteristicile utilizatorului final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Funcții de administrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Configurarea mediului de dezvoltare
31
4.1 ESP-IDF pesteview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Versiuni ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 Flux de lucru ESP-IDF Git . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Alegerea unei versiuni adecvate . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Pesteview din directorul ESP-IDF SDK . . . . . . . . . . . . . . . . . . . . 34 4.2 Configurarea mediului de dezvoltare ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Configurarea mediului de dezvoltare ESP-IDF pe Linux . . . . . . . . 38 4.2.2 Configurarea mediului de dezvoltare ESP-IDF pe Windows . . . . . . 40 4.2.3 Configurarea mediului de dezvoltare ESP-IDF pe Mac . . . . . . . . . 45 4.2.4 Instalarea VS Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Introducere în mediile de dezvoltare terță parte . . . . . . . . 46 4.3 Sistemul de compilare ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Concepte de bază ale sistemului de compilare . . . . . . . . . . . . . . . . . . 47 4.3.2 Proiect File Structura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Reguli de compilare implicite ale sistemului de compilare . . . . . . . . . . . . . 50 4.3.4 Introducere în Scriptul de compilare . . . . . . . . . . . . . . . . . . 51 4.3.5 Introducere în comenzile comune . . . . . . . . . . . . . . . . . . . 52 4.4 Practică: Compilarea ExampProgramul „Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Example Analiza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Compilarea programului Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Aprinderea intermitentă a programului Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analiza jurnalului portului serial al programului Blink . . . . . . . . . . . . . . 60 4.5 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Dezvoltare hardware și drivere
65
5 Design hardware al produselor Smart Light bazat pe ESP32-C3
67
5.1 Caracteristicile și compoziția produselor Smart Light . . . . . . . . . . . . . . . 67
5.2 Designul hardware al sistemului central ESP32-C3 . . . . . . . . . . . . . . . . . . . 70
5.2.1 Sursa de alimentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Secvența de pornire și resetarea sistemului . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Sursa ceas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF și antenă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Ştifturi de fixare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 Controler GPIO și PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Practică: Construirea unui sistem de lumină inteligentă cu ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Selectarea modulelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Configurarea GPIO a semnalelor PWM . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Descărcarea firmware-ului și interfața de depanare . . . . . . . . . . . . 82
5.3.4 Ghid pentru proiectarea RF . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Ghid pentru proiectarea sursei de alimentare . . . . . . . . . . . . . . . . . . . 86 5.4 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Dezvoltarea driverului
87
6.1 Procesul de dezvoltare a driverului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Aplicații periferice ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Elemente de bază ale driverului LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Spații de culoare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Driver LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Dimmizarea LED-urilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Introducere în PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Dezvoltarea driverului de reglare a luminii LED . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Stocare nevolatilă (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 Controler LED PWM (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Programare LED PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Practică: Adăugarea de drivere la proiectul Smart Light . . . . . . . . . . . . . . . . . 103
6.5.1 Driver pentru buton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Driver de reglare a luminii LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Comunicare și control fără fir
109
7 Configurare și conexiune Wi-Fi
111
7.1 Bazele Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Introducere în Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evoluția IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Concepte Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Conexiune Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Elementele de bază ale Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Introducere în Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Concepte Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Conexiune Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Configurarea rețelei Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Ghid de configurare a rețelei Wi-Fi . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Alte metode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Programare Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Componente Wi-Fi în ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Exercițiu: Conexiune Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Exercițiu: Conexiune Wi-Fi inteligentă . . . . . . . . . . . . . . . . . . . . . 145
7.5 Practică: Configurare Wi-Fi în Smart Light Project . . . . . . . . . . . . . . . 156 7.5.1 Conexiune Wi-Fi în Smart Light Project . . . . . . . . . . . . . . . . . 156 7.5.2 Configurare Smart Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Control local
159
8.1 Introducere în controlul local . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Aplicarea controlului local . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages de control local . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Descoperirea dispozitivelor controlate prin intermediul smartphone-urilor . . . . . . . . . . 161
8.1.4 Comunicarea datelor între telefoane inteligente și dispozitive . . . . . . . . 162
8.2 Metode comune de descoperire locală . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Difuzare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Comparație între Broadcast și Multicast . . . . . . . . . . . . . . 176
8.2.4 Protocolul de aplicație multicast mDNS pentru descoperire locală . . . . . . . . 176
8.3 Protocoale de comunicare comune pentru date locale . . . . . . . . . . . . . . . 179
8.3.1 Protocolul de control al transmisiei (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Protocolul de transfer hipertext (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Utilizator DatagProtocolul ram (UDP). . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protocolul de aplicare constrâns (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Protocol Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Rezumatul protocoalelor de comunicare a datelor . . . . . . . . . . . . . . . 203
8.4 Garanția securității datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Introducere în Transport Layer Security (TLS) . . . . . . . . . . . . . 207
8.4.2 Introducere în Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Practică: Control local în proiectul Smart Light . . . . . . . . . . . . . . . . . . 217
8.5.1 Crearea unui server de control local bazat pe Wi-Fi . . . . . . . . . . . . . . . 217
8.5.2 Verificarea funcționalității de control local folosind scripturi . . . . . . . . . . . 221
8.5.3 Crearea unui server de control local bazat pe Bluetooth . . . . . . . . . . . . 222
8.6 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Cloud Control
225
9.1 Introducere în controlul de la distanță . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Protocoale de comunicare a datelor în cloud . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 Introducere MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Principii MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Format mesaj MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Compararea protocolului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Configurarea MQTT Broker pe Linux și Windows . . . . . . . . . . . . 233 9.2.6 Configurarea clientului MQTT pe baza ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Asigurarea securității datelor MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Semnificația și funcția certificatelor . . . . . . . . . . . . . . . . . . . 237 9.3.2 Generarea de certificate local . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Configurarea MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Configurarea clientului MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Practică: Control de la distanță prin ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Bazele ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Protocolul de comunicare nod și cloud backend . . . . . . . . . . . 244 9.4.3 Comunicarea dintre Client și Cloud Backend . . . . . . . . . . . 249 9.4.4 Roluri de utilizator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Servicii de bază . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplicația RainMaker și integrări terțe . . . . . . . . . . . . . . . 262 9.5 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Dezvoltare de aplicații pentru smartphone
269
10.1 Introducere în dezvoltarea aplicațiilor pentru smartphone . . . . . . . . . . . . . . . . . . 269
10.1.1 Pesteview de dezvoltare a aplicațiilor pentru smartphone-uri. . . . . . . . . . . . . . . 270
10.1.2 Structura proiectului Android . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Structura proiectului iOS . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Ciclul de viață al unei activități Android . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Ciclul de viață al iOS ViewControler . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Crearea unui nou proiect de aplicație pentru smartphone . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Pregătirea pentru dezvoltarea Android . . . . . . . . . . . . . . . . . . . 275
10.2.2 Crearea unui nou proiect Android . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Adăugarea de dependențe pentru MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Solicitare de permisiune în Android . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Pregătirea pentru dezvoltarea iOS . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Crearea unui nou proiect iOS . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Adăugarea de dependențe pentru MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Solicitare de permisiune în iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analiza cerințelor funcționale ale aplicației . . . . . . . . . . . . . . . . . . 281
10.3.1 Analiza cerințelor funcționale ale proiectului . . . . . . . . . . . . 282
10.3.2 Analiza cerințelor de gestionare a utilizatorilor . . . . . . . . . . . . . . . 282 10.3.3 Analiza cerințelor de aprovizionare și de legare a dispozitivului . . . . . . . 283 10.3.4 Analiza cerințelor de telecomandă . . . . . . . . . . . . . . . . 283 10.3.5 Analiza cerințelor de programare . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analiza cerințelor Centrului de utilizatori . . . . . . . . . . . . . . . . . . 285 10.4 Dezvoltarea managementului utilizatorilor . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Introducere în API-urile RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Inițierea comunicării prin Smartphone . . . . . . . . . . . . . . . . 286 10.4.3 Înregistrarea contului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Conectare cont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Dezvoltarea aprovizionării dispozitivelor . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Dispozitive de scanare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Conectarea dispozitivelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generarea cheilor secrete . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Obținerea ID-ului nodului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Dispozitive de furnizare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Dezvoltarea controlului dispozitivului . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Legarea dispozitivelor la conturile cloud . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Obținerea unei liste de dispozitive . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Obținerea stării dispozitivului . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Modificarea stării dispozitivului . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Dezvoltarea programării și a Centrului de utilizatori . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementarea funcției de programare . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementarea Centrului utilizator . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Mai multe API-uri cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Actualizarea firmware-ului și gestionarea versiunilor
321
11.1 Actualizare firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Pesteview a tabelelor de partiții . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Procesul de pornire a firmware-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Pesteview a Mecanismului OTA . . . . . . . . . . . . . . . . . . . . . 326
11.2 Gestionarea versiunilor de firmware . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Marcare firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Rollback și Anti-Rollback . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Practică: Over-the-air (OTA) Example . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Actualizarea firmware-ului printr-o gazdă locală . . . . . . . . . . . . . . . . . 332
11.3.2 Actualizarea firmware-ului prin ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimizare și producție de masă
343
12 Gestionarea energiei și optimizarea consumului redus
345
12.1 Gestionarea energiei ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Scalare dinamică a frecvenței . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Configurarea managementului energiei . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Mod de consum redus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modem-mod inactiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Modul de somn ușor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Modul de somn profund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Consumul de curent în diferite moduri de putere . . . . . . . . . . . . . 358
12.3 Gestionarea energiei și depanare cu consum redus . . . . . . . . . . . . . . . . . 359
12.3.1 Depanare jurnal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Depanare GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Practică: Managementul energiei în proiectul Smart Light . . . . . . . . . . . . . . . 363
12.4.1 Configurarea funcției de gestionare a energiei . . . . . . . . . . . . . . . . . 364
12.4.2 Utilizarea blocărilor de gestionare a energiei . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Verificarea consumului de energie . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Caracteristici îmbunătățite de securitate a dispozitivului
369
13.1 Pesteview de securitate a datelor dispozitivelor IoT. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 De ce să securizăm datele dispozitivului IoT? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Cerințe de bază pentru securitatea datelor dispozitivului IoT . . . . . . . . . . . . 371
13.2 Protecția integrității datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Introducere în metoda de verificare a integrității . . . . . . . . . . . . . . 372
13.2.2 Verificarea integrității datelor firmware . . . . . . . . . . . . . . . . . . 373
13.2.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Protecția confidențialității datelor . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Introducere în criptarea datelor . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Introducere în schema de criptare Flash . . . . . . . . . . . . . . . . . 376
13.3.3 Stocare chei de criptare flash . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Modul de lucru al criptării Flash . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Procesul de criptare Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Introducere în criptarea NVS . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Exampfișiere de criptare Flash și criptare NVS. . . . . . . . . . . 384
13.4 Protecția legitimității datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Introducere în semnătura digitală . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Pesteview de Secure Boot Scheme . . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Introducere în Software Secure Boot . . . . . . . . . . . . . . . . . . . 388 13.4.4 Introducere în Hardware Secure Boot . . . . . . . . . . . . . . . . . . 390 13.4.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Practică: Caracteristici de securitate în producția de masă . . . . . . . . . . . . . . . . . . 396 13.5.1 Criptare flash și pornire sigură . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Activarea criptării Flash și a pornirii securizate cu instrumente Batch Flash . . 397 13.5.3 Activarea criptării Flash și a pornirii securizate în Smart Light Project . . . 398 13.6 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Arderea și testarea firmware-ului pentru producția de masă
399
14.1 Arderea firmware-ului în producția de masă . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definirea partiţiilor de date . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Arderea firmware-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Testarea producției de masă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Practică: Date de producție în masă în proiectul Smart Light . . . . . . . . . . . . . 404
14.4 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Platformă de monitorizare la distanță
405
15.1 Introducere în ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Noțiuni introductive despre ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Noțiuni introductive despre ESP Insights în proiectul esp-insights . . . . . . 409
15.2.2 Example în proiectul esp-insights. . . . . . . . . . . . . . . 411
15.2.3 Raportarea informațiilor de coredump . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Personalizarea jurnalelor de interes . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Raportarea motivului repornirii . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Raportarea valorilor personalizate . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Practică: Utilizarea ESP Insights în Smart Light Project . . . . . . . . . . . . . . . 416
15.4 Rezumat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Introducere
ESP32-C3 este un SoC cu microcontroler Wi-Fi și Bluetooth 5 (LE) cu un singur nucleu, bazat pe arhitectura open-source RISC-V. Acesta atinge echilibrul corect de putere, capabilități I/O și securitate, oferind astfel soluția optimă rentabilă pentru dispozitivele conectate. Pentru a arăta diverse aplicații ale familiei ESP32-C3, această carte de Espressif vă va duce într-o călătorie interesantă prin AIoT, pornind de la elementele de bază ale dezvoltării proiectelor IoT și configurarea mediului până la experimente practice.amples. Primele patru capitole vorbesc despre IoT, ESP RainMaker și ESP-IDF. Rezumatul capitolelor 5 și 6 despre proiectarea hardware și dezvoltarea driverelor. Pe măsură ce progresați, veți descoperi cum să vă configurați proiectul prin rețelele Wi-Fi și aplicațiile mobile. În cele din urmă, veți învăța să vă optimizați proiectul și să-l puneți în producție de masă.
Dacă ești inginer în domenii conexe, arhitect software, profesor, student sau orice persoană interesată de IoT, această carte este pentru tine.
Puteți descărca codul de exampLe-ul folosit în această carte de pe site-ul Espressif de pe GitHub. Pentru cele mai recente informații despre dezvoltarea IoT, vă rugăm să urmăriți contul nostru oficial.
Prefaţă
O lume informatoare
Călând pe valul Internetului, Internetul lucrurilor (IoT) și-a făcut marele debut pentru a deveni un nou tip de infrastructură în economia digitală. Pentru a aduce tehnologia mai aproape de public, Espressif Systems lucrează pentru viziunea că dezvoltatorii din toate categoriile sociale pot folosi IoT pentru a rezolva unele dintre cele mai presante probleme ale vremurilor noastre. O lume de „Rețea inteligentă a tuturor lucrurilor” este ceea ce ne așteptăm de la viitor.
Proiectarea propriilor noastre cipuri este o componentă critică a acestei viziuni. Trebuie să fie un maraton, care necesită progrese constante împotriva granițelor tehnologice. De la „Game Changer” ESP8266 la seria ESP32 care integrează conectivitate Wi-Fi și Bluetoothr (LE), urmată de ESP32-S3 echipat cu accelerare AI, Espressif nu încetează niciodată să cerceteze și să dezvolte produse pentru soluții AIoT. Cu software-ul nostru open-source, cum ar fi Cadrul de dezvoltare IoT ESP-IDF, Cadrul de dezvoltare Mesh ESP-MDF și Platforma de conectare a dispozitivelor ESP RainMaker, am creat un cadru independent pentru construirea de aplicații AIoT.
Începând cu iulie 2022, livrările cumulate de chipset-uri IoT ale Espressif au depășit 800 de milioane, conducând pe piața MCU Wi-Fi și alimentând un număr mare de dispozitive conectate la nivel mondial. Căutarea excelenței face ca fiecare produs Espressif să fie un mare succes pentru nivelul său ridicat de integrare și eficiența costurilor. Lansarea ESP32-C3 marchează o piatră de hotar semnificativă a tehnologiei auto-dezvoltate de la Espressif. Este un MCU cu un singur nucleu, pe 32 de biți, bazat pe RISC-V, cu 400KB de SRAM, care poate rula la 160MHz. Are Wi-Fi integrat de 2.4 GHz și Bluetooth 5 (LE) cu suport pe distanță lungă. Oferă un echilibru fin între putere, capabilități I/O și securitate, oferind astfel soluția optimă rentabilă pentru dispozitivele conectate. Bazată pe un ESP32-C3 atât de puternic, această carte este menită să ajute cititorii să înțeleagă cunoștințele legate de IoT, cu ilustrații detaliate și experiențe practice.amples.
De ce am scris această carte?
Espressif Systems este mai mult decât o companie de semiconductori. Este, de asemenea, o companie cu platforme IoT, care se străduiește întotdeauna pentru descoperiri și inovații în domeniul tehnologiei. În același timp, Espressif a deschis și a împărtășit sistemul de operare și cadrul software auto-dezvoltat cu comunitatea, formând un ecosistem unic. Inginerii, producătorii și pasionații de tehnologie dezvoltă în mod activ noi aplicații software bazate pe produsele Espressif, comunică liber și își împărtășesc experiența. Puteți vedea ideile fascinante ale dezvoltatorilor pe diverse platforme tot timpul, cum ar fi YouTube și GitHub. Popularitatea produselor Espressif a stimulat un număr tot mai mare de autori care au produs peste 100 de cărți bazate pe chipset-urile Espressif, în peste zece limbi, inclusiv engleză, chineză, germană, franceză și japoneză.
Sprijinul și încrederea partenerilor comunitari încurajează inovația continuă a Espressif. „Ne străduim să facem cipurile noastre, sistemele de operare, cadrele, soluțiile, Cloud, practicile de afaceri, instrumentele, documentația, scrierile, ideile etc., din ce în ce mai relevante pentru răspunsurile de care oamenii au nevoie în cele mai stringente probleme ale vieții contemporane. Aceasta este cea mai mare ambiție și busolă morală a lui Espressif.” a declarat domnul Teo Swee Ann, fondator și CEO al Espressif.
Espressif apreciază lectura și ideile. Deoarece modernizarea continuă a tehnologiei IoT impune cerințe mai mari pentru ingineri, cum putem ajuta mai mulți oameni să stăpânească rapid cipurile IoT, sistemele de operare, cadrele software, schemele de aplicații și produsele de servicii cloud? După cum se spune, este mai bine să înveți un om să pescuiască decât să-i dai pește. Într-o sesiune de brainstorming, ne-a trecut prin minte că am putea scrie o carte pentru a sorta sistematic cunoștințele cheie ale dezvoltării IoT. Am reușit, am adunat rapid un grup de ingineri seniori și am combinat experiența echipei tehnice în programare încorporată, dezvoltare hardware și software IoT, toate contribuind la publicarea acestei cărți. În procesul de scriere, ne-am străduit din răsputeri să fim obiectivi și corecti, lipsiți de cocon și să folosim expresii concise pentru a spune complexitatea și farmecul Internetului lucrurilor. Am rezumat cu atenție întrebările comune, ne-am referit la feedback-ul și sugestiile comunității, pentru a răspunde în mod clar la întrebările întâlnite în procesul de dezvoltare și pentru a oferi linii directoare practice de dezvoltare IoT pentru tehnicienii și factorii de decizie relevanți.
Structura cărții
Această carte are o perspectivă centrată pe inginer și expune cunoștințele necesare pentru dezvoltarea proiectelor IoT pas cu pas. Este compus din patru părți, după cum urmează:
· Pregătire (Capitolul 1): Această parte prezintă arhitectura IoT, cadrul de proiect tipic IoT, platforma cloud ESP RainMakerr și mediul de dezvoltare ESP-IDF, astfel încât să pună o bază solidă pentru dezvoltarea proiectelor IoT.
· Dezvoltare hardware și drivere (Capitolul 5): Pe baza chipset-ului ESP6-C32, această parte elaborează sistemul hardware minim și dezvoltarea driverelor și implementează controlul diminuării, gradării culorilor și comunicației fără fir.
· Comunicare și control fără fir (Capitolul 7): Această parte explică schema de configurare Wi-Fi inteligentă bazată pe cip ESP11-C32, protocoale de control local și cloud și controlul local și de la distanță al dispozitivelor. De asemenea, oferă scheme pentru dezvoltarea de aplicații pentru smartphone, upgrade de firmware și managementul versiunilor.
· Optimizare și producție în masă (Capitolul 12-15): Această parte este destinată aplicațiilor IoT avansate, concentrându-se pe optimizarea produselor în gestionarea energiei, optimizarea consumului redus și securitatea îmbunătățită. De asemenea, introduce arderea și testarea firmware-ului în producția de masă și modul de diagnosticare a stării de funcționare și a jurnalelor firmware-ului dispozitivului prin intermediul platformei de monitorizare la distanță ESP Insights.
Despre codul sursă
Cititorii pot rula exampprogramele din această carte, fie prin introducerea manuală a codului, fie prin utilizarea codului sursă care însoțește cartea. Subliniem combinația dintre teorie și practică și astfel setăm o secțiune Practică bazată pe proiectul Smart Light în aproape fiecare capitol. Toate codurile sunt open source. Cititorii sunt bineveniți să descarce codul sursă și să-l discute în secțiunile legate de această carte de pe GitHub și forumul nostru oficial esp32.com. Codul cu sursă deschisă al acestei cărți este supus termenilor licenței Apache 2.0.
Nota autorului
Această carte este produsă oficial de Espressif Systems și este scrisă de inginerii seniori ai companiei. Este potrivit pentru manageri și personalul de cercetare și dezvoltare din industriile legate de IoT, profesori și studenți de specializări conexe și pasionați în domeniul Internet of Things. Sperăm că această carte poate servi ca un manual de lucru, o referință și o carte de noptieră, pentru a fi ca un bun profesor și prieten.
În timpul compilarii acestei cărți, ne-am referit la unele rezultate relevante ale cercetării experților, savanților și tehnicienilor din țară și din străinătate și am făcut tot posibilul să le cităm conform normelor academice. Cu toate acestea, este inevitabil să existe unele omisiuni, așa că aici dorim să ne exprimăm respectul și recunoștința profundă tuturor autorilor relevanți. În plus, am citat informații de pe Internet, așa că dorim să mulțumim autorilor și editorilor originali și să ne cerem scuze că nu putem indica sursa fiecărei informații.
Pentru a produce o carte de înaltă calitate, am organizat runde de discuții interne și am învățat din sugestiile și feedback-ul cititorilor și editorilor editorilor. Aici, am dori să vă mulțumim din nou pentru ajutorul vostru, care a contribuit cu toții la această lucrare de succes.
În sfârșit, dar cel mai important, mulțumim tuturor celor de la Espressif care au muncit atât de mult pentru nașterea și popularizarea produselor noastre.
Dezvoltarea proiectelor IoT implică o gamă largă de cunoștințe. Limitate la lungimea cărții, precum și la nivelul și experiența autorului, omisiunile sunt inevitabile. Prin urmare, solicităm ca experții și cititorii să ne critice și să ne corecteze greșelile. Dacă aveți sugestii pentru această carte, vă rugăm să ne contactați la book@espressif.com. Așteptăm cu nerăbdare feedback-ul dvs.
Cum să folosești această carte?
Codul proiectelor din această carte a fost open source. Puteți să-l descărcați din depozitul nostru GitHub și să vă împărtășiți gândurile și întrebările pe forumul nostru oficial. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 De-a lungul cărții, vor exista părți evidențiate așa cum se arată mai jos.
Cod sursă În această carte, punem accent pe combinația dintre teorie și practică și, astfel, stabilim o secțiune Practică despre proiectul Smart Light în aproape fiecare capitol. Pașii corespunzători și pagina sursă vor fi marcate între două rânduri începând cu tag Cod sursă.
NOTĂ/SFATURI Aici puteți găsi câteva informații critice și reamintiri pentru depanarea cu succes a programului dvs. Ele vor fi marcate între două linii groase începând cu tag NOTĂ sau SFATURI.
Majoritatea comenzilor din această carte sunt executate sub Linux, solicitate de caracterul „$”. Dacă comanda necesită privilegii de superutilizator pentru a fi executată, promptul va fi înlocuit cu „#”. Promptul de comandă pe sistemele Mac este „%”, așa cum este folosit în Secțiunea 4.2.3 Instalarea ESP-IDF pe Mac.
Corpul textului din această carte va fi tipărit în Charter, în timp ce codul exampfișiere, componente, funcții, variabile, cod file numele, directoarele de coduri și șirurile de caractere vor fi în Courier New.
Comenzile sau textele care trebuie introduse de utilizator și comenzile care pot fi introduse prin apăsarea tastei „Enter” vor fi tipărite cu caractere aldine Courier New. Jurnalele și blocurile de cod vor fi prezentate în casete albastre deschis.
Examppe:
În al doilea rând, utilizați esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py pentru a genera binarul partiției NVS file pe gazda de dezvoltare cu următoarea comandă:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –size NVS PARTITION SIZE
Capitolul 1
Introducere
la
IoT
La sfârșitul secolului al XX-lea, odată cu apariția rețelelor de calculatoare și a tehnologiilor de comunicare, Internetul sa integrat rapid în viața oamenilor. Pe măsură ce tehnologia Internetului continuă să se maturizeze, s-a născut ideea de Internet of Things (IoT). Literal, IoT înseamnă un Internet unde lucrurile sunt conectate. În timp ce Internetul original rupe limitele spațiului și timpului și îngustează distanța dintre „persoană și persoană”, IoT face din „lucruri” un participant important, aducând „oameni” și „lucruri” mai aproape. În viitorul previzibil, IoT va deveni forța motrice a industriei informaționale.
Deci, ce este Internetul Lucrurilor?
Este greu să definești cu exactitate Internetul lucrurilor, deoarece semnificația și domeniul său de aplicare evoluează constant. În 1995, Bill Gates a prezentat pentru prima dată ideea IoT în cartea sa The Road Ahead. Mai simplu spus, IoT permite obiectelor să facă schimb de informații între ele prin Internet. Scopul său final este de a stabili un „Internet al Totului”. Aceasta este o interpretare timpurie a IoT, precum și o fantezie a tehnologiei viitoare. Treizeci de ani mai târziu, odată cu dezvoltarea rapidă a economiei și a tehnologiei, fantezia devine realitate. De la dispozitive inteligente, case inteligente, orașe inteligente, internetul vehiculelor și dispozitive purtabile, până la „metaversul” susținut de tehnologiile IoT, noi concepte apar în mod constant. În acest capitol, vom începe cu o explicație a arhitecturii Internet of Things, apoi vom introduce cea mai comună aplicație IoT, casa inteligentă, pentru a vă ajuta să înțelegeți clar IoT.
1.1 Arhitectura IoT
Internetul lucrurilor implică mai multe tehnologii care au nevoi și forme diferite de aplicare în diferite industrii. Pentru a sorta structura, tehnologiile cheie și caracteristicile aplicației IoT, este necesar să se stabilească o arhitectură unificată și un sistem tehnic standard. În această carte, arhitectura IoT este pur și simplu împărțită în patru straturi: strat de percepție și control, strat de rețea, strat de platformă și strat de aplicație.
Stratul de percepție și control Fiind cel mai elementar element al arhitecturii IoT, stratul de percepție și control este nucleul pentru a realiza detectarea cuprinzătoare a IoT. Funcția sa principală este de a colecta, identifica și controla informații. Constă dintr-o varietate de dispozitive cu capacitatea de percepție,
3
identificarea, controlul și execuția și este responsabil pentru preluarea și analizarea datelor, cum ar fi proprietățile materialelor, tendințele comportamentale și starea dispozitivului. În acest fel, IoT ajunge să recunoască lumea fizică reală. În plus, stratul poate controla și starea dispozitivului.
Cele mai comune dispozitive ale acestui strat sunt diverși senzori, care joacă un rol important în colectarea și identificarea informațiilor. Senzorii sunt ca organele senzoriale umane, cum ar fi senzorii fotosensibili egali cu vederea, senzorii acustici pentru auz, senzorii de gaz pentru miros și senzorii sensibili la presiune și temperatură la atingere. Cu toate aceste „organe senzoriale”, obiectele devin „vii” și capabile de percepție, recunoaștere și manipulare inteligentă a lumii fizice.
Stratul de rețea Funcția principală a stratului de rețea este de a transmite informații, inclusiv date obținute de la nivelul de percepție și control către ținta specificată, precum și comenzile emise de la nivelul de aplicație înapoi la nivelul de percepție și control. Acesta servește ca o punte de comunicare importantă care conectează diferite straturi ale unui sistem IoT. Pentru a configura un model de bază al Internetului Lucrurilor, implică doi pași de integrare a obiectelor într-o rețea: accesul la Internet și transmiterea prin Internet.
Accesul la Internet Internet permite interconectarea între persoană și persoană, dar nu reușește să includă lucrurile în familia mare. Înainte de apariția IoT, majoritatea lucrurilor nu erau „adaptabile la rețea”. Datorită dezvoltării continue a tehnologiei, IoT reușește să conecteze lucrurile la Internet, realizând astfel interconectarea între „oameni și lucruri”, și „lucruri și lucruri”. Există două modalități comune de implementare a conexiunii la Internet: acces la rețea cu fir și acces la rețea fără fir.
Metodele de acces la rețea cu fir includ Ethernet, comunicarea în serie (de exemplu, RS-232, RS-485) și USB, în timp ce accesul la rețea fără fir depinde de comunicarea fără fir, care poate fi împărțită în continuare în comunicații fără fir pe rază scurtă și comunicare fără fir pe rază lungă.
Comunicarea fără fir pe rază scurtă de acțiune include ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) și Radio Frequency Identification (RFID). Comunicarea fără fir pe rază lungă include Comunicarea de tip mașină îmbunătățită (eMTC), LoRa, Internetul obiectelor în bandă îngustă (NB-IoT), 2G, 3G, 4G, 5G etc.
Transmiterea prin Internet Diferite metode de acces la Internet conduc la o legătură fizică corespunzătoare de transmisie a datelor. Următorul lucru este să decideți ce protocol de comunicare să utilizați pentru a transmite datele. În comparație cu terminalele de internet, majoritatea terminalelor IoT au în prezent mai puține
4 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
resursele disponibile, precum performanța de procesare, capacitatea de stocare, rata de rețea etc., așa că este necesar să alegeți un protocol de comunicație care să ocupe mai puține resurse în aplicațiile IoT. Există două protocoale de comunicare care sunt utilizate pe scară largă astăzi: Message Queuing Telemetry Transport (MQTT) și Constrained Application Protocol (CoAP).
Stratul de platformă Stratul de platformă se referă în principal la platformele cloud IoT. Când toate terminalele IoT sunt conectate în rețea, datele lor trebuie să fie agregate pe o platformă cloud IoT pentru a fi calculate și stocate. Stratul de platformă acceptă în principal aplicații IoT pentru a facilita accesul și gestionarea dispozitivelor masive. Conectează terminalele IoT la platforma cloud, colectează date terminale și emite comenzi către terminale, astfel încât să implementeze controlul de la distanță. Ca un serviciu intermediar de atribuire a echipamentelor aplicațiilor din industrie, stratul de platformă joacă un rol de conectare în întreaga arhitectură IoT, purtând o logică de afaceri abstractă și un model de date de bază standardizat, care nu numai că poate realiza accesul rapid la dispozitive, dar oferă și capabilități modulare puternice. pentru a satisface diverse nevoi în scenarii de aplicații industriale. Stratul platformei include în principal module funcționale, cum ar fi accesul la dispozitive, managementul dispozitivelor, managementul securității, comunicarea mesajelor, monitorizarea operațiunii și întreținerea și aplicațiile de date.
· Acces la dispozitiv, realizând conexiunea și comunicarea între terminale și platformele cloud IoT.
· Gestionarea dispozitivului, inclusiv funcții precum crearea dispozitivului, întreținerea dispozitivului, conversia datelor, sincronizarea datelor și distribuirea dispozitivului.
· Managementul securității, asigurarea securității transmiterii datelor IoT din perspectiva autentificării securității și securității comunicațiilor.
· Comunicarea mesajelor, inclusiv trei direcții de transmisie, adică terminalul trimite date către platforma cloud IoT, platforma cloud IoT trimite date către partea serverului sau alte platforme cloud IoT, iar partea serverului controlează de la distanță dispozitivele IoT.
· Monitorizarea O&M, care implică monitorizare și diagnosticare, upgrade de firmware, depanare online, servicii de jurnal etc.
· Aplicații de date, care implică stocarea, analiza și aplicarea datelor.
Stratul de aplicație Stratul de aplicație utilizează datele din stratul de platformă pentru a gestiona aplicația, filtrăndu-le și procesându-le cu instrumente precum baze de date și software de analiză. Datele rezultate pot fi folosite pentru aplicații IoT din lumea reală, cum ar fi asistența medicală inteligentă, agricultura inteligentă, casele inteligente și orașele inteligente.
Desigur, arhitectura IoT poate fi subdivizată în mai multe straturi, dar indiferent de câte straturi constă, principiul de bază rămâne în esență același. Învăţare
Capitolul 1. Introducere în IoT 5
despre arhitectura IoT ne ajută să ne aprofundăm înțelegerea tehnologiilor IoT și să construim proiecte IoT complet funcționale.
1.2 Aplicație IoT în case inteligente
IoT a pătruns în toate domeniile vieții, iar aplicația IoT cea mai strâns legată de noi este casa inteligentă. Multe aparate tradiționale sunt acum echipate cu unul sau mai multe dispozitive IoT, iar multe case nou construite sunt proiectate cu tehnologii IoT încă de la început. Figura 1.1 prezintă câteva dispozitive comune pentru casă inteligentă.
Figura 1.1. Dispozitive comune inteligente pentru casă Dezvoltarea casei inteligente poate fi pur și simplu împărțită în produse inteligentetage, interconectarea scenei stage si inteligent stage, așa cum se arată în Figura 1.2.
Figura 1.2. Dezvoltare stage de smart home 6 ESP32-C3 Wireless Adventure: Un ghid cuprinzător pentru IoT
Primul stage despre produse inteligente. Spre deosebire de casele tradiționale, în casele inteligente, dispozitivele IoT primesc semnale cu senzori și sunt conectate în rețea prin tehnologii de comunicare fără fir, cum ar fi Wi-Fi, Bluetooth LE și ZigBee. Utilizatorii pot controla produsele inteligente într-o varietate de moduri, cum ar fi aplicații pentru smartphone, asistenți vocali, control inteligent al difuzoarelor etc.tage se concentrează pe interconectarea scenei. În acest stage, dezvoltatorii nu mai iau în considerare controlul unui singur produs inteligent, ci interconectarea a două sau mai multe produse inteligente, automatizarea într-o anumită măsură și, în final, formarea unui mod de scenă personalizat. De exampAtunci când utilizatorul apasă orice buton pentru modul scenă, luminile, draperiile și aparatele de aer condiționat vor fi adaptate automat la presetări. Desigur, există o condiție prealabilă ca logica de legătură să fie configurată cu ușurință, inclusiv condițiile de declanșare și acțiunile de execuție. Imaginați-vă că modul de încălzire a aerului condiționat este declanșat atunci când temperatura interioară scade sub 10°C; că la ora 7 dimineața se redă muzică pentru a trezi utilizatorul, se deschid perdelele inteligente, iar aragazul de orez sau prăjitorul de pâine pornește printr-o priză inteligentă; pe măsură ce utilizatorul se ridică și termină de spălat, micul dejun este deja servit, astfel încât să nu întârzie să mergi la serviciu. Cât de convenabilă a devenit viața noastră! Al treilea stage merge la intelligence stage. Pe măsură ce sunt accesate mai multe dispozitive inteligente de acasă, la fel vor fi și tipurile de date generate. Cu ajutorul cloud computingului, big data și inteligenței artificiale, este ca și cum un „creier mai inteligent” a fost plantat în casele inteligente, care nu mai necesită comenzi frecvente din partea utilizatorului. Ei colectează date din interacțiunile anterioare și învață modelele de comportament și preferințele utilizatorului, astfel încât să automatizeze activitățile, inclusiv oferirea de recomandări pentru luarea deciziilor. În prezent, majoritatea caselor inteligente se află la locul interconexiuniitage. Pe măsură ce rata de penetrare și inteligența produselor inteligente cresc, barierele dintre protocoalele de comunicare sunt înlăturate. În viitor, casele inteligente vor deveni cu adevărat „inteligente”, la fel ca sistemul AI Jarvis din Iron Man, care nu numai că poate ajuta utilizatorul să controleze diverse dispozitive, să se ocupe de treburile zilnice, dar și să aibă o putere super de calcul și o capacitate de gândire. În s. inteligenttage, ființele umane vor primi servicii mai bune atât din punct de vedere cantitativ, cât și calitativ.
Capitolul 1. Introducere în IoT 7
8 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Capitolul Introducere și practică a 2 proiecte IoT
În Capitolul 1, am introdus arhitectura IoT și rolurile și interrelațiile nivelului de percepție și control, stratului de rețea, stratului de platformă și stratului de aplicație, precum și dezvoltarea casei inteligente. Cu toate acestea, la fel ca atunci când învățăm să pictăm, cunoașterea cunoștințelor teoretice este departe de a fi suficientă. Trebuie să ne „murdărim mâinile” pentru a pune în practică proiecte IoT pentru a stăpâni cu adevărat tehnologia. În plus, atunci când un proiect trece la producția de masă stagDe exemplu, este necesar să se ia în considerare mai mulți factori, cum ar fi conexiunea la rețea, configurația, interacțiunea cu platforma cloud IoT, gestionarea și actualizările firmware-ului, gestionarea producției de masă și configurarea securității. Deci, la ce trebuie să acordăm atenție atunci când dezvoltăm un proiect IoT complet? În capitolul 1, am menționat că casa inteligentă este unul dintre cele mai comune scenarii de aplicații IoT, iar luminile inteligente sunt unul dintre cele mai de bază și practice aparate, care poate fi folosit în case, hoteluri, săli de sport, spitale etc. Prin urmare, în În această carte, vom lua construirea unui proiect de lumină inteligentă ca punct de plecare, vom explica componentele și caracteristicile acestuia și vom oferi îndrumări cu privire la dezvoltarea proiectului. Sperăm că puteți trage concluzii din acest caz pentru a crea mai multe aplicații IoT.
2.1 Introducere în proiecte tipice IoT
În ceea ce privește dezvoltarea, modulele funcționale de bază ale proiectelor IoT pot fi clasificate în dezvoltarea software și hardware a dispozitivelor IoT, dezvoltarea aplicațiilor client și dezvoltarea platformei cloud IoT. Este important să clarificăm modulele funcționale de bază, care vor fi descrise în continuare în această secțiune.
2.1.1 Module de bază pentru dispozitive comune IoT
Dezvoltarea software și hardware a dispozitivelor IoT include următoarele module de bază: Colectarea datelor
Ca strat inferior al arhitecturii IoT, dispozitivele IoT ale stratului de percepție și control conectează senzorii și dispozitivele prin cipurile și perifericele lor pentru a obține colectarea datelor și controlul operațiunii.
9
Legarea contului și configurarea inițială Pentru majoritatea dispozitivelor IoT, legarea contului și configurarea inițială sunt finalizate într-un singur proces operațional, de exempluample, conectarea dispozitivelor cu utilizatorii prin configurarea rețelei Wi-Fi.
Interacțiunea cu platformele cloud IoT Pentru a monitoriza și controla dispozitivele IoT, este necesară și conectarea acestora la platformele cloud IoT, pentru a da comenzi și a raporta starea prin interacțiune între ele.
Controlul dispozitivului Atunci când sunt conectate cu platformele cloud IoT, dispozitivele pot comunica cu cloud-ul și pot fi înregistrate, legate sau controlate. Utilizatorii pot interoga starea produsului și pot efectua alte operațiuni pe aplicația pentru smartphone prin intermediul platformelor cloud IoT sau protocoalelor locale de comunicare.
Actualizare firmware Dispozitivele IoT pot realiza, de asemenea, upgrade de firmware în funcție de nevoile producătorilor. Prin primirea comenzilor trimise de cloud, se va realiza upgrade de firmware și gestionarea versiunilor. Cu această funcție de actualizare a firmware-ului, puteți îmbunătăți continuu funcțiile dispozitivelor IoT, puteți remedia defecte și puteți îmbunătăți experiența utilizatorului.
2.1.2 Modulele de bază ale aplicațiilor client
Aplicațiile client (de exemplu, aplicațiile pentru smartphone) includ în principal următoarele module de bază:
Sistem de cont și autorizare Acceptă autorizarea contului și a dispozitivului.
Controlul dispozitivului Aplicațiile pentru smartphone sunt de obicei echipate cu funcții de control. Utilizatorii se pot conecta cu ușurință la dispozitivele IoT și le pot gestiona oricând și oriunde prin intermediul aplicațiilor pentru smartphone. Într-o casă inteligentă din lumea reală, dispozitivele sunt controlate în mare parte prin aplicații pentru smartphone, ceea ce nu numai că permite gestionarea inteligentă a dispozitivelor, dar și economisește costul forței de muncă. Prin urmare, controlul dispozitivului este o necesitate pentru aplicațiile client, cum ar fi controlul atributelor funcției dispozitivului, controlul scenei, programarea, controlul de la distanță, conectarea dispozitivului etc. Utilizatorii casnici inteligente pot, de asemenea, personaliza scenele în funcție de nevoile personale, controlând iluminarea, electrocasnicele, intrarea , etc., pentru a face viața acasă mai confortabilă și mai convenabilă. Ei pot cronometra aerul condiționat, îl pot opri de la distanță, pot aprinde automat lumina din hol odată ce ușa este descuiată sau pot trece la modul „teatru” cu un singur buton.
Aplicațiile client de notificare actualizează starea în timp real a dispozitivelor IoT și trimit alerte atunci când dispozitivele devin anormale.
10 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Servicii post-vânzare pentru clienți Aplicațiile pentru smartphone pot oferi servicii post-vânzare pentru produse, pentru a rezolva problemele legate de defecțiunile dispozitivelor IoT și operațiunile tehnice în timp util.
Funcții prezentate Pentru a satisface nevoile diferiților utilizatori, pot fi adăugate și alte funcții, cum ar fi Shake, NFC, GPS etc. GPS poate ajuta la setarea preciziei operațiunilor scenei în funcție de locație și distanță, în timp ce funcția Shake permite utilizatorilor să seteze comenzi care urmează să fie executate pentru un anumit dispozitiv sau scenă prin agitare.
2.1.3 Introducere în platformele comune IoT Cloud
Platforma cloud IoT este o platformă all-in-one care integrează funcții precum managementul dispozitivelor, comunicarea securității datelor și gestionarea notificărilor. În funcție de grupul lor țintă și de accesibilitate, platformele cloud IoT pot fi împărțite în platforme cloud publice IoT (denumite în continuare „cloud public”) și platforme cloud IoT private (denumite în continuare „cloud privat”).
Cloudul public indică de obicei platforme cloud IoT partajate pentru întreprinderi sau persoane fizice, operate și întreținute de furnizorii de platforme și partajate prin Internet. Poate fi gratuit sau cu costuri reduse și oferă servicii în întreaga rețea publică deschisă, cum ar fi Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT etc. Ca platformă de sprijin, cloudul public poate integra furnizorii de servicii din amonte și utilizatorii finali din aval pentru a crea un nou lanț valoric și ecosistem.
Cloudul privat este construit numai pentru uzul întreprinderilor, garantând astfel cel mai bun control asupra datelor, securității și calității serviciilor. Serviciile și infrastructura sa sunt întreținute separat de întreprinderi, iar hardware-ul și software-ul suport sunt, de asemenea, dedicate anumitor utilizatori. Întreprinderile pot personaliza serviciile cloud pentru a satisface nevoile afacerii lor. În prezent, unii producători de case inteligente au deja platforme private IoT cloud și au dezvoltat aplicații pentru case inteligente pe baza acestora.
Cloudul public și cel privat au propriul lor avanstages, care va fi explicat mai târziu.
Pentru a obține conectivitate de comunicare, este necesar să finalizați cel puțin dezvoltarea încorporată pe partea dispozitivului, împreună cu servere de afaceri, platforme cloud IoT și aplicații pentru smartphone. În fața unui proiect atât de uriaș, cloudul public oferă, în mod normal, kituri de dezvoltare software pentru aplicații pentru dispozitive și pentru smartphone-uri pentru a accelera procesul. Atât cloudul public, cât și cel privat oferă servicii inclusiv accesul la dispozitiv, gestionarea dispozitivului, umbra dispozitivului și operarea și întreținerea.
Accesul la dispozitive Platformele cloud IoT trebuie să ofere nu numai interfețe pentru accesul dispozitivelor folosind protocoale
Capitolul 2. Introducerea și practica proiectelor IoT 11
cum ar fi MQTT, CoAP, HTTPS și WebSocket, dar și funcția de autentificare a securității dispozitivului pentru a bloca dispozitivele falsificate și ilegale, reducând efectiv riscul de a fi compromis. O astfel de autentificare acceptă, de obicei, diferite mecanisme, așa că atunci când dispozitivele sunt produse în serie, este necesar să se pre-atribuiți certificatul dispozitivului în funcție de mecanismul de autentificare selectat și să îl inscripționați în dispozitive.
Managementul dispozitivelor Funcția de gestionare a dispozitivelor oferită de platformele cloud IoT poate ajuta producătorii să monitorizeze în timp real starea de activare și starea online a dispozitivelor lor, dar permite și opțiuni precum adăugarea/eliminarea dispozitivelor, preluarea, adăugarea/ștergerea grupurilor, upgrade-ul firmware-ului , și gestionarea versiunilor.
Platformele cloud IoT de umbra dispozitivului pot crea o versiune virtuală persistentă (umbra dispozitivului) pentru fiecare dispozitiv, iar starea umbrei dispozitivului poate fi sincronizată și obținută prin aplicația pentru smartphone sau alte dispozitive prin protocoale de transmisie pe Internet. Device shadow stochează cea mai recentă stare raportată și starea așteptată a fiecărui dispozitiv și, chiar dacă dispozitivul este offline, poate obține în continuare starea apelând API-uri. Device shadow oferă API-uri mereu activate, ceea ce facilitează crearea de aplicații pentru smartphone care interacționează cu dispozitivele.
Operare și întreținere Funcția O&M include trei aspecte: · Demonstrarea informațiilor statistice despre dispozitivele și notificările IoT. · Gestionarea jurnalelor permite regăsirea informațiilor despre comportamentul dispozitivului, fluxul de mesaje sus/jos și conținutul mesajului. · Depanarea dispozitivului acceptă livrarea comenzilor, actualizarea configurației și verificarea interacțiunii dintre platformele cloud IoT și mesajele dispozitivului.
2.2 Practică: Proiect Smart Light
După introducerea teoretică din fiecare capitol, veți găsi o secțiune de practică legată de proiectul Smart Light pentru a vă ajuta să obțineți experiență practică. Proiectul se bazează pe cipul ESP32-C3 de la Espressif și pe platforma ESP RainMaker IoT Cloud și acoperă hardware-ul modulului wireless în produse de lumină inteligentă, software încorporat pentru dispozitive inteligente bazate pe ESP32C3, aplicații pentru smartphone și interacțiunea ESP RainMaker.
Cod sursă Pentru o experiență mai bună de învățare și dezvoltare, proiectul din această carte a fost opensource. Puteți descărca codul sursă din depozitul nostru GitHub la https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
2.2.1 Structura proiectului
Proiectul Smart Light constă din trei părți: i. Dispozitive de lumină inteligente bazate pe ESP32-C3, responsabile pentru interacțiunea cu platformele cloud IoT și controlul comutatorului, luminozității și temperaturii de culoare a LED-ului lamp margele. ii. Aplicații pentru smartphone (inclusiv aplicații pentru tabletă care rulează pe Android și iOS), responsabile de configurarea rețelei a produselor smart light, precum și de interogarea și controlul stării acestora.
iii. O platformă cloud IoT bazată pe ESP RainMaker. Pentru simplificare, luăm în considerare platforma cloud IoT și serverul de afaceri ca întreg în această carte. Detalii despre ESP RainMaker vor fi furnizate în Capitolul 3.
Corespondența dintre structura proiectului Smart Light și arhitectura IoT este prezentată în Figura 2.1.
Figura 2.1. Structura proiectului de lumină inteligentă
2.2.2 Funcțiile proiectului
Împărțite în funcție de structură, funcțiile fiecărei părți sunt după cum urmează. Dispozitive inteligente de lumină
· Configurare rețea și conectare. · Control PWM cu LED, cum ar fi comutatorul, luminozitatea, temperatura culorii etc. · Automatizarea sau controlul scenei, de exemplu, comutatorul de timp. · Criptare și pornire securizată a Flash-ului. · Actualizarea firmware-ului și gestionarea versiunilor.
Capitolul 2. Introducerea și practica proiectelor IoT 13
Aplicații pentru smartphone · Configurarea rețelei și legarea dispozitivului. · Controlul inteligent al produselor cu lumină, cum ar fi comutatorul, luminozitatea, temperatura culorii etc. · Automatizarea sau setările scenei, de exemplu, comutatorul de timp. · Control local/la distanta. · Înregistrarea utilizatorului, autentificare etc.
Platforma cloud ESP RainMaker IoT · Activarea accesului la dispozitive IoT. · Furnizarea de API-uri de operare a dispozitivelor accesibile pentru aplicațiile pentru smartphone. · Actualizarea firmware-ului și gestionarea versiunilor.
2.2.3 Pregătirea hardware
Dacă sunteți interesat să puneți în practică proiectul, veți avea nevoie și de următorul hardware: lumini inteligente, smartphone-uri, routere Wi-Fi și un computer care să îndeplinească cerințele de instalare ale mediului de dezvoltare. Lumini inteligente
Luminile inteligente sunt un nou tip de becuri, a căror formă este aceeași cu cea a becului incandescent general. O lumină inteligentă este compusă dintr-o sursă de alimentare reglată cu condensator, modul wireless (cu ESP32-C3 încorporat), controler LED și matrice LED RGB. Când este conectat la curent, 15 V DC voltagIeșirea după reducerea condensatorului, rectificarea diodei și reglarea furnizează energie controlerului LED și matricei LED. Controlerul LED poate trimite automat niveluri ridicate și scăzute la anumite intervale, comutând matricea LED RGB între închis (luminile aprinse) și deschise (luminile stinse), astfel încât să poată emite cyan, galben, verde, violet, albastru, roșu și lumină albă. Modulul wireless este responsabil pentru conectarea la routerul Wi-Fi, primirea și raportarea stării luminilor inteligente și trimiterea comenzilor pentru a controla LED-ul.
Figura 2.2. O lumină inteligentă simulată
În dezvoltarea timpurie stage, puteți simula o lumină inteligentă folosind placa ESP32-C3DevKitM-1 conectată cu LED RGB lamp margele (vezi Figura 2.2). Dar ar trebui
14 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
rețineți că aceasta nu este singura modalitate de a asambla o lumină inteligentă. Designul hardware al proiectului din această carte conține doar un modul wireless (cu ESP32-C3 încorporat), dar nu un design hardware complet pentru lumină inteligentă. În plus, Espressif produce și o placă de dezvoltare audio bazată pe ESP32-C3 ESP32C3-Lyra pentru controlul luminilor cu sunet. Placa are interfețe pentru microfoane și difuzoare și poate controla benzi LED. Poate fi folosit pentru dezvoltarea de radiodifuzori audio de înaltă performanță și cu costuri ultra-scazute și benzi de lumină ritmică. Figura 2.3 prezintă o placă ESP32-C3Lyra conectată cu o bandă de 40 de lumini LED.
Figura 2.3. ESP32-C3-Lyra conectat cu o bandă de 40 de lumini LED
Smartphone-uri (Android/iOS) Proiectul Smart Light presupune dezvoltarea unei aplicații pentru smartphone pentru configurarea și controlul produselor smart light.
Routere Wi-Fi Routerele Wi-Fi convertesc semnalele rețelei cu fir și semnalele rețelei mobile în semnale de rețea fără fir, pentru ca computerele, smartphone-urile, tabletele și alte dispozitive fără fir să se conecteze la rețea. De exampÎn bandă largă în casă trebuie doar conectat la un router Wi-Fi pentru a realiza rețeaua wireless a dispozitivelor Wi-Fi. Standardul de protocol principal acceptat de routerele Wi-Fi este IEEE 802.11n, cu un TxRate mediu de 300 Mbps sau 600 Mbps la maximum. Sunt compatibile cu IEEE 802.11b și IEEE 802.11g. Cipul ESP32-C3 de la Espressif acceptă IEEE 802.11b/g/n, așa că puteți alege un router Wi-Fi cu bandă simplă (2.4 GHz) sau dual-band (2.4 GHz și 5 GHz).
Un mediu de dezvoltare pentru computer (Linux/macOS/Windows) va fi introdus în Capitolul 4. Capitolul 2. Introducerea și practica proiectelor IoT 15
2.2.4 Procesul de dezvoltare
Figura 2.4. Etapele dezvoltării proiectului Smart Light
Design hardware Designul hardware al dispozitivelor IoT este esențială pentru un proiect IoT. Un proiect complet de lumină inteligentă este destinat să producă alamp lucrează sub rețeaua de alimentare. Diferiți producători produc lamps de diferite stiluri și tipuri de drivere, dar modulele lor wireless au de obicei aceeași funcție. Pentru a simplifica procesul de dezvoltare a proiectului Smart Ligh, această carte acoperă doar designul hardware și dezvoltarea software-ului modulelor wireless.
Configurarea platformei cloud IoT Pentru a utiliza platformele cloud IoT, trebuie să configurați proiecte pe backend, cum ar fi crearea de produse, crearea dispozitivelor, setarea proprietăților dispozitivului etc.
Dezvoltare de software încorporat pentru dispozitive IoT Implementați funcțiile așteptate cu ESP-IDF, SDK-ul Espressif pentru dispozitiv, inclusiv conectarea la platforme cloud IoT, dezvoltarea driverelor LED și actualizarea firmware-ului.
Dezvoltare de aplicații pentru smartphone Dezvoltați aplicații pentru smartphone-uri pentru sistemele Android și iOS pentru a realiza înregistrarea și autentificarea utilizatorilor, controlul dispozitivului și alte funcții.
Optimizarea dispozitivului IoT Odată finalizată dezvoltarea de bază a funcțiilor dispozitivului IoT, puteți apela la sarcini de optimizare, cum ar fi optimizarea energiei.
Testarea producției de masă Efectuați teste de producție de masă conform standardelor aferente, cum ar fi testul funcțional al echipamentului, testul de îmbătrânire, testul RF etc.
În ciuda pașilor enumerați mai sus, un proiect Smart Light nu este neapărat supus unei astfel de proceduri, deoarece pot fi efectuate și sarcini diferite în același timp. De example, software-ul încorporat și aplicațiile pentru smartphone pot fi dezvoltate în paralel. De asemenea, este posibil să fie necesar să se repete unii pași, cum ar fi optimizarea dispozitivelor IoT și testarea producției în masă.
16 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
2.3 Rezumat
În acest capitol, am expus mai întâi componentele de bază și modulele funcționale ale unui proiect IoT, apoi am introdus cazul Smart Light pentru practică, referindu-ne la structura sa, funcțiile, pregătirea hardware și procesul de dezvoltare. Cititorii pot trage concluzii din practică și pot deveni încrezători să realizeze proiecte IoT cu greșeli minime în viitor.
Capitolul 2. Introducerea și practica proiectelor IoT 17
18 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Capitolul 3
Introducere
la
ESP
RainMaker
Internetul lucrurilor (IoT) oferă posibilități infinite de a schimba modul în care oamenii trăiesc, dar dezvoltarea ingineriei IoT este plină de provocări. Cu cloud-urile publice, producătorii de terminale pot implementa funcționalitatea produsului prin următoarele soluții:
Bazat pe platformele cloud ale furnizorilor de soluții. În acest fel, producătorii de terminale trebuie doar să proiecteze hardware-ul produsului, apoi să conecteze hardware-ul la cloud folosind modulul de comunicare furnizat și să configureze funcțiile produsului urmând instrucțiunile. Aceasta este o abordare eficientă, deoarece elimină nevoia de dezvoltare și operațiuni și întreținere (O&M) pe partea de server și pe partea aplicației. Permite producătorilor de terminale să se concentreze asupra designului hardware fără a fi nevoiți să ia în considerare implementarea în cloud. Cu toate acestea, astfel de soluții (de exemplu, firmware-ul dispozitivului și aplicația) nu sunt în general open source, astfel încât funcțiile produsului vor fi limitate de platforma cloud a furnizorului, care nu poate fi personalizată. Între timp, datele despre utilizator și dispozitiv aparțin și platformei cloud.
Bazat pe produse cloud În această soluție, după finalizarea designului hardware, producătorii de terminale nu trebuie doar să implementeze funcții cloud folosind unul sau mai multe produse cloud furnizate de cloud-ul public, ci trebuie și să conecteze hardware-ul cu cloud-ul. De example, pentru a vă conecta la Amazon Web Servicii (AWS), producătorii de terminale trebuie să utilizeze produse AWS precum Amazon API Gateway, AWS IoT Core și AWS Lambda pentru a permite accesul la dispozitiv, controlul de la distanță, stocarea datelor, gestionarea utilizatorilor și alte funcții de bază. Nu numai că le cere producătorilor de terminale să utilizeze și să configureze în mod flexibil produsele cloud cu o înțelegere aprofundată și o experiență bogată, dar le cere și să ia în considerare costurile de construcție și întreținere pentru primele și cele ulterioare.tages Acest lucru pune mari provocări pentru energia și resursele companiei.
În comparație cu cloud-urile publice, cloud-urile private sunt de obicei construite pentru proiecte și produse specifice. Dezvoltatorii de cloud privat beneficiază de cel mai înalt nivel de libertate în proiectarea protocolului și implementarea logicii de afaceri. Producătorii de terminale pot realiza produse și scheme de proiectare după bunul plac și pot integra și împuternici cu ușurință datele utilizatorilor. Combinând securitatea ridicată, scalabilitatea și fiabilitatea cloudului public cu avansultageste de cloud privat, Espressif a lansat ESP
19
RainMaker, o soluție de cloud privat profund integrată, bazată pe cloud Amazon. Utilizatorii pot implementa ESP RainMaker și pot construi cloud privat pur și simplu cu un cont AWS.
3.1 Ce este ESP RainMaker?
ESP RainMaker este o platformă completă AIoT, construită cu mai multe produse AWS mature. Oferă diverse servicii necesare pentru producția de masă, cum ar fi accesul la cloud dispozitiv, upgrade-ul dispozitivului, managementul backend-ului, autentificarea terților, integrarea vocală și gestionarea utilizatorilor. Prin utilizarea Serverless Application Repository (SAR) furnizată de AWS, producătorii de terminale pot implementa rapid ESP RainMaker în conturile lor AWS, ceea ce este eficient în timp și ușor de operat. Gestionat și întreținut de Espressif, SAR utilizat de ESP RainMaker ajută dezvoltatorii să reducă costurile de întreținere în cloud și să accelereze dezvoltarea produselor AIoT, creând astfel soluții AIoT sigure, stabile și personalizabile. Figura 3.1 prezintă arhitectura ESP RainMaker.
Figura 3.1. Arhitectura ESP RainMaker
Serverul public ESP RainMaker de la Espressif este gratuit pentru toți entuziaștii, creatorii și educatorii ESP pentru evaluarea soluției. Dezvoltatorii se pot conecta cu conturile Apple, Google sau GitHub și își pot construi rapid propriile prototipuri de aplicații IoT. Serverul public integrează Alexa și Google Home și oferă servicii de control vocal, care sunt acceptate de Alexa Skill și Google Actions. Funcția sa de recunoaștere semantică este, de asemenea, alimentată de terți. Dispozitivele RainMaker IoT răspund doar la anumite acțiuni. Pentru o listă completă a comenzilor vocale acceptate, vă rugăm să verificați platformele terțe. În plus, Espressif oferă o aplicație publică RainMaker pentru ca utilizatorii să controleze produsele prin intermediul smartphone-urilor. 20 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
3.2 Implementarea ESP RainMaker
După cum se arată în Figura 3.2, ESP RainMaker constă din patru părți: · Serviciu de revendicare, permițând dispozitivelor RainMaker să obțină în mod dinamic certificate. · RainMaker Cloud (cunoscut și sub numele de cloud backend), care oferă servicii precum filtrarea mesajelor, gestionarea utilizatorilor, stocarea datelor și integrări terțe. · RainMaker Agent, care permite dispozitivelor RainMaker să se conecteze la RainMaker Cloud. · RainMaker Client (RainMaker App sau scripturi CLI), pentru aprovizionare, crearea de utilizatori, asocierea și controlul dispozitivelor etc.
Figura 3.2. Structura ESP RainMaker
ESP RainMaker oferă un set complet de instrumente pentru dezvoltarea produselor și producția de masă, inclusiv: RainMaker SDK
RainMaker SDK se bazează pe ESP-IDF și oferă codul sursă al agentului de pe partea dispozitivului și API-urile C aferente pentru dezvoltarea firmware-ului. Dezvoltatorii trebuie doar să scrie logica aplicației și să lase restul în seama cadrului RainMaker. Pentru mai multe informații despre API-urile C, vă rugăm să vizitați https://bookc3.espressif.com/rm/c-api-reference. Aplicația RainMaker Versiunea publică a aplicației RainMaker permite dezvoltatorilor să completeze furnizarea dispozitivelor și să controleze și să interogheze starea dispozitivelor (de exemplu, produse de iluminat inteligent). Este disponibil atât pe magazinele de aplicații iOS, cât și pe Android. Pentru mai multe detalii, consultați Capitolul 10. API-uri REST API-urile REST ajută utilizatorii să-și construiască propriile aplicații similare cu aplicația RainMaker. Pentru mai multe informații, vă rugăm să vizitați https://swaggerapis.rainmaker.espressif.com/.
Capitolul 3. Introducere în ESP RainMaker 21
API-uri Python Un CLI bazat pe Python, care vine cu RainMaker SDK, este furnizat pentru a implementa toate funcțiile similare cu caracteristicile smartphone-ului. Pentru mai multe informații despre API-urile Python, vizitați https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, cu un nivel mai ridicat de acces, este furnizat pentru implementarea privată ESP RainMaker pentru a genera certificate de dispozitiv în bloc.
3.2.1 Serviciul de revendicare
Toată comunicarea dintre dispozitivele RainMaker și backend-ul cloud se realizează prin MQTT+TLS. În contextul ESP RainMaker, „Claiming” este procesul prin care dispozitivele obțin certificate de la Claiming Service pentru a se conecta la backend-ul cloud. Rețineți că serviciul de revendicare este aplicabil numai serviciului public RainMaker, în timp ce pentru implementarea privată, certificatele dispozitivului trebuie să fie generate în bloc prin CLI Admin. ESP RainMaker acceptă trei tipuri de servicii de revendicare: auto-revendicare
Dispozitivul însuși preia certificatele printr-o cheie secretă preprogramată în eFuse după conectarea la Internet. Revendicare condusă de gazdă Certificatele sunt obținute de la gazda de dezvoltare cu contul RainMaker. Revendicare asistată Certificatele sunt obținute prin intermediul aplicațiilor pentru smartphone în timpul furnizării.
3.2.2 Agent RainMaker
Figura 3.3. Structura RainMaker SDK Funcția principală a agentului RainMaker este de a oferi conectivitate și de a asista nivelul aplicației să proceseze datele din cloud uplink/downlink. Este construit prin intermediul RainMaker SDK 22 ESP32-C3 Wireless Adventure: Un ghid cuprinzător pentru IoT
și dezvoltat pe baza cadrului ESP-IDF dovedit, folosind componente ESP-IDF precum RTOS, NVS și MQTT. Figura 3.3 prezintă structura SDK-ului RainMaker.
RainMaker SDK include două caracteristici majore.
Conexiune
i. Cooperarea cu Claiming Service pentru a obține certificate de dispozitiv.
ii. Conectarea la backend-ul cloud utilizând protocolul securizat MQTT pentru a oferi conectivitate la distanță și pentru a implementa control de la distanță, raportare mesaje, gestionare a utilizatorilor, gestionare a dispozitivelor etc. Utilizează componenta MQTT în ESP-IDF în mod implicit și oferă un strat de abstractizare pentru interfața cu alte stive de protocol.
iii. Furnizarea componentei de furnizare Wi-Fi pentru conexiunea și furnizarea Wi-Fi, în special componenta https ota pentru upgrade-uri OTA și, în special, componenta ctrl locală pentru descoperirea și conexiunea locală a dispozitivelor. Toate aceste obiective pot fi atinse printr-o configurare simplă.
Prelucrarea datelor
i. Stocarea certificatelor de dispozitiv emise de Claiming Service și a datelor necesare la rularea RainMaker, utilizând implicit interfața furnizată de componenta flash nvs și furnizarea de API-uri pentru dezvoltatori pentru utilizare directă.
ii. Utilizarea mecanismului de apel invers pentru a procesa datele din cloud uplink/downlink și deblocarea automată a datelor către stratul de aplicație pentru procesare ușoară de către dezvoltatori. De exampRainMaker SDK oferă interfețe bogate pentru stabilirea datelor TSL (Thing Specification Language), care sunt necesare pentru a defini modelele TSL pentru a descrie dispozitivele IoT și pentru a implementa funcții precum sincronizarea, numărătoarea inversă și controlul vocal. Pentru funcții interactive de bază, cum ar fi sincronizarea, RainMaker SDK oferă o soluție fără dezvoltare care poate fi pur și simplu activată atunci când este necesar. Apoi, agentul RainMaker va procesa în mod direct datele, le va trimite în cloud prin intermediul subiectului MQTT asociat și va transmite modificările datelor din backend-ul cloud prin mecanismul de apel invers.
3.2.3 Cloud Backend
Backend-ul cloud este construit pe AWS Serverless Computing și realizat prin AWS Cognito (sistem de management al identității), Amazon API Gateway, AWS Lambda (serviciu de calcul fără server), Amazon DynamoDB (bază de date NoSQL), AWS IoT Core (nucleu de acces IoT care oferă acces MQTT și filtrarea regulilor), Amazon Simple Email Service (serviciu de poștă simplă SES), Amazon CloudFront (rețea de livrare rapidă), Amazon Simple Queue Service (serviciu de așteptare a mesajelor SQS) și Amazon S3 (serviciu de stocare bucket). Are scopul de a optimiza scalabilitatea și securitatea. Cu ESP RainMaker, dezvoltatorii pot gestiona dispozitivele fără a fi nevoie să scrie cod în cloud. Mesajele raportate de dispozitive sunt transmise în mod transparent către
Capitolul 3. Introducere în ESP RainMaker 23
clienți de aplicații sau alte servicii terțe. Tabelul 3.1 prezintă produsele și funcțiile cloud AWS utilizate în backend-ul cloud, cu mai multe produse și funcții în curs de dezvoltare.
Tabelul 3.1. Produsele și funcțiile cloud AWS utilizate de backend-ul cloud
Produs AWS Cloud utilizat de RainMaker
Funcţie
AWS Cognito
Gestionarea acreditărilor utilizatorilor și sprijinirea autentificărilor terților
AWS Lambda
Implementarea logicii de business de bază a backend-ului cloud
Amazon Timestream Stocarea datelor din seria temporală
Amazon DynamoDB Stocarea informațiilor private ale clienților
AWS IoT Core
Sprijină comunicarea MQTT
Amazon SES
Furnizarea de servicii de trimitere de e-mailuri
Amazon CloudFront Accelerarea gestionării backend-ului webacces la site
Amazon SQS
Redirecționarea mesajelor de la AWS IoT Core
3.2.4 Client RainMaker
Clienții RainMaker, cum ar fi App și CLI, comunică cu backend-ul cloud prin API-urile REST. Informații detaliate și instrucțiuni despre API-urile REST pot fi găsite în documentația Swagger furnizată de Espressif. Clientul aplicației mobile RainMaker este disponibil atât pentru sistemele iOS, cât și pentru Android. Permite furnizarea, controlul și partajarea dispozitivelor, precum și crearea și activarea sarcinilor de numărătoare inversă și conectarea la platforme terțe. Poate încărca automat interfața de utilizare și pictogramele în funcție de configurația raportată de dispozitive și poate afișa complet TSL-ul dispozitivului.
De example, dacă o lumină inteligentă este construită pe SDK-ul furnizat de RainMaker, exampfișierele, pictograma și interfața de utilizare a becului vor fi încărcate automat când aprovizionarea este finalizată. Utilizatorii pot schimba culoarea și luminozitatea luminii prin interfață și pot obține control de la terți conectând Alexa Smart Home Skill sau Google Smart Home Actions la conturile lor ESP RainMaker. Figura 3.4 prezintă pictograma și interfața de utilizare de exampfișierele luminii becului pe Alexa, Google Home și aplicația ESP RainMaker.
24 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
(a) Example – Alexa
(b) Example – Google Home
(c) Example – ESP RainMaker
Figura 3.4. Exampfișierele pictogramei și interfața de utilizare a becului pe Alexa, Google Home și aplicația ESP RainMaker
3.3 Practică: puncte cheie pentru dezvoltarea cu ESP RainMaker
Odată ce nivelul driverului de dispozitiv a fost finalizat, dezvoltatorii pot începe să creeze modele TSL și să proceseze datele downlink utilizând API-urile furnizate de RainMaker SDK și să activeze serviciile de bază ESP RainMaker pe baza definiției și cerințelor produsului.
Capitolul 3. Introducere în ESP RainMaker 25
Secțiunea 9.4 a acestei cărți va explica implementarea luminii inteligente LED în RainMaker. În timpul depanării, dezvoltatorii pot folosi instrumentele CLI din SDK-ul RainMaker pentru a comunica cu lumina inteligentă (sau pot apela API-urile REST de la Swagger).
Capitolul 10 va elabora utilizarea API-urilor REST în dezvoltarea aplicațiilor pentru smartphone. Actualizările OTA ale luminilor inteligente LED vor fi tratate în Capitolul 11. Dacă dezvoltatorii au activat monitorizarea de la distanță ESP Insights, backend-ul de gestionare ESP RainMaker va afișa datele ESP Insights. Detaliile vor fi prezentate în capitolul 15.
ESP RainMaker acceptă implementarea privată, care diferă de serverul public RainMaker în următoarele moduri:
Serviciu de revendicare Pentru a genera certificate în implementări private, este necesar să utilizați CLI-ul de administrare RainMaker în loc de revendicare. Cu serverul public, dezvoltatorilor trebuie să li se acorde drepturi de administrator pentru a implementa upgrade de firmware, dar nu este de dorit în implementările comerciale. Prin urmare, nici serviciul de autentificare separat nu poate fi furnizat pentru revendicarea proprie, nici drepturile de administrator pentru revendicarea condusă de gazdă sau asistată.
Aplicații pentru telefon În implementările private, aplicațiile trebuie configurate și compilate separat pentru a se asigura că sistemele de cont nu sunt interoperabile.
Autentificare terță parte și integrare vocală Dezvoltatorii trebuie să configureze separat prin conturile Google și Apple Developer pentru a activa autentificarea terță parte, precum și integrarea Alexa Skill și Google Voice Assistant.
SFATURI Pentru detalii despre implementarea cloud, vă rugăm să vizitați https://customer.rainmaker.espressif. com. În ceea ce privește firmware-ul, migrarea de la serverul public la serverul privat necesită doar înlocuirea certificatelor de dispozitiv, ceea ce îmbunătățește foarte mult eficiența migrării și reduce costul migrării și al depanării secundare.
3.4 Caracteristici ale ESP RainMaker
Funcțiile ESP RainMaker vizează în principal trei aspecte – managementul utilizatorilor, utilizatorii finali și administratorii. Toate caracteristicile sunt acceptate atât pe serverele publice, cât și pe cele private, dacă nu se specifică altfel.
3.4.1 Managementul utilizatorilor
Funcțiile de gestionare a utilizatorilor permit utilizatorilor finali să se înregistreze, să se autentifice, să schimbe parole, să recupereze parole etc.
26 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Înregistrați-vă și conectați-vă Metodele de înregistrare și autentificare acceptate de RainMaker includ: · Id-ul de e-mail + parolă · Număr de telefon + parolă · Cont Google · Cont Apple · Cont GitHub (numai server public) · Cont Amazon (numai server privat)
NOTĂ Înscrieți-vă folosind Google/Amazon partajează adresa de e-mail a utilizatorului cu RainMaker. Înscrieți-vă folosind Apple partajează o adresă falsă pe care Apple o atribuie utilizatorului în mod special pentru serviciul RainMaker. Un cont RainMaker va fi creat automat pentru utilizatorii care se conectează cu un cont Google, Apple sau Amazon pentru prima dată.
Schimbarea parolei Valabil numai pentru autentificarea pe ID-ul de e-mail/numărul de telefon. Toate celelalte sesiuni active vor fi deconectate după ce parola este schimbată. Conform comportamentului AWS Cognito, sesiunile deconectate pot rămâne active până la 1 oră.
Preluați parola Valabil numai pentru autentificarea pe ID-ul de e-mail/numărul de telefon.
3.4.2 Caracteristicile utilizatorului final
Funcțiile deschise utilizatorilor finali includ control și monitorizare local și de la distanță, programare, grupare dispozitive, partajare a dispozitivelor, notificări push și integrări terță parte.
Control și monitorizare de la distanță · Interogați configurația, valorile parametrilor și starea conexiunii pentru unul sau toate dispozitivele. · Setați parametrii pentru un singur sau mai multe dispozitive.
Control local și monitorizare Telefonul mobil și dispozitivul trebuie să fie conectate la aceeași rețea pentru control local.
Programare · Utilizatorii presetează anumite acțiuni la un moment dat. · Nu este necesară conexiune la internet pentru dispozitiv în timpul executării programului. · O singură dată sau repetă (prin specificarea zilelor) pentru un singur sau mai multe dispozitive.
Gruparea dispozitivelor Acceptă gruparea abstractă pe mai multe niveluri. Metadatele grupului pot fi utilizate pentru a crea o structură a camerei de acasă.
Capitolul 3. Introducere în ESP RainMaker 27
Partajarea dispozitivelor Unul sau mai multe dispozitive pot fi partajate cu unul sau mai mulți utilizatori.
Notificări push Utilizatorii finali vor primi notificări push pentru evenimente precum · Dispozitive noi adăugate/eliminate · Dispozitiv conectat la cloud · Dispozitiv deconectat de la cloud · Cereri de partajare a dispozitivelor create/acceptate/respinse · Mesaje de alertă raportate de dispozitive
Integrarea terțelor părți Alexa și Google Voice Assistant sunt acceptate pentru a controla dispozitivele RainMaker, inclusiv lumini, întrerupătoare, prize, ventilatoare și senzori de temperatură.
3.4.3 Funcții de administrare
Funcțiile de administrare le permit administratorilor să implementeze înregistrarea dispozitivelor, gruparea dispozitivelor și actualizările OTA și să view statistici și date ESP Insights.
Înregistrarea dispozitivului Generați certificate de dispozitiv și înregistrați-vă cu Admin CLI (doar serverul privat).
Gruparea dispozitivelor Creați grupuri abstracte sau structurate pe baza informațiilor despre dispozitiv (numai serverul privat).
Upgrade-uri Over-the-Air (OTA) Încărcați firmware în funcție de versiune și model, pe unul sau mai multe dispozitive sau un grup Monitorizați, anulați sau arhivați lucrări OTA.
View statistici Viewstatisticile capabile includ: · Înregistrări de dispozitive (certificate înregistrate de administrator) · Activări de dispozitive (dispozitiv conectat pentru prima dată) · Conturi de utilizator · Asociere utilizator-dispozitiv
View Datele ESP Insights ViewDatele ESP Insights capabile includ: · Erori, avertismente și jurnale personalizate · Rapoarte și analize de blocare · Motive de repornire · Valori precum utilizarea memoriei, RSSI etc. · Valori și variabile personalizate
28 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
3.5 Rezumat
În acest capitol, am introdus câteva diferențe cheie între implementarea publică a RainMaker și implementarea privată. Soluția privată ESP RainMaker lansată de Espressif este extrem de fiabilă și extensibilă. Toate cipurile din seria ESP32 au fost conectate și adaptate la AWS, ceea ce reduce foarte mult costul. Dezvoltatorii se pot concentra pe verificarea prototipului fără a fi nevoiți să învețe despre produsele cloud AWS. Am explicat, de asemenea, implementarea și caracteristicile ESP RainMaker și câteva puncte cheie pentru dezvoltarea utilizând platforma.
Scanați pentru a descărca ESP RainMaker pentru Android Scanați pentru a descărca ESP RainMaker pentru iOS
Capitolul 3. Introducere în ESP RainMaker 29
30 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Capitolul Configurarea 4 Mediul de dezvoltare
Acest capitol se concentrează pe ESP-IDF, cadrul oficial de dezvoltare software pentru ESP32-C3. Vom explica cum să configurați mediul pe diverse sisteme de operare și vom introduce structura proiectului și sistemul de construcție al ESP-IDF, precum și utilizarea instrumentelor de dezvoltare aferente. Apoi vom prezenta procesul de compilare și rulare a unui example proiect, oferind în același timp o explicație detaliată a jurnalului de ieșire la fiecare stage.
4.1 ESP-IDF pesteview
ESP-IDF (Espressif IoT Development Framework) este un cadru unic de dezvoltare IoT oferit de Espressif Technology. Utilizează C/C++ ca limbaj de dezvoltare principal și acceptă compilarea încrucișată în sistemele de operare obișnuite, cum ar fi Linux, Mac și Windows. ExampProgramele incluse în această carte sunt dezvoltate folosind ESP-IDF, care oferă următoarele caracteristici: · Drivere la nivel de sistem SoC. ESP-IDF include drivere pentru ESP32, ESP32-S2, ESP32-C3,
și alte chips-uri. Aceste drivere includ biblioteca periferică de nivel scăzut (LL), biblioteca stratului de abstractizare hardware (HAL), suportul RTOS și software-ul de driver de nivel superior, etc. · Componente esențiale. ESP-IDF încorporează componente fundamentale necesare pentru dezvoltarea IoT. Aceasta include mai multe stive de protocoale de rețea, cum ar fi HTTP și MQTT, un cadru de gestionare a energiei cu modulare dinamică a frecvenței și funcții precum Flash Encryption și Secure Boot etc. · Instrumente de dezvoltare și producție. ESP-IDF oferă instrumente utilizate în mod obișnuit pentru construirea, flash-ul și depanarea în timpul dezvoltării și producției în masă (vezi Figura 4.1), cum ar fi sistemul de construcție bazat pe CMake, lanțul de instrumente de compilare încrucișată bazat pe GCC și JTAG instrument de depanare bazat pe OpenOCD, etc. Este de remarcat faptul că codul ESP-IDF aderă în primul rând la licența open-source Apache 2.0. Utilizatorii pot dezvolta software personal sau comercial fără restricții, respectând în același timp termenii licenței open-source. În plus, utilizatorilor li se acordă licențe permanente de brevet gratuit, fără obligația de a deschide orice modificări aduse codului sursă.
31
Figura 4.1.
Construire, intermitent și depanare
instrumente pentru dezvoltare și producție de masă
4.1.1 Versiuni ESP-IDF
Codul ESP-IDF este găzduit pe GitHub ca proiect open-source. În prezent, există trei versiuni majore disponibile: v3, v4 și v5. Fiecare versiune majoră conține de obicei diferite subversii, cum ar fi v4.2, v4.3 și așa mai departe. Espressif Systems asigură un suport de 30 de luni pentru remedieri de erori și corecții de securitate pentru fiecare subversiune lansată. Prin urmare, revizuirile subversiunilor sunt, de asemenea, lansate în mod regulat, cum ar fi v4.3.1, v4.2.2 etc. Tabelul 4.1 arată starea de suport a diferitelor versiuni ESP-IDF pentru cipurile Espressif, indicând dacă acestea se află într-o versiune prealabilă.view stage (oferind suport pentru preview versiuni, cărora le pot lipsi anumite caracteristici sau documentație) sau sunt acceptate oficial.
Tabelul 4.1. Starea suportului pentru diferite versiuni ESP-IDF pentru cipurile Espressif
Seria ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 acceptat
v4.2 acceptat acceptat
v4.3 acceptat suportat suportat
v4.4 acceptat suportat suportat acceptat
preview
v5.0 acceptat suportat suportat suportat suportat preview
32 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Iterația versiunilor majore implică adesea ajustări ale structurii cadrului și actualizări ale sistemului de compilare. De example, schimbarea majoră de la v3.* la v4.* a fost migrarea treptată a sistemului de compilare de la Make la CMake. Pe de altă parte, iterarea versiunilor minore implică de obicei adăugarea de noi funcții sau suport pentru noi cipuri.
Este important să distingem și să înțelegem relația dintre versiunile stabile și ramurile GitHub. Versiunile etichetate ca v*.* sau v*.*.* reprezintă versiuni stabile care au trecut testarea internă completă de către Espressif. Odată remediate, codul, lanțul de instrumente și documentele de lansare pentru aceeași versiune rămân neschimbate. Cu toate acestea, ramurile GitHub (de exemplu, filiala ediție/v4.3) sunt supuse unor comisii frecvente de cod, adesea zilnic. Prin urmare, două fragmente de cod din aceeași ramură pot diferi, necesitând dezvoltatorilor să-și actualizeze imediat codul în consecință.
4.1.2 Flux de lucru ESP-IDF Git
Espressif urmează un flux de lucru Git specific pentru ESP-IDF, subliniat după cum urmează:
· Se fac noi modificări pe ramura principală, care servește ca ramură principală de dezvoltare. Versiunea ESP-IDF de pe ramura principală poartă întotdeauna un -dev tag pentru a indica faptul că este în prezent în curs de dezvoltare, cum ar fi v4.3-dev. Modificările pe ramura principală vor fi mai întâi revieweditat și testat în depozitul intern al Espressif, apoi trimis în GitHub după finalizarea testării automate.
· Odată ce o nouă versiune a finalizat dezvoltarea caracteristicilor pe ramura principală și a îndeplinit criteriile de intrare în testarea beta, aceasta trece la o nouă ramură, cum ar fi versiunea/v4.3. În plus, această nouă ramură este tagged ca versiune pre-lansare, cum ar fi v4.3-beta1. Dezvoltatorii se pot referi la platforma GitHub pentru a accesa lista completă a filialelor și tags pentru ESP-IDF. Este important de reținut că versiunea beta (versiunea pre-lansare) poate avea în continuare un număr semnificativ de probleme cunoscute. Pe măsură ce versiunea beta este supusă unor teste continue, remedieri de erori sunt adăugate atât la această versiune, cât și la ramura principală simultan. Între timp, ramura principală poate să fi început deja să dezvolte noi caracteristici pentru următoarea versiune. Când testarea este aproape completă, o etichetă de lansare candidat (rc) este adăugată la ramură, indicând că este un potențial candidat pentru lansarea oficială, cum ar fi v4.3-rc1. La acest stage, ramura rămâne o versiune pre-lansare.
· Dacă nu sunt descoperite sau raportate erori majore, versiunea pre-lansare primește în cele din urmă o etichetă de versiune majoră (de exemplu, v5.0) sau o etichetă de versiune minoră (de exemplu, v4.3) și devine o versiune de lansare oficială, care este documentată. în pagina de note de lansare. Ulterior, orice erori identificate în această versiune sunt remediate pe ramura de lansare. După ce testarea manuală este finalizată, ramurii i se atribuie o etichetă de versiune de remediere a erorilor (de exemplu, v4.3.2), care se reflectă și pe pagina cu note de lansare.
Capitolul 4. Configurarea mediului de dezvoltare 33
4.1.3 Alegerea unei versiuni adecvate
Deoarece ESP-IDF a început oficial să accepte ESP32-C3 din versiunea v4.3, iar v4.4 nu a fost încă lansat oficial la momentul scrierii acestei cărți, versiunea folosită în această carte este v4.3.2, care este o versiune revizuită din v4.3. Cu toate acestea, este important să rețineți că, până când citiți această carte, este posibil să fie deja disponibile v4.4 sau versiuni mai noi. Când selectați o versiune, vă recomandăm următoarele:
· Pentru dezvoltatorii entry-level, este recomandabil să alegeți versiunea stabilă v4.3 sau versiunea sa revizuită, care se aliniază cu ex.ampversiunea folosită în această carte.
· În scopuri de producție în masă, se recomandă utilizarea celei mai recente versiuni stabile pentru a beneficia de cel mai recent suport tehnic.
· Dacă intenționați să experimentați cu noi cipuri sau să explorați noi caracteristici ale produsului, vă rugăm să utilizați ramura principală. Cea mai recentă versiune conține toate cele mai recente caracteristici, dar rețineți că pot exista erori cunoscute sau necunoscute.
· Dacă versiunea stabilă utilizată nu include noile caracteristici dorite și doriți să minimizați riscurile asociate cu ramura principală, luați în considerare utilizarea ramurului de lansare corespunzătoare, cum ar fi ramura ediție/v4.4. Depozitul GitHub al Espressif va crea mai întâi ramura versiune/v4.4 și, ulterior, va lansa versiunea stabilă v4.4 pe baza unui instantaneu istoric specific al acestei ramuri, după finalizarea dezvoltării și testării caracteristicilor.
4.1.4 Pesteview din directorul ESP-IDF SDK
SDK-ul ESP-IDF constă din două directoare principale: esp-idf și .espressif. Primul conține codul sursă al depozitului ESP-IDF files și scripturi de compilare, în timp ce acesta din urmă stochează în principal lanțuri de instrumente de compilare și alte software-uri. Familiarizarea cu aceste două directoare îi va ajuta pe dezvoltatori să folosească mai bine resursele disponibile și să accelereze procesul de dezvoltare. Structura de directoare a ESP-IDF este descrisă mai jos:
(1) Directorul de coduri de depozit ESP-IDF (/esp/esp-idf), așa cum se arată în Figura 4.2.
A. Componentele directorului de componente
Acest director de bază integrează numeroase componente software esențiale ale ESP-IDF. Niciun cod de proiect nu poate fi compilat fără a te baza pe componentele din acest director. Include suport pentru drivere pentru diferite cipuri Espressif. De la biblioteca LL și interfețele bibliotecii HAL pentru periferice la nivelul superior Driver și Virtual File Suport de nivel de sistem (VFS), dezvoltatorii pot alege componentele adecvate la diferite niveluri pentru nevoile lor de dezvoltare. ESP-IDF acceptă, de asemenea, mai multe stive standard de protocoale de rețea, cum ar fi TCP/IP, HTTP, MQTT, WebSocket, etc. Dezvoltatorii pot utiliza interfețe familiare precum Socket pentru a construi aplicații de rețea. Componentele oferă înțelegere-
34 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Figura 4.2. Directorul de coduri de depozit ESP-IDF
funcționalitate excelentă și poate fi integrat cu ușurință în aplicații, permițând dezvoltatorilor să se concentreze exclusiv pe logica afacerii. Unele componente comune includ: · driver: Această componentă conține programe driver periferice pentru diverse Espressif
Serii de cipuri, cum ar fi GPIO, I2C, SPI, UART, LEDC (PWM), etc. Programele de drivere periferice din această componentă oferă interfețe abstracte independente de cip. Fiecare periferic are un antet comun file (cum ar fi gpio.h), eliminând nevoia de a face față diferitelor întrebări de asistență specifice cipului. · esp_wifi: Wi-Fi, ca un periferic special, este tratat ca o componentă separată. Include mai multe API-uri, cum ar fi inițializarea diferitelor moduri de driver Wi-Fi, configurarea parametrilor și procesarea evenimentelor. Anumite funcții ale acestei componente sunt furnizate sub formă de biblioteci de legături statice. ESP-IDF oferă, de asemenea, documentație cuprinzătoare pentru driver pentru ușurință în utilizare.
Capitolul 4. Configurarea mediului de dezvoltare 35
· freertos: Această componentă conține codul complet FreeRTOS. Pe lângă furnizarea de suport cuprinzător pentru acest sistem de operare, Espressif și-a extins suportul și la cipurile dual-core. Pentru cipurile dual-core precum ESP32 și ESP32-S3, utilizatorii pot crea sarcini pe anumite nuclee.
b. Documente directorul documentelor
Acest director conține documente de dezvoltare legate de ESP-IDF, inclusiv Ghidul de început, Manualul de referință API, Ghidul de dezvoltare etc.
NOTĂ După ce a fost compilat de instrumente automate, conținutul acestui director este implementat la https://docs.espressif.com/projects/esp-idf. Asigurați-vă că comutați ținta documentului la ESP32-C3 și selectați versiunea ESP-IDF specificată.
c. Instrumente pentru scripturi
Acest director conține instrumente front-end de compilare utilizate în mod obișnuit, cum ar fi idf.py și instrumentul de monitorizare a terminalului idf_monitor.py etc. Sub-directorul cmake conține, de asemenea, scriptul de bază files ale sistemului de compilare, servind drept bază pentru implementarea regulilor de compilare ESP-IDF. Când se adaugă variabilele de mediu, conținutul din directorul de instrumente este adăugat la variabila de mediu de sistem, permițând ca idf.py să fie executat direct sub calea proiectului.
d. Exampdirectorul programului examples
Acest director cuprinde o vastă colecție de ESP-IDF exampprogramele care demonstrează utilizarea API-urilor componente. Fostulampfișierele sunt organizate în diferite subdirectoare în funcție de categoriile lor:
· început: acest subdirector include exampca „hello world” și „clipiți” pentru a ajuta utilizatorii să înțeleagă elementele de bază.
· bluetooth: puteți găsi Bluetooth legate de exampfișiere aici, inclusiv Bluetooth LE Mesh, Bluetooth LE HID, BluFi și multe altele.
· wifi: acest subdirector se concentrează pe Wi-Fi de exampfișiere, inclusiv programe de bază precum Wi-Fi SoftAP, Wi-Fi Station, espnow, precum și protocolul de comunicare proprietar examples de la Espressif. Include, de asemenea, mai multe straturi de aplicare, exampfișiere bazate pe Wi-Fi, cum ar fi Iperf, Sniffer și Smart Config.
· periferice: acest subdirector extins este împărțit în numeroase subdirectoare bazate pe nume de periferice. Conține în principal driver periferic de exampfișiere pentru jetoane Espressif, cu fiecare example cu mai multe sub-examples. De exemplu, sub-directorul gpio include două exampfișiere: tastatură matrice GPIO și GPIO. Este important de reținut că nu toți exampfișierele din acest director sunt aplicabile pentru ESP32-C3.
36 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
De example, exampfișierele din usb/gazdă sunt aplicabile numai perifericelor cu hardware USB Host (cum ar fi ESP32-S3), iar ESP32-C3 nu are acest periferic. Sistemul de compilare furnizează de obicei solicitări la stabilirea țintei. Citiți-mă file din fiecare example listează cipurile acceptate. · protocoale: Acest subdirector conține exampfișiere pentru diverse protocoale de comunicație, inclusiv MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, acoperind o gamă largă de protocoale de comunicație, de exampfișierele necesare pentru dezvoltarea IoT. · aprovizionare: aici veți găsi aprovizionarea de exampfișiere pentru diferite metode, cum ar fi furnizarea Wi-Fi și furnizarea Bluetooth LE. · sistem: Acest subdirector include depanarea sistemului de exampfișiere (de exemplu, urmărirea stivei, urmărirea timpului de execuție, monitorizarea sarcinilor), managementul energiei de exampfișiere (de exemplu, diverse moduri de repaus, co-procesoare) și exampfișiere legate de componentele comune ale sistemului, cum ar fi terminalul consolei, bucla de evenimente și temporizatorul de sistem. · stocare: în acest subdirector, veți descoperi examples din toate file sisteme și mecanisme de stocare acceptate de ESP-IDF (cum ar fi citirea și scrierea de Flash, card SD și alte medii de stocare), precum și exampfișiere de stocare non-volatilă (NVS), FatFS, SPIFFS și altele file operațiuni ale sistemului. · securitate: Acest subdirector conține exampfișiere legate de criptarea flash. (2) Directorul lanțului de instrumente de compilare ESP-IDF (/.espressif), așa cum se arată în Figura 4.3.
Figura 4.3. Directorul lanțului de instrumente de compilare ESP-IDF
Capitolul 4. Configurarea mediului de dezvoltare 37
A. Director de distribuție software dist
Lanțul de instrumente ESP-IDF și alte programe software sunt distribuite sub formă de pachete comprimate. În timpul procesului de instalare, instrumentul de instalare descarcă mai întâi pachetul comprimat în directorul dist, apoi îl extrage în directorul specificat. Odată ce instalarea este completă, conținutul din acest director poate fi eliminat în siguranță.
b. Directorul mediului virtual Python python env
Diferitele versiuni ale ESP-IDF se bazează pe versiuni specifice ale pachetelor Python. Instalarea acestor pachete direct pe aceeași gazdă poate duce la conflicte între versiunile pachetului. Pentru a rezolva acest lucru, ESP-IDF utilizează medii virtuale Python pentru a izola diferite versiuni de pachete. Cu acest mecanism, dezvoltatorii pot instala mai multe versiuni de ESP-IDF pe aceeași gazdă și pot comuta cu ușurință între ele importând diferite variabile de mediu.
c. Instrumente de director al lanțului de instrumente de compilare ESP-IDF
Acest director conține în principal instrumente de compilare încrucișată necesare pentru a compila proiecte ESP-IDF, cum ar fi instrumentele CMake, instrumentele de compilare Ninja și lanțul de instrumente gcc care generează programul executabil final. În plus, acest director găzduiește biblioteca standard a limbajului C/C++ împreună cu antetul corespunzător files. Dacă un program face referire la un antet de sistem file ca #include , lanțul de instrumente de compilare va localiza stdio.h file în cadrul acestui director.
4.2 Configurarea mediului de dezvoltare ESP-IDF
Mediul de dezvoltare ESP-IDF acceptă sisteme de operare obișnuite, cum ar fi Windows, Linux și macOS. Această secțiune va prezenta modul de configurare a mediului de dezvoltare pe fiecare sistem. Se recomandă dezvoltarea ESP32-C3 pe sistemul Linux, care va fi introdus în detaliu aici. Multe instrucțiuni sunt aplicabile pe platforme datorită asemănării instrumentelor de dezvoltare. Prin urmare, se recomandă să citiți cu atenție conținutul acestei secțiuni.
NOTĂ Puteți consulta documentele online disponibile la https://bookc3.espressif.com/esp32c3, care furnizează comenzile menționate în această secțiune.
4.2.1 Configurarea mediului de dezvoltare ESP-IDF pe Linux
Instrumentele de dezvoltare și depanare GNU necesare pentru mediul de dezvoltare ESP-IDF sunt native pentru sistemul Linux. În plus, terminalul de linie de comandă din Linux este puternic și ușor de utilizat, ceea ce îl face o alegere ideală pentru dezvoltarea ESP32-C3. Puteți
38 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
selectați distribuția Linux preferată, dar vă recomandăm să utilizați Ubuntu sau alte sisteme bazate pe Debian. Această secțiune oferă îndrumări despre configurarea mediului de dezvoltare ESP-IDF pe Ubuntu 20.04.
1. Instalați pachetele necesare
Deschideți un nou terminal și executați următoarea comandă pentru a instala toate pachetele necesare. Comanda va omite automat pachetele care sunt deja instalate.
$ 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
SFATURI Trebuie să utilizați contul de administrator și parola pentru comanda de mai sus. În mod implicit, nu vor fi afișate informații la introducerea parolei. Pur și simplu apăsați tasta „Enter” pentru a continua procedura.
Git este un instrument de gestionare a codurilor cheie în ESP-IDF. După configurarea cu succes a mediului de dezvoltare, puteți utiliza comanda git log pentru a view toate modificările de cod făcute de la crearea ESP-IDF. În plus, Git este folosit și în ESP-IDF pentru a confirma informațiile despre versiune, care sunt necesare pentru instalarea lanțului de instrumente corect corespunzător unor versiuni specifice. Alături de Git, alte instrumente importante de sistem includ Python. ESP-IDF încorporează numeroase scripturi de automatizare scrise în Python. Instrumente precum CMake, Ninja-build și Ccache sunt utilizate pe scară largă în proiectele C/C++ și servesc ca instrumente implicite de compilare și construire a codului în ESP-IDF. libusb-1.0-0 și dfu-util sunt driverele principale utilizate pentru comunicarea serială USB și arderea firmware-ului. Odată ce pachetele software sunt instalate, puteți utiliza aplicația apt show comanda pentru a obține descrieri detaliate ale fiecărui pachet. De example, utilizați apt show git pentru a imprima informațiile de descriere pentru instrumentul Git.
Î: Ce să faci dacă versiunea Python nu este acceptată? R: ESP-IDF v4.3 necesită o versiune Python care nu este mai mică decât v3.6. Pentru versiunile mai vechi de Ubuntu, vă rugăm să descărcați și să instalați manual o versiune superioară de Python și să setați Python3 ca mediu Python implicit. Puteți găsi instrucțiuni detaliate căutând cuvântul cheie update-alternatives python.
2. Descărcați codul de depozit ESP-IDF
Deschideți un terminal și creați un folder numit esp în directorul dvs. de acasă folosind comanda mkdir. Puteți alege un alt nume pentru folder, dacă preferați. Utilizați comanda cd pentru a intra în folder.
Capitolul 4. Configurarea mediului de dezvoltare 39
$ mkdir -p /esp $ cd /esp
Utilizați comanda git clone pentru a descărca codul de depozit ESP-IDF, după cum se arată mai jos:
$ git clone -b v4.3.2 –recursiv https://github.com/espressif/esp-idf.git
În comanda de mai sus, parametrul -b v4.3.2 specifică versiunea de descărcat (în acest caz, versiunea 4.3.2). Parametrul –recursive asigură că toate sub-depozitele ESP-IDF sunt descărcate recursiv. Informații despre sub-repozitive pot fi găsite în .gitmodules file.
3. Instalați lanțul de instrumente de dezvoltare ESP-IDF
Espressif oferă un script automat install.sh pentru a descărca și instala lanțul de instrumente. Acest script verifică versiunea ESP-IDF actuală și mediul sistemului de operare, apoi descarcă și instalează versiunea adecvată a pachetelor de instrumente Python și a lanțurilor de instrumente de compilare. Calea implicită de instalare pentru lanțul de instrumente este /.espressif. Tot ce trebuie să faceți este să navigați la directorul esp-idf și să rulați install.sh.
$ cd /esp/esp-idf $ ./install.sh
Dacă instalați cu succes lanțul de instrumente, terminalul va afișa:
Toate gata!
În acest moment, ați configurat cu succes mediul de dezvoltare ESP-IDF.
4.2.2 Configurarea mediului de dezvoltare ESP-IDF pe Windows
1. Descărcați programul de instalare a instrumentelor ESP-IDF
SFATURI Se recomandă configurarea mediului de dezvoltare ESP-IDF pe Windows 10 sau o versiune ulterioară. Puteți descărca programul de instalare de pe https://dl.espressif.com/dl/esp-idf/. Programul de instalare este, de asemenea, un software open-source, iar codul său sursă poate fi vieweditat la https: //github.com/espressif/idf-installer.
· Instalator online de instrumente ESP-IDF
Acest program de instalare este relativ mic, de aproximativ 4 MB, iar alte pachete și coduri vor fi descărcate în timpul procesului de instalare. AdvanultagProgramul de instalare online este că nu numai că pachetele software și codul pot fi descărcate la cerere în timpul procesului de instalare, dar permite și instalarea tuturor versiunilor disponibile ale ESP-IDF și a celei mai recente ramuri a codului GitHub (cum ar fi ramura principală) . DezavantajultagEste că necesită o conexiune la rețea în timpul procesului de instalare, ceea ce poate cauza eșec la instalare din cauza problemelor de rețea.
40 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
· Program de instalare offline a instrumentelor ESP-IDF Acest program de instalare este mai mare, are o dimensiune de aproximativ 1 GB și conține toate pachetele software și codul necesar pentru configurarea mediului. Avantajul principaltagProgramul de instalare offline este că poate fi folosit pe computere fără acces la Internet și, în general, are o rată de succes mai mare a instalării. Trebuie remarcat faptul că programul de instalare offline poate instala numai versiuni stabile ale ESP-IDF identificate prin v*.* sau v*.*.*.
2. Rulați programul de instalare a instrumentelor ESP-IDF După descărcarea unei versiuni adecvate a programului de instalare (luați Instrumentele ESP-IDF Offline 4.3.2 de example aici), faceți dublu clic pe exe file pentru a lansa interfața de instalare ESP-IDF. Următoarele demonstrează cum să instalați versiunea stabilă ESP-IDF v4.3.2 folosind programul de instalare offline.
(1) În interfața „Selectare limbă de instalare” prezentată în Figura 4.4, selectați limba de utilizat din lista derulantă.
Figura 4.4. Interfața „Selectați limba de instalare” (2) După selectarea limbii, faceți clic pe „OK” pentru a afișa interfața „Acord de licență”
(vezi Figura 4.5). După ce ați citit cu atenție acordul de licență de instalare, selectați „Accept acordul” și faceți clic pe „Următorul”.
Figura 4.5. Interfața „Acord de licență” Capitolul 4. Configurarea mediului de dezvoltare 41
(3) Review configurația sistemului în interfața „Verificare sistem înainte de instalare” (vezi Figura 4.6). Verificați versiunea Windows și informațiile despre software-ul antivirus instalat. Faceți clic pe „Următorul” dacă toate elementele de configurare sunt normale. În caz contrar, puteți face clic pe „Jurnal complet” pentru soluții bazate pe elemente cheie.
Figura 4.6. Sfaturi pentru interfața „Verificarea sistemului înainte de instalare”.
Puteți trimite jurnalele la https://github.com/espressif/idf-installer/issues pentru ajutor. (4) Selectați directorul de instalare ESP-IDF. Aici, selectați D:/.espressif, așa cum se arată în
Figura 4.7 și faceți clic pe „Next”. Vă rugăm să rețineți că .espressif aici este un director ascuns. După ce instalarea este finalizată, puteți view conținutul specific al acestui director prin deschiderea fișierului file manager și afișarea elementelor ascunse.
Figura 4.7. Selectați directorul de instalare ESP-IDF 42 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
(5) Verificați componentele care trebuie instalate, așa cum se arată în Figura 4.8. Se recomandă utilizarea opțiunii implicite, adică finalizarea instalării, apoi faceți clic pe „Următorul”.
Figura 4.8. Selectați componentele de instalat (6) Confirmați componentele care urmează să fie instalate și faceți clic pe „Instalare” pentru a porni instalarea automată.
procesul de instalare, așa cum se arată în Figura 4.9. Procesul de instalare poate dura zeci de minute, iar bara de progres a procesului de instalare este prezentată în Figura 4.10. Vă rugăm să așteptați cu răbdare.
Figura 4.9. Pregătirea pentru instalare (7) După finalizarea instalării, se recomandă să bifați „Înregistrați ESP-IDF
Instrumente executabile ca excluderi Windows Defender...” pentru a preveni ștergerea software-ului antivirus files. Adăugarea de elemente de excludere poate sări peste scanările frecvente de către antivirus
Capitolul 4. Configurarea mediului de dezvoltare 43
Figura 4.10. Software-ul de bară de progres de instalare, îmbunătățind considerabil eficiența de compilare a codului a sistemului Windows. Faceți clic pe „Finalizare” pentru a finaliza instalarea mediului de dezvoltare, așa cum se arată în Figura 4.11. Puteți alege să bifați „Runați mediul ESP-IDF PowerShell” sau „Rulați linia de comandă ESP-IDF”. Rulați fereastra de compilare direct după instalare pentru a vă asigura că mediul de dezvoltare funcționează normal.
Figura 4.11. Instalare finalizată (8) Deschideți mediul de dezvoltare instalat în lista de programe (fie ESP-IDF 4.3
Terminalul PowerShell CMD sau ESP-IDF 4.3, așa cum se arată în Figura 4.12), și variabila de mediu ESP-IDF vor fi adăugate automat când rulează în terminal. După aceea, puteți utiliza comanda idf.py pentru operații. CMD-ul ESP-IDF 4.3 deschis este prezentat în Figura 4.13. 44 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Figura 4.12. Mediu de dezvoltare instalat
Figura 4.13. ESP-IDF 4.3 CMD
4.2.3 Configurarea mediului de dezvoltare ESP-IDF pe Mac
Procesul de instalare a mediului de dezvoltare ESP-IDF pe un sistem Mac este același cu cel pe un sistem Linux. Comenzile pentru descărcarea codului de depozit și instalarea lanțului de instrumente sunt exact aceleași. Doar comenzile pentru instalarea pachetelor de dependență sunt ușor diferite. 1. Instalați pachete de dependență Deschideți un terminal și instalați pip, instrumentul de gestionare a pachetelor Python, rulând următoarea comandă:
% sudo easy install pip
Instalați Homebrew, un instrument de gestionare a pachetelor pentru macOS, rulând următoarea comandă:
% /bin/bash -c „$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Instalați pachetele de dependență necesare executând următoarea comandă:
% brew python3 instalează cmake ninja ccache dfu-util
2. Descărcați codul de depozit ESP-IDF Urmați instrucțiunile furnizate în secțiunea 4.2.1 pentru a descărca codul de depozit ESP-IDF. Pașii sunt aceiași ca și pentru descărcarea pe un sistem Linux.
Capitolul 4. Configurarea mediului de dezvoltare 45
3. Instalați lanțul de instrumente de dezvoltare ESP-IDF
Urmați instrucțiunile furnizate în secțiunea 4.2.1 pentru a instala lanțul de instrumente de dezvoltare ESP-IDF. Pașii sunt aceiași ca și pentru instalarea pe un sistem Linux.
4.2.4 Instalarea VS Code
În mod implicit, SDK-ul ESP-IDF nu include un instrument de editare a codului (deși cel mai recent program de instalare ESP-IDF pentru Windows oferă opțiunea de a instala ESP-IDF Eclipse). Puteți utiliza orice instrument de editare a textului la alegere pentru a edita codul și apoi a-l compila folosind comenzile terminalului.
Un instrument popular de editare a codului este VS Code (Visual Studio Code), care este un editor de cod gratuit și bogat în funcții, cu o interfață ușor de utilizat. Oferă diverse plugins care oferă funcționalități precum navigarea codului, evidențierea sintaxelor, controlul versiunii Git și integrarea terminalului. În plus, Espressif a dezvoltat un plugin dedicat numit Espressif IDF pentru VS Code, care simplifică configurarea și depanarea proiectului.
Puteți folosi comanda de cod din terminal pentru a deschide rapid folderul curent în VS Code. Alternativ, puteți utiliza comanda rapidă Ctrl+ pentru a deschide consola terminală implicită a sistemului în VS Code.
SFATURI Se recomandă utilizarea VS Code pentru dezvoltarea codului ESP32-C3. Descărcați și instalați cea mai recentă versiune de VS Code la https://code.visualstudio.com/.
4.2.5 Introducere în mediile de dezvoltare terță parte
Pe lângă mediul oficial de dezvoltare ESP-IDF, care utilizează în principal limbajul C, ESP32-C3 acceptă și alte limbaje de programare obișnuite și o gamă largă de medii de dezvoltare terță parte. Unele opțiuni notabile includ:
Arduino: o platformă open-source atât pentru hardware cât și pentru software, care acceptă diverse microcontrolere, inclusiv ESP32-C3.
Folosește limbajul C++ și oferă un API simplificat și standardizat, denumit în mod obișnuit limbajul Arduino. Arduino este utilizat pe scară largă în dezvoltarea de prototipuri și în contexte educaționale. Oferă un pachet software extensibil și un IDE care permite compilarea și intermiterea ușoară.
MicroPython: un interpret de limbaj Python 3 conceput pentru a rula pe platforme de microcontrolere încorporate.
Cu un limbaj de script simplu, poate accesa direct resursele periferice ale ESP32-C3 (cum ar fi UART, SPI și I2C) și funcțiile de comunicare (cum ar fi Wi-Fi și Bluetooth LE).
46 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
Acest lucru simplifică interacțiunea hardware. MicroPython, combinat cu biblioteca extinsă de operații matematice a lui Python, permite implementarea algoritmilor complecși pe ESP32-C3, facilitând dezvoltarea aplicațiilor legate de AI. Ca limbaj de script, nu este nevoie de compilare repetată; pot fi făcute modificări și scripturile pot fi executate direct.
NodeMCU: un interpret de limbaj LUA dezvoltat pentru cipurile din seria ESP.
Acceptă aproape toate funcțiile periferice ale cipurilor ESP și este mai ușor decât MicroPython. Similar cu MicroPython, NodeMCU utilizează un limbaj de script, eliminând nevoia de compilare repetată.
În plus, ESP32-C3 acceptă și sistemele de operare NuttX și Zephyr. NuttX este un sistem de operare în timp real care oferă interfețe compatibile cu POSIX, îmbunătățind portabilitatea aplicațiilor. Zephyr este un mic sistem de operare în timp real conceput special pentru aplicații IoT. Include numeroase biblioteci de software necesare dezvoltării IoT, evoluând treptat într-un ecosistem software cuprinzător.
Această carte nu oferă instrucțiuni detaliate de instalare pentru mediile de dezvoltare menționate mai sus. Puteți instala un mediu de dezvoltare în funcție de cerințele dvs. urmând documentația și instrucțiunile respective.
4.3 Sistemul de compilare ESP-IDF
4.3.1 Concepte de bază ale sistemului de compilare
Un proiect ESP-IDF este o colecție a unui program principal cu o funcție de intrare și mai multe componente funcționale independente. De example, un proiect care controlează comutatoarele LED constă în principal dintr-un program principal și o componentă driver care controlează GPIO. Dacă doriți să realizați telecomanda LED, trebuie să adăugați și Wi-Fi, stiva de protocol TCP/IP etc.
Sistemul de compilare poate compila, lega și genera executabil files (.bin) pentru cod printr-un set de reguli de construire. Sistemul de compilare al ESP-IDF v4.0 și versiunile superioare se bazează implicit pe CMake, iar scriptul de compilare CMakeLists.txt poate fi folosit pentru a controla comportamentul de compilare al codului. Pe lângă suportul pentru sintaxa de bază a CMake, sistemul de compilare ESP-IDF definește și un set de reguli de compilare implicite și funcții CMake și puteți scrie scriptul de compilare cu instrucțiuni simple.
4.3.2 Proiect File Structura
Un proiect este un folder care conține un program de intrare principal, componente definite de utilizator și fileeste necesar pentru a construi aplicații executabile, cum ar fi scripturi de compilare, configurare
Capitolul 4. Configurarea mediului de dezvoltare 47
files, tabele de partiții, etc. Proiectele pot fi copiate și transmise, și același executabil file poate fi compilat și generat în mașini cu aceeași versiune a mediului de dezvoltare ESP-IDF. Un proiect tipic ESP-IDF file structura este prezentată în Figura 4.14.
Figura 4.14. Proiect tipic ESP-IDF file Structura Deoarece ESP-IDF acceptă mai multe cipuri IoT de la Espressif, inclusiv ESP32, seria ESP32-S, seria ESP32-C, seria ESP32-H etc., o țintă trebuie determinată înainte de compilarea codului. Ținta este atât dispozitivul hardware care rulează programul de aplicație, cât și ținta de compilare a sistemului de compilare. În funcție de nevoile dvs., puteți specifica una sau mai multe obiective pentru proiectul dvs. De example, prin comanda idf.py set-target esp32c3, puteți seta ținta de compilare la ESP32-C3, timp în care parametrii impliciti și calea lanțului de instrumente de compilare pentru ESP32C3 vor fi încărcate. După compilare, un program executabil poate fi generat pentru ESP32C3. De asemenea, puteți rula comanda set-target din nou pentru a seta o țintă diferită, iar sistemul de compilare va curăța și reconfigura automat. Componente
Componentele din ESP-IDF sunt unități de cod modulare și independente gestionate în cadrul sistemului de compilare. Acestea sunt organizate ca foldere, cu numele folderului reprezentând numele componentei în mod implicit. Fiecare componentă are propriul script de compilare care 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
specifică parametrii de compilare și dependențele acestuia. În timpul procesului de compilare, componentele sunt compilate în biblioteci statice separate (.a files) și eventual combinate cu alte componente pentru a forma programul de aplicație.
ESP-IDF oferă funcții esențiale, cum ar fi sistemul de operare, driverele periferice și stiva de protocoale de rețea, sub formă de componente. Aceste componente sunt stocate în directorul de componente situat în directorul rădăcină ESP-IDF. Dezvoltatorii nu trebuie să copieze aceste componente în directorul de componente al myProject. În schimb, trebuie doar să specifice relațiile de dependență ale acestor componente în fișierul CMakeLists.txt al proiectului. file folosind directivele REQUIRES sau PRIV_REQUIRES. Sistemul de compilare va localiza și compila automat componentele necesare.
Prin urmare, directorul de componente din myProject nu este necesar. Este folosit doar pentru a include unele componente personalizate ale proiectului, care pot fi biblioteci terțe sau cod definit de utilizator. În plus, componentele pot fi preluate din orice director, altul decât ESP-IDF sau proiectul curent, cum ar fi dintr-un proiect open-source salvat într-un alt director. În acest caz, trebuie doar să adăugați calea componentei setând variabila EXTRA_COMPONENT_DIRS în CMakeLists.txt sub directorul rădăcină. Acest director va suprascrie orice componentă ESP-IDF cu același nume, asigurându-se că este utilizată componenta corectă.
Programul de intrare principal Directorul principal din cadrul proiectului urmează același file structura ca și alte componente (de exemplu, componenta1). Cu toate acestea, are o semnificație deosebită, deoarece este o componentă obligatorie care trebuie să existe în fiecare proiect. Directorul principal conține codul sursă al proiectului și punctul de intrare al programului utilizator, denumit de obicei app_main. În mod implicit, execuția programului utilizator începe din acest punct de intrare. Componenta principală diferă și prin aceea că depinde automat de toate componentele din calea de căutare. Prin urmare, nu este nevoie să indicați în mod explicit dependențele folosind directivele REQUIRES sau PRIV_REQUIRES din CMakeLists.txt file.
Configurare file Directorul rădăcină al proiectului conține o configurație file numit sdkconfig, care conține parametrii de configurare pentru toate componentele din proiect. sdkconfig file este generat automat de sistemul de compilare și poate fi modificat și regenerat prin comanda idf.py menuconfig. Opțiunile menuconfig provin în principal din Kconfig.projbuild-ul proiectului și Kconfig-ul componentelor. Dezvoltatorii de componente adaugă în general elemente de configurare în Kconfig pentru a face componenta flexibilă și configurabilă.
Director de compilare În mod implicit, directorul de compilare din proiect stochează intermediar files și fi-
Capitolul 4. Configurarea mediului de dezvoltare 49
programe executabile finale generate de comanda de compilare idf.py. În general, nu este necesar să accesați direct conținutul directorului de compilare. ESP-IDF oferă comenzi predefinite pentru a interacționa cu directorul, cum ar fi utilizarea comenzii flash idf.py pentru a localiza automat binarul compilat file și flash-o la adresa flash specificată sau folosind comanda idf.py fullclean pentru a curăța întregul director de compilare.
Tabel de partiții (partitions.csv) Fiecare proiect necesită un tabel de partiții pentru a împărți spațiul flash și pentru a specifica dimensiunea și adresa de pornire a programului executabil și spațiul de date utilizator. Comanda idf.py flash sau programul de upgrade OTA va flash firmware-ul la adresa corespunzătoare conform acestui tabel. ESP-IDF oferă mai multe tabele de partiții implicite în componente/partition_table, cum ar fi partitions_singleapp.csv și partitions_two_ota.csv, care pot fi selectate în menuconfig.
Dacă tabelul de partiții implicit al sistemului nu poate îndeplini cerințele proiectului, un partitions.csv personalizat poate fi adăugat în directorul proiectului și selectat în menuconfig.
4.3.3 Regulile de compilare implicite ale sistemului de compilare
Reguli pentru înlocuirea componentelor cu același nume În timpul procesului de căutare a componentelor, sistemul de compilare urmează o anumită ordine. Mai întâi caută componentele interne ale ESP-IDF, apoi caută componente ale proiectului utilizatorului și, în final, caută componente în EXTRA_COMPONENT_DIRS. În cazurile în care mai multe directoare conțin componente cu același nume, componenta găsită în ultimul director va suprascrie orice componente anterioare cu același nume. Această regulă permite personalizarea componentelor ESP-IDF în cadrul proiectului utilizatorului, păstrând în același timp intact codul ESP-IDF original.
Reguli pentru includerea implicită a componentelor comune După cum sa menționat în secțiunea 4.3.2, componentele trebuie să specifice în mod explicit dependențele lor de alte componente în CMakeLists.txt. Cu toate acestea, componentele comune, cum ar fi freertos, sunt incluse automat în sistemul de compilare în mod implicit, chiar dacă relațiile lor de dependență nu sunt definite în mod explicit în scriptul de compilare. Componentele comune ESP-IDF includ freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv și cxx. Utilizarea acestor componente comune evită munca repetitivă la scrierea CMakeLists.txt și îl face mai concis.
Reguli pentru suprascrierea elementelor de configurare Dezvoltatorii pot adăuga parametri de configurare impliciti adăugând o configurație implicită file numit sdkconfig.defaults pentru proiect. De exampfișier, adăugând CONFIG_LOG_
50 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
DEFAULT_LEVEL_NONE = puteți configura interfața UART să nu imprime datele de jurnal în mod implicit. În plus, dacă trebuie setați parametri specifici pentru o anumită țintă, o configurație file numit sdkconfig.defaults.TARGET_NAME poate fi adăugat, unde TARGET_NAME poate fi esp32s2, esp32c3 și așa mai departe. Aceste configurații files-urile sunt importate în sdkconfig în timpul compilării, cu configurația generală implicită file sdkconfig.defaults fiind importat mai întâi, urmat de configurația specifică țintei file, cum ar fi sdkconfig.defaults.esp32c3. În cazurile în care există elemente de configurare cu același nume, configurația din urmă file va trece peste primul.
4.3.4 Introducere în Scriptul de compilare
Când dezvoltă un proiect folosind ESP-IDF, dezvoltatorii nu trebuie doar să scrie cod sursă, ci și să scrie CMakeLists.txt pentru proiect și componente. CMakeLists.txt este un text file, cunoscut și ca script de compilare, care definește o serie de obiecte de compilare, elemente de configurare a compilației și comenzi pentru a ghida procesul de compilare a codului sursă. Sistemul de compilare al ESP-IDF v4.3.2 se bazează pe CMake. Pe lângă faptul că acceptă funcțiile și comenzile native CMake, definește și o serie de funcții personalizate, ceea ce face mult mai ușor să scrieți scripturi de compilare.
Scripturile de compilare din ESP-IDF includ în principal scriptul de compilare a proiectului și scripturile de compilare ale componentelor. CMakeLists.txt din directorul rădăcină al proiectului se numește script de compilare a proiectului, care ghidează procesul de compilare a întregului proiect. Un script de compilare de proiect de bază include de obicei următoarele trei linii:
1. cmake_minimum_required(VERSIUNEA 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. proiect(myProject)
Printre acestea, cmake_minimum_required (VERSIUNEA 3.5) trebuie plasat pe prima linie, care este folosită pentru a indica numărul minim de versiune CMake cerut de proiect. Versiunile mai noi de CMake sunt, în general, compatibile cu versiunile mai vechi, așa că ajustați numărul versiunii în consecință atunci când utilizați comenzi CMake mai noi pentru a asigura compatibilitatea.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) importă elemente de configurare predefinite și comenzi ale sistemului de compilare ESP-IDF, inclusiv regulile implicite de compilare ale sistemului de compilare descrise în Secțiunea 4.3.3. project(myProject) creează proiectul în sine și specifică numele acestuia. Acest nume va fi folosit ca binar final de ieșire file nume, adică myProject.elf și myProject.bin.
Un proiect poate avea mai multe componente, inclusiv componenta principală. Directorul de nivel superior al fiecărei componente conține un CMakeLists.txt file, care se numește script de compilare a componentelor. Scripturile de compilare a componentelor sunt utilizate în principal pentru a specifica dependențele componentelor, parametrii de configurare, codul sursă files și antetul inclus files pentru
Capitolul 4. Configurarea mediului de dezvoltare 51
compilare. Cu funcția personalizată idf_component_register a ESP-IDF, codul minim necesar pentru un script de compilare a componentelor este următorul:
1. idf_component_register(SRCS „src1.c”
2.
INCLUDE_DIRS „include”
3.
NECESITA componenta1)
Parametrul SRCS oferă o listă de surse files din componentă, separate prin spații dacă sunt multiple files. Parametrul INCLUDE_DIRS oferă o listă de antet publice file directoarele pentru componentă, care vor fi adăugate la calea de căutare include pentru alte componente care depind de componenta curentă. Parametrul REQUIRES identifică dependențele componentelor publice pentru componenta curentă. Este necesar ca componentele să precizeze în mod explicit de ce componente depind, cum ar fi componenta2 în funcție de componenta1. Cu toate acestea, pentru componenta principală, care depinde implicit de toate componentele, parametrul REQUIRES poate fi omis.
În plus, comenzile native CMake pot fi folosite și în scriptul de compilare. De example, utilizați comanda set pentru a seta variabile, cum ar fi set(VARIABLE „VALUE”).
4.3.5 Introducere în comenzile comune
ESP-IDF folosește CMake (instrument de configurare a proiectului), Ninja (instrument de construire a proiectelor) și esptool (instrument flash) în procesul de compilare a codului. Fiecare instrument joacă un rol diferit în procesul de compilare, creare și flash și, de asemenea, acceptă diferite comenzi de operare. Pentru a facilita operarea utilizatorului, ESP-IDF adaugă un front-end idf.py unificat care permite apelarea rapidă a comenzilor de mai sus.
Înainte de a utiliza idf.py, asigurați-vă că:
· Variabila de mediu IDF_PATH a ESP-IDF a fost adăugată la terminalul curent. · Directorul de execuție a comenzii este directorul rădăcină al proiectului, care include
script de compilare a proiectului CMakeLists.txt.
Comenzile comune ale idf.py sunt următoarele:
· idf.py –help: afișarea unei liste de comenzi și instrucțiuni de utilizare a acestora. · idf.py set-target : setarea compilației taidf.py fullcleanrget, așa
ca înlocuitor cu esp32c3. · idf.py menuconfig: lansarea menuconfig, o configurație grafică a terminalului
instrument, care poate selecta sau modifica opțiunile de configurare, iar rezultatele configurării sunt salvate în sdkconfig file. · idf.py build: inițierea compilarii codului. Intermediarul files și programul executabil final generat de compilare va fi salvat în directorul de compilare al proiectului în mod implicit. Procesul de compilare este incremental, ceea ce înseamnă că dacă o singură sursă file este modificat, doar modificat file va fi compilat data viitoare.
52 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
· idf.py clean: curățarea intermediarului files generate de compilarea proiectului. Întregul proiect va fi forțat să fie compilat în următoarea compilație. Rețineți că configurația CMake și modificările de configurare făcute de menuconfig nu vor fi șterse în timpul curățării.
· idf.py fullclean: ștergerea întregului director de compilare, inclusiv toate rezultatele de configurare CMake files. Când construiți din nou proiectul, CMake va configura proiectul de la zero. Vă rugăm să rețineți că această comandă le va șterge recursiv pe toate files în directorul de compilare, deci folosiți-l cu precauție și configurația proiectului file nu va fi sters.
· idf.py flash: intermiterea programului binar executabil file generat de construirea la țintă ESP32-C3. Opțiunile -p și -b sunt folosite pentru a seta numele dispozitivului portului serial și, respectiv, rata de baud pentru clipire. Dacă aceste două opțiuni nu sunt specificate, portul serial va fi detectat automat și va fi utilizată rata de transmisie implicită.
· monitor idf.py: afișează ieșirea portului serial al ESP32-C3 țintă. Opțiunea -p poate fi utilizată pentru a specifica numele dispozitivului portului serial de pe partea gazdă. În timpul imprimării portului serial, apăsați combinația de taste Ctrl+] pentru a ieși din monitor.
Comenzile de mai sus pot fi, de asemenea, combinate după cum este necesar. De example, comanda idf.py build flash monitor va efectua compilarea codului, flash și deschide monitorul portului serial în secvență.
Puteți vizita https://bookc3.espressif.com/build-system pentru a afla mai multe despre sistemul de compilare ESP-IDF.
4.4 Practică: Compilarea ExampProgramul „Blink”
4.4.1 Example Analiza
Această secțiune va lua programul Blink ca example pentru a analiza file structura și regulile de codificare ale unui proiect real în detaliu. Programul Blink implementează efectul de clipire a LED-ului, iar proiectul se află în directorul examples/get-started/blink, care conține o sursă file, configurație files și mai multe scripturi de compilare.
Proiectul de lumină inteligentă introdus în această carte se bazează pe acest exampprogramul. Funcțiile vor fi adăugate treptat în capitolele ulterioare pentru a le finaliza în sfârșit.
Cod sursă Pentru a demonstra întregul proces de dezvoltare, programul Blink a fost copiat în esp32c3-iot-projects/device firmware/1 blink.
Structura de directoare a proiectului blink files este prezentat în Figura 4.15.
Proiectul blink conține un singur director principal, care este o componentă specială care
Capitolul 4. Configurarea mediului de dezvoltare 53
Figura 4.15. File structura de directoare a proiectului blink
trebuie incluse așa cum este descris în secțiunea 4.3.2. Directorul principal este folosit în principal pentru a stoca implementarea funcției app_main(), care este punctul de intrare în programul utilizatorului. Proiectul blink nu include directorul de componente, deoarece acest ex.amptrebuie să utilizeze doar componentele care vin cu ESP-IDF și nu necesită componente suplimentare. CMakeLists.txt inclus în proiectul blink este folosit pentru a ghida procesul de compilare, în timp ce Kconfig.projbuild este folosit pentru a adăuga elemente de configurare pentru acest exampprogramul în menuconfig. Altele inutile files nu va afecta compilarea codului, deci nu vor fi discutate aici. O introducere detaliată a proiectului Blink files este după cum urmează.
1. /*blink.c include următorul antet files*/
2. #include
// Antetul bibliotecii standard C file
3. #include „freertos/freeRTOS.h” //FreeRTOS antetul principal file
4. #include „freeertos/task.h”
// Antetul sarcinii FreeRTOS file
5. #include „sdkconfig.h”
// Antetul de configurare file generat de kconfig
6. #include „driver/gpio.h”
// Antetul driverului GPIO file
Sursa file blink.c conține o serie de antet files corespunzătoare declarației funcției-
țiuni. ESP-IDF urmează în general ordinea includerii antetului bibliotecii standard files, FreeR-
Antetul TOS files, antet șofer files, antetul altor componente files și antetul proiectului files.
Ordinea în care antetul filesunt incluse pot afecta rezultatul final al compilației, așa că încercați
urmați regulile implicite. Trebuie remarcat faptul că sdkconfig.h este generat automat
de kconfig și poate fi configurat numai prin comanda idf.py menuconfig.
Modificarea directă a acestui antet file va fi suprascris.
1. /*Puteți selecta GPIO-ul corespunzător LED-ului din idf.py menuconfig, iar rezultatul modificării menuconfig este că valoarea CONFIG_BLINK
_GPIO va fi schimbat. De asemenea, puteți modifica direct definiția macrocomenzii
aici și schimbați CONFIG_BLINK_GPIO la o valoare fixă.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Configurați IO ca funcție implicită GPIO, activați modul pull-up și
6.
dezactivați modurile de intrare și ieșire*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Aventura fără fir: un ghid cuprinzător pentru IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Setați GPIO în modul de ieșire*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); în timp ce(1) {
/*Print log*/ printf(„Oprirea LED-ului”); /*Opriți LED-ul (nivel scăzut de ieșire)*/ gpio_set_level(BLINK_GPIO, 0); /*Întârziere (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(„Pornirea LED-ului”); /*Porniți LED-ul (ieșire nivel înalt)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Funcția app_main() din Blink exampprogramul servește ca punct de intrare pentru programele utilizatorului. Este o funcție simplă, fără parametri și fără valoare returnată. Această funcție este apelată după ce sistemul a finalizat inițializarea, care include sarcini precum inițializarea portului serial de jurnal, configurarea unui singur/dual core și configurarea watchdog-ului.
Funcția app_main() rulează în contextul unei sarcini numite main. Dimensiunea stivei și prioritatea acestei sarcini pot fi ajustate în menuconfig Componentconfig Common ESP legat de.
Pentru sarcini simple, cum ar fi clipirea unui LED, tot codul necesar poate fi implementat direct în funcția app_main(). Acest lucru implică de obicei inițializarea GPIO-ului corespunzător LED-ului și utilizarea unei bucle while(1) pentru a comuta LED-ul aprins și oprit. Alternativ, puteți utiliza FreeRTOS API pentru a crea o nouă sarcină care să gestioneze clipirea LED-ului. Odată ce noua sarcină este creată cu succes, puteți ieși din funcția app_main().
Conținutul main/CMakeLists.txt file, care ghidează procesul de compilare pentru componenta principală, este după cum urmează:
1. idf_component_register(SRCS „blink.c” INCLUDE_DIRS „.” )
Printre acestea, main/CMakeLists.txt apelează doar o funcție de sistem de compilare, adică idf_component_register. Similar cu CMakeLists.txt pentru majoritatea celorlalte componente, blink.c este adăugat la SRCS, iar sursa files-urile adăugate la SRCS vor fi compilate. În același timp, „.”, care reprezintă calea în care se află CMakeLists.txt, ar trebui adăugat la INCLUDE_DIRS ca directoare de căutare pentru antet files. Conținutul CMakeLists.txt este următorul:
1. #Specificați v3.5 ca cea mai veche versiune CMake suportată de proiectul curent 2. #Versiunile mai mici decât v3.5 trebuie să fie actualizate înainte ca compilarea să continue 3. cmake_minimum_required(VERSIUNEA 3.5) 4. #Includeți configurația implicită CMake a ESP -sistem de compilare IDF
Capitolul 4. Configurarea mediului de dezvoltare 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Creează un proiect numit „blink” 7. project(myProject)
Printre acestea, CMakeLists.txt din directorul rădăcină include în principal $ENV{IDF_ PATH}/tools/cmake/project.cmake, care este configurația principală CMake file furnizate de ESP-IDF. Este folosit pentru a con
Documente/Resurse
![]() |
Espressif Systems ESP32-C3 Wireless Adventure [pdfGhid de utilizare ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |