ESP32-C3 draadlose avontuur
ESP32-C3 draadlose avontuur
'n Omvattende Gids tot IoT
Espressif Systems 12 Junie 2023
Spesifikasies
- Produk: ESP32-C3 Wireless Adventure
- Vervaardiger: Espressif Systems
- Datum: 12 Junie 2023
Produkgebruiksinstruksies
Voorbereiding
Voordat jy die ESP32-C3 Wireless Adventure gebruik, maak seker jy is
vertroud is met die konsepte en argitektuur van IoT. Dit sal help
jy verstaan hoe die toestel in die groter IoT-ekosisteem inpas
en die potensiële toepassings daarvan in slimhuise.
Inleiding en praktyk van IoT-projekte
In hierdie afdeling sal jy leer oor tipiese IoT-projekte,
insluitend die basiese modules vir algemene IoT-toestelle, basiese modules
van kliënttoepassings, en algemene IoT-wolkplatforms. Hierdie sal
bied jou 'n grondslag vir die begrip en skep van jou
eie IoT-projekte.
Praktyk: Smart Light Project
In hierdie oefenprojek sal jy leer hoe om 'n slim te skep
lig met die ESP32-C3 Wireless Adventure. Die projekstruktuur,
funksies, hardeware voorbereiding en ontwikkelingsproses sal wees
breedvoerig verduidelik.
Projekstruktuur
Die projek bestaan uit verskeie komponente, insluitend die
ESP32-C3 Wireless Adventure, LED's, sensors en 'n wolk
agterkant.
Projek funksies
Die slim ligprojek laat jou toe om die helderheid en
kleur van die LED's op afstand deur 'n mobiele toepassing of web
koppelvlak.
Hardeware Voorbereiding
Om vir die projek voor te berei, sal jy die
nodige hardeware komponente, soos die ESP32-C3 Wireless
Avontuurbord, LED's, weerstande en 'n kragbron.
Ontwikkelingsproses
Die ontwikkelingsproses behels die opstel van die ontwikkeling
omgewing, skryf kode om die LED's te beheer, koppel aan die
wolk-agtergrond, en toets die funksionaliteit van die slim
lig.
Inleiding tot ESP RainMaker
ESP RainMaker is 'n kragtige raamwerk vir die ontwikkeling van IoT
toestelle. In hierdie afdeling sal jy leer wat ESP RainMaker is en
hoe dit in jou projekte geïmplementeer kan word.
Wat is ESP RainMaker?
ESP RainMaker is 'n wolk-gebaseerde platform wat 'n stel van
gereedskap en dienste vir die bou en bestuur van IoT-toestelle.
Die implementering van ESP RainMaker
Hierdie afdeling verduidelik die verskillende komponente betrokke by
implementering van ESP RainMaker, insluitend die eisdiens,
RainMaker Agent, wolk backend, en RainMaker Client.
Oefening: Sleutelpunte vir ontwikkeling met ESP RainMaker
In hierdie oefenafdeling sal jy oor die sleutelpunte leer
oorweeg wanneer jy met ESP RainMaker ontwikkel. Dit sluit toestel in
eis, datasinchronisasie en gebruikersbestuur.
Kenmerke van ESP RainMaker
ESP RainMaker bied verskeie funksies vir gebruikersbestuur, einde
gebruikers en administrateurs. Hierdie kenmerke maak voorsiening vir maklike toestel
opstelling, afstandbeheer en monitering.
Opstel van Ontwikkelingsomgewing
Hierdie afdeling bied 'n oorview van ESP-IDF (Espressif IoT
Ontwikkelingsraamwerk), wat die amptelike ontwikkelingsraamwerk is
vir ESP32-gebaseerde toestelle. Dit verduidelik die verskillende weergawes van
ESP-IDF en hoe om die ontwikkelingsomgewing op te stel.
Hardeware en bestuurderontwikkeling
Hardeware-ontwerp van Smart Light-produkte gebaseer op ESP32-C3
Hierdie afdeling fokus op die hardeware-ontwerp van slim lig
produkte gebaseer op die ESP32-C3 Wireless Adventure. Dit dek die
kenmerke en samestelling van slim ligte produkte, sowel as die
hardeware-ontwerp van die ESP32-C3-kernstelsel.
Kenmerke en samestelling van Smart Light-produkte
Hierdie onderafdeling verduidelik die kenmerke en komponente wat maak
op slim ligte produkte. Dit bespreek die verskillende funksies
en ontwerpoorwegings vir die skep van slim ligte.
Hardeware-ontwerp van ESP32-C3-kernstelsel
Die hardeware-ontwerp van die ESP32-C3-kernstelsel sluit krag in
toevoer, aanskakelvolgorde, stelselterugstelling, SPI-flits, klokbron,
en RF- en antenna-oorwegings. Hierdie onderafdeling verskaf
gedetailleerde inligting oor hierdie aspekte.
Gereelde vrae
V: Wat is ESP RainMaker?
A: ESP RainMaker is 'n wolk-gebaseerde platform wat gereedskap verskaf
en dienste vir die bou en bestuur van IoT-toestelle. Dit vereenvoudig
die ontwikkelingsproses en maak voorsiening vir maklike toestelopstelling, afstandbeheer
beheer en monitering.
V: Hoe kan ek die ontwikkelingsomgewing opstel vir
ESP32-C3?
A: Om die ontwikkelingsomgewing vir ESP32-C3 op te stel, benodig jy
om ESP-IDF (Espressif IoT Development Framework) te installeer en
stel dit in volgens die verskafde instruksies. ESP-IDF is die
amptelike ontwikkelingsraamwerk vir ESP32-gebaseerde toestelle.
V: Wat is die kenmerke van ESP RainMaker?
A: ESP RainMaker bied verskeie kenmerke, insluitend gebruiker
bestuur, eindgebruikerkenmerke en adminkenmerke. Gebruikersbestuur
maak voorsiening vir maklike toestelopeis en datasinchronisasie. Eindgebruiker
kenmerke stel afstandbeheer van toestelle deur 'n mobiele toepassing of
web koppelvlak. Admin-kenmerke bied gereedskap vir toestelmonitering
en bestuur.
ESP32-C3 draadlose avontuur
'n Omvattende Gids tot IoT
Espressif Systems 12 Junie 2023
Inhoud
I Voorbereiding
1
1 Inleiding tot IoT
3
1.1 Argitektuur van IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 IoT-toepassing in slimhuise . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Inleiding en praktyk van IoT-projekte
9
2.1 Inleiding tot tipiese IoT-projekte . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Basiese modules vir algemene IoT-toestelle . . . . . . . . . . . . . . . . . 9
2.1.2 Basiese modules van kliënttoepassings . . . . . . . . . . . . . . . . . . . 10
2.1.3 Inleiding tot algemene IoT-wolkplatforms . . . . . . . . . . . . . . 11
2.2 Oefening: Slimligprojek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Projekstruktuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Projekfunksies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Hardeware Voorbereiding . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Ontwikkelingsproses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Inleiding tot ESP RainMaker
19
3.1 Wat is ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Die implementering van ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Eisdiens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 RainMaker Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Wolk-agterkant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 RainMaker-kliënt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Oefening: Sleutelpunte vir ontwikkeling met ESP RainMaker . . . . . . . . . . . . 25
3.4 Kenmerke van ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Gebruikersbestuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Eindgebruikerkenmerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Admin Kenmerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Opstel van Ontwikkelingsomgewing
31
4.1 ESP-IDF verbyview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 ESP-IDF-weergawes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 ESP-IDF Git Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Kies 'n gepaste weergawe . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Oorview van ESP-IDF SDK Directory . . . . . . . . . . . . . . . . . . . . 34 4.2 Opstel van ESP-IDF Ontwikkelingsomgewing . . . . . . . . . . . . . . . . . 38 4.2.1 Opstel van ESP-IDF Ontwikkelingsomgewing op Linux . . . . . . . . 38 4.2.2 Opstel van ESP-IDF Ontwikkelingsomgewing op Windows . . . . . . 40 4.2.3 Opstel van ESP-IDF Ontwikkelingsomgewing op Mac . . . . . . . . . 45 4.2.4 Installering van VS-kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Inleiding tot derdeparty-ontwikkelingsomgewings . . . . . . . . 46 4.3 ESP-IDF-samestellingstelsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Basiese konsepte van samestellingstelsel . . . . . . . . . . . . . . . . . . 47 4.3.2 Projek File Struktuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Verstekboureëls van die samestellingstelsel . . . . . . . . . . . . . 50 4.3.4 Inleiding tot die samestellingskrip . . . . . . . . . . . . . . . . . . 51 4.3.5 Inleiding tot algemene bevele . . . . . . . . . . . . . . . . . . . 52 4.4 Oefening: Samestelling Exampdie program “Blink” . . . . . . . . . . . . . . . . . . 53 4.4.1 Bvample Ontleding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Samestelling van die Blink-program . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Flits die flikkerprogram . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Serial Port Log Analise van die Blink Program . . . . . . . . . . . . . . 60 4.5 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Hardeware- en drywerontwikkeling
65
5 Hardeware-ontwerp van Smart Light-produkte gebaseer op ESP32-C3
67
5.1 Kenmerke en samestelling van Smart Light-produkte . . . . . . . . . . . . . . . 67
5.2 Hardeware-ontwerp van ESP32-C3-kernstelsel . . . . . . . . . . . . . . . . . . . 70
5.2.1 Kragtoevoer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Aanskakelvolgorde en stelselterugstelling . . . . . . . . . . . . . . . . . . 74
5.2.3 SPI-flits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Klokbron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF en Antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Bandpennetjies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO- en PWM-beheerder . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Oefen: Bou 'n slim ligstelsel met ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Seleksie van modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Konfigurasie van GPIO's van PWM-seine . . . . . . . . . . . . . . . . . . . . 82
5.3.3 Aflaai van firmware en ontfoutingskoppelvlak . . . . . . . . . . . . 82
5.3.4 Riglyne vir RF-ontwerp . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Riglyne vir kragtoevoerontwerp . . . . . . . . . . . . . . . . . . . 86 5.4 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Bestuurderontwikkeling
87
6.1 Bestuurderontwikkelingsproses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 Perifere toepassings . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 LED Driver Basiese beginsels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Kleurruimtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 LED-verduistering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Inleiding tot PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 LED-verduistering aandrywerontwikkeling . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Nie-vlugtige berging (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM-beheerder (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM-programmering . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Oefening: Voeg drywers by Smart Light-projek . . . . . . . . . . . . . . . . . 103
6.5.1 Knoppiebestuurder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 LED-verduistering drywer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Draadlose kommunikasie en beheer
109
7 Wi-Fi-konfigurasie en -verbinding
111
7.1 Basiese beginsels van Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Inleiding tot Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evolusie van IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Wi-Fi-konsepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Wi-Fi-verbinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Basiese beginsels van Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Inleiding tot Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Bluetooth-konsepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth-verbinding . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Wi-Fi-netwerkopstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Wi-Fi-netwerkkonfigurasiegids . . . . . . . . . . . . . . . . . . . . 131
7.3.2 Sagte AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Ander metodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Wi-Fi-programmering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi-komponente in ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Oefening: Wi-Fi-verbinding . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Oefening: Slim Wi-Fi-verbinding . . . . . . . . . . . . . . . . . . . . . 145
7.5 Oefen: Wi-Fi-konfigurasie in Smart Light-projek. . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi-verbinding in Smart Light-projek . . . . . . . . . . . . . . . . . 156 7.5.2 Slim Wi-Fi-konfigurasie . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Plaaslike beheer
159
8.1 Inleiding tot Plaaslike Beheer . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Toepassing van Plaaslike Beheer . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages van Plaaslike Beheer. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Ontdek beheerde toestelle deur slimfone . . . . . . . . . . 161
8.1.4 Datakommunikasie tussen slimfone en toestelle . . . . . . . . 162
8.2 Algemene plaaslike ontdekkingsmetodes . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Uitsaai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Vergelyking tussen uitsaai en multiuitsending . . . . . . . . . . . . . . 176
8.2.4 Multicast-toepassingsprotokol mDNS vir plaaslike ontdekking . . . . . . . . 176
8.3 Algemene kommunikasieprotokolle vir plaaslike data . . . . . . . . . . . . . . . 179
8.3.1 Transmissiebeheerprotokol (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 HyperText Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Gebruiker Datagram-protokol (UDP) . . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Beperkte toepassingsprotokol (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Bluetooth-protokol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Opsomming van datakommunikasieprotokolle . . . . . . . . . . . . . . . 203
8.4 Waarborg van datasekuriteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Inleiding tot vervoerlaagsekuriteit (TLS) . . . . . . . . . . . . . 207
8.4.2 Inleiding tot Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Oefening: Plaaslike beheer in slimligprojek . . . . . . . . . . . . . . . . . . 217
8.5.1 Skep 'n Wi-Fi-gebaseerde plaaslike beheerbediener . . . . . . . . . . . . . . . 217
8.5.2 Verifiëring van plaaslike beheerfunksionaliteit deur skrifte te gebruik. . . . . . . . . . . 221
8.5.3 Skep 'n Bluetooth-gebaseerde plaaslike beheerbediener . . . . . . . . . . . . 222
8.6 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Wolkbeheer
225
9.1 Inleiding tot afstandbeheer . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Wolkdatakommunikasieprotokolle . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT-beginsels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT Boodskapformaat . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokolvergelyking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Opstel van MQTT Broker op Linux en Windows . . . . . . . . . . . . 233 9.2.6 Opstel van MQTT-kliënt gebaseer op ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Versekering van MQTT-datasekuriteit . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Betekenis en funksie van sertifikate . . . . . . . . . . . . . . . . . . . 237 9.3.2 Genereer sertifikate plaaslik . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Instel van MQTT Broker . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Opstel van MQTT-kliënt . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Oefen: Afstandbeheer deur ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMaker Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Node en Wolk Backend Kommunikasie Protokol . . . . . . . . . . . 244 9.4.3 Kommunikasie tussen kliënt en wolk-agtergrond . . . . . . . . . . . 249 9.4.4 Gebruikersrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Basiese Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 RainMaker-toepassing en derdeparty-integrasies . . . . . . . . . . . . . . . 262 9.5 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Ontwikkeling van slimfoontoepassings
269
10.1 Inleiding tot die ontwikkeling van slimfoontoepassings . . . . . . . . . . . . . . . . . . 269
10.1.1 Oorview van Slimfoon App Ontwikkeling. . . . . . . . . . . . . . . 270
10.1.2 Struktuur van die Android-projek . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Struktuur van die iOS-projek . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Lewensiklus van 'n Android-aktiwiteit . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Lewensiklus van iOS ViewBeheerder . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Skep 'n nuwe slimfoontoepassingprojek . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Voorbereiding vir Android-ontwikkeling . . . . . . . . . . . . . . . . . . . 275
10.2.2 Skep 'n nuwe Android-projek . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Byvoeging van afhanklikhede vir MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Toestemmingsversoek in Android . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Voorbereiding vir iOS-ontwikkeling . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Skep 'n nuwe iOS-projek . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Byvoeging van afhanklikhede vir MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Toestemmingsversoek in iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Ontleding van die toepassing se funksionele vereistes . . . . . . . . . . . . . . . . . . 281
10.3.1 Ontleding van die projek se funksionele vereistes . . . . . . . . . . . . 282
10.3.2 Ontleding van Gebruikersbestuurvereistes . . . . . . . . . . . . . . . 282 10.3.3 Ontleding van Toestelvoorsiening en Bindingsvereistes . . . . . . . 283 10.3.4 Ontleding van afstandbeheervereistes . . . . . . . . . . . . . . . . 283 10.3.5 Ontleding van skeduleringsvereistes . . . . . . . . . . . . . . . . . . . 284 10.3.6 Ontleding van Gebruikersentrumvereistes . . . . . . . . . . . . . . . . . . 285 10.4 Ontwikkeling van Gebruikersbestuur . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Inleiding tot RainMaker API's . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Inisieer kommunikasie via slimfoon . . . . . . . . . . . . . . . . 286 10.4.3 Rekeningregistrasie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Rekeningaanmelding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Ontwikkeling van Toestelvoorsiening . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Skandeertoestelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Verbindingstoestelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Genereer geheime sleutels . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Kry Node ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Voorsieningstoestelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Ontwikkeling van Toestelbeheer . . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Bind toestelle aan wolkrekeninge . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Kry 'n lys van toestelle . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Kry Toestelstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Verandering van toestelstatus . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Ontwikkeling van skedulering en gebruikerssentrum . . . . . . . . . . . . . . . . . . . 313 10.7.1 Implementering van skeduleringsfunksie . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementering van Gebruikersentrum . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Meer Wolk API's . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Firmware-opgradering en weergawebestuur
321
11.1 Fermware-opgradering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Oorview van partisietabelle. . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Firmware-opstartproses . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Oorview van die OTA-meganisme. . . . . . . . . . . . . . . . . . . . . 326
11.2 Firmwareweergawebestuur . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Firmwaremerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Terugrol en Anti-terugrol . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Oefening: Oor-die-lug (OTA) Bvample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Opgradeer fermware deur 'n plaaslike gasheer . . . . . . . . . . . . . . . . . 332
11.3.2 Gradeer firmware op deur ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimalisering en Massaproduksie
343
12 Kragbestuur en laekragoptimalisering
345
12.1 ESP32-C3 Kragbestuur . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dinamiese frekwensieskaal . . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Kragbestuurkonfigurasie . . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Laekragmodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modem-slaapmodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Ligte slaapmodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Diepslaapmodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Huidige verbruik in verskillende kragmodusse . . . . . . . . . . . . . 358
12.3 Kragbestuur en laekragontfouting . . . . . . . . . . . . . . . . . 359
12.3.1 Log-ontfouting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 GPIO-ontfouting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Praktyk: Kragbestuur in Smart Light-projek. . . . . . . . . . . . . . . 363
12.4.1 Opstel van kragbestuurfunksie . . . . . . . . . . . . . . . . . 364
12.4.2 Gebruik kragbestuurslotte . . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Verifiëring van kragverbruik . . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Verbeterde toestelsekuriteitskenmerke
369
13.1 Oorview van IoT-toesteldatasekuriteit. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Waarom IoT-toesteldata beveilig? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Basiese Vereistes vir IoT-toesteldatasekuriteit . . . . . . . . . . . . 371
13.2 Beskerming van data-integriteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Inleiding tot integriteitverifikasiemetode . . . . . . . . . . . . . . 372
13.2.2 Integriteitsverifikasie van fermwaredata . . . . . . . . . . . . . . . . . . 373
13.2.3 Eksample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Beskerming van datavertroulikheid . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Inleiding tot data-enkripsie . . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Inleiding tot Flash-enkripsieskema . . . . . . . . . . . . . . . . . 376
13.3.3 Flits-enkripsiesleutelberging . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Werkmodus van flitskodering . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Flits-enkripsieproses . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Inleiding tot NVS-enkripsie . . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Eksamples van Flash Encryption en NVS Encryption . . . . . . . . . . . 384
13.4 Data Legitimiteit Beskerming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Inleiding tot digitale handtekening . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Oorview van Secure Boot Scheme. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Inleiding tot Sagteware Secure Boot . . . . . . . . . . . . . . . . . . . 388 13.4.4 Inleiding tot hardeware veilige selflaai . . . . . . . . . . . . . . . . . . 390 13.4.5 Eksamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Praktyk: Sekuriteitskenmerke in massaproduksie . . . . . . . . . . . . . . . . . . 396 13.5.1 Flitskodering en veilige selflaai . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Aktivering van Flash-enkripsie en veilige selflaai met Batch Flash Tools . . 397 13.5.3 Aktivering van flitskodering en veilige selflaai in Smart Light-projek . . . 398 13.6 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Firmwarebrand en toetsing vir massaproduksie
399
14.1 Firmwarebrand in massaproduksie . . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Definieer datapartisies . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Firmwarebrand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Massaproduksietoetsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Praktyk: Massaproduksiedata in Smart Light-projek. . . . . . . . . . . . . 404
14.4 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insigte: Afstandmoniteringplatform
405
15.1 Inleiding tot ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Aan die gang met ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Aan die gang met ESP Insights in die esp-insights-projek . . . . . . 409
15.2.2 Lopende Example in die esp-insights Project . . . . . . . . . . . . . . . 411
15.2.3 Rapportering van Coredump-inligting . . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Pasmaaklêers van belang . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Rapporteer rede vir herlaai . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Rapporteer persoonlike maatstawwe . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Oefening: Die gebruik van ESP Insights in Smart Light Project . . . . . . . . . . . . . . . 416
15.4 Opsomming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Inleiding
ESP32-C3 is 'n enkelkern Wi-Fi en Bluetooth 5 (LE) mikrobeheerder SoC, gebaseer op die oopbron RISC-V argitektuur. Dit bereik die regte balans van krag, I/O-vermoëns en sekuriteit, en bied dus die optimale koste-effektiewe oplossing vir gekoppelde toestelle. Om verskeie toepassings van die ESP32-C3-familie te wys, sal hierdie boek deur Espressif jou op 'n interessante reis deur AIoT neem, vanaf die basiese beginsels van IoT-projekontwikkeling en omgewingsopstelling tot praktiese eks.amples. Die eerste vier hoofstukke praat oor IoT, ESP RainMaker en ESP-IDF. Hoofstuk 5 en 6 kort oor hardeware-ontwerp en bestuurderontwikkeling. Soos jy vorder, sal jy ontdek hoe om jou projek deur Wi-Fi-netwerke en mobiele toepassings op te stel. Uiteindelik sal u leer om u projek te optimaliseer en dit in massaproduksie te plaas.
As jy 'n ingenieur in verwante velde, 'n sagteware-argitek, 'n onderwyser, 'n student of enigiemand is wat 'n belangstelling in IoT het, is hierdie boek vir jou.
Jy kan die kode aflaai bvample gebruik in hierdie boek vanaf Espressif se webwerf op GitHub. Volg asseblief ons amptelike rekening vir die nuutste inligting oor IoT-ontwikkeling.
Voorwoord
'n Informatiseringswêreld
Op die golf van internet het Internet of Things (IoT) sy groot debuut gemaak om 'n nuwe soort infrastruktuur in digitale ekonomie te word. Om die tegnologie nader aan die publiek te bring, werk Espressif Systems vir die visie dat ontwikkelaars uit alle vlakke van die lewe IoT kan gebruik om van die dringendste probleme van ons tyd op te los. 'n Wêreld van "Intelligente Network of All Things" is wat ons van die toekoms verwag.
Die ontwerp van ons eie skyfies maak 'n kritieke komponent van daardie visie. Dit moet 'n marathon wees wat konstante deurbrake teen tegnologiese grense vereis. Van die "Game Changer" ESP8266 tot die ESP32-reeks wat Wi-Fi en Bluetoothr (LE)-konneksie integreer, gevolg deur ESP32-S3 toegerus met KI-versnelling, Espressif hou nooit op om produkte vir AIoT-oplossings na te vors en te ontwikkel nie. Met ons oopbronsagteware, soos die IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF, en Device Connectivity Platform ESP RainMaker, het ons 'n onafhanklike raamwerk geskep vir die bou van AIoT-toepassings.
Vanaf Julie 2022 het die kumulatiewe verskepings van Espressif se IoT-skyfiestelle 800 miljoen oorskry, wat lei in die Wi-Fi MCU-mark en 'n groot aantal gekoppelde toestelle wêreldwyd aangedryf het. Die strewe na uitnemendheid maak elke Espressif-produk 'n groot treffer vir sy hoë vlak van integrasie en kostedoeltreffendheid. Die vrystelling van ESP32-C3 is 'n belangrike mylpaal van Espressif se self-ontwikkelde tegnologie. Dit is 'n enkelkern, 32-bis, RISC-V-gebaseerde MCU met 400KB SRAM, wat teen 160MHz kan werk. Dit het geïntegreerde 2.4 GHz Wi-Fi en Bluetooth 5 (LE) met 'n langafstand-ondersteuning. Dit skep 'n fyn balans van krag, I/O-vermoëns en sekuriteit, en bied dus die optimale koste-effektiewe oplossing vir gekoppelde toestelle. Gebaseer op sulke kragtige ESP32-C3, is hierdie boek bedoel om lesers te help om IoT-verwante kennis te verstaan met gedetailleerde illustrasie en praktiese eks.amples.
Hoekom het ons hierdie boek geskryf?
Espressif Systems is meer as 'n halfgeleiermaatskappy. Dit is ook 'n IoT-platformmaatskappy, wat altyd streef na deurbrake en innovasies op die gebied van tegnologie. Terselfdertyd het Espressif sy selfontwikkelde bedryfstelsel en sagtewareraamwerk met die gemeenskap oopgemaak en gedeel, wat 'n unieke ekosisteem vorm. Ingenieurs, vervaardigers en tegnologie-entoesiaste ontwikkel aktief nuwe sagtewaretoepassings gebaseer op Espressif se produkte, kommunikeer vrylik en deel hul ervaring. Jy kan die hele tyd ontwikkelaars se fassinerende idees op verskeie platforms sien, soos YouTube en GitHub. Die gewildheid van Espressif se produkte het 'n toenemende aantal skrywers gestimuleer wat meer as 100 boeke vervaardig het gebaseer op Espressif-skyfiestelle, in meer as tien tale, insluitend Engels, Chinees, Duits, Frans en Japannees.
Dit is die ondersteuning en vertroue van gemeenskapsvennote wat Espressif se voortdurende innovasie aanmoedig. “Ons streef daarna om ons skyfies, bedryfstelsels, raamwerke, oplossings, Wolk, besigheidspraktyke, gereedskap, dokumentasie, geskrifte, idees, ens., steeds meer relevant te maak vir die antwoorde wat mense nodig het in die hedendaagse lewe se mees dringende probleme. Dit is Espressif se hoogste ambisie en morele kompas.” sê mnr. Teo Swee Ann, stigter en uitvoerende hoof van Espressif.
Espressif waardeer lees en idees. Aangesien die voortdurende opgradering van IoT-tegnologie hoër vereistes aan ingenieurs stel, hoe kan ons meer mense help om IoT-skyfies, bedryfstelsels, sagtewareraamwerke, toepassingskemas en wolkdiensprodukte vinnig te bemeester? Soos die spreekwoord sê, dit is beter om 'n man te leer hoe om vis te vang as om vir hom vis te gee. In 'n dinkskrum het dit by ons opgekom dat ons 'n boek kan skryf om die sleutelkennis van IoT-ontwikkeling sistematies uit te sorteer. Ons het dit reggekry, vinnig 'n groep senior ingenieurs bymekaargemaak en die ervaring van die tegniese span in ingebedde programmering, IoT-hardeware en sagteware-ontwikkeling gekombineer, wat alles bygedra het tot die publikasie van hierdie boek. In die proses van skryf het ons ons bes probeer om objektief en regverdig te wees, gestroop van die kokon, en bondige uitdrukkings gebruik om die kompleksiteit en sjarme van die Internet van Dinge te vertel. Ons het die algemene vrae noukeurig opgesom, verwys na die terugvoer en voorstelle van die gemeenskap, om die vrae wat in die ontwikkelingsproses teëgekom is duidelik te beantwoord, en praktiese IoT-ontwikkelingsriglyne vir relevante tegnici en besluitnemers te verskaf.
Boek Struktuur
Hierdie boek neem 'n ingenieurgesentreerde perspektief en lê die nodige kennis vir IoT-projekontwikkeling stap vir stap uiteen. Dit bestaan uit vier dele, soos volg:
· Voorbereiding (Hoofstuk 1): Hierdie deel stel die argitektuur van IoT, tipiese IoT-projekraamwerk, die ESP RainMakerr-wolkplatform en die ontwikkelingsomgewing ESP-IDF bekend, om 'n stewige grondslag vir IoT-projekontwikkeling te lê.
· Hardeware- en drywerontwikkeling (Hoofstuk 5): Gebaseer op die ESP6-C32-skyfiestel, brei hierdie deel uit oor die minimum hardewarestelsel- en drywerontwikkeling, en implementeer die beheer van verduistering, kleurgradering en draadlose kommunikasie.
· Draadlose kommunikasie en beheer (Hoofstuk 7): Hierdie deel verduidelik die intelligente Wi-Fi-konfigurasieskema gebaseer op ESP11-C32-skyfie, plaaslike en wolkbeheerprotokolle, en plaaslike en afstandbeheer van toestelle. Dit bied ook skemas vir die ontwikkeling van slimfoontoepassings, firmware-opgradering en weergawebestuur.
· Optimalisering en massaproduksie (Hoofstuk 12-15): Hierdie deel is bedoel vir gevorderde IoT-toepassings, wat fokus op die optimalisering van produkte in kragbestuur, laekragoptimalisering en verbeterde sekuriteit. Dit stel ook firmwarebrand en -toetsing in massaproduksie bekend, en hoe om die lopende status en logs van toestelfirmware te diagnoseer deur die afstandmoniteringplatform ESP Insights.
Oor die Bronkode
Lesers kan die example programme in hierdie boek, hetsy deur die kode handmatig in te voer of deur die bronkode wat die boek vergesel te gebruik. Ons beklemtoon die kombinasie van teorie en praktyk, en stel dus 'n Praktykafdeling op gebaseer op die Smart Light-projek in byna elke hoofstuk. Al die kodes is oopbron. Lesers is welkom om die bronkode af te laai en dit te bespreek in die afdelings wat verband hou met hierdie boek op GitHub en ons amptelike forum esp32.com. Die oopbronkode van hierdie boek is onderhewig aan die bepalings van Apache-lisensie 2.0.
Skrywer se nota
Hierdie boek word amptelik deur Espressif Systems vervaardig en is geskryf deur die maatskappy se senior ingenieurs. Dit is geskik vir bestuurders en R&D-personeel in IoT-verwante industrieë, onderwysers en studente van verwante hoofvakke, en entoesiaste op die gebied van Internet of Things. Ons hoop dat hierdie boek kan dien as 'n werkshandleiding, 'n verwysing en 'n bedboek, om soos 'n goeie tutor en vriend te wees.
Tydens die samestelling van hierdie boek het ons verwys na 'n paar relevante navorsingsresultate van kundiges, vakkundiges en tegnici by die huis en in die buiteland, en ons het ons bes gedoen om dit volgens akademiese norme aan te haal. Dit is egter onvermydelik dat daar 'n paar weglatings moet wees, daarom wil ons hier ons diepe respek en dank aan al die betrokke skrywers betuig. Boonop het ons inligting van die internet aangehaal, daarom wil ons die oorspronklike skrywers en uitgewers bedank en om verskoning vra dat ons nie die bron van elke stukkie inligting kan aandui nie.
Om 'n boek van hoë gehalte te produseer, het ons rondes interne besprekings gereël en geleer uit die voorstelle en terugvoer van proeflesers en uitgewerredakteurs. Hier wil ons u weereens bedank vir u hulp wat alles bygedra het tot hierdie suksesvolle werk.
Laastens, maar die belangrikste, dankie aan almal by Espressif wat so hard gewerk het vir die geboorte en popularisering van ons produkte.
Die ontwikkeling van IoT-projekte behels 'n wye reeks kennis. Beperk tot die lengte van die boek, sowel as die vlak en ervaring van die skrywer, is weglatings onvermydelik. Daarom versoek ons vriendelik dat kenners en lesers ons foute kritiseer en regstel. As jy enige voorstelle vir hierdie boek het, kontak ons asseblief by book@espressif.com. Ons sien uit na jou terugvoer.
Hoe om hierdie boek te gebruik?
Die kode van die projekte in hierdie boek is oopbron. U kan dit van ons GitHub-bewaarplek aflaai en u gedagtes en vrae op ons amptelike forum deel. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Dwarsdeur die boek sal daar dele uitgelig wees soos hieronder getoon.
Bronkode In hierdie boek beklemtoon ons die kombinasie van teorie en praktyk, en stel dus 'n Praktykafdeling oor die Smart Light-projek in byna elke hoofstuk. Ooreenstemmende stappe en bronbladsy sal tussen twee reëls gemerk word wat met die begin tag Bronkode.
NOTA/WENKE Dit is waar jy 'n paar kritiese inligting en herinneringe kan vind vir die suksesvolle ontfouting van jou program. Hulle sal gemerk word tussen twee dik lyne wat begin met die tag NOTA of WENKE.
Die meeste van die opdragte in hierdie boek word uitgevoer onder Linux, gevra deur die karakter "$". As die opdrag supergebruikervoorregte vereis om uit te voer, sal die prompt vervang word deur "#". Die opdragprompt op Mac-stelsels is "%", soos gebruik in Afdeling 4.2.3 Installeer ESP-IDF op Mac.
Die hoofteks in hierdie boek sal in Charter gedruk word, terwyl die kode bvamplese, komponente, funksies, veranderlikes, kode file name, kodegidse en stringe sal in Courier New wees.
Opdragte of tekste wat deur die gebruiker ingevoer moet word, en opdragte wat ingevoer kan word deur die "Enter"-sleutel te druk, sal in Courier New vetdruk gedruk word. Logs en kodeblokke sal in ligblou blokkies aangebied word.
Example:
Tweedens, gebruik esp-idf/components/nvs flash/nvs partisie generator/nvs partisie gen.py om die NVS partisie binêre te genereer file op die ontwikkelingsgasheer met die volgende opdrag:
$ python $IDF PATH/components/nvs flash/nvs partisie generator/nvs partisie gen.py –invoer massa prod.csv –uitvoer massa prod.bin –grootte NVS PARTISIE GROOTTE
Hoofstuk 1
Inleiding
aan
IoT
Aan die einde van die 20ste eeu, met die opkoms van rekenaarnetwerke en kommunikasietegnologie, het internet vinnig in mense se lewens geïntegreer. Namate internettegnologie steeds volwasse word, is die idee van Internet of Things (IoT) gebore. Letterlik beteken IoT 'n internet waar dinge gekoppel is. Terwyl die oorspronklike internet die grense van ruimte en tyd verbreek en die afstand tussen "persoon en persoon" vernou, maak IoT "dinge" 'n belangrike deelnemer, wat "mense" en "dinge" nader aan mekaar bring. In die afsienbare toekoms sal IoT die dryfveer van die inligtingsbedryf word.
So, wat is die internet van dinge?
Dit is moeilik om die Internet van Dinge akkuraat te definieer, aangesien die betekenis en omvang daarvan voortdurend ontwikkel. In 1995 het Bill Gates die eerste keer die idee van IoT in sy boek The Road Ahead na vore gebring. Eenvoudig gestel, IoT stel voorwerpe in staat om inligting met mekaar uit te ruil deur die internet. Sy uiteindelike doel is om 'n "Internet van Alles" te vestig. Dit is 'n vroeë interpretasie van IoT, sowel as 'n fantasie van toekomstige tegnologie. Dertig jaar later, met die vinnige ontwikkeling van ekonomie en tegnologie, word die fantasie werklikheid. Van slimtoestelle, slimhuise, slimstede, Internet van voertuie en draagbare toestelle, tot die "metaverse" wat deur IoT-tegnologie ondersteun word, kom nuwe konsepte voortdurend na vore. In hierdie hoofstuk sal ons begin met 'n verduideliking van die argitektuur van Internet of Things, en dan die mees algemene IoT-toepassing, die slimhuis, bekendstel om jou te help om 'n duidelike begrip van IoT te kry.
1.1 Argitektuur van IoT
Internet of Things behels veelvuldige tegnologieë wat verskillende toepassingsbehoeftes en -vorms in verskillende industrieë het. Om die struktuur, die sleuteltegnologieë en toepassingskenmerke van IoT uit te sorteer, is dit nodig om 'n verenigde argitektuur en 'n standaard tegniese stelsel te vestig. In hierdie boek word die argitektuur van IoT eenvoudig in vier lae verdeel: persepsie- en beheerlaag, netwerklaag, platformlaag en toepassingslaag.
Persepsie- en beheerlaag As die mees basiese element van die IoT-argitektuur, is persepsie- en beheerlaag die kern om die omvattende waarneming van IoT te verwesenlik. Die hooffunksie daarvan is om inligting in te samel, te identifiseer en te beheer. Dit bestaan uit 'n verskeidenheid toestelle met die vermoë van persepsie,
3
identifikasie, beheer en uitvoering, en is verantwoordelik vir die herwinning en ontleding van data soos materiaal eienskappe, gedragstendense en toestelstatus. Op hierdie manier herken IoT die werklike fisiese wêreld. Daarbenewens kan die laag ook die status van die toestel beheer.
Die mees algemene toestelle van hierdie laag is verskeie sensors, wat 'n belangrike rol speel in die versameling en identifikasie van inligting. Sensors is soos menslike sensoriese organe, soos fotosensitiewe sensors wat gelykstaande is aan visie, akoestiese sensors vir gehoor, gassensors vir reuk, en druk- en temperatuursensitiewe sensors vir aanraking. Met al hierdie "sintuiglike organe" word voorwerpe "lewendig" en in staat tot intelligente persepsie, herkenning en manipulasie van die fisiese wêreld.
Netwerklaag Die hooffunksie van die netwerklaag is om inligting, insluitend data verkry vanaf die persepsie- en beheerlaag na gespesifiseerde teiken oor te dra, asook opdragte wat vanaf die toepassingslaag uitgereik word, terug na die persepsie- en beheerlaag. Dit dien as 'n belangrike kommunikasiebrug wat verskillende lae van 'n IoT-stelsel verbind. Om 'n basiese model van Internet of Things op te stel, behels dit twee stappe om voorwerpe in 'n netwerk te integreer: toegang tot internet en transmissie deur die internet.
Toegang tot Internet Internet maak interkonneksie tussen persoon en persoon moontlik, maar versuim om dinge by die groot gesin in te sluit. Voor die koms van IoT was die meeste dinge nie "netwerk-geskik" nie. Danksy die voortdurende ontwikkeling van tegnologie kry IoT dit reg om dinge aan die internet te koppel en sodoende interkonneksie tussen "mense en dinge", en "dinge en dinge" te realiseer. Daar is twee algemene maniere om internetverbinding te implementeer: bedrade netwerktoegang en draadlose netwerktoegang.
Bedrade netwerktoegangmetodes sluit Ethernet, seriële kommunikasie (bv. RS-232, RS-485) en USB in, terwyl draadlose netwerktoegang afhang van draadlose kommunikasie, wat verder verdeel kan word in kortafstand draadlose kommunikasie en langafstand draadlose kommunikasie.
Kortafstand-draadlose kommunikasie sluit ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC) en Radio Frequency Identification (RFID) in. Langafstand draadlose kommunikasie sluit Verbeterde Masjientipe Kommunikasie (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, ens.
Oordrag deur internet Verskillende metodes van internettoegang lei tot ooreenstemmende fisiese transmissieskakel van data. Die volgende ding is om te besluit watter kommunikasieprotokol om te gebruik om die data oor te dra. In vergelyking met internetterminale het die meeste IoT-terminale tans minder
4 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
beskikbare hulpbronne, soos verwerkingswerkverrigting, bergingskapasiteit, netwerktempo, ens., dus is dit nodig om 'n kommunikasieprotokol te kies wat minder hulpbronne in IoT-toepassings in beslag neem. Daar is twee kommunikasieprotokolle wat vandag wyd gebruik word: Message Queuing Telemetry Transport (MQTT) en Constrained Application Protocol (CoAP).
Platformlaag Die platformlaag verwys hoofsaaklik na IoT-wolkplatforms. Wanneer alle IoT-terminale genetwerk is, moet hul data op 'n IoT-wolkplatform saamgevoeg word om bereken en gestoor te word. Die platformlaag ondersteun hoofsaaklik IoT-toepassings om toegang en bestuur van massiewe toestelle te vergemaklik. Dit koppel IoT-terminale aan die wolkplatform, versamel terminale data en reik opdragte aan terminale uit om afstandbeheer te implementeer. As 'n intermediêre diens om toerusting aan industrietoepassings toe te wys, speel die platformlaag 'n verbindende rol in die hele IoT-argitektuur, wat abstrakte besigheidslogika en gestandaardiseerde kerndatamodel dra, wat nie net vinnige toegang tot toestelle kan realiseer nie, maar ook kragtige modulêre vermoëns bied. om aan verskeie behoeftes in industrietoepassingscenario's te voldoen. Die platformlaag bevat hoofsaaklik funksionele modules soos toesteltoegang, toestelbestuur, sekuriteitsbestuur, boodskapkommunikasie, monitering van werking en instandhouding, en datatoepassings.
· Toesteltoegang, wat die verbinding en kommunikasie tussen terminale en IoT-wolkplatforms besef.
· Toestelbestuur, insluitend funksies soos toestelskepping, toestelonderhoud, dataomskakeling, datasinchronisasie en toestelverspreiding.
· Sekuriteitsbestuur, wat die sekuriteit van IoT-data-oordrag verseker vanuit die perspektiewe van sekuriteitstawing en kommunikasiesekuriteit.
· Boodskapkommunikasie, insluitend drie transmissierigtings, dit wil sê die terminaal stuur data na die IoT-wolkplatform, die IoT-wolkplatform stuur data na die bedienerkant of ander IoT-wolkplatforms, en die bedienerkant beheer IoT-toestelle op afstand.
· Monitering van O&M, wat monitering en diagnose, firmware-opgradering, aanlyn ontfouting, logdienste, ens.
· Datatoepassings, wat die berging, ontleding en toepassing van data behels.
Toepassingslaag Die toepassingslaag gebruik die data van die platformlaag om die toepassing te bestuur, dit te filter en te verwerk met gereedskap soos databasisse en ontledingsagteware. Die resulterende data kan gebruik word vir werklike IoT-toepassings soos slim gesondheidsorg, slim landbou, slim huise en slim stede.
Natuurlik kan die argitektuur van IoT in meer lae onderverdeel word, maar maak nie saak uit hoeveel lae dit bestaan nie, die onderliggende beginsel bly in wese dieselfde. Leer
Hoofstuk 1. Inleiding tot IoT 5
oor die argitektuur van IoT help om ons begrip van IoT-tegnologie te verdiep en ten volle funksionele IoT-projekte te bou.
1.2 IoT-toepassing in slimhuise
IoT het deurgedring tot alle vlakke van die lewe, en die IoT-toepassing wat die naaste aan ons verband hou, is die slimhuis. Baie tradisionele toestelle is nou toegerus met een of meer IoT-toestelle, en baie nuutgeboude huise is van die begin af met IoT-tegnologie ontwerp. Figuur 1.1 toon 'n paar algemene slimhuistoestelle.
Figuur 1.1. Algemene slimhuistoestelle Die ontwikkeling van slimhuise kan eenvoudig in slim produk s verdeel wordtage, toneel-interkonneksie stage en intelligente stage, soos getoon in Figuur 1.2.
Figuur 1.2. Ontwikkeling stage van slimhuis 6 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Die eerste stage gaan oor slim produkte. Anders as tradisionele huise, in slim huise, ontvang IoT-toestelle seine met sensors, en word deur draadlose kommunikasietegnologieë soos Wi-Fi, Bluetooth LE en ZigBee genetwerk. Gebruikers kan slim produkte op 'n verskeidenheid maniere beheer, soos slimfoontoepassings, stemassistente, slimluidsprekerbeheer, ens. Die tweede stage fokus op toneel-interkonneksie. In hierdie atage, ontwikkelaars oorweeg dit nie meer om enkele slim produk te beheer nie, maar om twee of meer slim produkte met mekaar te verbind, tot 'n sekere mate te outomatiseer en uiteindelik 'n pasgemaakte toneelmodus te vorm. Byvoorbeeldample, wanneer die gebruiker enige toneelmodusknoppie druk, sal die ligte, gordyne en lugversorgers outomaties by die voorafinstellings aangepas word. Natuurlik is daar die voorvereiste dat die koppelingslogika geredelik opgestel word, insluitend snellertoestande en uitvoeringsaksies. Stel jou voor dat die lugversorgingsverhittingsmodus geaktiveer word wanneer die binnenshuise temperatuur onder 10°C daal; dat daar soggens om 7 uur musiek gespeel word om die gebruiker wakker te maak, slim gordyne oopgemaak word en die rysstoof of broodrooster deur 'n slim sok begin; soos die gebruiker opstaan en klaar was, is ontbyt reeds bedien, sodat daar geen vertraging sal wees om werk toe te gaan nie. Hoe gerieflik het ons lewe geword! Die derde stage gaan na intelligensie stage. Soos meer toegang tot slimhuistoestelle verkry word, sal die tipe data wat gegenereer word, ook so sal wees. Met behulp van wolkrekenaars, groot data en kunsmatige intelligensie is dit soos 'n "slimmer brein" in slim huise geplant is, wat nie meer gereelde opdragte van die gebruiker vereis nie. Hulle versamel data van vorige interaksies en leer die gebruiker se gedragspatrone en -voorkeure, om aktiwiteite te outomatiseer, insluitend die verskaffing van aanbevelings vir besluitneming. Tans is die meeste slim huise op die toneel interkonneksie stage. Namate die penetrasiekoers en intelligensie van slim produkte toeneem, word hindernisse tussen kommunikasieprotokolle verwyder. In die toekoms sal slim huise beslis “slim” word, net soos die KI-stelsel Jarvis in Iron Man, wat nie net die gebruiker kan help om verskeie toestelle te beheer, daaglikse sake te hanteer nie, maar ook superrekenaarkrag en denkvermoë het. In die intelligente stage, mense sal beter dienste ontvang, beide in kwantiteit en kwaliteit.
Hoofstuk 1. Inleiding tot IoT 7
8 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Hoofstuk Inleiding en praktyk van 2 IoT-projekte
In Hoofstuk 1 het ons die argitektuur van IoT bekendgestel, en die rolle en onderlinge verwantskappe van die persepsie- en beheerlaag, netwerklaag, platformlaag en toepassingslaag, asook die ontwikkeling van slimhuise. Net soos wanneer ons leer skilder, is dit egter ver van genoeg om die teoretiese kennis te ken. Ons moet “ons hande vuil maak” om IoT-projekte in die praktyk te bring om die tegnologie werklik te bemeester. Daarbenewens, wanneer 'n projek na die massaproduksie stage, dit is nodig om meer faktore soos netwerkverbinding, konfigurasie, IoT-wolkplatforminteraksie, firmwarebestuur en -opdaterings, massaproduksiebestuur en sekuriteitkonfigurasie in ag te neem. So, waarna moet ons aandag gee wanneer ons 'n volledige IoT-projek ontwikkel? In Hoofstuk 1 het ons genoem dat slimhuis een van die mees algemene IoT-toepassingscenario's is, en slimligte is een van die mees basiese en praktiese toestelle wat in huise, hotelle, gimnasiums, hospitale, ens. gebruik kan word. hierdie boek sal ons die konstruksie van 'n slimligprojek as die beginpunt neem, die komponente en kenmerke daarvan verduidelik en leiding gee oor projekontwikkeling. Ons hoop dat u afleidings uit hierdie saak kan maak om meer IoT-toepassings te skep.
2.1 Inleiding tot tipiese IoT-projekte
Wat ontwikkeling betref, kan basiese funksionele modules van IoT-projekte geklassifiseer word in sagteware- en hardeware-ontwikkeling van IoT-toestelle, kliënttoepassingsontwikkeling en IoT-wolkplatformontwikkeling. Dit is belangrik om die basiese funksionele modules te verduidelik, wat verder in hierdie afdeling beskryf sal word.
2.1.1 Basiese modules vir algemene IoT-toestelle
Sagteware- en hardeware-ontwikkeling van IoT-toestelle sluit die volgende basiese modules in: Data-insameling
As die onderste laag van die IoT-argitektuur, verbind die IoT-toestelle van die persepsie- en beheerlaag sensors en toestelle deur hul skyfies en randapparatuur om data-insameling en werkingsbeheer te verkry.
9
Rekeningbinding en aanvanklike konfigurasie Vir die meeste IoT-toestelle word rekeningbinding en aanvanklike konfigurasie in een operasionele proses voltooi, bv.ample, verbind toestelle met gebruikers deur Wi-Fi-netwerk op te stel.
Interaksie met IoT-wolkplatforms Om IoT-toestelle te monitor en te beheer, is dit ook nodig om dit aan IoT-wolkplatforms te koppel, om opdragte te gee en status aan te gee deur interaksie tussen mekaar.
Toestelbeheer Wanneer dit met IoT-wolkplatforms gekoppel is, kan toestelle met die wolk kommunikeer en geregistreer, gebind of beheer word. Gebruikers kan produkstatus navraag doen en ander bewerkings op die slimfoontoepassing uitvoer deur IoT-wolkplatforms of plaaslike kommunikasieprotokolle.
Firmware-opgradering IoT-toestelle kan ook fermware-opgradering bewerkstellig op grond van vervaardigers se behoeftes. Deur opdragte wat deur die wolk gestuur word, te ontvang, sal firmware-opgradering en weergawebestuur gerealiseer word. Met hierdie firmware-opgraderingsfunksie kan u voortdurend die funksies van IoT-toestelle verbeter, defekte regstel en gebruikerservaring verbeter.
2.1.2 Basiese modules van kliënttoepassings
Kliënttoepassings (bv. slimfoontoepassings) sluit hoofsaaklik die volgende basiese modules in:
Rekeningstelsel en magtiging Dit ondersteun rekening- en toestelmagtiging.
Toestelbeheer Slimfoontoepassings is gewoonlik toegerus met beheerfunksies. Gebruikers kan maklik aan IoT-toestelle koppel, en dit enige tyd en oral bestuur deur slimfoontoepassings. In 'n werklike slimhuis word toestelle meestal deur slimfoontoepassings beheer, wat nie net intelligente bestuur van toestelle moontlik maak nie, maar ook die koste van mannekrag bespaar. Daarom is toestelbeheer 'n moet vir kliënttoepassings, soos toestelfunksie-kenmerkbeheer, toneelbeheer, skedulering, afstandbeheer, toestelkoppeling, ens. Slimhuisgebruikers kan ook tonele volgens persoonlike behoeftes aanpas, beligting, huishoudelike toestelle, ingang beheer. , ens., om die huislewe gemakliker en geriefliker te maak. Hulle kan lugversorging tyd gee, dit op afstand afskakel, die ganglig outomaties aanskakel sodra die deur oopgesluit is, of met een enkele knoppie na die "teater"-modus oorskakel.
Kennisgewing Kliënttoepassings werk intydse status van IoT-toestelle op en stuur waarskuwings wanneer toestelle abnormaal raak.
10 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Na-verkope-kliëntediens Slimfoon-apps kan na-verkope dienste vir produkte verskaf om probleme wat verband hou met IoT-toestelfoute en tegniese bedrywighede betyds op te los.
Gewilde funksies Om aan die behoeftes van verskillende gebruikers te voldoen, kan ander funksies bygevoeg word, soos Skud, NFC, GPS, ens. GPS kan help om die akkuraatheid van toneelbewerkings volgens ligging en afstand in te stel, terwyl die Skud-funksie gebruikers toelaat om die opdragte wat uitgevoer moet word vir spesifieke toestel of toneel deur te skud.
2.1.3 Inleiding tot algemene IoT-wolkplatforms
IoT-wolkplatform is 'n alles-in-een-platform wat funksies soos toestelbestuur, datasekuriteitskommunikasie en kennisgewingbestuur integreer. Volgens hul teikengroep en toeganklikheid kan IoT-wolkplatforms verdeel word in publieke IoT-wolkplatforms (hierna na verwys as "publieke wolk") en private IoT-wolkplatforms (hierna verwys as "private wolk").
Publieke wolk dui gewoonlik op gedeelde IoT-wolkplatforms vir ondernemings of individue, wat deur platformverskaffers bedryf en onderhou word, en deur die internet gedeel word. Dit kan gratis of laekoste wees, en verskaf dienste regdeur die oop publieke netwerk, soos Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, ens. As 'n ondersteunende platform kan publieke wolk stroomop-diensverskaffers integreer en stroomaf eindgebruikers om 'n nuwe waardeketting en ekosisteem te skep.
Privaat wolk is slegs vir ondernemingsgebruik gebou en verseker dus die beste beheer oor data, sekuriteit en diensgehalte. Die dienste en infrastruktuur daarvan word afsonderlik deur ondernemings onderhou, en die ondersteunende hardeware en sagteware word ook aan spesifieke gebruikers opgedra. Ondernemings kan wolkdienste aanpas om aan die behoeftes van hul besigheid te voldoen. Tans het sommige slimhuisvervaardigers reeds private IoT-wolkplatforms en ontwikkel slimhuistoepassings op grond daarvan.
Publieke wolk en private wolk het hul eie voordeeltages, wat later verduidelik sal word.
Om kommunikasieverbinding te bereik, is dit nodig om ten minste ingebedde ontwikkeling aan die toestelkant te voltooi, saam met besigheidsbedieners, IoT-wolkplatforms en slimfoontoepassings. Teenoor so 'n groot projek, verskaf openbare wolk gewoonlik sagteware-ontwikkelingsstelle vir toestel-kant- en slimfoontoepassings om die proses te bespoedig. Beide openbare en private wolk verskaf dienste, insluitend toesteltoegang, toestelbestuur, toestelskadu, en bedryf en instandhouding.
Toesteltoegang IoT-wolkplatforms moet nie net koppelvlakke verskaf vir toesteltoegang deur protokolle te gebruik nie
Hoofstuk 2. Inleiding en praktyk van IoT-projekte 11
soos MQTT, CoAP, HTTPS, en WebSok, maar ook die funksie van toestelsekuriteitstawing om vervalste en onwettige toestelle te blokkeer, wat die risiko om gekompromitteer te word effektief verminder. Sulke verifikasie ondersteun gewoonlik verskillende meganismes, so wanneer toestelle massavervaardig word, is dit nodig om die toestelsertifikaat vooraf toe te ken volgens die geselekteerde verifikasiemeganisme en dit in die toestelle in te brand.
Toestelbestuur Die toestelbestuurfunksie wat deur IoT-wolkplatforms verskaf word, kan vervaardigers nie net help om die aktiveringstatus en aanlynstatus van hul toestelle intyds te monitor nie, maar laat ook opsies toe soos byvoeging/verwydering van toestelle, herwinning, byvoeging/skrap van groepe, firmware-opgradering , en weergawebestuur.
Toestelskadu IoT-wolkplatforms kan 'n aanhoudende virtuele weergawe (toestelskadu) vir elke toestel skep, en die status van die toestelskadu kan gesinchroniseer en verkry word deur slimfoontoepassings of ander toestelle deur internettransmissieprotokolle. Toestelskadu stoor die jongste gerapporteerde status en verwagte status van elke toestel, en selfs al is die toestel vanlyn, kan dit steeds die status verkry deur API's te bel. Toestelskadu verskaf altyd-aan-API's, wat dit makliker maak om slimfoontoepassings te bou wat met toestelle interaksie het.
Bedryf en instandhouding Die O&M-funksie sluit drie aspekte in: · Demonstreer statistiese inligting oor IoT-toestelle en kennisgewings. · Logbestuur laat inligting herwinning oor toestelgedrag, op/af boodskapvloei en boodskapinhoud toe. · Toestelontfouting ondersteun opdragaflewering, konfigurasieopdatering en kontrolering van die interaksie tussen IoT-wolkplatforms en toestelboodskappe.
2.2 Oefening: Slimligprojek
Na die teoretiese inleiding in elke hoofstuk, sal jy 'n oefenafdeling vind wat verband hou met die Smart Light-projek om jou te help om praktiese ervaring op te doen. Die projek is gebaseer op Espressif se ESP32-C3-skyfie en ESP RainMaker IoT Cloud Platform, en dek draadlose module-hardeware in slim ligte produkte, ingebedde sagteware vir slimtoestelle gebaseer op ESP32C3, slimfoontoepassings en ESP RainMaker-interaksie.
Bronkode Vir beter leer- en ontwikkelingservaring is die projek in hierdie boek oopbron. U kan die bronkode van ons GitHub-bewaarplek aflaai by https://github. com/espressif/book-esp32c3-iot-projekte.
12 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
2.2.1 Projekstruktuur
Die Smart Light-projek bestaan uit drie dele: i. Slimligtoestelle gebaseer op ESP32-C3, verantwoordelik vir interaksie met IoT-wolkplatforms, en beheer van die skakelaar, helderheid en kleurtemperatuur van die LED lamp krale. ii. Slimfoontoepassings (insluitend tablettoepassings wat op Android en iOS loop), verantwoordelik vir netwerkkonfigurasie van slimligprodukte, sowel as om navraag te doen en hul status te beheer.
iii. 'n IoT-wolkplatform gebaseer op ESP RainMaker. Ter vereenvoudiging beskou ons die IoT-wolkplatform en besigheidsbediener as geheel in hierdie boek. Besonderhede oor ESP RainMaker sal in Hoofstuk 3 verskaf word.
Die ooreenstemming tussen die Smart Light-projekstruktuur en die argitektuur van IoT word in Figuur 2.1 getoon.
Figuur 2.1. Struktuur van slim ligprojek
2.2.2 Projekfunksies
Verdeel volgens die struktuur, is die funksies van elke deel soos volg. Slim ligte toestelle
· Netwerkkonfigurasie en verbinding. · LED PWM-beheer, soos skakelaar, helderheid, kleurtemperatuur, ens. · Outomatisering of toneelbeheer, bv. tydskakelaar. · Enkripsie en veilige selflaai van die Flash. · Firmware-opgradering en weergawebestuur.
Hoofstuk 2. Inleiding en praktyk van IoT-projekte 13
Slimfoontoepassings · Netwerkopstelling en toestelbinding. · Slim ligprodukbeheer, soos skakelaar, helderheid, kleurtemperatuur, ens. · Outomatisering of toneelinstellings, bv. tydskakelaar. · Plaaslike/afstandbeheer. · Gebruikersregistrasie, aanmelding, ens.
ESP RainMaker IoT-wolkplatform · Maak toegang tot IoT-toestelle moontlik. · Die verskaffing van toestelbedryf-API's wat toeganklik is vir slimfoontoepassings. · Firmware-opgradering en weergawebestuur.
2.2.3 Hardeware Voorbereiding
As jy belangstel om die projek in die praktyk te bring, sal jy ook die volgende hardeware benodig: slimligte, slimfone, Wi-Fi-roeteerders en 'n rekenaar wat aan die installasievereistes van die ontwikkelingsomgewing voldoen. Slim ligte
Slim ligte is 'n nuwe soort gloeilampe, waarvan die vorm dieselfde is as die algemene gloeilamp. ’n Slim lig bestaan uit kapasitor-afwaarts gereguleerde kragtoevoer, draadlose module (met ingeboude ESP32-C3), LED-beheerder en RGB LED-matriks. Wanneer dit aan krag gekoppel is, sal die 15 V DC voltagDie uitset na kapasitor-afstap, diode-regstelling en regulering verskaf energie aan die LED-beheerder en LED-matriks. Die LED-beheerder kan outomaties hoë en lae vlakke met sekere intervalle stuur, en skakel die RGB LED-matriks tussen geslote (ligte aan) en oop (ligte af), sodat dit siaan, geel, groen, pers, blou, rooi en wit lig. Die draadlose module is verantwoordelik om aan die Wi-Fi-roeteerder te koppel, die status van slimligte te ontvang en aan te meld, en om opdragte te stuur om die LED te beheer.
Figuur 2.2. 'n Gesimuleerde slim lig
In die vroeë ontwikkeling stage, jy kan 'n slim lig simuleer deur die ESP32-C3DevKitM-1 bord wat met RGB LED l gekoppel isamp krale (sien Figuur 2.2). Maar jy moet
14 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
daarop dat dit nie die enigste manier is om 'n slim lig saam te stel nie. Die hardeware-ontwerp van die projek in hierdie boek bevat slegs 'n draadlose module (met ingeboude ESP32-C3), maar nie 'n volledige slim ligte hardeware-ontwerp nie. Daarbenewens vervaardig Espressif ook 'n ESP32-C3-gebaseerde oudio-ontwikkelingsbord ESP32C3-Lyra vir die beheer van ligte met klank. Die bord het koppelvlakke vir mikrofone en luidsprekers en kan LED-stroke beheer. Dit kan gebruik word vir die ontwikkeling van ultra-laekoste, hoëprestasie-oudio-uitsaaiers en ritmeligstroke. Figuur 2.3 toon 'n ESP32-C3Lyra-bord gekoppel aan 'n strook van 40 LED-ligte.
Figuur 2.3. ESP32-C3-Lyra gekoppel aan 'n strook van 40 LED-ligte
Slimfone (Android/iOS) Die Smart Light-projek behels die ontwikkeling van 'n slimfoontoepassing vir die opstel en beheer van slimligprodukte.
Wi-Fi-roeteerders Wi-Fi-roeteerders skakel bedrade netwerkseine en mobiele netwerkseine om in draadlose netwerkseine, vir rekenaars, slimfone, tablette en ander draadlose toestelle om aan die netwerk te koppel. Byvoorbeeldample, breëband in die huis hoef net aan 'n Wi-Fi-roeteerder gekoppel te word om draadlose netwerk van Wi-Fi-toestelle te verkry. Die hoofstroomprotokolstandaard wat deur Wi-Fi-roeteerders ondersteun word, is IEEE 802.11n, met 'n gemiddelde TxRate van 300 Mbps, of hoogstens 600 Mbps. Hulle is agtertoe versoenbaar met IEEE 802.11b en IEEE 802.11g. Die ESP32-C3-skyfie deur Espressif ondersteun IEEE 802.11b/g/n, so jy kan 'n enkelband (2.4 GHz) of dubbelband (2.4 GHz en 5 GHz) Wi-Fi-roeteerder kies.
'n Rekenaar (Linux/macOS/Windows) Ontwikkelingsomgewing sal in Hoofstuk 4 bekendgestel word. Hoofstuk 2. Inleiding en Inoefening van IoT-projekte 15
2.2.4 Ontwikkelingsproses
Figuur 2.4. Stappe van die ontwikkeling van die Smart Light-projek
Hardeware-ontwerp Hardeware-ontwerp van IoT-toestelle is noodsaaklik vir 'n IoT-projek. 'n Volledige slimligprojek is bedoel om alamp werk onder hooftoevoer. Verskillende vervaardigers produseer lamps van verskillende style en bestuurder tipes, maar hul draadlose modules is gewoonlik van dieselfde funksie. Om die ontwikkelingsproses van die Smart Ligh-projek te vereenvoudig, dek hierdie boek slegs die hardeware-ontwerp en sagteware-ontwikkeling van draadlose modules.
IoT-wolkplatform-konfigurasie Om IoT-wolkplatforms te gebruik, moet jy projekte op die agterkant opstel, soos om produkte te skep, toestelle te skep, toesteleienskappe in te stel, ens.
Ingeboude sagteware-ontwikkeling vir IoT-toestelle Implementeer verwagte funksies met ESP-IDF, Espressif se toestelkant-SDK, insluitend koppeling aan IoT-wolkplatforms, ontwikkeling van LED-drywers en opgradering van firmware.
Slimfoontoepassingsontwikkeling Ontwikkel slimfoontoepassings vir Android- en iOS-stelsels om gebruikersregistrasie en -aanmelding, toestelbeheer en ander funksies te realiseer.
IoT-toesteloptimalisering Sodra die basiese ontwikkeling van IoT-toestelfunksies voltooi is, kan jy wend tot optimaliseringstake, soos kragoptimalisering.
Massaproduksietoetse Voer massaproduksietoetse uit volgens verwante standaarde, soos toerustingfunksietoets, verouderingstoets, RF-toets, ens.
Ten spyte van die stappe hierbo gelys, is 'n Smart Light-projek nie noodwendig onderhewig aan so 'n prosedure nie, aangesien verskillende take ook terselfdertyd uitgevoer kan word. Byvoorbeeldample, ingebedde sagteware en slimfoontoepassings kan parallel ontwikkel word. Sommige stappe moet dalk ook herhaal word, soos IoT-toesteloptimalisering en massaproduksietoetsing.
16 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
2.3 Opsomming
In hierdie hoofstuk het ons eers die basiese komponente en funksionele modules van 'n IoT-projek uiteengesit, en daarna die Smart Light-geval vir oefening bekendgestel, met verwysing na die struktuur, funksies, hardeware voorbereiding en ontwikkelingsproses. Lesers kan afleidings uit die praktyk maak en selfversekerd raak om IoT-projekte met minimum foute in die toekoms uit te voer.
Hoofstuk 2. Inleiding en praktyk van IoT-projekte 17
18 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Hoofstuk 3
Inleiding
aan
ESP
Reënmaker
Die Internet van Dinge (IoT) bied eindelose moontlikhede om die manier waarop mense leef te verander, maar tog is die ontwikkeling van IoT-ingenieurswese vol uitdagings. Met publieke wolke kan terminale vervaardigers produkfunksionaliteit implementeer deur die volgende oplossings:
Gebaseer op oplossingverskaffers se wolkplatforms Op hierdie manier hoef terminalevervaardigers slegs die produkhardeware te ontwerp, dan die hardeware aan die wolk te koppel deur gebruik te maak van die verskafde kommunikasiemodule, en die produkfunksies volgens die riglyne op te stel. Dit is 'n doeltreffende benadering aangesien dit die behoefte aan bediener-kant en toepassing-kant ontwikkeling en bedrywighede en instandhouding (O&M) uitskakel. Dit stel terminale vervaardigers in staat om op hardeware-ontwerp te fokus sonder om wolkimplementering te oorweeg. Sulke oplossings (bv. toestelfirmware en App) is egter oor die algemeen nie oopbron nie, dus sal die produkfunksies beperk word deur die verskaffer se wolkplatform wat nie aangepas kan word nie. Intussen behoort die gebruiker- en toesteldata ook aan die wolkplatform.
Gebaseer op wolkprodukte In hierdie oplossing, na voltooiing van die hardeware-ontwerp, hoef terminalevervaardigers nie net wolkfunksies te implementeer deur een of meer wolkprodukte wat deur die publieke wolk verskaf word nie, maar moet ook die hardeware met die wolk koppel. Byvoorbeeldample, om aan Amazon te koppel Web Dienste (AWS), terminale vervaardigers moet AWS-produkte soos Amazon API Gateway, AWS IoT Core en AWS Lambda gebruik om toesteltoegang, afstandbeheer, databerging, gebruikersbestuur en ander basiese funksies moontlik te maak. Dit vra nie net eindpuntvervaardigers om wolkprodukte buigsaam te gebruik en op te stel met diepgaande begrip en ryk ervaring nie, maar vereis ook dat hulle die konstruksie- en instandhoudingskoste vir aanvanklike en latere s oorweeg.tages Dit stel groot uitdagings vir die maatskappy se energie en hulpbronne.
In vergelyking met openbare wolke, word private wolke gewoonlik vir spesifieke projekte en produkte gebou. Privaat wolkontwikkelaars kry die hoogste vlak van vryheid in protokolontwerp en besigheidslogika-implementering. Terminalvervaardigers kan produkte en ontwerpskemas na willekeur maak, en gebruikersdata maklik integreer en bemagtig. Die kombinasie van die hoë sekuriteit, skaalbaarheid en betroubaarheid van publieke wolk met die advantagAs privaat wolk het Espressif ESP bekendgestel
19
RainMaker, 'n diep geïntegreerde private wolkoplossing gebaseer op Amazon-wolk. Gebruikers kan ESP RainMaker ontplooi en privaat wolk bou bloot met 'n AWS-rekening.
3.1 Wat is ESP RainMaker?
ESP RainMaker is 'n volledige AIoT-platform wat gebou is met verskeie volwasse AWS-produkte. Dit verskaf verskeie dienste wat benodig word vir massaproduksie, soos toestelwolktoegang, toestelopgradering, agterplaasbestuur, derdeparty-aanmelding, stemintegrasie en gebruikersbestuur. Deur die Serverless Application Repository (SAR) te gebruik wat deur AWS verskaf word, kan terminale vervaardigers vinnig ESP RainMaker in hul AWS-rekeninge ontplooi, wat tyddoeltreffend en maklik is om te bedryf. Bestuur en onderhou deur Espressif, die SAR wat deur ESP RainMaker gebruik word, help ontwikkelaars om wolkonderhoudskoste te verminder en die ontwikkeling van AIoT-produkte te versnel en sodoende veilige, stabiele en aanpasbare AIoT-oplossings te bou. Figuur 3.1 toon die argitektuur van ESP RainMaker.
Figuur 3.1. Argitektuur van ESP RainMaker
Die ESP RainMaker openbare bediener deur Espressif is gratis vir alle ESP-entoesiaste, makers en opvoeders vir oplossingevaluering. Ontwikkelaars kan met Apple-, Google- of GitHub-rekeninge aanmeld en vinnig hul eie IoT-toepassingsprototipes bou. Die publieke bediener integreer Alexa en Google Home, en bied stembeheerdienste, wat deur Alexa Skill en Google Actions ondersteun word. Die semantiese herkenningsfunksie daarvan word ook deur derde partye aangedryf. RainMaker IoT-toestelle reageer slegs op spesifieke aksies. Gaan asseblief die derdeparty-platforms na vir 'n volledige lys van ondersteunde stemopdragte. Daarbenewens bied Espressif 'n publieke RainMaker-toepassing aan vir gebruikers om die produkte deur slimfone te beheer. 20 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
3.2 Die implementering van ESP RainMaker
Soos getoon in Figuur 3.2, bestaan ESP RainMaker uit vier dele: · Eisdiens, wat RainMaker-toestelle in staat stel om dinamies sertifikate te verkry. · RainMaker Cloud (ook bekend as wolk-agtergrond), wat dienste verskaf soos boodskapfiltrering, gebruikersbestuur, databerging en derdeparty-integrasies. · RainMaker Agent, wat RainMaker-toestelle in staat stel om aan RainMaker Cloud te koppel. · RainMaker Client (RainMaker App of CLI skrifte), vir voorsiening, gebruikerskepping, toestelassosiasie en beheer, ens.
Figuur 3.2. Struktuur van ESP RainMaker
ESP RainMaker bied 'n volledige stel gereedskap vir produkontwikkeling en massaproduksie, insluitend: RainMaker SDK
RainMaker SDK is gebaseer op ESP-IDF en verskaf die bronkode van die toestel-kant agent en verwante C API's vir firmware ontwikkeling. Ontwikkelaars hoef net die toepassingslogika te skryf en die res aan die RainMaker-raamwerk oor te laat. Vir meer inligting oor C API's, besoek asseblief https://bookc3.espressif.com/rm/c-api-reference. RainMaker App Die publieke weergawe van RainMaker App laat ontwikkelaars toe om toestelvoorsiening te voltooi, en die status van toestelle (bv. slimbeligtingsprodukte) te beheer en navraag te doen. Dit is beskikbaar op beide iOS- en Android-toepassingswinkels. Vir meer besonderhede, verwys asseblief na Hoofstuk 10. REST API's REST API's help gebruikers om hul eie toepassings soortgelyk aan die RainMaker App te bou. Vir meer inligting, besoek asseblief https://swaggerapis.rainmaker.espressif.com/.
Hoofstuk 3. Inleiding tot ESP RainMaker 21
Python API's 'n Python-gebaseerde CLI, wat saam met die RainMaker SDK kom, word voorsien om alle funksies soortgelyk aan slimfoonkenmerke te implementeer. Vir meer inligting oor Python API's, besoek asseblief https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, met 'n hoër vlak van toegang, word voorsien vir ESP RainMaker private ontplooiing om toestelsertifikate in grootmaat te genereer.
3.2.1 Eisdiens
Alle kommunikasie tussen RainMaker-toestelle en die wolk-agterkant word deur MQTT+TLS uitgevoer. In die konteks van ESP RainMaker, is "Eis" die proses waarin toestelle sertifikate van die Eisdiens verkry om aan die wolk-agtergrond te koppel. Let daarop dat Eisdiens slegs van toepassing is op die publieke RainMaker-diens, terwyl die toestelsertifikate vir private ontplooiing in grootmaat deur Admin CLI gegenereer moet word. ESP RainMaker ondersteun drie tipes eisdiens: Self-eis
Die toestel self haal die sertifikate deur 'n geheime sleutel wat vooraf in eFuse geprogrammeer is nadat dit aan die internet gekoppel is. Gasheergedrewe eis Die sertifikate word verkry van die ontwikkelingsgasheer met die RainMaker-rekening. Ondersteunde eis Die sertifikate word verkry via slimfoontoepassings tydens voorsiening.
3.2.2 RainMaker Agent
Figuur 3.3. Struktuur van RainMaker SDK Die primêre funksie van die RainMaker Agent is om konnektiwiteit te verskaf en die toepassingslaag te help om op-/afskakel-wolkdata te verwerk. Dit is gebou deur die RainMaker SDK 22 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
en ontwikkel gebaseer op die bewese ESP-IDF-raamwerk, met behulp van ESP-IDF-komponente soos RTOS, NVS en MQTT. Figuur 3.3 toon die struktuur van die RainMaker SDK.
Die RainMaker SDK bevat twee hoofkenmerke.
Verbinding
i. Werk saam met Eisdiens om toestelsertifikate te bekom.
ii. Koppeling aan die wolk-agterkant deur die veilige MQTT-protokol te gebruik om afstandverbindings te verskaf en afstandbeheer, boodskapverslaggewing, gebruikersbestuur, toestelbestuur, ens. te implementeer. Dit gebruik die MQTT-komponent in ESP-IDF by verstek en verskaf 'n abstraksielaag om met ander te koppel. protokol stapels.
iii. Voorsien wifi-voorsieningskomponent vir Wi-Fi-verbinding en voorsiening, veral https ota-komponent vir OTA-opgraderings, en veral plaaslike Ctrl-komponent vir plaaslike toestelontdekking en verbinding. Al hierdie doelwitte kan bereik word deur eenvoudige konfigurasie.
Dataverwerking
i. Berging van die toestelsertifikate wat uitgereik is deur Claiming Service en die data wat benodig word wanneer RainMaker uitgevoer word, by verstek deur die koppelvlak wat deur die nvs-flitskomponent verskaf word, en die verskaffing van API's vir ontwikkelaars vir direkte gebruik.
ii. Die gebruik van die terugbelmeganisme om op-/afskakel-wolkdata te verwerk en die data outomaties na die toepassingslaag te deblokkeer vir maklike verwerking deur ontwikkelaars. ByvoorbeeldampDie RainMaker SDK bied ryk koppelvlakke vir die vestiging van TSL (Thing Specification Language) data, wat nodig is om TSL-modelle te definieer om IoT-toestelle te beskryf en funksies soos tydsberekening, aftelling en stembeheer te implementeer. Vir basiese interaktiewe kenmerke soos tydsberekening, bied RainMaker SDK 'n ontwikkelingsvrye oplossing wat eenvoudig geaktiveer kan word wanneer nodig. Dan sal die RainMaker Agent die data direk verwerk, dit na die wolk stuur deur die geassosieerde MQTT-onderwerp, en die dataveranderinge in die wolk-backend terugvoer deur terugbelmeganisme.
3.2.3 Wolk-agtergrond
Die wolk-agtergrond is gebou op AWS Serverless Computing en bereik deur AWS Cognito (identiteitsbestuurstelsel), Amazon API Gateway, AWS Lambda (bedienerlose rekenaardiens), Amazon DynamoDB (NoSQL-databasis), AWS IoT Core (IoT-toegangskern wat MQTT-toegang bied en reëlfiltrering), Amazon Simple Email Service (SES eenvoudige posdiens), Amazon CloudFront (vinnige afleweringsnetwerk), Amazon Simple Queue Service (SQS boodskap toustaan), en Amazon S3 (emmer stoor diens). Dit is daarop gemik om skaalbaarheid en sekuriteit te optimaliseer. Met ESP RainMaker kan ontwikkelaars toestelle bestuur sonder om kode in die wolk te hoef te skryf. Boodskappe wat deur toestelle gerapporteer word, word deursigtig na
Hoofstuk 3. Inleiding tot ESP RainMaker 23
toepassingskliënte of ander derdepartydienste. Tabel 3.1 toon die AWS-wolkprodukte en -funksies wat in die wolk-agtergrond gebruik word, met meer produkte en kenmerke wat ontwikkel word.
Tabel 3.1. AWS-wolkprodukte en -funksies wat deur die wolk-agtergrond gebruik word
AWS Wolk-produk wat deur RainMaker gebruik word
Funksie
AWS Cognito
Bestuur gebruikersgeloofsbriewe en ondersteun derdeparty-aanmeldings
AWS Lambda
Implementering van die kernbesigheidslogika van die wolk-agtergrond
Amazon Timestream Berg tydreeksdata
Amazon DynamoDB Berg kliënte se private inligting
AWS IoT Core
Ondersteun MQTT kommunikasie
Amazon SES
Die verskaffing van e-posversendingdienste
Amazon CloudFront Versnel die bestuur van backend webwebwerf toegang
Amazon SQS
Aanstuur van boodskappe vanaf AWS IoT Core
3.2.4 RainMaker-kliënt
RainMaker-kliënte, soos App en CLI, kommunikeer met die wolk-agtergrond deur REST API's. Gedetailleerde inligting en instruksies oor REST API's kan gevind word in die Swagger-dokumentasie wat deur Espressif verskaf word. RainMaker se mobiele toepassingskliënt is beskikbaar vir beide iOS- en Android-stelsels. Dit laat toestelvoorsiening, beheer en deling toe, sowel as die skep en aktiveer van afteltake en koppel aan derdeparty-platforms. Dit kan UI en ikone outomaties laai volgens die konfigurasie wat deur die toestelle gerapporteer word en die toestel TSL volledig vertoon.
Byvoorbeeldample, as 'n slim lig gebou is op die RainMaker SDK-verskafde examples, sal die ikoon en UI van die gloeilamp outomaties gelaai word wanneer die voorsiening voltooi is. Gebruikers kan die kleur en helderheid van die lig deur die koppelvlak verander en derdeparty-beheer verkry deur Alexa Smart Home Skill of Google Smart Home Actions aan hul ESP RainMaker-rekeninge te koppel. Figuur 3.4 toon die ikoon en UI bvamples van die gloeilamp onderskeidelik op Alexa, Google Home en ESP RainMaker App.
24 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
(a) Bvample – Alexa
(b) Bvample – Google Home
(c) Bvample – ESP RainMaker
Figuur 3.4. Eksamples van ikoon en UI van die gloeilamp op Alexa, Google Home en ESP RainMaker App
3.3 Oefening: Sleutelpunte vir ontwikkeling met ESP RainMaker
Sodra die toestelbestuurderlaag voltooi is, kan ontwikkelaars begin om TSL-modelle te skep en afskakeldata te verwerk deur die API's wat deur RainMaker SDK verskaf word, en die ESP RainMaker basiese dienste te aktiveer gebaseer op die produkdefinisie en vereistes.
Hoofstuk 3. Inleiding tot ESP RainMaker 25
Afdeling 9.4 van hierdie boek sal die implementering van die LED-slimlig in RainMaker verduidelik. Tydens ontfouting kan ontwikkelaars die CLI-nutsgoed in die RainMaker SDK gebruik om met die slim lig te kommunikeer (of REST API's van Swagger af oproep).
Hoofstuk 10 sal die gebruik van REST API's in die ontwikkeling van slimfoontoepassings uitbrei. Die OTA-opgraderings van LED-slimligte sal in Hoofstuk 11 behandel word. As ontwikkelaars die ESP Insights-afstandmonitering geaktiveer het, sal die ESP RainMaker-bestuurs-agterkant die ESP Insights-data vertoon. Besonderhede sal in hoofstuk 15 aangebied word.
ESP RainMaker ondersteun private ontplooiing, wat op die volgende maniere verskil van die publieke RainMaker-bediener:
Eisdiens Om sertifikate in private ontplooiings te genereer, is dit nodig om die RainMaker Admin CLI te gebruik in plaas van Eis. Met openbare bediener moet ontwikkelaars admin regte gegee word om firmware-opgradering te implementeer, maar dit is ongewens in kommersiële ontplooiings. Daarom kan nie afsonderlike stawingdiens verskaf word vir self-eis nie, of admin regte vir gasheergedrewe of bygestaan eis nie.
Foontoepassings In private ontplooiings moet toepassings afsonderlik opgestel en saamgestel word om te verseker dat die rekeningstelsels nie interoperabel is nie.
Derdeparty-aanmeldings en stemintegrasie Ontwikkelaars moet afsonderlik opstel via Google- en Apple-ontwikkelaarrekeninge om derdeparty-aanmeldings moontlik te maak, sowel as die Alexa Skill en Google Voice Assistant-integrasie.
WENKE Vir besonderhede oor wolkontplooiing, besoek asseblief https://customer.rainmaker.espressif. com. Wat fermware betref, vereis migrasie van publieke bediener na private bediener slegs die vervanging van toestelsertifikate, wat die migrasiedoeltreffendheid aansienlik verbeter en die koste van migrasie en sekondêre ontfouting verminder.
3.4 Kenmerke van ESP RainMaker
ESP RainMaker-kenmerke is hoofsaaklik gerig op drie aspekte – gebruikersbestuur, eindgebruikers en administrateurs. Alle kenmerke word ondersteun in beide publieke en private bedieners, tensy anders vermeld.
3.4.1 Gebruikersbestuur
Die gebruikersbestuurkenmerke laat eindgebruikers toe om te registreer, aan te meld, wagwoorde te verander, wagwoorde op te spoor, ens.
26 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Registreer en meld aan Die registrasie- en aanmeldmetodes wat deur RainMaker ondersteun word, sluit in: · E-pos-ID + Wagwoord · Telefoonnommer + Wagwoord · Google-rekening · Apple-rekening · GitHub-rekening (slegs publieke bediener) · Amazon-rekening (slegs privaat bediener)
NOTA Registreer met Google/Amazon deel die gebruiker se e-posadres met RainMaker. Registreer met Apple deel 'n dummy-adres wat Apple spesifiek vir die RainMaker-diens aan die gebruiker toewys. 'n RainMaker-rekening sal outomaties geskep word vir gebruikers wat vir die eerste keer met 'n Google-, Apple- of Amazon-rekening aanmeld.
Verander wagwoord Slegs geldig vir e-pos-ID/foonnommer-gebaseerde aanmeldings. Alle ander aktiewe sessies sal afgemeld word nadat wagwoord verander is. Volgens AWS Cognito-gedrag kan die afgemelde sessies tot 1 uur aktief bly.
Haal wagwoord op Slegs geldig vir e-pos-ID/foonnommer-gebaseerde aanmeldings.
3.4.2 Eindgebruikerkenmerke
Kenmerke wat oop is vir eindgebruikers sluit in plaaslike en afstandbeheer en monitering, skedulering, toestelgroepering, toesteldeling, stootkennisgewings en derdeparty-integrasies.
Afstandbeheer en monitering · Doen navraag oor konfigurasie, parameterwaardes en verbindingstatus vir een of alle toestelle. · Stel parameters vir enkele of veelvuldige toestelle.
Plaaslike beheer en monitering Selfoon en die toestel moet aan dieselfde netwerk gekoppel wees vir plaaslike beheer.
Skedulering · Gebruikers stel sekere aksies vooraf op 'n spesifieke tyd in. · Geen internetverbinding benodig vir die toestel terwyl die skedule uitgevoer word nie. · Een keer of herhaal (deur dae te spesifiseer) vir enkele of veelvuldige toestelle.
Toestelgroepering Ondersteun meervlakkige abstrakte groepering Groepmetadata kan gebruik word om 'n Huiskamerstruktuur te skep.
Hoofstuk 3. Inleiding tot ESP RainMaker 27
Toesteldeling Een of meer toestelle kan met een of meer gebruikers gedeel word.
Stootkennisgewings Eindgebruikers sal stootkennisgewings ontvang vir gebeurtenisse soos · Nuwe toestel(me) bygevoeg/verwyder · Toestel gekoppel aan wolk · Toestel ontkoppel van wolk · Toesteldeelversoeke geskep/aanvaar/afgewys · Waarskuwingsboodskappe wat deur toestelle gerapporteer is
Derdeparty-integrasies Alexa en Google Voice Assistant word ondersteun om RainMaker-toestelle te beheer, insluitend ligte, skakelaars, voetstukke, waaiers en temperatuursensors.
3.4.3 Admin Kenmerke
Admin-kenmerke laat administrateurs toe om toestelregistrasie, toestelgroepering en OTA-opgraderings te implementeer, en om view statistieke en ESP Insights-data.
Toestelregistrasie Genereer toestelsertifikate en registreer by Admin CLI (slegs privaat bediener).
Toestelgroepering Skep abstrakte of gestruktureerde groepe gebaseer op toestelinligting (slegs privaat bediener).
Oor-die-lug (OTA) opgraderings Laai fermware op gebaseer op weergawe en model, na een of meer toestelle of 'n groep Monitor, kanselleer of argiveer OTA-take.
View statistieke Viewbekwame statistieke sluit in: · Toestelregistrasies (sertifikate geregistreer deur die admin) · Toestelaktiverings (toestel vir die eerste keer gekoppel) · Gebruikerrekeninge · Gebruiker-toestel assosiasie
View ESP Insights-data Viewbekwame ESP Insights-data sluit in: · Foute, waarskuwings en pasgemaakte logboeke · Omvalverslae en ontleding · Herlaai redes · Metrieke soos geheuegebruik, RSSI, ens. · Pasgemaakte maatstawwe en veranderlikes
28 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
3.5 Opsomming
In hierdie hoofstuk het ons 'n paar sleutelverskille tussen die openbare RainMaker-ontplooiing en die private ontplooiing bekendgestel. Die private ESP RainMaker-oplossing wat deur Espressif bekendgestel is, is hoogs betroubaar en uitbreidbaar. Alle ESP32-reeksskyfies is gekoppel en aangepas by AWS, wat die koste aansienlik verminder. Ontwikkelaars kan fokus op prototipe-verifikasie sonder om te leer oor AWS-wolkprodukte. Ons het ook die implementering en kenmerke van ESP RainMaker verduidelik, en 'n paar sleutelpunte vir ontwikkeling met behulp van die platform.
Skandeer om ESP RainMaker vir Android af te laai Skandeer om ESP RainMaker vir iOS af te laai
Hoofstuk 3. Inleiding tot ESP RainMaker 29
30 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Hoofstuk Opstel 4 Ontwikkelingsomgewing
Hierdie hoofstuk fokus op ESP-IDF, die amptelike sagteware-ontwikkelingsraamwerk vir ESP32-C3. Ons sal verduidelik hoe om die omgewing op verskeie bedryfstelsels op te stel, en die projekstruktuur en boustelsel van ESP-IDF bekend te stel, sowel as die gebruik van verwante ontwikkelingsinstrumente. Dan sal ons die samestelling en lopende proses van 'n eks aanbiedample projek, terwyl dit 'n gedetailleerde verduideliking van die uitsetlog by elke s biedtage.
4.1 ESP-IDF verbyview
ESP-IDF (Espressif IoT Development Framework) is 'n eenstop IoT-ontwikkelingsraamwerk wat deur Espressif Technology verskaf word. Dit gebruik C/C++ as die hoofontwikkelingstaal en ondersteun kruissamestelling onder hoofstroombedryfstelsels soos Linux, Mac en Windows. Die eksampDie programme wat in hierdie boek ingesluit is, word ontwikkel met behulp van ESP-IDF, wat die volgende kenmerke bied: · SoC-stelselvlakbestuurders. ESP-IDF bevat drywers vir ESP32, ESP32-S2, ESP32-C3,
en ander skyfies. Hierdie drywers sluit in perifere lae vlak (LL) biblioteek, hardeware abstraksie laag (HAL) biblioteek, RTOS ondersteuning en boonste laag bestuurder sagteware, ens. · Noodsaaklike komponente. ESP-IDF bevat fundamentele komponente wat benodig word vir IoT-ontwikkeling. Dit sluit verskeie netwerk protokol stapels soos HTTP en MQTT, 'n kragbestuur raamwerk met dinamiese frekwensie modulasie, en kenmerke soos Flash Encryption en Secure Boot, ens. · Ontwikkeling en produksie gereedskap. ESP-IDF verskaf algemeen gebruikte gereedskap vir die bou, flits en ontfouting tydens ontwikkeling en massaproduksie (sien Figuur 4.1), soos die boustelsel gebaseer op CMake, die kruis-samestelling gereedskap ketting gebaseer op GCC, en die JTAG ontfoutingsinstrument gebaseer op OpenOCD, ens. Dit is opmerklik dat die ESP-IDF-kode hoofsaaklik voldoen aan die Apache 2.0 oopbronlisensie. Gebruikers kan persoonlike of kommersiële sagteware sonder beperkings ontwikkel terwyl hulle aan die bepalings van die oopbronlisensie voldoen. Boonop word permanente patentlisensies gratis aan gebruikers toegestaan, sonder die verpligting om enige wysigings wat aan die bronkode aangebring is, oopbron te maak.
31
Figuur 4.1.
Bou, flits en ontfout-
gereedskap vir ontwikkeling en massaproduksie
4.1.1 ESP-IDF weergawes
Die ESP-IDF-kode word as 'n oopbronprojek op GitHub aangebied. Tans is daar drie hoofweergawes beskikbaar: v3, v4 en v5. Elke hoofweergawe bevat gewoonlik verskeie subversies, soos v4.2, v4.3, ensovoorts. Espressif Systems verseker 'n 30-maande-ondersteuning vir foutoplossings en sekuriteitsreëlings vir elke vrygestelde sub-weergawe. Daarom word hersienings van subversies ook gereeld vrygestel, soos v4.3.1, v4.2.2, ens. Tabel 4.1 toon die ondersteuningstatus van verskillende ESP-IDF weergawes vir Espressif skyfies, wat aandui of hulle in 'n preview stage (ondersteuning bied vir preview weergawes, wat sekere kenmerke of dokumentasie mag ontbreek) of amptelik ondersteun word.
Tabel 4.1. Ondersteuningstatus van verskillende ESP-IDF-weergawes vir Espressif-skyfies
Reeks ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 ondersteun
v4.2 ondersteun ondersteun
v4.3 ondersteun ondersteun ondersteun
v4.4 ondersteun ondersteun ondersteun ondersteun ondersteun
voorview
v5.0 ondersteun ondersteun ondersteun ondersteun ondersteun ondersteun preview
32 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Die herhaling van hoof weergawes behels dikwels aanpassings aan die raamwerkstruktuur en opdaterings aan die samestellingstelsel. Byvoorbeeldample, die groot verandering van v3.* na v4.* was die geleidelike migrasie van die boustelsel van Make na CMake. Aan die ander kant behels iterasie van minderjarige weergawes tipies die toevoeging van nuwe funksies of ondersteuning vir nuwe skyfies.
Dit is belangrik om die verhouding tussen stabiele weergawes en GitHub-takke te onderskei en te verstaan. Weergawes gemerk as v*.* of v*.*.* verteenwoordig stabiele weergawes wat volledige interne toetsing deur Espressif geslaag het. Sodra dit reggestel is, bly die kode, gereedskapketting en vrystellingsdokumente vir dieselfde weergawe onveranderd. GitHub-takke (bv. die vrystelling/v4.3-tak) ondergaan egter gereelde kodeverpligtinge, dikwels op 'n daaglikse basis. Daarom kan twee kodebrokkies onder dieselfde tak verskil, wat ontwikkelaars noodsaak om hul kode dadelik dienooreenkomstig op te dateer.
4.1.2 ESP-IDF Git Workflow
Espressif volg 'n spesifieke Git-werkvloei vir ESP-IDF, soos volg uiteengesit:
· Nuwe veranderinge word aangebring op die meestertak, wat as die hoofontwikkelingstak dien. Die ESP-IDF weergawe op die hooftak dra altyd 'n -dev tag om aan te dui dat dit tans onder ontwikkeling is, soos v4.3-dev. Veranderinge op die meestertak sal eers herviewed en getoets in Espressif se interne bewaarplek, en dan na GitHub gestoot nadat outomatiese toetsing voltooi is.
· Sodra 'n nuwe weergawe kenmerkontwikkeling op die meestertak voltooi het en aan die kriteria voldoen het om beta-toetsing in te voer, gaan dit oor na 'n nuwe tak, soos vrystelling/v4.3. Daarbenewens is hierdie nuwe tak tagged as 'n voorvrystelling weergawe, soos v4.3-beta1. Ontwikkelaars kan na die GitHub-platform verwys om toegang tot die volledige lys takke en tags vir ESP-IDF. Dit is belangrik om daarop te let dat die beta-weergawe (vooraf-weergawe) steeds 'n aansienlike aantal bekende kwessies kan hê. Aangesien die beta-weergawe deurlopende toetsing ondergaan, word foutoplossings gelyktydig by beide hierdie weergawe en die hooftak gevoeg. Intussen het die meestertak dalk reeds begin met die ontwikkeling van nuwe funksies vir die volgende weergawe. Wanneer die toets amper voltooi is, word 'n vrystellingskandidaat (rc)-etiket by die tak gevoeg, wat aandui dat dit 'n potensiële kandidaat vir die amptelike vrystelling is, soos v4.3-rc1. Op hierdie stage, die tak bly 'n pre-release weergawe.
· As geen groot foute ontdek of gerapporteer word nie, ontvang die voorvrystelling weergawe uiteindelik 'n hoof weergawe-etiket (bv. v5.0) of 'n minderjarige weergawe-etiket (bv. v4.3) en word 'n amptelike vrystelling weergawe, wat gedokumenteer is in die vrystellingnotas-bladsy. Daarna word enige foute wat in hierdie weergawe geïdentifiseer is, op die vrystellingtak reggestel. Nadat handmatige toetsing voltooi is, word 'n foutoplossing-weergawe-etiket (bv. v4.3.2) aan die tak toegeken, wat ook op die vrystellingnotas-bladsy weerspieël word.
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 33
4.1.3 Kies 'n gepaste weergawe
Aangesien ESP-IDF ESP32-C3 amptelik vanaf weergawe v4.3 begin ondersteun het, en v4.4 nog nie amptelik vrygestel is ten tyde van die skryf van hierdie boek nie, is die weergawe wat in hierdie boek gebruik word v4.3.2, wat 'n hersiene weergawe is van v4.3. Dit is egter belangrik om daarop te let dat teen die tyd dat jy hierdie boek lees, v4.4 of nuwer weergawes dalk reeds beskikbaar is. Wanneer u 'n weergawe kies, beveel ons die volgende aan:
· Vir intreevlakontwikkelaars is dit raadsaam om die stabiele v4.3-weergawe of sy hersiene weergawe te kies, wat ooreenstem met die exampdie weergawe wat in hierdie boek gebruik word.
· Vir massaproduksiedoeleindes word dit aanbeveel om die nuutste stabiele weergawe te gebruik om voordeel te trek uit die mees onlangse tegniese ondersteuning.
· As jy van plan is om met nuwe skyfies te eksperimenteer of nuwe produkkenmerke te verken, gebruik asseblief die meestertak. Die nuutste weergawe bevat al die nuutste kenmerke, maar hou in gedagte dat daar bekende of onbekende foute kan wees.
· As die stabiele weergawe wat gebruik word nie die verlangde nuwe kenmerke insluit nie en jy wil die risiko's wat met die meestertak geassosieer word, minimaliseer, oorweeg dit om die ooreenstemmende vrystellingtak, soos die vrystelling/v4.4-tak, te gebruik. Espressif se GitHub-bewaarplek sal eers die vrystelling/v4.4-tak skep en daarna die stabiele v4.4-weergawe vrystel gebaseer op 'n spesifieke historiese momentopname van hierdie tak, nadat alle kenmerkontwikkeling en -toetsing voltooi is.
4.1.4 Oorview van ESP-IDF SDK Directory
Die ESP-IDF SDK bestaan uit twee hoofgidse: esp-idf en .espressif. Eersgenoemde bevat ESP-IDF-bewaarplek se bronkode files en samestellingsskrifte, terwyl laasgenoemde hoofsaaklik samestellingsinstrumentkettings en ander sagteware stoor. Bekendheid met hierdie twee gidse sal ontwikkelaars help om beskikbare hulpbronne beter te gebruik en die ontwikkelingsproses te bespoedig. Die gidsstruktuur van ESP-IDF word hieronder beskryf:
(1) ESP-IDF-bewaarplekkodegids (/esp/esp-idf), soos getoon in Figuur 4.2.
a. Komponent gids komponente
Hierdie kerngids integreer talle noodsaaklike sagtewarekomponente van ESP-IDF. Geen projekkode kan saamgestel word sonder om op die komponente in hierdie gids staat te maak nie. Dit sluit bestuurderondersteuning vir verskeie Espressif-skyfies in. Van die LL-biblioteek en HAL-biblioteekkoppelvlakke vir randapparatuur tot die boonste vlak bestuurder en virtuele File Stelsel (VFS) laag ondersteuning, ontwikkelaars kan die toepaslike komponente op verskillende vlakke kies vir hul ontwikkelingsbehoeftes. ESP-IDF ondersteun ook verskeie standaard netwerk protokol stapels soos TCP/IP, HTTP, MQTT, WebSocket, ens. Ontwikkelaars kan bekende koppelvlakke soos Socket gebruik om netwerktoepassings te bou. Komponente bied begrip-
34 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Figuur 4.2. ESP-IDF bewaarplek kode gids
siewe funksionaliteit en kan maklik in toepassings geïntegreer word, wat ontwikkelaars in staat stel om uitsluitlik op die besigheidslogika te fokus. Sommige algemene komponente sluit in: · drywer: Hierdie komponent bevat perifere drywerprogramme vir verskeie Espressif
skyfiereekse, soos GPIO, I2C, SPI, UART, LEDC (PWM), ens. Die perifere drywerprogramme in hierdie komponent bied skyfie-onafhanklike abstrakte koppelvlakke. Elke randapparaat het 'n gemeenskaplike kopskrif file (soos gpio.h), wat die behoefte uitskakel om verskillende chip-spesifieke ondersteuningsvrae te hanteer. · esp_wifi: Wi-Fi, as 'n spesiale randapparaat, word as 'n aparte komponent hanteer. Dit sluit verskeie API's in, soos die inisialisering van verskeie Wi-Fi-bestuurdermodusse, parameterkonfigurasie en gebeurtenisverwerking. Sekere funksies van hierdie komponent word verskaf in die vorm van statiese skakelbiblioteke. ESP-IDF bied ook omvattende bestuurderdokumentasie vir gemak van gebruik.
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 35
· freeertos: Hierdie komponent bevat die volledige FreeRTOS-kode. Afgesien van die verskaffing van omvattende ondersteuning vir hierdie bedryfstelsel, het Espressif ook sy ondersteuning uitgebrei na dubbelkernskyfies. Vir dubbelkernskyfies soos ESP32 en ESP32-S3, kan gebruikers take op spesifieke kerns skep.
b. Dokumentgidsdokumente
Hierdie gids bevat ESP-IDF-verwante ontwikkelingsdokumente, insluitend die Begingids, API-verwysingshandleiding, Ontwikkelingsgids, ens.
LET WEL Nadat dit deur geoutomatiseerde gereedskap saamgestel is, word die inhoud van hierdie gids ontplooi by https://docs.espressif.com/projects/esp-idf. Maak asseblief seker dat u die dokumentteiken na ESP32-C3 oorskakel en die gespesifiseerde ESP-IDF-weergawe kies.
c. Skrip gereedskap gereedskap
Hierdie gids bevat algemeen gebruikte samestelling front-end gereedskap soos idf.py, en die monitor terminale instrument idf_monitor.py, ens. Die sub-gids cmake bevat ook kern script files van die samestellingstelsel, wat dien as die grondslag vir die implementering van ESP-IDF-samestellingsreëls. Wanneer die omgewingsveranderlikes bygevoeg word, word die inhoud in die gereedskapgids by die stelselomgewingsveranderlike gevoeg, sodat idf.py direk onder die projekpad uitgevoer kan word.
d. Bvampdie programgids bvamples
Hierdie gids bestaan uit 'n groot versameling ESP-IDF example programme wat die gebruik van komponent API's demonstreer. Die eksamplese is georganiseer in verskeie subgidse gebaseer op hul kategorieë:
· aan die gang: Hierdie subgids sluit intreevlak-bvamples soos "hallo wêreld" en "knipper" om gebruikers te help om die basiese beginsels te begryp.
· Bluetooth: Jy kan Bluetooth-verwante bvamples hier, insluitend Bluetooth LE Mesh, Bluetooth LE HID, BluFi, en meer.
· wifi: Hierdie subgids fokus op Wi-Fi bvamples, insluitend basiese programme soos Wi-Fi SoftAP, Wi-Fi Station, espnow, sowel as eie kommunikasieprotokol bv.amples van Espressif. Dit bevat ook veelvuldige toepassingslaag, bvamplese gebaseer op Wi-Fi, soos Iperf, Sniffer en Smart Config.
· randapparatuur: Hierdie uitgebreide subgids is verder verdeel in talle subgidse gebaseer op randapparatuurname. Dit bevat hoofsaaklik perifere drywer bvamples vir Espressif-skyfies, met elke example wat verskeie sub-examples. Byvoorbeeld, die gpio-subgids bevat twee bvamples: GPIO en GPIO matriks sleutelbord. Dit is belangrik om daarop te let dat nie alle exampLese in hierdie gids is van toepassing op ESP32-C3.
36 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Byvoorbeeldample, die examplese in usb/gasheer is slegs van toepassing op randapparatuur met USB Host hardeware (soos ESP32-S3), en ESP32-C3 het nie hierdie randapparatuur nie. Die samestellingstelsel verskaf tipies aansporings wanneer die teiken gestel word. Die LEESMY file van elke example lys die ondersteunde skyfies. · protokolle: Hierdie subgids bevat bvamplese vir verskeie kommunikasieprotokolle, insluitend MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, wat 'n wye verskeidenheid kommunikasieprotokol dek, bv.amples benodig vir IoT-ontwikkeling. · voorsiening: Hier sal jy voorsiening vind bvamples vir verskillende metodes, soos Wi-Fi voorsiening en Bluetooth LE voorsiening. · stelsel: Hierdie subgids sluit stelselontfouting in, bvamplese (bv. stapelopsporing, looptydopsporing, taakmonitering), kragbestuur bvamplese (bv. verskeie slaapmodusse, mede-verwerkers), en bvamples wat verband hou met algemene stelselkomponente soos konsoleterminaal, gebeurtenislus en stelseltydteller. · berging: Binne hierdie subgids sal jy bvamples van almal file stelsels en bergingsmeganismes wat deur ESP-IDF ondersteun word (soos lees en skryf van Flash, SD-kaart en ander bergingsmedia), sowel as bv.amples van nie-vlugtige berging (NVS), FatFS, SPIFFS en ander file stelsel bedrywighede. · sekuriteit: Hierdie subgids bevat bvamples wat verband hou met flitskodering. (2) ESP-IDF samestelling gereedskap ketting gids (/.espressif), soos getoon in Figuur 4.3.
Figuur 4.3. ESP-IDF samestelling gereedskap ketting gids
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 37
a. Sagteware verspreiding gids dist
Die ESP-IDF-gereedskapsketting en ander sagteware word in die vorm van saamgeperste pakkette versprei. Tydens die installasieproses laai die installasiehulpmiddel eers die saamgeperste pakket af na die dist-gids, en onttrek dit dan na die gespesifiseerde gids. Sodra die installasie voltooi is, kan die inhoud in hierdie gids veilig verwyder word.
b. Python virtuele omgewing gids python env
Verskillende weergawes van ESP-IDF maak staat op spesifieke weergawes van Python-pakkette. Die installering van hierdie pakkette direk op dieselfde gasheer kan lei tot konflikte tussen pakketweergawes. Om dit aan te spreek, gebruik ESP-IDF virtuele Python-omgewings om verskillende pakketweergawes te isoleer. Met hierdie meganisme kan ontwikkelaars verskeie weergawes van ESP-IDF op dieselfde gasheer installeer en maklik tussen hulle wissel deur verskillende omgewingsveranderlikes in te voer.
c. ESP-IDF samestelling gereedskap ketting gids gereedskap
Hierdie gids bevat hoofsaaklik kruis-samestelling gereedskap wat nodig is om ESP-IDF projekte saam te stel, soos CMake gereedskap, Ninja bou gereedskap, en die gcc gereedskap ketting wat die finale uitvoerbare program genereer. Daarbenewens huisves hierdie gids die standaard biblioteek van die C/C++ taal saam met die ooreenstemmende kopskrif files. As 'n program na 'n stelselopskrif verwys file hou van #insluit , sal die samestellingsinstrumentketting die stdio.h opspoor file binne hierdie gids.
4.2 Opstel van ESP-IDF Ontwikkelingsomgewing
Die ESP-IDF-ontwikkelingsomgewing ondersteun hoofstroombedryfstelsels soos Windows, Linux en macOS. Hierdie afdeling sal bekendstel hoe om die ontwikkelingsomgewing op elke stelsel op te stel. Dit word aanbeveel om ESP32-C3 op Linux-stelsel te ontwikkel, wat hier in detail bekendgestel sal word. Baie instruksies is van toepassing op platforms as gevolg van die ooreenkomste van die ontwikkelingsinstrumente. Daarom word dit aangeraai om die inhoud van hierdie afdeling noukeurig deur te lees.
NOTA Jy kan verwys na die aanlyn dokumente beskikbaar by https://bookc3.espressif.com/esp32c3, wat die opdragte verskaf wat in hierdie afdeling genoem word.
4.2.1 Opstel van ESP-IDF Ontwikkelingsomgewing op Linux
Die GNU-ontwikkelings- en ontfoutingsinstrumente wat benodig word vir die ESP-IDF-ontwikkelingsomgewing is inheems aan die Linux-stelsel. Boonop is die opdragreëlterminal in Linux kragtig en gebruikersvriendelik, wat dit 'n ideale keuse maak vir ESP32-C3-ontwikkeling. Jy kan
38 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
kies jou voorkeur Linux-verspreiding, maar ons beveel aan om Ubuntu of ander Debian-gebaseerde stelsels te gebruik. Hierdie afdeling verskaf leiding oor die opstel van die ESP-IDF-ontwikkelingsomgewing op Ubuntu 20.04.
1. Installeer vereiste pakkette
Maak 'n nuwe terminaal oop en voer die volgende opdrag uit om al die nodige pakkette te installeer. Die opdrag sal outomaties pakkette oorslaan wat reeds geïnstalleer is.
$ 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
WENKE Jy moet die administrateurrekening en wagwoord vir die opdrag hierbo gebruik. By verstek sal geen inligting vertoon word wanneer die wagwoord ingevoer word nie. Druk eenvoudig die "Enter" sleutel om voort te gaan met die prosedure.
Git is 'n sleutelkodebestuurhulpmiddel in ESP-IDF. Nadat u die ontwikkelingsomgewing suksesvol opgestel het, kan u die git log-opdrag gebruik om view alle kode veranderinge wat gemaak is sedert die skepping van ESP-IDF. Daarbenewens word Git ook in ESP-IDF gebruik om weergawe-inligting te bevestig, wat nodig is vir die installering van die korrekte gereedskapsketting wat ooreenstem met spesifieke weergawes. Saam met Git sluit ander belangrike stelselhulpmiddels Python in. ESP-IDF bevat talle outomatiseringsskrifte wat in Python geskryf is. Gereedskap soos CMake, Ninja-build en Ccache word wyd gebruik in C/C++-projekte en dien as die verstekkodesamestelling en -bougereedskap in ESP-IDF. libusb-1.0-0 en dfu-util is die hoofbestuurders wat gebruik word vir USB-reekskommunikasie en firmwarebrand. Sodra die sagtewarepakkette geïnstalleer is, kan jy die apt show gebruik opdrag om gedetailleerde beskrywings van elke pakket te verkry. Byvoorbeeldample, gebruik apt show git om die beskrywingsinligting vir die Git-instrument te druk.
V: Wat om te doen as die Python-weergawe nie ondersteun word nie? A: ESP-IDF v4.3 vereis 'n Python-weergawe wat nie laer as v3.6 is nie. Vir ouer weergawes van Ubuntu, laai en installeer asseblief 'n hoër weergawe van Python handmatig en stel Python3 as die verstek Python-omgewing. Jy kan gedetailleerde instruksies vind deur te soek na die sleutelwoord update-alternatiewe luislang.
2. Laai ESP-IDF-bewaarplekkode af
Maak 'n terminaal oop en skep 'n gids met die naam esp in jou tuisgids met behulp van die mkdir-opdrag. Jy kan 'n ander naam vir die vouer kies as jy verkies. Gebruik die cd-opdrag om die gids in te voer.
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 39
$ mkdir -p /esp $ cd /esp
Gebruik die git clone-opdrag om die ESP-IDF-bewaarplekkode af te laai, soos hieronder getoon:
$ git kloon -b v4.3.2 – rekursief https://github.com/espressif/esp-idf.git
In die opdrag hierbo spesifiseer die parameter -b v4.3.2 die weergawe om af te laai (in hierdie geval weergawe 4.3.2). Die parameter –rekursief verseker dat alle sub-bewaarplekke van ESP-IDF rekursief afgelaai word. Inligting oor sub-bewaarplekke kan gevind word in die .gitmodules file.
3. Installeer die ESP-IDF ontwikkelingshulpmiddelketting
Espressif verskaf 'n outomatiese script install.sh om die gereedskapketting af te laai en te installeer. Hierdie skrif kontroleer die huidige ESP-IDF-weergawe en bedryfstelsel-omgewing, en laai dan die toepaslike weergawe van Python-nutsmiddelpakkette en samestellingsnutsmiddelkettings af en installeer dit. Die verstek installasie pad vir die gereedskap ketting is /.espressif. Al wat u hoef te doen is om na die esp-idf-gids te gaan en install.sh uit te voer.
$ cd /esp/esp-idf $ ./install.sh
As jy die gereedskapsketting suksesvol installeer, sal die terminale vertoon:
Alles klaar!
Op hierdie stadium het u die ESP-IDF-ontwikkelingsomgewing suksesvol opgestel.
4.2.2 Opstel van ESP-IDF Ontwikkelingsomgewing op Windows
1. Laai ESP-IDF gereedskap installeerder af
WENKE Dit word aanbeveel om die ESP-IDF-ontwikkelingsomgewing op Windows 10 of hoër op te stel. Jy kan die installeerder aflaai vanaf https://dl.espressif.com/dl/esp-idf/. Die installeerder is ook 'n oopbronsagteware, en die bronkode daarvan kan wees viewed by https: //github.com/espressif/idf-installer.
· Aanlyn ESP-IDF gereedskap installeerder
Hierdie installeerder is relatief klein, ongeveer 4 MB groot, en ander pakkette en kode sal tydens die installasieproses afgelaai word. Die advantage van die aanlyn installeerder is dat sagtewarepakkette en kode nie net op aanvraag tydens die installasieproses afgelaai kan word nie, maar ook die installering van alle beskikbare vrystellings van ESP-IDF en die nuutste vertakking van GitHub-kode (soos die hooftak) moontlik maak. . Die nadeeltage is dat dit 'n netwerkverbinding benodig tydens die installasieproses, wat installasiefout kan veroorsaak as gevolg van netwerkprobleme.
40 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
· Vanlyn ESP-IDF gereedskap installeerder Hierdie installeerder is groter, ongeveer 1 GB groot, en bevat al die sagteware pakkette en kode wat nodig is vir omgewing opstel. Die belangrikste advantagE van die vanlyn installeerder is dat dit op rekenaars sonder internettoegang gebruik kan word, en het oor die algemeen 'n hoër installasie sukseskoers. Daar moet kennis geneem word dat die vanlyn installeerder slegs stabiele vrystellings van ESP-IDF kan installeer wat deur v*.* of v*.*.* geïdentifiseer is.
2. Begin die ESP-IDF gereedskap installeerder Nadat jy 'n geskikte weergawe van die installeerder afgelaai het (neem ESP-IDF Tools Offline 4.3.2 vir bv.amphier), dubbelklik op die exe file om die ESP-IDF installasie koppelvlak te begin. Die volgende demonstreer hoe om ESP-IDF stabiele weergawe v4.3.2 te installeer met behulp van die vanlyn installeerder.
(1) In die “Kies installasietaal”-koppelvlak wat in Figuur 4.4 gewys word, kies die taal wat gebruik moet word uit die aftreklys.
Figuur 4.4. “Kies installasietaal”-koppelvlak (2) Nadat u die taal gekies het, klik “OK” om die “Lisensieooreenkoms”-koppelvlak op te roep
(sien Figuur 4.5). Nadat u die installasielisensie-ooreenkoms noukeurig gelees het, kies "Ek aanvaar die ooreenkoms" en klik "Volgende".
Figuur 4.5. “Lisensieooreenkoms”-koppelvlak Hoofstuk 4. Opstel van Ontwikkelingsomgewing 41
(3) Review die stelselkonfigurasie in die “Pre-installation system check”-koppelvlak (sien Figuur 4.6). Gaan die Windows-weergawe en die geïnstalleerde antivirussagteware-inligting na. Klik op "Volgende" as al die konfigurasie-items normaal is. Andersins kan jy op "Volledige log" klik vir oplossings gebaseer op sleutelitems.
Figuur 4.6. "Stelselkontrole voor installasie" koppelvlak WENKE
Jy kan logs indien by https://github.com/espressif/idf-installer/issues vir hulp. (4) Kies die ESP-IDF installasie gids. Kies hier D:/.espressif, soos getoon in
Figuur 4.7, en klik "Volgende". Neem asseblief kennis dat .espressif hier 'n versteekte gids is. Nadat die installasie voltooi is, kan jy view die spesifieke inhoud van hierdie gids deur die opening van die file bestuurder en vertoon verborge items.
Figuur 4.7. Kies die ESP-IDF installasie gids 42 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
(5) Kontroleer die komponente wat geïnstalleer moet word, soos getoon in Figuur 4.8. Dit word aanbeveel om die verstek opsie te gebruik, dit wil sê, voltooi installasie, en klik dan op "Volgende".
Figuur 4.8. Kies die komponente om te installeer (6) Bevestig die komponente wat geïnstalleer moet word en klik "Installeer" om die outomatiese in-
stallasieproses, soos getoon in Figuur 4.9. Die installasieproses kan tien minute duur en die vorderingsbalk van die installasieproses word in Figuur 4.10 getoon. Wag asseblief geduldig.
Figuur 4.9. Voorbereiding vir installasie (7) Nadat die installasie voltooi is, word dit aanbeveel om na te gaan "Registreer die ESP-IDF
Gereedskap-uitvoerbare as Windows Defender-uitsluitings ...” om te verhoed dat antivirusprogrammatuur uitvee files. Die byvoeging van uitsluitingsitems kan ook gereelde skanderings deur antivirus oorslaan
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 43
Figuur 4.10. Installasie vorderingsbalk sagteware, wat die kodesamestellingsdoeltreffendheid van die Windows-stelsel aansienlik verbeter. Klik "Voltooi" om die installering van die ontwikkelingsomgewing te voltooi, soos in Figuur 4.11 getoon. U kan kies om "Run ESP-IDF PowerShell environment" of "Run ESP-IDF command prompt" na te gaan. Begin die samestellingsvenster direk na installasie om te verseker dat die ontwikkelingsomgewing normaal funksioneer.
Figuur 4.11. Installasie voltooi (8) Maak die geïnstalleerde ontwikkelingsomgewing in die programlys oop (óf ESP-IDF 4.3
CMD of ESP-IDF 4.3 PowerShell-terminaal, soos getoon in Figuur 4.12), en die ESP-IDF-omgewingsveranderlike sal outomaties bygevoeg word wanneer dit in die terminale loop. Daarna kan jy die idf.py-opdrag vir bewerkings gebruik. Die oopgemaakte ESP-IDF 4.3 CMD word in Figuur 4.13 getoon. 44 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Figuur 4.12. Ontwikkelingsomgewing geïnstalleer
Figuur 4.13. ESP-IDF 4.3 CMD
4.2.3 Opstel van ESP-IDF Ontwikkelingsomgewing op Mac
Die proses om die ESP-IDF-ontwikkelingsomgewing op 'n Mac-stelsel te installeer, is dieselfde as dié op 'n Linux-stelsel. Die opdragte vir die aflaai van die bewaarplekkode en die installering van die gereedskapsketting is presies dieselfde. Slegs die opdragte vir die installering van afhanklikheidspakkette verskil effens. 1. Installeer afhanklikheidspakkette Maak 'n terminaal oop en installeer pip, die Python-pakketbestuurnutsmiddel, deur die volgende opdrag uit te voer:
% sudo maklik installeer pip
Installeer Homebrew, 'n pakketbestuurnutsmiddel vir macOS, deur die volgende opdrag uit te voer:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)"
Installeer die vereiste afhanklikheidspakkette deur die volgende opdrag uit te voer:
% brou python3 installeer cmake ninja ccache dfu-util
2. Laai ESP-IDF-bewaarplekkode af Volg die instruksies verskaf in afdeling 4.2.1 om die ESP-IDF-bewaarplekkode af te laai. Die stappe is dieselfde as vir aflaai op 'n Linux-stelsel.
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 45
3. Installeer die ESP-IDF ontwikkelingshulpmiddelketting
Volg die instruksies verskaf in afdeling 4.2.1 om die ESP-IDF ontwikkelingshulpmiddelketting te installeer. Die stappe is dieselfde as vir installasie op 'n Linux-stelsel.
4.2.4 Installeer VS-kode
By verstek bevat die ESP-IDF SDK nie 'n koderedigeringsinstrument nie (hoewel die nuutste ESP-IDF-installeerder vir Windows die opsie bied om ESP-IDF Eclipse te installeer). Jy kan enige teksredigeringsinstrument van jou keuse gebruik om die kode te wysig en dit dan saam te stel met behulp van terminale opdragte.
Een gewilde koderedigeringsinstrument is VS Code (Visual Studio Code), wat 'n gratis en kenmerkryke koderedigeerder is met 'n gebruikersvriendelike koppelvlak. Dit bied verskeie plugins wat funksionaliteite soos kodenavigasie, sintaksuitlig, Git-weergawebeheer en terminale integrasie bied. Boonop het Espressif 'n toegewyde inprop genaamd Espressif IDF vir VS-kode ontwikkel, wat projekkonfigurasie en ontfouting vereenvoudig.
U kan die kode-opdrag in die terminaal gebruik om die huidige gids in VS-kode vinnig oop te maak. Alternatiewelik kan jy die kortpad Ctrl+ gebruik om die stelsel se verstek terminale konsole binne VS-kode oop te maak.
WENKE Dit word aanbeveel om VS-kode vir ESP32-C3-kode-ontwikkeling te gebruik. Laai die nuutste weergawe van VS-kode af en installeer dit by https://code.visualstudio.com/.
4.2.5 Inleiding tot derdeparty-ontwikkelingsomgewings
Benewens die amptelike ESP-IDF-ontwikkelingsomgewing, wat hoofsaaklik die C-taal gebruik, ondersteun ESP32-C3 ook ander hoofstroomprogrammeertale en 'n wye reeks derdeparty-ontwikkelingsomgewings. Sommige noemenswaardige opsies sluit in:
Arduino: 'n oopbronplatform vir beide hardeware en sagteware, wat verskeie mikrobeheerders ondersteun, insluitend ESP32-C3.
Dit gebruik die C++-taal en bied 'n vereenvoudigde en gestandaardiseerde API, wat algemeen na verwys word as die Arduino-taal. Arduino word wyd gebruik in prototipe-ontwikkeling en opvoedkundige kontekste. Dit bied 'n uitbreidbare sagtewarepakket en 'n IDE wat dit moontlik maak vir maklike samestelling en flits.
MicroPython: 'n Python 3-taaltolk wat ontwerp is om op ingebedde mikrobeheerderplatforms te werk.
Met 'n eenvoudige skriftaal kan dit direk toegang verkry tot ESP32-C3 se perifere hulpbronne (soos UART, SPI en I2C) en kommunikasiefunksies (soos Wi-Fi en Bluetooth LE).
46 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
Dit vergemaklik hardeware-interaksie. MicroPython, gekombineer met Python se uitgebreide wiskundige bewerkingsbiblioteek, maak die implementering van komplekse algoritmes op ESP32-C3 moontlik, wat die ontwikkeling van KI-verwante toepassings vergemaklik. As skriftaal is daar geen behoefte aan herhaalde samestelling nie; wysigings kan gemaak word en skrifte kan direk uitgevoer word.
NodeMCU: 'n LUA-taaltolk wat ontwikkel is vir ESP-reeksskyfies.
Dit ondersteun byna alle perifere funksies van ESP-skyfies en is ligter as MicroPython. Soortgelyk aan MicroPython, gebruik NodeMCU 'n skriftaal, wat die behoefte aan herhaalde samestelling uitskakel.
Verder ondersteun ESP32-C3 ook die NuttX- en Zephyr-bedryfstelsels. NuttX is 'n intydse bedryfstelsel wat POSIX-versoenbare koppelvlakke bied, wat toepassingsoordraagbaarheid verbeter. Zephyr is 'n klein intydse bedryfstelsel wat spesifiek ontwerp is vir IoT-toepassings. Dit sluit talle sagtewarebiblioteke in wat nodig is in IoT-ontwikkeling, wat geleidelik ontwikkel tot 'n omvattende sagteware-ekosisteem.
Hierdie boek verskaf nie gedetailleerde installasie-instruksies vir die voorgenoemde ontwikkelingsomgewings nie. U kan 'n ontwikkelingsomgewing op grond van u vereistes installeer deur die onderskeie dokumentasie en instruksies te volg.
4.3 ESP-IDF-samestellingstelsel
4.3.1 Basiese konsepte van samestellingstelsel
'n ESP-IDF-projek is 'n versameling van 'n hoofprogram met 'n toegangsfunksie en veelvuldige onafhanklike funksionele komponente. Byvoorbeeldample, 'n projek wat LED-skakelaars beheer, bestaan hoofsaaklik uit 'n toegangsprogramhoof en 'n bestuurderkomponent wat GPIO beheer. As jy die LED-afstandbeheer wil besef, moet jy ook Wi-Fi, TCP/IP-protokolstapel, ens.
Die samestellingstelsel kan saamstel, koppel en uitvoerbare items genereer files (.bin) vir die kode deur 'n stel boureëls. Die samestellingstelsel van ESP-IDF v4.0 en hoër weergawes is by verstek op CMake gebaseer, en die samestellingskrip CMakeLists.txt kan gebruik word om die samestellingsgedrag van die kode te beheer. Benewens die ondersteuning van die basiese sintaksis van CMake, definieer die ESP-IDF-samestellingstelsel ook 'n stel versteksamestellingreëls en CMake-funksies, en jy kan die samestellingskrip met eenvoudige stellings skryf.
4.3.2 Projek File Struktuur
'n Projek is 'n vouer wat 'n toegangsprogramhoof, gebruikergedefinieerde komponente en files wat nodig is om uitvoerbare toepassings te bou, soos samestellingsskrifte, konfigurasie
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 47
files, partisietabelle, ens. Projekte kan gekopieer en deurgegee word, en dieselfde uitvoerbare file kan saamgestel en gegenereer word in masjiene met dieselfde weergawe van ESP-IDF-ontwikkelingsomgewing. 'n Tipiese ESP-IDF-projek file struktuur word in Figuur 4.14 getoon.
Figuur 4.14. Tipiese ESP-IDF projek file struktuur Aangesien ESP-IDF verskeie IoT-skyfies van Espressif ondersteun, insluitend ESP32, ESP32-S-reeks, ESP32-C-reeks, ESP32-H-reeks, ens., moet 'n teiken bepaal word voordat die kode saamgestel word. Die teiken is beide die hardeware-toestel wat die toepassingsprogram bestuur en die bouteiken van die samestellingstelsel. Afhangende van jou behoeftes, kan jy een of meer teikens vir jou projek spesifiseer. Byvoorbeeldample, deur opdrag idf.py set-target esp32c3, kan jy die samestelling teiken stel na ESP32-C3, waartydens die verstek parameters en samestelling gereedskap ketting pad vir ESP32C3 gelaai sal word. Na samestelling kan 'n uitvoerbare program vir ESP32C3 gegenereer word. Jy kan ook die opdrag stel-teiken weer laat loop om 'n ander teiken te stel, en die samestellingstelsel sal outomaties skoonmaak en herkonfigureer. Komponente
Komponente in ESP-IDF is modulêre en onafhanklike kode-eenhede wat binne die samestellingstelsel bestuur word. Hulle is georganiseer as dopgehou, met die vouernaam wat by verstek die komponentnaam verteenwoordig. Elke komponent het sy eie samestellingskrip wat 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
spesifiseer sy samestelling parameters en afhanklikhede. Tydens die samestellingsproses word komponente saamgestel in afsonderlike statiese biblioteke (.a files) en uiteindelik gekombineer met ander komponente om die toepassingsprogram te vorm.
ESP-IDF verskaf noodsaaklike funksies, soos die bedryfstelsel, perifere drywers en netwerkprotokolstapel, in die vorm van komponente. Hierdie komponente word gestoor in die komponentgids wat binne die ESP-IDF-hoofgids geleë is. Ontwikkelaars hoef nie hierdie komponente na die komponentgids van myProject te kopieer nie. In plaas daarvan hoef hulle net die afhanklikheidsverhoudings van hierdie komponente in die projek se CMakeLists.txt te spesifiseer file met behulp van die REQUIRES- of PRIV_REQUIRES-aanwysings. Die samestellingstelsel sal outomaties die vereiste komponente opspoor en saamstel.
Daarom is die komponentgids onder myProject nie nodig nie. Dit word slegs gebruik om sekere pasgemaakte komponente van die projek in te sluit, wat derdeparty-biblioteke of gebruikergedefinieerde kode kan wees. Daarbenewens kan komponente verkry word vanaf enige ander gids as ESP-IDF of die huidige projek, soos van 'n oopbronprojek wat in 'n ander gids gestoor is. In hierdie geval hoef jy net die pad van die komponent by te voeg deur die EXTRA_COMPONENT_DIRS veranderlike in die CMakeLists.txt onder die wortelgids te stel. Hierdie gids sal enige ESP-IDF-komponent met dieselfde naam ignoreer, om te verseker dat die korrekte komponent gebruik word.
Inskrywingsprogram hoof Die hoofgids binne die projek volg dieselfde file struktuur as ander komponente (bv. komponent1). Dit het egter 'n besondere betekenis aangesien dit 'n verpligte komponent is wat in elke projek moet bestaan. Die hoofgids bevat die projek se bronkode en die gebruikerprogram se toegangspunt, tipies genaamd app_main. By verstek begin die uitvoering van die gebruikerprogram vanaf hierdie toegangspunt. Die hoofkomponent verskil ook deurdat dit outomaties afhang van alle komponente binne die soekpad. Daarom is dit nie nodig om afhanklikhede uitdruklik aan te dui deur die REQUIRES- of PRIV_REQUIRES-aanwysings in die CMakeLists.txt te gebruik nie file.
Konfigurasie file Die wortelgids van die projek bevat 'n konfigurasie file genoem sdkconfig, wat die konfigurasieparameters vir al die komponente binne die projek bevat. Die sdkconfig file word outomaties deur die samestellingstelsel gegenereer en kan gewysig en geregenereer word deur die opdrag idf.py menuconfig. Die menuconfig-opsies kom hoofsaaklik uit die Kconfig.projbuild van die projek en die Kconfig van die komponente. Komponentontwikkelaars voeg gewoonlik konfigurasie-items in Kconfig by om die komponent buigsaam en konfigureerbaar te maak.
Bougids By verstek stoor die bougids binne die projek intermediêr files en die fi-
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 49
finale uitvoerbare programme gegenereer deur die idf.py bou-opdrag. Oor die algemeen is dit nie nodig om direk toegang tot die inhoud van die bougids te kry nie. ESP-IDF verskaf vooraf gedefinieerde opdragte om met die gids te kommunikeer, soos om die idf.py flash-opdrag te gebruik om die saamgestelde binêre outomaties op te spoor file en flits dit na die gespesifiseerde flitsadres, of gebruik die idf.py fullclean-opdrag om die hele bougids skoon te maak.
Partisietabel (partitions.csv) Elke projek vereis 'n partisietabel om die spasie van flits te verdeel en die grootte en beginadres van die uitvoerbare program en gebruikersdataspasie te spesifiseer. Command idf.py flash of OTA-opgraderingsprogram sal die firmware flits na die ooreenstemmende adres volgens hierdie tabel. ESP-IDF verskaf verskeie verstek partisietabelle in komponente/partisietabel, soos partitions_singleapp.csv en partitions_two_ota.csv, wat in menuconfig gekies kan word.
As die verstek partisietabel van die stelsel nie aan die vereistes van die projek kan voldoen nie, kan 'n pasgemaakte partitions.csv by die projekgids gevoeg word en in menuconfig gekies word.
4.3.3 Verstekboureëls van die samestellingstelsel
Reëls vir die oorheersing van komponente met dieselfde naam Tydens die komponentsoekproses volg die samestellingstelsel 'n spesifieke volgorde. Dit soek eers na interne komponente van ESP-IDF, soek dan komponente van die gebruikerprojek, en soek uiteindelik na komponente in EXTRA_COMPONENT_DIRS. In gevalle waar verskeie gidse komponente met dieselfde naam bevat, sal die komponent wat in die laaste gids gevind word, enige vorige komponente met dieselfde naam ignoreer. Hierdie reël maak voorsiening vir die aanpassing van ESP-IDF-komponente binne die gebruikersprojek, terwyl die oorspronklike ESP-IDF-kode ongeskonde gehou word.
Reëls vir die insluiting van algemene komponente by verstek Soos genoem in afdeling 4.3.2, moet komponente hul afhanklikhede van ander komponente in die CMakeLists.txt uitdruklik spesifiseer. Algemene komponente soos freeertos word egter outomaties by verstek in die boustelsel ingesluit, selfs al word hul afhanklikheidsverhoudings nie eksplisiet in die samestellingskrip gedefinieer nie. ESP-IDF algemene komponente sluit freeertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv en cxx in. Die gebruik van hierdie algemene komponente vermy herhalende werk wanneer jy CMakeLists.txt skryf en maak dit meer bondig.
Reëls vir die ignorering van konfigurasie-items Ontwikkelaars kan verstekkonfigurasieparameters byvoeg deur 'n verstekkonfigurasie by te voeg file sdkconfig.defaults genoem na die projek. Byvoorbeeldample, voeg CONFIG_LOG_ by
50 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
DEFAULT_LEVEL_NONE = y kan die UART-koppelvlak konfigureer om nie logdata by verstek te druk nie. Verder, as spesifieke parameters gestel moet word vir 'n spesifieke teiken, 'n konfigurasie file genaamd sdkconfig.defaults.TARGET_NAME kan bygevoeg word, waar TARGET_NAME esp32s2, esp32c3, ensovoorts kan wees. Hierdie konfigurasie files word in die sdkconfig ingevoer tydens samestelling, met die algemene verstekkonfigurasie file sdkconfig.defaults word eerste ingevoer, gevolg deur die teikenspesifieke konfigurasie file, soos sdkconfig.defaults.esp32c3. In gevalle waar daar konfigurasie-items met dieselfde naam is, laasgenoemde konfigurasie file sal eersgenoemde ignoreer.
4.3.4 Inleiding tot die samestellingskrif
Wanneer 'n projek met ESP-IDF ontwikkel word, moet ontwikkelaars nie net bronkode skryf nie, maar moet ook CMakeLists.txt vir die projek en komponente skryf. CMakeLists.txt is 'n teks file, ook bekend as 'n samestellingskrip, wat 'n reeks samestellingsvoorwerpe, samestellingkonfigurasie-items en opdragte definieer om die samestellingsproses van die bronkode te lei. Die samestellingstelsel van ESP-IDF v4.3.2 is gebaseer op CMake. Benewens die ondersteuning van inheemse CMake-funksies en -opdragte, definieer dit ook 'n reeks persoonlike funksies, wat dit baie makliker maak om samestellingsskrifte te skryf.
Die samestellingsskrifte in ESP-IDF sluit hoofsaaklik die projeksamestellingskrip en die komponentsamestellingsskrifte in. Die CMakeLists.txt in die wortelgids van die projek word die projeksamestellingskrip genoem, wat die samestellingsproses van die hele projek lei. 'n Basiese projeksamestellingskrip bevat tipies die volgende drie reëls:
1. cmake_minimum_required(VERSIE 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. projek(myProject)
Onder hulle moet die cmake_minimum_required (VERSIE 3.5) op die eerste reël geplaas word, wat gebruik word om die minimum CMake-weergawenommer aan te dui wat deur die projek vereis word. Nuwer weergawes van CMake is gewoonlik agteruit versoenbaar met ouer weergawes, so pas die weergawenommer dienooreenkomstig aan wanneer nuwer CMake-opdragte gebruik word om versoenbaarheid te verseker.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) voer vooraf gedefinieerde konfigurasie-items en opdragte van ESP-IDF-samestellingstelsel in, insluitend die verstekboureëls van die samestellingstelsel wat in Afdeling 4.3.3 beskryf word. projek(myProjek) skep die projek self en spesifiseer sy naam. Hierdie naam sal as die finale uitvoer binêre gebruik word file naam, dws myProject.elf en myProject.bin.
'n Projek kan veelvuldige komponente hê, insluitend die hoofkomponent. Die topvlak gids van elke komponent bevat 'n CMakeLists.txt file, wat die komponentsamestellingskrip genoem word. Komponentsamestellingsskrifte word hoofsaaklik gebruik om komponentafhanklikhede, konfigurasieparameters, bronkode te spesifiseer files, en ingesluit kop files vir
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 51
samestelling. Met ESP-IDF se pasgemaakte funksie idf_component_register, is die minimum vereiste kode vir 'n komponentsamestellingskrip soos volg:
1. idf_component_register(SRCS "src1.c"
2.
INCLUDE_DIRS "sluit in"
3.
VEREIS komponent1)
Die SRCS-parameter verskaf 'n lys van bronne files in die komponent, geskei deur spasies as daar veelvuldige is files. Die INCLUDE_DIRS-parameter verskaf 'n lys van publieke opskrifte file dopgehou vir die komponent, wat by die insluit-soekpad gevoeg sal word vir ander komponente wat afhanklik is van die huidige komponent. Die REQUIRES-parameter identifiseer die publieke komponent-afhanklikhede vir die huidige komponent. Dit is nodig dat komponente eksplisiet aandui van watter komponente hulle afhanklik is, soos komponent2 afhangende van komponent1. Vir die hoofkomponent, wat by verstek van alle komponente afhang, kan die REQUIRES-parameter egter weggelaat word.
Daarbenewens kan inheemse CMake-opdragte ook in die samestellingskrip gebruik word. Byvoorbeeldample, gebruik die opdragstel om veranderlikes te stel, soos stel (VERANDERLIKE "WAARDE").
4.3.5 Inleiding tot algemene bevele
ESP-IDF gebruik CMake (projekkonfigurasie-instrument), Ninja (projekbou-instrument) en esptool (flitsinstrument) in die proses van kodesamestelling. Elke instrument speel 'n ander rol in die samestelling, bou en flitsproses, en ondersteun ook verskillende bedryfsopdragte. Om gebruikerswerking te vergemaklik, voeg ESP-IDF 'n verenigde front-end idf.py by wat die bogenoemde opdragte vinnig kan oproep.
Voordat jy idf.py gebruik, maak seker dat:
· Die omgewingsveranderlike IDF_PATH van ESP-IDF is by die huidige terminaal gevoeg. · Die opdraguitvoeringsgids is die wortelgids van die projek, wat die
projeksamestellingskrip CMakeLists.txt.
Die algemene opdragte van idf.py is soos volg:
· idf.py –help: vertoon 'n lys van opdragte en hul gebruiksinstruksies. · idf.py stel teiken : stel die samestelling taidf.py fullcleanrget, soos
as vervanging met esp32c3. · idf.py menuconfig: begin menuconfig, 'n terminale grafiese konfigurasie
instrument, wat konfigurasie-opsies kan kies of verander, en die konfigurasieresultate word in die sdkconfig gestoor file. · idf.py bou: inisieer kodesamestelling. Die intermediêre files en die finale uitvoerbare program wat deur die samestelling gegenereer word, sal by verstek in die bougids van die projek gestoor word. Die samestellingsproses is inkrementeel, wat beteken dat as slegs een bron file gewysig word, slegs die gewysigde file sal volgende keer saamgestel word.
52 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
· idf.py skoon: skoonmaak van die intermediêre files gegenereer deur die projeksamestelling. Die hele projek sal gedwing word om in die volgende samestelling saam te stel. Let daarop dat die CMake-konfigurasie en die konfigurasiewysigings wat deur menuconfig gemaak is, nie tydens opruiming uitgevee sal word nie.
· idf.py fullclean: verwyder die hele bougids, insluitend alle CMake-konfigurasie-uitvoer files. Wanneer die projek weer gebou word, sal CMake die projek van nuuts af opstel. Neem asseblief kennis dat hierdie opdrag alles rekursief sal uitvee files in die bougids, gebruik dit dus met omsigtigheid en die projekkonfigurasie file sal nie uitgevee word nie.
· idf.py flits: flits die uitvoerbare program binêr file gegenereer deur bou aan die teiken ESP32-C3. Die opsies -p en -b word gebruik om onderskeidelik die toestelnaam van die seriële poort en die baudtempo vir flikker in te stel. As hierdie twee opsies nie gespesifiseer word nie, sal die seriële poort outomaties opgespoor word en die verstek baudtempo sal gebruik word.
· idf.py monitor: vertoon die reekspoortuitvoer van die teiken ESP32-C3. Die opsie -p kan gebruik word om die toestelnaam van die gasheer-kant seriële poort te spesifiseer. Tydens die druk van die reekspoort, druk die sleutelkombinasie Ctrl+] om die monitor te verlaat.
Bogenoemde opdragte kan ook gekombineer word soos nodig. Byvoorbeeldample, die opdrag idf.py bou flitsmonitor sal kodesamestelling uitvoer, flits en die reekspoortmonitor in volgorde oopmaak.
U kan https://bookc3.espressif.com/build-system besoek om meer te wete te kom oor die ESP-IDF-samestellingstelsel.
4.4 Oefening: Samestelling van Exampdie program "Blink"
4.4.1 Eksample Ontleding
Hierdie afdeling sal die program Blink as 'n ex neemample om die te ontleed file struktuur en kodering reëls van 'n werklike projek in detail. Die Blink-program implementeer die LED-knip-effek, en die projek is geleë in die gids bvamples/get-started/blink, wat 'n bron bevat file, konfigurasie files, en verskeie samestelling skrifte.
Die slimligprojek wat in hierdie boek bekendgestel word, is gebaseer op hierdie eksampdie program. Funksies sal geleidelik in latere hoofstukke bygevoeg word om dit uiteindelik te voltooi.
Bronkode Om die hele ontwikkelingsproses te demonstreer, is die Blink-program na esp32c3-iot-projects/device firmware/1 blink gekopieer.
Die gidsstruktuur van die blink projek files word in Figuur 4.15 getoon.
Die blink-projek bevat slegs een hoofgids, wat 'n spesiale komponent is wat
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 53
Figuur 4.15. File gidsstruktuur van die blink projek
moet ingesluit word soos beskryf in afdeling 4.3.2. Die hoofgids word hoofsaaklik gebruik om die implementering van die app_main()-funksie te stoor, wat die toegangspunt tot die gebruikerprogram is. Die knipperprojek sluit nie die komponentgids in nie, want hierdie example hoef net die komponente te gebruik wat saam met ESP-IDF kom en benodig nie bykomende komponente nie. Die CMakeLists.txt wat by die knipperprojek ingesluit is, word gebruik om die samestellingsproses te lei, terwyl Kconfig.projbuild gebruik word om konfigurasie-items vir hierdie ex by te voegampdie program in menuconfig. Ander onnodig files sal nie die samestelling van die kode beïnvloed nie, so hulle sal nie hier bespreek word nie. 'n Gedetailleerde inleiding tot die blink-projek files is soos volg.
1. /*blink.c bevat die volgende kop files*/
2. #sluit in
//Standard C-biblioteekopskrif file
3. #sluit “freertos/freeRTOS.h” //FreeRTOS hoofopskrif in file
4. #sluit “freertos/task.h” in
//FreeRTOS-taakopskrif file
5. #sluit “sdkconfig.h” in
//Configuration header file gegenereer deur kconfig
6. #sluit “bestuurder/gpio.h” in
//GPIO bestuurder kop file
Die bron file blink.c bevat 'n reeks koptekste files wat ooreenstem met funksie verklaar-
sies. ESP-IDF volg gewoonlik die volgorde om standaard biblioteekopskrif in te sluit files, VryR-
TOS-opskrif files, bestuurder kop files, ander komponent kop files, en projekopskrif files.
Die volgorde waarin kopskrif files ingesluit kan die finale samestelling resultaat beïnvloed, so probeer om
volg die standaardreëls. Daar moet kennis geneem word dat sdkconfig.h outomaties gegenereer word
deur kconfig en kan slegs gekonfigureer word deur die opdrag idf.py menuconfig.
Direkte wysiging van hierdie kop file sal oorskryf word.
1. /*Jy kan die GPIO kies wat ooreenstem met die LED in idf.py menuconfig, en die wysigingsresultaat van menuconfig is dat die waarde van CONFIG_BLINK
_GPIO sal verander word. U kan ook die makro-definisie direk verander
hier, en verander CONFIG_BLINK_GPIO na 'n vaste waarde.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Konfigureer IO as die GPIO verstekfunksie, aktiveer optrekmodus, en
6.
deaktiveer invoer- en uitvoermodusse*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Wireless Adventure: 'n Omvattende Gids tot IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Stel GPIO na uitvoermodus*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) {
/*Druk log*/ printf(“Skakel die LEDn af”); /*Skakel die LED af (lae uitsetvlak)*/ gpio_set_level(BLINK_GPIO, 0); /*Vertraging (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf(“Skakel die LEDn aan”); /*Skakel die LED aan (uitset hoë vlak)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Die app_main() funksie in die Blink example program dien as die toegangspunt vir gebruikersprogramme. Dit is 'n eenvoudige funksie met geen parameters en geen terugkeer waarde. Hierdie funksie word aangeroep nadat die stelsel inisialisering voltooi het, wat take insluit soos die inisialiseer van die logreekspoort, die opstel van enkel-/dubbelkern en die opstel van die waghond.
Die app_main() funksie loop in die konteks van 'n taak genaamd main. Die stapelgrootte en prioriteit van hierdie taak kan aangepas word in menuconfig Componentconfig Common ESP-verwante.
Vir eenvoudige take soos om 'n LED te flikker, kan al die nodige kode direk in die app_main() funksie geïmplementeer word. Dit behels tipies die initialisering van die GPIO wat ooreenstem met die LED en die gebruik van 'n while(1) lus om die LED aan en af te skakel. Alternatiewelik kan jy FreeRTOS API gebruik om 'n nuwe taak te skep wat die LED-knipper hanteer. Sodra die nuwe taak suksesvol geskep is, kan jy die app_main() funksie verlaat.
Die inhoud van hoof/CMakeLists.txt file, wat die samestellingsproses vir die hoofkomponent rig, is soos volg:
1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )
Onder hulle noem main/CMakeLists.txt slegs een samestellingstelselfunksie, dit is idf_component_register. Soortgelyk aan die CMakeLists.txt vir die meeste ander komponente, word blink.c by SRCS gevoeg, en die bron files wat by SRCS gevoeg word, sal saamgestel word. Terselfdertyd moet “.”, wat die pad verteenwoordig waar CMakeLists.txt geleë is, by INCLUDE_DIRS gevoeg word as die soekgidse vir kopskrif files. Die inhoud van CMakeLists.txt is soos volg:
1. #Spesifiseer v3.5 as die oudste CMake-weergawe wat deur die huidige projek ondersteun word 2. #Weergawes laer as v3.5 moet opgegradeer word voordat samestelling voortgaan 3. cmake_minimum_required(VERSION 3.5) 4. #Sluit die verstek CMake-konfigurasie van die ESP in -IDF samestelling stelsel
Hoofstuk 4. Opstel van Ontwikkelingsomgewing 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Skep 'n projek genaamd “blink” 7. project(myProject)
Onder hulle bevat die CMakeLists.txt in die wortelgids hoofsaaklik $ENV{IDF_ PATH}/tools/cmake/project.cmake, wat die hoof CMake-konfigurasie is file verskaf deur ESP-IDF. Dit word gebruik om te con
Dokumente / Hulpbronne
![]() | Espressif Systems ESP32-C3 Wireless Adventure [pdf] Gebruikersgids ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |