ESP32-C3 Wireless Adventure
ESP32-C3 Wireless Adventure
In wiidweidige gids foar IoT
Espressif Systems 12 juny 2023
Spesifikaasjes
- Produkt: ESP32-C3 Wireless Adventure
- Makker: Espressif Systems
- Datum: 12 juny 2023
Produkt Usage Ynstruksjes
Tarieding
Foardat jo it ESP32-C3 Wireless Adventure brûke, soargje derfoar dat jo dat binne
bekend mei de konsepten en arsjitektuer fan IoT. Dit sil helpe
jo begripe hoe't it apparaat past yn it gruttere IoT-ekosysteem
en syn potinsjele applikaasjes yn tûke huzen.
Yntroduksje en praktyk fan IoT-projekten
Yn dizze seksje sille jo leare oer typyske IoT-projekten,
ynklusyf de basismodules foar mienskiplike IoT-apparaten, basismodules
fan kliïntapplikaasjes, en mienskiplike IoT-wolkplatfoarms. Dit sil
jouwe jo in basis foar it begripen en it meitsjen fan jo
eigen IoT-projekten.
Praktyk: Smart Light Project
Yn dit praktykprojekt sille jo leare hoe't jo in tûk meitsje kinne
ljocht mei it ESP32-C3 Wireless Adventure. De struktuer fan it projekt,
funksjes, hardware tarieding, en ûntwikkeling proses sil wêze
yn detail útlein.
Projekt Struktuer
It projekt bestiet út ferskate ûnderdielen, ynklusyf de
ESP32-C3 Wireless Adventure, LED's, sensors, en in wolk
efterkant.
Projekt Funksjes
De smart ljocht projekt kinne jo kontrolearje de helderheid en
kleur fan de LED's op ôfstân fia in mobile app of web
ynterface.
Hardware Tarieding
Ta te rieden op it projekt, Jo moatte sammelje de
needsaaklike hardware komponinten, lykas de ESP32-C3 Wireless
Adventure board, LED's, wjerstannen, en in stroomfoarsjenning.
Untwikkelingsproses
It ûntwikkelingsproses omfettet it opsetten fan de ûntwikkeling
miljeu, skriuwen koade te kontrolearjen de LEDs, ferbinen mei de
wolk backend, en testen fan de funksjonaliteit fan de smart
ljocht.
Yntroduksje ta ESP RainMaker
ESP RainMaker is in krêftich ramt foar it ûntwikkeljen fan IoT
apparaten. Yn dizze seksje sille jo leare wat ESP RainMaker is en
hoe't it kin wurde ymplementearre yn jo projekten.
Wat is ESP RainMaker?
ESP RainMaker is in wolk-basearre platfoarm dat jout in set fan
ark en tsjinsten foar it bouwen en behearen fan IoT-apparaten.
De ymplemintaasje fan ESP RainMaker
Dizze paragraaf ferklearret de ferskate komponinten belutsen by
ymplemintaasje fan ESP RainMaker, ynklusyf de oanspraaktsjinst,
RainMaker Agent, wolk backend, en RainMaker Client.
Oefenjen: kaaipunten foar ûntwikkeljen mei ESP RainMaker
Yn dizze praktyk seksje sille jo leare oer de wichtichste punten nei
beskôgje as jo ûntwikkelje mei ESP RainMaker. Dit is ynklusyf apparaat
claiming, datasyngronisaasje, en brûkersbehear.
Skaaimerken fan ESP RainMaker
ESP RainMaker biedt ferskate funksjes foar brûkersbehear, ein
brûkers en behearders. Dizze funksjes tastean foar maklik apparaat
setup, remote control, en monitoring.
Untwikkelingsomjouwing ynstelle
Dizze seksje jout in oerview fan ESP-IDF (Espressif IoT
Development Framework), dat is it offisjele ûntwikkelingskader
foar ESP32-basearre apparaten. It ferklearret de ferskillende ferzjes fan
ESP-IDF en hoe't jo de ûntwikkelingsomjouwing ynstelle.
Hardware en Driver Untwikkeling
Hardware Untwerp fan Smart Light Products basearre op ESP32-C3
Dizze seksje rjochtet him op it hardware-ûntwerp fan smart ljocht
produkten basearre op de ESP32-C3 Wireless Adventure. It covers de
skaaimerken en gearstalling fan smart ljocht produkten, likegoed as de
hardware-ûntwerp fan it ESP32-C3-kearnsysteem.
Funksjes en gearstalling fan Smart Light Products
Dizze subseksje ferklearret de funksjes en komponinten dy't meitsje
up smart ljocht produkten. It besprekt de ferskate funksjes
en ûntwerp oerwagings foar it meitsjen fan tûke ljochten.
Hardware Untwerp fan ESP32-C3 Core System
It hardware-ûntwerp fan it ESP32-C3-kearnsysteem omfettet macht
oanbod, power-on folchoarder, systeem reset, SPI flash, klok boarne,
en RF en antenne oerwagings. Dizze subseksje jout
detaillearre ynformaasje oer dizze aspekten.
FAQ
F: Wat is ESP RainMaker?
A: ESP RainMaker is in wolk-basearre platfoarm dat ark leveret
en tsjinsten foar it bouwen en behearen fan IoT-apparaten. It simplifies
de ûntwikkeling proses en makket it mooglik foar maklike apparaat opset, ôfstân
kontrôle, en tafersjoch.
Q: Hoe kin ik ynstelle de ûntwikkeling omjouwing foar
ESP32-C3?
A: Om de ûntwikkelingsomjouwing foar ESP32-C3 yn te stellen, moatte jo
te ynstallearjen ESP-IDF (Espressif IoT Development Framework) en
konfigurearje it neffens de levere ynstruksjes. ESP-IDF is de
offisjele ûntwikkelingskader foar ESP32-basearre apparaten.
F: Wat binne de funksjes fan ESP RainMaker?
A: ESP RainMaker biedt ferskate funksjes, ynklusyf brûker
behear, ein brûker funksjes, en admin funksjes. Meidogger behear
soarget foar maklike oanspraak op apparaten en gegevenssyngronisaasje. Einbrûker
funksjes ynskeakelje remote control fan apparaten fia in mobile app of
web ynterface. Behearfunksjes leverje ark foar apparaatmonitoring
en behear.
ESP32-C3 Wireless Adventure
In wiidweidige gids foar IoT
Espressif Systems 12 juny 2023
Ynhâld
I Tarieding
1
1 Yntroduksje ta IoT
3
1.1 Arsjitektuer fan IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 IoT-applikaasje yn tûke huzen. . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Yntroduksje en praktyk fan IoT-projekten
9
2.1 Yntroduksje ta typyske IoT-projekten. . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Basismodules foar mienskiplike IoT-apparaten. . . . . . . . . . . . . . . . . 9
2.1.2 Basismodules fan kliïntapplikaasjes. . . . . . . . . . . . . . . . . . . 10
2.1.3 Yntroduksje ta Common IoT Cloud Platforms. . . . . . . . . . . . . . 11
2.2 Praktyk: Smart Light Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Projekt Struktuer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Projekt Funksjes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Hardware tarieding. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Untwikkelingsproses. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Yntroduksje ta ESP RainMaker
19
3.1 Wat is ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 De ymplemintaasje fan ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Claiming Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 RainMaker Agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Cloud Backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 RainMaker Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Oefenjen: kaaipunten foar ûntwikkeljen mei ESP RainMaker. . . . . . . . . . . . 25
3.4 Funksjes fan ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Brûkersbehear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Einbrûkersfunksjes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Admin Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Untwikkelingsomjouwing ynstelle
31
4.1 ESP-IDF oerview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 ESP-IDF Ferzjes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 ESP-IDF Git Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Kies in gaadlike ferzje. . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Oerview fan ESP-IDF SDK Directory. . . . . . . . . . . . . . . . . . . . 34 4.2 ESP-IDF Untwikkelingsomjouwing ynstelle. . . . . . . . . . . . . . . . . 38 4.2.1 ESP-IDF Untwikkelingsomjouwing ynstelle op Linux. . . . . . . . 38 4.2.2 ESP-IDF Untwikkelingsomjouwing ynstelle op Windows. . . . . . 40 4.2.3 ESP-IDF Untwikkelingsomjouwing ynstelle op Mac. . . . . . . . . 45 4.2.4 Ynstallearje VS Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Yntroduksje ta ûntwikkelingsomjouwings fan tredden. . . . . . . . 46 4.3 ESP-IDF kompilaasjesysteem. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Basisbegripen fan kompilaasjesysteem. . . . . . . . . . . . . . . . . . 47 4.3.2 Projekt File Struktuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Standert bouregels fan it kompilaasjesysteem. . . . . . . . . . . . . 50 4.3.4 Ynlieding ta it kompilaasjeskript. . . . . . . . . . . . . . . . . . 51 4.3.5 Ynlieding ta mienskiplike kommando's. . . . . . . . . . . . . . . . . . . 52 4.4 Oefenje: kompilearjen Exampit programma "Blink". . . . . . . . . . . . . . . . . . 53 4.4.1 Example Analyse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 It Blink-programma kompilearje. . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 It knipperprogramma knipperje. . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Serial Port Log Analyse fan it Blink programma. . . . . . . . . . . . . . 60 4.5 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Hardware en Driver Untjouwing
65
5 Hardware Untwerp fan Smart Light Products basearre op ESP32-C3
67
5.1 Funksjes en gearstalling fan Smart Light Products. . . . . . . . . . . . . . . 67
5.2 Hardware Untwerp fan ESP32-C3 Core System. . . . . . . . . . . . . . . . . . . 70
5.2.1 Stromforsyning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Power-on folchoarder en systeem weromsette. . . . . . . . . . . . . . . . . . 74
5.2.3 SPI Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Klok Boarne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF en Antenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Strapping Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 GPIO en PWM Controller. . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Oefenje: Bouwe in tûk ljochtsysteem mei ESP32-C3. . . . . . . . . . . . . 80
5.3.1 Selektearje modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Konfigurearje GPIOs fan PWM sinjalen. . . . . . . . . . . . . . . . . . . . 82
5.3.3 Firmware ynladen en debuggen ynterface. . . . . . . . . . . . 82
5.3.4 Rjochtlinen foar RF Design. . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Rjochtlinen foar Power Supply Design. . . . . . . . . . . . . . . . . . . 86 5.4 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Driver Untjouwing
87
6.1 Driverûntwikkelingsproses. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 ESP32-C3 Perifeare applikaasjes. . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 LED Driver Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Kleurromten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 LED Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 LED dimming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Yntroduksje ta PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 LED Dimming Driver Untjouwing. . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Net-flechtich opslach (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 LED PWM Controller (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 LED PWM Programming. . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Oefenje: Bestjoerders tafoegje oan Smart Light Project. . . . . . . . . . . . . . . . . 103
6.5.1 Knop Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 LED Dimming Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Triedleaze kommunikaasje en kontrôle
109
7 Wi-Fi konfiguraasje en ferbining
111
7.1 Basis fan Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Yntroduksje ta Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evolúsje fan IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Wi-Fi-konsepten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Wi-Fi Ferbining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Basis fan Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Yntroduksje ta Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Bluetooth-konsepten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Bluetooth Ferbining. . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Wi-Fi netwurk konfiguraasje. . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Wi-Fi Netwurk Konfiguraasje Guide. . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Oare metoaden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Wi-Fi-programmearring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Wi-Fi-ûnderdielen yn ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Oefening: Wi-Fi Ferbining. . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Oefening: Smart Wi-Fi Ferbining. . . . . . . . . . . . . . . . . . . . . 145
7.5 Oefenje: Wi-Fi-konfiguraasje yn Smart Light Project. . . . . . . . . . . . . . . 156 7.5.1 Wi-Fi Ferbining yn Smart Light Project. . . . . . . . . . . . . . . . . 156 7.5.2 Smart Wi-Fi konfiguraasje. . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Lokale kontrôle
159
8.1 Ynlieding ta lokale kontrôle. . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Tapassing fan lokale kontrôle. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages fan Local Control. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Untdekke kontrolearre apparaten fia smartphones. . . . . . . . . . 161
8.1.4 Datakommunikaasje tusken smartphones en apparaten. . . . . . . . 162
8.2 Common Local Discovery Metoaden. . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Útstjoering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Ferliking Tusken Broadcast en Multicast. . . . . . . . . . . . . . 176
8.2.4 Multicast Application Protocol mDNS foar lokale ûntdekking. . . . . . . . 176
8.3 Mienskiplike kommunikaasjeprotokollen foar lokale gegevens. . . . . . . . . . . . . . . 179
8.3.1 Transmission Control Protocol (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 HyperText Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Meidogger Datagram Protokol (UDP). . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Constrained Application Protocol (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Bluetooth Protokol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Gearfetting fan Data Communication Protocol. . . . . . . . . . . . . . . 203
8.4 Garânsje foar gegevensfeiligens. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Ynlieding ta Transport Layer Security (TLS). . . . . . . . . . . . . 207
8.4.2 Ynlieding ta Datagram Transport Layer Security (DTLS). . . . . . . 213
8.5 Oefenje: Lokale kontrôle yn Smart Light Project. . . . . . . . . . . . . . . . . . 217
8.5.1 It meitsjen fan in Wi-Fi-basearre lokale kontrôletsjinner. . . . . . . . . . . . . . . 217
8.5.2 Ferifiearje lokale kontrôle funksjonaliteit mei help fan skripts. . . . . . . . . . . 221
8.5.3 It meitsjen fan in Bluetooth-basearre Local Control Server. . . . . . . . . . . . 222
8.6 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Wolkkontrôle
225
9.1 Yntroduksje ta Remote Control. . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Cloud Data Communication Protocols. . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 MQTT Yntroduksje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 MQTT-prinsipes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 MQTT-berjochtformaat. . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Protokol ferliking. . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 MQTT Broker ynstelle op Linux en Windows. . . . . . . . . . . . 233 9.2.6 Ynstelle MQTT Client basearre op ESP-IDF. . . . . . . . . . . . . . . . 235 9.3 MQTT-gegevensfeiligens garandearje. . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Betsjutting en funksje fan sertifikaten. . . . . . . . . . . . . . . . . . . 237 9.3.2 Sertifikaten lokaal generearje. . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 MQTT Broker konfigurearje. . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 MQTT Client konfigurearje. . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Oefenje: Remote Control fia ESP RainMaker. . . . . . . . . . . . . . . . 243 9.4.1 ESP RainMaker Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Node en Cloud Backend Communication Protocol. . . . . . . . . . . 244 9.4.3 Kommunikaasje tusken Client en Cloud Backend. . . . . . . . . . . 249 9.4.4 Brûkersrollen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Basis Tsjinsten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 RainMaker-app en yntegraasjes fan tredden. . . . . . . . . . . . . . . 262 9.5 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Untwikkeling fan smartphone-apps
269
10.1 Yntroduksje ta ûntwikkeling fan smartphone-apps. . . . . . . . . . . . . . . . . . 269
10.1.1 Oerview fan Smartphone App Untwikkeling. . . . . . . . . . . . . . . 270
10.1.2 Struktuer fan it Android-projekt. . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Struktuer fan it iOS-projekt. . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Lifecycle fan in Android-aktiviteit. . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Lifecycle fan iOS ViewController. . . . . . . . . . . . . . . . . . . . . . 273
10.2 In nij smartphone-appprojekt oanmeitsje. . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Tariede op Android-ûntwikkeling. . . . . . . . . . . . . . . . . . . 275
10.2.2 In nij Android-projekt oanmeitsje. . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Ofhinklikens tafoegje foar MyRainmaker. . . . . . . . . . . . . . . . . 276
10.2.4 Tastimmingfersyk yn Android. . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Tariede op iOS-ûntwikkeling. . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 In nij iOS-projekt oanmeitsje. . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Ofhinklikens tafoegje foar MyRainmaker. . . . . . . . . . . . . . . . . 279
10.2.8 Tastimmingfersyk yn iOS. . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analyse fan de funksjonele easken fan 'e App. . . . . . . . . . . . . . . . . . 281
10.3.1 Analyse fan de funksjonele easken fan it projekt. . . . . . . . . . . . 282
10.3.2 Analyse fan brûkersbeheareasken. . . . . . . . . . . . . . . 282 10.3.3 Analyse fan apparaat foarsjen en binende easken. . . . . . . 283 10.3.4 Analyse fan Remote-Control Requirements. . . . . . . . . . . . . . . . 283 10.3.5 Analyse fan planning easken. . . . . . . . . . . . . . . . . . . 284 10.3.6 Analyse fan User Center Requirements. . . . . . . . . . . . . . . . . . 285 10.4 Untwikkeling fan brûkersbehear. . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Yntroduksje ta RainMaker APIs. . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Inisjearjen fan kommunikaasje fia smartphone. . . . . . . . . . . . . . . . 286 10.4.3 Akkountregistraasje. . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Account Oanmelde. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Untwikkeling fan apparaatfoarsjenning. . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Scanapparaten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Apparaten ferbine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Generearje geheime kaaien. . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Node ID krije. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Foarsjenningsapparaten. . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Untwikkeling fan Device Control. . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Apparaten ferbine oan wolkakkounts. . . . . . . . . . . . . . . . . . . . 303 10.6.2 In list mei apparaten krije. . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Apparaatstatus krije. . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 It feroarjen fan apparaatstatus. . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Untwikkeling fan planning en brûkerssintrum. . . . . . . . . . . . . . . . . . . 313 10.7.1 It útfieren fan skemafunksje. . . . . . . . . . . . . . . . . . . . 313 10.7.2 Implementearje User Center. . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Mear Cloud APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Firmware Upgrade en Ferzjebehear
321
11.1 Firmware Upgrade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Oerview fan Partition Tables. . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Firmware Boot Process. . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Oerview fan it OTA-meganisme. . . . . . . . . . . . . . . . . . . . . 326
11.2 Firmware Ferzje Management. . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Firmware Marking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Rollback en Anti-Rollback. . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Oefenje: Over-the-air (OTA) Example . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Upgrade Firmware fia in lokale host. . . . . . . . . . . . . . . . . 332
11.3.2 Upgrade Firmware fia ESP RainMaker. . . . . . . . . . . . . . . 335
11.4 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Optimalisaasje en Mass Production
343
12 Power Management en Low-Power Optimization
345
12.1 ESP32-C3 Power Management. . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Dynamic Frequency Skaalfergrutting. . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Power Management Konfiguraasje. . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Low-Power Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Modem-sliepmodus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Light-sleep Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Djippe sliepmodus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Aktuele konsumpsje yn ferskillende macht Modes. . . . . . . . . . . . . 358
12.3 Power Management en Low-Power debuggen. . . . . . . . . . . . . . . . . 359
12.3.1 Log-debuggen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 GPIO-debuggen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Praktyk: Power Management yn Smart Light Project. . . . . . . . . . . . . . . 363
12.4.1 Konfigurearje Power Management Feature. . . . . . . . . . . . . . . . . 364
12.4.2 Brûk Power Management Sloten. . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Ferifiearje Power Consumption. . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Ferbettere apparaatfeiligensfunksjes
369
13.1 Oerview fan IoT Device Data Security. . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Wêrom IoT-apparaatgegevens befeiligje? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Basiseasken foar IoT-apparaatgegevensfeiligens. . . . . . . . . . . . 371
13.2 Beskerming fan gegevensyntegriteit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Ynlieding ta yntegriteit ferifikaasje metoade. . . . . . . . . . . . . . 372
13.2.2 Yntegriteit ferifikaasje fan Firmware Data. . . . . . . . . . . . . . . . . . 373
13.2.3 eksample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Beskerming fan gegevensfertroulikens. . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Yntroduksje ta gegevensfersifering. . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Yntroduksje ta Flash fersifering Scheme. . . . . . . . . . . . . . . . . 376
13.3.3 Flash fersifering kaai Storage. . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Wurkmodus fan Flash-fersifering. . . . . . . . . . . . . . . . . . . . 380
13.3.5 Flash fersifering proses. . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Yntroduksje ta NVS-fersifering. . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 eksamples fan Flash-fersifering en NVS-fersifering. . . . . . . . . . . 384
13.4 Data Legitimacy Protection. . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Ynlieding ta digitale hantekening. . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Oerview fan Secure Boot Scheme. . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Yntroduksje ta Software Secure Boot. . . . . . . . . . . . . . . . . . . 388 13.4.4 Yntroduksje ta Hardware Secure Boot. . . . . . . . . . . . . . . . . . 390 13.4.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Oefenjen: Feiligensfunksjes yn massaproduksje. . . . . . . . . . . . . . . . . . 396 13.5.1 Flash-fersifering en feilige opstart. . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Flash-fersifering ynskeakelje en feilige boot mei Batch Flash-ark. . 397 13.5.3 Flash-fersifering ynskeakelje en feilige boot yn Smart Light Project. . . 398 13.6 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Firmware Burning en Testen foar Mass Production
399
14.1 Firmware Burning yn massa produksje. . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Data Partitionen definiearje. . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Firmware Burning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Mass Production Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Praktyk: Massaproduksjegegevens yn Smart Light Project. . . . . . . . . . . . . 404
14.4 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP-ynsjoch: Platfoarm foar tafersjoch op ôfstân
405
15.1 Yntroduksje ta ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Te begjinnen mei ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Te begjinnen mei ESP Insights yn it esp-insights Project. . . . . . 409
15.2.2 Running Example yn it esp-insights Project. . . . . . . . . . . . . . . 411
15.2.3 Rapportearje Coredump ynformaasje. . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Oanpasse logs fan belang. . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Rapportearje Reden foar opnij opstarten. . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Oanpaste Metrics rapportearje. . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Oefenje: ESP-ynsjoch brûke yn Smart Light Project. . . . . . . . . . . . . . . 416
15.4 Gearfetting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Ynlieding
ESP32-C3 is in single-core Wi-Fi en Bluetooth 5 (LE) microcontroller SoC, basearre op de iepen boarne RISC-V-arsjitektuer. It slacht it juste lykwicht fan macht, I/O-mooglikheden en feiligens, en biedt dus de optimale kosten-effektive oplossing foar ferbûne apparaten. Om ferskate tapassingen fan 'e ESP32-C3-famylje sjen te litten, sil dit boek fan Espressif jo nimme op in nijsgjirrige reis troch AIoT, begjinnend fan 'e basis fan IoT-projektûntwikkeling en omjouwingsopstelling oant praktyske eks.amples. De earste fjouwer haadstikken prate oer IoT, ESP RainMaker en ESP-IDF. Haadstik 5 en 6 koart oer hardware ûntwerp en stjoerprogramma ûntwikkeling. As jo foarútgong, sille jo ûntdekke hoe't jo jo projekt konfigurearje fia Wi-Fi-netwurken en mobile apps. Uteinlik learje jo jo projekt te optimalisearjen en it yn massaproduksje te setten.
As jo in yngenieur binne yn besibbe fjilden, in software-arsjitekt, in learaar, in studint, of elkenien dy't ynteresse hat yn IoT, dit boek is foar jo.
Jo kinne de koade downloade bvample brûkt yn dit boek fan 'e side fan Espressif op GitHub. Foar lêste ynformaasje oer IoT-ûntwikkeling, folgje asjebleaft ús offisjele akkount.
Foarwurd
In ynformearjende wrâld
Troch de golf fan ynternet te riden, makke Internet of Things (IoT) syn grutte debút om in nij soarte ynfrastruktuer te wurden yn digitale ekonomy. Om de technology tichter by it publyk te bringen, wurket Espressif Systems foar de fisy dat ûntwikkelders út alle lagen fan it libben IoT kinne brûke om guon fan 'e meast driuwende problemen fan ús tiid op te lossen. In wrâld fan "Intelligent Network of All Things" is wat wy ferwachtsje fan 'e takomst.
It ûntwerpen fan ús eigen chips makket in kritysk ûnderdiel fan dy fisy. It moat in maraton wêze, dy't konstante trochbraken fereasket tsjin technologyske grinzen. Fan 'e "Game Changer" ESP8266 oant de ESP32-searje dy't Wi-Fi en Bluetoothr (LE) ferbining yntegrearje, folge troch ESP32-S3 útrist mei AI-fersnelling, stopet Espressif noait mei it ûndersykjen en ûntwikkeljen fan produkten foar AIoT-oplossingen. Mei ús iepen boarne software, lykas it IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF, en Device Connectivity Platform ESP RainMaker, hawwe wy in ûnôfhinklik ramt makke foar it bouwen fan AIoT-applikaasjes.
Mei yngong fan july 2022 hawwe de kumulative ferstjoeringen fan Espressif's IoT-chipsets mear dan 800 miljoen, liedend yn 'e Wi-Fi MCU-merk en in enoarm oantal ferbûne apparaten wrâldwiid opstarten. It stribjen nei treflikens makket elk Espressif-produkt in grutte hit foar har hege nivo fan yntegraasje en kosteneffisjinsje. De frijlitting fan ESP32-C3 markearret in wichtige mylpeal fan Espressif's sels ûntwikkele technology. It is in single-core, 32-bit, RISC-V-basearre MCU mei 400KB fan SRAM, dy't kin rinne op 160MHz. It hat yntegrearre 2.4 GHz Wi-Fi en Bluetooth 5 (LE) mei in lange berik stipe. It slacht in fyn lykwicht fan macht, I/O-mooglikheden en feiligens, en biedt dus de optimale kosten-effektive oplossing foar ferbûne apparaten. Op grûn fan sokke krêftige ESP32-C3 is dit boek bedoeld om lêzers te helpen IoT-relatearre kennis te begripen mei detaillearre yllustraasje en praktyske eks.amples.
Wêrom hawwe wy dit boek skreaun?
Espressif Systems is mear dan in semiconductorbedriuw. It is ek in IoT-platfoarmbedriuw, dat altyd stribbet nei trochbraken en ynnovaasjes op it mêd fan technology. Tagelyk hat Espressif syn sels ûntwikkele bestjoeringssysteem en softwarekader iepene en dield mei de mienskip, en foarmje in unyk ekosysteem. Yngenieurs, makkers en technology-entûsjasters ûntwikkelje aktyf nije softwareapplikaasjes basearre op de produkten fan Espressif, kommunisearje frij en diele har ûnderfining. Jo kinne de fassinearjende ideeën fan ûntwikkelders de hiele tiid sjen op ferskate platfoarms, lykas YouTube en GitHub. De populariteit fan de produkten fan Espressif hat in tanimmend oantal auteurs stimulearre dy't mear dan 100 boeken hawwe produsearre basearre op Espressif-chipsets, yn mear dan tsien talen, ynklusyf Ingelsk, Sineesk, Dútsk, Frânsk en Japansk.
It is de stipe en it fertrouwen fan mienskipspartners dy't de trochgeande ynnovaasje fan Espressif stimulearje. "Wy stribje dernei om ús chips, bestjoeringssystemen, kaders, oplossingen, Cloud, saaklike praktiken, ark, dokumintaasje, skriften, ideeën, ensfh., hieltyd relevanter te meitsjen foar de antwurden dy't minsken nedich binne yn 'e meast driuwende problemen fan hjoeddeistich libben. Dit is de heechste ambysje en morele kompas fan Espressif. ” sei de hear Teo Swee Ann, oprjochter en CEO fan Espressif.
Espressif wurdearret lêzen en ideeën. As de trochgeande opwurdearring fan IoT-technology hegere easken stelt oan yngenieurs, hoe kinne wy mear minsken helpe om IoT-chips, bestjoeringssystemen, softwarekaders, applikaasjeskema's en produkten foar wolktsjinsten fluch te behearskjen? Lykas it sprekwurd seit, is it better om in man te learen hoe't er fiskje moat dan him fisk te jaan. Yn in brainstorming sesje kaam it ús op dat wy in boek skriuwe koene om systematysk de kaaikennis fan IoT-ûntwikkeling te sortearjen. Wy sloegen it ôf, sammele fluch in groep senior yngenieurs, en kombinearren de ûnderfining fan it technyske team yn ynbêde programmearring, IoT-hardware en softwareûntwikkeling, allegear bydroegen oan de publikaasje fan dit boek. Yn it proses fan skriuwen hawwe wy ús bêst besocht om objektyf en earlik te wêzen, fan 'e kokon ôfstutsen, en beknopte útdrukkingen te brûken om de kompleksiteit en sjarme fan it Internet of Things te fertellen. Wy hawwe de mienskiplike fragen soarchfâldich gearfette, ferwiisd nei de feedback en suggestjes fan 'e mienskip, om dúdlik te beantwurdzjen fan 'e fragen dy't tsjinkomme yn it ûntwikkelingsproses, en praktyske IoT-ûntwikkelingsrjochtlinen foar relevante technici en beslútmakkers leverje.
Boek Struktuer
Dit boek nimt in yngenieur-sintraal perspektyf en leit stap foar stap de nedige kennis út foar IoT-projektûntwikkeling. It is gearstald út fjouwer dielen, as folget:
· Tarieding (haadstik 1): Dit diel yntroduseart de arsjitektuer fan IoT, typysk IoT-projektkader, it ESP RainMakerr-wolkplatfoarm, en de ûntwikkelingsomjouwing ESP-IDF, om in solide basis te lizzen foar IoT-projektûntwikkeling.
· Hardware- en bestjoerderûntwikkeling (haadstik 5): Op grûn fan 'e ESP6-C32-chipset wiidt dit diel út oer it minimale hardwaresysteem- en bestjoerderûntwikkeling, en ymplementearret de kontrôle fan dimmen, kleurgradearring en draadloze kommunikaasje.
· Draadloze kommunikaasje en kontrôle (haadstik 7): Dit diel ferklearret it yntelliginte Wi-Fi-konfiguraasjeskema basearre op ESP11-C32-chip, lokale en wolkkontrôleprotokollen, en lokale en ôfstânkontrôle fan apparaten. It leveret ek skema's foar it ûntwikkeljen fan smartphone-apps, firmware-upgrade, en ferzjebehear.
· Optimalisaasje en massaproduksje (haadstik 12-15): Dit diel is bedoeld foar avansearre IoT-applikaasjes, rjochte op optimisaasje fan produkten yn enerzjybehear, optimisaasje mei leech enerzjy, en ferbettere feiligens. It yntrodusearret ek firmware-brânen en testen yn massaproduksje, en hoe't jo de rinnende status en logs fan apparaatfirmware kinne diagnostearje fia it platfoarm foar kontrôle op ôfstân ESP Insights.
Oer de boarnekoade
Lêzers kinne rinne de eksample programma's yn dit boek, itsij troch de koade mei de hân yn te fieren of troch de boarnekoade te brûken dy't it boek begeliedt. Wy beklamje de kombinaasje fan teory en praktyk, en sette sadwaande in praktykseksje yn op basis fan it Smart Light-projekt yn hast elk haadstik. Alle koades binne iepen boarne. Lêzers binne wolkom om de boarnekoade te downloaden en it te besprekken yn 'e seksjes yn ferbân mei dit boek op GitHub en ús offisjele foarum esp32.com. De iepen boarne koade fan dit boek is ûnderwurpen oan de betingsten fan Apache License 2.0.
Notysje fan de skriuwer
Dit boek is offisjeel produsearre troch Espressif Systems en is skreaun troch senior yngenieurs fan it bedriuw. It is geskikt foar managers en R&D-personiel yn IoT-relatearre yndustry, leararen en studinten fan relatearre majoaren, en entûsjasters op it mêd fan Internet of Things. Wy hoopje dat dit boek kin tsjinje as in wurk hânboek, in referinsje, en in bedside boek, te wêzen as in goede tutor en freon.
By it gearstallen fan dit boek hawwe wy ferwize nei guon relevante ûndersyksresultaten fan saakkundigen, gelearden en technici yn binnen- en bûtenlân, en wy hawwe ús bêst dien om se neffens akademyske noarmen te sitearjen. It is lykwols net foar te kommen dat der wat weilitten wurde moatte, dus hjir wolle wy ús djip respekt en tankberens uterje oan alle relevante auteurs. Derneist hawwe wy ynformaasje fan it ynternet oanhelle, dus wolle wy de orizjinele auteurs en útjouwers betankje en ferûntskuldigje dat wy de boarne fan elk stikje ynformaasje net kinne oanjaan.
Om in boek fan hege kwaliteit te produsearjen, hawwe wy rûnen fan ynterne diskusjes organisearre, en leard fan de suggestjes en feedback fan proeflêzers en útjouwersredakteuren. Hjir wolle wy jo nochris tankje foar jo help dy't allegear bydroegen hat oan dit suksesfolle wurk.
As lêste, mar it wichtichste, tank oan elkenien by Espressif dy't sa hurd wurke hat foar de berte en popularisearring fan ús produkten.
De ûntwikkeling fan IoT-projekten omfettet in breed oanbod fan kennis. Beheind ta de lingte fan it boek, lykas it nivo en de ûnderfining fan 'e auteur, weglatingen binne net te ûntkommen. Dêrom freegje wy freonlik dat saakkundigen en lêzers ús flaters bekritisearje en korrigearje. As jo suggestjes hawwe foar dit boek, nim dan kontakt mei ús op book@espressif.com. Wy sjogge út nei jo feedback.
Hoe kinne jo dit boek brûke?
De koade fan de projekten yn dit boek is iepen boarne. Jo kinne it downloade fan ús GitHub-repository en jo tinzen en fragen diele op ús offisjele foarum. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Yn it hiele boek sille d'r dielen markearre wurde lykas hjirûnder werjûn.
Boarnekoade Yn dit boek beklamje wy de kombinaasje fan teory en praktyk, en sette sadwaande in praktykseksje oer it Smart Light-projekt yn hast elk haadstik. Oerienkommende stappen en boarne side wurdt markearre tusken twa rigels begjinnend mei de tag Boarne koade.
OPMERKING/TIPS Dit is wêr't jo wat krityske ynformaasje en herinneringen kinne fine foar suksesfolle debuggen fan jo programma. Se wurde markearre tusken twa dikke linen begjinnend mei de tag OPMERKING of TIPS.
De measte kommando's yn dit boek wurde útfierd ûnder Linux, frege troch it karakter "$". As it kommando superuser-privileezjes fereasket om út te fieren, sil de prompt wurde ferfongen troch "#". De kommando-prompt op Mac-systemen is "%", lykas brûkt yn paragraaf 4.2.3 ESP-IDF ynstalleare op Mac.
De haadtekst yn dit boek wurdt printe yn Hânfêst, wylst de koade examples, komponinten, funksjes, fariabelen, koade file nammen, koade mappen, en snaren sille wêze yn Courier New.
Kommando's of teksten dy't moatte wurde ynfierd troch de brûker, en kommando's dy't kinne wurde ynfierd troch te drukken op de "Enter" kaai wurdt printe yn Courier Nij fet. Logboeken en koadeblokken sille wurde presintearre yn ljochtblauwe fakjes.
Example:
Twad, brûk esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py om de NVS partition binêr te generearjen file op 'e ûntwikkelingshost mei it folgjende kommando:
$ python $IDF PATH/components/nvs flash/nvs partition generator/nvs partition gen.py –input massa prod.csv –output massa prod.bin –size NVS PARTITION SIZE
Haadstik 1
Ynlieding
nei
IoT
Oan 'e ein fan' e 20e ieu, mei de opkomst fan kompjûternetwurken en kommunikaasjetechnologyen, yntegrearre ynternet rap yn it libben fan minsken. As ynternettechnology trochgiet te rypjen, waard it idee fan Internet of Things (IoT) berne. Letterlik betsjut IoT in ynternet wêr't dingen ferbûn binne. Wylst it orizjinele ynternet de grinzen fan romte en tiid brekt en de ôfstân tusken "persoan en persoan" fermindert, makket IoT "dingen" in wichtige dielnimmer, en bringt "minsken" en "dingen" tichter byinoar. Yn de foar te fernimmen takomst is IoT ynsteld om de driuwende krêft te wurden fan 'e ynformaasjesektor.
Dus, wat is it Internet of Things?
It is lestich om it Internet of Things sekuer te definiearjen, om't syn betsjutting en omfang konstant yn evoluearje. Yn 1995 brocht Bill Gates it idee fan IoT foar it earst yn syn boek The Road Ahead. Simply set, IoT stelt objekten yn steat om ynformaasje mei elkoar te wikseljen fia ynternet. It úteinlike doel is om in "ynternet fan alles" op te rjochtsjen. Dit is in betide ynterpretaasje fan IoT, lykas in fantasy fan takomstige technology. Tritich jier letter, mei de rappe ûntwikkeling fan ekonomy en technology, komt de fantasy yn werklikheid. Fan tûke apparaten, tûke huzen, tûke stêden, ynternet fan auto's en draachbere apparaten, oant de "metaverse" stipe troch IoT-technologyen, nije konsepten komme konstant op. Yn dit haadstik sille wy begjinne mei in útlis fan 'e arsjitektuer fan Internet of Things, en dan de meast foarkommende IoT-applikaasje yntrodusearje, it tûke hûs, om jo te helpen in dúdlik begryp fan IoT te krijen.
1.1 Arsjitektuer fan IoT
Internet of Things omfettet meardere technologyen dy't ferskillende tapassingsbehoeften en foarmen hawwe yn ferskate yndustry. Om de struktuer, de kaaitechnologyen en tapassingskaaimerken fan IoT te sortearjen, is it nedich om in unifoarme arsjitektuer en in standert technysk systeem te fêstigjen. Yn dit boek is de arsjitektuer fan IoT gewoan ferdield yn fjouwer lagen: perception & control layer, network layer, platform layer, and application layer.
Perception & Control Layer As it meast basale elemint fan 'e IoT-arsjitektuer, is perception & control layer de kearn om de wiidweidige sensing fan IoT te realisearjen. Syn haadfunksje is it sammeljen, identifisearjen en kontrolearjen fan ynformaasje. It bestiet út in ferskaat oan apparaten mei it fermogen fan waarnimming,
3
identifikaasje, kontrôle en útfiering, en is ferantwurdlik foar it opheljen en analysearjen fan gegevens lykas materiaal eigenskippen, gedrachsproblemen trends, en apparaat status. Op dizze manier krijt IoT de echte fysike wrâld te erkennen. Neist, de laach is ek by steat om te kontrolearjen de status fan it apparaat.
De meast foarkommende apparaten fan dizze laach binne ferskate sensoren, dy't in wichtige rol spylje yn it sammeljen en identifisearjen fan ynformaasje. Sensors binne as minsklike sintúchlike organen, lykas fotosensitive sensoren lykweardich oan fyzje, akoestyske sensoren foar harkjen, gassensors foar rûken, en druk- en temperatuergefoelige sensoren foar oanreitsjen. Mei al dizze "sintúchlike organen" wurde objekten "libben" en yn steat fan yntelliginte waarnimming, erkenning en manipulaasje fan 'e fysike wrâld.
Netwurklaach De haadfunksje fan 'e netwurklaach is it oerdragen fan ynformaasje, ynklusyf gegevens krigen fan 'e perception & control laach nei spesifisearre doel, lykas kommando's útjûn fan 'e applikaasjelaach werom nei de perception & control laach. It tsjinnet as in wichtige kommunikaasjebrêge dy't ferskate lagen fan in IoT-systeem ferbynt. Om in basismodel fan Internet of Things op te setten, giet it om twa stappen om objekten yn in netwurk te yntegrearjen: tagong ta ynternet en oerdracht fia ynternet.
Tagong ta ynternet Ynternet makket ynterferbining mooglik tusken persoan en persoan, mar slagget net om dingen yn 'e grutte famylje op te nimmen. Foar de komst fan IoT wiene de measte dingen net "netwurkber". Troch de trochgeande ûntwikkeling fan technology slagget IoT om dingen te ferbinen mei it ynternet, en realisearje sadwaande ynterferbining tusken "minsken en dingen", en "dingen en dingen". D'r binne twa gewoane manieren om ynternetferbining te ymplementearjen: bekabele netwurk tagong en draadloze netwurk tagong.
Wired netwurk tagong metoaden befetsje Ethernet, seriële kommunikaasje (bygelyks, RS-232, RS-485) en USB, wylst Wireless netwurk tagong hinget ôf fan Wireless kommunikaasje, dat kin fierder ferdield yn koarte-range Wireless kommunikaasje en lange-range Wireless kommunikaasje.
Draadloze kommunikaasje mei koarte berik omfettet ZigBee, Bluetoothr, Wi-Fi, Near-Field Communication (NFC), en Radio Frequency Identification (RFID). Draadloze kommunikaasje mei lange berik omfettet Enhanced Machine Type Communication (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, ensfh.
Oerdracht fia ynternet Ferskillende metoaden fan ynternet tagong liede ta oerienkommende fysike oerdracht keppeling fan gegevens. It folgjende ding is om te besluten hokker kommunikaasjeprotokol te brûken om de gegevens te ferstjoeren. Yn ferliking mei ynternetterminals hawwe de measte IoT-terminals op it stuit minder
4 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
beskikbere boarnen, lykas ferwurkingsprestaasjes, opslachkapasiteit, netwurkrate, ensfh., dus it is nedich om in kommunikaasjeprotokol te kiezen dat minder boarnen yn IoT-applikaasjes ynnimt. D'r binne twa kommunikaasjeprotokollen dy't hjoed in protte brûkt wurde: Message Queuing Telemetry Transport (MQTT) en Constrained Application Protocol (CoAP).
Platfoarmlaach De platfoarmlaach ferwiist benammen nei IoT-wolkplatfoarms. As alle IoT-terminals yn netwurk binne, moatte har gegevens wurde aggregearre op in IoT-wolkplatfoarm om te wurde berekkene en opslein. De platfoarmlaach stipet benammen IoT-applikaasjes by it fasilitearjen fan tagong en behear fan massive apparaten. It ferbynt IoT-terminals mei it wolkplatfoarm, sammelt terminalgegevens en jout kommando's út oan terminals, om ôfstânkontrôle út te fieren. As tuskentsjinst foar it tawizen fan apparatuer oan yndustryapplikaasjes, spilet de platfoarmlaach in ferbinende rol yn 'e heule IoT-arsjitektuer, draacht abstrakte saaklike logika en standerdisearre kearngegevensmodel, dat net allinich rappe tagong fan apparaten kin realisearje, mar ek krêftige modulêre mooglikheden leverje. om te foldwaan oan ferskate behoeften yn senario's foar yndustryapplikaasje. De platfoarmlaach omfettet benammen funksjonele modules lykas apparaat tagong, apparaatbehear, feiligensbehear, berjochtkommunikaasje, tafersjoch op operaasje en ûnderhâld, en dataapplikaasjes.
· Tagong ta apparaat, realisearjen fan de ferbining en kommunikaasje tusken terminals en IoT-wolkplatfoarms.
· Apparaatbehear, ynklusyf funksjes lykas oanmeitsjen fan apparaten, ûnderhâld fan apparaten, gegevenskonverzje, gegevenssyngronisaasje en distribúsje fan apparaten.
· Feiligensbehear, it garandearjen fan de feiligens fan IoT-gegevensferfier út 'e perspektiven fan feiligensferifikaasje en kommunikaasjefeiligens.
· Berjochtkommunikaasje, ynklusyf trije oerdrachtrjochtingen, dat is, de terminal stjoert gegevens nei it IoT-wolkplatfoarm, it IoT-wolkplatfoarm stjoert gegevens nei de serverkant of oare IoT-wolkplatfoarms, en de serverside kontroleart op ôfstân IoT-apparaten.
· Monitoring O&M, mei tafersjoch en diagnoaze, firmware-upgrade, online debuggen, logtsjinsten, ensfh.
· Dataapplikaasjes, wêrby't de opslach, analyze en tapassing fan gegevens belutsen is.
Applikaasjelaach De applikaasjelaach brûkt de gegevens fan 'e platfoarmlaach om de applikaasje te behearjen, te filterjen en te ferwurkjen mei ark lykas databases en analysesoftware. De resultearjende gegevens kinne brûkt wurde foar echte IoT-applikaasjes lykas tûke sûnenssoarch, tûke lânbou, tûke huzen en tûke stêden.
Fansels kin de arsjitektuer fan IoT ûnderferdield wurde yn mear lagen, mar hoefolle lagen it ek bestiet út, it ûnderlizzende prinsipe bliuwt yn wêzen itselde. Learje
Haadstik 1. Ynlieding ta IoT 5
oer de arsjitektuer fan IoT helpt ús begryp fan IoT-technologyen te ferdjipjen en folslein funksjonele IoT-projekten te bouwen.
1.2 IoT-applikaasje yn tûke huzen
IoT is trochdrongen yn alle lagen fan it libben, en de meast besibbe IoT-applikaasje foar ús is it tûke hûs. In protte tradisjonele apparaten binne no foarsjoen fan ien of mear IoT-apparaten, en in protte nij boude huzen binne fan it begjin ôf ûntworpen mei IoT-technologyen. Ofbylding 1.1 toant guon gewoane smart home-apparaten.
figuer 1.1. Common smart home apparaten De ûntwikkeling fan smart home kin gewoan wurde ferdield yn smart produkt stage, toanielferbining stage en yntelliginte stage, lykas werjûn yn figuer 1.2.
figuer 1.2. Untwikkeling stage of smart home 6 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
De earste stage giet oer tûke produkten. Oars as tradisjonele huzen, yn tûke huzen, ûntfange IoT-apparaten sinjalen mei sensoren, en wurde netwurken fia draadloze kommunikaasjetechnologyen lykas Wi-Fi, Bluetooth LE en ZigBee. Brûkers kinne tûke produkten op ferskate manieren kontrolearje, lykas smartphone-apps, stimassistenten, tûke sprekkerskontrôle, ensfh. De twadde stage rjochtet him op scene ynterconnection. Yn dizze stage, ûntwikkelders beskôgje net mear it kontrolearjen fan ien tûk produkt, mar it ferbinen fan twa of mear tûke produkten, automatisearjen ta in beskate mjitte, en úteinlik foarmje in oanpaste sêne modus. Bygelyksample, doe't de brûker drukt eltse sêne modus knop, de ljochten, gerdinen, en air conditioners wurde automatysk oanpast oan de presets. Fansels is d'r de betingst dat de koppelingslogika maklik ynsteld wurde, ynklusyf triggerbetingsten en útfieringsaksjes. Stel jo foar dat de airconditioning ferwaarming modus wurdt aktivearre as de binnentemperatuer sakket ûnder 10 ° C; dat moarns om 7 oere muzyk spile wurdt om de brûker wekker te meitsjen, tûke gerdinen iepene wurde, en de ryskoker of bôlebrânje begjint troch in tûk stopkontakt; as de brûker oerein komt en klear is mei waskjen, wurdt it moarnsbrochje al tsjinne, sadat der gjin fertraging sil wêze by it wurk. Hoe handich is ús libben wurden! De tredde stage giet nei yntelliginsje stage. As mear tûke thúsapparaten tagong wurde, sille de soarten generearre gegevens ek. Mei help fan cloud computing, grutte gegevens en keunstmjittige yntelliginsje, is it as in "smarter harsens" is plante yn tûke huzen, dy't net langer faaks kommando's fan 'e brûker nedich binne. Se sammelje gegevens fan eardere ynteraksjes en leare de gedrachspatroanen en foarkarren fan 'e brûker, om aktiviteiten te automatisearjen, ynklusyf it jaan fan oanbefellings foar beslútfoarming. Op it stuit, de measte tûke wenten binne op it toaniel ynterconnection stage. As de penetraasjesnelheid en yntelliginsje fan tûke produkten tanimme, wurde barriêres tusken kommunikaasjeprotokollen fuortsmiten. Yn 'e takomst binne tûke huzen bûn om echt "tûk" te wurden, krekt lykas it AI-systeem Jarvis yn Iron Man, dat de brûker net allinich kin helpe om ferskate apparaten te kontrolearjen, deistige saken te behanneljen, mar ek super komputerkrêft en tinkfeardigens hawwe. Yn de yntelliginte stage, minsken sille bettere tsjinsten krije sawol yn kwantiteit as kwaliteit.
Haadstik 1. Ynlieding ta IoT 7
8 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Haadstik Ynlieding en praktyk fan 2 IoT-projekten
Yn haadstik 1 hawwe wy de arsjitektuer fan IoT yntrodusearre, en de rollen en ûnderlinge relaasjes fan 'e perception & control laach, netwurklaach, platfoarmlaach en applikaasjelaach, lykas ek de ûntwikkeling fan smart home. Lykwols, krekt as wannear't wy leare te skilderjen, is it witten fan 'e teoretyske kennis lang net genôch. Wy moatte "ús hannen smoarch meitsje" om IoT-projekten yn 'e praktyk te bringen om de technology wirklik te behearskjen. Dêrneist, as in projekt ferhuzet nei de massa produksje stage, it is nedich om mear faktoaren te beskôgjen lykas netwurkferbining, konfiguraasje, ynteraksje fan IoT-wolkplatfoarm, firmwarebehear en updates, behear fan massaproduksje, en feiligenskonfiguraasje. Dat, wêr moatte wy omtinken oan jaan by it ûntwikkeljen fan in folslein IoT-projekt? Yn haadstik 1 hawwe wy neamd dat smart home ien fan 'e meast foarkommende IoT-applikaasje-senario's is, en smart lights binne ien fan' e meast basale en praktyske apparaten, dy't brûkt wurde kinne yn huzen, hotels, gyms, sikehûzen, ensfh. dit boek, wy sille nimme de bou fan in tûk ljocht projekt as útgongspunt, ferklearje syn komponinten en funksjes, en jouwe begelieding op projekt ûntwikkeling. Wy hoopje dat jo konklúzjes kinne lûke út dizze saak om mear IoT-applikaasjes te meitsjen.
2.1 Yntroduksje ta typyske IoT-projekten
Wat ûntwikkeling oanbelanget, kinne basisfunksjonele modules fan IoT-projekten wurde yndield yn software- en hardwareûntwikkeling fan IoT-apparaten, ûntwikkeling fan kliïntapplikaasjes, en ûntwikkeling fan IoT-wolkplatfoarm. It is wichtich om te ferdúdlikjen de basis funksjonele modules, dat wurdt fierder beskreaun yn dizze paragraaf.
2.1.1 Basismodules foar mienskiplike IoT-apparaten
Software- en hardwareûntwikkeling fan IoT-apparaten omfetsje de folgjende basismodules: Gegevenssammeling
As de ûnderste laach fan 'e IoT-arsjitektuer ferbine de IoT-apparaten fan' e perception & control laach sensoren en apparaten fia har chips en perifeare apparaten om gegevenssammeling en operaasjekontrôle te berikken.
9
Akkountbining en inisjele konfiguraasje Foar de measte IoT-apparaten wurde accountbining en inisjele konfiguraasje foltôge yn ien operasjoneel proses, bygelyksample, ferbinen apparaten mei brûkers troch it ynstellen fan Wi-Fi netwurk.
Ynteraksje mei IoT-wolkplatfoarms Om IoT-apparaten te kontrolearjen en te kontrolearjen, is it ek nedich om se te ferbinen mei IoT-wolkplatfoarms, om kommando's te jaan en status te rapportearjen troch ynteraksje tusken elkoar.
Apparaatkontrôle As ferbûn mei IoT-wolkplatfoarms, kinne apparaten kommunisearje mei de wolk en wurde registrearre, bûn of kontroleare. Brûkers kinne produktstatus opfreegje en oare operaasjes útfiere op 'e smartphone-app fia IoT-wolkplatfoarms as lokale kommunikaasjeprotokollen.
Firmware-upgrade IoT-apparaten kinne ek firmware-upgrade berikke op basis fan 'e behoeften fan fabrikanten. Troch it ûntfangen fan kommando's stjoerd troch de wolk, sil firmware-upgrade en ferzjebehear realisearre wurde. Mei dizze firmware-upgrade-funksje kinne jo de funksjes fan IoT-apparaten kontinu ferbetterje, defekten reparearje en brûkersûnderfining ferbetterje.
2.1.2 Basismodules fan kliïntapplikaasjes
Klantapplikaasjes (bygelyks smartphone-apps) omfetsje benammen de folgjende basismodules:
Accountsysteem en autorisaasje It stipet account- en apparaatautorisaasje.
Apparaatkontrôle Smartphone-apps binne normaal foarsjoen fan kontrolearjende funksjes. Brûkers kinne maklik ferbine mei IoT-apparaten, en se altyd en oeral beheare fia smartphone-apps. Yn in tûk hûs yn 'e echte wrâld wurde apparaten meast kontrolearre troch smartphone-apps, wat net allinich yntelligint behear fan apparaten mooglik makket, mar ek de kosten fan mankrêft besparret. Dêrom is apparaatkontrôle in must foar kliïntapplikaasjes, lykas apparaatfunksje-attribútkontrôle, sênekontrôle, skema, ôfstânkontrôle, apparaatferbining, ensfh. Smart home brûkers kinne ek sênes oanpasse neffens persoanlike behoeften, kontrolearjen fan ferljochting, húshâldlike apparaten, yngong , ensfh., Om it thúslibben nofliker en handiger te meitsjen. Se kinne tiid foar airconditioning, op ôfstân útsette, it ljocht yn 'e gong automatysk ynstelle as de doar ûntskoattele is, of oerskeakelje nei de "teater" modus mei ien inkele knop.
Notifikaasje Client-applikaasjes aktualisearje real-time status fan IoT-apparaten, en stjoere warskôgings as apparaten abnormaal wurde.
10 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Klantenservice nei ferkeap Smartphone-apps kinne tsjinsten nei ferkeap leverje foar produkten, om problemen op te lossen yn ferbân mei flaters fan IoT-apparaten en technyske operaasjes op 'e tiid.
Featured funksjes Om te foldwaan oan de behoeften fan ferskate brûkers, kinne oare funksjes tafoege wurde, lykas Shake, NFC, GPS, ensfh. GPS kin helpe by it ynstellen fan de krektens fan sêne operaasjes neffens lokaasje en ôfstân, wylst de Shake funksje kinne brûkers ynstelle de opdrachten dy't moatte wurde útfierd foar spesifyk apparaat of sêne troch te skodzjen.
2.1.3 Yntroduksje ta Common IoT Cloud Platforms
IoT-wolkplatfoarm is in alles-yn-ien platfoarm dat funksjes yntegreart lykas apparaatbehear, kommunikaasje foar gegevensfeiligens en notifikaasjebehear. Neffens har doelgroep en tagonklikens kinne IoT-wolkplatfoarms ferdield wurde yn iepenbiere IoT-wolkplatfoarms (hjirnei oantsjutten as "iepenbiere wolk") en privee IoT-wolkplatfoarms (hjirnei oantsjutten as "privee wolk").
Iepenbiere wolk jout gewoanlik dielde IoT-wolkplatfoarms oan foar bedriuwen as partikulieren, eksploitearre en ûnderhâlden troch platfoarmproviders, en dield fia it ynternet. It kin fergees of goedkeap wêze, en leveret tsjinsten yn it heule iepen iepenbiere netwurk, lykas Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, ensfh. streamôfwerts ein brûkers om in nije weardeketen en ekosysteem te meitsjen.
Privee wolk is allinich boud foar bedriuwsgebrûk, en garandearret dus de bêste kontrôle oer gegevens, feiligens en tsjinstkwaliteit. De tsjinsten en ynfrastruktuer dêrfan wurde apart ûnderhâlden troch bedriuwen, en de stypjende hardware en software binne ek wijd oan spesifike brûkers. Bedriuwen kinne wolktsjinsten oanpasse om te foldwaan oan 'e behoeften fan har bedriuw. Op it stuit hawwe guon smart home-fabrikanten al privee IoT-wolkplatfoarms krigen en ûntwikkele smart home-applikaasjes basearre op har.
Iepenbiere wolk en privee wolk hawwe har eigen foardieltages, dat sil wurde útlein letter.
Om kommunikaasjeferbining te berikken, is it needsaaklik om op syn minst ynbêde ûntwikkeling oan 'e apparaatkant te foltôgjen, tegearre mei saaklike servers, IoT-wolkplatfoarms en smartphone-apps. Tsjin sa'n enoarm projekt, biedt iepenbiere wolk normaal softwareûntwikkelingskits foar app-side- en smartphone-apps om it proses te fersnellen. Sawol publike as partikuliere wolk leverje tsjinsten ynklusyf apparaat tagong, apparaatbehear, apparaatskaad, en operaasje en ûnderhâld.
Apparaat tagong IoT-wolkplatfoarms moatte net allinich ynterfaces leverje foar tagong ta apparaat mei protokollen
Haadstik 2. Ynlieding en praktyk fan IoT-projekten 11
lykas MQTT, CoAP, HTTPS, en WebSocket, mar ek de funksje fan apparaatfeiligensferifikaasje om smeid en yllegale apparaten te blokkearjen, effektyf it risiko fan kompromittearjen te ferminderjen. Sokke autentikaasje stipet normaal ferskate meganismen, dus as apparaten massaprodusearre wurde, is it nedich om it apparaatsertifikaat foarôf te tawizen neffens it selekteare autentikaasjemeganisme en it yn 'e apparaten te ferbaarnen.
Apparaatbehear De apparaatbehearfunksje levere troch IoT-wolkplatfoarms kin fabrikanten net allinich helpe om de aktivearringstatus en online status fan har apparaten yn realtime te kontrolearjen, mar kinne ek opsjes tastean lykas tafoegjen / fuortsmite fan apparaten, opheljen, tafoegjen / wiskjen fan groepen, firmware-upgrade , en ferzje behear.
Apparaatskaad IoT-wolkplatfoarms kinne in oanhâldende firtuele ferzje (apparaatskaad) meitsje foar elk apparaat, en de status fan it apparaatskaad kin wurde syngronisearre en krigen troch smartphone-app of oare apparaten fia ynternettransmissionprotokollen. Device shadow bewarret de lêste rapportearre status en ferwachte status fan elk apparaat, en sels as it apparaat offline is, kin it de status noch krije troch API's te skiljen. Device shadow leveret altyd-op API's, wat it makliker makket om smartphone-apps te bouwen dy't ynteraksje mei apparaten.
Operaasje en ûnderhâld De O&M-funksje omfettet trije aspekten: · Demonstrearje fan statistyske ynformaasje oer IoT-apparaten en notifikaasjes. · Logbehear lit it opheljen fan ynformaasje oer apparaatgedrach, berjochtstream omheech / omleech, en berjochtynhâld. · Debuggen fan apparaat stipet opdrachtferliening, konfiguraasjefernijing en kontrolearjen fan de ynteraksje tusken IoT-wolkplatfoarms en apparaatberjochten.
2.2 Praktyk: Smart Light Project
Nei de teoretyske ynlieding yn elk haadstik sille jo in praktykseksje fine yn ferbân mei it Smart Light-projekt om jo te helpen praktyske ûnderfining te krijen. It projekt is basearre op Espressif's ESP32-C3-chip en ESP RainMaker IoT Cloud Platform, en beslacht draadloze module-hardware yn tûk ljochtprodukten, ynbêde software foar tûke apparaten basearre op ESP32C3, smartphone-apps, en ESP RainMaker-ynteraksje.
Boarnekoade Foar better learen en ûntwikkeljen fan ûnderfining is it projekt yn dit boek iepenboarne. Jo kinne de boarnekoade downloade fan ús GitHub-repository op https://github. com/espressif/book-esp32c3-iot-projects.
12 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
2.2.1 Projekt Struktuer
It Smart Light-projekt bestiet út trije dielen: i. Smart ljochtapparaten basearre op ESP32-C3, ferantwurdlik foar ynteraksje mei IoT-wolkplatfoarms, en kontrolearjen fan de skeakel, helderheid en kleurtemperatuer fan 'e LED lamp kralen. ii. Smartphone-apps (ynklusyf tablet-apps dy't rinne op Android en iOS), ferantwurdlik foar netwurkkonfiguraasje fan tûk ljochtprodukten, lykas ek freegjen en kontrolearjen fan har status.
iii. In IoT-wolkplatfoarm basearre op ESP RainMaker. Foar ferienfâldiging beskôgje wy it IoT-wolkplatfoarm en de saaklike tsjinner as gehiel yn dit boek. Details oer ESP RainMaker sille wurde levere yn haadstik 3.
De korrespondinsje tusken de Smart Light-projektstruktuer en de arsjitektuer fan IoT wurdt werjûn yn figuer 2.1.
figuer 2.1. Struktuer fan smart ljocht projekt
2.2.2 Projekt Funksjes
Ferdield neffens de struktuer, funksjes fan elk diel binne as folget. Smart ljocht apparaten
· Netwurkkonfiguraasje en ferbining. · LED PWM-kontrôle, lykas switch, helderheid, kleurtemperatuer, ensfh. · Automatisearring of sênekontrôle, bgl. tiidskeakel. · Fersifering en feilige boot fan de Flash. · Firmware-upgrade en ferzjebehear.
Haadstik 2. Ynlieding en praktyk fan IoT-projekten 13
Smartphone apps · Netwurk konfiguraasje en apparaat bining. · Smart ljocht produkt kontrôle, lykas switch, helderheid, kleur temperatuer, ensfh · Automatisearring of sêne ynstellings, bygelyks, tiid switch. · Lokale / remote control. · Brûkersregistraasje, oanmelde, ensfh.
ESP RainMaker IoT-wolkplatfoarm · IoT-apparaat tagong ynskeakelje. · Foarsjen fan apparaat operaasje API's tagonklik foar smartphone apps. · Firmware-upgrade en ferzjebehear.
2.2.3 Hardware Tarieding
As jo ynteressearre binne om it projekt yn 'e praktyk te bringen, sille jo ek de folgjende hardware nedich hawwe: tûke ljochten, smartphones, Wi-Fi-routers, en in kompjûter dy't foldocht oan de ynstallaasjeeasken fan 'e ûntwikkelingsomjouwing. Smart ljochten
Slimme ljochten binne in nij soarte fan bollen, waans foarm is itselde as de algemiene gloeilampe. In tûk ljocht is gearstald út capacitor step-down regulearre macht oanbod, draadloze module (mei ynboude ESP32-C3), LED controller en RGB LED matrix. Wannear't ferbûn oan macht, de 15 V DC voltage útfier nei capacitor step-down, diode rectification, en regeljouwing jout enerzjy oan de LED controller en LED matrix. De LED-controller kin automatysk hege en lege nivo's yn bepaalde yntervallen stjoere, de RGB LED-matrix wikselje tusken sluten (ljochten oan) en iepen (ljochten út), sadat it cyaan, giel, grien, pears, blau, read, en Wyt ljocht. De draadloze module is ferantwurdlik foar it ferbinen mei de Wi-Fi-router, it ûntfangen en rapportearjen fan de status fan tûke ljochten, en it ferstjoeren fan kommando's om de LED te kontrolearjen.
figuer 2.2. In simulearre smart ljocht
Yn de iere ûntwikkeling stage, jo kinne in tûk ljocht simulearje mei it ESP32-C3DevKitM-1 board ferbûn mei RGB LED lamp kralen (sjoch figuer 2.2). Mar jo moatte
14 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Tink derom dat dit net de ienige manier is om in tûk ljocht te sammeljen. It hardware-ûntwerp fan it projekt yn dit boek befettet allinich in draadloze module (mei ynboude ESP32-C3), mar net in folslein smart ljocht hardware-ûntwerp. Derneist produseart Espressif ek in ESP32-C3-basearre audioûntwikkelingsboerd ESP32C3-Lyra foar it kontrolearjen fan ljochten mei audio. It bestjoer hat ynterfaces foar mikrofoans en sprekkers en kin LED-strips kontrolearje. It kin brûkt wurde foar it ûntwikkeljen fan ultra-leech-kosten, hege prestaasjes audio-omroppen en ritme ljochtstrips. Ofbylding 2.3 toant in ESP32-C3Lyra-boerd keppele mei in strip fan 40 LED-ljochten.
figuer 2.3. ESP32-C3-Lyra keppele mei in strip fan 40 LED-ljochten
Snoadfoans (Android/iOS) It Smart Light-projekt omfettet de ûntwikkeling fan in smartphone-app foar it ynstellen en kontrolearjen fan smart light-produkten.
Wi-Fi-routers Wi-Fi-routers konvertearje bedrade netwurksinjalen en mobyl netwurksinjalen yn draadloze netwurksinjalen, foar kompjûters, smartphones, tablets en oare draadloze apparaten om te ferbinen mei it netwurk. Bygelyksample, breedbân yn 'e hûs moat allinnich wurde ferbûn oan in Wi-Fi router te berikken triedleas netwurk fan Wi-Fi apparaten. De mainstream protokol standert stipe troch Wi-Fi routers is IEEE 802.11n, mei in gemiddelde TxRate fan 300 Mbps, of 600 Mbps op maksimum. Se binne efterút kompatibel mei IEEE 802.11b en IEEE 802.11g. De ESP32-C3-chip fan Espressif stipet IEEE 802.11b/g/n, sadat jo in single-band (2.4 GHz) of dual-band (2.4 GHz en 5 GHz) Wi-Fi-router kinne kieze.
In kompjûter (Linux/macOS/Windows) Untwikkelingsomjouwing wurdt yntrodusearre yn haadstik 4. Haadstik 2. Ynlieding en praktyk fan IoT-projekten 15
2.2.4 Untwikkelingsproses
figuer 2.4. Stappen foar it ûntwikkeljen fan it Smart Light-projekt
Hardware-ûntwerp Hardware-ûntwerp fan IoT-apparaten is essensjeel foar in IoT-projekt. In komplete smart ljocht projekt is bedoeld om produsearje alamp wurkje ûnder netspanning. Ferskillende fabrikanten produsearje lamps fan ferskillende stilen en bestjoerder typen, mar harren Wireless modules binne meastal fan deselde funksje. Om it ûntwikkelingsproses fan it Smart Ligh-projekt te ferienfâldigjen, behannelt dit boek allinich it hardware-ûntwerp en softwareûntwikkeling fan draadloze modules.
IoT-wolkplatfoarmkonfiguraasje Om IoT-wolkplatfoarms te brûken, moatte jo projekten op 'e efterkant konfigurearje, lykas produkten oanmeitsje, apparaten oanmeitsje, apparaateigenskippen ynstelle, ensfh.
Ynbêde softwareûntwikkeling foar IoT-apparaten Implementearje ferwachte funksjes mei ESP-IDF, Espressif's apparaat-side SDK, ynklusyf ferbining mei IoT-wolkplatfoarms, ûntwikkeljen fan LED-bestjoerders, en it opwurdearjen fan firmware.
Untwikkeling fan smartphone-apps Untwikkelje smartphone-apps foar Android- en iOS-systemen om brûkersregistraasje en oanmelding, apparaatkontrôle en oare funksjes te realisearjen.
IoT-apparaatoptimalisaasje Sadree't de basisûntwikkeling fan IoT-apparaatfunksjes foltôge is, kinne jo wikselje nei optimalisaasjetaken, lykas machtoptimalisaasje.
Testen foar massaproduksje Utfiere massaproduksjetests neffens relatearre noarmen, lykas apparatuerfunksjetest, ferâlderingstest, RF-test, ensfh.
Nettsjinsteande de hjirboppe neamde stappen, is in Smart Light-projekt net needsaaklik ûnderwurpen oan sa'n proseduere, om't ferskate taken ek tagelyk kinne wurde útfierd. Bygelyksample, ynbêde software en smartphone apps kinne wurde ûntwikkele yn parallel. Guon stappen moatte miskien ek werhelle wurde, lykas IoT-apparaatoptimalisaasje en massaproduksjetesten.
16 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
2.3 Gearfetting
Yn dit haadstik hawwe wy earst útlein oer de basiskomponinten en funksjonele modules fan in IoT-projekt, en yntrodusearren de Smart Light-saak foar praktyk, ferwizend nei syn struktuer, funksjes, hardware-tarieding en ûntwikkelingsproses. Lêzers kinne konklúzjes lûke út 'e praktyk en fertrouwen wurde om IoT-projekten mei minimale flaters yn' e takomst út te fieren.
Haadstik 2. Ynlieding en praktyk fan IoT-projekten 17
18 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Haadstik 3
Ynlieding
nei
ESP
RainMaker
It Internet of Things (IoT) biedt einleaze mooglikheden om de manier wêrop minsken libje te feroarjen, dochs is de ûntwikkeling fan IoT-technyk fol útdagings. Mei iepenbiere wolken kinne terminalfabrikanten produktfunksjonaliteit ymplementearje fia de folgjende oplossingen:
Op grûn fan 'e wolkplatfoarms fan oplossingproviders Op dizze manier hoege terminalfabrikanten allinich de produkthardware te ûntwerpen, dan de hardware te ferbinen mei de wolk mei help fan levere kommunikaasjemodule, en de produktfunksjes konfigurearje neffens de rjochtlinen. Dit is in effisjinte oanpak, om't it de needsaak foar ûntwikkeling en operaasjes en ûnderhâld (O&M) op serverside en applikaasjeside elimineert. It stelt terminalfabrikanten yn steat om te fokusjen op hardware-ûntwerp sûnder wolkymplemintaasje te beskôgjen. Sokke oplossingen (bygelyks apparaatfirmware en App) binne lykwols oer it generaal gjin iepen boarne, sadat de produktfunksjes wurde beheind troch it wolkplatfoarm fan 'e provider dat net kin wurde oanpast. Underwilens hearre de brûkers- en apparaatgegevens ek ta it wolkplatfoarm.
Op grûn fan wolkprodukten. Bygelyksample, om te ferbinen mei Amazon Web Tsjinsten (AWS), terminalfabrikanten moatte AWS-produkten brûke lykas Amazon API Gateway, AWS IoT Core, en AWS Lambda om apparaattagong, ôfstânkontrôle, gegevensopslach, brûkersbehear en oare basisfunksjes yn te skeakeljen. It freget net allinich terminalfabrikanten om wolkprodukten fleksibel te brûken en te konfigurearjen mei djip begryp en rike ûnderfining, mar fereasket dat se ek de bou- en ûnderhâldskosten beskôgje foar earste en letter s.tages Dit soarget foar grutte útdagings foar de enerzjy en middels fan it bedriuw.
Yn ferliking mei iepenbiere wolken wurde privee wolken normaal boud foar spesifike projekten en produkten. Private wolkûntwikkelders krije it heechste nivo fan frijheid yn protokolûntwerp en ymplemintaasje fan saaklike logika. Terminalfabrikanten kinne produkten en ûntwerpskema's meitsje nei wille, en brûkersgegevens maklik yntegrearje en machtigje. Kombinearje de hege feiligens, skalberens en betrouberens fan iepenbiere wolk mei de advantages fan privee wolk, Espressif lansearre ESP
19
RainMaker, in djip yntegreare privee wolk-oplossing basearre op Amazon-wolk. Brûkers kinne ESP RainMaker ynsette en privee wolk bouwe gewoan mei in AWS-akkount.
3.1 Wat is ESP RainMaker?
ESP RainMaker is in folslein AIoT-platfoarm boud mei meardere folwoeksen AWS-produkten. It leveret ferskate tsjinsten dy't nedich binne foar massaproduksje, lykas tagong ta apparaatwolken, apparaatupgrade, backendbehear, oanmelding fan tredden, stimyntegraasje, en brûkersbehear. Troch it Serverless Application Repository (SAR) te brûken, levere troch AWS, kinne terminalfabrikanten ESP RainMaker fluch ynsette op har AWS-akkounts, dat is tiid-effisjint en maklik te betsjinjen. Beheard en ûnderhâlden troch Espressif, de SAR brûkt troch ESP RainMaker helpt ûntwikkelders om wolkûnderhâldskosten te ferminderjen en de ûntwikkeling fan AIoT-produkten te fersnellen, sadat se feilige, stabile en oanpasbere AIoT-oplossingen bouwe. Ofbylding 3.1 lit de arsjitektuer fan ESP RainMaker sjen.
figuer 3.1. Arsjitektuer fan ESP RainMaker
De ESP RainMaker iepenbiere server fan Espressif is fergees foar alle ESP-entûsjasters, makkers en oplieders foar evaluaasje fan oplossingen. Untwikkelders kinne oanmelde mei Apple-, Google- of GitHub-akkounts, en fluch har eigen IoT-applikaasjeprototypes bouwe. De iepenbiere tsjinner yntegreart Alexa en Google Home, en leveret stimbeheartsjinsten, dy't wurde stipe troch Alexa Skill en Google Actions. Syn semantyske erkenningsfunksje wurdt ek oandreaun troch tredden. RainMaker IoT-apparaten reagearje allinich op spesifike aksjes. Kontrolearje asjebleaft de platfoarms fan tredden foar in útputtende list mei stipe stimkommando's. Derneist biedt Espressif in iepenbiere RainMaker-app foar brûkers om de produkten fia smartphones te kontrolearjen. 20 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
3.2 De ymplemintaasje fan ESP RainMaker
Lykas werjûn yn figuer 3.2, bestiet ESP RainMaker út fjouwer dielen: · Claiming Service, wêrtroch RainMaker apparaten dynamysk krije sertifikaten. · RainMaker Cloud (ek wol wol-backend neamd), leveret tsjinsten lykas berjochtfiltering, brûkersbehear, gegevensopslach en yntegraasjes fan tredden. · RainMaker Agent, wêrtroch RainMaker-apparaten kinne ferbine mei RainMaker Cloud. · RainMaker Client (RainMaker App of CLI-skripts), foar foarsjenning, oanmeitsjen fan brûkers, apparaatferiening en kontrôle, ensfh.
figuer 3.2. Struktuer fan ESP RainMaker
ESP RainMaker leveret in folsleine set ark foar produktûntwikkeling en massaproduksje, ynklusyf: RainMaker SDK
RainMaker SDK is basearre op ESP-IDF en leveret de boarnekoade fan 'e agent-side-agint en relatearre C API's foar firmware-ûntwikkeling. Untwikkelders hoege allinich de applikaasjelogika te skriuwen en de rest oerlitte oan it RainMaker-ramt. Foar mear ynformaasje oer C API's, besykje asjebleaft https://bookc3.espressif.com/rm/c-api-reference. RainMaker App De iepenbiere ferzje fan RainMaker App lit ûntwikkelders apparaatfoarsjenning foltôgje, en de status fan apparaten kontrolearje en opfreegje (bgl. smart lighting produkten). It is beskikber yn sawol iOS as Android app winkels. Foar mear details, ferwize nei Haadstik 10. REST APIs REST APIs helpe brûkers har eigen applikaasjes te bouwen lykas de RainMaker App. Foar mear ynformaasje kinne jo besykje https://swaggerapis.rainmaker.espressif.com/.
Haadstik 3. Yntroduksje ta ESP RainMaker 21
Python API's In Python-basearre CLI, dy't komt mei de RainMaker SDK, wurdt levere om alle funksjes te ymplementearjen dy't lykje op smartphone-funksjes. Foar mear ynformaasje oer Python API's, besykje asjebleaft https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, mei heger nivo fan tagong, wurdt levere foar ESP RainMaker privee ynset om apparaatsertifikaten yn bulk te generearjen.
3.2.1 Claiming Service
Alle kommunikaasje tusken RainMaker apparaten en de wolk backend wurdt útfierd fia MQTT + TLS. Yn 'e kontekst fan ESP RainMaker is "Claiming" it proses wêryn apparaten sertifikaten krije fan 'e Claiming Service om te ferbinen mei it wolkebackend. Tink derom dat Claiming Service allinich fan tapassing is foar de iepenbiere RainMaker-tsjinst, wylst foar privee ynset de apparaatsertifikaten yn bulk moatte wurde generearre fia Admin CLI. ESP RainMaker stipet trije soarten Claiming Service: Self Claiming
It apparaat sels hellet de sertifikaten op fia in geheime kaai foarprogrammearre yn eFuse nei it ferbinen mei it ynternet. Host Driven Claiming De sertifikaten wurde krigen fan de ûntwikkelingshost mei it RainMaker-akkount. Assisted Claiming De sertifikaten wurde krigen fia smartphone-applikaasjes by it leverjen.
3.2.2 RainMaker Agent
figuer 3.3. Struktuer fan RainMaker SDK De primêre funksje fan 'e RainMaker Agent is om ferbining te leverjen en de applikaasjelaach te helpen om uplink / downlink wolkgegevens te ferwurkjen. It is boud troch de RainMaker SDK 22 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
en ûntwikkele basearre op it bewiisde ESP-IDF-ramt, mei ESP-IDF-komponinten lykas RTOS, NVS en MQTT. Ofbylding 3.3 toant de struktuer fan 'e RainMaker SDK.
De RainMaker SDK omfettet twa wichtige funksjes.
Ferbining
ik. Gearwurking mei Claiming Service om apparaatsertifikaten te krijen.
ii. Ferbine mei de wolk backend mei help fan de feilige MQTT protokol te foarsjen remote ferbining en útfiere remote control, berjocht rapportaazje, brûkers behear, apparaat behear, ensfh It brûkt de MQTT komponint yn ESP-IDF standert en jout in abstraksje laach te ynterface mei oare protokol stacks.
iii. It leverjen fan wifi-foarsjenningskomponint foar Wi-Fi-ferbining en foarsjenning, benammen https ota-komponint foar OTA-upgrades, en benammen lokale ctrl-komponint foar ûntdekking en ferbining fan lokale apparaten. Al dizze doelen kinne wurde berikt troch ienfâldige konfiguraasje.
Data ferwurking
ik. It opslaan fan de apparaatsertifikaten útjûn troch Claiming Service en de gegevens dy't nedich binne by it útfieren fan RainMaker, standert mei help fan de ynterface levere troch de nvs flash-komponint, en it leverjen fan API's foar ûntwikkelders foar direkt gebrûk.
ii. It brûken fan it werombelmeganisme om uplink / downlink wolkgegevens te ferwurkjen en de gegevens automatysk te ûntsluten nei de applikaasjelaach foar maklike ferwurking troch ûntwikkelders. Bygelyksample, de RainMaker SDK leveret rike ynterfaces foar it fêststellen fan TSL (Thing Specification Language) gegevens, dy't nedich binne om TSL-modellen te definiearjen om IoT-apparaten te beskriuwen en funksjes te ymplementearjen lykas timing, countdown en stimkontrôle. Foar basis ynteraktive funksjes lykas timing, biedt RainMaker SDK in ûntwikkelfrije oplossing dy't gewoan ynskeakele kin as it nedich is. Dan sil de RainMaker Agent de gegevens direkt ferwurkje, it stjoere nei de wolk fia it assosjearre MQTT-ûnderwerp, en de gegevensferoarings yn 'e wolkebackend weromfiere fia callback-meganisme.
3.2.3 Cloud Backend
De wolk backend is boud op AWS Serverless Computing en berikt fia AWS Cognito (identiteitsbehearsysteem), Amazon API Gateway, AWS Lambda (serverless computing tsjinst), Amazon DynamoDB (NoSQL database), AWS IoT Core (IoT tagong kearn dy't MQTT tagong jout en regelfiltering), Amazon Simple Email Service (SES ienfâldige posttsjinst), Amazon CloudFront (netwurk foar snelle levering), Amazon Simple Queue Service (SQS-berjochtenwachtrige), en Amazon S3 (emmer opslachtsjinst). It is rjochte op it optimalisearjen fan skaalberens en feiligens. Mei ESP RainMaker kinne ûntwikkelders apparaten beheare sûnder koade yn 'e wolk te skriuwen. Berjochten rapporteare troch apparaten wurde transparant oerstjoerd nei
Haadstik 3. Yntroduksje ta ESP RainMaker 23
applikaasje kliïnten of oare tsjinsten fan tredden. Tabel 3.1 toant de AWS-wolkprodukten en -funksjes brûkt yn 'e wolkebackend, mei mear produkten en funksjes ûnder ûntwikkeling.
Tabel 3.1. AWS-wolkprodukten en -funksjes brûkt troch de wolk-backend
AWS Cloud Produkt brûkt troch RainMaker
Funksje
AWS Cognito
Behear fan brûkersbewizen en stypjen fan oanmeldingen fan tredden
AWS Lambda
It ymplementearjen fan de kearnbedriuwlogika fan 'e wolkebackend
Amazon Timestream It opslaan fan tiidrige gegevens
Amazon DynamoDB It bewarjen fan priveegegevens fan klanten
AWS IoT Core
Stypje MQTT-kommunikaasje
Amazon SES
It leverjen fan tsjinsten foar ferstjoeren fan e-post
Amazon CloudFront It fersnellen fan it behear fan backend website tagong
Amazon SQS
Berjochten trochstjoere fan AWS IoT Core
3.2.4 RainMaker Client
RainMaker-kliïnten, lykas App en CLI, kommunisearje mei de wolk-backend fia REST API's. Detaillearre ynformaasje en ynstruksjes oer REST API's kinne fûn wurde yn 'e Swagger-dokumintaasje levere troch Espressif. RainMaker's mobile applikaasje-client is beskikber foar sawol iOS- as Android-systemen. It lit apparaat foarsjenning, kontrôle en dielen mooglik meitsje, lykas it meitsjen en ynskeakeljen fan countdowntaken en ferbine mei platfoarms fan tredden. It kin UI en ikoanen automatysk laden neffens de konfiguraasje rapporteare troch de apparaten en it apparaat TSL folslein werjaan.
Bygelyksample, as in tûk ljocht is boud op de RainMaker SDK-foarsjoen eksamples, it ikoan en UI fan 'e bulb ljocht wurde automatysk laden as de foarsjenning is foltôge. Brûkers kinne de kleur en helderheid fan it ljocht feroarje fia de ynterface en kontrôle fan tredden berikke troch Alexa Smart Home Skill of Google Smart Home Actions te keppeljen oan har ESP RainMaker-akkounts. Ofbylding 3.4 toant it ikoan en UI examples fan it gloeilampe respektivelik op Alexa, Google Home, en ESP RainMaker App.
24 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
(a) Bvample - Alexa
(b) bglample - Google Thús
(c) Bvample – ESP RainMaker
Figuer 3.4. Examples fan ikoan en UI fan it gloeilampe ljocht op Alexa, Google Home, en ESP RainMaker App
3.3 Oefenjen: kaaipunten foar ûntwikkeljen mei ESP RainMaker
Sadree't de apparaat stjoerprogramma laach is foltôge, ûntwikkelders meie begjinne te meitsjen TSL modellen en ferwurkje downlink gegevens mei help fan de APIs levere troch RainMaker SDK, en ynskeakelje de ESP RainMaker basis tsjinsten basearre op de produkt definysje en easken.
Haadstik 3. Yntroduksje ta ESP RainMaker 25
Seksje 9.4 fan dit boek sil de ymplemintaasje fan it LED smart ljocht yn RainMaker útlizze. Tidens debuggen kinne ûntwikkelders de CLI-ark brûke yn 'e RainMaker SDK om te kommunisearjen mei it tûke ljocht (of REST API's fan Swagger neame).
Haadstik 10 sil it gebrûk fan REST API's útwurkje by it ûntwikkeljen fan smartphone-applikaasjes. De OTA-upgrades fan LED-tûke ljochten wurde behannele yn haadstik 11. As ûntwikkelders de ESP Insights-monitoring op ôfstân ynskeakele hawwe, sil de ESP RainMaker-bestjoeringsbackend de ESP Insights-gegevens werjaan. Details sille wurde presintearre yn haadstik 15.
ESP RainMaker stipet partikuliere ynset, dy't op de folgjende manieren ferskilt fan 'e iepenbiere RainMaker-tsjinner:
Claiming Service Om sertifikaten te generearjen yn partikuliere ynset, is it ferplichte om de RainMaker Admin CLI te brûken ynstee fan Claiming. Mei iepenbiere server moatte ûntwikkelders adminrjochten krije om firmware-upgrade út te fieren, mar it is net winsklik yn kommersjele ynset. Dêrom kinne gjin aparte autentikaasjetsjinsten levere wurde foar selsclaiming, noch adminrjochten foar host-oandreaune of assistearre claiming.
Tillefoanapplikaasjes Yn partikuliere ynset moatte applikaasjes apart konfigureare en kompilearre wurde om te soargjen dat de akkountsystemen net ynteroperabel binne.
Oanmeldings fan tredden en stimyntegraasje Untwikkelders moatte apart konfigurearje fia Google en Apple Developer-akkounts om oanmeldingen fan tredden yn te skeakeljen, lykas de Alexa Skill en Google Voice Assistant-yntegraasje.
TIPS Foar details oer wolk-ynset, besykje asjebleaft https://customer.rainmaker.espressif. com. Wat firmware oanbelanget, fereasket migraasje fan publike server nei partikuliere server allinich it ferfangen fan apparaatsertifikaten, wat migraasje-effisjinsje sterk ferbetteret en de kosten fan migraasje en sekundêre debuggen ferminderet.
3.4 Funksjes fan ESP RainMaker
ESP RainMaker-funksjes binne benammen rjochte op trije aspekten - brûkersbehear, ein brûkers, en admins. Alle funksjes wurde stipe yn sawol iepenbiere as partikuliere servers, útsein as oars oanjûn.
3.4.1 Brûkersbehear
De funksjes foar brûkersbehear kinne ein brûkers registrearje, oanmelde, wachtwurden feroarje, wachtwurden ophelje, ensfh.
26 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Registrearje en oanmelde.
OPMERKING Oanmelde mei Google/Amazon dielt it e-postadres fan de brûker mei RainMaker. Oanmelde mei Apple dielt in dummy-adres dat Apple spesifyk foar de RainMaker-tsjinst tawiist foar de brûker. In RainMaker-akkount sil automatysk oanmakke wurde foar brûkers dy't har foar it earst oanmelde mei in Google-, Apple- of Amazon-akkount.
Wachtwurd feroarje Jildich allinich foar e-post-id / telefoannûmer basearre logins. Alle oare aktive sesjes sille wurde útlogd neidat wachtwurd is feroare. Neffens AWS Cognito-gedrach kinne de ôfmelde sesjes oant 1 oere aktyf bliuwe.
Wachtwurd ophelje Allinnich jildich foar e-post-id / telefoannûmer basearre logins.
3.4.2 Einbrûkersfunksjes
Funksjes iepen foar ein brûkers omfetsje lokale en ôfstânkontrôle en tafersjoch, skema, apparaatgroepearring, dielen fan apparaten, push-notifikaasjes en yntegraasjes fan tredden.
Remote control en monitoring · Query konfiguraasje, parameter wearden, en ferbining status foar ien of alle apparaten. · Stel parameters yn foar ien of meardere apparaten.
Lokale kontrôle en tafersjoch Mobile telefoan en it apparaat moatte wurde ferbûn mei itselde netwurk foar lokale kontrôle.
Planning · Brûkers ynstelle bepaalde aksjes foarôf op in spesifike tiid. · Gjin ynternetferbining nedich foar it apparaat by it útfieren fan it skema. · Ien kear of werhelje (troch dagen op te jaan) foar ien of meardere apparaten.
Apparaatgroepearring Unterstützt abstrakte groepearring op meardere nivo's Groepmetadata kinne brûkt wurde om in Home Room-struktuer te meitsjen.
Haadstik 3. Yntroduksje ta ESP RainMaker 27
Diele fan apparaat Ien of mear apparaten kinne dield wurde mei ien of mear brûkers.
Push-notifikaasjes Einbrûkers sille push-notifikaasjes krije foar eveneminten lykas · Nij(e) apparaat(en) tafoege/ferwidere · Apparaat ferbûn mei wolk · Apparaat loskeppele fan wolk · Oanfragen foar dielen fan apparaat makke/akseptearre/ôfwiisd · Alarmberjochten rapporteare troch apparaten
Yntegraasjes fan tredden Alexa en Google Voice Assistant wurde stipe om RainMaker-apparaten te kontrolearjen, ynklusyf ljochten, skeakels, sockets, fans en temperatuersensors.
3.4.3 Admin Features
Adminfunksjes kinne behearders apparaatregistraasje, apparaatgroepearring, en OTA-upgrades ymplementearje, en nei view statistiken en ESP Insights gegevens.
Apparaatregistraasje Generearje apparaatsertifikaten en registrearje mei Admin CLI (allinich privee tsjinner).
Apparaatgroepering Meitsje abstrakte of strukturearre groepen basearre op apparaatynformaasje (allinich privee tsjinner).
Over-the-Air (OTA) upgrades Upload firmware basearre op ferzje en model, nei ien of mear apparaten as in groep Monitor, annulearje, of argyf OTA-banen.
View statistyk Viewstatistyk omfetsje: · Apparaatregistraasjes (sertifikaten registrearre troch de admin) · Apparaataktivaasjes (apparaat foar it earst ferbûn) · Brûkersakkounts · Brûker-apparaatferiening
View ESP Insights gegevens ViewESP Insights-gegevens omfetsje: · Flaters, warskôgings en oanpaste logs · Crashrapporten en analyse · Rebootredenen · Metriken lykas ûnthâldgebrûk, RSSI, ensfh. · Oanpaste metriken en fariabelen
28 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
3.5 Gearfetting
Yn dit haadstik hawwe wy wat wichtige ferskillen yntrodusearre tusken de iepenbiere RainMaker-ynset en de partikuliere ynset. De privee ESP RainMaker-oplossing lansearre troch Espressif is heul betrouber en útwreidber. Alle chips fan 'e ESP32-searje binne ferbûn en oanpast oan AWS, wat de kosten sterk ferminderet. Untwikkelders kinne rjochtsje op prototypeferifikaasje sûnder hoege te learen oer AWS-wolkprodukten. Wy hawwe ek de ymplemintaasje en funksjes fan ESP RainMaker útlein, en guon wichtige punten foar ûntwikkeling mei it platfoarm.
Scan om ESP RainMaker foar Android te downloaden Scan om ESP RainMaker foar iOS te downloaden
Haadstik 3. Yntroduksje ta ESP RainMaker 29
30 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Haadstik Opsetten 4 Untwikkeling Miljeu
Dit haadstik rjochtet him op ESP-IDF, it offisjele softwareûntwikkelingskader foar ESP32-C3. Wy sille útlizze hoe't jo de omjouwing ynstelle op ferskate bestjoeringssystemen, en de projektstruktuer en it bouwensysteem fan ESP-IDF yntrodusearje, lykas it gebrûk fan relatearre ûntwikkelingsark. Dan sille wy it kompilearjen en rinnende proses fan in eks presintearjeample projekt, wylst it oanbieden fan in detaillearre útlis fan de útfier log by eltse stage.
4.1 ESP-IDF oerview
ESP-IDF (Espressif IoT Development Framework) is in ien-stop IoT-ûntwikkelingskader fersoarge troch Espressif Technology. It brûkt C/C++ as de haadûntwikkelingstaal en stipet cross-kompilaasje ûnder mainstream bestjoeringssystemen lykas Linux, Mac en Windows. De eksample programma's opnommen yn dit boek wurde ûntwikkele mei ESP-IDF, dat biedt de folgjende funksjes: · SoC systeem-nivo bestjoerders. ESP-IDF omfettet bestjoerders foar ESP32, ESP32-S2, ESP32-C3,
en oare chips. Dizze sjauffeurs omfetsje perifeare lege nivo (LL) bibleteek, hardwareabstraksjelaach (HAL) bibleteek, RTOS-stipe en bestjoerdersoftware foar boppeste laach, ensfh. · Essensjele komponinten. ESP-IDF omfettet fûnemintele komponinten dy't nedich binne foar IoT-ûntwikkeling. Dit omfettet meardere netwurk protokol stacks lykas HTTP en MQTT, in macht behear ramt mei dynamyske frekwinsje modulaasje, en funksjes lykas Flash Encryption en Secure Boot, ensfh · Untwikkeling en produksje ark. ESP-IDF leveret gewoan brûkte ark foar it bouwen, flashen en debuggen tidens ûntwikkeling en massaproduksje (sjoch figuer 4.1), lykas it gebousysteem basearre op CMake, de cross-compilation tool chain basearre op GCC, en de JTAG debuggen ark basearre op OpenOCD, ensfh It is de muoite wurdich opskriuwen dat de ESP-IDF koade primêr adheres oan de de Apache 2.0 iepen boarne lisinsje. Brûkers kinne sûnder beheiningen persoanlike of kommersjele software ûntwikkelje, wylst se foldogge oan de betingsten fan 'e iepenboarne-lisinsje. Derneist wurde brûkers fergees permaninte oktroailisinsjes ferliend, sûnder de ferplichting om alle oanpassingen oan 'e boarnekoade te iepenjen.
31
figuer 4.1.
Bouwen, flitsen en debug-
ging ark foar ûntwikkeling en massa produksje
4.1.1 ESP-IDF Ferzjes
De ESP-IDF koade wurdt hosted op GitHub as in iepen-boarne projekt. Op it stuit binne d'r trije grutte ferzjes beskikber: v3, v4, en v5. Elke grutte ferzje befettet meast ferskate subversions, lykas v4.2, v4.3, ensfh. Espressif Systems soarget foar in 30-moanne-stipe foar bugfixes en befeiligingspatches foar elke frijlitten subferzje. Dêrom wurde ferzjes fan subversions ek regelmjittich frijlitten, lykas v4.3.1, v4.2.2, ensfh Tabel 4.1 toant de stipestatus fan ferskate ESP-IDF-ferzjes foar Espressif-chips, oanjout oft se yn in pre binne.view stage (stipe oanbiede foar preview ferzjes, dy't bepaalde funksjes of dokumintaasje misse kinne) of wurde offisjeel stipe.
Tabel 4.1. Stipe status fan ferskate ESP-IDF ferzjes foar Espressif chips
Series ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 stipe
v4.2 stipe stipe
v4.3 stipe stipe stipe
v4.4 stipe stipe stipe stipe stipe
preview
v5.0 stipe stipe stipe stipe stipe stipe preview
32 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
De iteraasje fan grutte ferzjes omfettet faak oanpassingen oan 'e ramtstruktuer en updates fan it kompilaasjesysteem. Bygelyksample, de grutte feroaring fan v3.* to v4.* wie de stadichoan migraasje fan de build systeem fan Make to CMake. Oan 'e oare kant omfettet iteraasje fan lytse ferzjes typysk de tafoeging fan nije funksjes as stipe foar nije chips.
It is wichtich om de relaasje tusken stabile ferzjes en GitHub-tûken te ûnderskieden en te begripen. Ferzjes bestimpele as v * .* of v * .*.* fertsjintwurdigje stabile ferzjes dy't hawwe trochjûn folsleine ynterne testen troch Espressif. Ien kear fêst, bliuwe de koade, arkketen en frijlittingsdokuminten foar deselde ferzje net feroare. GitHub-tûken (bgl. de release/v4.3-tûke) ûndergeane lykwols faak koade-commits, faaks op deistige basis. Dêrom kinne twa koade snippets ûnder deselde tûke ferskille, wêrtroch ûntwikkelders har koade fuortendaliks bywurkje.
4.1.2 ESP-IDF Git Workflow
Espressif folget in spesifike Git-workflow foar ESP-IDF, as folget sketst:
· Nije feroarings wurde makke op 'e mastertûke, dy't tsjinnet as de wichtichste ûntwikkelingstak. De ESP-IDF-ferzje op 'e mastertûke hat altyd in -dev tag om oan te jaan dat it op it stuit yn ûntwikkeling is, lykas v4.3-dev. Feroarings op de master tûke sil earst wêze reviewed en hifke yn it ynterne repository fan Espressif, en dan skood nei GitHub neidat automatisearre testen foltôge is.
· Sadree't in nije ferzje funksje-ûntwikkeling op 'e mastertûke hat foltôge en foldie oan de kritearia foar it yngean fan beta-testen, giet it oer nei in nije branch, lykas release / v4.3. Dêrneist is dizze nije tûke tagged as in pre-release ferzje, lykas v4.3-beta1. Untwikkelders kinne ferwize nei it GitHub-platfoarm om tagong te krijen ta de folsleine list mei tûken en tags foar ESP-IDF. It is wichtich om te notearjen dat de beta-ferzje (pre-release-ferzje) noch in signifikant oantal bekende problemen kin hawwe. As de beta-ferzje kontinuze testen ûndergiet, wurde bugfixes tagelyk tafoege oan sawol dizze ferzje as de mastertûke. Underwilens kin de mastertûke al begon wêze mei it ûntwikkeljen fan nije funksjes foar de folgjende ferzje. As it testen hast foltôge is, wurdt in label foar frijlittingskandidaat (rc) tafoege oan 'e branch, wat oanjout dat it in potinsjele kandidaat is foar de offisjele frijlitting, lykas v4.3-rc1. Op dizze stage, de branch bliuwt in pre-release ferzje.
· As der gjin grutte bugs wurde ûntdutsen of rapportearre, krijt de pre-release ferzje úteinlik in grutte ferzje label (bgl. v5.0) of in lytse ferzje label (bgl, v4.3) en wurdt in offisjele release ferzje, dy't dokumintearre yn 'e side fan release notysjes. Ferfolgens, alle bugs identifisearre yn dizze ferzje wurde reparearre op de release branch. Nei't hânmjittich testen is foltôge, wurdt de tûke in bug-fix-ferzje-label tawiisd (bgl. v4.3.2), dat ek wjerspegele wurdt op 'e side mei release-notysjes.
Haadstik 4. Untwikkelingsomjouwing ynstelle 33
4.1.3 Kies in geskikte ferzje
Sûnt ESP-IDF offisjeel begon te stypjen ESP32-C3 fan ferzje v4.3, en v4.4 is noch net offisjeel frijjûn op it momint fan it skriuwen fan dit boek, is de ferzje brûkt yn dit boek v4.3.2, dat is in feroare ferzje oer v4.3. It is lykwols wichtich om te notearjen dat tsjin 'e tiid dat jo dit boek lêze, v4.4 of nijere ferzjes mooglik al beskikber wêze. By it selektearjen fan in ferzje riede wy it folgjende oan:
· Foar yngongsnivo-ûntwikkelders is it oan te rieden om de stabile v4.3-ferzje te kiezen as syn feroare ferzje, dy't oerienkomt mei de eksample ferzje brûkt yn dit boek.
· Foar massaproduksjedoelen is it oan te rieden om de lêste stabile ferzje te brûken om te profitearjen fan de meast aktuele technyske stipe.
· As jo fan doel binne om te eksperimintearjen mei nije chips of nije produktfunksjes te ferkennen, brûk dan de mastertûke. De lêste ferzje befettet alle lêste funksjes, mar hâld der rekken mei dat der bekende of ûnbekende bugs oanwêzich wêze kinne.
· As de stabile ferzje dy't brûkt wurdt net de winske nije funksjes omfettet en jo de risiko's dy't ferbûn binne mei de mastertûke minimalisearje wolle, beskôgje dan it brûken fan de korrespondearjende release-tûke, lykas de release/v4.4-tûke. Espressif's GitHub-repository sil earst de release / v4.4-tûke oanmeitsje en dêrnei de stabile v4.4-ferzje frijlitte basearre op in spesifike histoaryske momintopname fan dizze branch, nei it foltôgjen fan alle funksjeûntwikkeling en testen.
4.1.4 Oerview fan ESP-IDF SDK Directory
De ESP-IDF SDK bestiet út twa haadmappen: esp-idf en .espressif. De eardere befettet de boarnekoade fan ESP-IDF repository files en kompilaasje skripts, wylst de lêste benammen winkels kompilaasje ark keatlingen en oare software. Fertroudheid mei dizze twa mappen sil ûntwikkelders helpe om better gebrûk te meitsjen fan beskikbere boarnen en it ûntwikkelingsproses te fersnellen. De mapstruktuer fan ESP-IDF wurdt hjirûnder beskreaun:
(1) ESP-IDF repository code directory (/esp/esp-idf), lykas werjûn yn figuer 4.2.
in. Component directory komponinten
Dizze kearnmap yntegreart ferskate essensjele softwarekomponinten fan ESP-IDF. Gjin projektkoade kin kompilearre wurde sûnder te betrouwen op de komponinten yn dizze map. It omfettet stjoerprogramma-stipe foar ferskate Espressif-chips. Fan 'e LL-bibleteek- en HAL-bibleteek-ynterfaces foar perifeare apparaten oant it boppeste nivo Driver en Virtual File Systeem (VFS) laach stipe, ûntwikkelders kinne kieze de passende komponinten op ferskillende nivo 's foar harren ûntwikkeling behoeften. ESP-IDF stipet ek meardere standert netwurkprotokolstacks lykas TCP/IP, HTTP, MQTT, WebSocket, ensfh. Untwikkelders kinne fertroude ynterfaces lykas Socket brûke om netwurkapplikaasjes te bouwen. Komponinten jouwe begryp-
34 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
figuer 4.2. ESP-IDF repository koade triemtafel
sive funksjonaliteit en kin maklik wurde yntegrearre yn applikaasjes, wêrtroch ûntwikkelders in fokus allinnich op de saaklike logika. Guon mienskiplike komponinten binne: · bestjoerder: Dizze komponint befettet perifeare stjoerprogramma's foar ferskate Espressif
chip rige, lykas GPIO, I2C, SPI, UART, LEDC (PWM), ensfh De perifeare stjoerprogramma programma yn dizze komponint biede chip-ûnôfhinklik abstrakte Schnittstellen. Elke perifeare apparaat hat in mienskiplike koptekst file (lykas gpio.h), elimineert de needsaak om te gean mei ferskate chip-spesifike stipe fragen. · esp_wifi: Wi-Fi, as in spesjale perifeare apparaat, wurdt behannele as in aparte komponint. It omfettet meardere API's lykas inisjalisaasje fan ferskate Wi-Fi-bestjoerdermodi, parameterkonfiguraasje en evenemintferwurking. Bepaalde funksjes fan dizze komponint wurde levere yn 'e foarm fan statyske linkbiblioteken. ESP-IDF leveret ek wiidweidige bestjoersdokumintaasje foar maklik gebrûk.
Haadstik 4. Untwikkelingsomjouwing ynstelle 35
· freertos: Dizze komponint befettet de folsleine FreeRTOS-koade. Neist it leverjen fan wiidweidige stipe foar dit bestjoeringssysteem, hat Espressif syn stipe ek útwreide nei dual-core chips. Foar dual-core chips lykas ESP32 en ESP32-S3 kinne brûkers taken oanmeitsje op spesifike kearnen.
b. Dokumint map docs
Dizze map befettet ESP-IDF-relatearre ûntwikkelingsdokuminten, ynklusyf de Get Started Guide, API Reference Manual, Development Guide, ensfh.
OPMERKING Nei't se kompilearre binne troch automatisearre ark, wurdt de ynhâld fan dizze map ynset op https://docs.espressif.com/projects/esp-idf. Soargje asjebleaft om it dokumintdoel te wikseljen nei ESP32-C3 en selektearje de opjûne ESP-IDF-ferzje.
c. Skript ark ark
Dizze map befettet meast brûkte kompilaasje-foarkant-ark lykas idf.py, en it monitorterminal-ark idf_monitor.py, ensfh. De submap cmake befettet ek kearnskript files fan de kompilaasje systeem, tsjinje as de stifting foar it útfieren fan ESP-IDF kompilaasje regels. By it tafoegjen fan de omjouwingsfariabelen wurdt de ynhâld binnen de arkmap tafoege oan de systeemomjouwingsfariabele, wêrtroch idf.py direkt ûnder it projektpaad kin wurde útfierd.
d. Exampde programmamap bglamples
Dizze map omfettet in grutte kolleksje fan ESP-IDF example programma's dy't it gebrûk fan komponint API's demonstrearje. De eksampbestannen wurde organisearre yn ferskate submappen basearre op har kategoryen:
· te begjinnen: Dizze submap befettet yngongsnivo examples lykas "hello world" en "blink" om brûkers te helpen de basis te begripen.
· bluetooth: Jo kinne Bluetooth-relatearre eks fineamples hjir, ynklusyf Bluetooth LE Mesh, Bluetooth LE HID, BluFi, en mear.
· wifi: Dizze submap rjochtet him op Wi-Fi examples, ynklusyf basisprogramma's lykas Wi-Fi SoftAP, Wi-Fi Station, espnow, lykas ek proprietêr kommunikaasjeprotokol ex.amples út Espressif. It omfettet ek meardere tapassingslaach bvamples basearre op Wi-Fi, lykas Iperf, Sniffer, en Smart Config.
· Perifeare apparaten: Dizze wiidweidige submap is fierder ferdield yn tal fan submappen basearre op perifeare nammen. It befettet benammen perifeare bestjoerder examples foar Espressif chips, mei eltse eksample featuring ferskate sub-examples. Bygelyks, de gpio-submap befettet twa examples: GPIO en GPIO matrix toetseboerd. It is wichtich om te notearjen dat net alle eksamples yn dizze map binne fan tapassing op ESP32-C3.
36 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Bygelyksample, eksamples yn usb / host binne allinnich fan tapassing op perifeare apparaten mei USB Host hardware (lykas ESP32-S3), en ESP32-C3 hat net dit perifeare apparaat. It kompilaasjesysteem jout typysk prompts by it ynstellen fan it doel. DE README file fan elk example list de stipe chips. · protokollen: Dizze submap befettet eksamples foar ferskate kommunikaasjeprotokollen, ynklusyf MQTT, HTTP, HTTP-tsjinner, PPPoS, Modbus, mDNS, SNTP, dy't in breed oanbod fan kommunikaasjeprotokol befetsjeamples nedich foar IoT-ûntwikkeling. · foarsjenning: Hjir fine jo foarsjenning bglamples foar ferskate metoaden, lykas Wi-Fi foarsjenning en Bluetooth LE foarsjenning. · systeem: Dizze submap befettet systeemdebuggen bglamples (bgl. stack tracing, runtime tracing, taakmonitoring), enerzjybehear bglamples (bgl. ferskate sliepmodi, co-processors), en bglamples relatearre oan mienskiplike systeemkomponinten lykas konsoleterminal, evenemintloop en systeemtimer. · opslach: Binnen dizze submap sille jo eksamples fan alles file systemen en opslachmeganismen stipe troch ESP-IDF (lykas lêzen en skriuwen fan Flash, SD-kaart en oare opslachmedia), lykas ek eks.amples fan net-flechtich opslach (NVS), FatFS, SPIFFS en oare file systeem operaasjes. · feiligens: Dizze submap befettet eksamples yn ferbân mei flash fersifering. (2) ESP-IDF kompileringsverktoy chain directory (/.espressif), lykas werjûn yn figuer 4.3.
figuer 4.3. ESP-IDF kompilaasje ark ketting triemtafel
Haadstik 4. Untwikkelingsomjouwing ynstelle 37
in. Software distribúsje directory dist
De ESP-IDF arkketen en oare software wurde ferspraat yn 'e foarm fan komprimearre pakketten. Tidens it ynstallaasjeproses downloadt it ynstallaasjeark earst it komprimearre pakket nei de dist-map, en ekstrahearret it dan nei de opjûne map. Sadree't de ynstallaasje foltôge is, kin de ynhâld yn dizze map feilich fuortsmiten wurde.
b. Python firtuele omjouwingsmap python env
Ferskillende ferzjes fan ESP-IDF fertrouwe op spesifike ferzjes fan Python-pakketten. It ynstallearjen fan dizze pakketten direkt op deselde host kin liede ta konflikten tusken pakketferzjes. Om dit oan te pakken, brûkt ESP-IDF Python firtuele omjouwings om ferskate pakketferzjes te isolearjen. Mei dit meganisme kinne ûntwikkelders meardere ferzjes fan ESP-IDF op deselde host ynstallearje en maklik tusken har wikselje troch ferskate omjouwingsfariabelen te ymportearjen.
c. ESP-IDF kompilaasje ark keten triemtafel ark
Dizze map befettet benammen cross-kompilaasje-ark dy't nedich binne om ESP-IDF-projekten te kompilearjen, lykas CMake-ark, Ninja-bou-ark, en de gcc-arkketen dy't it definitive útfierbere programma genereart. Derneist befettet dizze map de standertbibleteek fan 'e C/C++-taal tegearre mei de korrespondearjende koptekst files. As in programma ferwiist nei in systeemkop file like #ynklusyf , sil de kompilaasjearkketen de stdio.h file binnen dizze map.
4.2 Opsetten fan ESP-IDF Untwikkelingsomjouwing
De ûntwikkelingsomjouwing fan ESP-IDF stipet mainstream bestjoeringssystemen lykas Windows, Linux en macOS. Dizze seksje sil yntrodusearje hoe't jo de ûntwikkelingsomjouwing op elk systeem ynstelle kinne. It is oan te rieden om ESP32-C3 te ûntwikkeljen op Linux-systeem, dat hjir yn detail sil wurde yntrodusearre. In protte ynstruksjes binne fan tapassing oer platfoarms fanwegen de oerienkomst fan 'e ûntwikkelingsark. Dêrom is it oan te rieden om de ynhâld fan dizze seksje soarchfâldich te lêzen.
OPMERKING Jo kinne ferwize nei de online dokuminten dy't beskikber binne op https://bookc3.espressif.com/esp32c3, dy't de yn dizze seksje neamde kommando's leverje.
4.2.1 ESP-IDF Untwikkelingsomjouwing ynstelle op Linux
De GNU-ûntwikkelings- en debuggen-ark dy't nedich binne foar de ESP-IDF-ûntwikkelingsomjouwing binne lânseigen oan it Linux-systeem. Derneist is de kommando-rigelterminal yn Linux krêftich en brûkerfreonlik, wêrtroch it in ideale kar is foar ESP32-C3-ûntwikkeling. Do kinst
38 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
selektearje jo foarkar Linux-distribúsje, mar wy riede oan om Ubuntu of oare Debian-basearre systemen te brûken. Dizze seksje jout begelieding oer it ynstellen fan de ESP-IDF-ûntwikkelingsomjouwing op Ubuntu 20.04.
1. Ynstallearje fereaske pakketten
Iepenje in nije terminal en fier it folgjende kommando út om alle nedige pakketten te ynstallearjen. It kommando sil automatysk pakketten oerslaan dy't al ynstalleare binne.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
TIPS Jo moatte it administrator akkount en wachtwurd brûke foar it kommando hjirboppe. Standert sil gjin ynformaasje werjûn wurde by it ynfieren fan it wachtwurd. Druk gewoan op de "Enter" kaai om de proseduere troch te gean.
Git is in kaai koade behear ark yn ESP-IDF. Nei it suksesfol ynstellen fan de ûntwikkelingsomjouwing, kinne jo it git log kommando brûke om view alle koade feroarings makke sûnt de oprjochting fan ESP-IDF. Derneist wurdt Git ek brûkt yn ESP-IDF om ferzjeynformaasje te befêstigjen, wat nedich is foar it ynstallearjen fan de juste arkketen dy't oerienkomt mei spesifike ferzjes. Tegearre mei Git omfetsje oare wichtige systeemark Python. ESP-IDF omfettet ferskate automatisearringsskripts skreaun yn Python. Ark lykas CMake, Ninja-build, en Ccache wurde in protte brûkt yn C/C ++ projekten en tsjinje as de standert koade kompilaasje en bou ark yn ESP-IDF. libusb-1.0-0 en dfu-util binne de wichtichste bestjoerders dy't brûkt wurde foar USB-seriële kommunikaasje en firmware-ferbaarnen. Sadree't de softwarepakketten binne ynstalleare, kinne jo de apt-show brûke kommando om detaillearre beskriuwingen fan elk pakket te krijen. Bygelyksample, brûk apt show git om de beskriuwingsynformaasje foar it Git-ark te printsjen.
F: Wat te dwaan as de Python-ferzje net stipe wurdt? A: ESP-IDF v4.3 fereasket in Python-ferzje dy't net leger is as v3.6. Foar âldere ferzjes fan Ubuntu kinne jo in hegere ferzje fan Python manuell downloade en ynstallearje en Python3 ynstelle as de standert Python-omjouwing. Jo kinne detaillearre ynstruksjes fine troch te sykjen nei it trefwurd update-alternativen python.
2. Download ESP-IDF repository koade
Iepenje in terminal en meitsje in map mei de namme esp yn jo thúsmap mei it kommando mkdir. Jo kinne in oare namme foar de map kieze as jo leaver. Brûk it cd-kommando om de map yn te gean.
Haadstik 4. Untwikkelingsomjouwing ynstelle 39
$ mkdir -p /esp $ cd /esp
Brûk it git clone kommando om de ESP-IDF repository koade te downloaden, lykas hjirûnder werjûn:
$ git clone -b v4.3.2 -rekursyf https://github.com/espressif/esp-idf.git
Yn it kommando hjirboppe spesifisearret de parameter -b v4.3.2 de ferzje om te downloaden (yn dit gefal ferzje 4.3.2). De parameter -rekursyf soarget derfoar dat alle sub-repositories fan ESP-IDF rekursyf ynladen wurde. Ynformaasje oer sub-repositories is te finen yn 'e .gitmodules file.
3. Ynstallearje de ESP-IDF ûntwikkeling ark keten
Espressif leveret in automatisearre skript install.sh om de arkketen te downloaden en te ynstallearjen. Dit skript kontrolearret de hjoeddeiske ESP-IDF ferzje en bestjoeringssysteem omjouwing, en dan downloads en ynstallearje passende ferzje fan Python ark pakketten en kompilaasje ark keatlingen. It standert ynstallaasjepaad foar de arkketen is /.espressif. Alles wat jo hoege te dwaan is te navigearjen nei de map esp-idf en install.sh útfiere.
$ cd /esp/esp-idf $ ./install.sh
As jo de arkketen mei súkses ynstallearje, sil de terminal werjaan:
Alles klear!
Op dit punt hawwe jo de ûntwikkelingsomjouwing fan ESP-IDF mei súkses ynsteld.
4.2.2 ESP-IDF Untwikkelingsomjouwing ynstelle op Windows
1. Download ESP-IDF ark ynstallearder
TIPS It is oan te rieden om de ESP-IDF-ûntwikkelingsomjouwing yn te stellen op Windows 10 of heger. Jo kinne it ynstallearder downloade fan https://dl.espressif.com/dl/esp-idf/. De ynstallearder is ek in iepen boarne software, en de boarnekoade kin wêze viewed by https://github.com/espressif/idf-installer.
· Online ynstallearder fan ESP-IDF-ark
Dit ynstallearder is relatyf lyts, sawat 4 MB yn grutte, en oare pakketten en koade sille wurde ynladen tidens it ynstallaasjeproses. De advantage fan 'e online ynstallearder is dat net allinich softwarepakketten en koade kinne wurde downloade op oanfraach tidens it ynstallaasjeproses, mar ek de ynstallaasje fan alle beskikbere releases fan ESP-IDF en de lêste tûke fan GitHub-koade (lykas de mastertûke) mooglik makket. . It neidieltage is dat it in netwurkferbining fereasket tidens it ynstallaasjeproses, wat ynstallaasjeflater kin feroarsaakje fanwege netwurkproblemen.
40 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
· Offline ESP-IDF ark ynstallearder Dit ynstallearder is grutter, oer 1 GB yn grutte, en befettet alle software pakketten en koade nedich foar omjouwing set up. De wichtichste advantage fan de offline ynstallearder is dat it kin wurde brûkt op kompjûters sûnder ynternet tagong, en hat oer it algemien in hegere ynstallaasje súkses rate. Dêrby moat opmurken wurde dat de offline ynstallearder kin allinnich ynstallearje stabile releases fan ESP-IDF identifisearre troch v*.* of v*.*.*.
2. Laad de ESP-IDF-ark ynstallearder Nei it downloaden fan in gaadlike ferzje fan it ynstallearder (nim ESP-IDF Tools Offline 4.3.2 foar bgl.ample hjir), dûbelklik op de exe file om de ESP-IDF-ynstallaasje-ynterface te starten. It folgjende toant hoe't jo ESP-IDF stabile ferzje v4.3.2 ynstallearje mei it offline ynstallearder.
(1) Selektearje yn 'e ynterface "Selektearje ynstallaasjetaal" werjûn yn figuer 4.4 de te brûken taal út it dellûklist.
figuer 4.4. Ynterface "Selektearje ynstallaasjetaal" (2) Nei it selektearjen fan de taal, klikje op "OK" om de ynterface "License Agreement" op te roppen
(sjoch figuer 4.5). Nei it sekuer lêzen fan de ynstallaasje lisinsje oerienkomst, selektearje "Ik akseptearje de oerienkomst" en klik op "Folgjende".
figuer 4.5. "License Agreement" ynterface Haadstik 4. Ynstelle Untwikkelingsomjouwing 41
(3) Review it systeem konfiguraasje yn de ynterface "Pre-ynstallaasje systeem check" ynterface (sjoch figuer 4.6). Kontrolearje de Windows-ferzje en de ynstalleare antivirussoftwareynformaasje. Klikje op "Folgjende" as alle konfiguraasje-items normaal binne. Oars kinne jo klikke op "Folsleine log" foar oplossings basearre op kaai items.
figuer 4.6. "Systeem kontrolearje foar ynstallaasje" ynterface TIPS
Jo kinne logs yntsjinje nei https://github.com/espressif/idf-installer/issues foar help. (4) Selektearje de ynstallaasjemap fan ESP-IDF. Selektearje hjir D:/.espressif, lykas werjûn yn
Figuer 4.7, en klikje op "Folgjende". Tink derom dat .espressif hjir in ferburgen map is. Nei de ynstallaasje is foltôge, kinne jo view de spesifike ynhâld fan dizze map troch it iepenjen fan de file behearder en it werjaan fan ferburgen items.
figuer 4.7. Selektearje de ESP-IDF-ynstallaasjemap 42 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
(5) Kontrolearje de komponinten dy't moatte wurde ynstallearre, lykas werjûn yn figuer 4.8. It is oan te rieden om de standertopsje te brûken, dat is, folsleine ynstallaasje, en klikje dan op "Folgjende".
figuer 4.8. Selektearje de te ynstallearjen komponinten (6) Befêstigje de te ynstallearjen komponinten en klik op "Ynstallearje" om de automatisearre yn-
stallaasjeproses, lykas werjûn yn figuer 4.9. It ynstallaasjeproses kin tsientallen minuten duorje en de foarútgongbalke fan it ynstallaasjeproses wurdt werjûn yn figuer 4.10. Wachtsje asjebleaft geduldich.
figuer 4.9. Tariede op ynstallaasje (7) Nei't de ynstallaasje foltôge is, is it oan te rieden om te kontrolearjen "Registrearje de ESP-IDF
Utfierbere ark as Windows Defender-útslutingen ..." om te foarkommen dat antivirussoftware wisket files. It tafoegjen fan útslutingsitems kin ek faak scans troch antivirus oerslaan
Haadstik 4. Untwikkelingsomjouwing ynstelle 43
figuer 4.10. Ynstallaasje foarútgong bar software, sterk ferbetterjen fan de koade kompilaasje effisjinsje fan it Windows systeem. Klikje op "Finish" om de ynstallaasje fan 'e ûntwikkelingsomjouwing te foltôgjen, lykas werjûn yn figuer 4.11. Jo kinne kieze om te kontrolearjen "Run ESP-IDF PowerShell-omjouwing" of "Run ESP-IDF kommando-prompt". Laad it kompilaasjefinster direkt nei ynstallaasje om te soargjen dat de ûntwikkelingsomjouwing normaal funksjonearret.
figuer 4.11. Ynstallaasje foltôge (8) Iepenje de ynstalleare ûntwikkelingsomjouwing yn 'e programmalist (of ESP-IDF 4.3
CMD of ESP-IDF 4.3 PowerShell-terminal, lykas werjûn yn figuer 4.12), en de ESP-IDF-omjouwingsfariabele wurde automatysk tafoege as jo yn 'e terminal rinne. Dêrnei kinne jo it kommando idf.py brûke foar operaasjes. De iepene ESP-IDF 4.3 CMD wurdt werjûn yn figuer 4.13. 44 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
figuer 4.12. Untwikkeling omjouwing ynstallearre
figuer 4.13. ESP-IDF 4.3 CMD
4.2.3 ESP-IDF Untwikkelingsomjouwing ynstelle op Mac
It proses foar it ynstallearjen fan de ESP-IDF-ûntwikkelingsomjouwing op in Mac-systeem is itselde as dat op in Linux-systeem. De kommando's foar it downloaden fan de repositorykoade en it ynstallearjen fan de arkketen binne krekt itselde. Allinich de kommando's foar it ynstallearjen fan ôfhinklikenspakketten binne wat oars. 1. Ynstallearje ôfhinklikenspakketten Iepenje in terminal, en ynstallearje pip, it Python-pakketbehear-ark, troch it folgjende kommando út te fieren:
% sudo maklik ynstallearje pip
Ynstallearje Homebrew, in ark foar pakketbehear foar macOS, troch it folgjende kommando út te fieren:
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)"
Ynstallearje de fereaske ôfhinklikenspakketten troch it folgjende kommando út te fieren:
% brew python3 ynstallearje cmake ninja ccache dfu-util
2. Download ESP-IDF repository koade Folgje de ynstruksjes jûn yn paragraaf 4.2.1 te downloaden de ESP-IDF repository koade. De stappen binne itselde as foar it downloaden op in Linux-systeem.
Haadstik 4. Untwikkelingsomjouwing ynstelle 45
3. Ynstallearje de ESP-IDF ûntwikkeling ark keten
Folgje de ynstruksjes jûn yn paragraaf 4.2.1 om de ESP-IDF-ûntwikkelingsarkketen te ynstallearjen. De stappen binne itselde as foar ynstallaasje op in Linux-systeem.
4.2.4 Ynstallearje VS Code
Standert omfettet de ESP-IDF SDK gjin koade-bewurkingsark (hoewol it lêste ESP-IDF-ynstallearder foar Windows de opsje biedt om ESP-IDF Eclipse te ynstallearjen). Jo kinne elk tekstbewurkingsark fan jo kar brûke om de koade te bewurkjen en dan te kompilearjen mei terminalkommando's.
Ien populêr ark foar bewurking fan koade is VS Code (Visual Studio Code), dat is in fergese en funksjonele koade-bewurker mei in brûkerfreonlike ynterface. It biedt ferskate plugins dy't funksjonaliteiten leverje lykas koadenavigaasje, markearring fan syntaksis, Git-ferzjekontrôle, en terminalyntegraasje. Derneist hat Espressif in tawijd plugin ûntwikkele mei de namme Espressif IDF foar VS Code, dy't projektkonfiguraasje en debuggen ferienfâldiget.
Jo kinne it kommando koade yn 'e terminal brûke om de aktuele map yn VS Code fluch te iepenjen. As alternatyf kinne jo de fluchtoets Ctrl+ brûke om de standert terminalkonsole fan it systeem binnen VS Code te iepenjen.
TIPS It is oan te rieden om VS-koade te brûken foar ESP32-C3-koadeûntwikkeling. Download en ynstallearje de lêste ferzje fan VS Code op https://code.visualstudio.com/.
4.2.5 Yntroduksje ta ûntwikkelingsomjouwings fan tredden
Neist de offisjele ESP-IDF-ûntwikkelingsomjouwing, dy't primêr de C-taal brûkt, stipet ESP32-C3 ek oare mainstream-programmearringstalen en in breed oanbod fan ûntwikkelingsomjouwings fan tredden. Guon opmerklike opsjes omfetsje:
Arduino: in iepen boarne platfoarm foar sawol hardware as software, dy't ferskate mikrocontrollers stipet, ynklusyf ESP32-C3.
It brûkt de C++-taal en biedt in ferienfâldige en standerdisearre API, faaks oantsjutten as de Arduino-taal. Arduino wurdt in protte brûkt yn prototypeûntwikkeling en edukative konteksten. It leveret in útwreidber softwarepakket en in IDE dy't maklik kompilaasje en bliksem makket.
MicroPython: in Python 3-taaltolk ûntworpen om te rinnen op ynbêde mikrocontrollerplatfoarms.
Mei in ienfâldige skripttaal kin it direkt tagong krije ta de perifeare boarnen fan ESP32-C3 (lykas UART, SPI, en I2C) en kommunikaasjefunksjes (lykas Wi-Fi en Bluetooth LE).
46 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
Dit simplifies hardware ynteraksje. MicroPython, kombinearre mei Python's wiidweidige wiskundige operaasjebibleteek, makket de ymplemintaasje fan komplekse algoritmen op ESP32-C3 mooglik, en fasilitearret de ûntwikkeling fan AI-relatearre applikaasjes. As skripttaal is der gjin ferlet fan werhelle kompilaasje; wizigingen kinne makke wurde en skripts kinne direkt wurde útfierd.
NodeMCU: in LUA-taaltolk ûntwikkele foar chips fan ESP-searjes.
It stipet hast alle perifeare funksjes fan ESP-chips en is lichter as MicroPython. Krekt as MicroPython brûkt NodeMCU in skripttaal, wêrtroch't de needsaak foar werhelle kompilaasje elimineert.
Fierder stipet ESP32-C3 ek de NuttX en Zephyr bestjoeringssystemen. NuttX is in real-time bestjoeringssysteem dat POSIX-kompatibele ynterfaces leveret, wêrtroch de portabiliteit fan applikaasjes ferbetteret. Zephyr is in lyts real-time bestjoeringssysteem spesifyk ûntworpen foar IoT-applikaasjes. It omfettet ferskate softwarebiblioteken dy't nedich binne yn IoT-ûntwikkeling, stadichoan evoluearje ta in wiidweidich software-ekosysteem.
Dit boek jout gjin detaillearre ynstallaasje ynstruksjes foar de earder neamde ûntwikkeling omjouwings. Jo kinne in ûntwikkelingsomjouwing ynstallearje op basis fan jo easken troch de oanbelangjende dokumintaasje en ynstruksjes te folgjen.
4.3 ESP-IDF kompilaasjesysteem
4.3.1 Basisbegripen fan kompilaasjesysteem
In ESP-IDF-projekt is in kolleksje fan in haadprogramma mei in yngongfunksje en meardere ûnôfhinklike funksjonele komponinten. Bygelyksample, in projekt dat kontrolearret LED skakelaars benammen bestiet út in yngong programma haad en in bestjoerder komponint dat kontrolearret GPIO. As jo de LED-ôfstânskontrôle realisearje wolle, moatte jo ek Wi-Fi, TCP / IP-protokolstapel tafoegje, ensfh.
It kompilaasjesysteem kin útfierber kompilearje, keppelje en generearje files (.bin) foar de koade troch in set fan bou regels. It kompilaasjesysteem fan ESP-IDF v4.0 en boppe ferzjes is standert basearre op CMake, en it kompilaasjeskript CMakeLists.txt kin brûkt wurde om it kompilaasjegedrach fan 'e koade te kontrolearjen. Neist it stypjen fan de basissyntaksis fan CMake, definiearret it ESP-IDF-kompilaasjesysteem ek in set standert kompilaasjeregels en CMake-funksjes, en jo kinne it kompilaasjeskript skriuwe mei ienfâldige útspraken.
4.3.2 Projekt File Struktuer
In projekt is in map dy't befettet in yngong programma main, brûker-definiearre komponinten, en files nedich om útfierbere applikaasjes te bouwen, lykas kompilaasjeskripts, konfiguraasje
Haadstik 4. Untwikkelingsomjouwing ynstelle 47
files, partition tabellen, ensfh Projekten kinne wurde kopiearre en trochjûn, en deselde útfierbere file kin wurde kompilearre en generearre yn masines mei deselde ferzje fan ESP-IDF ûntwikkeling omjouwing. In typysk ESP-IDF projekt file struktuer wurdt werjûn yn figuer 4.14.
figuer 4.14. Typysk ESP-IDF projekt file struktuer Om't ESP-IDF meardere IoT-chips fan Espressif stipet, ynklusyf ESP32, ESP32-S-searje, ESP32-C-searje, ESP32-H-searje, ensfh., moat in doel bepaald wurde foardat de koade kompilearre wurdt. It doel is sawol it hardware-apparaat dat it applikaasjeprogramma rint as it build-doel fan it kompilaasjesysteem. Ofhinklik fan jo behoeften kinne jo ien of mear doelen foar jo projekt opjaan. Bygelyksample, troch kommando idf.py set-target esp32c3, kinne jo ynstelle de kompilaasje doel oan ESP32-C3, wêrby't de standert parameters en kompilaasje ark ketting paad foar ESP32C3 wurdt laden. Nei kompilaasje kin in útfierber programma oanmakke wurde foar ESP32C3. Jo kinne ek it kommando set-target wer útfiere om in oar doel yn te stellen, en it kompilaasjesysteem sil automatysk skjinmeitsje en opnij konfigurearje. Components
Komponenten yn ESP-IDF binne modulêre en ûnôfhinklike koade-ienheden beheard binnen it kompilaasjesysteem. Se wurde organisearre as mappen, wêrby't de mapnamme standert de komponintnamme fertsjintwurdiget. Elke komponint hat in eigen kompilaasjeskript dat 48 ESP32-C3 Wireless Adventure: A Comprehensive Guide to IoT
spesifisearret syn kompilaasjeparameters en ôfhinklikens. Tidens it kompilaasjeproses wurde komponinten gearstald yn aparte statyske bibleteken (.a files) en úteinlik kombineare mei oare komponinten om it applikaasjeprogramma te foarmjen.
ESP-IDF leveret essensjele funksjes, lykas it bestjoeringssysteem, perifeare bestjoerders, en netwurkprotokolstapel, yn 'e foarm fan komponinten. Dizze komponinten wurde opslein yn 'e komponintenmap yn' e ESP-IDF-rootmap. Untwikkelders hoege dizze komponinten net te kopiearjen nei de komponintenmap fan myProject. Ynstee moatte se allinich de ôfhinklikensrelaasjes fan dizze komponinten opjaan yn 'e CMakeLists.txt fan it projekt file mei help fan de REQUIRES of PRIV_REQUIRES rjochtlinen. It kompilaasjesysteem sil automatysk de fereaske komponinten lokalisearje en kompilearje.
Dêrom is de komponintenmap ûnder myProject net nedich. It wurdt allinich brûkt om inkele oanpaste komponinten fan it projekt op te nimmen, dy't bibleteken fan tredden kinne wêze as brûker-definieare koade. Dêrnjonken kinne komponinten fan elke map oars as ESP-IDF of it aktuele projekt komme, lykas fan in iepen boarne-projekt opslein yn in oare map. Yn dit gefal hoege jo allinich it paad fan 'e komponint ta te foegjen troch de fariabele EXTRA_COMPONENT_DIRS yn' e CMakeLists.txt ûnder de root-map te setten. Dizze map sil elke ESP-IDF-komponint mei deselde namme oerskriuwe, en soarget derfoar dat de juste komponint wurdt brûkt.
Yngongsprogramma haad De haadmap binnen it projekt folget itselde file struktuer as oare komponinten (bgl. komponint 1). It hat lykwols in spesjale betsjutting, om't it in ferplichte komponint is dy't yn elk projekt moat bestean. De haadmap befettet de boarnekoade fan it projekt en it yngongspunt fan it brûkerprogramma, typysk neamd app_main. Standert begjint de útfiering fan it brûkersprogramma fan dit yngongspunt. De haadkomponint ferskilt ek yn dat it automatysk hinget fan alle komponinten binnen it sykpaad. Dêrom is it net nedich om ôfhinklikens eksplisyt oan te jaan mei de REQUIRES- of PRIV_REQUIRES-rjochtlinen yn 'e CMakeLists.txt file.
Konfiguraasje file De rootmap fan it projekt befettet in konfiguraasje file neamd sdkconfig, dat befettet de konfiguraasje parameters foar alle ûnderdielen binnen it projekt. De sdkconfig file wurdt automatysk oanmakke troch it kompilaasjesysteem en kin wizige en regenerearre wurde troch it kommando idf.py menuconfig. De menuconfig-opsjes komme benammen fan 'e Kconfig.projbuild fan it projekt en de Kconfig fan 'e komponinten. Komponintûntwikkelders foegje oer it algemien konfiguraasje-items ta yn Kconfig om de komponint fleksibel en konfigurabel te meitsjen.
Build directory Standert, de build directory binnen it projekt winkels tusken files en de fi-
Haadstik 4. Untwikkelingsomjouwing ynstelle 49
Nal útfierbere programma's generearre troch it idf.py build kommando. Yn 't algemien is it net nedich om direkt tagong te krijen ta de ynhâld fan' e buildmap. ESP-IDF leveret foarôf definieare kommando's om te ynteraksje mei de map, lykas it brûken fan it idf.py flash-kommando om de kompilearre binêr automatysk te lokalisearjen file en flash it nei it oantsjutte flash-adres, of brûk it kommando idf.py fullclean om de hiele build-map skjin te meitsjen.
Partition tabel (partitions.csv) Elts projekt fereasket in partition tabel te dielen de romte fan flash en spesifisearje de grutte en startadres fan it útfierbere programma en brûker gegevens romte. Kommando idf.py flash of OTA upgrade programma sil flash de firmware nei it oerienkommende adres neffens dizze tabel. ESP-IDF leveret ferskate standert partysjestabellen yn komponinten/ partition_table, lykas partitions_singleapp.csv en partitions_two_ ota.csv, dy't kinne wurde selektearre yn menuconfig.
As de standert partition tabel fan it systeem kin net foldwaan oan de easken fan it projekt, in oanpaste partitions.csv kin tafoege wurde oan de projekt triemtafel en wurde selektearre yn menuconfig.
4.3.3 Standert bouregels fan it kompilaasjesysteem
Regels foar it oerskriuwen fan komponinten mei deselde namme Tidens it sykproses foar komponinten folget it kompilaasjesysteem in spesifike folchoarder. It siket earst nei ynterne komponinten fan ESP-IDF, siket dan nei komponinten fan it brûkerprojekt, en siket úteinlik nei komponinten yn EXTRA_COMPONENT_DIRS. Yn gefallen dêr't meardere mappen komponinten mei deselde namme befetsje, sil de komponint fûn yn 'e lêste map alle foarige komponinten mei deselde namme oerskriuwe. Dizze regel soarget foar it oanpassen fan ESP-IDF-komponinten binnen it brûkersprojekt, wylst de orizjinele ESP-IDF-koade yntakt hâldt.
Regels foar it opnimmen fan gewoane komponinten as standert Lykas neamd yn paragraaf 4.3.2, moatte komponinten har ôfhinklikens fan oare komponinten yn 'e CMakeLists.txt eksplisyt oantsjutte. Algemiene komponinten lykas freerto's wurde lykwols standert automatysk opnommen yn it buildsysteem, sels as har ôfhinklikheidsrelaasjes net eksplisyt definieare binne yn it kompilaasjeskript. ESP-IDF mienskiplike komponinten omfetsje freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv, en cxx. It brûken fan dizze mienskiplike komponinten foarkomt repetitive wurk by it skriuwen fan CMakeLists.txt en meitsje it koarter.
Regels foar oerskriuwen fan konfiguraasje-items Untwikkelders kinne standert konfiguraasjeparameters tafoegje troch in standertkonfiguraasje ta te foegjen file neamd sdkconfig.defaults oan it projekt. Bygelyksample, tafoegje CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
DEFAULT_LEVEL_NONE = y kin de UART-ynterface ynstelle om standert loggegevens net te printsjen. Fierder, as spesifike parameters moatte wurde ynsteld foar in bepaald doel, in konfiguraasje file neamd sdkconfig.defaults.TARGET_NAME kin tafoege wurde, wêrby't TARGET_NAME esp32s2, esp32c3, ensfh. Dizze konfiguraasje files wurde ymportearre yn 'e sdkconfig by kompilaasje, mei de algemiene standertkonfiguraasje file sdkconfig.defaults wurdt earst ymportearre, folge troch de doelspesifike konfiguraasje file, lykas sdkconfig.defaults.esp32c3. Yn gefallen dêr't der konfiguraasje items mei deselde namme, de lêste konfiguraasje file sil oerskriuwe de eardere.
4.3.4 Ynlieding ta it kompilaasjeskript
By it ûntwikkeljen fan in projekt mei ESP-IDF, moatte ûntwikkelders net allinich boarnekoade skriuwe, mar moatte ek CMakeLists.txt skriuwe foar it projekt en komponinten. CMakeLists.txt is in tekst file, ek bekend as in kompilaasjeskript, dat in searje kompilaasjeobjekten, kompilaasjekonfiguraasjeitems en kommando's definiearret om it kompilaasjeproses fan 'e boarnekoade te begelieden. It kompilaasjesysteem fan ESP-IDF v4.3.2 is basearre op CMake. Neist it stypjen fan native CMake-funksjes en kommando's, definiearret it ek in searje oanpaste funksjes, wêrtroch it folle makliker is om kompilaasjeskripts te skriuwen.
De kompilaasjeskripts yn ESP-IDF omfetsje benammen it projektkompilaasjeskript en de kompilaasjeskripts fan 'e komponinten. De CMakeLists.txt yn 'e root-map fan it projekt wurdt it projektkompilaasjeskript neamd, dat it kompilaasjeproses fan it hiele projekt liedt. In basisprojektkompilaasjeskript omfettet typysk de folgjende trije rigels:
1. cmake_minimum_required(VERSJON 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Under harren moat de cmake_minimum_required (VERSJON 3.5) op 'e earste rigel pleatst wurde, dy't brûkt wurdt om it minimale CMake-ferzjenûmer oan te jaan dat nedich is troch it projekt. Nijere ferzjes fan CMake binne oer it generaal efterút kompatibel mei âldere ferzjes, dus oanpasse it ferzjenûmer dêroer by it brûken fan nijere CMake-kommando's om kompatibiliteit te garandearjen.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) ymportearret foarôf definieare konfiguraasjeitems en kommando's fan ESP-IDF-kompilaasjesysteem, ynklusyf de standertbouregels fan it kompilaasjesysteem beskreaun yn paragraaf 4.3.3. project (myProject) makket it projekt sels en spesifisearret syn namme. Dizze namme sil brûkt wurde as de definitive útfier binêr file namme, ie, myProject.elf en myProject.bin.
In projekt kin meardere komponinten hawwe, ynklusyf de haadkomponint. De map op topnivo fan elke komponint befettet in CMakeLists.txt file, dat hjit it komponint kompilaasje skript. Komponintkompilaasjeskripts wurde benammen brûkt om komponintôfhinklikens, konfiguraasjeparameters, boarnekoade op te jaan files, en opnommen header files foar
Haadstik 4. Untwikkelingsomjouwing ynstelle 51
kompilaasje. Mei de oanpaste funksje idf_component_register fan ESP-IDF is de minimale fereaske koade foar in komponint kompilaasjeskript as folget:
1. idf_component_register(SRCS "src1.c"
2.
INCLUDE_DIRS "ynklusyf"
3.
FERGESE komponint 1)
De SRCS parameter jout in list fan boarne files yn de komponint, skieden troch spaasjes as der meardere files. De parameter INCLUDE_DIRS jout in list mei publike kopteksten file mappen foar de komponint, dy't sille wurde tafoege oan it include sykpaad foar oare komponinten dy't ôfhinklik binne fan de hjoeddeiske komponint. De parameter REQUIRES identifisearret de ôfhinklikens fan iepenbiere komponinten foar de aktuele komponint. It is nedich foar komponinten om eksplisyt oan te jaan fan hokker komponinten se ôfhinklik binne, lykas komponint2 ôfhinklik fan komponint1. Foar de haadkomponint, dy't standert ôfhinget fan alle komponinten, kin de parameter REQUIRES lykwols weilitten wurde.
Derneist kinne native CMake-kommando's ek brûkt wurde yn it kompilaasjeskript. Bygelyksample, brûk de kommando-set om fariabelen yn te stellen, lykas set (VARIABLE "VALUE").
4.3.5 Yntroduksje ta mienskiplike kommando's
ESP-IDF brûkt CMake (projektkonfiguraasje-ark), Ninja (projektbou-ark) en esptool (flash-ark) yn it proses fan koade-kompilaasje. Elk ark spilet in oare rol yn it kompilaasje-, bouwen- en flashproses, en stipet ek ferskate bestjoeringskommando's. Om brûker operaasje te fasilitearjen, foeget ESP-IDF in unifoarme front-end idf.py ta wêrmei de boppesteande kommando's fluch kinne wurde neamd.
Foardat jo idf.py brûke, soargje derfoar dat:
· De omjouwingsfariabele IDF_PATH fan ESP-IDF is tafoege oan de hjoeddeiske terminal. · De kommando-útfiermap is de root-map fan it projekt, dy't de
projekt kompilaasje skript CMakeLists.txt.
De mienskiplike kommando's fan idf.py binne as folgjend:
· idf.py –help: in list mei kommando's en har gebrûksynstruksjes werjaan. · idf.py set-target : it ynstellen fan de kompilaasje taidf.py fullcleanrget, sa
as ferfanger mei esp32c3. · idf.py menuconfig: start menuconfig, in terminal grafyske konfiguraasje
tool, dat konfiguraasjeopsjes selektearje of wizigje kin, en de konfiguraasjeresultaten wurde bewarre yn 'e sdkconfig file. · idf.py build: inisjearjen fan koade kompilaasje. De tuskentiid files en it úteinlike útfierbere programma oanmakke troch de kompilaasje wurdt standert bewarre yn de build map fan it projekt. It kompilaasjeproses is inkrementeel, wat betsjut dat as mar ien boarne file wurdt wizige, allinne de wizige file sil de folgjende kear gearstald wurde.
52 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
· idf.py skjin: skjinmeitsjen fan de tuskenlizzende files oanmakke troch it projekt kompilaasje. It hiele projekt wurdt twongen om te kompilearjen yn 'e folgjende kompilaasje. Tink derom dat de CMake-konfiguraasje en de konfiguraasjewizigingen makke troch menuconfig net wiske wurde by it skjinmeitsjen.
· idf.py fullclean: wiskje de hiele build map, ynklusyf alle CMake konfiguraasje útfier files. By it bouwen fan it projekt wer, sil CMake it projekt fanôf it begjin konfigurearje. Tink derom dat dit kommando alles rekursyf sil wiskje files yn 'e build-map, dus brûk it mei foarsichtigens, en de projektkonfiguraasje file sil net wiske wurde.
· idf.py flash: flashing it útfierbere programma binêr file generearre troch build nei it doel ESP32-C3. De opsjes -p en -b wurde brûkt om respektivelik de apparaatnamme fan 'e seriële poarte en de baudrate foar bliksem yn te stellen. As dizze twa opsjes net oantsjutte binne, sil de seriële poarte automatysk ûntdutsen wurde en sil de standert baudrate brûkt wurde.
· idf.py monitor: werjaan fan de seriële poarte útfier fan it doel ESP32-C3. De opsje -p kin brûkt wurde om de apparaatnamme fan 'e seriële poarte fan 'e host-side op te jaan. Druk by it printsjen fan de seriële poarte op de toetskombinaasje Ctrl+] om de monitor te ferlitten.
De boppesteande kommando's kinne ek wurde kombinearre as nedich. Bygelyksample, it kommando idf.py build flash monitor sil útfiere koade kompilaasje, flash, en iepenje de seriële poarte monitor yn folchoarder.
Jo kinne besykje https://bookc3.espressif.com/build-system om mear te witten oer ESP-IDF-kompilaasjesysteem.
4.4 Oefenje: kompilearjen Exampit programma "Blink"
4.4.1 eksample Analyse
Dizze seksje sil it programma Blink nimme as in eksample te analysearjen de file struktuer en kodearring regels fan in echte projekt yn detail. It Blink-programma ymplementearret it LED-knippereffekt, en it projekt leit yn 'e map bglamples/get-started/blink, dy't in boarne befettet file, konfiguraasje files, en ferskate kompilaasje skripts.
It yn dit boek yntrodusearre smart ljocht-projekt is basearre op dizze eksampit programma. Funksjes sille stadichoan tafoege wurde yn lettere haadstikken om it úteinlik te foltôgjen.
Boarnekoade Om it hiele ûntwikkelingsproses te demonstrearjen, is it Blink-programma kopiearre nei esp32c3-iot-projects/device firmware/1 blink.
De mapstruktuer fan it blinkprojekt files wurdt werjûn yn figuer 4.15.
It blink projekt befettet mar ien haadmap, dat is in spesjale komponint dat
Haadstik 4. Untwikkelingsomjouwing ynstelle 53
figuer 4.15. File mapstruktuer fan it blinkprojekt
moat opnommen wurde lykas beskreaun yn paragraaf 4.3.2. De haadmap wurdt benammen brûkt om de ymplemintaasje fan de funksje app_main() op te slaan, dat is it yngongspunt foar it brûkersprogramma. It blinkprojekt befettet de komponintenmap net, om't dizze eks.ample hoecht allinich de komponinten te brûken dy't komme mei ESP-IDF en hat gjin ekstra komponinten nedich. De CMakeLists.txt opnommen yn it blinkprojekt wurdt brûkt om it kompilaasjeproses te begelieden, wylst Kconfig.projbuild wurdt brûkt om konfiguraasje-items foar dizze eks ta te foegjenampit programma yn menuconfig. Oare net nedich files sil gjin ynfloed op de kompilaasje fan de koade, sadat se sille net besprutsen hjir. In detaillearre ynlieding op it blinkprojekt files is as folget.
1. /*blink.c befettet de folgjende koptekst files*/
2. #omfette
// Standert C bibleteek header file
3. #include "freertos/freeRTOS.h" // FreeRTOS haadkop file
4. #include "freertos/task.h"
//FreeRTOS Task header file
5. #include "sdkconfig.h"
// Konfiguraasje header file oanmakke troch kconfig
6. #include "driver/gpio.h"
//GPIO stjoerprogramma header file
De boarne file blink.c befettet in rige fan header files oerienkomme mei funksje declara-
tions. ESP-IDF folget algemien de folchoarder fan it opnimmen fan standert bibleteekkop files, FreeR-
TOS header files, bestjoerder header files, oare komponint header files, en projekt header files.
De folchoarder wêryn koptekst files wurde opnommen kin ynfloed op de definitive kompilaasje resultaat, dus besykje te
folgje de standert regels. Dêrby moat opmurken wurde dat sdkconfig.h wurdt automatysk oanmakke
troch kconfig en kin allinnich ynsteld wurde fia it kommando idf.py menuconfig.
Direkte wiziging fan dizze koptekst file sil oerskreaun wurde.
1. /*Jo kinne de GPIO selektearje dy't oerienkomt mei de LED yn idf.py menuconfig, en it wizigingsresultaat fan menuconfig is dat de wearde fan CONFIG_BLINK
_GPIO sil wizige wurde. Jo kinne ek direkt wizigje de makro definysje
hjir, en feroarje CONFIG_BLINK_GPIO nei in fêste wearde.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main (void)
4. {
5.
/* Konfigurearje IO as de GPIO standertfunksje, ynskeakelje pull-up modus, en
6.
ynput- en útfiermodi útskeakelje*/
7.
gpio_reset_pin(BLINK_GPIO);
54 ESP32-C3 Wireless Adventure: In wiidweidige gids foar IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/* GPIO ynstelle yn útfiermodus*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); wylst(1) {
/*Print log*/ printf ("De LEDn útsette"); /* Skeakelje de LED (útfier leech nivo) */ gpio_set_level (BLINK_GPIO, 0); /*Delay (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf ("De LEDn oansette"); /* Skeakelje de LED (útfier heech nivo) */ gpio_set_level (BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
De funksje app_main() yn 'e Blink example programma tsjinnet as it yngongspunt foar brûkersprogramma's. It is in ienfâldige funksje mei gjin parameters en gjin werom wearde. Dizze funksje wurdt oanroppen neidat it systeem inisjalisaasje foltôge hat, dy't taken omfettet lykas it inisjalisearjen fan de seriële poarte fan it logboek, it konfigurearjen fan ien / dûbele kearn, en it konfigurearjen fan de wachthûn.
De funksje app_main () rint yn 'e kontekst fan in taak mei de namme main. De stack grutte en prioriteit fan dizze taak kin oanpast wurde yn menuconfig Componentconfig Common ESP-relatearre.
Foar ienfâldige taken lykas in LED knipperje, kin al de nedige koade wurde útfierd direkt yn de app_main () -funksje. Dit omfettet typysk it inisjalisearjen fan de GPIO dy't oerienkomt mei de LED en it brûken fan in skoft (1) lus om de LED oan en út te skeakeljen. As alternatyf kinne jo FreeRTOS API brûke om in nije taak te meitsjen dy't de LED-blinker behannelet. Sadree't de nije taak is mei súkses oanmakke, kinne jo ferlitte de app_main () funksje.
De ynhâld fan main/CMakeLists.txt file, dy't it kompilaasjeproses foar de haadkomponint liedt, is as folget:
1. idf_component_register(SRCS "blink.c" INCLUDE_DIRS ".")
Under harren ropt main/CMakeLists.txt mar ien kompilaasjesysteemfunksje, dat is idf_component_register. Fergelykber mei de CMakeLists.txt foar de measte oare komponinten, blink.c wurdt tafoege oan SRCS, en de boarne files tafoege oan SRCS wurdt kompilearre. Tagelyk, ".", dat it paad fertsjintwurdiget wêr't CMakeLists.txt leit, moat wurde tafoege oan INCLUDE_DIRS as de sykmappen foar koptekst files. De ynhâld fan CMakeLists.txt is as folget:
1. # Spesifisearje v3.5 as de âldste CMake ferzje stipe troch it hjoeddeiske projekt 2. # Ferzjes leger as v3.5 moatte opwurdearre wurde foardat kompilaasje trochgean -IDF kompilaasje systeem
Haadstik 4. Untwikkelingsomjouwing ynstelle 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Create a project named "blink" 7. project(myProject)
Under harren omfettet de CMakeLists.txt yn 'e root-map benammen $ENV{IDF_ PATH}/tools/cmake/project.cmake, dat is de haad CMake-konfiguraasje file fersoarge troch ESP-IDF. It wurdt brûkt om con
Dokuminten / Resources
![]() |
Espressif Systems ESP32-C3 Wireless Adventure [pdf] Brûkersgids ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure |