ESP32-C3 Wireless Adventure

ESP32-C3 Wireless Adventure

Pituduh Komprehensif pikeun IoT

Sistem Espressif 12 Juni 2023

spésifikasi

  • produk: ESP32-C3 Wireless Adventure
  • Produsén: Sistem Espressif
  • Tanggal: 12 Juni 2023

Parentah Pamakéan Produk

Persiapan

Sateuacan nganggo ESP32-C3 Wireless Adventure, pastikeun anjeun
akrab sareng konsép sareng arsitéktur IoT. Ieu bakal nulungan
anjeun ngartos kumaha alat cocog kana ékosistem IoT gedé
sarta aplikasi poténsi na di imah pinter.

Bubuka sareng Praktek Proyék IoT

Dina bagian ieu, anjeun bakal diajar ngeunaan proyék IoT has,
kaasup modul dasar pikeun alat IoT umum, modul dasar
tina aplikasi klien, sareng platform awan IoT umum. Ieu bakal
nyadiakeun Anjeun sareng yayasan pikeun pamahaman jeung nyieun Anjeun
proyék IoT sorangan.

Prakték: Proyék Lampu Smart

Dina proyék prakték ieu, anjeun bakal diajar kumaha carana nyieun pinter
cahaya ngagunakeun ESP32-C3 Wireless Adventure. Struktur proyék,
fungsi, persiapan hardware, sarta prosés ngembangkeun bakal
dipedar sacara rinci.

Struktur Proyék

Proyék diwangun ku sababaraha komponén, kalebet
ESP32-C3 Petualangan Nirkabel, LED, sénsor, sareng méga
tonggong.

Fungsi Proyék

Proyék lampu pinter ngamungkinkeun anjeun ngadalikeun kacaangan sareng
warna LEDs jarak jauh ngaliwatan aplikasi mobile atawa web
panganteur.

Persiapan hardware

Pikeun nyiapkeun proyék, anjeun bakal kedah ngumpulkeun éta
komponén hardware diperlukeun, kayaning ESP32-C3 Wireless
Papan petualangan, LED, résistor, sareng catu daya.

Prosés Pangwangunan

Prosés pangwangunan ngalibatkeun netepkeun pangwangunan
lingkungan, nulis kode pikeun ngadalikeun LEDs, nyambungkeun ka
backend awan, sarta nguji fungsionalitas nu pinter
cahayaan.

Bubuka pikeun ESP RainMaker

ESP RainMaker mangrupikeun kerangka anu kuat pikeun ngembangkeun IoT
alat-alat. Dina bagian ieu, anjeun bakal diajar naon ESP RainMaker na
kumaha eta bisa dilaksanakeun dina proyék Anjeun.

Naon ari ESP RainMaker?

ESP RainMaker mangrupikeun platform dumasar-awan anu nyayogikeun sakumpulan
alat sareng jasa pikeun ngawangun sareng ngatur alat IoT.

Palaksanaan ESP RainMaker

Bagian ieu ngécéskeun komponén béda aub dina
ngalaksanakeun ESP RainMaker, kalebet jasa klaim,
Agen RainMaker, backend awan, sareng Klién RainMaker.

Prakték: Titik konci pikeun Ngembangkeun sareng ESP RainMaker

Dina bagian prakték ieu, anjeun bakal diajar ngeunaan titik konci pikeun
mertimbangkeun nalika ngamekarkeun kalawan ESP RainMaker. Ieu kalebet alat
klaim, sinkronisasi data, sareng manajemén pangguna.

Fitur tina ESP RainMaker

ESP RainMaker nawarkeun rupa fitur pikeun manajemén pamaké, tungtung
pamaké, jeung pangurus. Fitur ieu ngamungkinkeun alat gampang
setelan, kadali jauh, jeung ngawaskeun.

Nyetél Lingkungan Pangwangunan

bagian ieu nyadiakeun leuwihview tina ESP-IDF (Espressif IoT
Kerangka Pangembangan), anu mangrupikeun kerangka pangwangunan resmi
pikeun alat basis ESP32. Ieu ngécéskeun versi béda tina
ESP-IDF sareng kumaha nyetél lingkungan pangwangunan.

Hardware jeung Pangwangunan Supir

Desain Hardware Produk Lampu Smart dumasar kana ESP32-C3

Bagian ieu museurkeun kana desain hardware lampu pinter
produk dumasar kana ESP32-C3 Wireless Adventure. Ieu ngawengku
fitur sarta komposisi produk lampu pinter, kitu ogé
desain hardware tina sistem inti ESP32-C3.

Fitur sarta Komposisi Produk Lampu Smart

Subsection ieu ngajelaskeun fitur sareng komponén anu ngadamel
nepi produk lampu pinter. Ieu ngabahas fungsi béda
jeung pertimbangan desain pikeun nyieun lampu pinter.

Desain Hardware of ESP32-C3 Core System

Desain hardware sistem inti ESP32-C3 ngawengku kakuatan
suplai, runtuyan kakuatan-on, reset sistem, lampu kilat SPI, sumber jam,
jeung pertimbangan RF jeung anteneu. subsection ieu nyadiakeun
inpo wincik dina aspék ieu.

FAQ

Q: Naon ESP RainMaker?

A: ESP RainMaker mangrupikeun platform dumasar-awan anu nyayogikeun alat
sareng jasa pikeun ngawangun sareng ngatur alat IoT. Ieu simplifies
prosés ngembangkeun sarta ngamungkinkeun pikeun gampang setelan alat, jauh
kontrol, jeung monitoring.

Q: Kumaha carana abdi tiasa nyetél lingkungan ngembangkeun pikeun
ESP32-C3?

A: Pikeun nyetél lingkungan ngembangkeun pikeun ESP32-C3, anjeun peryogi
pikeun masang ESP-IDF (Espressif IoT Development Framework) jeung
ngonpigurasikeun eta nurutkeun parentah disadiakeun. ESP-IDF nyaéta
kerangka ngembangkeun resmi pikeun alat basis ESP32.

Q: Naon fitur ESP RainMaker?

A: ESP RainMaker nawarkeun rupa fitur, kaasup pamaké
manajemén, fitur pamaké tungtung, sarta fitur admin. manajemén pamaké
ngamungkinkeun pikeun ngaku alat gampang tur sinkronisasi data. Pamaké ahir
fitur ngaktifkeun kadali jauh alat ngaliwatan aplikasi mobile atawa
web panganteur. Fitur Admin nyayogikeun alat pikeun ngawaskeun alat
jeung manajemén.

ESP32-C3 Wireless Adventure
Pituduh Komprehensif pikeun IoT
Sistem Espressif 12 Juni 2023

eusi

I Persiapan

1

1 Bubuka pikeun IoT

3

1.1 Arsitéktur IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Aplikasi IoT di Smart Homes. . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Perkenalan sareng Praktek Proyék IoT

9

2.1 Perkenalan kana Proyék IoT Biasa. . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Modul dasar pikeun Alat IoT umum. . . . . . . . . . . . . . . . . 9

2.1.2 Modul Dasar Aplikasi Klién. . . . . . . . . . . . . . . . . . . 10

2.1.3 Perkenalan kana Platform Awan IoT Umum. . . . . . . . . . . . . . 11

2.2 Prakték: Proyék Lampu Smart. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Struktur Proyék. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Fungsi Proyék. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Persiapan Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Prosés Pangwangunan. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Bubuka pikeun ESP RainMaker

19

3.1 Naon ari ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Palaksanaan ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Ngaku Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 RainMaker Agen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.3 Awan Backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 Klién RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Praktek: Titik konci pikeun Ngembangkeun sareng ESP RainMaker. . . . . . . . . . . . 25

3.4 Fitur ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.1 Manajemén pamaké. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Fitur Pamaké Ahir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.4.3 Fitur Admin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.5 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Nyetél Lingkungan Pangwangunan

31

4.1 ESP-IDF Leuwihview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Vérsi ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 ESP-IDF Git Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Milih Vérsi nu Cocog. . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Leuwihview tina ESP-IDF SDK Diréktori. . . . . . . . . . . . . . . . . . . . 34 4.2 Nyetél Lingkungan Pangembangan ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Nyetél Lingkungan Pangembangan ESP-IDF dina Linux. . . . . . . . 38 4.2.2 Nyetél Lingkungan Pangembangan ESP-IDF dina Windows . . . . . . 40 4.2.3 Nyetél Lingkungan Pangembangan ESP-IDF dina Mac . . . . . . . . . 45 4.2.4 Masang VS Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Bubuka ka Lingkungan Pangwangunan Pihak Katilu. . . . . . . . 46 4.3 Sistem Kompilasi ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Konsép Dasar Sistem Kompilasi. . . . . . . . . . . . . . . . . . 47 4.3.2 Proyék File Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Aturan Ngawangun Default tina Sistem Kompilasi. . . . . . . . . . . . . 50 4.3.4 Bubuka Naskah Panyusun . . . . . . . . . . . . . . . . . . 51 4.3.5 Bubuka Paréntah Umum. . . . . . . . . . . . . . . . . . . 52 4.4 Prakték: Nyusun ExampProgram "Blink". . . . . . . . . . . . . . . . . . 53 4.4.1 Misalampjeung Analisis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Nyusun Program Blink. . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Kedip-kedip Program Blink. . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analisis Log Port Serial tina Program Blink. . . . . . . . . . . . . . 60 4.5 Ihtisar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Hardware jeung Pangwangunan Supir

65

5 Desain Hardware Produk Lampu Smart dumasar kana ESP32-C3

67

5.1 Fitur jeung Komposisi Produk Smart Light. . . . . . . . . . . . . . . 67

5.2 Desain Hardware of ESP32-C3 Core System. . . . . . . . . . . . . . . . . . . 70

5.2.1 Catu daya. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Power-on runtuyan jeung System Reset. . . . . . . . . . . . . . . . . . 74

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

5.2.4 Sumber Jam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.2.5 RF jeung anteneu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Strapping Pin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 GPIO jeung PWM controller. . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Prakték: Ngawangun Sistem Lampu Smart sareng ESP32-C3. . . . . . . . . . . . . 80

5.3.1 Milih Modul. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 Ngonpigurasikeun GPIOs sinyal PWM. . . . . . . . . . . . . . . . . . . . 82

5.3.3 Ngundeur Firmware jeung Debugging Interface. . . . . . . . . . . . 82

5.3.4 Pedoman pikeun Desain RF. . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Pituduh pikeun Desain Catu Daya. . . . . . . . . . . . . . . . . . . 86 5.4 Ihtisar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Pangwangunan supir

87

6.1 Prosés Pangwangunan Supir. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.2 ESP32-C3 Aplikasi Periferal. . . . . . . . . . . . . . . . . . . . . . . . . 88

6.3 Dasar Supir LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Warna Spasi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 Supir LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 LED dimming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 Bubuka PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 Pangwangunan Supir Dimming LED. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Panyimpenan Non-Volatile (NVS). . . . . . . . . . . . . . . . . . . . . . . . 97

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

6.4.3 LED PWM Programming. . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Prakték: Nambahkeun Supir kana Proyék Smart Light. . . . . . . . . . . . . . . . . 103

6.5.1 Tombol Supir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 LED Dimming Supir. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III Komunikasi nirkabel sarta Control

109

7 Konfigurasi sareng Sambungan Wi-Fi

111

7.1 Dasar Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.1 Bubuka Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 Évolusi IEEE 802.11. . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.3 Konsep Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.1.4 Sambungan Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7.2 Dasar-dasar Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

7.2.1 Bubuka pikeun Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Konsép Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 Sambungan Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7.3 Konfigurasi Jaringan Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.3.1 Pituduh Konfigurasi Jaringan Wi-Fi. . . . . . . . . . . . . . . . . . . . 131

7.3.2 SoftAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.3 SmartConfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.3.5 Métode séjén. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 Pemrograman Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Komponén Wi-Fi dina ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Latihan: Sambungan Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Latihan: Sambungan Wi-Fi Smart . . . . . . . . . . . . . . . . . . . . . 145
7.5 Prakték: Konfigurasi Wi-Fi dina Proyék Lampu Smart. . . . . . . . . . . . . . . 156 7.5.1 Sambungan Wi-Fi dina Smart Light Project. . . . . . . . . . . . . . . . . 156 7.5.2 Konfigurasi Wi-Fi Smart. . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Kontrol Lokal

159

8.1 Bubuka pikeun Control Lokal. . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Aplikasi Kontrol Lokal. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 Advantages tina Kontrol Lokal. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Ngajalajah Alat anu Dikadalikeun ngalangkungan Smartphone . . . . . . . . . . 161

8.1.4 Komunikasi Data Antara Smartphone jeung Alat. . . . . . . . 162

8.2 Métode Papanggihan Lokal Umum. . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Panyiaran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

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

8.2.3 Babandingan Antara Panyiaran jeung Multicast. . . . . . . . . . . . . . 176

8.2.4 Protokol Aplikasi Multicast mDNS pikeun Papanggihan Lokal. . . . . . . . 176

8.3 Protokol Komunikasi Umum pikeun Data Lokal. . . . . . . . . . . . . . . 179

8.3.1 Transmission Control Protocol (TCP). . . . . . . . . . . . . . . . . . . 179

8.3.2 HyperText Transfer Protocol (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Pamaké DatagProtokol ram (UDP). . . . . . . . . . . . . . . . . . . . . . 189

8.3.4 Protokol Aplikasi Konstrain (CoAP). . . . . . . . . . . . . . . . 192

8.3.5 Protokol Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

8.3.6 Ringkesan Protokol Komunikasi Data. . . . . . . . . . . . . . . 203

8.4 Jaminan Kaamanan Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Bubuka pikeun Transport Layer Security (TLS). . . . . . . . . . . . . 207

8.4.2 Bubuka Datagram Transport Layer Security (DTLS) . . . . . . . 213

8.5 Prakték: Kontrol Lokal dina Proyék Lampu Smart. . . . . . . . . . . . . . . . . . 217

8.5.1 Nyiptakeun Server Kontrol Lokal basis Wi-Fi. . . . . . . . . . . . . . . 217

8.5.2 Verifikasi Fungsionalitas Control Lokal ngagunakeun Aksara. . . . . . . . . . . 221

8.5.3 Nyieun Server Control Lokal basis Bluetooth. . . . . . . . . . . . 222

8.6 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Kadali awan

225

9.1 Bubuka pikeun Remote Control. . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Protokol Komunikasi Data Awan. . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 MQTT Bubuka. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Prinsip MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Format Pesen MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Babandingan Protokol. . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Nyetél calo MQTT dina Linux jeung Windows . . . . . . . . . . . . 233 9.2.6 Nyetel klien MQTT Dumasar ESP-IDF. . . . . . . . . . . . . . . . 235 9.3 Mastikeun Kaamanan Data MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Harti jeung Fungsi Sertipikat . . . . . . . . . . . . . . . . . . . 237 9.3.2 Ngahasilkeun Sértipikat Lokal. . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Ngonpigurasikeun calo MQTT. . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Ngonpigurasikeun MQTT Client. . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Prakték: Kadali Jauh ngalangkungan ESP RainMaker. . . . . . . . . . . . . . . . 243 9.4.1 Dasar ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Node jeung Cloud Backend Communication Protocol. . . . . . . . . . . 244 9.4.3 Komunikasi antara Klién jeung Cloud Backend. . . . . . . . . . . 249 9.4.4 Kalungguhan Pamaké. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Palayanan Dasar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Smart Light Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplikasi RainMaker sareng Integrasi Pihak Katilu. . . . . . . . . . . . . . . 262 9.5 Ihtisar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Pangwangunan Aplikasi smartphone

269

10.1 Bubuka pikeun Pangwangunan Aplikasi Smartphone. . . . . . . . . . . . . . . . . . 269

10.1.1 Leuwihview tina Pangwangunan Aplikasi Smartphone. . . . . . . . . . . . . . . 270

10.1.2 Struktur Proyék Android . . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 Struktur Proyék ios. . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Daur hirup hiji Kagiatan Android . . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 Daur hirup ios ViewController . . . . . . . . . . . . . . . . . . . . . . 273

10.2 Nyiptakeun Proyék Aplikasi Smartphone Anyar. . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Nyiapkeun pikeun Pangwangunan Android . . . . . . . . . . . . . . . . . . . 275

10.2.2 Nyiptakeun Proyék Android Anyar . . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 Nambahkeun Depéndensi pikeun MyRainmaker. . . . . . . . . . . . . . . . . 276

10.2.4 Paménta Idin dina Android . . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Nyiapkeun pikeun Pangwangunan ios. . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Nyieun Proyék ios Anyar. . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 Nambahkeun Depéndensi pikeun MyRainmaker. . . . . . . . . . . . . . . . . 279

10.2.8 Paménta Idin dina ios. . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 Analisis Sarat Fungsional Aplikasi. . . . . . . . . . . . . . . . . . 281

10.3.1 Analisis Sarat Fungsional Proyék. . . . . . . . . . . . 282

10.3.2 Analisis Syarat Manajemén Pamaké. . . . . . . . . . . . . . . 282 10.3.3 Analisis Provisioning Alat jeung Sarat mengikat. . . . . . . 283 10.3.4 Analisis Syarat Remote-Control. . . . . . . . . . . . . . . . 283 10.3.5 Analisis Sarat Jadwal. . . . . . . . . . . . . . . . . . . 284 10.3.6 Analisis Sarat Puseur Pamaké. . . . . . . . . . . . . . . . . . 285 10.4 Ngembangkeun Manajemén Pamaké. . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Bubuka pikeun RainMaker API. . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Ngamimitian Komunikasi via Smartphone . . . . . . . . . . . . . . . . 286 10.4.3 Pendaptaran Akun. . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Asup Rekening. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Ngembangkeun Provisioning Alat. . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Alat Nyeken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Nyambungkeun Alat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Ngahasilkeun konci Rusiah. . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Meunangkeun Node ID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Paranti Provisioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Pangwangunan Kontrol Alat. . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Ngabeungkeut Alat ka Akun Awan . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Meunang Daptar Alat . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Meunangkeun Status Alat . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Ngarobah Status Alat. . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Ngembangkeun Penjadwalan sareng Pusat Pamaké. . . . . . . . . . . . . . . . . . . 313 10.7.1 Nerapkeun Fungsi Penjadwalan. . . . . . . . . . . . . . . . . . . . 313 10.7.2 Ngalaksanakeun Puseur Pamaké. . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Langkung Awan API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Ihtisar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11 Ningkatkeun firmware sareng Manajemén Vérsi

321

11.1 Ningkatkeun firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

11.1.1 Leuwihview tina Méja Partisi. . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Prosés boot firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Leuwihview tina Mékanisme OTA. . . . . . . . . . . . . . . . . . . . . 326

11.2 Manajemén Vérsi firmware. . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Firmware nyirian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Rollback jeung Anti Rollback. . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Prakték: Over-the-air (OTA) Example . . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Ningkatkeun Firmware Ngaliwatan Host Lokal. . . . . . . . . . . . . . . . . 332

11.3.2 Ningkatkeun firmware Ngaliwatan ESP RainMaker. . . . . . . . . . . . . . . 335

11.4 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Optimasi sarta Produksi Massal

343

12 Manajemén kakuatan sarta Optimasi Low-Power

345

12.1 ESP32-C3 Manajemén kakuatan. . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Skala Frékuénsi Dinamis. . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Konfigurasi Manajemén kakuatan. . . . . . . . . . . . . . . . . . . . 348

12.2 ESP32-C3 Low-Power Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Modem-sare mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Modeu sare lampu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Modeu sare jero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Konsumsi Ayeuna dina Modeu Daya Béda. . . . . . . . . . . . . 358

12.3 Power Manajemén jeung Low-Power Debugging. . . . . . . . . . . . . . . . . 359

12.3.1 Log Debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

12.3.2 GPIO Debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

12.4 Prakték: Manajemén Daya dina Proyék Lampu Smart. . . . . . . . . . . . . . . 363

12.4.1 Ngonpigurasikeun Fitur Manajemén Daya. . . . . . . . . . . . . . . . . 364

12.4.2 Paké Konci Manajemén Daya. . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Verifikasi Konsumsi Daya. . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Fitur Kaamanan Alat Ditingkatkeun

369

13.1 Leuwihview tina Kaamanan Data Alat IoT. . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 Naha Ngamankeun Data Alat IoT? . . . . . . . . . . . . . . . . . . . . . . 370

13.1.2 Syarat Dasar pikeun Kaamanan Data Alat IoT. . . . . . . . . . . . 371

13.2 Perlindungan Integritas Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

13.2.1 Bubuka Métode Verifikasi Integritas. . . . . . . . . . . . . . 372

13.2.2 Verifikasi Integritas Data Firmware. . . . . . . . . . . . . . . . . . 373

13.2.3 Kelample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Perlindungan Rahasia Data. . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Bubuka pikeun Énkripsi Data. . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Bubuka Skéma Énkripsi Flash. . . . . . . . . . . . . . . . . 376

13.3.3 Panyimpenan Key Enkripsi Flash. . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Modeu Gawé tina Énkripsi Flash. . . . . . . . . . . . . . . . . . . . 380

13.3.5 Prosés Énkripsi Flash. . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 Bubuka keur NVS Énkripsi. . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 Kelamples of Flash Énkripsi sarta NVS Énkripsi. . . . . . . . . . . 384

13.4 Perlindungan Legitimasi Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

13.4.1 Bubuka pikeun Digital Signature. . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Leuwihview tina Skéma Boot Aman. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Bubuka pikeun Software Boot Aman. . . . . . . . . . . . . . . . . . . 388 13.4.4 Bubuka pikeun Hardware Boot Aman. . . . . . . . . . . . . . . . . . 390 13.4.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Prakték: Fitur Kaamanan Dina Produksi Massal. . . . . . . . . . . . . . . . . . 396 13.5.1 Énkripsi Flash sareng Boot Aman. . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Aktipkeun Énkripsi Flash sareng Boot Aman sareng Parabot Flash Angkatan. . 397 13.5.3 Aktipkeun Énkripsi Flash sareng Boot Aman dina Proyék Smart Light. . . 398 13.6 Ihtisar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Firmware ngaduruk jeung Nguji pikeun Produksi Massal

399

14.1 Ngaduruk firmware dina Produksi Massal. . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Nangtukeun Partitions Data. . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Ngaduruk firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Uji Produksi Massal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Prakték: Data Produksi Massal dina Proyék Cahaya Smart. . . . . . . . . . . . . 404

14.4 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 ESP Insights: Platform Pangimeutan Jauh

405

15.1 Bubuka keur ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 Ngamimitian sareng ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 Ngamimitian sareng ESP Insights dina Proyék esp-insights. . . . . . 409

15.2.2 Ngajalankeun Example dina esp-wawasan Project. . . . . . . . . . . . . . . 411

15.2.3 Ngalaporkeun Inpormasi Coredump. . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Ngaropea Log dipikaresep. . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Ngalaporkeun Reboot Alesan. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Ngalaporkeun Métrik Adat. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Praktek: Ngagunakeun ESP Insights dina Smart Light Project. . . . . . . . . . . . . . . 416

15.4 Ringkesan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Bubuka
ESP32-C3 nyaéta Wi-Fi single-core sareng Bluetooth 5 (LE) mikrokontroler SoC, dumasar kana arsitektur open-source RISC-V. Éta nyerang kasaimbangan kakuatan anu leres, kamampuan I / O, sareng kaamanan, sahingga nawiskeun solusi anu paling efektif pikeun alat anu nyambung. Pikeun nunjukkeun rupa-rupa aplikasi tina kulawarga ESP32-C3, buku ku Espressif ieu bakal mawa anjeun dina perjalanan anu pikaresepeun ngalangkungan AIoT, mimitian ti dasar-dasar pangwangunan proyék IoT sareng setelan lingkungan dugi ka mantan praktis.amples. Opat bab mimiti ngobrol ngeunaan IoT, ESP RainMaker sareng ESP-IDF. Bab 5 sareng 6 ringkes ngeunaan desain hardware sareng pamekaran supir. Nalika anjeun maju, anjeun bakal mendakan kumaha ngonpigurasikeun proyék anjeun ngalangkungan jaringan Wi-Fi sareng Aplikasi seluler. Tungtungna, anjeun bakal diajar ngaoptimalkeun proyék anjeun sareng nempatkeun kana produksi masal.
Upami anjeun insinyur dina widang anu aya hubunganana, arsiték parangkat lunak, guru, murid, atanapi saha waé anu resep kana IoT, buku ieu kanggo anjeun.
Anjeun tiasa ngundeur kode example dipaké dina buku ieu ti situs Espressif on GitHub. Kanggo inpormasi panganyarna ngeunaan pamekaran IoT, mangga tuturkeun akun resmi kami.

Mukadimah
Dunya Informatisasi
Nunggang gelombang Internét, Internet of Things (IoT) ngadamel debut anu hébat pikeun janten jinis infrastruktur anyar dina ékonomi digital. Pikeun ngadeukeutkeun téknologi ka masarakat, Sistem Espressif dianggo pikeun visi yén pamekar ti sagala lapisan kahirupan tiasa nganggo IoT pikeun ngarengsekeun sababaraha masalah anu paling mendesak di jaman urang. Dunya "Jaringan Cerdas Sadayana" mangrupikeun anu urang ngarepkeun ti payun.
Ngarancang chip urang sorangan ngajadikeun komponén kritis visi éta. Éta janten marathon, ngabutuhkeun terobosan konstan ngalawan wates téknologi. Tina "Game Changer" ESP8266 ka séri ESP32 anu ngahijikeun Wi-Fi sareng Bluetoothr (LE) konektipitas, dituturkeun ku ESP32-S3 anu dilengkepan ku akselerasi AI, Espressif henteu kantos lirén nalungtik sareng ngembangkeun produk pikeun solusi AIoT. Kalayan parangkat lunak open-source kami, sapertos IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF, sareng Device Connectivity Platform ESP RainMaker, kami parantos nyiptakeun kerangka mandiri pikeun ngawangun aplikasi AIoT.
Nepi ka Juli 2022, kiriman kumulatif tina chipset IoT Espressif parantos langkung ti 800 juta, nuju di pasar Wi-Fi MCU sareng nyayogikeun sajumlah ageung alat anu nyambung di dunya. Ngudag pikeun kaunggulan ngajadikeun unggal produk Espressif hit badag pikeun tingkat luhur integrasi sarta efisiensi ongkos. Pelepasan ESP32-C3 nandaan tonggak penting tina téknologi anu dikembangkeun ku diri Espressif. Ieu mangrupakeun single-core, 32-bit, basis RISC-V MCU kalawan 400KB SRAM, nu bisa ngajalankeun dina 160MHz. Éta parantos ngahijikeun Wi-Fi 2.4 GHz sareng Bluetooth 5 (LE) kalayan dukungan jarak jauh. Éta nyerang kasaimbangan kakuatan anu saé, kamampuan I / O, sareng kaamanan, sahingga nawiskeun solusi biaya-éféktif anu optimal pikeun alat anu nyambung. Dumasar kana ESP32-C3 anu kuat sapertos kitu, buku ieu dimaksudkeun pikeun ngabantosan pamiarsa ngartos pangaweruh anu aya hubunganana sareng IoT kalayan ilustrasi anu lengkep sareng mantan praktis.amples.
Naha urang nyerat buku ieu?
Espressif Systems leuwih ti hiji pausahaan semikonduktor. Éta ogé perusahaan platform IoT, anu salawasna narékahan pikeun terobosan sareng inovasi dina widang téknologi. Dina waktos anu sami, Espressif gaduh sumber terbuka sareng ngabagi sistem operasi sareng kerangka parangkat lunak anu dikembangkeun ku masarakat sareng komunitas, ngabentuk ékosistem anu unik. Insinyur, produsén, sareng peminat téknologi aktip ngembangkeun aplikasi parangkat lunak énggal dumasar kana produk Espressif, sacara bébas komunikasi, sareng ngabagi pangalamanana. Anjeun tiasa ningali ideu anu pikaresepeun pikeun pamekar dina sagala rupa platform unggal waktos, sapertos YouTube sareng GitHub. Popularitas produk Espressif parantos ngarangsang paningkatan jumlah pangarang anu parantos ngahasilkeun langkung ti 100 buku dumasar kana chipset Espressif, dina langkung ti sapuluh basa, kalebet Inggris, Cina, Jerman, Perancis, sareng Jepang.

Pangrojong sareng kapercayaan mitra komunitas anu nyorong inovasi kontinyu Espressif. "Kami narékahan pikeun ngajantenkeun chip, sistem operasi, kerangka kerja, solusi, Awan, prakték bisnis, alat, dokuméntasi, tulisan, ideu, sareng sajabana, langkung relevan pikeun jawaban anu diperyogikeun ku jalma dina masalah anu paling mendesak dina kahirupan kontemporer. Ieu mangrupikeun ambisi pangluhurna Espressif sareng kompas moral. ceuk Bapak Teo Swee Ann, Pangadeg sarta CEO Espressif.
nilai espressif bacaan jeung gagasan. Kusabab paningkatan téknologi IoT anu terus-terusan nyababkeun syarat anu langkung luhur pikeun insinyur, kumaha urang tiasa ngabantosan langkung seueur jalma pikeun gancang ngawasa chip IoT, sistem operasi, kerangka parangkat lunak, skéma aplikasi sareng produk jasa awan? Sakumaha paribasa, langkung saé ngajar lalaki kumaha carana mancing tibatan masihan lauk. Dina sési brainstorming, urang mikir yén urang tiasa nyerat buku pikeun sacara sistematis nyortir pangaweruh konci pangembangan IoT. Urang pencét éta, gancang ngumpul sakelompok insinyur senior, sareng ngagabungkeun pangalaman tim téknis dina program anu dipasang, hardware IoT sareng pamekaran parangkat lunak, sadayana nyumbang kana penerbitan buku ieu. Dina prosés nulis, urang diusahakeun pangalusna kami jadi obyektif jeung adil, dilucuti tina kepompong, sarta ngagunakeun ungkapan singket pikeun ngabejaan pajeulitna sarta pesona Internet of Things. Kami sacara saksama nyimpulkeun patarosan umum, ngarujuk kana eupan balik sareng bongbolongan masarakat, supados jelas ngajawab patarosan anu aya dina prosés pangwangunan, sareng nyayogikeun pedoman pangembangan IoT praktis pikeun teknisi anu relevan sareng pembuat kaputusan.
Struktur Buku
Buku ieu nyandak sudut pandang anu dipuseurkeun ku insinyur sareng ngajelaskeun pangaweruh anu dipikabutuh pikeun pangwangunan proyék IoT léngkah-léngkah. Ieu diwangun ku opat bagian, saperti kieu:
· Persiapan (Bab 1): Bagian ieu ngenalkeun arsitéktur IoT, kerangka proyék IoT has, platform awan ESP RainMakerr, sareng lingkungan pangembangan ESP-IDF, ku kituna nempatkeun dasar anu padet pikeun pangwangunan proyék IoT.
· Hardware sareng Pangembangan Supir (Bab 5): Dumasar kana chipset ESP6-C32, bagian ieu ngajelaskeun sistem hardware minimum sareng pamekaran supir, sareng ngalaksanakeun kadali dimming, grading warna, sareng komunikasi nirkabel.
· Komunikasi sareng Kontrol Nirkabel (Bab 7): Bagian ieu ngajelaskeun skéma konfigurasi Wi-Fi calakan dumasar kana chip ESP11-C32, protokol kontrol lokal & awan, sareng kadali alat lokal & jauh. Éta ogé nyayogikeun skéma pikeun ngembangkeun aplikasi smartphone, pamutahiran firmware, sareng manajemén versi.
· Optimasi sareng Produksi Massal (Bab 12-15): Bagian ieu dimaksudkeun pikeun aplikasi IoT canggih, fokus kana optimasi produk dina manajemén kakuatan, optimasi kakuatan rendah, sareng kaamanan ditingkatkeun. Ogé ngenalkeun firmware ngaduruk sareng nguji dina produksi masal, sareng kumaha cara ngadiagnosa status jalan sareng log firmware alat ngalangkungan platform ngawaskeun jauh ESP Insights.

Ngeunaan Kodeu Sumber
Pamiarsa tiasa ngajalankeun example program dina buku ieu, boh ku cara nuliskeun kode sacara manual atawa ku ngagunakeun kode sumber nu marengan buku. Kami ngantebkeun kombinasi téori sareng prakték, sahingga nyetél bagian Praktek dumasar kana proyék Smart Light dina ampir unggal bab. Sadaya kodeu open-sourced. Pamiarsa wilujeng sumping pikeun ngaunduh kodeu sumber sareng ngabahas éta dina bagian anu aya hubunganana sareng buku ieu dina GitHub sareng forum resmi kami esp32.com. Kodeu sumber terbuka tina buku ieu tunduk kana syarat Lisensi Apache 2.0.
Catetan pangarang
Buku ieu sacara resmi diproduksi ku Espressif Systems sareng ditulis ku insinyur senior perusahaan. Éta cocog pikeun manajer sareng tanaga R&D dina industri anu aya hubunganana sareng IoT, guru sareng mahasiswa jurusan anu aya hubunganana, sareng peminat dina widang Internet of Things. Kami ngarepkeun buku ieu tiasa janten buku pedoman kerja, référénsi, sareng buku samping ranjang, janten sapertos pangajar sareng réréncangan anu saé.
Nalika nyusun buku ieu, kami ngarujuk kana sababaraha hasil panalungtikan anu relevan ti para ahli, sarjana, sareng teknisi di bumi sareng di luar negeri, sareng kami ngalakukeun anu pangsaéna pikeun nyebatkeunana dumasar kana norma akademik. Sanajan kitu, teu bisa dihindari yén kudu aya sababaraha omissions, ku kituna di dieu urang hoyong nganyatakeun hormat jero tur sukur ka sadaya pangarang relevan. Sajaba ti éta, kami geus dicutat informasi ti Internet, jadi urang hoyong hatur pangarang aslina sarta penerbit tur hapunten yen urang teu bisa nunjukkeun sumber unggal sapotong informasi.
Dina raraga ngahasilkeun buku kualitas luhur, kami geus dikelompokeun rounds diskusi internal, sarta diajar tina saran jeung eupan balik ti pamiarsa sidang sarta redaktur penerbit. Di dieu, kami hoyong hatur nuhun deui pikeun pitulung anjeun anu sadayana nyumbang kana karya suksés ieu.
Panungtungan, tapi anu paling penting, hatur nuhun ka sadayana di Espressif anu parantos nyambut damel pikeun ngalahirkeun sareng ngapopulerkeun produk urang.
Ngembangkeun proyék IoT ngalibatkeun rupa-rupa pangaweruh. Diwatesan ku panjang buku, kitu ogé tingkat jeung pangalaman pangarang, omissions teu bisa dihindari. Kumargi kitu, simkuring saparakanca nyuhunkeun ka para ahli sareng pamiarsa nyempad sareng ngalereskeun kalepatan simkuring. Upami anjeun ngagaduhan saran pikeun buku ieu, mangga ngahubungi kami di book@espressif.com. Urang ngarepkeun eupan balik anjeun.

Kumaha ngagunakeun buku ieu?
Kodeu proyék dina buku ieu geus open sourced. Anjeun tiasa ngaunduh tina gudang GitHub kami sareng bagikeun pamikiran sareng patarosan anjeun dina forum resmi kami. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Sapanjang buku, bakal aya bagian anu disorot sapertos anu dipidangkeun di handap ieu.
Kode sumber Dina buku ieu, urang ngantebkeun kombinasi téori jeung prakték, sahingga nyetel bagian Praktek ngeunaan proyék Smart Light dina ampir unggal bab. Léngkah anu cocog sareng halaman sumber bakal ditandaan antara dua garis anu dimimitian ku tag Kodeu sumber.
CATETAN / TIPS Ieu dimana anjeun tiasa mendakan sababaraha inpormasi kritis sareng ngingetkeun pikeun suksés nga-debug program anjeun. Aranjeunna bakal ditandaan antara dua garis kandel dimimitian ku tag CATETAN atawa TIPS.
Seuseueurna paréntah dina buku ieu dijalankeun dina Linux, dipicu ku karakter "$". Lamun paréntah merlukeun hak husus superuser sangkan ngaéksekusi, ajakan bakal diganti ku "#". Paréntah ajakan dina sistem Mac nyaéta "%", sakumaha dipaké dina Bagian 4.2.3 Masang ESP-IDF dina Mac.
Teks awak dina buku ieu bakal dicitak dina Piagam, sedengkeun kode examples, komponén, fungsi, variabel, kode file nami, diréktori kode, sareng senar bakal aya dina Kurir Anyar.
Paréntah atanapi téks anu kedah dilebetkeun ku pangguna, sareng paréntah anu tiasa diasupan ku mencét tombol "Asupkeun" bakal dicitak dina Kurir Anyar kandel. Log sareng blok kode bakal dibere dina kotak biru terang.
Example:
Kadua, paké esp-idf/komponén/nvs flash/nvs partisi generator/nvs partition gen.py pikeun ngahasilkeun binér partisi NVS file dina host pangembangan kalayan paréntah di handap ieu:
$ python $IDF PATH/komponén/nvs flash/nvs partisi generator/nvs partisi gen.py –input mass prod.csv –output mass prod.bin –size NVS PARTITION SIZE

Bab 1

Bubuka

ka

IoT

Dina ahir abad ka-20, kalayan ningkatna jaringan komputer sareng téknologi komunikasi, Internét gancang ngahijikeun kana kahirupan masarakat. Nalika téknologi Internét terus dewasa, ideu Internet of Things (IoT) lahir. Sacara harfiah, IoT hartosna Internét dimana hal-hal disambungkeun. Bari Internet aslina megatkeun wates spasi jeung waktu sarta narrows jarak antara "jalma jeung jalma", IoT ngajadikeun "hal" hiji pamilon penting, bringing "jalma" jeung "hal" ngadeukeutan babarengan. Dina mangsa nu bakal datang, IoT disetél pikeun jadi kakuatan panggerak industri informasi.
Janten, naon Internet of Things?
Hésé pikeun nangtoskeun sacara akurat Internet of Things, sabab hartos sareng ruang lingkupna terus-terusan mekar. Dina 1995, Bill Gates mimiti ngajukeun ideu IoT dina bukuna The Road Ahead. Kantun nempatkeun, IoT ngamungkinkeun objék pikeun silih tukeur inpormasi ngaliwatan Internét. Tujuan pamungkasna nyaéta pikeun ngadegkeun "Internét Sadayana". Ieu mangrupikeun interpretasi awal IoT, ogé implengan téknologi masa depan. Tilu puluh taun ti harita, kalayan gancangna ékonomi sareng téknologi, implengan bakal janten kanyataan. Ti alat pinter, imah pinter, kota pinter, Internet of Vehicles jeung alat wearable, nepi ka "metaverse" dirojong ku téknologi IoT, konsép anyar terus muncul. Dina bab ieu, urang bakal dimimitian ku katerangan ngeunaan arsitéktur Internet of Things, lajeng ngenalkeun aplikasi IoT paling umum, imah pinter, guna mantuan Anjeun pikeun meunangkeun pamahaman jelas ngeunaan IoT.
1.1 Arsitéktur IoT
Internet of Things ngalibatkeun sababaraha téknologi anu gaduh kabutuhan sareng bentuk aplikasi anu béda dina industri anu béda. Pikeun nyortir struktur, téknologi konci sareng ciri aplikasi IoT, perlu pikeun ngadegkeun arsitéktur anu ngahijikeun sareng sistem téknis standar. Dina buku ieu, arsitéktur IoT ngan saukur dibagi kana opat lapisan: lapisan persepsi & kontrol, lapisan jaringan, lapisan platform, sareng lapisan aplikasi.
Persépsi & Lapisan Kontrol Salaku unsur paling dasar dina arsitéktur IoT, persépsi & lapisan kontrol nyaéta inti pikeun ngawujudkeun sensing komprehensif ngeunaan IoT. Fungsi utami nyaéta pikeun ngumpulkeun, ngaidentipikasi sareng ngontrol inpormasi. Éta diwangun ku rupa-rupa alat anu gaduh kamampuan persépsi,
3

idéntifikasi, kontrol jeung palaksanaan, sarta tanggung jawab retrieving jeung analisa data kayaning sipat bahan, tren behavioral, sarta status alat. Ku cara kieu, IoT bakal ngakuan dunya fisik anu nyata. Salian ti éta, lapisan ogé tiasa ngontrol status alat.
Alat anu paling umum dina lapisan ieu nyaéta sababaraha sénsor, anu maénkeun peran penting dina pangumpulan inpormasi sareng idéntifikasi. Sénsor téh kawas organ indrawi manusa, saperti sénsor fotosensitif sarua jeung visi, sénsor akustik pikeun dédéngéan, sénsor gas pikeun ngambeu, jeung sénsor sensitip tekenan jeung suhu pikeun nyabak. Kalayan sagala "organ indrawi" ieu, objék jadi "hirup" jeung sanggup persepsi calakan, pangakuan jeung manipulasi dunya fisik.
Lapisan Jaringan Fungsi utama lapisan jaringan nyaéta pikeun ngirimkeun inpormasi, kalebet data anu dicandak tina lapisan persépsi & kontrol ka target anu ditangtukeun, ogé paréntah anu dikaluarkeun tina lapisan aplikasi deui ka lapisan persépsi & kontrol. Éta janten sasak komunikasi penting anu nyambungkeun lapisan anu béda tina sistem IoT. Pikeun nyetél modél dasar tina Internet of Things, éta ngalibatkeun dua léngkah pikeun ngahijikeun objék kana jaringan: aksés ka Internét sareng pangiriman ngalangkungan Internét.
Aksés ka Internét Internét ngamungkinkeun interkonéksi antara jalma sareng jalma, tapi gagal ngalebetkeun hal-hal kana kulawarga ageung. Sateuacan mecenghulna IoT, seueur hal anu henteu "mampuh jaringan". Hatur nuhun kana pamekaran téknologi anu terus-terusan, IoT tiasa nyambungkeun hal-hal ka Internét, sahingga ngawujudkeun interkonéksi antara "jalma sareng hal", sareng "hal sareng hal". Aya dua cara umum pikeun nerapkeun konéksi Internét: aksés jaringan kabel sareng aksés jaringan nirkabel.
Métode aksés jaringan kabel ngawengku Ethernet, komunikasi serial (misalna RS-232, RS-485) jeung USB, sedengkeun aksés jaringan nirkabel gumantung kana komunikasi nirkabel, nu bisa salajengna dibagi kana komunikasi nirkabel jarak pondok jeung komunikasi nirkabel jarak jauh.
Komunikasi nirkabel jarak pondok kalebet ZigBee, Bluetoothr, Wi-Fi, Komunikasi Near-Field (NFC), sareng Radio Frequency Identification (RFID). Komunikasi nirkabel jarak jauh ngawengku Enhanced Machine Type Communication (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, jsb.
Pangiriman ngaliwatan Internét Métode anu béda pikeun aksés Internét nyababkeun tautan pangiriman data fisik anu cocog. Hal salajengna nyaéta mutuskeun protokol komunikasi mana anu dianggo pikeun ngirimkeun data. Dibandingkeun sareng terminal Internét, kalolobaan terminal IoT ayeuna gaduh langkung sakedik
4 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

sumberdaya sadia, kayaning kinerja processing, kapasitas gudang, laju jaringan, jeung sajabana, ku kituna perlu milih protokol komunikasi nu nempatan sumberdaya pangsaeutikna dina aplikasi IoT. Aya dua protokol komunikasi anu loba dipaké kiwari: Message Queuing Telemetry Transport (MQTT) jeung Constrained Application Protocol (CoAP).
Lapisan Platform Lapisan platform utamana nujul kana platform awan IoT. Nalika sadaya terminal IoT aya jaringan, datana kedah dihijikeun dina platform awan IoT pikeun diitung sareng disimpen. Lapisan platform utamina ngadukung aplikasi IoT dina ngagampangkeun aksés sareng ngokolakeun alat anu ageung. Éta nyambungkeun terminal IoT ka platform awan, ngumpulkeun data terminal, sareng ngaluarkeun paréntah ka terminal, supados ngalaksanakeun kadali jauh. Salaku hiji layanan panengah napelkeun parabot pikeun aplikasi industri, lapisan platform muterkeun hiji peran nyambungkeun dina sakabéh arsitéktur IoT, mawa logika bisnis abstrak jeung model data inti standardized, nu teu ngan bisa ngawujudkeun aksés gancang alat, tapi ogé nyadiakeun kamampuhan modular kuat. pikeun minuhan sagala rupa kaperluan dina skenario aplikasi industri. Lapisan platform utamina kalebet modul fungsional sapertos aksés alat, manajemén alat, manajemén kaamanan, komunikasi pesen, operasi sareng pangropéa ngawaskeun, sareng aplikasi data.
· Aksés alat, ngawujudkeun sambungan sareng komunikasi antara terminal sareng platform awan IoT.
· Pangaturan alat, kalebet pungsi sapertos nyiptakeun alat, pangropéa alat, konversi data, sinkronisasi data, sareng distribusi alat.
· Manajemén kaamanan, mastikeun kaamanan pangiriman data IoT tina sudut pandang auténtikasi kaamanan sareng kaamanan komunikasi.
· Komunikasi pesen, kaasup tilu arah pangiriman, nyaeta, terminal ngirimkeun data ka platform awan IoT, platform awan IoT ngirimkeun data ka sisi server atawa platform awan IoT séjén, sarta sisi server jarak jauh ngadalikeun alat IoT.
· Ngawaskeun O&M, ngalibetkeun monitoring sareng diagnosis, pamutahiran firmware, debugging online, jasa log, jsb.
· Aplikasi data, ngalibetkeun neundeun, analisa sareng aplikasi data.
Lapisan Aplikasi Lapisan aplikasi ngagunakeun data tina lapisan platform pikeun ngatur aplikasi, nyaring sareng ngolahna nganggo alat sapertos database sareng parangkat lunak analisis. Data anu dihasilkeun tiasa dianggo pikeun aplikasi IoT dunya nyata sapertos kasehatan pinter, tatanén pinter, imah pinter, sareng kota pinter.
Tangtosna, arsitéktur IoT tiasa dibagi kana langkung seueur lapisan, tapi henteu paduli sabaraha lapisan éta diwangun, prinsip dasarna tetep sami. Diajar
Bab 1. Bubuka pikeun IoT 5

ngeunaan arsitektur IoT mantuan deepen pamahaman kami téknologi IoT sarta ngawangun proyék IoT fungsi pinuh.
1.2 Aplikasi IoT di Smart Homes
IoT parantos nembus ka sadaya lapisan kahirupan, sareng aplikasi IoT anu paling raket patalina sareng kami nyaéta bumi pinter. Seueur alat tradisional ayeuna dilengkepan ku hiji atanapi langkung alat IoT, sareng seueur bumi anu nembé diwangun dirancang kalayan téknologi IoT ti mimiti. Gambar 1.1 nembongkeun sababaraha alat home pinter umum.
Gambar 1.1. Alat home pinter umum Ngembangkeun home pinter bisa saukur dibagi kana produk pinter stage, pamandangan interkonéksi stage jeung calakan stage, ditémbongkeun saperti dina Gambar 1.2.
Gambar 1.2. Pangwangunan stage of home pinter 6 ESP32-C3 Wireless Adventure: A Guide komprehensif pikeun IoT

Nu kahiji stage ngeunaan produk pinter. Béda jeung imah tradisional, di imah pinter, alat IoT narima sinyal jeung sensor, sarta jaringan ngaliwatan téknologi komunikasi nirkabel kayaning Wi-Fi, Bluetooth LE, sarta ZigBee. Pamaké tiasa ngontrol produk pinter dina sababaraha cara, sapertos aplikasi smartphone, asisten sora, kontrol spiker pinter, jsb.tage museurkeun kana interkonéksi pamandangan. Dina s ieutage, pamekar henteu deui tempo ngadalikeun produk pinter tunggal, tapi interconnecting dua atawa leuwih produk pinter, automating ka extent tangtu, sarta tungtungna ngabentuk mode pamandangan custom. Pikeun exampLe, lamun pamaké mencét sagala tombol mode adegan, lampu, curtains, sarta conditioners hawa bakal otomatis diadaptasi kana prasetél. Tangtosna, aya prasyarat yén logika hubungkeun gampang diatur, kalebet kaayaan pemicu sareng tindakan palaksanaan. Bayangkeun yén mode pemanasan AC dipicu nalika suhu jero ruangan turun di handap 10 ° C; yén dina jam 7 isuk-isuk, musik dimaénkeun pikeun hudang pamaké, curtains pinter dibuka, jeung rice cooker atawa roti toaster dimimitian ngaliwatan stop kontak pinter; nalika pangguna gugah sareng réngsé nyeuseuh, sasarap parantos disayogikeun, supados teu aya reureuh dina angkat damel. Kumaha genahna hirup urang! Nu katilu stage mana kana kecerdasan stage. Nalika langkung seueur alat bumi pinter diaksés, ogé jinis data anu dihasilkeun. Kalayan bantosan komputasi awan, data ageung sareng intelijen buatan, éta sapertos "otak anu langkung pinter" parantos ditanam di bumi pinter, anu henteu peryogi deui paréntah sering ti pangguna. Aranjeunna ngumpulkeun data tina interaksi saméméhna sareng diajar pola paripolah sareng karesep pangguna, pikeun ngajadikeun otomatis kagiatan, kalebet nyayogikeun saran pikeun pembuatan kaputusan. Ayeuna, paling imah pinter aya dina pamandangan interconnection stage. Nalika laju penetrasi sareng intelijen produk pinter ningkat, halangan antara protokol komunikasi dileungitkeun. Dina mangsa nu bakal datang, imah pinter kabeungkeut jadi bener "pinter", kawas sistem AI Jarvis dina Iron Man, nu teu ngan bisa mantuan pamaké ngadalikeun sagala rupa alat, nanganan urusan sapopoé, tapi ogé mibanda kakuatan komputasi super jeung kamampuhan pamikiran. Dina s calakantage, manusa bakal meunang palayanan anu hadé boh dina kuantitas boh kualitas.
Bab 1. Bubuka pikeun IoT 7

8 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Bab Bubuka jeung Praktek 2 Proyék IoT
Dina Bab 1, kami ngenalkeun arsitéktur IoT, sareng peran sareng hubungan antar lapisan persépsi & kontrol, lapisan jaringan, lapisan platform, sareng lapisan aplikasi, ogé pamekaran bumi pinter. Nanging, sapertos nalika urang diajar ngalukis, terang pangaweruh téoritis henteu cekap. Urang kedah "ngotorkeun leungeun urang" pikeun ngalaksanakeun proyék IoT pikeun leres-leres ngawasa téknologi. Sajaba ti éta, nalika proyék a ngalir ka produksi masal stage, perlu mertimbangkeun leuwih faktor kayaning sambungan jaringan, konfigurasi, interaksi platform awan IoT, manajemén firmware jeung apdet, manajemén produksi masal, sarta konfigurasi kaamanan. Janten, naon anu urang kedah perhatosan nalika ngembangkeun proyék IoT lengkep? Dina Bab 1, urang disebutkeun yen home pinter mangrupa salah sahiji skenario aplikasi IoT paling umum, jeung lampu pinter mangrupa salah sahiji parabot paling dasar tur praktis, nu bisa dipaké di imah, hotél, gyms, rumah sakit, jsb Ku alatan éta, dina buku ieu, urang bakal nyandak pangwangunan hiji proyék lampu pinter salaku titik awal, ngajelaskeun komponén sarta fitur, sarta nyadiakeun hidayah on ngembangkeun proyék. Kami ngarepkeun anjeun tiasa nyandak kasimpulan tina hal ieu pikeun nyiptakeun langkung seueur aplikasi IoT.
2.1 Perkenalan kana Proyék IoT Biasa
Dina hal pamekaran, modul fungsional dasar proyék IoT tiasa digolongkeun kana pamekaran parangkat lunak sareng hardware alat IoT, pamekaran aplikasi klien, sareng pamekaran platform awan IoT. Kadé netelakeun modul fungsional dasar, anu bakal dijelaskeun satuluyna dina bagian ieu.
2.1.1 Modul dasar pikeun Alat IoT umum
Pangwangunan parangkat lunak sareng perangkat keras alat IoT kalebet modul dasar ieu: Koléksi data
Salaku lapisan handap arsitéktur IoT, alat IoT tina persépsi & lapisan kontrol nyambungkeun sensor jeung alat ngaliwatan chip sarta périferal maranéhna pikeun ngahontal ngumpulkeun data jeung kontrol operasi.
9

Ngariung akun sareng konfigurasi awal Kanggo sabagéan ageung alat IoT, ngariung akun sareng konfigurasi awal réngsé dina hiji prosés operasional, pikeun ex.ample, nyambungkeun alat jeung pamaké ku Konfigurasi jaringan Wi-Fi.
Interaksi sareng platform awan IoT Pikeun ngawas sareng ngontrol alat-alat IoT, éta ogé kedah dihubungkeun ka platform awan IoT, pikeun masihan paréntah sareng ngalaporkeun status ngaliwatan interaksi antara masing-masing.
Kontrol alat Lamun disambungkeun jeung platform awan IoT, alat bisa komunikasi jeung awan tur didaptarkeun, kabeungkeut, atawa dikawasa. Pamaké tiasa naroskeun status produk sareng ngalaksanakeun operasi sanés dina aplikasi smartphone ngalangkungan platform awan IoT atanapi protokol komunikasi lokal.
Ngaronjatkeun firmware Alat IoT ogé tiasa ngahontal pamutahiran firmware dumasar kana kabutuhan pabrik. Ku nampi paréntah anu dikirim ku awan, pamutahiran firmware sareng manajemén versi bakal direalisasikeun. Kalayan fitur pamutahiran firmware ieu, anjeun tiasa terus ningkatkeun pungsi alat IoT, ngalereskeun cacad, sareng ningkatkeun pangalaman pangguna.
2.1.2 Modul Dasar Aplikasi Klién
Aplikasi klien (contona, aplikasi smartphone) utamina kalebet modul dasar ieu:
Sistem akun sareng otorisasina Éta ngadukung otorisasi akun sareng alat.
Kontrol alat Aplikasi smartphone biasana dilengkepan ku fungsi pangendali. Pamaké tiasa gampang nyambung ka alat IoT, sareng ngatur éta iraha waé, dimana waé ngalangkungan aplikasi smartphone. Dina imah pinter dunya nyata, alat-alat lolobana dikawasa ngaliwatan aplikasi smartphone, nu teu ngan ngamungkinkeun manajemén calakan alat, tapi ogé ngahemat biaya tanaga gawé. Ku alatan éta, kontrol alat nyaeta kudu pikeun aplikasi klien, kayaning kontrol atribut fungsi alat, kontrol pamandangan, scheduling, kadali jauh, beungkeut alat, jsb pamaké home pinter ogé bisa ngaropéa pamandangan nurutkeun pangabutuh pribadi, ngadalikeun cahaya, panerapan imah, lawang. , jsb, sangkan hirup imah leuwih nyaman jeung merenah. Éta tiasa waktos AC, mareuman jarak jauh, nyetél lampu lorong sacara otomatis saatos panto dikonci, atanapi ngalih ka modeu "téater" sareng hiji tombol.
Aplikasi Klien Bewara ngamutahirkeun status alat IoT sacara real-time, sareng ngirim panggeuing nalika alat teu normal.
10 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Layanan palanggan saatos-jualan Aplikasi smartphone tiasa nyayogikeun jasa saatos-jualan pikeun produk, pikeun ngarengsekeun masalah anu aya hubunganana sareng gagalna alat IoT sareng operasi téknis dina waktosna.
Pungsi nu diulas Pikeun nyumponan kabutuhan pamaké nu béda-béda, pungsi séjén bisa ditambahkeun, saperti Shake, NFC, GPS, jsb. GPS bisa mantuan nyetel katepatan operasi pamandangan nurutkeun lokasi jeung jarak, sedengkeun pungsi Shake ngamungkinkeun pamaké pikeun nyetel paréntah pikeun dieksekusi pikeun alat atawa adegan husus ku oyag.
2.1.3 Perkenalan kana Platform Awan IoT Umum
Platform awan IoT mangrupikeun platform sadaya-dina-hiji anu ngahijikeun fungsi sapertos manajemén alat, komunikasi kaamanan data, sareng manajemén bewara. Numutkeun grup targétna sareng aksésibilitasna, platform awan IoT tiasa dibagi kana platform awan IoT publik (saterusna disebut "awan publik") sareng platform awan IoT swasta (saterusna disebut "awan pribadi").
Awan umum biasana nunjukkeun platform awan IoT anu dibagikeun pikeun perusahaan atanapi individu, dioperasikeun sareng diurus ku panyadia platform, sareng dibagikeun dina Internét. Éta tiasa gratis atanapi murah, sareng nyayogikeun jasa sapanjang jaringan umum kabuka, sapertos Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, jsb. pamaké tungtung hilir pikeun nyieun ranté nilai anyar jeung ékosistem.
Awan swasta didamel kanggo pamakean perusahaan wungkul, ku kituna ngajamin kadali pangsaena kana data, kaamanan, sareng kualitas jasa. Ladenan sareng infrastrukturna dijaga sacara misah ku perusahaan, sareng parangkat lunak sareng parangkat lunak anu ngadukung ogé dikhususkeun pikeun pangguna khusus. Perusahaan tiasa nyaluyukeun jasa awan pikeun nyumponan kabutuhan bisnisna. Ayeuna, sababaraha pabrik bumi pinter parantos ngagaduhan platform awan IoT swasta sareng ngembangkeun aplikasi bumi pinter dumasar kana éta.
Awan umum sareng awan swasta gaduh advan sorangantages, nu bakal dipedar engké.
Pikeun ngahontal konektipitas komunikasi, perlu pikeun ngarengsekeun sahenteuna pangwangunan anu dipasang dina sisi alat, sareng server bisnis, platform awan IoT, sareng aplikasi smartphone. Nyanghareupan proyék ageung sapertos kitu, awan umum biasana nyayogikeun kit pamekaran parangkat lunak pikeun sisi alat sareng aplikasi smartphone pikeun nyepetkeun prosésna. Awan umum sareng swasta nyayogikeun jasa kalebet aksés alat, manajemén alat, bayangan alat, sareng operasi sareng perawatan.
Aksés alat Platform awan IoT kedah nyayogikeun sanés ngan ukur antarmuka pikeun aksés alat anu nganggo protokol
Bab 2. Bubuka sareng Praktek Proyék IoT 11

sapertos MQTT, CoAP, HTTPS, sareng WebSocket, tapi ogé fungsi auténtikasi kaamanan alat pikeun meungpeuk alat palsu jeung ilegal, éféktif ngurangan résiko keur compromised. Auténtikasi sapertos biasana ngadukung mékanisme anu béda-béda, janten nalika alat-alat diproduksi sacara masal, perlu tos napelkeun sertipikat alat numutkeun mékanisme auténtikasi anu dipilih sareng kaduruk kana alat.
Manajemén alat Fungsi manajemén alat anu disayogikeun ku platform awan IoT henteu ngan ukur tiasa ngabantosan produsén ngawas status aktivasina sareng status online alatna sacara real waktos, tapi ogé ngamungkinkeun pilihan sapertos nambihan / ngahapus alat, nyandak deui, nambihan / mupus grup, ningkatkeun firmware. , sarta manajemén versi.
Platform awan IoT bayangan alat tiasa nyiptakeun versi maya anu pengkuh (bayangan alat) pikeun tiap alat, sareng status kalangkang alat tiasa disingkronkeun sareng dicandak ku aplikasi smartphone atanapi alat anu sanés ngalangkungan protokol pangiriman Internét. Alat bayangan nyimpen status dilaporkeun panganyarna na status ekspektasi unggal alat, komo lamun alat keur offline, eta masih bisa ménta status ku nelepon API. Bayangan alat nyadiakeun API salawasna-on, nu matak ngagampangkeun pikeun ngawangun aplikasi smartphone nu berinteraksi sareng alat.
Operasi jeung perawatan Fungsi O&M ngawengku tilu aspék: · Némbongkeun informasi statistik ngeunaan alat IoT jeung bewara. · Manajemén log ngamungkinkeun dimeunangkeun deui inpormasi ngeunaan paripolah alat, aliran pesen naék/handap, sareng eusi pesen. · Debug alat ngadukung pangiriman paréntah, update konfigurasi, sareng mariksa interaksi antara platform awan IoT sareng pesen alat.
2.2 Prakték: Proyék Lampu Smart
Saatos bubuka téoritis dina unggal bab, anjeun bakal manggihan bagian prakték patali proyék Smart Light pikeun mantuan Anjeun meunangkeun hands-on pangalaman. Proyék ieu dumasar kana chip ESP32-C3 ESP sareng ESP RainMaker IoT Cloud Platform, sareng nyertakeun hardware modul nirkabel dina produk lampu pinter, parangkat lunak anu dipasang pikeun alat pinter dumasar kana ESP32C3, aplikasi smartphone, sareng interaksi ESP RainMaker.
Kode sumber Pikeun diajar anu langkung saé sareng mekarkeun pangalaman, proyék dina buku ieu parantos opensource. Anjeun tiasa ngaunduh kodeu sumber tina gudang GitHub kami di https://github. com / espressif / buku-esp32c3-iot-proyék.
12 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

2.2.1 Struktur Proyék
Proyék Smart Light diwangun ku tilu bagian: i. Alat lampu pinter dumasar kana ESP32-C3, tanggung jawab pikeun berinteraksi sareng platform awan IoT, sareng ngadalikeun saklar, kacaangan sareng suhu warna LED l.amp manik. ii. Aplikasi smartphone (kaasup aplikasi tablet dijalankeun dina Android sarta ios), jawab konfigurasi jaringan produk lampu pinter, kitu ogé querying sarta ngadalikeun status maranéhanana.
iii. Platform awan IoT dumasar kana ESP RainMaker. Pikeun nyederhanakeun, urang nganggap platform awan IoT sareng server bisnis sacara gembleng dina buku ieu. Rincian ngeunaan ESP RainMaker bakal disayogikeun dina Bab 3.
Susuratan antara struktur proyék Smart Light sareng arsitéktur IoT dipidangkeun dina Gambar 2.1.
Gambar 2.1. Struktur proyék lampu pinter
2.2.2 Fungsi Proyék
Dibagi dumasar strukturna, fungsi unggal bagian nyaéta kieu. Alat lampu pinter
· Konfigurasi jaringan sareng sambungan. · Kontrol PWM LED, sapertos saklar, kacaangan, suhu warna, jsb. · Otomatisasi atanapi kontrol pamandangan, contona, saklar waktos. · Énkripsi sareng boot aman tina Flash. · Pamutahiran firmware sareng manajemén versi.
Bab 2. Bubuka sareng Praktek Proyék IoT 13

Aplikasi smartphone · Konfigurasi jaringan sareng ngariung alat. · Kontrol produk lampu pinter, sapertos saklar, kacaangan, suhu warna, jsb. · Otomatisasi atanapi setélan pamandangan, contona, saklar waktos. · Lokal / kadali jauh. · Pendaptaran pangguna, login, jsb.
ESP RainMaker IoT platform awan · Aktipkeun aksés alat IoT. · Nyadiakeun API operasi alat diaksés ku aplikasi smartphone. · Pamutahiran firmware sareng manajemén versi.
2.2.3 Persiapan hardware
Upami kabetot pikeun ngalaksanakeun proyék éta, anjeun ogé peryogi hardware ieu: lampu pinter, smartphone, router Wi-Fi, sareng komputer anu nyumponan sarat pamasangan lingkungan pangwangunan. Lampu pinter
Lampu pinter mangrupikeun jinis bohlam énggal, anu bentukna sami sareng bohlam pijar umum. Hiji lampu pinter diwangun ku kapasitor step-down diatur catu daya, modul nirkabel (kalawan diwangun-di ESP32-C3), LED controller sarta RGB LED matrix. Nalika disambungkeun kana kakuatan, 15 V DC voltage kaluaran sanggeus kapasitor step-down, rectification dioda, sarta pangaturan nyadiakeun énergi pikeun controller LED na matrix LED. Controller LED otomatis bisa ngirim tingkat luhur jeung low dina interval nu tangtu, ngaganti RGB LED matrix antara ditutup (lampu on) jeung kabuka (lampu pareum), ku kituna bisa emit cyan, konéng, héjo, wungu, biru, beureum, jeung cahaya bodas. Modul nirkabel tanggung jawab pikeun nyambungkeun ka router Wi-Fi, nampi sareng ngalaporkeun status lampu pinter, sareng ngirim paréntah pikeun ngontrol LED.
Gambar 2.2. Hiji lampu pinter simulasi
Dina ngembangkeun mimiti stage, Anjeun tiasa simulate lampu pinter ngagunakeun ESP32-C3DevKitM-1 dewan disambungkeun jeung RGB LED l.amp manik (tingali Gambar 2.2). Tapi anjeun kedah
14 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Catet yén ieu sanés hiji-hijina cara pikeun ngumpul lampu pinter. Desain hardware proyék dina buku ieu ngan ngandung modul nirkabel (kalawan diwangun-di ESP32-C3), tapi teu lengkep desain hardware lampu pinter. Salaku tambahan, ESP32C3-Lyra ogé ngahasilkeun papan pangembangan audio berbasis ESP32-C3 ESP2.3C32-Lyra pikeun ngatur lampu kalayan audio. Dewan gaduh antarmuka pikeun mikropon sareng spiker sareng tiasa ngontrol jalur LED. Éta tiasa dianggo pikeun ngembangkeun penyiar audio ultra-murah, berprestasi tinggi sareng jalur lampu irama. angka 3 nembongkeun dewan ESP40-CXNUMXLyra numbu ku strip XNUMX lampu LED.
Gambar 2.3. ESP32-C3-Lyra dihubungkeun sareng jalur 40 lampu LED
Smartphone (Android/iOS) Proyék Smart Light ngalibatkeun pamekaran aplikasi smartphone pikeun nyetél jeung ngadalikeun produk lampu pinter.
Router Wi-Fi Router Wi-Fi ngarobah sinyal jaringan kabel jeung sinyal jaringan seluler jadi sinyal jaringan nirkabel, pikeun komputer, smartphone, tablet, jeung alat nirkabel séjén pikeun nyambung ka jaringan. Pikeun exampLe, broadband di imah ngan perlu disambungkeun ka router Wi-Fi pikeun ngahontal jaringan nirkabel alat Wi-Fi. Standar protokol mainstream anu dirojong ku router Wi-Fi nyaéta IEEE 802.11n, kalayan rata-rata TxRate 300 Mbps, atanapi maksimal 600 Mbps. Aranjeunna mundur cocog sareng IEEE 802.11b sareng IEEE 802.11g. ESP32-C3 chip ku Espressif ngarojong IEEE 802.11b/g/n, jadi Anjeun bisa milih hiji-band (2.4 GHz) atawa dual-band (2.4 GHz sarta 5 GHz) router Wi-Fi.
Lingkungan pamekaran komputer (Linux/macOS/Windows) bakal diwanohkeun dina Bab 4. Bab 2. Bubuka sareng Praktek Proyék IoT 15

2.2.4 Prosés Pangwangunan
Gambar 2.4. Léngkah-léngkah ngembangkeun proyék Smart Light
Desain hardware Desain hardware alat IoT penting pisan pikeun proyék IoT. Proyék lampu pinter lengkep dimaksudkeun pikeun ngahasilkeun alamp digawé dina suplai mains. pabrik béda ngahasilkeun lamps tina gaya béda jeung tipe supir, tapi modul nirkabel maranéhanana biasana tina fungsi anu sarua. Pikeun nyederhanakeun prosés pamekaran proyék Smart Ligh, buku ieu ngan ukur nyertakeun desain hardware sareng pamekaran parangkat lunak modul nirkabel.
Konfigurasi platform awan IoT Pikeun ngagunakeun platform awan IoT, Anjeun kudu ngonpigurasikeun proyék on backend nu, kayaning nyieun produk, nyieun alat, netepkeun sipat alat, jsb.
Pangwangunan parangkat lunak anu dipasang pikeun alat IoT Laksanakeun fungsi anu dipiharep sareng ESP-IDF, SDK sisi alat Espressif, kalebet nyambungkeun kana platform awan IoT, ngembangkeun driver LED, sareng ningkatkeun firmware.
Pangembangan aplikasi smartphone Ngembangkeun aplikasi smartphone pikeun sistem Android sareng ios pikeun ngawujudkeun pendaptaran sareng login pangguna, kontrol alat sareng fungsi anu sanés.
Optimasi alat IoT Saatos pangwangunan dasar pungsi alat IoT réngsé, anjeun tiasa ngalih ka tugas optimasi, sapertos optimasi kakuatan.
Uji produksi masal Ngalaksanakeun tés produksi masal numutkeun standar anu aya hubunganana, sapertos uji fungsi alat, uji sepuh, uji RF, jsb.
Sanaos léngkah-léngkah anu didaptarkeun di luhur, proyék Smart Light henteu kedah tunduk kana prosedur sapertos tugas anu béda ogé tiasa dilaksanakeun dina waktos anu sami. Pikeun example, software study na smartphone aktip bisa dimekarkeun dina paralel. Sababaraha léngkah ogé kedah diulang, sapertos optimasi alat IoT sareng uji produksi masal.
16 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

2.3 Ihtisar
Dina bab ieu, urang mimiti ngajelaskeun komponén dasar sareng modul fungsional proyék IoT, teras ngenalkeun kasus Smart Light pikeun prakték, ngarujuk kana strukturna, fungsina, persiapan hardware, sareng prosés pangwangunan. Pamiarsa tiasa nyandak kasimpulan tina prakték sareng janten percaya diri pikeun ngalaksanakeun proyék IoT kalayan kasalahan anu minimal di hareup.
Bab 2. Bubuka sareng Praktek Proyék IoT 17

18 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Bab 3

Bubuka

ka

ESP

RainMaker

Internet of Things (IoT) nawiskeun kamungkinan anu teu terbatas pikeun ngarobih cara hirup jalma, tapi pamekaran rékayasa IoT pinuh ku tantangan. Kalayan awan umum, pabrik terminal tiasa nerapkeun fungsionalitas produk ngalangkungan solusi ieu:
Dumasar kana platform awan panyadia solusi Ku cara kieu, pabrik terminal ngan ukur kedah ngarancang hardware produk, teras sambungkeun hardware ka awan nganggo modul komunikasi anu disayogikeun, sareng ngonpigurasikeun fungsi produk nuturkeun pedoman. Ieu mangrupikeun pendekatan anu épisién sabab ngaleungitkeun kabutuhan pikeun sisi server sareng sisi aplikasi sareng operasi sareng perawatan (O&M). Hal ieu ngamungkinkeun pabrik terminal fokus kana desain hardware tanpa kudu mertimbangkeun palaksanaan awan. Tapi, solusi sapertos kitu (contona, firmware alat sareng App) umumna henteu open source, janten fungsi produk bakal diwatesan ku platform awan panyadia anu teu tiasa disaluyukeun. Samentawis éta, data pangguna sareng alat ogé kalebet kana platform awan.
Dumasar produk awan Dina leyuran ieu, sanggeus completing desain hardware, pabrik terminal teu ngan kudu nerapkeun fungsi awan ngagunakeun hiji atawa leuwih produk awan disadiakeun ku awan publik, tapi ogé kudu numbu hardware jeung awan. Pikeun example, pikeun nyambung ka Amazon Web Services (AWS), pabrik terminal kedah nganggo produk AWS sapertos Amazon API Gateway, AWS IoT Core, sareng AWS Lambda pikeun ngaktipkeun aksés alat, kadali jauh, neundeun data, manajemén pangguna, sareng fungsi dasar anu sanés. Éta henteu ngan ukur naroskeun ka pabrik terminal pikeun sacara fleksibel ngagunakeun sareng ngonpigurasikeun produk awan kalayan pamahaman anu jero sareng pangalaman anu beunghar, tapi ogé ngabutuhkeun aranjeunna mertimbangkeun biaya konstruksi sareng pangropéa pikeun awal sareng engké.tagIeu nyababkeun tangtangan anu ageung pikeun énergi sareng sumber perusahaan.
Dibandingkeun sareng awan umum, awan swasta biasana diwangun pikeun proyék sareng produk khusus. Pamekar awan swasta dibéré tingkat kabébasan pangluhurna dina desain protokol sareng palaksanaan logika bisnis. Pabrik terminal tiasa ngadamel produk sareng skéma desain anu dipikahoyong, sareng gampang ngahijikeun sareng nguatkeun data pangguna. Ngagabungkeun kaamanan anu luhur, skalabilitas sareng reliabilitas awan umum sareng advantages tina awan swasta, Espressif dibuka ESP
19

RainMaker, solusi awan swasta terpadu jero dumasar kana awan Amazon. Pamaké tiasa nyebarkeun ESP RainMaker sareng ngawangun awan pribadi ngan saukur nganggo akun AWS.
3.1 Naon ari ESP RainMaker?
ESP RainMaker mangrupikeun platform AIoT lengkep anu diwangun ku sababaraha produk AWS dewasa. Éta nyayogikeun rupa-rupa jasa anu diperyogikeun pikeun produksi masal sapertos aksés awan alat, pamutahiran alat, manajemén backend, login pihak katilu, integrasi sora, sareng manajemén pangguna. Ku ngagunakeun Repository Aplikasi Tanpa Server (SAR) anu disayogikeun ku AWS, produsén terminal tiasa gancang nyebarkeun ESP RainMaker kana akun AWS na, anu éfisién waktos sareng gampang dioperasikeun. Dikelola sareng dijaga ku Espressif, SAR anu dianggo ku ESP RainMaker ngabantosan pamekar ngirangan biaya pangropéa awan sareng ngagancangkeun pamekaran produk AIoT, sahingga ngawangun solusi AIoT anu aman, stabil, sareng disesuaikan. Gambar 3.1 nembongkeun arsitektur ESP RainMaker.
Gambar 3.1. Arsitéktur ESP RainMaker
Pangladén umum ESP RainMaker ku Espressif gratis pikeun sadaya peminat, produsén, sareng pendidik ESP pikeun évaluasi solusi. Pamekar tiasa log in sareng akun Apple, Google, atanapi GitHub, sareng gancang ngawangun prototipe aplikasi IoT sorangan. Server umum ngahijikeun Alexa sareng Google Home, sareng nyayogikeun jasa kontrol sora, anu dirojong ku Alexa Skill sareng Google Actions. Fungsi pangakuan semantisna ogé didamel ku pihak katilu. Alat RainMaker IoT ngan ukur ngabales tindakan khusus. Pikeun daptar lengkep paréntah sora anu dirojong, mangga parios platform pihak katilu. Salaku tambahan, Espressif nawiskeun RainMaker App umum pikeun pangguna pikeun ngontrol produk liwat smartphone. 20 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

3.2 Palaksanaan ESP RainMaker
Ditémbongkeun saperti dina Gambar 3.2, ESP RainMaker diwangun ku opat bagian: · Klaim Service, sangkan alat RainMaker dinamis ménta sertipikat. · RainMaker Cloud (ogé katelah cloud backend), nyayogikeun jasa sapertos nyaring pesen, manajemén pangguna, neundeun data, sareng integrasi pihak katilu. · Agen RainMaker, ngamungkinkeun alat RainMaker nyambung ka RainMaker Cloud. · Klién RainMaker (Aplikasi RainMaker atanapi skrip CLI), pikeun nyayogikeun, nyiptakeun pangguna, asosiasi sareng kontrol alat, jsb.
Gambar 3.2. Struktur ESP RainMaker
ESP RainMaker nyayogikeun set lengkep alat pikeun pamekaran produk sareng produksi masal, kalebet: RainMaker SDK
RainMaker SDK ieu dumasar kana ESP-IDF jeung nyadiakeun kode sumber agén alat-sisi jeung API C patali pikeun ngembangkeun firmware. Pamekar ngan ukur kedah nyerat logika aplikasi sareng ngantepkeun sésana kana kerangka RainMaker. Kanggo inpo nu langkung lengkep ihwal C API, mangga buka https://bookc3.espressif.com/rm/c-api-reference. RainMaker App Versi umum tina RainMaker App ngamungkinkeun para pangembang pikeun ngalengkepan provisioning alat, sareng ngontrol sareng naroskeun status alat (contona, produk lampu pinter). Éta sayogi di toko aplikasi ios sareng Android. Pikeun leuwih rinci, mangga tingal Bab 10. REST API REST API mantuan pamaké ngawangun aplikasi sorangan sarupa RainMaker App. Kanggo inpo nu leuwih lengkep, mangga buka https://swaggerapis.rainmaker.espressif.com/.
Bab 3. Bubuka ESP RainMaker 21

API Python A CLI basis Python, nu hadir kalawan RainMaker SDK, disadiakeun pikeun nerapkeun sagala fungsi sarupa fitur smartphone. Kanggo inpo nu langkung lengkep ihwal API Python, mangga buka https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, kalawan tingkat luhur aksés, disadiakeun pikeun ESP RainMaker deployment swasta pikeun ngahasilkeun sertipikat alat dina bulk.
3.2.1 Ngaku Service
Sadaya komunikasi antara alat RainMaker sareng backend awan dilaksanakeun ngaliwatan MQTT+TLS. Dina kontéks ESP RainMaker, "Klaim" mangrupikeun prosés dimana alat-alat nampi sertipikat ti Layanan Ngaklaim pikeun nyambung ka backend awan. Catet yén Service Klaim ngan lumaku pikeun layanan RainMaker umum, sedengkeun pikeun deployment swasta, sertipikat alat kudu dihasilkeun dina bulk ngaliwatan Admin CLI. ESP RainMaker ngadukung tilu jinis Palayanan Klaim: Klaim Mandiri
Alatna nyalira nyandak sertipikat ngalangkungan konci rahasia anu tos diprogram dina eFuse saatos nyambung ka Internét. Host Driven Claiming Sertipikat dicandak tina host pangembangan sareng akun RainMaker. Dibantuan Klaim Sertipikat dimeunangkeun ngaliwatan aplikasi smartphone salila provisioning.
3.2.2 RainMaker Agen
Gambar 3.3. Struktur RainMaker SDK Fungsi utama Agen RainMaker nyaéta pikeun nyayogikeun konektipitas sareng ngabantosan lapisan aplikasi pikeun ngolah data awan uplink/downlink. Diwangun ku RainMaker SDK 22 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

sarta dimekarkeun dumasar kana kerangka ESP-IDF kabuktian, ngagunakeun komponén ESP-IDF kayaning RTOS, NVS, sarta MQTT. angka 3.3 nembongkeun struktur RainMaker SDK.
RainMaker SDK ngawengku dua fitur utama.
Sambungan
abdi. Migawé bareng kalayan Service Klaim pikeun ménta sertipikat alat.
ii. Nyambungkeun ka backend awan ngagunakeun protokol MQTT aman pikeun nyadiakeun konektipitas jauh jeung nerapkeun kadali jauh, ngalaporkeun pesen, manajemén pamaké, manajemén alat, jsb It ngagunakeun komponén MQTT di ESP-IDF sacara standar sarta nyadiakeun lapisan abstraksi pikeun panganteur jeung lianna. tumpukan protokol.
iii. Nyadiakeun komponén provisioning wifi pikeun sambungan Wi-Fi sarta provisioning, esp HTTPS ota komponén pikeun upgrades OTA, sarta esp komponén ctrl lokal pikeun kapanggihna alat lokal sarta sambungan. Sadaya tujuan ieu tiasa dihontal ku konfigurasi saderhana.
Ngolah data
abdi. Nyimpen sertipikat alat dikaluarkeun ku Klaim Service jeung data diperlukeun nalika ngajalankeun RainMaker, sacara standar ngagunakeun panganteur disadiakeun ku komponén nvs flash, sarta nyadiakeun API pikeun pamekar pikeun pamakéan langsung.
ii. Ngagunakeun mékanisme callback pikeun ngolah uplink / downlink data awan tur otomatis muka blokiran data kana lapisan aplikasi pikeun gampang ngolah ku pamekar. Pikeun exampLe, RainMaker SDK nyadiakeun interfaces euyeub pikeun ngadegkeun TSL (Basa spésifikasi hal) data, nu diperlukeun pikeun ngartikeun model TSL pikeun ngajelaskeun alat IoT sarta ngalaksanakeun fungsi kayaning timing, mundur, jeung kontrol sora. Pikeun fitur interaktif dasar sapertos waktos, RainMaker SDK nyayogikeun solusi gratis pangembangan anu ngan saukur tiasa diaktipkeun upami diperyogikeun. Lajeng, Agen RainMaker bakal langsung ngolah data, ngirim ka awan ngaliwatan topik MQTT pakait, sarta eupan balik parobahan data dina backend awan ngaliwatan mékanisme callback.
3.2.3 Awan Backend
Backend awan diwangun dina AWS Serverless Computing sarta dihontal ngaliwatan AWS Cognito (sistem manajemen identitas), Amazon API Gateway, AWS Lambda (layanan komputasi tanpa server), Amazon DynamoDB (database NoSQL), AWS IoT Core (Inti aksés IoT nu nyadiakeun aksés MQTT. jeung nyaring aturan), Amazon Simple Email Service (SES layanan mail basajan), Amazon CloudFront (jaringan pangiriman gancang), Amazon Simple Queue Service (SQS antrian pesen), jeung Amazon S3 (layanan neundeun ember). Tujuanana pikeun ngaoptimalkeun skalabilitas sareng kaamanan. Kalayan ESP RainMaker, pamekar tiasa ngatur alat tanpa kedah nyerat kode dina méga. Pesen anu dilaporkeun ku alat dikirimkeun sacara transparan
Bab 3. Bubuka ESP RainMaker 23

klien aplikasi atawa jasa pihak katilu sejenna. meja 3.1 nembongkeun produk awan AWS jeung fungsi dipaké dina backend awan, kalawan leuwih produk jeung fitur dina ngembangkeun.
Tabél 3.1. Produk sareng fungsi awan AWS anu dianggo ku backend awan

Produk AWS Awan Dipaké ku RainMaker

Fungsi

AWS Cognito

Ngatur kredensial pangguna sareng ngadukung login pihak katilu

AWS Lambda

Ngalaksanakeun logika bisnis inti tina backend awan

Amazon Timestream Nyimpen data runtuyan waktu

Amazon DynamoDB Nyimpen inpormasi pribadi para nasabah

AWS IoT Core

Ngarojong komunikasi MQTT

Amazon SES

Nyadiakeun jasa ngirim email

Amazon CloudFront Ngagancangkeun manajemén backend webaksés loka

Amazon SQS

Neraskeun pesen ti AWS IoT Core

3.2.4 RainMaker klien
Klién RainMaker, sapertos App sareng CLI, komunikasi sareng backend awan ngalangkungan REST API. Inpormasi lengkep sareng petunjuk ngeunaan REST API tiasa dipendakan dina dokuméntasi Swagger anu disayogikeun ku Espressif. Klién aplikasi mobile RainMaker sayogi pikeun sistem ios sareng Android. Hal ieu ngamungkinkeun provisioning alat, kontrol, jeung babagi, kitu ogé nyieun jeung ngaktipkeun tugas mundur tur nyambungkeun ka platform pihak katilu. Éta sacara otomatis tiasa ngamuat UI sareng ikon dumasar kana konfigurasi anu dilaporkeun ku alat sareng nampilkeun alat TSL.
Pikeun example, lamun lampu pinter diwangun dina RainMaker SDK-disadiakeun examples, ikon jeung UI lampu bohlam bakal dimuat sacara otomatis nalika provisioning geus réngsé. Pamaké tiasa ngarobih warna sareng kacaangan cahaya ngalangkungan antarmuka sareng ngahontal kontrol pihak katilu ku cara ngahubungkeun Alexa Smart Home Skill atanapi Google Smart Home Actions kana akun ESP RainMaker na. Gambar 3.4 nembongkeun ikon jeung UI examples lampu bohlam mungguh on Alexa, Google Home, sarta ESP RainMaker App.

24 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

(a) Misalample – Alexa

(b) Example - Imah Google

(c) Misalample - ESP RainMaker
Gambar 3.4. Kelamples ikon jeung UI lampu bohlam on Alexa, Google Home, sarta ESP RainMaker App
3.3 Prakték: Titik konci pikeun Ngembangkeun sareng ESP RainMaker
Saatos lapisan supir alat parantos réngsé, pamekar tiasa ngamimitian nyiptakeun modél TSL sareng ngolah data downlink nganggo API anu disayogikeun ku RainMaker SDK, sareng ngaktifkeun jasa dasar ESP RainMaker dumasar kana definisi produk sareng syarat.
Bab 3. Bubuka ESP RainMaker 25

Bagian 9.4 buku ieu bakal ngajelaskeun palaksanaan lampu pinter LED dina RainMaker. Salila debugging, pamekar tiasa nganggo alat CLI dina RainMaker SDK pikeun komunikasi sareng lampu pinter (atanapi nelepon REST API ti Swagger).
Bab 10 bakal ngajelaskeun pamakean REST API dina ngamekarkeun aplikasi smartphone. Ngaronjatkeun OTA tina lampu pinter LED bakal katutupan dina Bab 11. Upami pamekar parantos ngaktipkeun ngawaskeun jarak jauh ESP Insights, backend manajemén ESP RainMaker bakal nampilkeun data ESP Insights. Sacara rinci bakal dibere dina Bab 15.
ESP RainMaker ngadukung panyebaran pribadi, anu béda ti pangladén RainMaker umum ku cara ieu:
Ngaku Service Pikeun ngahasilkeun sertipikat dina deployments swasta, éta diperlukeun ngagunakeun RainMaker Admin CLI tinimbang ngaku. Kalayan server umum, pamekar kedah dipasihan hak admin pikeun ngalaksanakeun pamutahiran firmware, tapi henteu pikaresepeun dina panyebaran komérsial. Ku alatan éta, layanan auténtikasi anu misah henteu tiasa disayogikeun pikeun klaim diri, atanapi hak admin pikeun klaim anu didorong ku host atanapi ditulungan.
Aplikasi telepon Dina panyebaran pribadi, aplikasi kedah dikonpigurasi sareng disusun sacara misah pikeun mastikeun yén sistem akun henteu tiasa dioperasikeun.
Login pihak ka-3 sareng integrasi sora Pangembang kedah ngonpigurasi sacara misah liwat akun Google sareng Apple Developer pikeun ngaktifkeun login pihak ka-3, kitu ogé integrasi Alexa Skill sareng Google Voice Assistant.
TIPS Pikeun detil ngeunaan panyebaran awan, mangga buka https://customer.rainmaker.espressif. com. Dina hal firmware, migrasi ti server publik ka server swasta ngan merlukeun ngagantian sertipikat alat, nu greatly ngaronjatkeun efisiensi migrasi jeung ngurangan biaya migrasi jeung debugging sekundér.
3.4 Fitur ESP RainMaker
Fitur ESP RainMaker utamina ditargetkeun dina tilu aspék - manajemén pangguna, pangguna akhir, sareng admin. Sadaya fitur dirojong dina pangladén umum sareng swasta iwal disebutkeun béda.
3.4.1 Manajemén pamaké
Fitur manajemén pamaké ngamungkinkeun pamaké ahir pikeun ngadaptar, asup, ngarobah kecap akses, meunangkeun kecap akses, jsb.
26 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Ngadaptar sareng asup Metode pendaptaran sareng login anu dirojong ku RainMaker kalebet: · Email id + Sandi · Nomer telepon + Sandi · Akun Google · Akun Apple · Akun GitHub (server umum wungkul) · Akun Amazon (server swasta wungkul)
CATETAN Ngadaptar nganggo Google/Amazon ngabagi alamat email pangguna sareng RainMaker. Ngadaptar ngagunakeun Apple babagi alamat dummy nu Apple nangtukeun pikeun pamaké husus pikeun layanan RainMaker. Akun RainMaker bakal otomatis didamel pikeun pangguna anu asup sareng akun Google, Apple, atanapi Amazon pertama kalina.
Robah kecap akses Sah ngan pikeun email id/nomer telepon logins. Sadaya sési aktip anu sanés bakal kaluar saatos sandi dirobah. Numutkeun paripolah AWS Cognito, sési anu kaluar log tiasa tetep aktip dugi ka 1 jam.
Meunangkeun kecap akses Sah ngan pikeun Email id/Nomer telepon logins dumasar.
3.4.2 Fitur pamaké tungtung
Fitur anu kabuka pikeun pangguna akhir kalebet kadali lokal sareng jauh sareng ngawaskeun, jadwal, ngagolongkeun alat, ngabagi alat, bewara push, sareng integrasi pihak katilu.
Kadali jauh sareng ngawas · Konfigurasi pamundut, nilai parameter, sareng status sambungan pikeun hiji atanapi sadaya alat. · Setel parameter pikeun alat tunggal atawa sababaraha.
Kontrol lokal sareng ngawaskeun Telepon sélulér sareng alatna kedah dihubungkeun ka jaringan anu sami pikeun kontrol lokal.
Ngajadwalkeun · Pamaké tos nyetel lampah nu tangtu dina waktu nu tangtu. · Taya sambungan Internet diperlukeun pikeun alat bari executing jadwal. · Hiji waktos atanapi ulangan (ku netepkeun dinten) kanggo alat tunggal atanapi sababaraha.
Grup alat Ngarojong grup abstrak multi-tingkat Metadata grup bisa dipaké pikeun nyieun struktur Home Room.
Bab 3. Bubuka ESP RainMaker 27

Babagi alat Hiji atawa leuwih alat bisa dibagikeun ka hiji atawa leuwih pamaké.
Bewara push Pamaké ahir bakal nampa béwara push pikeun acara kayaning · Alat anyar (s) ditambahkeun/dihapus · Alat disambungkeun ka awan · Alat dipegatkeun tina awan · Paménta babagi alat dijieun/ditampa/tolak · Talatah waspada dilaporkeun ku alat
Integrasi pihak katilu Alexa sareng Google Voice Assistant dirojong pikeun ngontrol alat RainMaker, kalebet lampu, saklar, soket, kipas, sareng sensor suhu.
3.4.3 Fitur Admin
Fitur Admin ngamungkinkeun pangurus pikeun nerapkeun pendaptaran alat, grup alat, sareng paningkatan OTA, sareng ka view statistik sareng data ESP Insights.
Pendaptaran alat Ngahasilkeun sertipikat alat sareng ngadaptar sareng Admin CLI (pangladén pribadi wungkul).
Grup alat Jieun grup abstrak atawa terstruktur dumasar kana informasi alat (pangladén swasta wungkul).
Ngaronjatkeun Over-the-Air (OTA) Unggah firmware dumasar kana versi sareng modél, ka hiji atanapi langkung alat atanapi grup Monitor, ngabatalkeun, atanapi arsip padamelan OTA.
View statistik Viewstatistik bisa ngawengku: · Registrasi alat (sertipikat didaptarkeun ku admin) · Aktivasina alat (alat disambungkeun pikeun kahiji kalina) · Akun pamaké · Asosiasi pamaké-alat
View data ESP Insights ViewData ESP Insights tiasa kalebet: · Kasalahan, peringatan, sareng log khusus · Laporan sareng analisa kacilakaan · Alesan reboot · Métrik sapertos pamakean mémori, RSSI, jsb. · Métrik sareng variabel khusus
28 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

3.5 Ihtisar
Dina bab ieu, kami ngawanohkeun sababaraha béda konci antara deployment RainMaker umum jeung deployment swasta. Solusi ESP RainMaker swasta anu diluncurkeun ku Espressif dipercaya pisan sareng tiasa diperpanjang. Kabéh chip runtuyan ESP32 geus disambungkeun tur diadaptasi kana AWS, nu greatly ngurangan biaya. Pamekar tiasa difokuskeun verifikasi prototipe tanpa kedah diajar ngeunaan produk awan AWS. Kami ogé ngajelaskeun palaksanaan sareng fitur ESP RainMaker, sareng sababaraha titik konci pikeun pamekaran nganggo platform.
Scan pikeun ngundeur ESP RainMaker pikeun Android Scan pikeun ngundeur ESP RainMaker pikeun ios
Bab 3. Bubuka ESP RainMaker 29

30 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Bab Nyetél 4 Lingkungan Pangwangunan
Bab ieu museurkeun kana ESP-IDF, kerangka ngembangkeun software resmi pikeun ESP32-C3. Kami bakal ngajelaskeun kumaha cara nyetél lingkungan dina sababaraha sistem operasi, sareng ngenalkeun struktur proyék sareng ngawangun sistem ESP-IDF, ogé panggunaan alat pangembangan anu aya hubunganana. Teras we bakal nampilkeun prosés kompilasi sareng ngajalankeun hiji mantanampproyék le, bari nawarkeun katerangan nu detil rupa log kaluaran dina unggal stage.
4.1 ESP-IDF Leuwihview
ESP-IDF (Espressif IoT Development Framework) mangrupikeun kerangka pamekaran IoT hiji-eureun anu disayogikeun ku Téhnologi Espressif. Éta ngagunakeun C/C++ salaku basa pangembangan utama sareng ngadukung kompilasi silang dina sistem operasi mainstream sapertos Linux, Mac, sareng Windows. Mantanampprogram le kaasup dina buku ieu dimekarkeun maké ESP-IDF, nu nawarkeun fitur di handap ieu: · SoC drivers sistem-tingkat. ESP-IDF ngawengku drivers pikeun ESP32, ESP32-S2, ESP32-C3,
sarta chip séjén. Panggerak ieu ngawengku perpustakaan tingkat low periferal (LL), perpustakaan lapisan abstraksi hardware (HAL), rojongan RTOS jeung software supir lapisan luhur, jsb · Komponén ésénsial. ESP-IDF ngalebetkeun komponén dasar anu dipikabutuh pikeun pangwangunan IoT. Ieu kalebet sababaraha tumpukan protokol jaringan sapertos HTTP sareng MQTT, kerangka manajemén kakuatan kalayan modulasi frekuensi dinamis, sareng fitur sapertos Flash Encryption sareng Secure Boot, jsb. · Pangembangan sareng alat produksi. ESP-IDF nyadiakeun parabot nu ilahar dipaké pikeun ngawangun, lampu kilat, jeung debugging salila pangwangunan jeung produksi masal (tingali Gambar 4.1), kayaning sistem wangunan dumasar kana CMake, ranté alat cross-kompilasi dumasar kana GCC, jeung JTAG alat debugging dumasar kana OpenOCD, jsb Ieu kudu dicatet yén kode ESP-IDF utamana taat kana lisensi open-source Apache 2.0. Pamaké tiasa ngembangkeun parangkat lunak pribadi atanapi komérsial tanpa larangan bari matuh kana syarat lisénsi sumber terbuka. Salaku tambahan, pangguna dibéré lisénsi patén permanén gratis, tanpa kawajiban pikeun muka sumber sagala modifikasi anu dilakukeun kana kode sumber.
31

Gambar 4.1.

Ngawangun, kedip-kedip, sareng debug-

parabot ging pikeun ngembangkeun sarta produksi masal

4.1.1 ESP-IDF Vérsi
Kode ESP-IDF hosted on GitHub salaku proyék open-source. Ayeuna, aya tilu vérsi utama anu sayogi: v3, v4, sareng v5. Unggal versi utama biasana ngandung rupa-rupa subversions, kayaning v4.2, v4.3, jeung saterusna. Sistem Espressif mastikeun dukungan 30-bulan pikeun perbaikan bug sareng patch kaamanan pikeun tiap sub-versi anu dileupaskeun. Ku alatan éta, révisi subversions ogé dileupaskeun rutin, kayaning v4.3.1, v4.2.2, jsb Tabél 4.1 nembongkeun status rojongan ti versi ESP-IDF béda pikeun chip Espressif, nunjukkeun naha maranéhna aya dina pre.view stage (nawarkeun dukungan pikeun praview vérsi, anu tiasa kakurangan fitur atanapi dokuméntasi anu tangtu) atanapi dirojong sacara resmi.

Tabél 4.1. Status rojongan tina versi ESP-IDF béda pikeun chip Espressif

Runtuyan ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

v4.1 dirojong

v4.2 dirojong dirojong

v4.3 dirojong dirojong dirojong

v4.4 dirojong dirojong dirojong dirojong
praview

v5.0 dirojong dirojong dirojong dirojong dirojong dirojong preview

32 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

The Iteration tina versi utama mindeng ngalibatkeun pangaluyuan kana struktur kerangka jeung apdet pikeun sistem kompilasi. Pikeun example, parobahan utama tina v3. * mun v4. * éta migrasi bertahap tina sistem ngawangun ti Jieun mun CMake. Di sisi séjén, iterasi tina versi minor ilaharna merlukeun tambahan fitur anyar atawa rojongan pikeun chip anyar.
Penting pikeun ngabédakeun sareng ngartos hubungan antara versi stabil sareng cabang GitHub. Versi dilabélan salaku v*.* atawa v*.*.* ngagambarkeun versi stabil nu geus lulus tés internal lengkep ku Espressif. Saatos dibereskeun, kodeu, ranté alat, sareng dokumén sékrési pikeun vérsi anu sami tetep teu robih. Sanajan kitu, cabang GitHub (misalna release / cabang v4.3) ngalaman kode commits sering, mindeng dina dasar poean. Ku alatan éta, dua snippét kode dina cabang sarua bisa jadi béda, merlukeun pamekar pikeun promptly ngamutahirkeun kode maranéhanana sasuai.
4.1.2 ESP-IDF Git Workflow
Espressif nuturkeun alur kerja Git khusus pikeun ESP-IDF, digariskeun kieu:
· Parobihan anyar dilakukeun dina cabang master, anu janten cabang pangembangan utama. Versi ESP-IDF dina cabang master salawasna mawa -dev tag pikeun nunjukkeun yén éta ayeuna nuju ngembangkeun, sapertos v4.3-dev. Parobahan dina cabang master kahiji bakal ulangviewed sareng diuji dina gudang internal Espressif, teras kadorong ka GitHub saatos tés otomatis réngsé.
· Sakali versi anyar geus réngsé ngembangkeun fitur dina cabang master tur minuhan kriteria keur ngasupkeun tés béta, éta transisi ka cabang anyar, kayaning release / v4.3. Sajaba ti éta, cabang anyar ieu tagged salaku versi pre-release, kawas v4.3-beta1. Pamekar tiasa ngarujuk kana platform GitHub pikeun ngakses daptar lengkep cabang sareng tags pikeun ESP-IDF. Penting pikeun dicatet yén vérsi béta (vérsi pra-pelepasan) masih tiasa gaduh sajumlah masalah anu dipikanyaho. Nalika vérsi béta ngalaman tés terus-terusan, perbaikan bug ditambah kana versi ieu sareng cabang master sakaligus. Samentawis éta, cabang master panginten parantos ngamimitian ngembangkeun fitur énggal pikeun versi salajengna. Nalika nguji ampir réngsé, hiji release calon (rc) labél ditambahkeun kana cabang, nunjukkeun yén éta téh calon poténsi pikeun release resmi, kayaning v4.3-rc1. Dina ieu stage, cabang tetep versi pre-release.
· Upami teu aya bug utama anu kapanggih atanapi dilaporkeun, versi pra-pelepasan ahirna nampi labél versi utama (contona, v5.0) atanapi labél versi minor (contona, v4.3) sareng janten versi rilis resmi, anu didokumentasikeun. dina kaca catetan release. Salajengna, bug naon waé anu diidentifikasi dina versi ieu dibenerkeun dina cabang pelepasan. Saatos nguji manual réngsé, cabang dibéré labél versi bug-fix (misalna v4.3.2), nu ogé reflected dina kaca catetan release.
Bab 4. Nyetél Lingkungan Pangwangunan 33

4.1.3 Milih Vérsi Cocog
Kusabab ESP-IDF sacara resmi mimiti ngadukung ESP32-C3 tina vérsi v4.3, sareng v4.4 henteu acan resmi dileupaskeun nalika nyerat buku ieu, versi anu dianggo dina buku ieu nyaéta v4.3.2, anu mangrupikeun vérsi anu dirévisi. tina v4.3. Sanajan kitu, hal anu penting pikeun dicatet yén nalika anjeun maca buku ieu, v4.4 atawa versi nu leuwih anyar bisa jadi geus sadia. Nalika milih versi, kami nyarankeun ieu:
· Pikeun pamekar tingkat éntri, disarankeun pikeun milih versi v4.3 stabil atanapi versi anu dirévisi, anu cocog sareng mantan.ample Vérsi dipaké dina buku ieu.
· Pikeun tujuan produksi masal, eta disarankeun pikeun ngagunakeun versi stabil panganyarna pikeun kauntungan tina pangrojong teknis paling up-to-date.
· Upami anjeun badé ékspérimén sareng chip énggal atanapi ngajalajah fitur produk énggal, punten nganggo cabang master. Versi panganyarna ngandung sakabéh fitur panganyarna, tapi tetep dina pikiran nu meureun aya bug dipikawanoh atawa kanyahoan hadir.
· Lamun versi stabil dipaké teu kaasup fitur anyar nu dipikahoyong tur Anjeun hoyong ngaleutikan resiko pakait sareng cabang master, mertimbangkeun ngagunakeun cabang release pakait, kayaning release / cabang v4.4. Repository GitHub Espressif mimitina bakal nyieun release / cabang v4.4 sarta salajengna ngaleupaskeun versi stabil v4.4 dumasar kana snapshot sajarah husus cabang ieu, sanggeus completing sagala ngembangkeun fitur sarta nguji.
4.1.4 Leuwihview tina ESP-IDF SDK Diréktori
ESP-IDF SDK diwangun ku dua directories utama: esp-idf na .espressif. Urut ngandung kode sumber gudang ESP-IDF files jeung Aksara kompilasi, sedengkeun dimungkinkeun utamana nyimpen ranté alat kompilasi jeung software lianna. Kabiasaan sareng dua diréktori ieu bakal ngabantosan pamekar ngagunakeun sumber daya anu sayogi sareng nyepetkeun prosés pangwangunan. Struktur diréktori ESP-IDF dijelaskeun di handap:
(1) ESP-IDF diréktori kode gudang (/ esp / esp-idf), ditémbongkeun saperti dina Gambar 4.2.
a. Komponén diréktori komponén
Diréktori inti ieu ngahijikeun sababaraha komponén parangkat lunak penting ESP-IDF. Taya kode proyék bisa disusun tanpa ngandelkeun komponén dina diréktori ieu. Éta kalebet dukungan supir pikeun sababaraha chip Espressif. Tina perpustakaan LL sareng antarmuka perpustakaan HAL pikeun périferal ka Supir sareng Virtual tingkat luhur File Sistim (VFS) rojongan lapisan, pamekar bisa milih komponén luyu dina tingkat béda pikeun kaperluan ngembangkeun maranéhanana. ESP-IDF ogé ngadukung sababaraha tumpukan protokol jaringan standar sapertos TCP/IP, HTTP, MQTT, WebSocket, jsb Pamekar bisa ngagunakeun interfaces akrab kawas stop kontak ngawangun aplikasi jaringan. Komponén nyadiakeun pamahaman-
34 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Gambar 4.2. Diréktori kode gudang ESP-IDF
fungsionalitas sive sarta bisa gampang terpadu kana aplikasi, sahingga pamekar museurkeun solely kana logika bisnis. Sababaraha komponén umum ngawengku: · supir: Komponén ieu ngandung program supir periferal pikeun sagala rupa Espressif
runtuyan chip, kayaning GPIO, I2C, SPI, UART, LEDC (PWM), jsb program supir periferal dina komponén ieu nawiskeun interfaces abstrak bebas chip. Unggal periferal boga lulugu umum file (sapertos gpio.h), ngaleungitkeun kabutuhan pikeun nganyahokeun patarosan dukungan khusus chip anu béda. · esp_wifi: Wi-Fi, salaku periferal husus, dianggap salaku komponén misah. Éta kalebet sababaraha API sapertos inisialisasi sababaraha modeu supir Wi-Fi, konfigurasi parameter, sareng pamrosésan acara. Pungsi nu tangtu komponén ieu disadiakeun dina bentuk statik link perpustakaan. ESP-IDF ogé nyadiakeun dokuméntasi supir komprehensif pikeun betah pamakéan.
Bab 4. Nyetél Lingkungan Pangwangunan 35

· freertos: Komponén ieu ngandung kode FreeRTOS lengkep. Salian ti nyadiakeun rojongan komprehensif pikeun sistem operasi ieu, Espressif ogé geus ngalegaan rojongan na kana chip dual-core. Pikeun chip dual-core kawas ESP32 na ESP32-S3, pamaké bisa nyieun tugas dina cores husus.
b. Dokumén diréktori docs
Diréktori ieu ngandung dokumén pangwangunan anu aya hubunganana sareng ESP-IDF, kalebet Pitunjuk Ngamimitian, Manual Rujukan API, Pitunjuk Pangwangunan, jsb.
CATETAN Saatos disusun ku alat otomatis, eusi diréktori ieu disebarkeun di https://docs.espressif.com/projects/esp-idf. Punten pastikeun ngalihkeun targét dokumén ka ESP32-C3 sareng pilih versi ESP-IDF anu ditangtukeun.
c. Pakakas alat Script
Diréktori ieu ngandung alat-alat hareup kompilasi anu biasa dianggo sapertos idf.py, sareng alat terminal monitor idf_monitor.py, jsb. Sub-diréktori cmake ogé ngandung skrip inti. files tina sistem kompilasi, porsi salaku yayasan pikeun ngalaksanakeun aturan kompilasi ESP-IDF. Nalika nambahkeun variabel lingkungan, eusi dina diréktori parabot ditambahkeun kana variabel lingkungan sistem, sahingga idf.py bisa dieksekusi langsung handapeun jalur proyék.
d. Misalampdiréktori program examples
Diréktori ieu ngandung koleksi ageung ESP-IDF exampprogram le nu demonstrate pamakéan komponén API. Mantanamples disusun kana sababaraha subdirektori dumasar kana kategorina:
· ngamimitian: sub-diréktori ieu ngawengku ex entry-levelamples kawas "halo dunya" jeung "kedip-kedip" pikeun mantuan pamaké nangkep dasarna.
· bluetooth: Anjeun tiasa manggihan Bluetooth patali examples dieu, kaasup Bluetooth LE Mesh, Bluetooth LE HID, BluFi, sarta leuwih.
· wifi: Sub-diréktori ieu museurkeun kana Wi-Fi examples, kaasup program dasar kawas Wi-Fi SoftAP, Wi-Fi Station, espnow, kitu ogé proprietary protokol komunikasi ex.amples ti Espressif. Éta ogé kalebet sababaraha lapisan aplikasi exampdumasar kana Wi-Fi, sapertos Iperf, Sniffer, sareng Smart Config.
· périferal: sub-diréktori éksténsif ieu dibagi deui kana sababaraha subfolder dumasar kana ngaran periferal. Ieu utamana ngandung supir periferal examples pikeun chip Espressif, kalawan unggal example featuring sababaraha sub-examples. Contona, sub-diréktori gpio ngawengku dua examples: GPIO na GPIO keyboard matrix. Kadé dicatet yén teu sakabéh examples dina diréktori ieu lumaku pikeun ESP32-C3.
36 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Pikeun example, mantanamples dina usb / host ngan lumaku pikeun périferal kalawan hardware USB Host (saperti ESP32-S3), sarta ESP32-C3 teu boga periferal ieu. Sistem kompilasi biasana nyayogikeun pituduh nalika netepkeun udagan. The README file unggal example daptar chip dirojong. · protokol: sub-diréktori ieu ngandung examples pikeun sagala rupa protokol komunikasi, kaasup MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, ngawengku rupa-rupa protokol komunikasi ex.amples diperlukeun pikeun ngembangkeun IoT. · provisioning: Di dieu, anjeun bakal manggihan provisioning examples pikeun métode béda, kayaning penyediaan Wi-Fi jeung Bluetooth LE provisioning. · sistem: sub-diréktori ieu ngawengku sistem debugging examples (misalna, stack tracing, runtime tracing, task monitoring), power management examples (contona, rupa-rupa mode sare, ko-prosesor), sareng examples patali komponén sistem umum kawas terminal konsol, loop acara, sarta timer sistem. · gudang: Dina sub-diréktori ieu, anjeun bakal manggihan examples sadayana file sistem sareng mékanisme panyimpen anu dirojong ku ESP-IDF (sapertos maca sareng nyerat Flash, kartu SD sareng média panyimpen sanés), ogéamples gudang non-volatile (NVS), FatFS, SPIFFS sarta séjén file operasi sistem. · kaamanan: sub-diréktori ieu ngandung examples patali enkripsi flash. (2) Diréktori ranté alat kompilasi ESP-IDF (/.espressif), ditémbongkeun saperti dina Gambar 4.3.
Gambar 4.3. Diréktori ranté alat kompilasi ESP-IDF
Bab 4. Nyetél Lingkungan Pangwangunan 37

a. Diréktori distribusi software dist
Ranté alat ESP-IDF sareng parangkat lunak sanésna disebarkeun dina bentuk bungkusan anu dikomprés. Salila prosés pamasangan, alat pamasangan mimiti ngundeur pakét anu dikomprés kana diréktori dist, teras ékstrak kana diréktori anu ditangtukeun. Saatos pamasangan parantos réngsé, eusi dina diréktori ieu tiasa dihapus kalayan aman.
b. Python diréktori lingkungan maya python env
Versi béda tina ESP-IDF ngandelkeun versi husus tina bungkusan Python. Masang pakét ieu langsung dina host anu sami tiasa nyababkeun konflik antara versi pakét. Jang ngalampahkeun ieu, ESP-IDF ngagunakeun lingkungan maya Python pikeun ngasingkeun versi pakét anu béda. Kalayan mékanisme ieu, pamekar tiasa masang sababaraha versi ESP-IDF dina host anu sami sareng gampang ngalih antara aranjeunna ku ngimpor variabel lingkungan anu béda.
c. ESP-IDF alat kompilasi ranté alat diréktori
Diréktori ieu utamana ngandung parabot cross-kompilasi diperlukeun pikeun compile proyék ESP-IDF, kayaning parabot CMake, parabot Ninja ngawangun, sarta ranté alat gcc nu ngahasilkeun program executable final. Salaku tambahan, diréktori ieu ngagaduhan perpustakaan standar basa C / C ++ sareng lulugu anu aya files. Upami program ngarujuk kana header sistem file kawas #kaasup , ranté alat kompilasi bakal nomeran stdio.h file dina diréktori ieu.
4.2 Nyetél Lingkungan Pangwangunan ESP-IDF
Lingkungan pamekaran ESP-IDF ngadukung sistem operasi mainstream sapertos Windows, Linux, sareng macOS. Bagian ieu bakal ngenalkeun kumaha nyetél lingkungan pamekaran dina unggal sistem. Disarankeun pikeun ngembangkeun ESP32-C3 dina sistem Linux, anu bakal diwanohkeun sacara rinci di dieu. Seueur petunjuk anu tiasa dianggo dina platform kusabab kasaruaan alat pamekaran. Ku alatan éta, éta disarankan pikeun taliti maca eusi bagian ieu.
CATETAN Anjeun tiasa ngarujuk kana dokumén online anu sayogi di https://bookc3.espressif.com/esp32c3, anu nyayogikeun paréntah anu disebatkeun dina bagian ieu.
4.2.1 Nyetél Lingkungan Pangembangan ESP-IDF dina Linux
Alat pamekaran sareng debugging GNU anu diperyogikeun pikeun lingkungan pangembangan ESP-IDF asli tina sistem Linux. Salaku tambahan, terminal garis paréntah dina Linux kuat sareng ramah-pamaké, janten pilihan idéal pikeun pamekaran ESP32-C3. Anjeun tiasa
38 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

pilih distribusi Linux anu anjeun pikaresep, tapi kami nyarankeun ngagunakeun Ubuntu atanapi sistem basis Debian anu sanés. Bagian ieu nyayogikeun pituduh pikeun nyetél lingkungan pangembangan ESP-IDF dina Ubuntu 20.04.
1. Install bungkusan diperlukeun
Buka terminal anyar sareng laksanakeun paréntah di handap ieu pikeun masang sadaya bungkusan anu diperyogikeun. Paréntah bakal sacara otomatis ngalangkungan bungkusan anu parantos dipasang.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmngadamel ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
TIPS Anjeun kedah nganggo akun administrator sareng kecap akses pikeun paréntah di luhur. Sacara standar, teu aya inpormasi anu bakal ditingalikeun nalika ngalebetkeun kecap konci. Kantun pencét tombol "Asupkeun" pikeun neraskeun prosedur.
Git mangrupikeun alat manajemén kode konci dina ESP-IDF. Saatos junun nyetél lingkungan pangwangunan, anjeun tiasa nganggo paréntah git log pikeun view kabéh parobahan kode dijieun saprak kreasi ESP-IDF. Salaku tambahan, Git ogé dianggo dina ESP-IDF pikeun ngonfirmasi inpormasi versi, anu dipikabutuh pikeun masang ranté alat anu leres anu cocog sareng versi khusus. Kalayan Git, alat sistem penting sanésna kalebet Python. ESP-IDF ngalebetkeun seueur skrip otomatis anu ditulis dina Python. Parabot sapertos CMake, Ninja-build, sareng Ccache seueur dianggo dina proyék C/C++ sareng janten kompilasi kode standar sareng alat wangunan di ESP-IDF. libusb-1.0-0 sareng dfu-util mangrupikeun panggerak utama anu dianggo pikeun komunikasi serial USB sareng ngaduruk firmware. Sakali bungkusan parangkat lunak dipasang, anjeun tiasa nganggo acara apt paréntah pikeun ménta déskripsi detil unggal pakét. Pikeun example, paké apt show git pikeun nyitak inpormasi déskripsi pikeun alat Git.
Q: Naon anu kudu dipigawé lamun versi Python teu dirojong? A: ESP-IDF v4.3 merlukeun versi Python nu teu leuwih handap v3.6. Pikeun vérsi Ubuntu anu langkung lami, mangga unduh sareng pasang versi Python anu langkung luhur sacara manual sareng setel Python3 salaku lingkungan Python standar. Anjeun tiasa mendakan petunjuk lengkep ku milarian kecap konci update-alternatif python.
2. Unduh kode gudang ESP-IDF
Buka terminal sareng jieun polder anu dingaranan esp dina diréktori bumi anjeun nganggo paréntah mkdir. Anjeun tiasa milih nami anu sanés pikeun polder upami anjeun resep. Paké paréntah cd nuliskeun folder.
Bab 4. Nyetél Lingkungan Pangwangunan 39

$ mkdir -p / esp $ cd / esp
Anggo paréntah git clone pikeun ngaunduh kode gudang ESP-IDF, sapertos anu dipidangkeun di handap ieu:
$ git clone -b v4.3.2 –recursive https://github.com/espressif/esp-idf.git
Dina paréntah di luhur, parameter -b v4.3.2 nangtukeun versi pikeun ngundeur (dina hal ieu, versi 4.3.2). Parameter -recursive mastikeun yén sadaya sub-repositori ESP-IDF diunduh sacara rekursif. Émbaran ngeunaan sub-repositories bisa kapanggih dina .gitmodules file.
3. Pasang ranté alat pangwangunan ESP-IDF
Espressif nyayogikeun skrip otomatis install.sh pikeun ngundeur sareng masang ranté alat. Skrip ieu pariksa versi ESP-IDF ayeuna jeung lingkungan sistem operasi, lajeng ngundeur tur masang versi luyu tina pakét alat Python jeung ranté alat kompilasi. Jalur instalasi standar pikeun ranté alat nyaeta /.espressif. Sadaya anu anjeun kedah laksanakeun nyaéta napigasi ka diréktori esp-idf sareng ngajalankeun install.sh.
$ cd /esp/esp-idf $ ./install.sh
Upami anjeun parantos suksés masang ranté alat, terminal bakal ningalikeun:
Kabéh rengse!
Dina titik ieu, anjeun parantos suksés nyetél lingkungan pangembangan ESP-IDF.
4.2.2 Nyetel Lingkungan Pangembangan ESP-IDF dina Windows
1. Ngundeur ESP-IDF parabot installer
TIPS Disarankeun nyetél lingkungan pangembangan ESP-IDF dina Windows 10 atanapi langkung luhur. Anjeun tiasa ngundeur installer ti https://dl.espressif.com/dl/esp-idf/. Pamasang ogé mangrupikeun parangkat lunak open-source, sareng kode sumberna tiasa viewed di https: //github.com/espressif/idf-installer.
· Pamasang alat ESP-IDF online
Pamasang ieu kawilang leutik, ukuranana sakitar 4 MB, sareng bungkusan sareng kode sanésna bakal diunduh salami prosés pamasangan. AdvantagPamasangan online nyaéta yén henteu ngan ukur bungkusan parangkat lunak sareng kode tiasa diunduh nalika dipénta salami prosés pamasangan, tapi ogé ngamungkinkeun pamasangan sadaya sékrési ESP-IDF sareng cabang panganyarna tina kode GitHub (sapertos cabang master). . Nu disadvantage nya éta merlukeun sambungan jaringan salila prosés instalasi, nu bisa ngabalukarkeun gagalna instalasi alatan masalah jaringan.
40 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

· Pamasang alat ESP-IDF Offline Pamasang ieu langkung ageung, ukuranana kira-kira 1 GB, sareng ngandung sadaya bungkusan parangkat lunak sareng kode anu diperyogikeun pikeun nyetél lingkungan. Advan utamatage tina installer offline téh nya éta bisa dipaké dina komputer tanpa aksés Internét, jeung umumna boga laju kasuksésan instalasi luhur. Ieu kudu dicatet yén installer offline ngan bisa install release stabil ESP-IDF dicirikeun ku v*.* atawa v*.*.*.
2. Jalankeun pamasang alat ESP-IDF Saatos ngaunduh versi pamasang anu cocog (nyandak ESP-IDF Tools Offline 4.3.2 pikeun example dieu), ganda-klik exe file pikeun ngaluncurkeun antarmuka pamasangan ESP-IDF. Di handap ieu nunjukkeun kumaha masang ESP-IDF versi stabil v4.3.2 nganggo installer offline.
(1) Dina panganteur "Pilih basa instalasi" ditémbongkeun dina Gambar 4.4, pilih basa nu bakal dipaké tina daptar turun-handap.
Gambar 4.4. Antarmuka "Pilih basa pamasangan" (2) Saatos milih basa, klik "OK" pikeun muka antarmuka "Perjangjian Lisensi"
(tingali Gambar 4.5). Saatos maca perjanjian lisénsi pamasangan sacara saksama, pilih "Kuring nampi perjanjian" teras klik "Salajengna".
Gambar 4.5. Antarmuka "Perjangjian Lisensi" Bab 4. Nyetél Lingkungan Pangwangunan 41

(3) Review konfigurasi sistem dina panganteur "Sistem Pra-instalasi" (tingali Gambar 4.6). Pariksa versi Windows sareng inpormasi parangkat lunak antipirus anu dipasang. Pencét "Salajengna" upami sadaya item konfigurasi normal. Upami teu kitu, anjeun tiasa klik "Log lengkep" kanggo solusi dumasar kana item konci.
Gambar 4.6. "System pariksa sateuacan instalasi" TIPS panganteur
Anjeun tiasa ngalebetkeun log ka https://github.com/espressif/idf-installer/issues pikeun pitulung. (4) Pilih diréktori instalasi ESP-IDF. Di dieu, pilih D:/.espressif, sakumaha ditémbongkeun dina
Gambar 4.7, teras klik "Next". Punten dicatet yén .espressif didieu mangrupikeun diréktori anu disumputkeun. Saatos pamasangan réngsé, anjeun tiasa view eusi husus tina diréktori ieu ku muka file manajer sarta mintonkeun item disumputkeun.
Gambar 4.7. Pilih diréktori pamasangan ESP-IDF 42 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

(5) Pariksa komponén-komponén anu kudu dipasang, saperti dina Gambar 4.8. Disarankeun nganggo pilihan standar, nyaéta, pamasangan lengkep, teras klik "Salajengna".
Gambar 4.8. Pilih komponén anu badé dipasang (6) Konpirmasikeun komponén anu badé dipasang teras klik "Pasang" pikeun ngamimitian pamasangan otomatis.
prosés stallation, ditémbongkeun saperti dina Gambar 4.9. Prosés instalasi bisa lepas puluhan menit sarta bar kamajuan prosés instalasi ditémbongkeun dina Gambar 4.10. Mangga antosan.
Gambar 4.9. Nyiapkeun pikeun pamasangan (7) Saatos pamasangan réngsé, disarankeun pikeun pariksa "Ngadaptar ESP-IDF.
Alat anu tiasa dieksekusi salaku pangaluaran Windows Defender…” pikeun nyegah parangkat lunak antipirus ngahapus files. Nambahkeun item pangaluaran ogé tiasa ngalewatan scan sering ku antipirus
Bab 4. Nyetél Lingkungan Pangwangunan 43

Gambar 4.10. Instalasi kamajuan bar software, greatly ngaronjatkeun efisiensi kompilasi kode tina sistem Windows. Pencét "Rengse" pikeun ngarengsekeun pamasangan lingkungan pamekaran, sapertos anu dipidangkeun dina Gambar 4.11. Anjeun tiasa milih pikeun mariksa "Jalankeun lingkungan PowerShell ESP-IDF" atanapi "Jalankeun ajakan paréntah ESP-IDF". Jalankeun jandela kompilasi langsung saatos pamasangan pikeun mastikeun yén lingkungan pangwangunan fungsina normal.
Gambar 4.11. Instalasi réngsé (8) Buka lingkungan ngembangkeun dipasang dina daptar program (boh ESP-IDF 4.3
CMD atanapi ESP-IDF 4.3 PowerShell terminal, ditémbongkeun saperti dina Gambar 4.12), sarta variabel lingkungan ESP-IDF bakal otomatis ditambahkeun nalika ngajalankeun di terminal. Saatos éta, anjeun tiasa nganggo paréntah idf.py pikeun operasi. ESP-IDF 4.3 CMD anu dibuka dipidangkeun dina Gambar 4.13. 44 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Gambar 4.12. Lingkungan pangwangunan dipasang
Gambar 4.13. ESP-IDF 4.3 CMD
4.2.3 Nyetel Lingkungan Pangembangan ESP-IDF dina Mac
Prosés masang lingkungan pamekaran ESP-IDF dina sistem Mac sami sareng dina sistem Linux. Paréntah pikeun ngaunduh kodeu gudang sareng masang ranté alat sami. Ngan paréntah pikeun masang bungkusan kagumantungan rada béda. 1. Pasang bungkusan dependensi Buka terminal, teras pasang pip, alat manajemén pakét Python, ku ngajalankeun paréntah di handap ieu:
% sudo gampang masang pip
Pasang Homebrew, alat manajemén pakét pikeun macOS, ku ngajalankeun paréntah ieu:
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
Pasang bungkusan kagumantungan anu diperyogikeun ku ngajalankeun paréntah di handap ieu:
% brew python3 install cmake ninja ccache dfu-util
2. Ngundeur kode gudang ESP-IDF Turutan parentah disadiakeun dina bagian 4.2.1 pikeun ngundeur kode gudang ESP-IDF. Léngkah-léngkahna sami sareng pikeun ngaunduh dina sistem Linux.
Bab 4. Nyetél Lingkungan Pangwangunan 45

3. Pasang ranté alat pangwangunan ESP-IDF
Turutan parentah disadiakeun dina bagian 4.2.1 pikeun masang ranté alat ngembangkeun ESP-IDF. Léngkah-léngkahna sami sareng pamasangan dina sistem Linux.
4.2.4 Masang VS Code
Sacara standar, ESP-IDF SDK henteu kalebet alat ngedit kode (sanaos pamasangan ESP-IDF panganyarna pikeun Windows nawiskeun pilihan pikeun masang ESP-IDF Eclipse). Anjeun tiasa nganggo alat panyuntingan téks naon waé pikeun ngédit kodeu teras kompilasi nganggo paréntah terminal.
Salah sahiji alat panyuntingan kode anu populer nyaéta VS Code (Visual Studio Code), anu mangrupikeun pangropéa kode anu gratis sareng seueur fitur kalayan antarmuka anu ramah-pamaké. Ieu nawiskeun rupa-rupa plugins nu nyadiakeun pungsi sapertos navigasi kode, panyorot sintaksis, kontrol versi Git, sareng integrasi terminal. Salaku tambahan, Espressif parantos ngembangkeun plugin khusus anu disebut Espressif IDF pikeun Kode VS, anu nyederhanakeun konfigurasi proyék sareng debugging.
Anjeun tiasa nganggo paréntah kode dina terminal pikeun gancang muka folder ayeuna di VS Code. Alternatipna, anjeun tiasa nganggo potong kompas Ctrl + pikeun muka konsol terminal standar sistem dina VS Code.
TIPS Disarankeun make VS Code pikeun ngembangkeun kode ESP32-C3. Ngundeur tur masang versi panganyarna tina VS Code di https://code.visualstudio.com/.
4.2.5 Bubuka ka Lingkungan Pangwangunan Pihak-katilu
Salian lingkungan ngembangkeun ESP-IDF resmi, nu utamana ngagunakeun basa C, ESP32-C3 ogé ngarojong basa programming mainstream sejen tur rupa-rupa lingkungan ngembangkeun pihak-katilu. Sababaraha pilihan kasohor di antarana:
Arduino: platform open-source pikeun hardware sareng software, ngadukung sababaraha mikrokontroler, kalebet ESP32-C3.
Éta ngagunakeun basa C ++ sareng nawiskeun API anu saderhana sareng standar, anu biasa disebut basa Arduino. Arduino loba dipaké dina ngembangkeun prototipe jeung konteks atikan. Éta nyayogikeun pakét parangkat lunak anu tiasa diperpanjang sareng IDE anu ngamungkinkeun kompilasi sareng kedip-kedip anu gampang.
MicroPython: juru basa Python 3 dirancang pikeun ngajalankeun dina platform mikrokontroler embedded.
Kalayan basa skrip anu sederhana, éta tiasa langsung ngaksés sumber daya périferal ESP32-C3 (sapertos UART, SPI, sareng I2C) sareng fungsi komunikasi (sapertos Wi-Fi sareng Bluetooth LE).
46 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

Ieu simplifies interaksi hardware. MicroPython, digabungkeun jeung perpustakaan operasi matematik éksténsif Python urang, ngamungkinkeun palaksanaan algoritma kompléks on ESP32-C3, facilitating ngembangkeun aplikasi patali AI. Salaku basa naskah, teu perlu kompilasi ulang; modifikasi tiasa dilakukeun sareng naskah tiasa dieksekusi langsung.
NodeMCU: juru basa LUA dikembangkeun pikeun chip séri ESP.
Éta ngadukung ampir sadaya pungsi periferal chip ESP sareng langkung hampang tibatan MicroPython. Sarupa jeung MicroPython, NodeMCU ngagunakeun basa skrip, ngaleungitkeun kabutuhan kompilasi ulang.
Salajengna, ESP32-C3 ogé ngadukung sistem operasi NuttX sareng Zephyr. NuttX mangrupikeun sistem operasi sacara real-time anu nyayogikeun antarmuka anu cocog sareng POSIX, ningkatkeun portabilitas aplikasi. Zephyr mangrupikeun sistem operasi real-time leutik anu dirancang khusus pikeun aplikasi IoT. Éta kalebet seueur perpustakaan parangkat lunak anu diperyogikeun dina pamekaran IoT, laun-laun mekar janten ékosistem parangkat lunak anu komprehensif.
Buku ieu henteu nyayogikeun pitunjuk pamasangan anu lengkep pikeun lingkungan pangembangan anu disebut tadi. Anjeun tiasa masang lingkungan pamekaran dumasar kana sarat anjeun ku nuturkeun dokuméntasi sareng petunjuk masing-masing.
4.3 Sistim kompilasi ESP-IDF
4.3.1 Konsép Dasar Sistem Kompilasi
Proyék ESP-IDF mangrupikeun kumpulan program utama kalayan fungsi éntri sareng sababaraha komponén fungsional anu mandiri. Pikeun example, proyék nu ngatur saklar LED utamana diwangun ku hiji program Éntri utama jeung komponén supir nu ngatur GPIO. Upami anjeun hoyong ngawujudkeun kadali jauh LED, anjeun ogé kedah nambihan Wi-Fi, tumpukan protokol TCP / IP, jsb.
Sistem kompilasi tiasa nyusun, ngaitkeun, sareng ngahasilkeun anu tiasa dieksekusi files (.bin) pikeun kode ngaliwatan susunan aturan wangunan. Sistem kompilasi tina ESP-IDF v4.0 na versi luhur dumasar kana CMake sacara standar, jeung naskah kompilasi CMakeLists.txt bisa dipaké pikeun ngadalikeun paripolah kompilasi kode. Salian ngarojong rumpaka dasar CMake, ngahartikeun ogé sistem kompilasi ESP-IDF susunan aturan kompilasi standar jeung fungsi CMake, tur anjeun bisa nulis naskah kompilasi kalawan pernyataan basajan.
4.3.2 Proyék File Struktur
Proyék nyaéta polder anu ngandung program éntri utama, komponén anu ditetepkeun ku pangguna, sareng files diperlukeun pikeun ngawangun aplikasi laksana, kayaning Aksara kompilasi, konfigurasi
Bab 4. Nyetél Lingkungan Pangwangunan 47

files, tabel partisi, jsb Proyék bisa ditiron jeung disalurkeun, sarta laksana sarua file bisa disusun jeung dihasilkeun dina mesin jeung versi sarua lingkungan ngembangkeun ESP-IDF. Hiji proyék ESP-IDF has file struktur ditémbongkeun dina Gambar 4.14.
Gambar 4.14. Proyék ESP-IDF has file Struktur Kusabab ESP-IDF ngarojong sababaraha chip IoT ti Espressif, kaasup ESP32, ESP32-S runtuyan, ESP32-C runtuyan, ESP32-H runtuyan, jeung sajabana, hiji udagan perlu ditangtukeun saméméh compile kode. Targetna nyaéta alat hardware anu ngajalankeun program aplikasi sareng target ngawangun sistem kompilasi. Gumantung kana kabutuhan Anjeun, Anjeun bisa nangtukeun hiji atawa leuwih target pikeun proyék Anjeun. Pikeun exampLe, ngaliwatan paréntah idf.py set-target esp32c3, Anjeun tiasa nyetel udagan kompilasi ka ESP32-C3, salila parameter standar jeung jalur ranté alat kompilasi pikeun ESP32C3 bakal dimuat. Saatos kompilasi, program anu tiasa dieksekusi tiasa didamel pikeun ESP32C3. Anjeun ogé tiasa ngajalankeun paréntah set-target deui pikeun nyetél target anu béda, sareng sistem kompilasi bakal otomatis ngabersihan sareng ngonpigurasikeun deui. Komponén
Komponén dina ESP-IDF mangrupikeun unit kode modular sareng mandiri anu diurus dina sistem kompilasi. Éta diatur salaku polder, kalayan nami polder ngalambangkeun nami komponén sacara standar. Unggal komponén gaduh naskah kompilasi sorangan anu 48 ESP32-C3 Wireless Adventure: Pitunjuk Komprehensif pikeun IoT

nangtukeun parameter kompilasi sarta kagumantungan. Salila prosés kompilasi, komponén disusun jadi perpustakaan statik misah (.a files) sarta ahirna digabungkeun jeung komponén séjén pikeun ngabentuk program aplikasi.
ESP-IDF nyayogikeun fungsi penting, sapertos sistem operasi, supir periferal, sareng tumpukan protokol jaringan, dina bentuk komponén. Komponén ieu disimpen dina diréktori komponén anu aya dina diréktori akar ESP-IDF. Pamekar henteu kedah nyalin komponén ieu kana diréktori komponén myProject. Sabalikna, aranjeunna ngan ukur kedah netepkeun hubungan kagumantungan komponén ieu dina CMakeLists.txt proyék. file ngagunakeun REQUIRES atanapi PRIV_REQUIRES diréktif. Sistem kompilasi bakal otomatis milarian sareng nyusun komponén anu diperyogikeun.
Ku alatan éta, diréktori komponén dina myProject mah teu perlu. Ieu ngan dipaké pikeun ngawengku sababaraha komponén custom proyek, nu bisa jadi perpustakaan pihak-katilu atawa kode-diartikeun pamaké. Salaku tambahan, komponén tiasa sumberna tina diréktori sanés sanés ESP-IDF atanapi proyék ayeuna, sapertos tina proyék open-source anu disimpen dina diréktori sanés. Dina hal ieu, anjeun ngan perlu nambahkeun jalur komponén ku netepkeun variabel EXTRA_COMPONENT_DIRS dina CMakeLists.txt handapeun diréktori root. Diréktori ieu bakal override sagala komponén ESP-IDF kalawan nami nu sami, mastikeun komponén bener dipaké.
Program Éntri utama Diréktori utama dina proyék éta sami file struktur salaku komponén séjén (misalna komponén1). Sanajan kitu, eta boga significance husus sabab mangrupakeun komponén wajib anu kudu aya dina unggal proyék. Diréktori utama ngandung kode sumber proyék sareng titik éntri program pangguna, biasana namina app_main. Sacara standar, palaksanaan program pamaké dimimitian ti titik éntri ieu. Komponén utama ogé béda dina éta sacara otomatis gumantung kana sadaya komponén dina jalur panéangan. Ku alatan éta, teu perlu sacara eksplisit nunjukkeun dependensi ngagunakeun REQUIRES atanapi PRIV_REQUIRES diréktif dina CMakeLists.txt file.
Konfigurasi file Diréktori akar proyék ngandung konfigurasi file disebut sdkconfig, nu ngandung parameter konfigurasi pikeun sakabéh komponén dina proyék nu. sdkconfig file otomatis dihasilkeun ku sistem kompilasi sarta bisa dirobah sarta regenerated ku paréntah idf.py menuconfig. Pilihan menuconfig utamana asalna tina Kconfig.projbuild proyék jeung Kconfig sahiji komponén. pamekar komponén umumna nambahkeun item konfigurasi dina Kconfig sangkan komponén fléksibel tur configurable.
Diréktori ngawangun Sacara standar, diréktori ngawangun dina proyék nyimpen panengah files jeung fi-
Bab 4. Nyetél Lingkungan Pangwangunan 49

nal program laksana dihasilkeun ku paréntah idf.py ngawangun. Sacara umum, teu perlu langsung ngakses eusi diréktori ngawangun. ESP-IDF nyayogikeun paréntah anu tos siap pikeun berinteraksi sareng diréktori, sapertos nganggo paréntah flash idf.py pikeun otomatis milarian binér anu disusun. file jeung flash ka alamat flash dieusian, atawa ngagunakeun idf.py paréntah fullclean pikeun ngabersihan sakabéh diréktori ngawangun.
Méja partisi (partitions.csv) Unggal proyék merlukeun tabel partisi pikeun ngabagi spasi flash jeung nangtukeun ukuran jeung alamat awal program laksana jeung spasi data pamaké. Paréntah idf.py flash atawa program pamutahiran OTA bakal flash firmware ka alamat pakait nurutkeun tabel ieu. ESP-IDF nyadiakeun sababaraha tabel partisi standar dina komponén / partition_table, kayaning partitions_singleapp.csv na partitions_two_ ota.csv, nu bisa dipilih dina menuconfig.
Lamun tabel partisi standar tina sistem teu bisa minuhan sarat proyék nu, a partitions.csv custom bisa ditambahkeun kana diréktori proyék sarta dipilih di menuconfig.
4.3.3 Aturan Ngawangun Default tina Sistem Kompilasi
Aturan keur overriding komponén kalawan ngaran anu sarua Salila prosés pilarian komponén, sistem kompilasi nuturkeun urutan husus. Mimiti milarian komponén internal ESP-IDF, teras milarian komponén proyék pangguna, sareng tungtungna milarian komponén dina EXTRA_COMPONENT_DIRS. Dina kasus dimana sababaraha directories ngandung komponén kalawan ngaran nu sami, komponén kapanggih dina diréktori panungtungan bakal override sagala komponén saméméhna mibanda ngaran nu sami. Aturan ieu ngamungkinkeun pikeun kustomisasi komponén ESP-IDF dina proyék pamaké, bari tetep kode aslina ESP-IDF gembleng.
Aturan keur kaasup komponén umum sacara standar Sakumaha disebutkeun dina bagian 4.3.2, komponén kudu eksplisit tangtukeun kagumantungan maranéhanana dina komponén séjén dina CMakeLists.txt. Sanajan kitu, komponén umum kayaning freertos otomatis diasupkeun kana sistem ngawangun sacara standar, sanajan hubungan kagumantungan maranéhanana henteu didefinisikeun sacara eksplisit dina naskah kompilasi. Komponén umum ESP-IDF kalebet freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv, sareng cxx. Ngagunakeun komponén umum ieu avoids karya repetitive nalika nulis CMakeLists.txt tur nyieun leuwih singket.
Aturan pikeun item konfigurasi overriding Pamekar bisa nambahkeun parameter konfigurasi standar ku nambahkeun konfigurasi standar file ngaranna sdkconfig.defaults kana proyék. Pikeun example, nambahan CONFIG_LOG_
50 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

DEFAULT_LEVEL_NONE = y tiasa ngonpigurasikeun antarmuka UART pikeun henteu nyitak data log sacara standar. Saterusna, lamun parameter husus kudu diatur pikeun target nu tangtu, konfigurasi a file ngaranna sdkconfig.defaults.TARGET_NAME bisa ditambahkeun, dimana TARGET_NAME bisa esp32s2, esp32c3, jeung saterusna. Konfigurasi ieu files anu diimpor kana sdkconfig salila kompilasi, kalawan konfigurasi standar umum file sdkconfig.defaults keur diimpor heula, dituturkeun ku konfigurasi target-spésifik file, kayaning sdkconfig.defaults.esp32c3. Dina kasus dimana aya item konfigurasi nu ngaranna sarua, konfigurasi dimungkinkeun file bakal nimpa urut.
4.3.4 Bubuka Naskah Panyusun
Nalika ngamekarkeun proyék nganggo ESP-IDF, pamekar henteu ngan ukur kedah nyerat kode sumber tapi ogé kedah nyerat CMakeLists.txt pikeun proyék sareng komponenana. CMakeLists.txt mangrupa téks file, ogé katelah skrip kompilasi, anu nangtukeun runtuyan objék kompilasi, item konfigurasi kompilasi, sareng paréntah pikeun nungtun prosés kompilasi kode sumber. Sistem kompilasi ESP-IDF v4.3.2 dumasar kana CMake. Salian ngadukung fungsi sareng paréntah CMake asli, éta ogé ngahartikeun sababaraha fungsi khusus, ngajantenkeun langkung gampang nyerat naskah kompilasi.
Skrip kompilasi dina ESP-IDF utamina kalebet naskah kompilasi proyék sareng naskah kompilasi komponén. CMakeLists.txt dina diréktori akar proyék disebut naskah kompilasi proyék, nu nungtun prosés kompilasi sakabéh proyék. Skrip kompilasi proyék dasar biasana kalebet tilu garis ieu:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Di antarana, cmake_minimum_required (VERSION 3.5) kudu ditempatkeun dina baris kahiji, nu dipaké pikeun nunjukkeun jumlah minimum versi CMake diperlukeun ku proyék. Versi anyar tina CMake umumna mundur cocog sareng versi heubeul, jadi saluyukeun nomer versi sasuai lamun maké paréntah CMake anyar pikeun mastikeun kasaluyuan.
ngawengku ($ ENV {IDF_PATH}/tools/cmake/project.cmake) impor item konfigurasi tos tangtu jeung paréntah tina sistem kompilasi ESP-IDF, kaasup aturan ngawangun standar tina sistem kompilasi dijelaskeun dina Bagéan 4.3.3. project(myProject) nyieun proyék sorangan jeung nangtukeun ngaranna. Ngaran ieu bakal dipaké salaku binér kaluaran ahir file ngaran, ie, myProject.elf na myProject.bin.
Proyék tiasa gaduh sababaraha komponén, kalebet komponén utama. Diréktori tingkat luhur unggal komponén ngandung hiji CMakeLists.txt file, nu disebut naskah kompilasi komponén. Aksara kompilasi komponén utamana dipaké pikeun nangtukeun dependensi komponén, parameter konfigurasi, kode sumber files, sarta kaasup lulugu files pikeun
Bab 4. Nyetél Lingkungan Pangwangunan 51

kompilasi. Kalayan fungsi khusus ESP-IDF idf_component_register, kode minimum anu diperyogikeun pikeun naskah kompilasi komponén nyaéta kieu:

1. idf_component_register(SRCS "src1.c"

2.

INCLUDE_DIRS "kalebet"

3.

Mbutuhkeun komponén1)

Parameter SRCS nyadiakeun daptar sumber files dina komponén, dipisahkeun ku spasi lamun aya sababaraha files. Parameter INCLUDE_DIRS nyadiakeun daptar lulugu umum file directories pikeun komponén, nu bakal ditambahkeun kana kaasup jalur pilarian pikeun komponén séjén nu gumantung kana komponén ayeuna. Parameter REQUIRES ngidentipikasi dependensi komponén umum pikeun komponén ayeuna. Diperlukeun komponén-komponén pikeun nyatakeun sacara eksplisit komponén-komponén anu gumantungna, sapertos komponén2 gumantung kana komponén1. Nanging, pikeun komponén utama, anu gumantung kana sadaya komponén sacara standar, parameter REQUIRES tiasa dileungitkeun.

Salaku tambahan, paréntah CMake asli ogé tiasa dianggo dina naskah kompilasi. Pikeun example, make set paréntah pikeun set variabel, kayaning set (VARIABLE "VALUE").

4.3.5 Bubuka Paréntah umum
ESP-IDF ngagunakeun CMake (alat konfigurasi proyék), Ninja (alat wangunan proyék) jeung esptool (alat flash) dina prosés kompilasi kode. Unggal alat maénkeun peran anu béda dina prosés kompilasi, wangunan, sareng lampu kilat, sareng ogé ngadukung paréntah operasi anu béda. Pikeun mempermudah operasi pamaké, ESP-IDF nambahkeun hiji hareup-tungtung idf.py hasil ngahijikeun Tatar anu ngamungkinkeun Paréntah luhur disebut gancang.
Sateuacan nganggo idf.py, pastikeun yén:
· Variabel lingkungan IDF_PATH of ESP-IDF geus ditambahkeun kana terminal ayeuna. · Diréktori palaksanaan paréntah nyaéta diréktori akar proyék, anu kalebet
naskah kompilasi proyék CMakeLists.txt.
Paréntah umum tina idf.py nyaéta kieu:
· idf.py –help: mintonkeun daptar paréntah jeung parentah pamakeanana. · idf.py set-target : Nyetél kompilasi taidf.py fullcleanrget, sapertos
salaku ngaganti kalawan esp32c3. · idf.py menuconfig: ngaluncurkeun menuconfig, konfigurasi grafis terminal
alat, nu bisa milih atawa ngaropéa pilihan konfigurasi, sarta hasil konfigurasi disimpen dina sdkconfig file. · idf.py ngawangun: ngamimitian kompilasi kode. Anu panengah files jeung program laksana final dihasilkeun ku kompilasi bakal disimpen dina diréktori ngawangun proyék sacara standar. Prosés kompilasi téh incremental, nu hartina lamun ngan hiji sumber file geus dirobah, ngan dirobah file bakal disusun waktos salajengna.

52 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

· idf.py bersih: meresihan panengah files dihasilkeun ku kompilasi proyék. Sakabéh proyék bakal kapaksa compile dina kompilasi salajengna. Catet yén konfigurasi CMake sareng modifikasi konfigurasi anu dilakukeun ku menuconfig moal dipupus nalika ngabersihkeun.
· idf.py fullclean: mupus sakabéh diréktori ngawangun, kaasup sakabéh kaluaran konfigurasi CMake files. Nalika ngawangun proyék deui, CMake bakal ngonpigurasikeun proyék ti mimiti. Punten dicatet yén paréntah ieu bakal ngahapus sadayana sacara rekursif files dina diréktori ngawangun, jadi make eta kalawan caution, sarta konfigurasi proyék file moal dipupus.
· idf.py flash: kedip-kedip program executable binér file dihasilkeun ku ngawangun kana udagan ESP32-C3. Pilihan -p jeung -b dipaké pikeun nyetel ngaran alat tina port serial sarta laju baud keur kedip-kedip, tuturutan. Lamun dua pilihan ieu teu dieusian, port serial bakal otomatis kauninga sarta laju baud standar bakal dipaké.
· idf.py monitor: mintonkeun kaluaran port serial tina target ESP32-C3. Pilihan -p bisa dipaké pikeun nangtukeun ngaran alat tina port serial host-sisi. Salila percetakan port serial, pencét kombinasi konci Ctrl +] pikeun kaluar monitor.
Paréntah di luhur ogé tiasa digabungkeun upami diperyogikeun. Pikeun example, paréntah idf.py ngawangun flash monitor bakal ngalakukeun kompilasi kode, flash, tur muka serial port monitor dina runtuyan.
Anjeun tiasa nganjang ka https://bookc3.espressif.com/build-system pikeun terang langkung seueur ngeunaan sistem kompilasi ESP-IDF.
4.4 Prakték: Nyusun ExampProgram "Blink"
4.4.1 Kelampjeung Analisis
Bagian ieu bakal nyandak program Blink salaku example pikeun nganalisis éta file struktur jeung aturan coding proyék nyata di jéntré. Program Blink ngalaksanakeun pangaruh kedip-kedip LED, sareng proyékna aya dina diréktori examples / ngamimitian / Blink, nu ngandung sumber file, konfigurasi files, sareng sababaraha naskah kompilasi.
Proyék lampu pinter diwanohkeun dina buku ieu dumasar kana ex ieuampprogram éta. Fungsi bakal saeutik demi saeutik ditambahkeun dina bab engké pikeun tungtungna ngalengkepan eta.
Kode sumber Dina raraga demonstrate sakabéh prosés ngembangkeun, program Blink geus disalin ka esp32c3-iot-proyék / firmware alat / 1 Blink.
Struktur diréktori proyék Blink files ditémbongkeun dina Gambar 4.15.
Proyék Blink ngan ngandung hiji diréktori utama, nu mangrupakeun komponén husus nu
Bab 4. Nyetél Lingkungan Pangwangunan 53

Gambar 4.15. File struktur diréktori proyék Blink

kudu kaasup sakumaha ditétélakeun dina bagian 4.3.2. Diréktori utama utamana dipaké pikeun nyimpen palaksanaan fungsi app_main (), nu titik Éntri ka program pamaké.Proyék Blink teu kaasup diréktori komponén, sabab ex ieu.ample ngan perlu ngagunakeun komponén nu hadir kalawan ESP-IDF tur teu merlukeun komponén tambahan. CMakeLists.txt kaasup dina proyék Blink dipaké pikeun panduan prosés kompilasi, sedengkeun Kconfig.projbuild dipaké pikeun nambahkeun item konfigurasi pikeun ex ieu.ampprogram dina menuconfig. Lain teu perlu files moal mangaruhan kompilasi kode, ngarah moal dibahas di dieu. Bubuka lengkep pikeun proyék Blink files nyaéta kieu.

1. /*blink.c ngawengku lulugu handap files*/

2. #kaasup

//Standar C perpustakaan lulugu file

3. #include "freeertos / freeRTOS.h" // FreeRTOS lulugu utama file

4. #include "freeertos/task.h"

// FreeRTOS Tugas lulugu file

5. #include "sdkconfig.h"

// Konfigurasi lulugu file dihasilkeun ku kconfig

6. #include "driver/gpio.h"

// GPIO supir lulugu file

Sumberna file blink.c ngandung runtuyan lulugu files pakait jeung fungsi deklarasi

tions. ESP-IDF umumna nuturkeun urutan kaasup lulugu perpustakaan baku files, BébasR-

lulugu TOS files, lulugu supir files, lulugu komponén séjén files, sarta lulugu proyék files.

Urutan di mana lulugu files anu kaasup bisa mangaruhan hasil kompilasi final, jadi coba mun

nuturkeun aturan standar. Ieu kudu dicatet yén sdkconfig.h otomatis dihasilkeun

ku kconfig sarta ngan bisa ngonpigurasi ngaliwatan paréntah idf.py menuconfig.

modifikasi langsung tina lulugu ieu file bakal ditimpa.

1. /* Anjeun tiasa milih GPIO pakait jeung LED dina idf.py menuconfig, sarta hasil modifikasi tina menuconfig nyaeta nilai CONFIG_BLINK.

_GPIO bakal dirobah. Anjeun oge bisa langsung ngarobah harti makro

di dieu, sarta robah CONFIG_BLINK_GPIO ka nilai tetep.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. void app_main(void)

4. {

5.

/* Konpigurasikeun IO salaku fungsi standar GPIO, Aktipkeun mode pull-up, jeung

6.

nonaktipkeun mode input jeung output*/

7.

gpio_reset_pin(BLINK_GPIO);

54 ESP32-C3 Wireless Adventure: Pituduh Komprehensif pikeun IoT

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

/*Setel GPIO kana modeu kaluaran*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); sedengkeun(1) {
/*Citak log*/ printf("Pareuman LEDn"); /*Pareuman LED (kaluaran tingkat low)*/ gpio_set_level (BLINK_GPIO, 0); /* Reureuh (1000 mdet)*/ vTaskDelay (1000 / portTICK_PERIOD_MS); printf("Ngaktipkeun LEDn"); /* Hurungkeun LED (kaluaran tingkat luhur)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }

Fungsi app_main() dina Blink exampprogram le fungsi salaku titik éntri pikeun program pamaké. Ieu mangrupakeun fungsi basajan tanpa parameter jeung euweuh nilai balik. Pungsi ieu disebut sanggeus sistem geus réngsé initialization, nu ngawengku tugas kayaning initialising port serial log, ngonpigurasikeun single / dual core, sarta ngonpigurasikeun watchdog.

Fungsi app_main () dijalankeun dina konteks tugas anu dingaranan main. Ukuran tumpukan jeung prioritas tugas ieu bisa disaluyukeun dina menuconfig Componentconfig umum ESP-patali.

Pikeun tugas basajan kawas kedip-kedip LED, sagala kode diperlukeun bisa dilaksanakeun langsung dina app_main () fungsi. Ieu ilaharna ngalibatkeun initialising GPIO pakait jeung LED sarta ngagunakeun bari (1) loop toggle LED on na mareuman. Alternatipna, Anjeun bisa make FreeRTOS API pikeun nyieun tugas anyar nu handles LED blinking. Sakali tugas anyar geus hasil dijieun, anjeun tiasa kaluar tina fungsi app_main ().

Eusi utama / CMakeLists.txt file, anu nungtun prosés kompilasi pikeun komponén utama, nyaéta kieu:

1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )

Di antarana, main/CMakeLists.txt ngan nelepon hiji fungsi sistem kompilasi, nyaéta idf_component_register. Sarupa jeung CMakeLists.txt pikeun kalolobaan komponén séjén, blink.c ditambahkeun kana SRCS, sarta sumberna. files ditambahkeun kana SRCS bakal disusun. Dina waktu nu sarua, ".", nu ngagambarkeun jalur dimana CMakeLists.txt lokasina, kudu ditambahkeun kana INCLUDE_DIRS salaku directories pilarian pikeun lulugu. files. Eusi CMakeLists.txt nyaéta kieu:
1. #Specify v3.5 salaku versi CMake pangkolotna dirojong ku proyék ayeuna 2. #Versi leuwih handap v3.5 kudu ditingkatkeun saméméh kompilasi terus 3. cmake_minimum_required(VERSION 3.5) 4. #Include standar CMake konfigurasi tina ESP. -Sistem kompilasi IDF

Bab 4. Nyetél Lingkungan Pangwangunan 55

5. ngawengku ($ ENV {IDF_PATH}/tools/cmake/project.cmake) 6. #Create a project ngaranna "blink" 7. project(myProject)
Di antarana, CMakeLists.txt dina diréktori akar utamana ngawengku $ENV{IDF_ PATH}/tools/cmake/project.cmake, nu mangrupakeun konfigurasi CMake utama. file disadiakeun ku ESP-IDF. Hal ieu dipaké pikeun con

Dokumén / Sumberdaya

Sistem Espressif ESP32-C3 Wireless Adventure [pdf] Pituduh pamaké
ESP32-C3 Wireless Adventure, ESP32-C3, Wireless Adventure, Adventure

Rujukan

Ninggalkeun komentar

alamat surélék anjeun moal diterbitkeun. Widang diperlukeun ditandaan *