Aventure sans fil ESP32-C3
Aventure sans fil ESP32-C3
Una guida cumpleta per l'IoT
Espressif Systems 12 di ghjugnu 2023
Specificazioni
- Pruduttu: ESP32-C3 Wireless Adventure
- Produttore: Espressif Systems
- Data : 12 di ghjugnu 2023
Istruzzioni per l'usu di u produttu
Preparazione
Prima di utilizà l'ESP32-C3 Wireless Adventure, assicuratevi di esse
familiarizatu cù i cuncetti è l'architettura di l'IoT. Questu aiuterà
capisce cumu u dispusitivu si mette in l'ecosistema IoT più grande
è e so putenziali applicazioni in case intelligenti.
Introduzione è Pratica di Prughjetti IoT
In questa sezione, amparate nantu à i prughjetti tipici IoT,
cumpresi i moduli basi per i dispositi IoT cumuni, i moduli basi
di l'applicazioni cliente, è e piattaforme cumune di nuvola IoT. Questu vuluntà
vi furnisce un fundamentu per capiscenu è creà u vostru
propri prughjetti IoT.
Pràtica: Prughjettu Smart Light
In stu prughjettu di pratica, vi amparà à creà un smart
lumière grâce à l'ESP32-C3 Wireless Adventure. A struttura di u prugettu,
funzioni, preparazione hardware, è prucessu di sviluppu sarà
spiegatu in detail.
Struttura di u prugettu
U prugettu hè custituitu da parechji cumpunenti, cumpresu
ESP32-C3 Wireless Adventure, LED, sensori è un nuvulu
backend.
Funzioni di prughjettu
U prughjettu di luce intelligente permette di cuntrullà a luminosità è
culore di i LED remotamente attraversu una app mobile o web
interfaccia.
Preparazione Hardware
Per appruntà u prugettu, vi tuccherà à cullà u
cumpunenti hardware necessarii, cum'è ESP32-C3 Wireless
Tavola d'avventura, LED, resistori, è un alimentatore.
Prucessu di sviluppu
U prucessu di sviluppu implica a creazione di u sviluppu
ambiente, scrittura codice à cuntrullà i LEDs, culligamentu à u
backend nuvola, è pruvà a funziunalità di u smart
luce.
Introduzione à ESP RainMaker
ESP RainMaker hè un framework putente per sviluppà IoT
dispusitivi. In questa sezione, amparate ciò chì ESP RainMaker hè è
cumu pò esse implementatu in i vostri prughjetti.
Cosa hè ESP RainMaker?
ESP RainMaker hè una piattaforma basata in nuvola chì furnisce un set di
Strumenti è servizii per custruisce è gestisce i dispositi IoT.
L'implementazione di ESP RainMaker
Questa sezione spiega i diversi cumpunenti implicati
l'implementazione di ESP RainMaker, cumpresu u serviziu di reclamazione,
Agente RainMaker, backend cloud, è Client RainMaker.
Pràtica: Punti chjave per u Sviluppu cù ESP RainMaker
In questa sezione di pratica, amparate nantu à i punti chjave
cunzidira quandu si sviluppa cù ESP RainMaker. Stu include u dispusitivu
reclamazione, sincronizazione di dati è gestione di l'utilizatori.
Funzioni di ESP RainMaker
ESP RainMaker offre diverse funzioni per a gestione di l'utilizatori, fine
utilizatori, è amministratori. Queste caratteristiche permettenu un dispositivu faciule
setup, cuntrollu remota, è surviglianza.
Stabbilimentu di l'ambiente di sviluppu
Questa sezione furnisce un sopraview di ESP-IDF (Espressif IoT
Framework di sviluppu), chì hè u quadru ufficiale di sviluppu
per i dispositi basati in ESP32. Spiega e diverse versioni di
ESP-IDF è cumu stabilisce l'ambiente di sviluppu.
Sviluppu di Hardware è Driver
Disegnu Hardware di Smart Light Products basatu annantu à ESP32-C3
Questa sezione si focalizeghja nantu à u disignu hardware di luci intelligenti
prudutti basati nantu à l'ESP32-C3 Wireless Adventure. Copre u
funziunalità è cumpusizioni di i prudutti luce inteligente, oltri a lu
disignu hardware di u sistema core ESP32-C3.
Funzioni è cumpusizioni di i prudutti Smart Light
Sta subsezzione spiega e caratteristiche è cumpunenti chì facenu
i prudutti di luci intelligenti. Discute e diverse funziunalità
è considerazioni di design per creà luci intelligenti.
Disegnu Hardware di u Sistema Core ESP32-C3
U disignu hardware di u sistema core ESP32-C3 include u putere
supply, sequenza di accensione, reset di u sistema, flash SPI, fonte di clock,
e considerazioni RF è antenna. Questa subsezzione furnisce
infurmazione dettagliata nantu à questi aspetti.
FAQ
Q: Cosa hè ESP RainMaker?
A: ESP RainMaker hè una piattaforma basata in nuvola chì furnisce strumenti
è servizii per custruisce è gestisce i dispositi IoT. Si simplifica
u prucessu di sviluppu è permette di stallazione dispusitivu faciuli, luntani
cuntrollu, è surviglianza.
Q: Cumu possu stabilisce l'ambiente di sviluppu per
ESP32-C3?
A: Per stabilisce l'ambiente di sviluppu per ESP32-C3, avete bisognu
per installà ESP-IDF (Espressif IoT Development Framework) è
cunfigurallu secondu l'istruzzioni furnite. ESP-IDF hè u
quadru ufficiale di sviluppu per i dispositi basati in ESP32.
Q: Chì sò e caratteristiche di ESP RainMaker?
A: ESP RainMaker offre diverse funzioni, cumpresu l'utilizatori
gestione, funzioni di l'utilizatori finali è funzioni di amministratore. Gestione di l'utilizatori
permette di riclamà u dispositivu faciule è a sincronizazione di dati. L'utilizatore finale
funziunalità permette u cuntrollu remota di i dispositi attraversu una app mobile o
web interfaccia. Funzioni di l'amministratore furnisce strumenti per u monitoraghju di u dispositivu
è gestione.
Aventure sans fil ESP32-C3
Una guida cumpleta per l'IoT
Espressif Systems 12 di ghjugnu 2023
Cuntenuti
I Preparazione
1
1 Introduzione à l'IoT
3
1.1 Architettura di IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Applicazione IoT in Smart Homes. . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Introduzione è Pratica di Prughjetti IoT
9
2.1 Introduzione à i Prughjetti IoT tipici. . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Moduli basi per i dispusitivi IoT cumuni . . . . . . . . . . . . . . . . . 9
2.1.2 Moduli basi di Applicazioni Clienti. . . . . . . . . . . . . . . . . . . 10
2.1.3 Introduzione à e Piattaforme Cloud IoT cumuni . . . . . . . . . . . . . . 11
2.2 Pràtica: Prughjettu Smart Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Struttura di u prugettu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Funzioni di prughjettu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Preparazione Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Prucessu di sviluppu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Introduzione à ESP RainMaker
19
3.1 Cosa hè ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 L'implementazione di ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Serviziu di reclamazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Agente RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Client RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Pràtica: Punti chjave per u Sviluppu cù ESP RainMaker. . . . . . . . . . . . 25
3.4 Funzioni di ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Gestione d'utilizatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Funzioni di l'Usuariu Finale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Funzioni di l'amministratore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Stabbilimentu di l'ambiente di sviluppu
31
4.1 ESP-IDF Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Versioni ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 ESP-IDF Git Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Scelta di una versione adatta . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Overview di ESP-IDF SDK Directory . . . . . . . . . . . . . . . . . . . . 34 4.2 Configurazione di l'ambiente di sviluppu ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Configurazione di l'ambiente di sviluppu ESP-IDF in Linux . . . . . . . . 38 4.2.2 Configurazione di l'ambiente di sviluppu ESP-IDF in Windows . . . . . . 40 4.2.3 Configurazione di l'ambiente di sviluppu ESP-IDF in Mac . . . . . . . . . 45 4.2.4 Stallà VS Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Introduzione à l’Ambienti di Sviluppu di Terzi . . . . . . . . 46 4.3 Sistema di compilazione ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Cuncepzioni basi di u Sistema di Cumpilazione . . . . . . . . . . . . . . . . . . 47 4.3.2 Prughjettu File Struttura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Regoli di Custruzzione Predeterminati di u Sistema di Cumpilazione . . . . . . . . . . . . . 50 4.3.4 Introduzione à u Script di compilazione . . . . . . . . . . . . . . . . . . 51 4.3.5 Introduzione à i cumandamenti cumuni . . . . . . . . . . . . . . . . . . . 52 4.4 Pràtica : Cumpilà Esampu prugramma "Blink". . . . . . . . . . . . . . . . . . 53 4.4.1 Esampl'Analisi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Cumpilà u prugramma Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Flashing u prugramma Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Serial Port Log Analysis di u prugramma Blink . . . . . . . . . . . . . . 60 4.5 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Sviluppu Hardware è Driver
65
5 Disegnu di Hardware di Smart Light Products basatu annantu à ESP32-C3
67
5.1 Funzioni è cumpusizioni di i prudutti Smart Light. . . . . . . . . . . . . . . 67
5.2 Disegnu Hardware di u Sistema Core ESP32-C3. . . . . . . . . . . . . . . . . . . 70
5.2.1 Alimentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Sequenza di accensione è Reset di u Sistema. . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Clock Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF è Antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Strapping Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 Controller GPIO è PWM. . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Pràtica: Custruì un Sistema Smart Light cù ESP32-C3. . . . . . . . . . . . . 80
5.3.1 Selezzione di Moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Configurazione di GPIO di signali PWM. . . . . . . . . . . . . . . . . . . . 82
5.3.3 Scaricamentu di Firmware è Debugging Interface . . . . . . . . . . . . 82
5.3.4 Guidelines for RF Design . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Guidelines for Power Supply Design . . . . . . . . . . . . . . . . . . . 86 5.4 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Sviluppu di Driver
87
6.1 Prucessu di Sviluppu di Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 Applicazioni periferiche . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Principi di basa di i driver LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Spazi di culore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Driver LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Dimming LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Introduzione à PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Sviluppu di Driver di Dimming LED. . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Storage Non-Volatile (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 Controller LED PWM (LEDC). . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Programmazione LED PWM. . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Pràtica: Adding Drivers à Smart Light Project. . . . . . . . . . . . . . . . . 103
6.5.1 Driver di buttone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Driver di Dimming LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Comunicazione Wireless è Control
109
7 Cunfigurazione Wi-Fi è Cunnessione
111
7.1 Fundamenti di Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Introduzione à u Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evoluzione di IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Cuncepzioni Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Cunnessione Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Fundamenti di Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Introduzione à Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Cuncepzioni Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Cunnessione Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Cunfigurazione di a Rete Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Guida di cunfigurazione di a rete Wi-Fi . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Altri metudi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Programmazione Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Componenti Wi-Fi in ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Eserciziu : Cunnessione Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Eserciziu: Cunnessione Smart Wi-Fi . . . . . . . . . . . . . . . . . . . . . 145
7.5 Pratica: Configurazione Wi-Fi in Smart Light Project. . . . . . . . . . . . . . . 156 7.5.1 Cunnessione Wi-Fi in Smart Light Project . . . . . . . . . . . . . . . . . 156 7.5.2 Cunfigurazione Smart Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Cuntrollu lucale
159
8.1 Introduzione à u cuntrollu lucale . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Applicazione di u cuntrollu lucale . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Avanzatutages di cuntrollu lucale . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Scopre Dispositivi Cuntrullati attraversu Smartphones. . . . . . . . . . 161
8.1.4 A cumunicazione di dati trà smartphones è dispusitivi. . . . . . . . 162
8.2 Metodi cumuni di scuperta lucali . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Trasmissione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Paragone trà Broadcast è Multicast . . . . . . . . . . . . . . 176
8.2.4 Multicast Application Protocol mDNS per a Scuperta Locale. . . . . . . . 176
8.3 Protocolli cumuni di cumunicazione per i Dati Locali. . . . . . . . . . . . . . . 179
8.3.1 Protocolu di cuntrollu di trasmissione (TCP). . . . . . . . . . . . . . . . . . . 179
8.3.2 Protocolu di Trasferimentu HyperText (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 User Datagram Protocol (UDP). . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protocolu d'Applicazione Limitata (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Protocolu Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Riassuntu di Protocolli di cumunicazione di dati. . . . . . . . . . . . . . . 203
8.4 Garanzia di Sicurezza di Dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Introduzione à a Sicurezza di a Strada di Trasportu (TLS) . . . . . . . . . . . . . 207
8.4.2 Introduzione à Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Pràtica: Controllu Locale in Smart Light Project. . . . . . . . . . . . . . . . . . 217
8.5.1 Crià un Servitore di Controlu Locale basatu in Wi-Fi. . . . . . . . . . . . . . . 217
8.5.2 Verificazione di e Funzionalità di cuntrollu Locale cù Scripts. . . . . . . . . . . 221
8.5.3 Creazione di un Servitore di Controlu Locale basatu in Bluetooth. . . . . . . . . . . . 222
8.6 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Cloud Control
225
9.1 Introduzione à u Control Remote . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Nuvola Data Communication Protocols . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 Introduzione MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Principi MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Format di messagiu MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Paraguni di protokollu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Configurazione di MQTT Broker in Linux è Windows . . . . . . . . . . . . 233 9.2.6 Configurazione di Clienti MQTT Basatu nantu à ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Assicurendu a Sicurezza di Dati MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Significatu è Funzione di i Certificati . . . . . . . . . . . . . . . . . . . 237 9.3.2 Generazione di certificati in u locu . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Configurazione di MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Configurazione di u Client MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Pràtica: Control Remote attraversu ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMaker Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Protokollu di cumunicazione Node è Cloud Backend . . . . . . . . . . . 244 9.4.3 Comunicazione trà Cliente è Cloud Backend . . . . . . . . . . . 249 9.4.4 Roles d'Usuariu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Servizi basi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 App RainMaker è Integrazioni di terze parti . . . . . . . . . . . . . . . 262 9.5 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Sviluppu di App per smartphone
269
10.1 Introduzione à u Sviluppu di App per Smartphone. . . . . . . . . . . . . . . . . . 269
10.1.1 Sopraview di Sviluppu di App per Smartphone. . . . . . . . . . . . . . . 270
10.1.2 Struttura di u Prughjettu Android . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Struttura di u Prughjettu iOS . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Ciclu di vita di una attività Android. . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Ciclu di vita di iOS ViewController. . . . . . . . . . . . . . . . . . . . . . 273
10.2 Crià un novu Prughjettu di App per Smartphone . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Preparazione per u Sviluppu Android. . . . . . . . . . . . . . . . . . . 275
10.2.2 Crià un novu prughjettu Android . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Aghjunghje Dipendenze per MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Richiesta di permessu in Android. . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Preparing for iOS Development . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Crià un novu prughjettu iOS. . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Aghjunghje Dipendenze per MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Permission Request in iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analisi di i Requisiti Funziunali di l'App. . . . . . . . . . . . . . . . . . 281
10.3.1 Analisi di i Requisiti Funziunali di u Prughjettu. . . . . . . . . . . . 282
10.3.2 Analisi di i Requisiti di Gestione di l'Usuari. . . . . . . . . . . . . . . 282 10.3.3 Analisi di i Requisiti di Pruvisione di Dispositivi è di Binding . . . . . . . 283 10.3.4 Analisi di i Requisiti Remote-Control . . . . . . . . . . . . . . . . 283 10.3.5 Analisi di i Requisiti di Scheduling . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analisi di i Requisiti di u Centru di l'Usuari . . . . . . . . . . . . . . . . . . 285 10.4 Sviluppu di a gestione di l'utilizatori . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Introduzione à l'API RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Inizià a cumunicazione via Smartphone . . . . . . . . . . . . . . . . 286 10.4.3 Registrazione di u contu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Login à u contu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Sviluppu di Pruvisione di Dispositivi . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Dispositivi di scanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Cunnessu Dispositivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generazione di chjave secrete . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Getting Node ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Dispositivi di Pruvisione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Sviluppu di cuntrollu di i dispositi . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Ubligatoriu di i dispusitivi à i cunti Cloud . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Ottene una Lista di Dispositivi . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Getting Status Device . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Cambia u Status di u Dispositiu . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Sviluppu di Scheduling and User Center . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementazione di Funzione di Scheduling . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementazione di u Centru d'Usuari . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Più API Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Aggiornamentu di firmware è gestione di versione
321
11.1 Actualizazione di u firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Sopraview di tabelle di partizione. . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Prucessu di Boot Firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Sopraview di u Meccanisimu OTA. . . . . . . . . . . . . . . . . . . . . 326
11.2 Gestione di versione di firmware . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Marcatura di u firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Rollback è Anti-Rollback . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Pratica: Over-the-air (OTA) Example . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Aghjurnate u firmware attraversu un host locale. . . . . . . . . . . . . . . . . 332
11.3.2 Aghjurnate u firmware attraversu ESP RainMaker. . . . . . . . . . . . . . . 335
11.4 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimization è Mass Production
343
12 Gestione di l'energia è ottimisazione di bassa putenza
345
12.1 ESP32-C3 Gestione di l'energia . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Scaling di Frequenza Dinamica . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Configurazione di a gestione di l'energia . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Modu di bassa putenza. . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modem-sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Modu di sonnu di luce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Modu di sonnu prufondu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Cunsumu currente in diversi modi di putenza. . . . . . . . . . . . . 358
12.3 Gestione di l'energia è Debugging Low-Power. . . . . . . . . . . . . . . . . 359
12.3.1 Debugging di log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Debugging GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Pràtica: Gestione di l'energia in Smart Light Project. . . . . . . . . . . . . . . 363
12.4.1 Configurazione di a funzione di gestione di l'energia. . . . . . . . . . . . . . . . . 364
12.4.2 Aduprà i serratura di gestione di l'energia. . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Verifying Power Consumption . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Funzioni di sicurezza di u dispositivu rinfurzata
369
13.1 Sopraview di Sicurezza di Dati di i Dispositivi IoT. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Perchè Securing Data Device IoT? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Requisiti basi per a sicurezza di dati di i dispositi IoT. . . . . . . . . . . . 371
13.2 Prutezzione di Integrità di Dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Introduzione à u Metudu di Verificazione di Integrità. . . . . . . . . . . . . . 372
13.2.2 Verificazione di Integrità di Dati di Firmware. . . . . . . . . . . . . . . . . . 373
13.2.3 Esample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Prutezzione di Cunfidenziale di Dati . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Introduzione à a criptografia di dati. . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Introduzione à u Schema di Encryption Flash. . . . . . . . . . . . . . . . . 376
13.3.3 Chiave di criptografia Flash Storage . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Modu di travagliu di Flash Encryption . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Prucessu di criptografia Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Introduzione à a criptografia NVS. . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Esampi file di Flash Encryption è NVS Encryption. . . . . . . . . . . 384
13.4 Prutezzione di legittimità di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Introduzione à a firma digitale . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Sopraview di Secure Boot Scheme. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Introduzione à u Software Secure Boot . . . . . . . . . . . . . . . . . . . 388 13.4.4 Introduzione à Hardware Secure Boot . . . . . . . . . . . . . . . . . . 390 13.4.5 Esamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Pràtica: Funzioni di Sicurezza In a Produzione Massiva . . . . . . . . . . . . . . . . . . 396 13.5.1 Encryption Flash è Secure Boot . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Abilitazione di a criptografia Flash è l'avviamentu sicuru cù l'Arnesi Flash Batch . . 397 13.5.3 Abilitazione Flash Encryption è Secure Boot in Smart Light Project . . . 398 13.6 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Firmware Burning and Testing for Mass Production
399
14.1 Firmware Burning in Mass Production . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definizione di partizioni di dati . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Firmware Burning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Pruduzzione Mass Production . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Pràtica: Dati di Produzione Massiana in Smart Light Project. . . . . . . . . . . . . 404
14.4 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Piattaforma di Monitoraghju Remote
405
15.1 Introduzione à ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Cumincià cù ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Accuminciari cù ESP Insights in u Prughjettu esp-insights. . . . . . 409
15.2.2 Corsa Esample in u prughjettu esp-insights. . . . . . . . . . . . . . . 411
15.2.3 Reporting Coredump Information . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Customizing Logs of Interest . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Reporting Reboot Reason . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Reporting Metrics Personalizati . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Pràtica: Utilizà ESP Insights in Smart Light Project. . . . . . . . . . . . . . . 416
15.4 Riassuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Introduzione
ESP32-C3 hè un SoC microcontroller Wi-Fi unicu core è Bluetooth 5 (LE), basatu annantu à l'architettura open-source RISC-V. Aghjunghje l'equilibriu ghjusta di putenza, capacità I/O è sicurità, offrendu cusì a suluzione ottima di costu-efficace per i dispositi cunnessi. Per mostrà diverse applicazioni di a famiglia ESP32-C3, stu libru di Espressif vi purterà in un viaghju interessante attraversu AIoT, partendu da i principii di u sviluppu di u prughjettu IoT è a cunfigurazione di l'ambiente à l'esempi pratichi.amples. I primi quattru capituli parlanu di IoT, ESP RainMaker è ESP-IDF. Capitu 5 è 6 brevi nantu à u disignu di hardware è u sviluppu di i driver. Cum'è vo prugressu, voi Mulateri Di L'scopre cumu cunfigurà u vostru prughjettu attraversu rete Wi-Fi è Apps tilatica. Infine, amparate à ottimisà u vostru prughjettu è mette in produzzione di massa.
Sè site un ingegnere in campi cunnessi, un architettu di software, un maestru, un studiente, o qualchissia chì hà un interessu in IoT, stu libru hè per voi.
Pudete scaricà u codice example usatu in stu libru da u situ di Espressif in GitHub. Per l'ultime informazioni nantu à u sviluppu IoT, seguite u nostru contu ufficiale.
Prefazione
Un mondu informatizzante
Riding the wave of Internet, Internet of Things (IoT) hà fattu u so grand debut per diventà un novu tipu d'infrastruttura in l'economia digitale. Per avvicinà a tecnulugia più vicinu à u publicu, Espressif Systems travaglia per a visione chì i sviluppatori di tutti i campi di a vita ponu utilizà l'IoT per risolve alcuni di i prublemi più pressanti di i nostri tempi. Un mondu di "Rete Intelligente di Tutte e Cose" hè ciò chì aspittemu da u futuru.
Cuncepisce i nostri chips face un componente criticu di quella visione. Hè da esse una maratona, chì esige innovazioni constanti contr'à e fruntiere tecnologiche. Da u "Game Changer" ESP8266 à a serie ESP32 chì integra a connettività Wi-Fi è Bluetoothr (LE), seguita da ESP32-S3 dotata di accelerazione AI, Espressif ùn ferma mai di ricerca è di sviluppà prudutti per soluzioni AIoT. Cù u nostru software open-source, cum'è l'IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF, è Device Connectivity Platform ESP RainMaker, avemu creatu un framework indipendente per custruisce applicazioni AIoT.
Da lugliu 2022, e spedizioni cumulative di chipsets IoT d'Espressif anu superatu 800 milioni, leader in u mercatu MCU Wi-Fi è alimentendu un gran numaru di dispositivi cunnessi in u mondu. A ricerca di l'eccellenza face ogni pruduttu Espressif un grande successu per u so altu livellu di integrazione è efficienza di costu. A liberazione di ESP32-C3 marca una tappa significativa di a tecnulugia auto-sviluppata di Espressif. Hè un MCU unicu core, 32-bit, basatu in RISC-V cù 400KB di SRAM, chì pò eseguisce à 160MHz. Hà integratu 2.4 GHz Wi-Fi è Bluetooth 5 (LE) cù un supportu longu. Truva un bellu equilibriu di putenza, capacità I / O, è sicurità, offre cusì a suluzione ottima di costu-efficace per i dispositi cunnessi. Basatu nantu à un ESP32-C3 cusì putente, stu libru hè destinatu à aiutà i lettori à capisce a cunniscenza di l'IoT cù l'illustrazione dettagliata è l'esempiu praticu.amples.
Perchè avemu scrittu stu libru?
Espressif Systems hè più cà una cumpagnia di semiconduttori. Hè ancu una sucietà di piattaforma IoT, chì sempre strive per innovazioni è innovazioni in u campu di a tecnulugia. À u listessu tempu, Espressif hà apertu è hà spartutu u so sistema operatore auto-sviluppatu è u framework di software cù a cumunità, furmendu un ecosistema unicu. L'ingegneri, i produttori è i dilettanti di a tecnulugia sviluppanu attivamente novi applicazioni software basate nantu à i prudutti di Espressif, cumunicanu liberamente è sparte a so sperienza. Pudete vede l'idee affascinanti di i sviluppatori nantu à diverse piattaforme tuttu u tempu, cum'è YouTube è GitHub. A pupularità di i prudutti di Espressif hà stimulatu un numeru crescente di autori chì anu pruduciutu più di 100 libri basati in chipsets Espressif, in più di deci lingue, cumprese l'inglese, cinese, tedescu, francese è giapponese.
Hè u sustegnu è a fiducia di i partenarii di a cumunità chì incuraghjenu l'innuvazione cuntinua di Espressif. "Cercemu di fà i nostri chips, sistemi operativi, frameworks, soluzioni, Cloud, pratiche cummerciale, arnesi, documentazione, scritti, idee, etc., sempre più pertinenti à e risposte chì e persone anu bisognu in i prublemi più pressanti di a vita cuntempuranea. Questa hè a più alta ambizione è bussola morale di Espressif. disse u Signore Teo Swee Ann, Fundatore è CEO di Espressif.
Espressif valorizza a lettura è l'idee. Siccomu l'aghjurnamentu cuntinuu di a tecnulugia IoT pone esigenze più elevate à l'ingegneri, cumu pudemu aiutà più persone à padrone rapidamente chips IoT, sistemi operativi, frameworks di software, schemi di applicazioni è prudutti di servizii di nuvola? Cum'è u dittu, hè megliu insignà à un omu à piscà cà di dà pesciu. In una sessione di brainstorming, ci hè accadutu chì pudemu scrive un libru per risolve sistematicamente a cunniscenza chjave di u sviluppu IoT. L'avemu culpitu, hà riunitu rapidamente un gruppu di ingegneri anziani, è cumminatu l'esperienza di u squadra tecnicu in a prugrammazione integrata, u sviluppu di hardware è software IoT, tutti cuntribuiscenu à a publicazione di stu libru. In u prucessu di scrittura, avemu pruvatu u nostru megliu per esse ughjettivu è ghjustu, spogliatu di u coconu, è utilizate espressioni concisi per dì a cumplessità è l'incantu di l'Internet di e Cose. Avemu riassuntu currettamente e dumande cumuni, riferite à i feedback è i suggerimenti di a cumunità, per risponde chjaramente à e dumande scontri in u prucessu di sviluppu, è furnisce linee di sviluppu IoT pratiche per i tecnichi pertinenti è i decisori.
Struttura di u libru
Stu libru piglia una perspettiva centrata in l'ingegnere è spiega a cunniscenza necessaria per u sviluppu di u prugettu IoT passu per passu. Hè cumpostu di quattru parti, cum'è seguita:
· Preparazione (Capitulu 1): Questa parte introduce l'architettura di l'IoT, u quadru tipicu di u prughjettu IoT, a piattaforma di nuvola ESP RainMakerr, è l'ambienti di sviluppu ESP-IDF, in modu di stabilisce una basa solida per u sviluppu di u prugettu IoT.
· Sviluppu Hardware è Driver (Capitulu 5): Basatu nantu à u chipset ESP6-C32, sta parte elabora nantu à u sistema di hardware minimu è u sviluppu di u driver, è implementa u cuntrollu di dimming, classificazione di culore è cumunicazione wireless.
· Wireless Communication and Control (Capitulu 7): Questa parte spiega u schema di cunfigurazione Wi-Fi intelligente basatu nantu à chip ESP11-C32, protokolli di cuntrollu lucale è nuvola, è cuntrollu lucale è remoto di i dispositi. Fornisce ancu schemi per u sviluppu di app per smartphone, l'aghjurnamentu di firmware è a gestione di versione.
· Optimization and Mass Production (Capitulu 12-15): Questa parte hè destinata à l'applicazioni IoT avanzate, cuncintrate nantu à l'ottimisazione di i prudutti in a gestione di l'energia, l'optimizazione di bassa putenza è a sicurità rinfurzata. Introduce ancu a brucia di firmware è a prova in a produzzione di massa, è cumu diagnosticà u statu di esecuzione è i logs di u firmware di u dispositivu attraversu a piattaforma di monitoraghju remota ESP Insights.
Circa u codice fonte
I lettori ponu eseguisce l'exampi prugrammi in stu libru, sia inserendu u codice manually o usendu u codice fonte chì accumpagna u libru. Avemu enfatizà a cumminazzioni di tiuria è pràtica, è cusì stabilitu una sezione Pratica basatu nantu à u prugettu Smart Light in quasi ogni capitulu. Tutti i codici sò open-source. I lettori sò invitati à scaricà u codice fonte è discutiri in e sezioni relative à stu libru in GitHub è u nostru foru ufficiale esp32.com. U codice open-source di stu libru hè sottumessu à i termini di a Licenza Apache 2.0.
Note de l'auteur
Stu libru hè pruduciutu ufficialmente da Espressif Systems è hè scrittu da l'ingegneri anziani di a cumpagnia. Hè adattatu per i dirigenti è u persunale di R&D in l'industrii ligati à l'IoT, i prufessori è i studienti di i maiori cunnessi, è i dilettanti in u campu di l'Internet di e Cose. Speremu chì stu libru pò serve cum'è un manuale di travagliu, un riferimentu è un libru di lettu, per esse cum'è un bon tutore è amicu.
Mentre compilava stu libru, avemu riferitu à alcuni risultati di ricerca pertinenti di esperti, studiosi è tecnichi in casa è in l'esteru, è avemu fattu u nostru megliu per citalli secondu e norme accademiche. Tuttavia, hè inevitabbile chì ci deve esse omissioni, cusì quì vulemu sprime u nostru profondu rispettu è gratitudine à tutti l'autori pertinenti. Inoltre, avemu citatu l'infurmazioni da Internet, cusì vulemu ringrazià l'autori è l'editori originali è scusemu chì ùn pudemu micca indicà a fonte di ogni infurmazione.
Per pruduce un libru d'alta qualità, avemu urganizatu turni di discussioni internu, è amparatu da i suggerimenti è i feedback di i lettori di prova è l'editori di l'editore. Quì, vulemu ringrazià di novu per u vostru aiutu chì tutti anu cuntribuitu à stu travagliu successu.
Ultimu, ma u più impurtante, grazie à tutti à Espressif chì hà travagliatu cusì dura per a nascita è a popularizazione di i nostri prudutti.
U sviluppu di prughjetti IoT implica una larga gamma di cunniscenze. Limitatu à a durata di u libru, è ancu à u livellu è l'esperienza di l'autore, l'omissioni sò inevitabbili. Dunque, dumandemu gentilmente chì l'esperti è i lettori critichinu è curreghjenu i nostri sbagli. Sì avete qualchì suggerimentu per stu libru, per piacè cuntattateci à book@espressif.com. Aspittemu u vostru feedback.
Cumu aduprà stu libru?
U codice di i prughjetti in stu libru hè statu apertu. Pudete scaricà lu da u nostru repository GitHub è sparte i vostri pinsamenti è dumande nantu à u nostru foru ufficiale. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 In tuttu u libru, ci saranu parti evidenziate cum'è mostra quì sottu.
codice surghjente In stu libru, avemu emphasize a cumminazzioni di tiuria è pràtica, è cusì stabilisce una rùbbrica Pràtica circa u prughjettu Smart Light in quasi ogni capitulu. I passi currispundenti è a pagina fonte seranu marcati trà duie linee chì cumincianu cù u tag codice surghjente.
NOTA / CONSIGLI Questu hè induve pudete truvà qualchì infurmazione critica è ricurdà per debugging successu u vostru prugramma. Seranu marcati trà dui linii grossi chì cumincianu cù u tag NOTA o CONSIGLI.
A maiò parte di i cumandamenti in stu libru sò eseguiti sottu Linux, urdinatu da u caratteru "$". Se u cumandamentu richiede privilegi di superuser per eseguisce, u prompt serà rimpiazzatu da "#". U prompt di cumanda in i sistemi Mac hè "%", cum'è usatu in a Sezione 4.2.3 Installazione di ESP-IDF in Mac.
U testu corpu in stu libru sarà stampatu in Charter, mentri u codice examples, cumpunenti, funzioni, variàbbili, codice file nomi, cartulari di codice, è stringhe seranu in Courier New.
Cumandamenti o testi chì deve esse ingressu da l'utilizatore, è cumandamenti chì ponu esse inseriti pressu u buttone "Enter" seranu stampati in Courier New bold. I logs è i blocchi di codice seranu presentati in scatuli blu chjaru.
ExampLe:
Siconda, utilizate esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py per generà u binariu di partizione NVS. file nantu à l'ospite di sviluppu cù u cumandimu seguitu:
$ 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
Capitulu 1
Introduzione
à
IoT
À a fine di u XXu seculu, cù l'aumentu di e rete di l'informatica è di e tecnulugii di cumunicazione, Internet s'integra rapidamente in a vita di e persone. Cum'è a tecnulugia di l'Internet cuntinueghja à maturà, l'idea di l'Internet of Things (IoT) hè nata. Litteralmente, IoT significa un Internet induve e cose sò cunnessi. Mentre chì l'Internet uriginale rompe i limiti di u spaziu è u tempu è ristretta a distanza trà "persona è persona", IoT face "cose" un participante impurtante, chì avvicina "persone" è "cose". In u futuru prevedibile, l'IoT hà da diventà a forza motrice di l'industria di l'infurmazioni.
Allora, chì hè l'Internet di e Cose?
Hè difficiuli di definisce accuratamente l'Internet di e Cose, postu chì u so significatu è u scopu sò in constante evoluzione. In u 1995, Bill Gates hà purtatu prima l'idea di l'IoT in u so libru The Road Ahead. Simply put, IoT permette à l'uggetti di scambià infurmazioni cù l'altri attraversu Internet. U so scopu ultimu hè di stabilisce un "Internet di tuttu". Questa hè una prima interpretazione di l'IoT, è ancu una fantasia di tecnulugia futura. Trent'anni dopu, cù u rapidu sviluppu di l'ecunumia è a tecnulugia, a fantasia vene in realità. Da i dispositi intelligenti, case intelligenti, cità intelligenti, Internet di Veiculi è dispositivi wearable, à u "metaversu" sustinutu da e tecnulugia IoT, novi cuncetti sò sempre emergenti. In questu capitulu, avemu da principià cù una spiegazione di l'architettura di l'Internet di e Cose, è dopu intruduce l'applicazione IoT più cumuna, a casa intelligente, per aiutà à ottene una comprensione chjara di l'IoT.
1.1 Architettura di IoT
L'Internet di e Cose implica parechje tecnulugia chì anu diverse esigenze di applicazione è forme in diverse industrie. Per sorte a struttura, e tecnulugia chjave è e caratteristiche di l'applicazione di l'IoT, hè necessariu di stabilisce una architettura unificata è un sistema tecnicu standard. In questu libru, l'architettura di l'IoT hè simplicemente divisa in quattru strati: strata di percepzione è cuntrollu, strata di rete, strata di piattaforma è strata di applicazione.
Perception & Control Layer Cum'è l'elementu più basu di l'architettura IoT, u stratu di percepzione è cuntrollu hè u core per realizà a sensazione cumpleta di l'IoT. A so funzione principale hè di cullà, identificà è cuntrullà l'infurmazioni. Hè custituitu da una varietà di dispusitivi cù a capacità di percepzioni,
3
identificazione, cuntrollu è esicuzzioni, è hè rispunsevuli di ritruvà è analizà dati cum'è pruprietà materiale, tendenzi cumportamentu, è statu dispusitivu. In questu modu, IoT vene à ricunnosce u mondu fisicu reale. Inoltre, u stratu hè ancu capaci di cuntrullà u statutu di u dispusitivu.
I dispusitivi più cumuni di sta strata sò diversi sensori, chì ghjucanu un rolu impurtante in a cullizzioni di l'infurmazioni è l'identificazione. I sensori sò cum'è l'organi sensoriali umani, cum'è i sensori fotosensibili uguali à a visione, i sensori acustici à l'audizione, i sensori di gas à l'odore, è i sensori sensibili à a pressione è a temperatura à u toccu. Cù tutti questi "organi sensoriali", l'uggetti diventanu "viventi" è capaci di percepzioni intelligenti, ricunniscenza è manipulazione di u mondu fisicu.
Network Layer A funzione principale di a strata di a rete hè di trasmette l'infurmazioni, cumprese i dati ottenuti da u stratu di percepzione è cuntrollu à u scopu specificatu, è ancu i cumandamenti emessi da a strata di l'applicazione torna à u stratu di percepzione è cuntrollu. Serve cum'è un ponte di cumunicazione impurtante chì cunnetta diverse strati di un sistema IoT. Per stabilisce un mudellu basicu di Internet di e Cose, implica dui passi per integrà l'uggetti in una reta: l'accessu à Internet è a trasmissione per Internet.
L'accessu à Internet Internet permette l'interconnessione trà persone è persone, ma ùn riesce à include e cose in a grande famiglia. Prima di l'avventu di l'IoT, a maiò parte di e cose ùn eranu micca "network-able". Grazie à u sviluppu cuntinuu di a tecnulugia, l'IoT riesce à cunnette e cose à Internet, rializendu cusì l'interconnessione trà "persone è cose", è "cose è cose". Ci hè dui modi cumuni per implementà a cunnessione Internet: l'accessu à a rete cablata è l'accessu à a rete wireless.
I metudi d'accessu à a rete cablata includenu Ethernet, cumunicazione seriale (per esempiu, RS-232, RS-485) è USB, mentre chì l'accessu à a rete wireless dipende da a cumunicazione wireless, chì pò esse divisa in più in a cumunicazione senza filu à corta distanza è a cumunicazione wireless à longu andà.
A cumunicazione wireless à corta distanza include ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) è Identificazione di Frequency Radio (RFID). A cumunicazione wireless à longu andà include Enhanced Machine Type Communication (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, etc.
Trasmissione per Internet Diversi metudi di accessu à Internet portanu à un ligame fisicu di trasmissione di dati. A prossima cosa hè di decide quale protocolu di cumunicazione aduprà per trasmette i dati. In cunfrontu cù i terminali Internet, a maiò parte di i terminali IoT anu attualmente menu menu
4 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
risorse dispunibuli, cum'è a prestazione di trasfurmazioni, a capacità di almacenamento, a tarifa di a rete, etc., cusì hè necessariu di sceglie un protocolu di cumunicazione chì occupa menu risorse in l'applicazioni IoT. Ci hè dui protokolli di cumunicazione chì sò largamente usati oghje: Message Queuing Telemetry Transport (MQTT) è Constrained Application Protocol (CoAP).
Livello di piattaforma U stratu di piattaforma si riferisce principalmente à e plataforme di nuvola IoT. Quandu tutti i terminali IoT sò in rete, i so dati anu da esse aggregati nantu à una piattaforma di nuvola IoT per esse calculati è almacenati. U stratu di a piattaforma supporta principalmente l'applicazioni IoT per facilità l'accessu è a gestione di i dispositi massivi. Cunnette i terminali IoT à a piattaforma di nuvola, raccoglie dati di terminal, è emette cumandamenti à terminali, in modu di implementà u cuntrollu remoto. Cum'è un serviziu intermediu per assignà l'equipaggiu à l'applicazioni di l'industria, a strata di piattaforma ghjoca un rolu di cunnessione in tutta l'architettura IoT, purtendu una logica cummerciale astratta è un mudellu di dati core standardizatu, chì ùn pò micca solu realizà un accessu rapidu di i dispositi, ma ancu furnisce capacità modulari putenti. per risponde à diverse esigenze in scenarii di applicazioni di l'industria. U stratu di a piattaforma include principalmente moduli funziunali cum'è l'accessu à u dispositivu, a gestione di i dispositi, a gestione di a sicurità, a cumunicazione di i missaghji, u funziunamentu di u monitoraghju è u mantenimentu, è l'applicazioni di dati.
· Accessu à u dispositivu, rializendu a cunnessione è a cumunicazione trà i terminali è e plataforme di nuvola IoT.
· Gestione di i dispositi, cumprese funzioni cum'è a creazione di u dispositivu, u mantenimentu di u dispusitivu, a cunversione di dati, a sincronizazione di dati è a distribuzione di i dispositi.
· Gestione di a sicurità, assicurendu a sicurità di a trasmissione di dati IoT da a perspettiva di l'autentificazione di sicurezza è a sicurità di a cumunicazione.
· A cumunicazione di u messagiu, cumpresu trè direzzione di trasmissione, vale à dì, u terminal manda dati à a piattaforma di nuvola IoT, a piattaforma di nuvola IoT manda dati à u latu di u servitore o altre piattaforme di nuvola IoT, è u latu di u servitore cuntrolla remotamente i dispositi IoT.
· Monitoring O&M, chì implica monitoraghju è diagnosi, aghjurnamentu di firmware, debugging in linea, servizii di log, etc.
· Applicazioni di dati, chì implicanu l'almacenamiento, l'analisi è l'applicazione di dati.
Strada di l'applicazione A strata di l'applicazione usa i dati da a strata di a piattaforma per gestisce l'applicazione, filtrà è trasfurmendu cù arnesi cum'è basa di dati è software di analisi. I dati risultanti ponu esse aduprati per l'applicazioni IoT in u mondu reale cum'è l'assistenza sanitaria intelligente, l'agricultura intelligente, e case intelligenti è e cità intelligenti.
Di sicuru, l'architettura di l'IoT pò esse suddivisu in più strati, ma ùn importa quanti strati hè custituitu, u principiu sottumessu ferma essenzialmente u listessu. Amparera
Capitulu 1. Introduzione à IoT 5
circa l'architettura di IoT aiuta à approfondisce a nostra cunniscenza di e tecnulugia IoT è custruisce prughjetti IoT cumplettamente funziunali.
1.2 Applicazione IoT in Smart Homes
IoT hà penetratu in tutti i campi di a vita, è l'applicazione IoT più strettamente ligata à noi hè a casa intelligente. Parechji apparecchi tradiziunali sò avà equipati di unu o più dispositi IoT, è parechje case di novu custruite sò cuncepite cù tecnulugia IoT da u principiu. A Figura 1.1 mostra alcuni dispositivi intelligenti cumuni.
Figura 1.1. Dispositivi intelligenti cumuni di casa U sviluppu di casa intelligente pò esse simpricimenti divisu in smart product stage, scena interconnessione stage è intelligente stage, cum'è mostra in a Figura 1.2.
Figura 1.2. Sviluppu stage di smart home 6 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
U primu stage si tratta di prudutti intelligenti. Differenti da e case tradiziunali, in case intelligenti, i dispositi IoT ricevenu segnali cù sensori, è sò in rete attraversu tecnulugia di cumunicazione wireless cum'è Wi-Fi, Bluetooth LE è ZigBee. L'utilizatori ponu cuntrullà i prudutti intelligenti in una varietà di manere, cum'è l'applicazioni per smartphone, l'assistenti di voce, u cuntrollu intelligente di parlante, etc.tage si focalizeghja nantu à l'interconnessione di scena. In questu stage, i sviluppori ùn sò più cunsiderà cuntrullà u pruduttu unicu intelligente, ma interconnecting dui o più prudutti intelligenti, autumàticu à un certu puntu, è infine furmendu un modu di scena persunalizatu. Per esample, quandu l 'utilizatore pressu ogni buttone modu di scena, i luci, cortini, è climatizzatori sarà automaticamente adattatu à i presets. Di sicuru, ci hè u prerequisite chì a logica di ligame hè prontamente stallata, cumprese e cundizioni di attivazione è l'azzioni di esecutivu. Imagine chì u modu di riscaldamentu di l'aria condizionata hè attivatu quandu a temperatura interna scende sottu à 10 ° C; chì à 7 ore di a matina, a musica hè ghjucata per sveglià l'utilizatore, i cortini intelligenti sò aperti, è a cucina di risu o a tostatrice di pane principia per un socket intelligente; cum'è l'utilizatore si alza è finisci di lavà, u colazione hè digià servita, cusì ùn ci sarà micca ritardu per andà à u travagliu. Quantu hè diventata comoda a nostra vita ! U terzu stage va à intelligenza stage. Cum'è più dispusitivi di casa intelligente sò accessu, cusì sarà i tipi di dati generati. Cù l'aiutu di u cloud computing, big data è intelligenza artificiale, hè cum'è un "cervellu più intelligente" hè statu piantatu in case intelligenti, chì ùn anu più bisognu di cumandamenti frequenti da l'utilizatori. Raccoglienu dati da l'interazzione precedente è amparanu i mudelli di cumportamentu è e preferenze di l'utilizatori, per automatizà l'attività, cumpresu furnisce cunsiglii per a decisione. Attualmente, a maiò parte di e case intelligenti sò in scena interconnessione stage. Cume a rata di penetrazione è l'intelligenza di i prudutti intelligenti aumentanu, i barrieri trà i protokolli di cumunicazione sò stati eliminati. In u futuru, e case intelligenti sò destinate à diventà veramente "intelligenti", cum'è u sistema AI Jarvis in Iron Man, chì ùn pò micca solu aiutà l'utilizatori à cuntrullà diversi dispositi, gestisce l'affari di ogni ghjornu, ma ancu avè un super putere di calculu è capacità di pensamentu. In l'intelligente stage, l'esseri umani riceveranu servizii megliu in quantità è qualità.
Capitulu 1. Introduzione à IoT 7
8 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Capitulu Introduzione è Pràtica di 2 Prughjetti IoT
In u Capitulu 1, avemu introduttu l'architettura di l'IoT, è i roli è l'interrelazioni di u stratu di percepzioni è cuntrollu, strati di rete, strati di piattaforma è strati d'applicazione, è ancu u sviluppu di a casa intelligente. Tuttavia, cum'è quandu avemu amparatu à pittura, cunnosce a cunniscenza teorica hè luntanu da abbastanza. Avemu da "impurtà e mani" per mette in pratica i prughjetti di l'IoT per ammaistrà veramente a tecnulugia. Inoltre, quandu un prughjettu si move à a pruduzzioni di massa stage, hè necessariu di cunsiderà più fattori cum'è a cunnessione di a rete, a cunfigurazione, l'interazzione di a piattaforma di nuvola IoT, a gestione di u firmware è l'aghjurnamenti, a gestione di a pruduzzioni di massa è a cunfigurazione di sicurezza. Allora, chì avemu bisognu di attentu à u sviluppu di un prughjettu IoT cumpletu? In u capitulu 1, avemu mintuatu chì a casa intelligente hè unu di i scenarii di l'applicazione IoT più cumuni, è i luci intelligenti sò unu di l'apparecchi più basi è pratichi, chì ponu esse usatu in casa, hotel, gimnastica, ospedali, etc. stu libru, avemu da piglià a custruzzione di un prughjettu di luce intelligente cum'è u puntu di partenza, spiegà i so cumpunenti è funziunalità, è furnisce una guida nantu à u sviluppu di u prugettu. Speremu chì pudete piglià inferenze da questu casu per creà più applicazioni IoT.
2.1 Introduzione à Prughjetti tipici IoT
In quantu à u sviluppu, i moduli funziunali di basa di i prughjetti IoT ponu esse classificati in u sviluppu di software è hardware di i dispositi IoT, u sviluppu di l'applicazioni cliente è u sviluppu di a piattaforma di nuvola IoT. Hè impurtante chjarificà i moduli funziunali di basa, chì saranu più descritti in questa sezione.
2.1.1 Moduli basi per Dispositivi IoT cumuni
U sviluppu di software è hardware di i dispositi IoT includenu i seguenti moduli basi: Raccolta di dati
Cum'è a capa di fondu di l'architettura IoT, i dispositi IoT di u stratu di percepzione è cuntrollu cunnetta sensori è dispusitivi attraversu i so chips è periferiche per ottene a raccolta di dati è u cuntrollu di l'operazione.
9
Ubligatoriu di u contu è a cunfigurazione iniziale Per a maiò parte di i dispositi IoT, u ligame di u contu è a cunfigurazione iniziale sò cumpletati in un prucessu operativu, per esempiu.ample, culligamentu dispusitivi cù utilizatori cunfigurà reta Wi-Fi.
Interazzione cù e plataforme di nuvola IoT Per monitorà è cuntrullà i dispositi IoT, hè ancu necessariu di cunnetta cù e plataformi di nuvola IoT, per dà cumandamenti è rapportu u statutu attraversu l'interazzione trà l'altri.
Cuntrolla di u dispositivu Quandu cunnessu cù e plataforme di nuvola IoT, i dispositi ponu cumunicà cù u nuvulu è esse registrati, ligati o cuntrullati. L'utilizatori ponu interrogà u statutu di u produttu è eseguisce altre operazioni nantu à l'app per smartphone attraversu e plataforme di nuvola IoT o protokolli di cumunicazione lucali.
L'aghjurnamentu di firmware I dispositi IoT ponu ancu ottene l'aghjurnamentu di firmware basatu nantu à i bisogni di i fabricatori. Per riceve cumandamenti mandati da u nuvulu, l'aghjurnamentu di u firmware è a gestione di a versione seranu realizati. Cù sta funzione di aghjurnamentu di firmware, pudete rinfurzà continuamente e funzioni di i dispositi IoT, risolve i difetti è migliurà l'esperienza d'utilizatore.
2.1.2 Moduli basi di Applicazioni Client
L'applicazioni di u cliente (per esempiu, l'applicazioni per smartphone) includenu principalmente i seguenti moduli basi:
Sistema di contu è auturizazione Supporta l'autorizazione di u contu è u dispusitivu.
Cuntrolla di u dispusitivu L'applicazioni per smartphone sò generalmente dotate di funzioni di cuntrollu. L'utilizatori ponu facilmente cunnette cù i dispositi IoT, è gestite in ogni mumentu, in ogni locu attraversu l'applicazioni per smartphone. In una casa intelligente di u mondu reale, i dispositi sò soprattuttu cuntrullati per l'applicazioni per smartphone, chì ùn solu permette una gestione intelligente di i dispositi, ma ancu risparmià u costu di a forza di travagliu. Dunque, u cuntrollu di u dispusitivu hè un must per l'applicazioni di u cliente, cum'è u cuntrollu di l'attributu di funzione di u dispusitivu, u cuntrollu di scena, a pianificazione, u cuntrollu remoto, u ligame di u dispositivu, etc. L'utilizatori di casa intelligente ponu ancu persunalizà sceni secondu i bisogni persunali, cuntrullà l'illuminazione, l'apparecchi di casa, l'entrata. , etc., per fà a vita di casa più còmoda è còmuda. Puderanu u tempu di l'aria condizionata, spegnellu remotamente, accende automaticamente a luce di u corridoiu una volta chì a porta hè sbloccata, o cambia à u modu "teatru" cù un solu buttone.
L'applicazioni Clienti di Notificazione aghjurnanu u statutu in tempu reale di i dispositi IoT, è mandanu avvisi quandu i dispositi sò anormali.
10 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
U serviziu di u cliente dopu-vendita Apps Smartphone ponu furnisce servizii post-vendita per i prudutti, per risolve i prublemi ligati à i fallimenti di u dispositivu IoT è l'operazioni tecniche in tempu puntuale.
Funzioni Featured Per risponde à i bisogni di diversi utilizatori, altre funzioni ponu esse aghjuntu, cum'è Shake, NFC, GPS, etc. GPS pò aiutà à stabilisce a precisione di l'operazione di scena secondu u locu è a distanza, mentre chì a funzione Shake permette à l'utilizatori di stabilisce u cumandamenti da esse eseguitu per un dispositivu specificu o una scena scuzzulate.
2.1.3 Introduzione à e Piattaforme Cloud IoT cumuni
A piattaforma cloud IoT hè una piattaforma all-in-one chì integra funzioni cum'è a gestione di i dispositi, a cumunicazione di a sicurità di dati è a gestione di notificazioni. Sicondu u so gruppu di destinazione è l'accessibilità, e piattaforme di nuvola IoT ponu esse divise in piattaforme di nuvola IoT publiche (in seguitu denominate "nuvola publica") è piattaforme private di nuvola IoT (in seguitu denominate "nuvola privata").
A nuvola publica generalmente indica e piattaforme di nuvola IoT spartute per l'imprese o l'individui, operate è mantinute da i fornituri di piattaforma, è sparte per Internet. Pò esse gratuitu o low-cost, è furnisce servizii in tutta a reta publica aperta, cum'è Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, etc. Cum'è una piattaforma di supportu, u nuvulu publicu pò integrà i fornituri di serviziu upstream è utilizatori finali downstream per creà una nova catena di valore è ecosistema.
U nuvulu privatu hè custruitu solu per l'usu di l'impresa, guarantiscenu cusì u megliu cuntrollu di dati, sicurità è qualità di serviziu. I so servizii è infrastruttura sò mantinuti separatamente da l'imprese, è u hardware è u software di supportu sò ancu dedicati à l'utilizatori specifichi. L'imprese ponu persunalizà i servizii di nuvola per risponde à i bisogni di a so attività. Attualmente, alcuni pruduttori di casa intelligente anu digià acquistatu piattaforme private di nuvola IoT è sviluppatu applicazioni intelligenti per a casa basate nantu à elli.
A nuvola publica è a nuvola privata anu u so propiu vantaghjutages, chì serà spiegatu dopu.
Per ottene a connettività di cumunicazione, hè necessariu cumplettà almenu u sviluppu integratu da u latu di u dispositivu, inseme cù i servitori di l'affari, e plataforme di nuvola IoT è l'applicazioni per smartphone. Di fronte à un prughjettu cusì enormu, u nuvulu publicu furnisce normalmente kits di sviluppu di software per l'applicazioni di u dispositivu è di smartphone per accelerà u prucessu. U nuvulu publicu è privatu furnisce servizii cumpresi l'accessu à u dispositivu, a gestione di u dispositivu, l'ombra di u dispositivu, è u funziunamentu è u mantenimentu.
L'accessu à u dispositivu I piattaforme di nuvola IoT anu bisognu di furnisce micca solu interfacce per l'accessu à u dispositivu utilizendu protokolli
Capitulu 2. Introduzione è Pràtica di Prughjetti IoT 11
cum'è MQTT, CoAP, HTTPS, è WebSocket, ma ancu a funzione di autentificazione di sicurità di u dispusitivu per bluccà i dispositi falsificati è illegali, riducendu in modu efficace u risicu di cumprumissu. Tali autentificazione di solitu sustene diversi meccanismi, cusì quandu i dispositi sò pruduciuti in massa, hè necessariu di pre-assignà u certificatu di u dispusitivu secondu u mecanismu di autentificazione sceltu è brusgià in i dispositi.
Gestione di i dispositi A funzione di gestione di i dispositi furnita da e plataforme di nuvola IoT ùn pò micca solu aiutà i pruduttori à monitorà u statutu di attivazione è u statutu in linea di i so dispositi in tempu reale, ma ancu permette opzioni cum'è aghjunghje / caccià i dispositi, ricuperà, aghjunghje / sguassà gruppi, aghjurnamentu di firmware. , è gestione di versione.
Device shadow IoT cloud platforms ponu creà una versione virtuale persistente (device shadow) per ogni dispusitivu, è u statutu di l'ombra di u dispositivu pò esse sincronizatu è ottenutu da l'app smartphone o altri dispositi attraversu protokolli di trasmissione Internet. L'ombra di u dispositivu guarda l'ultimu statutu rappurtatu è u statu previstu di ogni dispositivu, è ancu s'ellu hè offline, pò ancu ottene u statu chjamendu l'API. L'ombra di u dispositivu furnisce API sempre attive, chì facilita a creazione di app per smartphone chì interagiscenu cù i dispositi.
Funzionamentu è mantenimentu A funzione O&M include trè aspetti: · Dimostrazione di l'infurmazioni statistiche nantu à i dispositi IoT è e notificazioni. · A gestione di u log permette di ricuperà l'infurmazioni nantu à u cumpurtamentu di u dispusitivu, u flussu di missaghju up / down, è u cuntenutu di u messagiu. · U debugging di u dispositivu sustene a consegna di cumandamenti, l'aghjurnamentu di a cunfigurazione è a verificazione di l'interazzione trà e plataforme di nuvola IoT è i missaghji di u dispositivu.
2.2 Pràtica: Smart Light Project
Dopu à l'intruduzioni teorichi in ogni capitulu, truverete una sezione pratica in relazione à u prughjettu Smart Light per aiutà à ottene una sperienza pratica. U prugettu hè basatu annantu à u chip ESP32-C3 di Espressif è a piattaforma ESP RainMaker IoT Cloud, è copre l'hardware di moduli wireless in i prudutti di luce intelligente, u software integratu per i dispositi intelligenti basati in ESP32C3, l'applicazioni per smartphone è l'interazione ESP RainMaker.
U codice sorgente Per una megliu esperienza di apprendimentu è sviluppu, u prughjettu in stu libru hè statu apertu. Pudete scaricà u codice fonte da u nostru repository GitHub à https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
2.2.1 Struttura di Prughjettu
U prughjettu Smart Light hè custituitu di trè parti: i. Dispositivi di luci intelligenti basati nantu à ESP32-C3, rispunsevuli di interagisce cù e plataforme di nuvola IoT, è di cuntrullà u cambiamentu, a luminosità è a temperatura di u culore di u LED lamp perle. ii. Apps per smartphone (cumprese l'applicazioni per tablette chì funzionanu in Android è iOS), rispunsevuli di a cunfigurazione di a rete di i prudutti intelligenti di luce, è ancu di dumandà è cuntrullà u so statutu.
iii. Una piattaforma cloud IoT basata nantu à ESP RainMaker. Per a simplificazione, cunsideremu a piattaforma di nuvola IoT è u servitore cummerciale in tuttu in stu libru. I dettagli nantu à ESP RainMaker seranu furniti in u Capitulu 3.
A currispundenza trà a struttura di u prugettu Smart Light è l'architettura di IoT hè mostrata in Figura 2.1.
Figura 2.1. Struttura di u prughjettu di luce intelligente
2.2.2 Funzioni di prughjettu
Divisu secondu a struttura, e funzioni di ogni parte sò i seguenti. Dispositivi di luci intelligenti
· Cunfigurazione di rete è cunnessione. · Controlu LED PWM, cum'è switch, luminosità, temperatura di culore, etc. · Automatizazione o cuntrollu di scena, per esempiu, time switch. · Criptazione è boot sicuru di u Flash. · Actualizazione di firmware è gestione di versione.
Capitulu 2. Introduzione è Pràtica di Prughjetti IoT 13
Apps per smartphone · Cunfigurazione di a rete è ubligatoriu di u dispositivu. · Controllu di produttu di luce intelligente, cum'è switch, luminosità, temperatura di culore, etc. · Automatizazione o paràmetri di scena, per esempiu, time switch. · Controlu lucale / remoto. · Registrazione di l'utilizatori, login, etc.
Piattaforma cloud ESP RainMaker IoT · Abilitazione di l'accessu à i dispositi IoT. · Furnisce l'API di l'operazione di u dispositivu accessibile à l'applicazioni per smartphone. · Actualizazione di firmware è gestione di versione.
2.2.3 Preparazione Hardware
S'ellu hè interessatu à mette in pratica u prughjettu, avete bisognu di i seguenti hardware: luci intelligenti, smartphones, routers Wi-Fi, è un urdinatore chì risponde à i requisiti di stallazione di l'ambiente di sviluppu. Luci intelligenti
I luci intelligenti sò un novu tipu di lampadine, chì a so forma hè a stessa cum'è a lampadina incandescente generale. Una luce intelligente hè cumposta da un alimentazione regulata di condensatore, un modulu wireless (cù ESP32-C3 integratu), un controller LED è una matrice LED RGB. Quandu cunnessu à u putere, u 15 V DC voltagL'output dopu a diminuzione di u condensatore, a rectificazione di diodi è a regulazione furnisce energia à u controller LED è à a matrice LED. U controller LED pò mandà automaticamente livelli alti è bassi à certi intervalli, cambiendu a matrice LED RGB trà chjusu (luci accese) è apertu (luci spente), in modu chì pò emette cian, giallu, verde, viola, blu, rossu è luce bianca. U modulu wireless hè rispunsevuli di cunnette à u router Wi-Fi, riceve è rappurtate u statutu di luci intelligenti, è mandà cumandamenti per cuntrullà u LED.
Figura 2.2. Una luce intelligente simulata
In u primu sviluppu stage, pudete simule una luce intelligente usendu a scheda ESP32-C3DevKitM-1 cunnessa cù LED RGB lamp perle (vede Figura 2.2). Ma duvete
14 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
nota chì questu ùn hè micca l'unicu modu per assemblà una luce intelligente. U disignu hardware di u prughjettu in questu libru cuntene solu un modulu wireless (cù ESP32-C3 integratu), ma micca un disignu di hardware di luce intelligente cumpletu. Inoltre, Espressif produce ancu una scheda di sviluppu audio basata in ESP32-C3 ESP32C3-Lyra per u cuntrollu di luci cù audio. U bordu hà interfacce per microfoni è parlanti è ponu cuntrullà strisce LED. Pò esse usatu per sviluppà trasmissioni audio ultra-bassu, d'alta prestazione è strisce di luce ritmica. A figura 2.3 mostra una scheda ESP32-C3Lyra ligata cù una striscia di 40 luci LED.
Figura 2.3. ESP32-C3-Lyra cunnessu cù una striscia di 40 luci LED
Smartphones (Android/iOS) U prughjettu Smart Light implica u sviluppu di una app per smartphone per stallà è cuntrullà i prudutti intelligenti di luce.
Routers Wi-Fi I routers Wi-Fi convertanu i segnali di a rete cablata è i segnali di a rete mobile in segnali di a rete wireless, per l'urdinatori, smartphones, tablette è altri dispositi wireless per cunnette à a reta. Per esample, a banda larga in a casa solu bisognu à esse culligatu à un router Wi-Fi à ghjunghje sin'à a rete wireless di i dispusitivi Wi-Fi. U standard di protokollu mainstream supportatu da i router Wi-Fi hè IEEE 802.11n, cù un TxRate mediu di 300 Mbps, o 600 Mbps à u massimu. Sò retrocompatibili cù IEEE 802.11b è IEEE 802.11g. U chip ESP32-C3 di Espressif supporta IEEE 802.11b/g/n, cusì pudete sceglie un router Wi-Fi à banda unica (2.4 GHz) o dual-band (2.4 GHz è 5 GHz).
Un ambiente di sviluppu di l'urdinatore (Linux/macOS/Windows) serà introduttu in Capitulu 4. Capitulu 2. Introduzione è Pratica di Prughjetti IoT 15
2.2.4 Prucessu di sviluppu
Figura 2.4. Passi di u sviluppu di u prugettu Smart Light
Disegnu di hardware U disignu di hardware di i dispositi IoT hè essenziale per un prughjettu IoT. Un prughjettu di luce intelligente cumpleta hè destinatu à pruduce alamp travaglià sottu alimentazione di rete. Diversi pruduttori pruduce lamps di diversi stili è tippi di driver, ma i so moduli wireless sò generalmente di a listessa funzione. Per simplificà u prucessu di sviluppu di u prughjettu Smart Ligh, stu libru copre solu u disignu di hardware è u sviluppu di software di moduli wireless.
Cunfigurazione di a piattaforma di nuvola IoT Per utilizà e plataforme di nuvola IoT, avete bisognu di cunfigurà prughjetti nantu à u backend, cum'è a creazione di prudutti, a creazione di dispusitivi, a stallazione di pruprietà di u dispositivu, etc.
Sviluppu di software integratu per i dispositi IoT Implementa e funzioni previste cù ESP-IDF, u SDK di u dispositivu di Espressif, cumprese a cunnessione à e plataforme di nuvola IoT, u sviluppu di driver LED è l'aghjurnamentu di firmware.
Sviluppu di app per smartphone Sviluppà app per smartphone per sistemi Android è iOS per realizà a registrazione di l'utilizatori è u login, u cuntrollu di u dispositivu è altre funzioni.
Ottimisazione di u dispositivu IoT Una volta chì u sviluppu di basa di e funzioni di u dispositivu IoT hè finitu, pudete turnà à i travaglii di ottimisazione, cum'è l'optimizazione di u putere.
Test di produzzione di massa Eseguite teste di produzzione di massa in cunfurmità cù i normi cunnessi, cum'è test di funzione di l'equipaggiu, test d'invecchiamento, test RF, etc.
Malgradu i passi elencati sopra, un prughjettu Smart Light ùn hè micca necessariamente sottumessu à una tale prucedura, postu chì diverse attività ponu esse realizate à u stessu tempu. Per esample, i prugrammi incrustati è l'applicazioni per smartphone ponu esse sviluppati in parallelu. Certi passi ponu ancu esse ripetuti, cum'è l'ottimisazione di i dispositi IoT è e teste di produzzione di massa.
16 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
2.3 Riassuntu
In questu capitulu, avemu prima spiegatu nantu à i cumpunenti basi è i moduli funziunali di un prughjettu IoT, dopu introduttu u casu Smart Light per a pratica, riferite à a so struttura, funzioni, preparazione di hardware è prucessu di sviluppu. I lettori ponu fà inferenze da a pratica è diventate cunfidenti di realizà prughjetti IoT cù sbagli minimi in u futuru.
Capitulu 2. Introduzione è Pràtica di Prughjetti IoT 17
18 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Capitulu 3
Introduzione
à
ESP
RainMaker
L'Internet di e Cose (IoT) offre infinite pussibulità per cambià a manera di campà a ghjente, ma u sviluppu di l'ingegneria IoT hè pienu di sfide. Cù nuvuli publichi, i pruduttori di terminali ponu implementà a funziunalità di u produttu attraversu e seguenti soluzioni:
Basatu nantu à e piattaforme di nuvola di i fornitori di soluzioni In questu modu, i pruduttori di terminali solu bisognu di cuncepisce u hardware di u produttu, dopu cunnette u hardware à u nuvulu utilizendu u modulu di cumunicazione furnitu, è cunfigurà e funzioni di u produttu seguendu e linee guida. Questu hè un approcciu efficiente postu chì elimina a necessità di u sviluppu di u latu di u servitore è di l'applicazione è operazioni è mantenimentu (O&M). Permette à i pruduttori di terminali di fucalizza nantu à u disignu di hardware senza avè da cunsiderà l'implementazione di nuvola. Tuttavia, tali suluzioni (per esempiu, firmware dispusitivu è App) sò generalmente micca open source, cusì e funzioni di u produttu serà limitatu da a piattaforma cloud di u fornitore chì ùn pò micca esse persunalizatu. Intantu, i dati di l'utilizatori è di u dispositivu appartenenu ancu à a piattaforma nuvola.
Basatu nantu à i prudutti di nuvola In questa suluzione, dopu avè finitu u disignu di hardware, i pruduttori di terminali ùn anu micca solu bisognu di implementà e funzioni di nuvola utilizendu unu o più prudutti di nuvola furniti da u nuvulu publicu, ma anu ancu bisognu di ligà u hardware cù u nuvulu. Per esample, per cunnette à Amazon Web Services (AWS), i pruduttori di terminal anu bisognu di utilizà i prudutti AWS cum'è Amazon API Gateway, AWS IoT Core è AWS Lambda per attivà l'accessu à u dispositivu, u cuntrollu remoto, u almacenamentu di dati, a gestione di l'utilizatori è altre funzioni basiche. Ùn dumanda micca solu à i pruduttori di terminali per aduprà è cunfigurà in modu flessibile i prudutti di nuvola cù una cunniscenza approfondita è una sperienza ricca, ma ancu esige di cunsiderà u costu di custruzzione è di mantenimentu per i primi è più tardi.tages Questu pone grandi sfide à l'energia è e risorse di a cumpagnia.
Comparatu cù i nuvuli publichi, i nuvuli privati sò generalmente custruiti per prughjetti è prudutti specifichi. I sviluppatori di nuvola privata sò datu u più altu livellu di libertà in u disignu di u protocolu è l'implementazione di a logica cummerciale. I pruduttori di terminali ponu fà prudutti è schemi di cuncepimentu à vuluntà, è facilmente integranu è abilità i dati di l'utilizatori. Cumminendu l'alta sicurezza, scalabilità è affidabilità di u nuvulu publicu cù l'avanzatutages di nuvola privata, Espressif hà lanciatu ESP
19
RainMaker, una soluzione di nuvola privata assai integrata basata nantu à u cloud Amazon. L'utilizatori ponu implementà ESP RainMaker è custruisce una nuvola privata solu cù un contu AWS.
3.1 Cosa hè ESP RainMaker?
ESP RainMaker hè una piattaforma AIoT cumpleta custruita cù parechji prudutti AWS maturi. Fornisce diversi servizii necessarii per a produzzione di massa cum'è l'accessu à u nuvola di u dispositivu, l'aghjurnamentu di u dispositivu, a gestione backend, l'accessu di terzu, l'integrazione di voce è a gestione di l'utilizatori. Utilizendu u Repository di Applicazioni Serverless (SAR) furnitu da AWS, i pruduttori di terminali ponu implementà rapidamente ESP RainMaker à i so cunti AWS, chì hè efficiente in tempu è faciule d'operare. Gestitu è mantinutu da Espressif, u SAR utilizatu da ESP RainMaker aiuta i sviluppatori à riduce i costi di mantenimentu in nuvola è accelerà u sviluppu di i prudutti AIoT, custruendu cusì soluzioni AIoT sicure, stabili è persunalizabili. A Figura 3.1 mostra l'architettura di ESP RainMaker.
Figura 3.1. Architettura di ESP RainMaker
U servitore publicu ESP RainMaker di Espressif hè gratuitu per tutti i dilettanti, i creatori è i educatori ESP per a valutazione di a suluzione. I sviluppatori ponu accede cù cunti Apple, Google o GitHub, è custruisce rapidamente i so prototipi di l'applicazioni IoT. U servitore publicu integra Alexa è Google Home, è furnisce servizii di cuntrollu di voce, chì sò supportati da Alexa Skill è Google Actions. A so funzione di ricunniscenza semantica hè ancu alimentata da terze parti. I dispositi RainMaker IoT rispundenu solu à azioni specifiche. Per una lista exhaustiva di cumandamenti di voce supportati, verificate e piattaforme di terze parti. Inoltre, Espressif offre una App RainMaker publica per l'utilizatori per cuntrullà i prudutti attraversu smartphones. 20 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
3.2 L'implementazione di ESP RainMaker
Cum'è mostra in a Figura 3.2, ESP RainMaker hè custituitu di quattru parti: · Serviziu di Reclamazione, chì permette à i dispositi RainMaker di ottene in modu dinamicu certificati. · RainMaker Cloud (cunnisciutu ancu cum'è backend cloud), chì furnisce servizii cum'è filtru di messagi, gestione di l'utilizatori, almacenamiento di dati è integrazioni di terze parti. · RainMaker Agent, chì permette à i dispositi RainMaker di cunnette à RainMaker Cloud. · RainMaker Client (RainMaker App o scripts CLI), per a pruvista, a creazione di l'utilizatori, l'associazione è u cuntrollu di u dispositivu, etc.
Figura 3.2. Struttura di ESP RainMaker
ESP RainMaker furnisce un inseme cumpletu di strumenti per u sviluppu di u produttu è a produzzione di massa, cumprese: RainMaker SDK
RainMaker SDK hè basatu annantu à ESP-IDF è furnisce u codice fonte di l'agente di u dispusitivu è l'API C relative per u sviluppu di firmware. I sviluppatori solu bisognu di scrive a logica di l'applicazione è lasciate u restu à u framework RainMaker. Per più infurmazione nantu à l'API C, visitate https://bookc3.espressif.com/rm/c-api-reference. RainMaker App A versione publica di RainMaker App permette à i sviluppatori di cumplettà l'approvvigionamentu di u dispositivu, è cuntrullà è interrogà u statutu di i dispositi (per esempiu, prudutti di illuminazione intelligente). Hè dispunibule nantu à i magazzini di app iOS è Android. Per più detaglii, fate riferimentu à u Chapter 10. REST APIs REST APIs aiutanu à l'utilizatori à custruisce e so propiu applicazioni simili à l'App RainMaker. Per più infurmazione, visitate https://swaggerapis.rainmaker.espressif.com/.
Capitulu 3. Introduzione à ESP RainMaker 21
API Python Una CLI basata in Python, chì vene cù u RainMaker SDK, hè furnita per implementà tutte e funzioni simili à e funzioni di smartphone. Per più infurmazione nantu à l'API Python, visitate https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, cù un livellu più altu di accessu, hè furnitu per l'implementazione privata ESP RainMaker per generà certificati di u dispositivu in massa.
3.2.1 Serviziu di reclamazione
Tutta a cumunicazione trà i dispositi RainMaker è u backend di nuvola hè realizatu attraversu MQTT + TLS. In u cuntestu di ESP RainMaker, "Claiming" hè u prucessu in quale i dispositi uttenenu certificati da u Serviziu di Reclamazione per cunnette à u backend di nuvola. Nota chì u Serviziu di Rivendicazione hè applicabile solu à u serviziu publicu RainMaker, mentre chì per l'implementazione privata, i certificati di u dispositivu anu da esse generati in quantità à traversu Admin CLI. ESP RainMaker supporta trè tippi di serviziu di reclamazione: Self Claiming
U dispusitivu stessu piglia i certificati per mezu di una chjave secreta preprogrammata in eFuse dopu a cunnessione à Internet. Host Driven Claiming I certificati sò ottenuti da l'ospite di sviluppu cù u contu RainMaker. Reclamazione Assistita I certificati sò ottenuti via l'applicazioni per smartphone durante l'approvvigionamentu.
3.2.2 Agente RainMaker
Figura 3.3. Struttura di RainMaker SDK A funzione primaria di l'Agente RainMaker hè di furnisce a connettività è assiste a strata di l'applicazione per processà e dati di u cloud uplink / downlink. Hè custruitu attraversu u RainMaker SDK 22 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
è sviluppatu basatu annantu à u quadru provatu ESP-IDF, utilizendu cumpunenti ESP-IDF cum'è RTOS, NVS è MQTT. A Figura 3.3 mostra a struttura di u RainMaker SDK.
U RainMaker SDK include duie funzioni principali.
Cunnessione
i. Cuuperazione cù u serviziu di reclamazione per ottene certificati di u dispositivu.
ii. Cunnessu à u backend di nuvola utilizendu u protocolu MQTT sicuru per furnisce una cunnessione remota è implementà u cuntrollu remotu, rapportu di messagiu, gestione di l'utilizatori, gestione di u dispositivu, etc. Utilizà u cumpunente MQTT in ESP-IDF per difettu è furnisce una strata di astrazione per interfaccia cù altri. pile di protocolu.
iii. Fornisce u cumpunente di pruvista Wi-Fi per a cunnessione Wi-Fi è l'approvvigionamentu, in particulare u cumpunente https ota per l'aghjurnamenti OTA, è u cumpunente ctrl locale per a scuperta è a cunnessione di i dispositi lucali. Tutti issi ugettivi ponu esse ottenuti attraversu una cunfigurazione simplice.
Trattamentu di dati
i. Salvà i certificati di u dispositivu emessi da Claiming Service è i dati necessarii quandu eseguite RainMaker, per automaticamente utilizendu l'interfaccia furnita da u cumpunente flash nvs, è furnisce API per i sviluppatori per l'usu direttu.
ii. Utilizà u mecanismu di callback per processà e dati di u cloud uplink / downlink è sblocca automaticamente e dati à a strata di l'applicazione per un trattamentu faciule da i sviluppatori. Per esample, u RainMaker SDK furnisce interfacce ricche per stabilisce e dati TSL (Thing Specification Language), chì sò necessarii per definisce mudelli TSL per descriverà i dispositi IoT è implementà funzioni cum'è timing, countdown, è cuntrollu di voce. Per e funzioni interattive basiche cum'è u timing, RainMaker SDK furnisce una soluzione senza sviluppu chì pò esse simplicemente attivata quandu hè necessariu. Allora, l'Agente RainMaker prucederà direttamente i dati, l'inviarà à u nuvulu attraversu u tema MQTT assuciatu, è rimetterà i cambiamenti di dati in u backend di nuvola per mezu di u mecanismu di callback.
3.2.3 Cloud Backend
U backend di nuvola hè custruitu nantu à AWS Serverless Computing è ottenutu attraversu AWS Cognito (sistema di gestione di l'identità), Amazon API Gateway, AWS Lambda (serviziu informaticu senza server), Amazon DynamoDB (database NoSQL), AWS IoT Core (core d'accessu IoT chì furnisce accessu MQTT). è filtrazione di regule), Amazon Simple Email Service (serviziu di posta simplice SES), Amazon CloudFront (rete di consegna veloce), Amazon Simple Queue Service (SQS message queuing) è Amazon S3 (serviziu di almacenamentu di bucket). Hè destinatu à ottimisà a scalabilità è a sicurità. Cù ESP RainMaker, i sviluppatori ponu gestisce i dispositi senza avè da scrive codice in u nuvulu. I missaghji signalati da i dispositi sò trasmessi in modu trasparente
Capitulu 3. Introduzione à ESP RainMaker 23
i clienti di l'applicazione o altri servizii di terze parti. A Tabella 3.1 mostra i prudutti di nuvola AWS è e funzioni utilizati in u backend di nuvola, cù più prudutti è funzioni in sviluppu.
Tabella 3.1. I prudutti di a nuvola AWS è e funzioni utilizati da u backend di nuvola
Pruduttu AWS Cloud Utilizatu da RainMaker
Funzione
AWS Cognito
Gestisce e credenziali di l'utilizatori è sustene l'accessu di terze parti
AWS Lambda
Implementazione di a logica core business di u backend cloud
Amazon Timestream Memorizza dati di serie temporale
Amazon DynamoDB Memorizza l'infurmazione privata di i clienti
AWS IoT Core
Supportu a cumunicazione MQTT
Amazon SES
Furnisce servizii di mandatu di email
Amazon CloudFront Accelerazione di a gestione di u backend webaccessu à u situ
Amazon SQS
Inoltri missaghji da AWS IoT Core
3.2.4 Client RainMaker
I clienti RainMaker, cum'è l'App è CLI, cumunicanu cù u backend di nuvola attraversu l'API REST. L'infurmazioni detallati è l'istruzzioni nantu à l'API REST ponu esse truvati in a documentazione Swagger furnita da Espressif. U cliente di l'applicazione mobile di RainMaker hè dispunibule per i sistemi iOS è Android. Permette l'approvvigionamentu, u cuntrollu è u sparte di u dispositivu, è ancu di creà è attivà e attività di cunti à a rovescia è di cunnette cù e plataforme di terzu. Pò carica automaticamente l'UI è l'icone secondu a cunfigurazione rappurtata da i dispositi è vede cumplettamente u TSL di u dispusitivu.
Per esample, si una luci inteligente hè custruitu nantu à u RainMaker SDK-furnì examples, l'icona è UI di a lampadina serà caricata automaticamente quandu u provisioning hè cumpletu. L'utilizatori ponu cambià u culore è a luminosità di a luce attraversu l'interfaccia è uttene un cuntrollu di terzu liendu Alexa Smart Home Skill o Google Smart Home Actions à i so cunti ESP RainMaker. Figura 3.4 mostra l'icona è UI example di a lampadina rispettivamente in Alexa, Google Home è ESP RainMaker App.
24 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
(a) Esample - Alexa
(b) Esample - Google Home
(c) Esample – ESP RainMaker
Figura 3.4. Esampl'icona è l'interfaccia utente di a lampadina in Alexa, Google Home è ESP RainMaker App
3.3 Pràtica: Punti chjave per u Sviluppu cù ESP RainMaker
Una volta a strata di u driver di u dispositivu hè stata cumpletata, i sviluppatori ponu inizià à creà mudelli TSL è processà e dati di downlink utilizendu l'API furnite da RainMaker SDK, è attivà i servizii di basa ESP RainMaker basatu nantu à a definizione di u produttu è i requisiti.
Capitulu 3. Introduzione à ESP RainMaker 25
A sezione 9.4 di stu libru spiegherà l'implementazione di a luce intelligente LED in RainMaker. Durante a debugging, i sviluppatori ponu utilizà l'uttene CLI in u SDK RainMaker per cumunicà cù a luce intelligente (o chjamate REST API da Swagger).
U capitulu 10 elaburà l'usu di l'API REST in u sviluppu di applicazioni per smartphone. L'aghjurnamenti OTA di luci intelligenti LED seranu cuparti in u Capitulu 11. Se i sviluppatori anu attivatu u monitoraghju remoto ESP Insights, u backend di gestione ESP RainMaker mostrarà i dati ESP Insights. I dettagli seranu presentati in u Capitulu 15.
ESP RainMaker supporta l'implementazione privata, chì differisce da u servitore publicu RainMaker in i seguenti modi:
Serviziu di Rivendicazione Per generà certificati in implementazioni private, hè necessariu di utilizà a CLI Admin RainMaker invece di Riclamà. Cù u servitore publicu, i sviluppatori devenu esse datu diritti di amministratore per implementà l'aghjurnamentu di firmware, ma ùn hè micca desideratu in implementazioni cummerciale. Dunque, nè u serviziu di autentificazione separatu pò esse furnitu per l'auto-riclamazione, nè i diritti di amministratore per a reclamazione guidata o assistita.
Apps per u telefunu In implementazioni private, l'applicazioni anu da esse cunfigurate è compilate separatamente per assicurà chì i sistemi di contu ùn sò micca interoperabili.
Logins di terzu partitu è integrazione di voce I sviluppatori anu da cunfigurà separatamente via i cunti Google è Apple Developer per attivà i logins di terze parti, è ancu l'integrazione Alexa Skill è Google Voice Assistant.
TIPS Per i dettagli nantu à l'implementazione di nuvola, visitate https://customer.rainmaker.espressif. com. In quantu à u firmware, a migrazione da u servitore publicu à u servitore privatu solu bisognu di rimpiazzà i certificati di u dispositivu, chì migliurà assai l'efficienza di migrazione è reduce u costu di migrazione è debugging secundariu.
3.4 Funzioni di ESP RainMaker
E funzioni di ESP RainMaker sò principalmente destinate à trè aspetti - gestione di l'utilizatori, utilizatori finali è amministratori. Tutte e funzioni sò supportate in i servitori publichi è privati, salvu s'ellu ùn hè micca dettu altrimenti.
3.4.1 Gestione di l'utilizatori
E funzioni di gestione di l'utilizatori permettenu à l'utilizatori finali di registrà, login, cambià password, ricuperà password, etc.
26 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Registrate è login I metudi di registrazione è login supportati da RainMaker includenu: · Id e-mail + Password · Numeru di telefunu + Password · Contu Google · Contu Apple · Contu GitHub (solu servore publicu) · Contu Amazon (solu servore privatu)
NOTA Iscriviti cù Google/Amazon sparte l'indirizzu email di l'utilizatore cù RainMaker. Iscriviti cù Apple sparte un indirizzu dummy chì Apple assigna per l'utilizatori specificamente per u serviziu RainMaker. Un contu RainMaker serà creatu automaticamente per l'utilizatori chì accedenu cù un contu Google, Apple o Amazon per a prima volta.
Cambia password Valida solu per e-mail id / login basatu à u numeru di telefunu. Tutte e altre sessioni attive saranu scontate dopu chì a password hè cambiata. Sicondu u cumportamentu di AWS Cognito, e sessioni cunnesse ponu esse attive finu à 1 ora.
Recuperare a password Valida solu per e-mail id / login basatu à u numeru di telefunu.
3.4.2 Funzioni di l'Usuariu Finale
E caratteristiche aperte à l'utilizatori finali includenu u cuntrollu è u monitoraghju lucale è remoto, pianificazione, raggruppamentu di i dispositi, spartera di i dispositi, notificazioni push, è integrazioni di terze parti.
Controlu remotu è monitoraghju · Cunfigurazione di e dumande, valori di paràmetri, è statu di cunnessione per unu o tutti i dispositi. · Stabilite i paràmetri per i dispositi unichi o multiplici.
U cuntrollu lucale è surviglianza U telefuninu Mobile è u dispusitivu deve esse culligatu à a stessa reta per u cuntrollu lucale.
Scheduling · Users pre-set certi azzioni à un tempu specifichi. · Nisuna cunnessione Internet necessaria per u dispusitivu mentre eseguisce a pianificazione. · Una volta o ripetite (specificendu ghjorni) per un o più dispositi.
U raggruppamentu di i dispositi Supporta u gruppu astrattu multi-livellu I metadati di u gruppu ponu esse aduprati per creà una struttura di Home Room.
Capitulu 3. Introduzione à ESP RainMaker 27
Sparte di i dispositi Un o più dispositi ponu esse spartuti cù unu o più utilizatori.
Notificazioni push L'utilizatori finali riceveranu notificazioni push per avvenimenti cum'è · Novu dispositivu (s) aghjuntu/sguassatu · Dispositivu cunnessu à u nuvulu · Dispositivu disconnected from cloud · Richieste di spartera di i dispositi creati / accettati / rifiutati · Messaggi d'alerta rappurtati da i dispositi
L'integrazioni di terze parti Alexa è Google Voice Assistant sò supportati per cuntrullà i dispositi RainMaker, cumprese luci, interruttori, sockets, ventilatori è sensori di temperatura.
3.4.3 Funzioni di l'amministratore
E funzioni di l'amministratore permettenu à l'amministratori di implementà a registrazione di u dispositivu, u raggruppamentu di i dispositi è l'aghjurnamenti OTA, è à view statistiche è dati ESP Insights.
Registrazione di u dispositivu Generate certificati di u dispositivu è registrate cù Admin CLI (solu servitore privatu).
Agrupazione di i dispositi Crea gruppi astratti o strutturati basatu annantu à l'infurmazioni di u dispositivu (solu servitore privatu).
Upgrade Over-the-Air (OTA) Caricate firmware basatu nantu à a versione è u mudellu, à unu o più dispusitivi o un gruppu Monitor, annullà, o archiviu i travaglii OTA.
View statistiche Viewe statistiche capaci includenu: · Registrazioni di u dispositivu (certificati registrati da l'amministratore) · Attivazioni di u dispositivu (dispositivu cunnessu per a prima volta) · Cunti d'utilizatori · Associazione utilizatori-dispositivi
View Dati ESP Insights ViewI dati capaci di ESP Insights includenu: · Errori, avvisi è logs persunalizati · Rapporti di crash è analisi · Motivi di riavviare · Metri cum'è l'usu di memoria, RSSI, etc. · Metri è variabili persunalizati
28 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
3.5 Riassuntu
In questu capitulu, avemu introduttu alcune differenze chjave trà l'implementazione publica di RainMaker è l'implementazione privata. A suluzione privata ESP RainMaker lanciata da Espressif hè altamente affidabile è estensibile. Tutti i chips di a serie ESP32 sò stati cunnessi è adattati à AWS, chì riduce assai u costu. I sviluppatori ponu fucalizza nantu à a verificazione di prototipu senza avè da amparà nantu à i prudutti di nuvola AWS. Avemu spiegatu ancu l'implementazione è e caratteristiche di ESP RainMaker, è alcuni punti chjave per u sviluppu cù a piattaforma.
Scansione per scaricà ESP RainMaker per Android Scansione per scaricà ESP RainMaker per iOS
Capitulu 3. Introduzione à ESP RainMaker 29
30 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Capitulu Configurazione 4 Ambiente di Sviluppu
Stu capitulu si cuncentra nantu à ESP-IDF, u framework ufficiale di sviluppu di software per ESP32-C3. Spiegheremu cumu cunfigurà l'ambiente in diversi sistemi operativi, è intruduce a struttura di u prughjettu è u sistema di custruisce ESP-IDF, è ancu l'usu di l'uttene di sviluppu cunnessi. Allora avemu da prisentà u prucessu di compilazione è esecuzione di un example prughjettu, mentre chì offre una spiegazione dettagliata di u logu di output à ogni stage.
4.1 ESP-IDF Overview
ESP-IDF (Espressif IoT Development Framework) hè un framework di sviluppu IoT one-stop furnitu da Espressif Technology. Utiliza C / C ++ cum'è a lingua di sviluppu principale è supporta a compilazione incruciata in i sistemi operativi mainstream cum'è Linux, Mac è Windows. L'exampi prugrammi inclusi in stu libru sò sviluppati cù l'ESP-IDF, chì offre e seguenti funziunalità: · SoC drivers-level system. ESP-IDF include i driver per ESP32, ESP32-S2, ESP32-C3,
è altri chips. Questi cunduttori includenu a libreria perifèrica di livellu bassu (LL), a biblioteca di astrazione di hardware (HAL), u supportu RTOS è u software di driver di u livellu superiore, etc. · Cumpunenti essenziali. ESP-IDF incorpora cumpunenti fundamentali necessarii per u sviluppu IoT. Questu include parechje pile di protokolli di rete cum'è HTTP è MQTT, un quadru di gestione di energia cù modulazione di frequenza dinamica, è funzioni cum'è Flash Encryption è Secure Boot, etc. · Strumenti di sviluppu è di produzzione. ESP-IDF furnisce strumenti cumunimenti utilizati per a custruzzione, u lampu è u debugging durante u sviluppu è a produzzione di massa (vede a Figura 4.1), cum'è u sistema di custruzzione basatu in CMake, a catena di strumenti di compilazione incruciata basatu in GCC, è u J.TAG Strumenta di debugging basatu in OpenOCD, etc. Hè nutate chì u codice ESP-IDF aderisce principalmente à a licenza Apache 2.0 open-source. L'utilizatori ponu sviluppà un software persunale o cummerciale senza restrizioni mentre rispettanu i termini di a licenza open-source. Inoltre, l'utilizatori sò cuncessi licenze di brevetti permanenti gratuitamente, senza l'obbligazione di open-source qualsiasi mudificazione fatta à u codice fonte.
31
Figura 4.1.
Custruisce, lampendu è debug-
Strumenti di ging per u sviluppu è a produzzione di massa
4.1.1 Versioni ESP-IDF
U codice ESP-IDF hè allughjatu in GitHub cum'è un prughjettu open-source. Attualmente, ci sò trè versioni maiò dispunibili: v3, v4, è v5. Ogni versione maiò di solitu cuntene diverse subversioni, cum'è v4.2, v4.3, è cusì. Espressif Systems assicura un supportu di 30 mesi per correzioni di bug è patch di sicurezza per ogni subversione liberata. Dunque, rivisioni di subversioni sò ancu liberati regularmente, cum'è v4.3.1, v4.2.2, etc. A Tabella 4.1 mostra u statutu di supportu di e diverse versioni ESP-IDF per i chips Espressif, chì indicanu s'ellu sò in un pre.view stage (offre un supportu per preview versioni, chì ponu manca di certe funziunalità o documentazione) o sò supportati ufficialmente.
Tabella 4.1. Status di supportu di diverse versioni ESP-IDF per chips Espressif
Serie ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 supportatu
v4.2 supportatu supportatu
v4.3 supportatu supportatu supportatu
v4.4 supportatu supportatu supportatu supportatu
preview
v5.0 supportatu supportatu supportatu supportatu supportatu preview
32 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
L'iterazione di e versioni maiò spessu implica l'aghjustamenti à a struttura di u quadru è l'aghjurnamenti di u sistema di compilazione. Per esample, u cambiamentu maiò da v3.* à v4.* era a migrazione graduale di u sistema di custruzzione da Make à CMake. Per d 'altra banda, l'iterazione di versioni minori generalmente implica l'aghjunzione di novi funzioni o supportu per novi chips.
Hè impurtante di distingue è capisce a relazione trà e versioni stabili è e rami di GitHub. E versioni tichjate cum'è v*.* o v*.*.* rapprisentanu versioni stabili chì anu passatu a prova interna cumpleta da Espressif. Una volta fissati, u codice, a catena di strumenti è i documenti di liberazione per a listessa versione restanu invariati. In ogni casu, i rami di GitHub (per esempiu, u ramu release/v4.3) sò sottumessi à còdici frequenti, spessu ogni ghjornu. Dunque, dui snippets di codice sottu à a listessa filiera ponu differisce, chì impone à i sviluppatori di aghjurnà immediatamente u so codice in cunseguenza.
4.1.2 ESP-IDF Git Workflow
Espressif seguita un flussu di travagliu Git specificu per ESP-IDF, delineatu cusì:
· I novi cambiamenti sò fatti nantu à u ramu maestru, chì serve cum'è u ramu di sviluppu principale. A versione ESP-IDF nantu à u ramu maestru porta sempre un -dev tag per indicà chì hè attualmente in sviluppu, cum'è v4.3-dev. I cambiamenti nantu à u ramu maestru seranu prima reviewed è testatu in u repositoriu internu di Espressif, è poi imbuttatu à GitHub dopu chì a prova automatizata hè cumpleta.
· Una volta chì una nova versione hà cumpletu u sviluppu di funziunalità in u ramu maestru è hà scontru i criterii per entra in a prova beta, passa à una nova filiera, cum'è a versione / v4.3. Inoltre, sta nova filiera hè tagged cum'è una versione pre-release, cum'è v4.3-beta1. I sviluppatori ponu riferite à a piattaforma GitHub per accede à a lista completa di rami è tags per ESP-IDF. Hè impurtante à nutà chì a versione beta (versione pre-release) pò ancu avè un numeru significativu di prublemi cunnisciuti. Siccomu a versione beta hè sottumessa à una prova cuntinua, i correzioni di bug sò aghjuntu à sta versione è à u ramu maestru simultaneamente. Intantu, u ramu maestru pò avè digià principiatu à sviluppà novi funziunalità per a prossima versione. Quandu a prova hè quasi cumpleta, una etichetta di candidatu à a liberazione (rc) hè aghjuntu à u ramu, chì indica chì hè un candidatu potenziale per a liberazione ufficiale, cum'è v4.3-rc1. À questu stage, u ramu ferma una versione pre-release.
· Se ùn sò micca scuperti o rappurtati bugs maiò, a versione pre-release eventualmente riceve una etichetta di versione maiò (per esempiu, v5.0) o una etichetta di versione minore (per esempiu, v4.3) è diventa una versione di liberazione ufficiale, chì hè documentata. in a pagina di note di liberazione. In seguitu, qualsiasi bug identificati in questa versione sò riparati nantu à u ramu di liberazione. Dopu chì a prova manuale hè finita, u ramu hè assignatu una etichetta di versione bug-fix (per esempiu, v4.3.2), chì hè ancu riflessu nantu à a pagina di note di liberazione.
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 33
4.1.3 Scelta di una versione adatta
Siccomu ESP-IDF hà iniziatu ufficialmente à supportà ESP32-C3 da a versione v4.3, è v4.4 ùn hè ancu stata liberata ufficialmente à u mumentu di a scrittura di stu libru, a versione utilizata in questu libru hè v4.3.2, chì hè una versione rivista. di v4.3. Tuttavia, hè impurtante à nutà chì da quandu avete lettu stu libru, v4.4 o versioni più recenti pò esse digià dispunibule. Quandu sceglite una versione, ricumandemu i seguenti:
· Per i sviluppatori di livellu d'entrata, hè cunsigliatu di sceglie a versione v4.3 stabile o a so versione rivista, chì si allinea cù l'ex.ampa versione utilizata in stu libru.
· Per scopi di pruduzzione di massa, hè cunsigliatu di utilizà l'ultima versione stabile per prufittà di u supportu tecnicu più aggiornatu.
· Se avete intenzione di sperimentà novi chips o scopre e caratteristiche novi di u produttu, per piacè utilizate u ramu maestru. L'ultima versione cuntene tutte l'ultime funzioni, ma tenite in mente chì ci ponu esse bugs cunnisciuti o scunnisciuti.
· Se a versione stabile chì hè aduprata ùn include micca e funzioni novi desiderate è vulete minimizzà i risichi assuciati à u ramu maestru, cunzidira l'usu di u ramu di liberazione currispundente, cum'è u ramu release / v4.4. U repositoriu GitHub d'Espressif hà da creà prima u ramu liberazione / v4.4 è in seguitu liberà a versione v4.4 stabile basatu annantu à un snapshot storicu specificu di sta filiera, dopu avè finitu tuttu u sviluppu di e funzioni è e teste.
4.1.4 Sopraview di ESP-IDF SDK Directory
L'ESP-IDF SDK hè custituitu di dui cartulari principali: esp-idf è .espressif. U primu cuntene u codice fonte di u repository ESP-IDF files è script di compilazione, mentre chì l'ultime almacena principalmente catene di strumenti di compilazione è altri software. A familiarità cù sti dui cartulari aiutarà i sviluppatori à fà un megliu usu di e risorse dispunibili è accelerà u prucessu di sviluppu. A struttura di u repertoriu di ESP-IDF hè descritta quì sottu:
(1) Repertorio di codice di repository ESP-IDF (/esp/esp-idf), cum'è mostra in Figura 4.2.
a. Cumpunenti di u repertoriu di cumpunenti
Stu repertoriu core integra numerosi cumpunenti software essenziali di ESP-IDF. Nisun codice di prughjettu pò esse cumpilatu senza cunfidendu i cumpunenti in questu repertoriu. Include supportu di driver per vari chips Espressif. Da a libreria LL è l'interfaccia di a biblioteca HAL per i periferichi à u Driver di livellu superiore è Virtual File Supportu di u sistema (VFS), i sviluppatori ponu sceglie i cumpunenti adattati à diversi livelli per i so bisogni di sviluppu. ESP-IDF supporta ancu parechje pile di protocolli di rete standard cum'è TCP / IP, HTTP, MQTT, WebSocket, etc. I sviluppatori ponu utilizà interfacce familiari cum'è Socket per custruisce applicazioni di rete. I cumpunenti furniscenu una comprensione
34 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Figura 4.2. Repertorio di codice di repository ESP-IDF
funziunalità sive è pò esse facilmente integrata in l'applicazioni, chì permettenu à i sviluppatori di fucalizza solu nantu à a logica cummerciale. Certi cumpunenti cumuni includenu: · driver: Stu cumpunente cuntene prugrammi di driver perifericu per diversi Espressif
serie di chip, cum'è GPIO, I2C, SPI, UART, LEDC (PWM), etc. I prugrammi di cunduttori periferichi in questu cumpunenti offrenu interfacce astratti indipendenti da u chip. Ogni periferica hà un capu cumuni file (cum'è gpio.h), eliminendu a necessità di trattà cù e diverse dumande di supportu specifiche per chip. · esp_wifi: Wi-Fi, cum'è un perifericu speciale, hè trattatu cum'è un cumpunente separatu. Include parechje API cum'è l'inizializazione di diversi modi di driver Wi-Fi, a cunfigurazione di i paràmetri è l'elaborazione di l'avvenimenti. Certi funzioni di stu cumpunente sò furnite in forma di biblioteche di ligami statici. ESP-IDF furnisce ancu una documentazione completa di u driver per facilità d'utilizazione.
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 35
· freertos: Stu cumpunente cuntene u codice FreeRTOS cumpletu. In più di furnisce un supportu cumpletu per stu sistema operatore, Espressif hà ancu allargatu u so supportu à i chips dual-core. Per i chips dual-core cum'è ESP32 è ESP32-S3, l'utilizatori ponu creà attività nantu à core specifichi.
b. Document directory docs
Stu repertoriu cuntene i ducumenti di sviluppu ESP-IDF, cumpresu a Guida d'iniziu, Manuale di Riferimentu API, Guida di Sviluppu, etc.
NOTA Dopu à esse cumpilatu da strumenti automatizati, u cuntenutu di stu cartulare hè implementatu in https://docs.espressif.com/projects/esp-idf. Assicuratevi di cambià a destinazione di u documentu à ESP32-C3 è selezziunate a versione ESP-IDF specificata.
c. Strumenti di strumentu di scrittura
Stu repertoriu cuntene strumenti di cumpilazione cumune cum'è idf.py, è l'uttellu di u terminal di monitor idf_monitor.py, etc. U subdirectory cmake cuntene ancu u core script. files di u sistema di compilazione, serve cum'è a basa per l'implementazione di e regule di compilazione ESP-IDF. Quandu aghjunghjenu e variabili di l'ambienti, i cuntenuti in u repertoriu di l'uttene sò aghjuntu à a variabile di l'ambiente di u sistema, chì permettenu à idf.py esse eseguitu direttamente sottu a strada di u prugettu.
d. Esampu cartulare di u prugramma examples
Stu repertoriu comprende una vasta cullizzioni di ESP-IDF exampi prugrammi chì dimostranu l'usu di l'API di cumpunenti. L'exampi li sò urganizati in vari subdirectorii basati nantu à e so categurie:
· principiatu: Stu subdirectory include examples like "hello world" è "blink" per aiutà l'utilizatori à capisce i principii.
· bluetooth: Pudete truvà Bluetooth in relazione examples quì, cumpresi Bluetooth LE Mesh, Bluetooth LE HID, BluFi, è più.
· wifi: Stu subdirectory si cuncentra in Wi-Fi examples, cumpresi i prugrammi basi cum'è Wi-Fi SoftAP, Wi-Fi Station, espnow, è ancu prutucolu di cumunicazione propiu ex.amples from Espressif. Include ancu parechje strati d'applicazione exampi basati nantu à Wi-Fi, cum'è Iperf, Sniffer, è Smart Config.
· periferiche: Stu vastu subdirectory hè ancu divisu in numerosi subfolders basati nantu à i nomi periferichi. Contene principarmenti driver perifericu examples per chips Espressif, cù ogni example cun parechji sub-examples. Per esempiu, u subdirectory gpio include dui examples: GPIO è GPIO matrix keyboard. Hè impurtante à nutà chì micca tutti l'exampi file in questu repertoriu sò applicabili à ESP32-C3.
36 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Per esample, l'examples in usb / host sò solu applicabili à periferiche cù hardware USB Host (cum'è ESP32-S3), è ESP32-C3 ùn hà micca stu perifericu. U sistema di compilazione tipicamente furnisce prompts quandu stabilisce u target. U README file di ogni example liste i chips supportati. · protokolli: Stu subdirectory cuntene example per vari protokolli di cumunicazione, cumpresi MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, chì copre una larga gamma di protokolli di cumunicazione ex.ample necessarie per u sviluppu IoT. · provisioning: Quì, truverete provisioning examples per i metudi diffirenti, cum'è a pruvista Wi-Fi è a pruvista Bluetooth LE. · sistema: Stu subdirectory include u sistema di debugging examples (per esempiu, stack tracing, runtime tracing, task monitoring), power management examples (per esempiu, diversi modi di sonnu, co-processori), è examples liati à i cumpunenti cumuni di u sistema cum'è u terminal di cunsola, u ciclu di l'avvenimentu è u timer di u sistema. · almacenamiento: Dentru stu subdirectory, scuprerete examples di tutti file sistemi è meccanismi di almacenamento supportati da ESP-IDF (cum'è lettura è scrittura di Flash, carta SD è altri supporti di almacenamiento), è ancu example di almacenamiento non volatile (NVS), FatFS, SPIFFS è altri file operazioni di sistema. · security: Stu subdirectory cuntene examples liati à a criptografia flash. (2) L'annuariu di a catena di strumenti di compilazione ESP-IDF (/.espressif), cum'è mostra in Figura 4.3.
Figura 4.3. L'annuariu di a catena di strumenti di compilazione ESP-IDF
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 37
a. Repertorio di distribuzione di software dist
A catena di strumenti ESP-IDF è altri software sò distribuiti in forma di pacchetti compressi. Durante u prucessu di stallazione, l'uttellu di stallazione scarica prima u pacchettu cumpressu à u repertoriu dist, è poi l'estrae in u cartulare specificatu. Una volta a stallazione hè cumpleta, u cuntenutu in questu repertoriu pò esse eliminatu in modu sicuru.
b. Python directory di l'ambiente virtuale python env
Diverse versioni di ESP-IDF si basanu in versioni specifiche di pacchetti Python. L'installazione di sti pacchetti direttamente nantu à u stessu òspite pò purtà à cunflitti trà e versioni di pacchetti. Per affruntà questu, ESP-IDF utilizza ambienti virtuali Python per isolà diverse versioni di pacchettu. Cù stu mecanismu, i sviluppatori ponu installà parechje versioni di ESP-IDF nantu à u stessu host è facilmente cambià trà elli impurtendu diverse variabili di l'ambiente.
c. Strumenti di repertorii di a catena di strumenti di compilazione ESP-IDF
Stu repertoriu cuntene principalmente strumenti di compilazione incruciata necessarii per cumpilà i prughjetti ESP-IDF, cum'è l'arnesi CMake, l'arnesi di creazione Ninja, è a catena di strumenti gcc chì genera u prugramma eseguibile finali. Inoltre, stu repertoriu ospita a libreria standard di a lingua C/C++ cù l'intestazione currispundente files. Se un prugramma riferisce à un capu di sistema file cum'è #include , a catena di strumenti di compilazione localizzarà u stdio.h file in stu cartulare.
4.2 Configurazione di l'ambiente di sviluppu ESP-IDF
L'ambiente di sviluppu ESP-IDF supporta i sistemi operativi mainstream cum'è Windows, Linux è macOS. Questa rùbbrica introduverà cumu stabilisce l'ambiente di sviluppu in ogni sistema. Hè cunsigliatu di sviluppà ESP32-C3 nantu à u sistema Linux, chì serà introduttu in dettagliu quì. Parechje struzzioni sò applicabili in tutte e piattaforme per via di a similitudine di i strumenti di sviluppu. Dunque, hè cunsigliatu di leghje attentamente u cuntenutu di sta sezione.
NOTA Pudete riferite à i ducumenti in linea dispunibili à https://bookc3.espressif.com/esp32c3, chì furnisce i cumandamenti citati in questa sezione.
4.2.1 Configurazione di l'ambiente di sviluppu ESP-IDF in Linux
I strumenti di sviluppu è di debugging GNU necessarii per l'ambiente di sviluppu ESP-IDF sò nativi di u sistema Linux. Inoltre, u terminal di linea di cummanda in Linux hè putente è faciule d'utilizazione, facendu una scelta ideale per u sviluppu ESP32-C3. Poi
38 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
sceglite a vostra distribuzione Linux preferita, ma ricumandemu di utilizà Ubuntu o altri sistemi basati in Debian. Questa sezione furnisce una guida nantu à a creazione di l'ambiente di sviluppu ESP-IDF in Ubuntu 20.04.
1. Installa i pacchetti necessarii
Aprite un novu terminal è eseguite u cumandimu seguitu per installà tutti i pacchetti necessarii. U cumandimu salta automaticamente i pacchetti chì sò digià stallati.
$ 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
TIPS Avete bisognu di usà u contu amministratore è a password per u cumandamentu sopra. Per automaticamente, nisuna infurmazione serà visualizata quandu inserite a password. Simply appughjà u buttone "Enter" à cuntinuà a prucedura.
Git hè un strumentu chjave di gestione di codice in ESP-IDF. Dopu avè stallatu cù successu l'ambiente di sviluppu, pudete aduprà u cumandimu git log per view tutti i cambiamenti di codice fatti da a creazione di ESP-IDF. Inoltre, Git hè ancu utilizatu in ESP-IDF per cunfirmà l'infurmazioni di versione, chì hè necessariu per installà a catena d'uttellu curretta chì currisponde à versioni specifiche. Inseme à Git, altri strumenti impurtanti di u sistema includenu Python. ESP-IDF incorpora numerosi script d'automatizazione scritti in Python. Strumenti cum'è CMake, Ninja-build, è Ccache sò largamente utilizati in i prughjetti C/C++ è servenu cum'è strumenti di compilazione di codice predeterminatu è di custruzzione in ESP-IDF. libusb-1.0-0 è dfu-util sò i principali drivers aduprati per a cumunicazione seriale USB è a brucia di firmware. Una volta chì i pacchetti di software sò stallati, pudete aduprà u spettaculu apt cumanda per ottene descrizioni dettagliate di ogni pacchettu. Per esample, aduprate apt show git per stampà l'infurmazioni di descrizzione per u strumentu Git.
Q: Chì fà se a versione Python ùn hè micca supportata? A: ESP-IDF v4.3 richiede una versione Python chì ùn hè micca più bassa di v3.6. Per e versioni più vechje di Ubuntu, scaricate manualmente è installate una versione più alta di Python è stabilisce Python3 cum'è l'ambiente Python predeterminatu. Pudete truvà struzzioni dettagliate cerchendu a keyword update-alternatives python.
2. Download codice repository ESP-IDF
Apertura un terminal è crea un cartulare chjamatu esp in u vostru cartulare di casa cù u cumandimu mkdir. Pudete sceglie un altru nome per u cartulare se preferite. Aduprà u cumandamentu cd per entre in u cartulare.
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 39
$ mkdir -p /esp $ cd /esp
Aduprate u cumandamentu git clone per scaricà u codice di repository ESP-IDF, cum'è mostra quì sottu:
$ git clone -b v4.3.2 -recursive https://github.com/espressif/esp-idf.git
In u cumandimu sopra, u paràmetru -b v4.3.2 specifica a versione per scaricà (in questu casu, a versione 4.3.2). U paràmetru -recursive assicura chì tutti i sub-repositori di ESP-IDF sò scaricati recursivamente. L'infurmazioni nantu à i sub-repositori ponu esse truvati in u .gitmodules file.
3. Installa a catena di strumentu di sviluppu ESP-IDF
Espressif furnisce un script install.sh automatizatu per scaricà è installà a catena di strumenti. Stu script verifica a versione attuale di l'ESP-IDF è l'ambiente di u sistema operatore, è poi scarica è stalla a versione adatta di i pacchetti di strumenti Python è e catene di strumenti di compilazione. U percorsu di stallazione predeterminatu per a catena di l'uttellu hè /.espressif. Tuttu ciò chì duvete fà hè di navigà à u repertoriu esp-idf è eseguite install.sh.
$ cd /esp/esp-idf $ ./install.sh
Se installate a catena di l'uttellu cù successu, u terminal mostrarà:
Tuttu fattu !
À questu puntu, avete stallatu cù successu l'ambiente di sviluppu ESP-IDF.
4.2.2 Configurazione di l'ambiente di sviluppu ESP-IDF in Windows
1. Scaricate l'installatore di l'arnesi ESP-IDF
CONSIGLI Hè cunsigliatu di cunfigurà l'ambiente di sviluppu ESP-IDF in Windows 10 o sopra. Pudete scaricà u installatore da https://dl.espressif.com/dl/esp-idf/. L'installatore hè ancu un software open-source, è u so codice fonte pò esse viewed in https://github.com/espressif/idf-installer.
· Installatore di strumenti ESP-IDF in linea
Stu installatore hè relativamente chjucu, circa 4 MB di dimensione, è altri pacchetti è codice seranu scaricati durante u prucessu di stallazione. L'avantitagE di l'installatore in linea hè chì micca solu i pacchetti di software è u codice ponu esse scaricati nantu à a dumanda durante u prucessu di stallazione, ma permette ancu l'installazione di tutte e versioni dispunibili di ESP-IDF è l'ultime ramu di codice GitHub (cum'è u ramu maestru) . U svantaghjutage hè chì hè bisognu di una cunnessione di rete durante u prucessu di stallazione, chì pò causà fallimentu di a stallazione per via di prublemi di rete.
40 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
· Installatore di strumenti ESP-IDF offline Questu installatore hè più grande, circa 1 GB di dimensione, è cuntene tutti i pacchetti di software è u codice necessariu per a configurazione di l'ambiente. L'avanti principalitagE di l'installatore offline hè chì pò esse usatu in l'urdinatori senza accessu à Internet, è in generale hà una rata di successu di stallazione più altu. Hè da nutà chì l'installatore offline pò installà solu versioni stabili di ESP-IDF identificati da v*.* o v*.*.*.
2. Eseguite l'installatore di l'utensili ESP-IDF Dopu avè scaricatu una versione adattata di l'installatore (pigliate ESP-IDF Tools Offline 4.3.2 per es.ample quì), cliccate doppiu exe file per lancià l'interfaccia d'installazione ESP-IDF. U seguitu mostra cumu installà a versione stabile ESP-IDF v4.3.2 cù l'installatore offline.
(1) In l'interfaccia "Selezziunà a lingua di l'installazione" mostrata in a Figura 4.4, selezziunate a lingua per esse utilizata da a lista.
Figura 4.4. Interfaccia "Selezziunà a lingua di l'installazione" (2) Dopu avè sceltu a lingua, cliccate "OK" per apre l'interfaccia "Accordu di licenza"
(vede a figura 4.5). Dopu avè lettu cù cura l'accordu di licenza d'installazione, selezziunate "Accetta l'accordu" è cliccate "Next".
Figura 4.5. Interfaccia "Accordu di licenza" Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 41
(3) Riview a cunfigurazione di u sistema in l'interfaccia "Verifica di u sistema di pre-installazione" (vede Figura 4.6). Verificate a versione di Windows è l'infurmazioni di u software antivirus installatu. Cliccate "Next" se tutti l'articuli di cunfigurazione sò normali. Altrimenti, pudete cliccà "Full log" per suluzioni basate nantu à elementi chjave.
Figura 4.6. Cunsiglii di l'interfaccia "Verifica di u sistema prima di l'installazione".
Pudete mandà logs à https://github.com/espressif/idf-installer/issues per aiutu. (4) Selezziunate u cartulare di installazione ESP-IDF. Quì, selezziunate D:/.espressif, cum'è mostra in
Figura 4.7, è cliccate "Next". Per piacè nutate chì .espressif quì hè un repertoriu oculatu. Dopu chì a stallazione hè finita, pudete view u cuntenutu specificu di stu cartulare aprendu u file gestore è mostra elementi nascosti.
Figura 4.7. Selezziunate u cartulare di installazione ESP-IDF 42 ESP32-C3 Wireless Adventure: Una Guida Comprehensiva per IoT
(5) Verificate i cumpunenti chì deve esse installatu, cum'è mostra in Figura 4.8. Hè ricumandemu di utilizà l'opzione predeterminata, vale à dì, a stallazione cumpleta, è dopu cliccate "Next".
Figura 4.8. Selezziunà i cumpunenti da stallà (6) Cunfirmà i cumpunenti da esse installati è cliccate "Installa" per inizià l'installazione automatizata.
prucessu di stallazione, cum'è mostra in Figura 4.9. U prucessu di stallazione pò durà decine di minuti è a barra di prugressu di u prucessu di stallazione hè mostrata in Figura 4.10. Per piacè aspettate pacienza.
Figura 4.9. Preparazione per a stallazione (7) Dopu chì a stallazione hè finita, hè cunsigliatu di verificà "Registrà l'ESP-IDF
Strumenti eseguibili cum'è esclusioni di Windows Defender ... "per impedisce u software antivirus da sguassà files. L'aggiunta di elementi di esclusione pò ancu saltà scans frequenti per antivirus
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 43
Figura 4.10. U software di barra di prugressu di l'installazione, migliurà assai l'efficienza di compilazione di codice di u sistema Windows. Cliccate "Finish" per compie a stallazione di l'ambiente di sviluppu, cum'è mostra in Figura 4.11. Pudete sceglie di verificà "Run ESP-IDF PowerShell Environment" o "Run ESP-IDF command prompt". Eseguite a finestra di compilazione direttamente dopu a stallazione per assicurà chì l'ambiente di sviluppu funziona nurmale.
Figura 4.11. A stallazione cumpleta (8) Aprite l'ambiente di sviluppu installatu in a lista di u prugramma (o ESP-IDF 4.3
Terminal CMD o ESP-IDF 4.3 PowerShell, cum'è mostra in a Figura 4.12), è a variabile di l'ambiente ESP-IDF serà aghjuntu automaticamente quandu eseguisce in u terminal. Dopu quì, pudete aduprà u cumandimu idf.py per operazioni. L'ESP-IDF 4.3 CMD apertu hè mostratu in Figura 4.13. 44 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Figura 4.12. Ambiente di sviluppu installatu
Figura 4.13. ESP-IDF 4.3 CMD
4.2.3 Configurazione di l'ambiente di sviluppu ESP-IDF in Mac
U prucessu di stallà l'ambienti di sviluppu ESP-IDF in un sistema Mac hè u listessu chì in un sistema Linux. I cumandamenti per scaricà u codice di repository è installà a catena di l'uttellu sò esattamente listessi. Solu i cumandamenti per installà i pacchetti di dependenza sò un pocu diffirenti. 1. Installa pacchetti di dependenza Apri un terminal, è installate pip, l'uttellu di gestione di pacchetti Python, eseguendu u cumandimu seguente:
% sudo easy install pip
Installa Homebrew, un strumentu di gestione di pacchetti per macOS, eseguendu u cumandimu seguente:
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Installa i pacchetti di dipendenza richiesti eseguendu u cumandimu seguente:
% brew python3 installà cmake ninja ccache dfu-util
2. Scaricate u codice di repository ESP-IDF Segui l'istruzzioni furnite in a sezione 4.2.1 per scaricà u codice di repository ESP-IDF. I passi sò listessi per scaricà in un sistema Linux.
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 45
3. Installa a catena di strumentu di sviluppu ESP-IDF
Segui l'istruzzioni furnite in a sezione 4.2.1 per installà a catena di strumenti di sviluppu ESP-IDF. I passi sò listessi per a stallazione in un sistema Linux.
4.2.4 Stallà VS Code
Per automaticamente, l'ESP-IDF SDK ùn include micca un strumentu di edizione di codice (ancu se l'ultimu installatore ESP-IDF per Windows offre l'opzione per installà ESP-IDF Eclipse). Pudete utilizà qualsiasi strumentu di edizione di testu di a vostra scelta per edità u codice è poi compilallu cù cumandamenti di terminal.
Un strumentu di edizione di codice populari hè VS Code (Visual Studio Code), chì hè un editore di codice gratuitu è riccu cù una interfaccia amichevule. Offre diverse plugins chì furnisce funziunalità cum'è navigazione di codice, evidenziazione di sintassi, cuntrollu di versione Git è integrazione di terminal. Inoltre, Espressif hà sviluppatu un plugin dedicatu chjamatu Espressif IDF per VS Code, chì simplifica a cunfigurazione di u prughjettu è a debugging.
Pudete aduprà u cumandamentu di codice in u terminal per apre rapidamente u cartulare attuale in VS Code. In alternativa, pudete aduprà u shortcut Ctrl + per apre a cunsola di terminal predeterminata di u sistema in VS Code.
TIPS Hè cunsigliatu di utilizà VS Code per u sviluppu di codice ESP32-C3. Scaricate è installate l'ultima versione di VS Code à https://code.visualstudio.com/.
4.2.5 Introduzione à l'ambienti di sviluppu di terzu
In più di l'ambiente di sviluppu ufficiale ESP-IDF, chì usa principalmente a lingua C, ESP32-C3 sustene ancu altre lingue di prugrammazione mainstream è una larga gamma di ambienti di sviluppu di terzu. Alcune opzioni notevuli includenu:
Arduino: una piattaforma open-source per hardware è software, chì sustene diversi microcontrollers, cumpresu ESP32-C3.
Utiliza a lingua C++ è offre una API simplificata è standardizzata, cumunimenti chjamata lingua Arduino. Arduino hè largamente utilizatu in u sviluppu di prototipi è i cuntesti educativi. Fornisce un pacchettu di software estensibile è un IDE chì permette una compilazione faciule è flashing.
MicroPython: un interprete di lingua Python 3 cuncepitu per eseguisce nantu à e piattaforme di microcontroller integrati.
Cù una lingua di scrittura simplice, pò accede direttamente à e risorse periferiche di ESP32-C3 (cum'è UART, SPI è I2C) è funzioni di cumunicazione (cum'è Wi-Fi è Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
Questu simplifica l'interazzione hardware. MicroPython, cumminatu cù l'ampia libreria di operazioni matematiche di Python, permette l'implementazione di algoritmi cumplessi nantu à ESP32-C3, facilitendu u sviluppu di l'applicazioni AI. Cum'è una lingua di scrittura, ùn hè micca bisognu di compilazione ripetuta; mudificazioni ponu esse fatte è i script ponu esse eseguiti direttamente.
NodeMCU: un interprete di lingua LUA sviluppato per i chip della serie ESP.
Supporta quasi tutte e funzioni periferiche di chips ESP è hè più liggeru di MicroPython. Simile à MicroPython, NodeMCU usa una lingua di scrittura, eliminendu a necessità di compilazione ripetuta.
Inoltre, ESP32-C3 supporta ancu i sistemi operativi NuttX è Zephyr. NuttX hè un sistema operatore in tempu reale chì furnisce interfacce cumpatibili POSIX, rinfurzendu a portabilità di l'applicazioni. Zephyr hè un picculu sistema operatore in tempu reale cuncepitu specificamente per l'applicazioni IoT. Include numerose biblioteche di software necessarie in u sviluppu IoT, evoluzione gradualmente in un ecosistema di software cumpletu.
Stu libru ùn furnisce micca struzzioni d'installazione dettagliate per l'ambienti di sviluppu sopra citati. Pudete installà un ambiente di sviluppu basatu nantu à i vostri bisogni seguitendu a documentazione è l'istruzzioni rispettivi.
4.3 Sistema di compilazione ESP-IDF
4.3.1 Cuncepzioni basi di u sistema di compilazione
Un prughjettu ESP-IDF hè una cullizzioni di un prugramma principale cù una funzione di entrata è parechje cumpunenti funzionali indipendenti. Per esample, un prughjettu chì cuntrolla LED switches principarmenti custituitu di un prugrammu entrata principale è un cumpunenti di driver chì cuntrolla GPIO. Sè vo vulete rializà u cuntrollu luntani LED, vi tocca dinù à aghjunghje Wi-Fi, TCP / IP protocol stack, etc.
U sistema di compilazione pò cumpilà, ligà è generà eseguibile files (.bin) per u codice attraversu un inseme di reguli di custruzzione. U sistema di compilazione di ESP-IDF v4.0 è versioni sopra hè basatu annantu à CMake per automaticamente, è u script di compilazione CMakeLists.txt pò esse usatu per cuntrullà u cumpurtamentu di compilazione di u codice. In più di sustene a sintassi di basa di CMake, u sistema di compilazione ESP-IDF definisce ancu un inseme di regule di compilazione predeterminate è funzioni CMake, è pudete scrive u script di compilazione cù dichjarazioni simplici.
4.3.2 Prughjettu File Struttura
Un prughjettu hè un cartulare chì cuntene un prugramma di entrata principale, cumpunenti definiti da l'utilizatori, è files necessariu per custruisce applicazioni eseguibili, cum'è script di compilazione, cunfigurazione
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 47
files, partition tables, etc. I prughjetti ponu esse copiati è trasmessi, è u listessu eseguibile file pò esse compilatu è generatu in macchine cù a stessa versione di l'ambiente di sviluppu ESP-IDF. Un prughjettu tipicu ESP-IDF file struttura hè mostra in Figura 4.14.
Figura 4.14. Prughjettu tipicu ESP-IDF file struttura Siccomu ESP-IDF sustene parechje chips IoT da Espressif, cumprese ESP32, serie ESP32-S, serie ESP32-C, serie ESP32-H, etc., un scopu deve esse determinatu prima di cumpilà u codice. U scopu hè sia u dispositivu hardware chì eseguisce u prugramma di l'applicazione sia u scopu di creazione di u sistema di compilazione. Sicondu i vostri bisogni, pudete specificà unu o più miri per u vostru prughjettu. Per esample, attraversu u cumandimu idf.py set-target esp32c3, pudete stabilisce u target di compilazione à ESP32-C3, durante u quale i paràmetri predeterminati è u percorsu di a catena di strumenti di compilazione per ESP32C3 seranu caricati. Dopu a compilazione, un prugramma eseguibile pò esse generatu per ESP32C3. Pudete ancu eseguisce u cumandimu set-target di novu per stabilisce un scopu diversu, è u sistema di compilazione pulirà automaticamente è ricunfigurate. Cumpunenti
I cumpunenti in ESP-IDF sò unità di codice modulari è indipendenti gestite in u sistema di compilazione. Sò urganizati cum'è cartulare, cù u nome di u cartulare chì rapprisenta u nome di u cumpunenti per difettu. Ogni cumpunente hà u so propiu script di compilazione chì 48 ESP32-C3 Wireless Adventure: A Guide Comprehensive to IoT
specifica i so paràmetri di compilazione è dipendenze. Durante u prucessu di compilazione, i cumpunenti sò cumpilati in biblioteche statiche separati (.a files) è eventualmente cumminatu cù altri cumpunenti per furmà u prugramma di l'applicazione.
ESP-IDF furnisce funzioni essenziali, cum'è u sistema operatore, i cunduttori periferici è a pila di protokolli di rete, in forma di cumpunenti. Questi cumpunenti sò almacenati in u repertoriu di cumpunenti situatu in u cartulare radicale ESP-IDF. I sviluppatori ùn anu micca bisognu di copià questi cumpunenti à u repertoriu di cumpunenti di myProject. Invece, anu solu bisognu di specificà e relazioni di dipendenza di questi cumpunenti in u CMakeLists.txt di u prughjettu. file utilizendu e direttive REQUIRES o PRIV_REQUIRES. U sistema di compilazione localizà è cumpilà automaticamente i cumpunenti necessarii.
Dunque, u repertoriu di cumpunenti sottu myProject ùn hè micca necessariu. Hè solu utilizatu per include alcuni cumpunenti persunalizati di u prugettu, chì ponu esse biblioteche di terzu o codice definitu da l'utilizatori. Inoltre, i cumpunenti ponu esse acquistati da qualsiasi repertoriu altru ch'è ESP-IDF o u prughjettu attuale, cum'è da un prughjettu open-source salvatu in un altru repertoriu. In questu casu, avete bisognu di aghjunghje a strada di u cumpunente per stabilisce a variàbile EXTRA_COMPONENT_DIRS in u CMakeLists.txt sottu u repertoriu radicali. Stu repertoriu annullarà qualsiasi cumpunente ESP-IDF cù u stessu nome, assicurendu chì u cumpunente currettu hè utilizatu.
Principale di u prugramma di ingressu U cartulare principale in u prughjettu seguita u listessu file struttura cum'è altri cumpunenti (per esempiu, cumpunente 1). In ogni casu, tene un significatu speciale postu chì hè un cumpunente obligatoriu chì deve esse in ogni prughjettu. U cartulare principale cuntene u codice fonte di u prughjettu è u puntu di ingressu di u prugramma di l'utilizatori, tipicamenti chjamatu app_main. Per automaticamente, l'esekzione di u prugramma d'utilizatore principia da stu puntu di entrata. U cumpunente principale hè ancu diffirenti in quantu dipende automaticamente da tutti i cumpunenti in u percorsu di ricerca. Dunque, ùn ci hè bisognu di indicà esplicitamente dipendenze cù e direttive REQUIRES o PRIV_REQUIRES in CMakeLists.txt file.
Cunfigurazione file U cartulare radicali di u prughjettu cuntene una cunfigurazione file chjamatu sdkconfig, chì cuntene i paràmetri di cunfigurazione per tutti i cumpunenti in u prugettu. U sdkconfig file hè generatu automaticamente da u sistema di compilazione è pò esse mudificatu è regeneratu da u cumandimu idf.py menuconfig. L'opzioni di menuconfig venenu principalmente da u Kconfig.projbuild di u prugettu è u Kconfig di i cumpunenti. I sviluppatori di cumpunenti in generale aghjunghjenu elementi di cunfigurazione in Kconfig per rende u cumpunente flessibile è configurabile.
Directoriu di custruzzione Per automaticamente, u cartulare di custruzzione in u prughjettu magazzini intermediate files è u fi-
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 49
programmi eseguibili nal generati da u cumandimu di custruzzione idf.py. In generale, ùn hè micca necessariu accede direttamente à u cuntenutu di u cartulare di custruzzione. ESP-IDF furnisce cumandamenti predefiniti per interagisce cù u repertoriu, cum'è aduprà u cumandamentu flash idf.py per localizà automaticamente u binariu compilatu. file è lampà à l'indirizzu flash specificatu, o usendu u cumandimu idf.py fullclean per pulizziari tuttu u cartulare di custruzzione.
Partition table (partitions.csv) Ogni prughjettu richiede una partition table per dividisce u spaziu di u lampu è specificà a dimensione è l'indirizzu iniziale di u prugramma eseguibile è u spaziu di dati d'utilizatori. Command idf.py flash o prugramma di aghjurnamentu OTA lamperà u firmware à l'indirizzu currispundente secondu sta tabella. ESP-IDF furnisce parechje tabelle di partizioni predeterminate in cumpunenti/partition_table, cum'è partitions_singleapp.csv è partitions_two_ ota.csv, chì ponu esse selezziunate in menuconfig.
Se a tavola di partizione predeterminata di u sistema ùn pò micca risponde à i bisogni di u prugettu, un partitions.csv persunalizatu pò esse aghjuntu à u cartulare di u prughjettu è esse sceltu in menuconfig.
4.3.3 Reguli di Custruzzione Predeterminati di u Sistema di Compilation
Regoli per annullà i cumpunenti cù u stessu nome Durante u prucessu di ricerca di cumpunenti, u sistema di compilazione seguita un ordine specificu. Prima cerca cumpunenti internu di ESP-IDF, poi cerca cumpunenti di u prughjettu di l'utilizatori, è infine cerca cumpunenti in EXTRA_COMPONENT_DIRS. In i casi induve parechji repertorii cuntenenu cumpunenti cù u stessu nome, u cumpunente chì si trova in l'ultimu annuariu annullarà qualsiasi cumpunenti previ cù u stessu nome. Questa regula permette a persunalizazione di i cumpunenti ESP-IDF in u prughjettu di l'utilizatori, mantenendu u codice ESP-IDF originale intactu.
Regoli per cumprendi cumpunenti cumuni in modu predeterminatu Cumu l'annunziate in a sezione 4.3.2, i cumpunenti anu bisognu di specificà esplicitamente e so dipendenze nantu à altri cumpunenti in u CMakeLists.txt. In ogni casu, cumpunenti cumuni cum'è freertos sò automaticamente inclusi in u sistema di custruzzione per difettu, ancu s'è e so relazioni di dipendenza ùn sò micca esplicitamente definite in u script di compilazione. I cumpunenti cumuni di ESP-IDF include freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv, è cxx. Utilizà sti cumpunenti cumuni evita u travagliu ripetitivu quandu scrive CMakeLists.txt è rende più cuncisu.
Regoli per l'annullamentu di l'articuli di cunfigurazione I sviluppatori ponu aghjunghje paràmetri di cunfigurazione predeterminati aghjunghjendu una cunfigurazione predeterminata file chjamatu sdkconfig.defaults à u prugettu. Per esample, aghjunghje CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
DEFAULT_LEVEL_NONE = pò cunfigurà l'interfaccia UART per ùn stampà micca e dati di log per difettu. Inoltre, se paràmetri specifichi anu da esse stabilitu per un mira particulare, una cunfigurazione file chjamatu sdkconfig.defaults.TARGET_NAME pò esse aghjuntu, induve TARGET_NAME pò esse esp32s2, esp32c3, etc. Queste cunfigurazione files sò impurtati in sdkconfig durante a compilazione, cù a cunfigurazione generale predeterminata file sdkconfig.defaults esse importati prima, seguitu da a cunfigurazione specifica di destinazione file, cum'è sdkconfig.defaults.esp32c3. In i casi induve ci sò elementi di cunfigurazione cù u stessu nome, l'ultima cunfigurazione file annulerà u primu.
4.3.4 Introduzione à u Script Compilation
Quandu si sviluppanu un prughjettu cù ESP-IDF, i sviluppatori ùn sò micca solu bisognu di scrive u codice fonte, ma ancu bisognu di scrive CMakeLists.txt per u prughjettu è i cumpunenti. CMakeLists.txt hè un testu file, cunnisciutu ancu cum'è script di compilazione, chì definisce una seria di oggetti di compilazione, elementi di cunfigurazione di compilazione è cumandamenti per guidà u prucessu di compilazione di u codice fonte. U sistema di compilazione di ESP-IDF v4.3.2 hè basatu annantu à CMake. In più di supportà funzioni è cumandamenti CMake nativi, definisce ancu una seria di funzioni persunalizati, facenu assai più faciule per scrive script di compilazione.
I script di compilazione in ESP-IDF includenu principalmente u script di compilazione di prughjettu è i script di compilazione di cumpunenti. U CMakeLists.txt in u repertoriu radicali di u prugettu hè chjamatu script di compilazione di u prughjettu, chì guida u prucessu di compilazione di tuttu u prughjettu. Un script di compilazione di prughjettu basicu include tipicamente e trè linee seguenti:
1. cmake_minimum_required (VERSION 3.5) 2. include ($ENV {IDF_PATH}/tools/cmake/project.cmake) 3. prughjettu (myProject)
Frà elli, u cmake_minimum_required (VERSION 3.5) deve esse piazzatu nantu à a prima linea, chì hè utilizatu per indicà u numeru minimu di versione CMake necessariu da u prugettu. E versioni più recenti di CMake sò generalmente retrocompatibili cù e versioni più vechje, cusì aghjustate u numeru di versione in cunsequenza quandu utilizate cumandamenti CMake più recenti per assicurà a cumpatibilità.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) importa elementi di cunfigurazione predefiniti è cumandamenti di u sistema di compilazione ESP-IDF, cumprese e regule di compilazione predeterminate di u sistema di compilazione descritte in a Sezione 4.3.3. project(myProject) crea u prughjettu stessu è specifica u so nome. Stu nomu serà usatu cum'è u binariu finali di output file nome, vale à dì, myProject.elf è myProject.bin.
Un prughjettu pò avè parechje cumpunenti, cumpresu u cumpunente principale. U cartulare di primu livellu di ogni cumpunente cuntene un CMakeLists.txt file, chì hè chjamatu script di compilazione di cumpunenti. I script di compilazione di cumpunenti sò principarmenti usati per specificà dipendenze di cumpunenti, paràmetri di cunfigurazione, codice fonte files, è inclusu l'intestazione files per
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 51
compilation. Cù a funzione persunalizata di ESP-IDF idf_component_register, u codice minimu necessariu per un script di compilazione di cumpunenti hè cusì:
1. idf_component_register (SRCS "src1.c"
2.
INCLUDE_DIRS "include"
3.
RICHIEDE cumpunente 1)
U paràmetru SRCS furnisce una lista di fonti files in u cumpunente, siparati da spazii se ci sò parechje files. U paràmetru INCLUDE_DIRS furnisce una lista di l'intestazione publica file directory per u cumpunente, chì serà aghjuntu à a strada di ricerca include per altri cumpunenti chì dependenu di u cumpunente attuale. U paràmetru REQUIRES identifica a dependenza di u cumpunente publicu per u cumpunente attuale. Hè necessariu chì i cumpunenti dichjaranu esplicitamente da quali cumpunenti dipendenu, cum'è u cumpunente 2 secondu u cumpunente 1. Tuttavia, per u cumpunente principale, chì dipende di tutti i cumpunenti per automaticamente, u paràmetru REQUIRES pò esse omessi.
Inoltre, i cumandamenti CMake nativi ponu ancu esse utilizati in u script di compilazione. Per esample, aduprate u cumandimu set per stabilisce variàbili, cum'è set(VARIABLE "VALUE").
4.3.5 Introduzione à i cumandamenti cumuni
ESP-IDF usa CMake (strumenta di cunfigurazione di prughjettu), Ninja (strumentu di creazione di prughjettu) è esptool (strumenta flash) in u prucessu di compilazione di codice. Ogni strumentu ghjoca un rolu diversu in u prucessu di compilazione, custruzzione è flash, è sustene ancu diverse cumandamenti operativi. Per facilità u funziunamentu di l'utilizatori, ESP-IDF aghjusta un idf.py front-end unificatu chì permette à i cumandamenti sopra à esse chjamati rapidamente.
Prima di utilizà idf.py, assicuratevi chì:
· A variabile ambientale IDF_PATH di ESP-IDF hè stata aghjunta à u terminal attuale. · U repertoriu di l'esekzione di u cumandimu hè u cartulare radicali di u prughjettu, chì include u
script di compilazione di prughjettu CMakeLists.txt.
I cumandamenti cumuni di idf.py sò i seguenti:
· idf.py -help: mostra una lista di cumandamenti è e so struzzioni d'utilizazione. · idf.py set-target : stabilisce a compilazione taidf.py fullcleanrget, such
cum'è rimpiazzamentu cù esp32c3. · idf.py menuconfig : lanciazione di menuconfig, una cunfigurazione grafica di terminal
strumentu, chì pò selezziunà o mudificà l'opzioni di cunfigurazione, è i risultati di cunfigurazione sò salvati in u sdkconfig file. · idf.py build: inizià a compilazione di codice. L'intermediu files è u prugramma eseguibile finali generatu da a compilazione serà salvatu in u cartulare di custruzzione di u prugettu per automaticamente. U prucessu di compilazione hè incrementale, chì significa chì si solu una fonte file hè mudificatu, solu u mudificatu file serà compilatu a prossima volta.
52 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
· idf.py clean : pulisce l'intermediu files generatu da a compilazione di u prugettu. U prugettu tutale serà obligatu à compilà in a prossima compilazione. Nota chì a cunfigurazione CMake è e mudificazioni di cunfigurazione fatte da menuconfig ùn saranu micca sguassate durante a pulizia.
· idf.py fullclean: sguassate tuttu u cartulare di custruzzione, cumpresi tutti l'output di cunfigurazione CMake files. Quandu custruisce u prughjettu di novu, CMake cunfigurà u prugettu da zero. Per piacè nutate chì stu cumandamentu sguasserà ricursivamente tuttu files in u cartulare di custruzzione, cusì aduprate cun prudenza, è a cunfigurazione di u prugettu file ùn serà micca sguassatu.
· idf.py flash: lampendu u binariu di u prugramma eseguibile file generatu da custruisce à u destinazione ESP32-C3. L'opzioni -p è -b sò usati per stabilisce u nome di u dispositivu di u portu seriale è u baud rate per lampassi, rispettivamente. Se queste duie opzioni ùn sò micca specificate, u portu seriale serà rilevatu automaticamente è u baud rate predeterminatu serà utilizatu.
· idf.py monitor: affissendu l'output di u portu seriale di u destinazione ESP32-C3. L'opzione -p pò esse usata per specificà u nome di u dispositivu di u portu seriale host-side. Durante a stampa di u portu seriale, appughjà a combinazione di tasti Ctrl +] per esce da u monitor.
I cumandamenti sopra ponu ancu esse cumminati cum'è necessariu. Per esample, u cumandimu idf.py custruì u monitor flash hà da eseguisce a compilazione di codice, flash, è apre u monitor di u portu seriale in sequenza.
Pudete visità https://bookc3.espressif.com/build-system per sapè più nantu à u sistema di compilazione ESP-IDF.
4.4 Pràtica: Cumpilà Exampu prugramma "Blink"
4.4.1 Esampl'Analisi
Sta rùbbrica piglià u prugramma Blink cum'è example per analizà u file struttura è regule di codificazione di un veru prughjettu in dettagliu. U prugramma Blink implementa l'effettu lampeggiante LED, è u prughjettu si trova in u cartulare examples/get-started/blink, chì cuntene una fonte file, cunfigurazione files, è parechji script di compilazione.
U prughjettu di luce intelligente introduttu in stu libru hè basatu annantu à questu exampu prugramma. E funzioni seranu aghjunte gradualmente in i capituli successivi per finisce infine.
U codice fonte Per dimustrà tuttu u prucessu di sviluppu, u prugramma Blink hè statu copiatu in esp32c3-iot-projects/device firmware/1 blink.
A struttura di u repertoriu di u prughjettu blink files hè mostratu in Figura 4.15.
U prughjettu blink cuntene solu un cartulare principale, chì hè un cumpunente speciale chì
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 53
Figura 4.15. File struttura di u repertoriu di u prughjettu blink
deve esse inclusu cum'è descrittu in a sezione 4.3.2. U cartulare principale hè principalmente utilizatu per almacenà l'implementazione di a funzione app_main (), chì hè u puntu di ingressu à u prugramma di l'utilizatori.ample solu hà bisognu di utilizà i cumpunenti chì venenu cù ESP-IDF è ùn hà micca bisognu di cumpunenti supplementari. U CMakeLists.txt inclusu in u prughjettu di blink hè utilizatu per guidà u prucessu di compilazione, mentri Kconfig.projbuild hè utilizatu per aghjunghje elementi di cunfigurazione per questu ex.ampu prugramma in menuconfig. Altri inutili files ùn affettaranu micca a compilazione di u codice, perchè ùn saranu micca discututi quì. Una introduzione dettagliata à u prughjettu di blink files hè a siguenti.
1. /*blink.c include l'intestazione seguente files*/
2. #include
// Intestazione di libreria C standard file
3. #include "freertos/freeRTOS.h" //FreeRTOS header principale file
4. #include "freertos/task.h"
//FreeRTOS Task header file
5. #include "sdkconfig.h"
// Header di cunfigurazione file generatu da kconfig
6. #include "driver/gpio.h"
// Intestazione di u driver GPIO file
A fonte file blink.c cuntene una seria di header files currisponde à a funzione dichjarazione-
zioni. ESP-IDF seguita generalmente l'ordine di include l'intestazione di a biblioteca standard files, FreeR-
Intestazione TOS files, intestazione di u driver files, intestazione di altri cumpunenti files, è l'intestazione di u prugettu files.
L'ordine in quale header files sò inclusi ponu influenzà u risultatu finali di compilazione, cusì pruvate
seguitate e regule predeterminate. Si deve esse nutatu chì sdkconfig.h hè generatu automaticamente
da kconfig è pò esse cunfiguratu solu cù u cumandimu idf.py menuconfig.
Mudificazione diretta di questu header file sarà sovrascrittu.
1. /* Pudete selezziunate u GPIO currispundente à u LED in idf.py menuconfig, è u risultatu di mudificazione di menuconfig hè chì u valore di CONFIG_BLINK
_GPIO serà cambiatu. Pudete ancu mudificà direttamente a definizione macro
quì, è cambia CONFIG_BLINK_GPIO à un valore fissu.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main (void)
4. {
5.
/* Configurate IO cum'è a funzione predeterminata GPIO, attivate u modalità pull-up, è
6.
disattivà i modi di input è output */
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Wireless Adventure: Una guida cumpleta per l'IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Set GPIO to output mode*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); mentri (1) {
/*Print log*/ printf(“Spegne u LEDn”); /* Spegni u LED (output low level) */ gpio_set_level(BLINK_GPIO, 0); /*Delay (1000 ms)*/ vTaskDelay (1000 / portTICK_PERIOD_MS); printf ("Attivazione di u LEDn"); /* Accende u LED (output high level) */ gpio_set_level (BLINK_GPIO, 1); vTaskDelay (1000 / portTICK_PERIOD_MS); }
A funzione app_main() in u Blink exampu prugramma serve cum'è u puntu di entrata per i prugrammi d'utilizatori. Hè una funzione simplice senza parametri è senza valore di ritornu. Questa funzione hè chjamata dopu chì u sistema hà finitu l'inizializazione, chì include compiti cum'è l'inizializazione di u portu seriale di log, a cunfigurazione di un core single / dual, è a cunfigurazione di u watchdog.
A funzione app_main() corre in u cuntestu di un compitu chjamatu main. A dimensione di a pila è a priorità di sta attività pò esse aghjustata in menuconfig Componentconfig Common ESP-related.
Per i travaglii simplici cum'è lampendu un LED, tuttu u codice necessariu pò esse implementatu direttamente in a funzione app_main(). Questu generalmente implica l'inizializazione di u GPIO currispondente à u LED è l'usu di un ciclu while (1) per accende è spegne u LED. In alternativa, pudete aduprà l'API FreeRTOS per creà un novu compitu chì gestisce u LED lampeggiante. Quandu u novu compitu hè creatu bè, pudete esce da a funzione app_main ().
U cuntenutu di main/CMakeLists.txt file, chì guida u prucessu di compilazione per u cumpunente principale, hè a siguenti:
1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS "." )
Frà elli, main/CMakeLists.txt chjama solu una funzione di u sistema di compilazione, chì hè idf_component_register. Simile à u CMakeLists.txt per a maiò parte di l'altri cumpunenti, blink.c hè aghjuntu à SRCS, è a fonte. files aghjuntu à SRCS seranu cumpilati. À u listessu tempu, ".", chì rapprisenta a strada induve si trova CMakeLists.txt, deve esse aghjuntu à INCLUDE_DIRS cum'è i repertorii di ricerca per l'intestazione. files. U cuntenutu di CMakeLists.txt hè cusì:
1. #Specify v3.5 cum'è a versione CMake più antica supportata da u prughjettu attuale 2. #Versioni più bassu di v3.5 deve esse aghjurnata prima chì a compilazione cuntinueghja 3. cmake_minimum_required (VERSION 3.5) 4. #Include a cunfigurazione CMake predeterminata di l'ESP -Sistema di compilazione IDF
Capitulu 4. Stabbilimentu di l'ambiente di sviluppu 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Crea un prughjettu chjamatu "blink" 7. prughjettu (myProject)
Frà elli, u CMakeLists.txt in u cartulare radicali include principalmente $ENV{IDF_ PATH}/tools/cmake/project.cmake, chì hè a cunfigurazione CMake principale. file furnitu da ESP-IDF. Hè usatu per cun
Documenti / Risorse
![]() |
Espressif Systems ESP32-C3 Wireless Adventure [pdfGuida di l'utente ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |