Pengembaraan Tanpa Wayar ESP32-C3
Pengembaraan Tanpa Wayar ESP32-C3
Panduan Komprehensif untuk IoT
Sistem Espressif 12 Jun 2023
Spesifikasi
- Produk: Pengembaraan Tanpa Wayar ESP32-C3
- Pengilang: Sistem Espressif
- Tarikh: 12 Jun 2023
Arahan Penggunaan Produk
Persediaan
Sebelum menggunakan Pengembaraan Tanpa Wayar ESP32-C3, pastikan anda menggunakannya
biasa dengan konsep dan seni bina IoT. Ini akan membantu
anda memahami cara peranti sesuai dengan ekosistem IoT yang lebih besar
dan aplikasinya yang berpotensi dalam rumah pintar.
Pengenalan dan Amalan Projek IoT
Dalam bahagian ini, anda akan belajar tentang projek IoT biasa,
termasuk modul asas untuk peranti IoT biasa, modul asas
aplikasi pelanggan, dan platform awan IoT biasa. Ini akan
menyediakan anda asas untuk memahami dan mencipta anda
projek IoT sendiri.
Amalan: Projek Cahaya Pintar
Dalam projek amalan ini, anda akan belajar cara mencipta pintar
cahaya menggunakan Pengembaraan Tanpa Wayar ESP32-C3. Struktur projek,
fungsi, penyediaan perkakasan, dan proses pembangunan akan
dijelaskan secara terperinci.
Struktur Projek
Projek ini terdiri daripada beberapa komponen, termasuk
Pengembaraan Wayarles ESP32-C3, LED, penderia dan awan
hujung belakang.
Fungsi Projek
Projek lampu pintar membolehkan anda mengawal kecerahan dan
warna LED dari jauh melalui aplikasi mudah alih atau web
antara muka.
Penyediaan Perkakasan
Untuk menyediakan projek, anda perlu mengumpulkan
komponen perkakasan yang diperlukan, seperti ESP32-C3 Wireless
Papan pengembaraan, LED, perintang dan bekalan kuasa.
Proses Pembangunan
Proses pembangunan melibatkan penubuhan pembangunan
persekitaran, menulis kod untuk mengawal LED, menyambung ke
bahagian belakang awan, dan menguji kefungsian pintar
ringan.
Pengenalan kepada ESP RainMaker
ESP RainMaker ialah rangka kerja yang berkuasa untuk membangunkan IoT
peranti. Dalam bahagian ini, anda akan mempelajari apa itu ESP RainMaker dan
bagaimana ia boleh dilaksanakan dalam projek anda.
Apakah ESP RainMaker?
ESP RainMaker ialah platform berasaskan awan yang menyediakan satu set
alatan dan perkhidmatan untuk membina dan mengurus peranti IoT.
Pelaksanaan ESP RainMaker
Bahagian ini menerangkan komponen berbeza yang terlibat dalam
melaksanakan ESP RainMaker, termasuk perkhidmatan tuntutan,
Ejen RainMaker, bahagian belakang awan dan Pelanggan RainMaker.
Amalan: Perkara Utama untuk Membangunkan dengan ESP RainMaker
Dalam bahagian latihan ini, anda akan belajar tentang perkara utama
pertimbangkan semasa membangunkan dengan ESP RainMaker. Ini termasuk peranti
tuntutan, penyegerakan data dan pengurusan pengguna.
Ciri-ciri ESP RainMaker
ESP RainMaker menawarkan pelbagai ciri untuk pengurusan pengguna, tamat
pengguna, dan pentadbir. Ciri-ciri ini membolehkan peranti mudah
persediaan, alat kawalan jauh dan pemantauan.
Menyediakan Persekitaran Pembangunan
Bahagian ini memberikan overview daripada ESP-IDF (Espressif IoT
Rangka Kerja Pembangunan), yang merupakan rangka kerja pembangunan rasmi
untuk peranti berasaskan ESP32. Ia menerangkan versi yang berbeza bagi
ESP-IDF dan cara menyediakan persekitaran pembangunan.
Pembangunan Perkakasan dan Pemacu
Reka Bentuk Perkakasan Produk Cahaya Pintar berdasarkan ESP32-C3
Bahagian ini memfokuskan pada reka bentuk perkakasan cahaya pintar
produk berasaskan Pengembaraan Tanpa Wayar ESP32-C3. Ia meliputi
ciri dan komposisi produk cahaya pintar, serta
reka bentuk perkakasan sistem teras ESP32-C3.
Ciri dan Komposisi Produk Cahaya Pintar
Subseksyen ini menerangkan ciri dan komponen yang membuat
sehingga produk cahaya pintar. Ia membincangkan fungsi yang berbeza
dan pertimbangan reka bentuk untuk mencipta lampu pintar.
Reka Bentuk Perkakasan Sistem Teras ESP32-C3
Reka bentuk perkakasan sistem teras ESP32-C3 termasuk kuasa
bekalan, urutan kuasa hidup, tetapan semula sistem, denyar SPI, sumber jam,
dan pertimbangan RF dan antena. Subseksyen ini memperuntukkan
maklumat terperinci tentang aspek-aspek tersebut.
Soalan Lazim
S: Apakah ESP RainMaker?
A: ESP RainMaker ialah platform berasaskan awan yang menyediakan alatan
dan perkhidmatan untuk membina dan mengurus peranti IoT. Ia memudahkan
proses pembangunan dan membolehkan persediaan peranti mudah, jauh
kawalan, dan pemantauan.
S: Bagaimanakah saya boleh menyediakan persekitaran pembangunan untuk
ESP32-C3?
J: Untuk menyediakan persekitaran pembangunan untuk ESP32-C3, anda perlukan
untuk memasang ESP-IDF (Espressif IoT Development Framework) dan
konfigurasikannya mengikut arahan yang disediakan. ESP-IDF ialah
rangka kerja pembangunan rasmi untuk peranti berasaskan ESP32.
S: Apakah ciri ESP RainMaker?
A: ESP RainMaker menawarkan pelbagai ciri, termasuk pengguna
pengurusan, ciri pengguna akhir dan ciri pentadbir. Pengurusan pengguna
membolehkan tuntutan peranti mudah dan penyegerakan data. Pengguna akhir
ciri membolehkan kawalan jauh peranti melalui aplikasi mudah alih atau
web antara muka. Ciri pentadbir menyediakan alat untuk pemantauan peranti
dan pengurusan.
Pengembaraan Tanpa Wayar ESP32-C3
Panduan Komprehensif untuk IoT
Sistem Espressif 12 Jun 2023
kandungan
I Persediaan
1
1 Pengenalan kepada IoT
3
1.1 Senibina IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Aplikasi IoT dalam Rumah Pintar . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Pengenalan dan Amalan Projek IoT
9
2.1 Pengenalan kepada Projek IoT Biasa . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Modul Asas untuk Peranti IoT Biasa . . . . . . . . . . . . . . . . . 9
2.1.2 Modul Asas Aplikasi Pelanggan. . . . . . . . . . . . . . . . . . . 10
2.1.3 Pengenalan kepada Platform Awan IoT Biasa. . . . . . . . . . . . . . 11
2.2 Amalan: Projek Cahaya Pintar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Struktur Projek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Fungsi Projek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Penyediaan Perkakasan. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Proses Pembangunan. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3 Pengenalan kepada ESP RainMaker
19
3.1 Apakah itu ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Pelaksanaan ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . 21
3.2.1 Perkhidmatan Tuntutan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Agen Pembuat Hujan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.3 Bahagian Belakang Awan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 Pelanggan RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Amalan: Perkara Utama untuk Membangunkan dengan ESP RainMaker . . . . . . . . . . . . 25
3.4 Ciri-ciri ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.1 Pengurusan Pengguna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Ciri Pengguna Akhir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.3 Ciri Pentadbir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Menyediakan Persekitaran Pembangunan
31
4.1 ESP-IDF Selesaiview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Versi ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
4.1.2 Aliran Kerja Git ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Memilih Versi yang Sesuai . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Berakhirview daripada Direktori SDK ESP-IDF . . . . . . . . . . . . . . . . . . . . 34 4.2 Menyediakan Persekitaran Pembangunan ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Menyediakan Persekitaran Pembangunan ESP-IDF pada Linux . . . . . . . . 38 4.2.2 Menyediakan Persekitaran Pembangunan ESP-IDF pada Windows . . . . . . 40 4.2.3 Menyediakan Persekitaran Pembangunan ESP-IDF pada Mac . . . . . . . . . 45 4.2.4 Memasang Kod VS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Pengenalan kepada Persekitaran Pembangunan Pihak Ketiga . . . . . . . . 46 4.3 Sistem Penyusunan ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Konsep Asas Sistem Penyusunan. . . . . . . . . . . . . . . . . . 47 4.3.2 Projek File Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Peraturan Binaan Lalai Sistem Penyusunan. . . . . . . . . . . . . 50 4.3.4 Pengenalan Skrip Penyusunan . . . . . . . . . . . . . . . . . . 51 4.3.5 Pengenalan kepada Perintah Lazim. . . . . . . . . . . . . . . . . . . 52 4.4 Latihan: Menyusun CthampProgram "Kelip" . . . . . . . . . . . . . . . . . . 53 4.4.1 Cthample Analisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Menyusun Program Blink. . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Memancarkan Program Berkelip . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analisis Log Port Bersiri Program Blink. . . . . . . . . . . . . . 60 4.5 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
II Pembangunan Perkakasan dan Pemacu
65
5 Reka Bentuk Perkakasan Produk Cahaya Pintar berasaskan ESP32-C3
67
5.1 Ciri dan Komposisi Produk Cahaya Pintar . . . . . . . . . . . . . . . 67
5.2 Reka Bentuk Perkakasan Sistem Teras ESP32-C3 . . . . . . . . . . . . . . . . . . . 70
5.2.1 Bekalan Kuasa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.2.2 Urutan Hidupkan Kuasa dan Tetapan Semula Sistem . . . . . . . . . . . . . . . . . . 74
5.2.3 Denyar SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.4 Sumber Jam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.5 RF dan Antena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.6 Pin Pengikat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.7 Pengawal GPIO dan PWM . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3 Amalan: Membina Sistem Cahaya Pintar dengan ESP32-C3 . . . . . . . . . . . . . 80
5.3.1 Memilih Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.2 Mengkonfigurasi GPIO Isyarat PWM. . . . . . . . . . . . . . . . . . . . 82
5.3.3 Memuat turun Perisian Tegar dan Antara Muka Nyahpepijat . . . . . . . . . . . . 82
5.3.4 Garis Panduan untuk Reka Bentuk RF. . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Garis Panduan untuk Reka Bentuk Bekalan Kuasa. . . . . . . . . . . . . . . . . . . 86 5.4 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Pembangunan Pemandu
87
6.1 Proses Pembangunan Pemandu. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Aplikasi Persisian ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Asas Pemacu LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 Ruang Warna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Pemacu LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.3 Peredupan LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.4 Pengenalan kepada PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4 Pembangunan Pemacu Peredupan LED . . . . . . . . . . . . . . . . . . . . . . . . 96
6.4.1 Storan Tidak Meruap (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 Pengawal PWM LED (LEDC) . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Pengaturcaraan PWM LED . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5 Amalan: Menambah Pemacu pada Projek Lampu Pintar . . . . . . . . . . . . . . . . . 103
6.5.1 Pemacu Butang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.5.2 Pemacu Peredupan LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.6 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
III Komunikasi dan Kawalan Tanpa Wayar
109
7 Konfigurasi dan Sambungan Wi-Fi
111
7.1 Asas Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.1 Pengenalan kepada Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.2 Evolusi IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.1.3 Konsep Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.1.4 Sambungan Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Asas Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.2.1 Pengenalan kepada Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2.2 Konsep Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.3 Sambungan Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.3 Konfigurasi Rangkaian Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.1 Panduan Konfigurasi Rangkaian Wi-Fi . . . . . . . . . . . . . . . . . . . . 131
7.3.2 SoftAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.3 SmartConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3.5 Kaedah Lain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Pengaturcaraan Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Komponen Wi-Fi dalam ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Latihan: Sambungan Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Latihan: Sambungan Wi-Fi Pintar . . . . . . . . . . . . . . . . . . . . . 145
7.5 Amalan: Konfigurasi Wi-Fi dalam Projek Smart Light . . . . . . . . . . . . . . . 156 7.5.1 Sambungan Wi-Fi dalam Projek Smart Light . . . . . . . . . . . . . . . . . 156 7.5.2 Konfigurasi Wi-Fi Pintar . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8 Kawalan Setempat
159
8.1 Pengenalan kepada Kawalan Tempatan . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.1.1 Penggunaan Kawalan Tempatan . . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.2 Advantages Kawalan Tempatan. . . . . . . . . . . . . . . . . . . . . . . . 161
8.1.3 Menemui Peranti Terkawal melalui Telefon Pintar . . . . . . . . . . 161
8.1.4 Komunikasi Data Antara Telefon Pintar dan Peranti . . . . . . . . 162
8.2 Kaedah Penemuan Tempatan Biasa . . . . . . . . . . . . . . . . . . . . . . . . 162
8.2.1 Siaran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8.2.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2.3 Perbandingan Antara Siaran dan Multicast. . . . . . . . . . . . . . 176
8.2.4 Protokol Aplikasi Multicast mDNS untuk Penemuan Tempatan. . . . . . . . 176
8.3 Protokol Komunikasi Biasa untuk Data Tempatan . . . . . . . . . . . . . . . 179
8.3.1 Protokol Kawalan Penghantaran (TCP) . . . . . . . . . . . . . . . . . . . 179
8.3.2 Protokol Pemindahan HyperTeks (HTTP) . . . . . . . . . . . . . . . . . . . 185
8.3.3 Pengguna DatagProtokol ram (UDP) . . . . . . . . . . . . . . . . . . . . . . 189
8.3.4 Protokol Aplikasi Terkandas (CoAP) . . . . . . . . . . . . . . . . 192
8.3.5 Protokol Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.3.6 Ringkasan Protokol Komunikasi Data . . . . . . . . . . . . . . . 203
8.4 Jaminan Keselamatan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.4.1 Pengenalan kepada Transport Layer Security (TLS) . . . . . . . . . . . . . 207
8.4.2 Pengenalan kepada Datagram Transport Layer Security (DTLS) . . . . . . . 213
8.5 Amalan: Kawalan Tempatan dalam Projek Smart Light . . . . . . . . . . . . . . . . . . 217
8.5.1 Mencipta Pelayan Kawalan Tempatan berasaskan Wi-Fi . . . . . . . . . . . . . . . 217
8.5.2 Mengesahkan Fungsi Kawalan Tempatan menggunakan Skrip. . . . . . . . . . . 221
8.5.3 Mencipta Pelayan Kawalan Tempatan berasaskan Bluetooth . . . . . . . . . . . . 222
8.6 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9 Kawalan Awan
225
9.1 Pengenalan kepada Alat Kawalan Jauh . . . . . . . . . . . . . . . . . . . . . . . . . . 225
9.2 Protokol Komunikasi Data Awan . . . . . . . . . . . . . . . . . . . . . . 226
9.2.1 Pengenalan MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Prinsip MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Format Mesej MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Perbandingan Protokol. . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Menyediakan MQTT Broker pada Linux dan Windows . . . . . . . . . . . . 233 9.2.6 Menyediakan Klien MQTT Berdasarkan ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Memastikan Keselamatan Data MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Pengertian dan Fungsi Sijil . . . . . . . . . . . . . . . . . . . 237 9.3.2 Menjana Sijil Dalaman. . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Mengkonfigurasi Broker MQTT. . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Mengkonfigurasi Klien MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Amalan: Kawalan Jauh melalui ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Asas ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Protokol Komunikasi Nod dan Cloud Backend . . . . . . . . . . . 244 9.4.3 Komunikasi antara Pelanggan dan Cloud Backend . . . . . . . . . . . 249 9.4.4 Peranan Pengguna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Perkhidmatan Asas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Cahaya Pintar Cthample . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Apl RainMaker dan Integrasi Pihak Ketiga . . . . . . . . . . . . . . . 262 9.5 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10 Pembangunan Aplikasi Telefon Pintar
269
10.1 Pengenalan kepada Pembangunan Aplikasi Telefon Pintar . . . . . . . . . . . . . . . . . . 269
10.1.1 Berakhirview Pembangunan Aplikasi Telefon Pintar . . . . . . . . . . . . . . . 270
10.1.2 Struktur Projek Android . . . . . . . . . . . . . . . . . . . . . . 270
10.1.3 Struktur Projek iOS . . . . . . . . . . . . . . . . . . . . . . . . 271
10.1.4 Kitaran Hayat Aktiviti Android . . . . . . . . . . . . . . . . . . . . . . 272
10.1.5 Kitaran Hayat iOS ViewPengawal . . . . . . . . . . . . . . . . . . . . . . 273
10.2 Mencipta Projek Aplikasi Telefon Pintar Baharu . . . . . . . . . . . . . . . . . . . . . 275
10.2.1 Persediaan untuk Pembangunan Android . . . . . . . . . . . . . . . . . . . 275
10.2.2 Mencipta Projek Android Baharu . . . . . . . . . . . . . . . . . . . . . . 275
10.2.3 Menambah Ketergantungan untuk MyRainmaker . . . . . . . . . . . . . . . . . 276
10.2.4 Permintaan Kebenaran dalam Android . . . . . . . . . . . . . . . . . . . . . . 277
10.2.5 Persediaan untuk Pembangunan iOS . . . . . . . . . . . . . . . . . . . . . . 277
10.2.6 Mencipta Projek iOS Baharu . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2.7 Menambah Ketergantungan untuk MyRainmaker . . . . . . . . . . . . . . . . . 279
10.2.8 Permintaan Kebenaran dalam iOS . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Analisis Keperluan Fungsian Apl . . . . . . . . . . . . . . . . . . 281
10.3.1 Analisis Keperluan Fungsian Projek. . . . . . . . . . . . 282
10.3.2 Analisis Keperluan Pengurusan Pengguna. . . . . . . . . . . . . . . 282 10.3.3 Analisis Keperluan Penyediaan dan Pengikat Peranti. . . . . . . 283 10.3.4 Analisis Keperluan Kawalan Jauh . . . . . . . . . . . . . . . . 283 10.3.5 Analisis Keperluan Penjadualan. . . . . . . . . . . . . . . . . . . 284 10.3.6 Analisis Keperluan Pusat Pengguna. . . . . . . . . . . . . . . . . . 285 10.4 Pembangunan Pengurusan Pengguna. . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Pengenalan kepada RainMaker API . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Memulakan Komunikasi melalui Telefon Pintar . . . . . . . . . . . . . . . . 286 10.4.3 Pendaftaran Akaun. . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Log Masuk Akaun. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Pembangunan Peruntukan Peranti. . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Mengimbas Peranti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Menyambung Peranti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Menjana Kunci Rahsia. . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Mendapatkan ID Nod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Memperuntukkan Peranti. . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Pembangunan Kawalan Peranti. . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Mengikat Peranti kepada Akaun Awan . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Mendapatkan Senarai Peranti . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Mendapatkan Status Peranti . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Menukar Status Peranti . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Pembangunan Penjadualan dan Pusat Pengguna. . . . . . . . . . . . . . . . . . . 313 10.7.1 Melaksanakan Fungsi Penjadualan. . . . . . . . . . . . . . . . . . . . 313 10.7.2 Melaksanakan Pusat Pengguna. . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Lagi API Awan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
11 Peningkatan Perisian Tegar dan Pengurusan Versi
321
11.1 Peningkatan Perisian Tegar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.1.1 Berakhirview daripada Jadual Pembahagian . . . . . . . . . . . . . . . . . . . . . . . . 322
11.1.2 Proses But Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
11.1.3 Berakhirview daripada Mekanisme OTA. . . . . . . . . . . . . . . . . . . . . 326
11.2 Pengurusan Versi Perisian Tegar . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.1 Penandaan Perisian Tegar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
11.2.2 Guling Balik dan Anti Guling Balik . . . . . . . . . . . . . . . . . . . . . . . . 331
11.3 Amalan: Over-the-air (OTA) Cthample . . . . . . . . . . . . . . . . . . . . . . . 332
11.3.1 Naik Taraf Perisian Tegar Melalui Hos Setempat. . . . . . . . . . . . . . . . . 332
11.3.2 Naik Taraf Perisian Tegar Melalui ESP RainMaker . . . . . . . . . . . . . . . 335
11.4 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
IV Pengoptimuman dan Pengeluaran Besar-besaran
343
12 Pengurusan Kuasa dan Pengoptimuman Kuasa Rendah
345
12.1 Pengurusan Kuasa ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
12.1.1 Penskalaan Frekuensi Dinamik. . . . . . . . . . . . . . . . . . . . . . . . 346
12.1.2 Konfigurasi Pengurusan Kuasa. . . . . . . . . . . . . . . . . . . . 348
12.2 ESP32-C3 Mod Kuasa Rendah . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
12.2.1 Mod modem-tidur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
12.2.2 Mod Tidur Ringan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
12.2.3 Mod tidur dalam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
12.2.4 Penggunaan Semasa dalam Mod Kuasa Berbeza. . . . . . . . . . . . . 358
12.3 Pengurusan Kuasa dan Nyahpepijat Kuasa Rendah . . . . . . . . . . . . . . . . . 359
12.3.1 Penyahpepijatan Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
12.3.2 Penyahpepijatan GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
12.4 Amalan: Pengurusan Kuasa dalam Projek Cahaya Pintar . . . . . . . . . . . . . . . 363
12.4.1 Mengkonfigurasi Ciri Pengurusan Kuasa. . . . . . . . . . . . . . . . . 364
12.4.2 Gunakan Kunci Pengurusan Kuasa. . . . . . . . . . . . . . . . . . . . . . 365
12.4.3 Mengesahkan Penggunaan Kuasa. . . . . . . . . . . . . . . . . . . . . . . 366
12.5 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
13 Ciri Keselamatan Peranti Dipertingkat
369
13.1 Berakhirview Keselamatan Data Peranti IoT . . . . . . . . . . . . . . . . . . . . . . . 369
13.1.1 Mengapa Melindungi Data Peranti IoT? . . . . . . . . . . . . . . . . . . . . . . 370
13.1.2 Keperluan Asas untuk Keselamatan Data Peranti IoT. . . . . . . . . . . . 371
13.2 Perlindungan Integriti Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.2.1 Pengenalan Kaedah Pengesahan Integriti. . . . . . . . . . . . . . 372
13.2.2 Pengesahan Integriti Data Perisian Tegar . . . . . . . . . . . . . . . . . . 373
13.2.3 Cthample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3 Perlindungan Kerahsiaan Data . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.3.1 Pengenalan kepada Penyulitan Data. . . . . . . . . . . . . . . . . . . . . . 374
13.3.2 Pengenalan kepada Skim Penyulitan Flash. . . . . . . . . . . . . . . . . 376
13.3.3 Penyimpanan Kunci Penyulitan Denyar . . . . . . . . . . . . . . . . . . . . . . . 379
13.3.4 Mod Kerja Penyulitan Denyar . . . . . . . . . . . . . . . . . . . . 380
13.3.5 Proses Penyulitan Denyar . . . . . . . . . . . . . . . . . . . . . . . . . . 381
13.3.6 Pengenalan kepada Penyulitan NVS. . . . . . . . . . . . . . . . . . . . . . 383
13.3.7 Cthampkurang Penyulitan Kilat dan Penyulitan NVS . . . . . . . . . . . 384
13.4 Perlindungan Kesahihan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
13.4.1 Pengenalan kepada Tandatangan Digital . . . . . . . . . . . . . . . . . . . . . 386
13.4.2 Berakhirview daripada Skim But Selamat . . . . . . . . . . . . . . . . . . . . . 388
13.4.3 Pengenalan kepada Software Secure Boot . . . . . . . . . . . . . . . . . . . 388 13.4.4 Pengenalan kepada But Secure Hardware . . . . . . . . . . . . . . . . . . 390 13.4.5 Cthamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Amalan: Ciri Keselamatan Dalam Pengeluaran Besar-besaran . . . . . . . . . . . . . . . . . . 396 13.5.1 Penyulitan Denyar dan But Selamat . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Mendayakan Penyulitan Denyar dan But Selamat dengan Alat Denyar Berkelompok . . 397 13.5.3 Mendayakan Penyulitan Denyar dan But Selamat dalam Projek Smart Light . . . 398 13.6 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
14 Pembakaran dan Pengujian Perisian Tegar untuk Pengeluaran Besar-besaran
399
14.1 Pembakaran Perisian Tegar dalam Pengeluaran Besar-besaran. . . . . . . . . . . . . . . . . . . . . . 399
14.1.1 Mentakrifkan Pembahagian Data . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.1.2 Pembakaran Perisian Tegar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
14.2 Pengujian Pengeluaran Besar-besaran. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
14.3 Amalan: Data Pengeluaran Massa dalam Projek Smart Light . . . . . . . . . . . . . 404
14.4 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15 ESP Insights: Platform Pemantauan Jauh
405
15.1 Pengenalan kepada ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
15.2 Bermula dengan ESP Insights . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.2.1 Bermula dengan ESP Insights dalam Projek esp-insights . . . . . . 409
15.2.2 Berlari Cthample dalam Projek esp-insights . . . . . . . . . . . . . . . 411
15.2.3 Melaporkan Maklumat Coredump. . . . . . . . . . . . . . . . . . . . . 411
15.2.4 Menyesuaikan Log Kepentingan . . . . . . . . . . . . . . . . . . . . . . . . 412
15.2.5 Melaporkan Sebab But semula. . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2.6 Melaporkan Metrik Tersuai . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 Amalan: Menggunakan ESP Insights dalam Projek Smart Light . . . . . . . . . . . . . . . 416
15.4 Rumusan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
pengenalan
ESP32-C3 ialah Wi-Fi teras tunggal dan SoC mikropengawal Bluetooth 5 (LE), berdasarkan seni bina RISC-V sumber terbuka. Ia mencapai keseimbangan kuasa, keupayaan I/O dan keselamatan yang betul, sekali gus menawarkan penyelesaian kos efektif yang optimum untuk peranti yang disambungkan. Untuk menunjukkan pelbagai aplikasi keluarga ESP32-C3, buku oleh Espressif ini akan membawa anda ke perjalanan yang menarik melalui AIoT, bermula daripada asas pembangunan projek IoT dan persediaan persekitaran kepada bekas praktikalamples. Empat bab pertama bercakap tentang IoT, ESP RainMaker dan ESP-IDF. Bab 5 dan 6 ringkas tentang reka bentuk perkakasan dan pembangunan pemacu. Semasa anda maju, anda akan menemui cara mengkonfigurasi projek anda melalui rangkaian Wi-Fi dan Apl mudah alih. Akhir sekali, anda akan belajar untuk mengoptimumkan projek anda dan memasukkannya ke dalam pengeluaran besar-besaran.
Jika anda seorang jurutera dalam bidang berkaitan, arkitek perisian, guru, pelajar atau sesiapa sahaja yang berminat dengan IoT, buku ini adalah untuk anda.
Anda boleh memuat turun kod exampdigunakan dalam buku ini dari tapak Espressif di GitHub. Untuk maklumat terkini tentang pembangunan IoT, sila ikuti akaun rasmi kami.
Mukadimah
Dunia Pemberitahuan
Menunggang gelombang Internet, Internet of Things (IoT) membuat penampilan sulung besarnya untuk menjadi jenis infrastruktur baharu dalam ekonomi digital. Untuk mendekatkan teknologi kepada orang ramai, Sistem Espressif bekerja untuk visi bahawa pembangun dari semua lapisan masyarakat boleh menggunakan IoT untuk menyelesaikan beberapa masalah yang paling mendesak pada zaman kita. Dunia "Rangkaian Pintar Segala Perkara" ialah apa yang kami jangkakan pada masa hadapan.
Mereka bentuk cip kami sendiri menjadikan komponen kritikal visi itu. Ia adalah untuk menjadi maraton, memerlukan kejayaan berterusan terhadap sempadan teknologi. Daripada "Game Changer" ESP8266 kepada siri ESP32 yang menyepadukan sambungan Wi-Fi dan Bluetoothr (LE), diikuti oleh ESP32-S3 yang dilengkapi dengan pecutan AI, Espressif tidak pernah berhenti menyelidik dan membangunkan produk untuk penyelesaian AIoT. Dengan perisian sumber terbuka kami, seperti Rangka Kerja Pembangunan IoT ESP-IDF, Rangka Kerja Pembangunan Mesh ESP-MDF dan Platform Ketersambungan Peranti ESP RainMaker, kami telah mencipta rangka kerja bebas untuk membina aplikasi AIoT.
Sehingga Julai 2022, penghantaran terkumpul cipset IoT Espressif telah melebihi 800 juta, menerajui pasaran MCU Wi-Fi dan menjanakan sejumlah besar peranti bersambung di seluruh dunia. Mengejar kecemerlangan menjadikan setiap produk Espressif popular kerana tahap integrasi dan kecekapan kos yang tinggi. Pengeluaran ESP32-C3 menandakan peristiwa penting dalam teknologi yang dibangunkan sendiri oleh Espressif. Ia adalah teras tunggal, 32-bit, berasaskan RISC-V MCU dengan 400KB SRAM, yang boleh berjalan pada 160MHz. Ia telah menyepadukan Wi-Fi 2.4 GHz dan Bluetooth 5 (LE) dengan sokongan jarak jauh. Ia mencapai keseimbangan kuasa, keupayaan I/O dan keselamatan yang baik, sekali gus menawarkan penyelesaian kos efektif yang optimum untuk peranti yang disambungkan. Berdasarkan ESP32-C3 yang begitu berkuasa, buku ini bertujuan untuk membantu pembaca memahami pengetahuan berkaitan IoT dengan ilustrasi terperinci dan bekas praktikalamples.
Mengapa kami menulis buku ini?
Espressif Systems adalah lebih daripada sebuah syarikat semikonduktor. Ia juga merupakan syarikat platform IoT, yang sentiasa berusaha untuk mencapai kejayaan dan inovasi dalam bidang teknologi. Pada masa yang sama, Espressif mempunyai sumber terbuka dan berkongsi sistem pengendalian dan rangka kerja perisian yang dibangunkan sendiri dengan komuniti, membentuk ekosistem yang unik. Jurutera, pembuat dan peminat teknologi secara aktif membangunkan aplikasi perisian baharu berdasarkan produk Espressif, berkomunikasi secara bebas dan berkongsi pengalaman mereka. Anda boleh melihat idea menarik pembangun pada pelbagai platform sepanjang masa, seperti YouTube dan GitHub. Populariti produk Espressif telah merangsang peningkatan bilangan pengarang yang telah menghasilkan lebih 100 buku berdasarkan cipset Espressif, dalam lebih daripada sepuluh bahasa, termasuk Inggeris, Cina, Jerman, Perancis dan Jepun.
Sokongan dan kepercayaan rakan kongsi komuniti yang menggalakkan inovasi berterusan Espressif. “Kami berusaha untuk menjadikan cip, sistem pengendalian, rangka kerja, penyelesaian, Awan, amalan perniagaan, alatan, dokumentasi, penulisan, idea, dll., kami lebih relevan dengan jawapan yang diperlukan oleh orang ramai dalam masalah kehidupan kontemporari yang paling mendesak. Ini adalah cita-cita tertinggi dan kompas moral Espressif." kata Encik Teo Swee Ann, Pengasas dan Ketua Pegawai Eksekutif Espressif.
Espressif mementingkan bacaan dan idea. Memandangkan peningkatan berterusan teknologi IoT menimbulkan keperluan yang lebih tinggi kepada jurutera, bagaimanakah kami boleh membantu lebih ramai orang untuk menguasai cip IoT, sistem pengendalian, rangka kerja perisian, skim aplikasi dan produk perkhidmatan awan dengan cepat? Bak kata pepatah, lebih baik mengajar lelaki memancing daripada memberinya ikan. Dalam sesi sumbang saran, terfikir bahawa kami boleh menulis buku untuk menyusun pengetahuan utama pembangunan IoT secara sistematik. Kami berjaya melakukannya, mengumpulkan sekumpulan jurutera kanan dengan cepat, dan menggabungkan pengalaman pasukan teknikal dalam pengaturcaraan terbenam, perkakasan dan pembangunan perisian IoT, semuanya menyumbang kepada penerbitan buku ini. Dalam proses menulis, kami cuba sedaya upaya untuk bersikap objektif dan adil, menghilangkan kepompong, dan menggunakan ungkapan ringkas untuk memberitahu kerumitan dan daya tarikan Internet Perkara. Kami meringkaskan soalan lazim dengan teliti, merujuk kepada maklum balas dan cadangan komuniti, untuk menjawab dengan jelas soalan yang dihadapi dalam proses pembangunan, dan menyediakan garis panduan pembangunan IoT praktikal untuk juruteknik dan pembuat keputusan yang berkaitan.
Struktur Buku
Buku ini mengambil perspektif berpusatkan jurutera dan menghuraikan pengetahuan yang diperlukan untuk pembangunan projek IoT langkah demi langkah. Ia terdiri daripada empat bahagian, seperti berikut:
· Persediaan (Bab 1): Bahagian ini memperkenalkan seni bina IoT, rangka kerja projek IoT biasa, platform awan ESP RainMakerr dan persekitaran pembangunan ESP-IDF, supaya meletakkan asas yang kukuh untuk pembangunan projek IoT.
· Pembangunan Perkakasan dan Pemacu (Bab 5): Berdasarkan cipset ESP6-C32, bahagian ini menghuraikan sistem perkakasan minimum dan pembangunan pemacu, dan melaksanakan kawalan pemalapan, penggredan warna dan komunikasi tanpa wayar.
· Komunikasi dan Kawalan Wayarles (Bab 7): Bahagian ini menerangkan skema konfigurasi Wi-Fi pintar berdasarkan cip ESP11-C32, protokol kawalan setempat & awan serta alat kawalan tempatan & jauh peranti. Ia juga menyediakan skim untuk membangunkan aplikasi telefon pintar, peningkatan perisian tegar dan pengurusan versi.
· Pengoptimuman dan Pengeluaran Massa (Bab 12-15): Bahagian ini bertujuan untuk aplikasi IoT lanjutan, memfokuskan pada pengoptimuman produk dalam pengurusan kuasa, pengoptimuman kuasa rendah dan keselamatan yang dipertingkatkan. Ia juga memperkenalkan pembakaran dan ujian perisian tegar dalam pengeluaran besar-besaran, dan cara mendiagnosis status berjalan dan log perisian tegar peranti melalui platform pemantauan jauh ESP Insights.
Mengenai Kod Sumber
Pembaca boleh menjalankan bekasampprogram dalam buku ini, sama ada dengan memasukkan kod secara manual atau dengan menggunakan kod sumber yang mengiringi buku. Kami menekankan gabungan teori dan amalan, dan dengan itu menetapkan bahagian Amalan berdasarkan projek Smart Light dalam hampir setiap bab. Semua kod adalah sumber terbuka. Pembaca dialu-alukan untuk memuat turun kod sumber dan membincangkannya dalam bahagian yang berkaitan dengan buku ini di GitHub dan forum rasmi kami esp32.com. Kod sumber terbuka buku ini tertakluk pada syarat Apache License 2.0.
Nota Pengarang
Buku ini dihasilkan secara rasmi oleh Espressif Systems dan ditulis oleh jurutera kanan syarikat. Ia sesuai untuk pengurus dan kakitangan R&D dalam industri berkaitan IoT, guru dan pelajar jurusan berkaitan, dan peminat dalam bidang Internet Perkara. Kami berharap buku ini boleh berfungsi sebagai manual kerja, rujukan, dan buku di sebelah katil, untuk menjadi seperti tutor dan rakan yang baik.
Semasa menyusun buku ini, kami merujuk kepada beberapa hasil penyelidikan pakar, cendekiawan dan juruteknik yang berkaitan di dalam dan luar negara, dan kami melakukan yang terbaik untuk memetiknya mengikut norma akademik. Walau bagaimanapun, tidak dapat dielakkan bahawa terdapat beberapa kekurangan, jadi di sini kami ingin merakamkan rasa hormat dan terima kasih yang mendalam kepada semua penulis yang berkaitan. Di samping itu, kami telah memetik maklumat daripada Internet, jadi kami ingin mengucapkan terima kasih kepada pengarang dan penerbit asal dan memohon maaf kerana kami tidak dapat menunjukkan sumber setiap maklumat.
Untuk menghasilkan buku yang berkualiti tinggi, kami telah menganjurkan pusingan perbincangan dalaman, dan belajar daripada cadangan dan maklum balas pembaca percubaan dan editor penerbit. Di sini, kami ingin mengucapkan terima kasih sekali lagi atas bantuan anda yang semua menyumbang kepada kerja yang berjaya ini.
Terakhir, tetapi yang paling penting, terima kasih kepada semua orang di Espressif yang telah bekerja keras untuk melahirkan dan mempopularkan produk kami.
Pembangunan projek IoT melibatkan pelbagai pengetahuan. Terhad kepada panjang buku, serta tahap dan pengalaman pengarang, peninggalan tidak dapat dielakkan. Oleh itu, kami memohon agar pakar dan pembaca mengkritik dan membetulkan kesilapan kami. Jika anda mempunyai sebarang cadangan untuk buku ini, sila hubungi kami di book@espressif.com. Kami mengharapkan maklum balas anda.
Bagaimana untuk menggunakan buku ini?
Kod projek dalam buku ini adalah sumber terbuka. Anda boleh memuat turunnya dari repositori GitHub kami dan berkongsi pendapat dan soalan anda di forum rasmi kami. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Sepanjang buku, akan ada bahagian yang diserlahkan seperti yang ditunjukkan di bawah.
Kod sumber Dalam buku ini, kami menekankan gabungan teori dan amalan, dan dengan itu menetapkan bahagian Amalan tentang projek Smart Light dalam hampir setiap bab. Langkah dan halaman sumber yang sepadan akan ditanda antara dua baris bermula dengan tag Kod sumber.
NOTA/PETUA Di sinilah anda mungkin menemui beberapa maklumat penting dan mengingatkan untuk berjaya menyahpepijat program anda. Ia akan ditanda antara dua garisan tebal bermula dengan tag NOTA atau TIPS.
Kebanyakan arahan dalam buku ini dilaksanakan di bawah Linux, digesa oleh aksara "$". Jika arahan memerlukan keistimewaan superuser untuk dilaksanakan, gesaan akan digantikan dengan "#". Gesaan arahan pada sistem Mac ialah "%", seperti yang digunakan dalam Bahagian 4.2.3 Memasang ESP-IDF pada Mac.
Teks isi dalam buku ini akan dicetak dalam Piagam, manakala kod examples, komponen, fungsi, pembolehubah, kod file nama, direktori kod dan rentetan akan berada dalam Kurier Baharu.
Perintah atau teks yang perlu dimasukkan oleh pengguna, dan arahan yang boleh dimasukkan dengan menekan kekunci "Enter" akan dicetak dalam huruf tebal Baharu Courier. Log dan blok kod akan dibentangkan dalam kotak biru muda.
Example:
Kedua, gunakan esp-idf/components/nvs flash/nvs partition generator/nvs partition gen.py untuk menjana binari partition NVS file pada hos pembangunan dengan arahan berikut:
$ python $IDF PATH/komponen/nvs flash/nvs partition generator/nvs partition gen.py –input mass prod.csv –output mass prod.bin –saiz NVS PARTITION SAIZ
Bab 1
pengenalan
kepada
IoT
Pada penghujung abad ke-20, dengan kebangkitan rangkaian komputer dan teknologi komunikasi, Internet dengan pantas disepadukan ke dalam kehidupan orang ramai. Memandangkan teknologi Internet terus matang, idea Internet of Things (IoT) lahir. Secara harfiah, IoT bermaksud Internet di mana perkara disambungkan. Walaupun Internet asal melanggar had ruang dan masa serta mengecilkan jarak antara "orang dan orang", IoT menjadikan "benda" sebagai peserta penting, mendekatkan "orang" dan "benda". Pada masa hadapan yang boleh dijangka, IoT bersedia untuk menjadi penggerak industri maklumat.
Jadi, apakah itu Internet of Things?
Sukar untuk mentakrifkan Internet Perkara dengan tepat, kerana makna dan skopnya sentiasa berkembang. Pada tahun 1995, Bill Gates pertama kali mengemukakan idea IoT dalam bukunya The Road Ahead. Ringkasnya, IoT membolehkan objek bertukar maklumat antara satu sama lain melalui Internet. Matlamat utamanya adalah untuk mewujudkan "Internet Segala-galanya". Ini adalah tafsiran awal IoT, serta fantasi teknologi masa depan. Tiga puluh tahun kemudian, dengan perkembangan pesat ekonomi dan teknologi, fantasi menjadi kenyataan. Daripada peranti pintar, rumah pintar, bandar pintar, Internet Kenderaan dan peranti boleh pakai, kepada "metaverse" yang disokong oleh teknologi IoT, konsep baharu sentiasa muncul. Dalam bab ini, kami akan bermula dengan penerangan tentang seni bina Internet of Things, dan kemudian memperkenalkan aplikasi IoT yang paling biasa, rumah pintar, untuk membantu anda mendapatkan pemahaman yang jelas tentang IoT.
1.1 Senibina IoT
Internet of Things melibatkan pelbagai teknologi yang mempunyai keperluan dan bentuk aplikasi yang berbeza dalam industri yang berbeza. Untuk menyusun struktur, teknologi utama dan ciri aplikasi IoT, adalah perlu untuk mewujudkan seni bina bersatu dan sistem teknikal standard. Dalam buku ini, seni bina IoT hanya dibahagikan kepada empat lapisan: lapisan persepsi & kawalan, lapisan rangkaian, lapisan platform dan lapisan aplikasi.
Lapisan Persepsi & Kawalan Sebagai elemen paling asas dalam seni bina IoT, lapisan persepsi & kawalan adalah teras untuk merealisasikan penderiaan komprehensif IoT. Fungsi utamanya adalah untuk mengumpul, mengenal pasti dan mengawal maklumat. Ia terdiri daripada pelbagai peranti dengan keupayaan persepsi,
3
pengenalpastian, kawalan dan pelaksanaan, dan bertanggungjawab untuk mendapatkan dan menganalisis data seperti sifat bahan, arah aliran tingkah laku dan status peranti. Dengan cara ini, IoT dapat mengenali dunia fizikal sebenar. Selain itu, lapisan juga dapat mengawal status peranti.
Peranti yang paling biasa bagi lapisan ini ialah pelbagai penderia, yang memainkan peranan penting dalam pengumpulan dan pengenalan maklumat. Penderia adalah seperti organ deria manusia, seperti penderia fotosensitif yang menyamai penglihatan, penderia akustik dengan pendengaran, penderia gas untuk menghidu dan penderia tekanan dan suhu yang sensitif terhadap sentuhan. Dengan semua "organ deria" ini, objek menjadi "hidup" dan mampu persepsi pintar, pengiktirafan dan manipulasi dunia fizikal.
Lapisan Rangkaian Fungsi utama lapisan rangkaian adalah untuk menghantar maklumat, termasuk data yang diperoleh daripada lapisan persepsi & kawalan ke sasaran yang ditetapkan, serta arahan yang dikeluarkan dari lapisan aplikasi kembali ke lapisan persepsi & kawalan. Ia berfungsi sebagai jambatan komunikasi penting yang menghubungkan pelbagai lapisan sistem IoT. Untuk menyediakan model asas Internet Perkara, ia melibatkan dua langkah untuk menyepadukan objek ke dalam rangkaian: akses kepada Internet dan penghantaran melalui Internet.
Akses kepada Internet Internet membolehkan perhubungan antara orang dan orang, tetapi gagal memasukkan perkara ke dalam keluarga besar. Sebelum kemunculan IoT, kebanyakan perkara tidak "mampu rangkaian". Terima kasih kepada pembangunan teknologi yang berterusan, IoT berjaya menghubungkan sesuatu ke Internet, sekali gus merealisasikan kesalinghubungan antara "orang dan benda", dan "benda dan benda". Terdapat dua cara biasa untuk melaksanakan sambungan Internet: akses rangkaian berwayar dan akses rangkaian wayarles.
Kaedah capaian rangkaian berwayar termasuk Ethernet, komunikasi bersiri (cth., RS-232, RS-485) dan USB, manakala capaian rangkaian wayarles bergantung pada komunikasi tanpa wayar, yang boleh dibahagikan lagi kepada komunikasi tanpa wayar jarak dekat dan komunikasi tanpa wayar jarak jauh.
Komunikasi tanpa wayar jarak pendek termasuk ZigBee, Bluetoothr, Wi-Fi, Komunikasi Medan Dekat (NFC) dan Pengenalan Frekuensi Radio (RFID). Komunikasi wayarles jarak jauh termasuk Komunikasi Jenis Mesin Dipertingkat (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, dsb.
Penghantaran melalui Internet Kaedah akses Internet yang berbeza membawa kepada pautan penghantaran fizikal data yang sepadan. Perkara seterusnya ialah memutuskan protokol komunikasi yang akan digunakan untuk menghantar data. Berbanding dengan terminal Internet, kebanyakan terminal IoT pada masa ini mempunyai lebih sedikit
4 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
sumber yang tersedia, seperti prestasi pemprosesan, kapasiti storan, kadar rangkaian, dsb., jadi adalah perlu untuk memilih protokol komunikasi yang menggunakan lebih sedikit sumber dalam aplikasi IoT. Terdapat dua protokol komunikasi yang digunakan secara meluas hari ini: Message Queuing Telemetry Transport (MQTT) dan Constrained Application Protocol (CoAP).
Lapisan Platform Lapisan platform merujuk terutamanya kepada platform awan IoT. Apabila semua terminal IoT dirangkaikan, data mereka perlu diagregatkan pada platform awan IoT untuk dikira dan disimpan. Lapisan platform terutamanya menyokong aplikasi IoT dalam memudahkan akses dan pengurusan peranti besar-besaran. Ia menghubungkan terminal IoT ke platform awan, mengumpul data terminal, dan mengeluarkan arahan kepada terminal, untuk melaksanakan kawalan jauh. Sebagai perkhidmatan perantaraan untuk memberikan peralatan kepada aplikasi industri, lapisan platform memainkan peranan penghubung dalam keseluruhan seni bina IoT, membawa logik perniagaan abstrak dan model data teras piawai, yang bukan sahaja dapat merealisasikan akses pantas peranti, tetapi juga menyediakan keupayaan modular yang berkuasa untuk memenuhi pelbagai keperluan dalam senario aplikasi industri. Lapisan platform terutamanya merangkumi modul berfungsi seperti capaian peranti, pengurusan peranti, pengurusan keselamatan, komunikasi mesej, pengendalian dan penyelenggaraan pemantauan serta aplikasi data.
· Akses peranti, merealisasikan sambungan dan komunikasi antara terminal dan platform awan IoT.
· Pengurusan peranti, termasuk fungsi seperti penciptaan peranti, penyelenggaraan peranti, penukaran data, penyegerakan data dan pengedaran peranti.
· Pengurusan keselamatan, memastikan keselamatan penghantaran data IoT dari perspektif pengesahan keselamatan dan keselamatan komunikasi.
· Komunikasi mesej, termasuk tiga arah penghantaran, iaitu, terminal menghantar data ke platform awan IoT, platform awan IoT menghantar data ke bahagian pelayan atau platform awan IoT lain, dan bahagian pelayan mengawal peranti IoT dari jauh.
· Memantau O&M, melibatkan pemantauan dan diagnosis, peningkatan perisian tegar, penyahpepijatan dalam talian, perkhidmatan log, dsb.
· Aplikasi data, yang melibatkan penyimpanan, analisis dan aplikasi data.
Lapisan Aplikasi Lapisan aplikasi menggunakan data daripada lapisan platform untuk mengurus aplikasi, menapis dan memprosesnya dengan alatan seperti pangkalan data dan perisian analisis. Data yang terhasil boleh digunakan untuk aplikasi IoT dunia sebenar seperti penjagaan kesihatan pintar, pertanian pintar, rumah pintar dan bandar pintar.
Sudah tentu, seni bina IoT boleh dibahagikan kepada lebih banyak lapisan, tetapi tidak kira berapa banyak lapisan yang terdiri daripadanya, prinsip asasnya pada asasnya tetap sama. Pembelajaran
Bab 1. Pengenalan kepada IoT 5
tentang seni bina IoT membantu memperdalam pemahaman kami tentang teknologi IoT dan membina projek IoT berfungsi sepenuhnya.
1.2 Aplikasi IoT dalam Rumah Pintar
IoT telah menembusi semua lapisan masyarakat, dan aplikasi IoT yang paling berkait rapat dengan kami ialah rumah pintar. Banyak peralatan tradisional kini dilengkapi dengan satu atau lebih peranti IoT, dan banyak rumah yang baru dibina direka bentuk dengan teknologi IoT dari awal. Rajah 1.1 menunjukkan beberapa peranti rumah pintar biasa.
Rajah 1.1. Peranti rumah pintar biasa Pembangunan rumah pintar boleh dibahagikan kepada produk pintar stage, perhubungan pemandangan stage dan pintar stage, seperti yang ditunjukkan dalam Rajah 1.2.
Rajah 1.2. Pembangunan stage rumah pintar 6 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
S yang pertamatage ialah mengenai produk pintar. Berbeza daripada rumah tradisional, di rumah pintar, peranti IoT menerima isyarat dengan penderia dan dirangkaikan melalui teknologi komunikasi wayarles seperti Wi-Fi, Bluetooth LE dan ZigBee. Pengguna boleh mengawal produk pintar dalam pelbagai cara, seperti apl telefon pintar, pembantu suara, kawalan pembesar suara pintar, dsb.tage menumpukan pada kesalinghubungan pemandangan. Dalam s initage, pembangun tidak lagi mempertimbangkan untuk mengawal produk pintar tunggal, tetapi menghubungkan dua atau lebih produk pintar, mengautomasikan pada tahap tertentu, dan akhirnya membentuk mod adegan tersuai. Untuk exampOleh itu, apabila pengguna menekan mana-mana butang mod pemandangan, lampu, langsir dan penghawa dingin akan disesuaikan secara automatik kepada pratetap. Sudah tentu, terdapat prasyarat bahawa logik pautan sedia disediakan, termasuk syarat pencetus dan tindakan pelaksanaan. Bayangkan bahawa mod pemanasan penghawa dingin dicetuskan apabila suhu dalaman jatuh di bawah 10°C; bahawa pada pukul 7 pagi, muzik dimainkan untuk membangunkan pengguna, langsir pintar dibuka, dan periuk nasi atau pembakar roti bermula melalui soket pintar; apabila pengguna bangun dan selesai mencuci, sarapan pagi sudah disediakan, supaya tidak ada kelewatan untuk pergi ke tempat kerja. Betapa selesanya kehidupan kita! S ketigatage pergi ke kecerdasan stage. Memandangkan lebih banyak peranti rumah pintar diakses, begitu juga jenis data yang dijana. Dengan bantuan pengkomputeran awan, data besar dan kecerdasan buatan, ia seperti "otak yang lebih pintar" telah ditanam ke dalam rumah pintar, yang tidak lagi memerlukan arahan yang kerap daripada pengguna. Mereka mengumpul data daripada interaksi terdahulu dan mempelajari corak tingkah laku dan pilihan pengguna, untuk mengautomasikan aktiviti, termasuk menyediakan pengesyoran untuk membuat keputusan. Pada masa ini, kebanyakan rumah pintar berada di tempat kejadian interconnection stage. Apabila kadar penembusan dan kecerdasan produk pintar meningkat, halangan antara protokol komunikasi sedang dialih keluar. Pada masa hadapan, rumah pintar pasti akan menjadi benar-benar "pintar", sama seperti sistem AI Jarvis dalam Iron Man, yang bukan sahaja dapat membantu pengguna mengawal pelbagai peranti, mengendalikan urusan harian, tetapi juga mempunyai kuasa pengkomputeran super dan keupayaan berfikir. Dalam s pintartage, manusia akan mendapat perkhidmatan yang lebih baik dari segi kuantiti mahupun kualiti.
Bab 1. Pengenalan kepada IoT 7
8 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Bab Pengenalan dan Amalan 2 Projek IoT
Dalam Bab 1, kami memperkenalkan seni bina IoT, dan peranan serta perhubungan antara lapisan persepsi & kawalan, lapisan rangkaian, lapisan platform dan lapisan aplikasi, serta pembangunan rumah pintar. Walau bagaimanapun, sama seperti ketika kita belajar melukis, mengetahui pengetahuan teori masih jauh dari mencukupi. Kita perlu "mengotorkan tangan kita" untuk mempraktikkan projek IoT untuk benar-benar menguasai teknologi. Di samping itu, apabila projek bergerak ke pengeluaran besar-besaran stage, adalah perlu untuk mempertimbangkan lebih banyak faktor seperti sambungan rangkaian, konfigurasi, interaksi platform awan IoT, pengurusan dan kemas kini perisian tegar, pengurusan pengeluaran besar-besaran dan konfigurasi keselamatan. Jadi, apakah yang perlu kita perhatikan semasa membangunkan projek IoT yang lengkap? Dalam Bab 1, kami menyebut bahawa rumah pintar ialah salah satu senario aplikasi IoT yang paling biasa, dan lampu pintar ialah salah satu perkakas paling asas dan praktikal, yang boleh digunakan di rumah, hotel, gimnasium, hospital, dll. Oleh itu, dalam buku ini, kami akan mengambil pembinaan projek lampu pintar sebagai titik permulaan, menerangkan komponen dan cirinya, dan memberi panduan tentang pembangunan projek. Kami berharap anda boleh membuat kesimpulan daripada kes ini untuk mencipta lebih banyak aplikasi IoT.
2.1 Pengenalan kepada Projek IoT Biasa
Dari segi pembangunan, modul fungsi asas projek IoT boleh diklasifikasikan kepada pembangunan perisian dan perkakasan peranti IoT, pembangunan aplikasi pelanggan dan pembangunan platform awan IoT. Adalah penting untuk menjelaskan modul fungsi asas, yang akan diterangkan lebih lanjut dalam bahagian ini.
2.1.1 Modul Asas untuk Peranti IoT Biasa
Pembangunan perisian dan perkakasan peranti IoT termasuk modul asas berikut: Pengumpulan data
Sebagai lapisan bawah seni bina IoT, peranti IoT bagi lapisan persepsi & kawalan menghubungkan penderia dan peranti melalui cip dan persisian mereka untuk mencapai pengumpulan data dan kawalan operasi.
9
Pengikatan akaun dan konfigurasi awal Bagi kebanyakan peranti IoT, pengikatan akaun dan konfigurasi awal diselesaikan dalam satu proses operasi, contohnyaample, menyambungkan peranti dengan pengguna dengan mengkonfigurasi rangkaian Wi-Fi.
Interaksi dengan platform awan IoT Untuk memantau dan mengawal peranti IoT, ia juga perlu untuk menyambungkannya ke platform awan IoT, untuk memberikan arahan dan status laporan melalui interaksi antara satu sama lain.
Kawalan peranti Apabila disambungkan dengan platform awan IoT, peranti boleh berkomunikasi dengan awan dan didaftarkan, terikat atau dikawal. Pengguna boleh menanyakan status produk dan menjalankan operasi lain pada apl telefon pintar melalui platform awan IoT atau protokol komunikasi tempatan.
Peningkatan perisian tegar Peranti IoT juga boleh mencapai peningkatan perisian tegar berdasarkan keperluan pengeluar. Dengan menerima arahan yang dihantar oleh awan, peningkatan perisian tegar dan pengurusan versi akan direalisasikan. Dengan ciri peningkatan perisian tegar ini, anda boleh terus meningkatkan fungsi peranti IoT, membaiki kecacatan dan menambah baik pengalaman pengguna.
2.1.2 Modul Asas Aplikasi Pelanggan
Aplikasi pelanggan (cth., aplikasi telefon pintar) terutamanya termasuk modul asas berikut:
Sistem akaun dan kebenaran Ia menyokong kebenaran akaun dan peranti.
Kawalan peranti Aplikasi telefon pintar biasanya dilengkapi dengan fungsi mengawal. Pengguna boleh menyambung ke peranti IoT dengan mudah, dan mengurusnya pada bila-bila masa, di mana-mana sahaja melalui aplikasi telefon pintar. Dalam rumah pintar dunia sebenar, peranti kebanyakannya dikawal melalui aplikasi telefon pintar, yang bukan sahaja membolehkan pengurusan peranti pintar, tetapi juga menjimatkan kos tenaga manusia. Oleh itu, kawalan peranti adalah satu kemestian untuk aplikasi pelanggan, seperti kawalan atribut fungsi peranti, kawalan pemandangan, penjadualan, alat kawalan jauh, pautan peranti, dll. Pengguna rumah pintar juga boleh menyesuaikan pemandangan mengikut keperluan peribadi, mengawal pencahayaan, peralatan rumah, pintu masuk , dsb., untuk menjadikan kehidupan rumah lebih selesa dan selesa. Mereka boleh mengatur masa penyaman udara, mematikannya dari jauh, menyalakan lampu lorong secara automatik setelah pintu dibuka atau beralih kepada mod "teater" dengan satu butang.
Aplikasi Pelanggan Pemberitahuan mengemas kini status masa nyata peranti IoT dan menghantar makluman apabila peranti menjadi tidak normal.
10 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Perkhidmatan pelanggan selepas jualan Apl telefon pintar boleh menyediakan perkhidmatan selepas jualan untuk produk, untuk menyelesaikan masalah yang berkaitan dengan kegagalan peranti IoT dan operasi teknikal tepat pada masanya.
Fungsi yang ditampilkan Untuk memenuhi keperluan pengguna yang berbeza, fungsi lain boleh ditambah, seperti Shake, NFC, GPS, dll. GPS boleh membantu menetapkan ketepatan operasi adegan mengikut lokasi dan jarak, manakala fungsi Shake membolehkan pengguna menetapkan arahan untuk dilaksanakan untuk peranti atau pemandangan tertentu dengan menggoncang.
2.1.3 Pengenalan kepada Platform Awan IoT Biasa
Platform awan IoT ialah platform semua-dalam-satu yang menyepadukan fungsi seperti pengurusan peranti, komunikasi keselamatan data dan pengurusan pemberitahuan. Mengikut kumpulan sasaran dan kebolehcapaian mereka, platform awan IoT boleh dibahagikan kepada platform awan IoT awam (selepas ini dirujuk sebagai "awan awam") dan platform awan IoT peribadi (selepas ini dirujuk sebagai "awan peribadi").
Awan awam biasanya menunjukkan platform awan IoT yang dikongsi untuk perusahaan atau individu, dikendalikan dan diselenggara oleh penyedia platform, dan dikongsi melalui Internet. Ia boleh menjadi percuma atau kos rendah, dan menyediakan perkhidmatan di seluruh rangkaian awam terbuka, seperti Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, dll. Sebagai platform sokongan, awan awam boleh menyepadukan penyedia perkhidmatan huluan dan pengguna akhir hiliran untuk mencipta rantaian nilai dan ekosistem baharu.
Awan peribadi dibina untuk kegunaan perusahaan sahaja, sekali gus menjamin kawalan terbaik ke atas data, keselamatan dan kualiti perkhidmatan. Perkhidmatan dan infrastrukturnya diselenggara secara berasingan oleh perusahaan, dan perkakasan serta perisian sokongan juga dikhaskan untuk pengguna tertentu. Perusahaan boleh menyesuaikan perkhidmatan awan untuk memenuhi keperluan perniagaan mereka. Pada masa ini, beberapa pengeluar rumah pintar telah pun mendapat platform awan IoT peribadi dan membangunkan aplikasi rumah pintar berdasarkannya.
Awan awam dan awan peribadi mempunyai advan mereka sendiritages, yang akan diterangkan kemudian.
Untuk mencapai ketersambungan komunikasi, adalah perlu untuk melengkapkan sekurang-kurangnya pembangunan terbenam pada bahagian peranti, bersama-sama pelayan perniagaan, platform awan IoT dan aplikasi telefon pintar. Menghadapi projek yang begitu besar, awan awam biasanya menyediakan kit pembangunan perisian untuk apl sisi peranti dan telefon pintar untuk mempercepatkan proses. Kedua-dua awan awam dan persendirian menyediakan perkhidmatan termasuk akses peranti, pengurusan peranti, bayangan peranti dan operasi dan penyelenggaraan.
Akses peranti Platform awan IoT perlu menyediakan bukan sahaja antara muka untuk akses peranti menggunakan protokol
Bab 2. Pengenalan dan Amalan Projek IoT 11
seperti MQTT, CoAP, HTTPS dan WebSoket, tetapi juga fungsi pengesahan keselamatan peranti untuk menyekat peranti palsu dan haram, dengan berkesan mengurangkan risiko dikompromi. Pengesahan sedemikian biasanya menyokong mekanisme yang berbeza, jadi apabila peranti dihasilkan secara besar-besaran, adalah perlu untuk pra-menetapkan sijil peranti mengikut mekanisme pengesahan yang dipilih dan membakarnya ke dalam peranti.
Pengurusan peranti Fungsi pengurusan peranti yang disediakan oleh platform awan IoT bukan sahaja dapat membantu pengeluar memantau status pengaktifan dan status dalam talian peranti mereka dalam masa nyata, tetapi juga membenarkan pilihan seperti menambah/mengalih keluar peranti, mendapatkan semula, menambah/memadam kumpulan, peningkatan perisian tegar , dan pengurusan versi.
Platform awan IoT bayang peranti boleh mencipta versi maya yang berterusan (bayangan peranti) untuk setiap peranti, dan status bayang peranti boleh disegerakkan dan diperolehi oleh aplikasi telefon pintar atau peranti lain melalui protokol penghantaran Internet. Bayangan peranti menyimpan status terkini yang dilaporkan dan status yang dijangkakan bagi setiap peranti, dan walaupun peranti di luar talian, ia masih boleh mendapatkan status dengan memanggil API. Bayangan peranti menyediakan API sentiasa hidup, yang memudahkan untuk membina apl telefon pintar yang berinteraksi dengan peranti.
Operasi dan penyelenggaraan Fungsi O&M merangkumi tiga aspek: · Menunjukkan maklumat statistik tentang peranti dan pemberitahuan IoT. · Pengurusan log membenarkan perolehan semula maklumat tentang tingkah laku peranti, aliran mesej naik/turun dan kandungan mesej. · Penyahpepijatan peranti menyokong penghantaran arahan, kemas kini konfigurasi dan menyemak interaksi antara platform awan IoT dan mesej peranti.
2.2 Amalan: Projek Cahaya Pintar
Selepas pengenalan teori dalam setiap bab, anda akan menemui bahagian latihan yang berkaitan dengan projek Smart Light untuk membantu anda mendapatkan pengalaman praktikal. Projek ini berdasarkan cip ESP32-C3 ESP dan ESP RainMaker IoT Cloud Platform, dan meliputi perkakasan modul wayarles dalam produk cahaya pintar, perisian terbenam untuk peranti pintar berdasarkan ESP32C3, aplikasi telefon pintar dan interaksi ESP RainMaker.
Kod sumber Untuk pembelajaran yang lebih baik dan mengembangkan pengalaman, projek dalam buku ini telah disumber terbuka. Anda boleh memuat turun kod sumber daripada repositori GitHub kami di https://github. com/espressif/book-esp32c3-iot-projects.
12 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
2.2.1 Struktur Projek
Projek Smart Light terdiri daripada tiga bahagian: i. Peranti cahaya pintar berdasarkan ESP32-C3, bertanggungjawab untuk berinteraksi dengan platform awan IoT, dan mengawal suis, kecerahan dan suhu warna LED lamp manik. ii. Apl telefon pintar (termasuk apl tablet yang berjalan pada Android dan iOS), bertanggungjawab untuk konfigurasi rangkaian produk cahaya pintar, serta menyoal dan mengawal statusnya.
iii. Platform awan IoT berdasarkan ESP RainMaker. Untuk memudahkan, kami mempertimbangkan platform awan IoT dan pelayan perniagaan secara keseluruhan dalam buku ini. Butiran tentang ESP RainMaker akan disediakan dalam Bab 3.
Korespondensi antara struktur projek Smart Light dan seni bina IoT ditunjukkan dalam Rajah 2.1.
Rajah 2.1. Struktur projek lampu pintar
2.2.2 Fungsi Projek
Dibahagikan mengikut struktur, fungsi setiap bahagian adalah seperti berikut. Peranti cahaya pintar
· Konfigurasi rangkaian dan sambungan. · Kawalan PWM LED, seperti suis, kecerahan, suhu warna, dsb. · Automasi atau kawalan pemandangan, cth., suis masa. · Penyulitan dan but Flash yang selamat. · Peningkatan perisian tegar dan pengurusan versi.
Bab 2. Pengenalan dan Amalan Projek IoT 13
Apl telefon pintar · Konfigurasi rangkaian dan pengikatan peranti. · Kawalan produk cahaya pintar, seperti suis, kecerahan, suhu warna, dsb. · Automasi atau tetapan pemandangan, cth., suis masa. · Kawalan tempatan/jauh. · Pendaftaran pengguna, log masuk, dsb.
Platform awan ESP RainMaker IoT · Mendayakan akses peranti IoT. · Menyediakan API pengendalian peranti yang boleh diakses oleh aplikasi telefon pintar. · Peningkatan perisian tegar dan pengurusan versi.
2.2.3 Penyediaan Perkakasan
Jika berminat untuk melaksanakan projek itu, anda juga memerlukan perkakasan berikut: lampu pintar, telefon pintar, penghala Wi-Fi dan komputer yang memenuhi keperluan pemasangan persekitaran pembangunan. Lampu pintar
Lampu pintar ialah jenis mentol baharu, yang bentuknya sama dengan mentol pijar am. Lampu pintar terdiri daripada bekalan kuasa terkawal step-down kapasitor, modul wayarles (dengan ESP32-C3 terbina dalam), pengawal LED dan matriks LED RGB. Apabila disambungkan kepada kuasa, voltan 15 V DCtage output selepas kapasitor step-down, pembetulan diod, dan peraturan menyediakan tenaga kepada pengawal LED dan matriks LED. Pengawal LED secara automatik boleh menghantar tahap tinggi dan rendah pada selang waktu tertentu, menukar matriks LED RGB antara tertutup (lampu dihidupkan) dan terbuka (lampu dimatikan), supaya ia boleh mengeluarkan cyan, kuning, hijau, ungu, biru, merah dan cahaya putih. Modul wayarles bertanggungjawab untuk menyambung ke penghala Wi-Fi, menerima dan melaporkan status lampu pintar, dan menghantar arahan untuk mengawal LED.
Rajah 2.2. Lampu pintar simulasi
Pada perkembangan awal stage, anda boleh mensimulasikan cahaya pintar menggunakan papan ESP32-C3DevKitM-1 yang disambungkan dengan RGB LED lamp manik (lihat Rajah 2.2). Tetapi anda sepatutnya
14 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
ambil perhatian bahawa ini bukan satu-satunya cara untuk memasang lampu pintar. Reka bentuk perkakasan projek dalam buku ini hanya mengandungi modul wayarles (dengan ESP32-C3 terbina dalam), tetapi bukan reka bentuk perkakasan cahaya pintar yang lengkap. Selain itu, Espressif juga menghasilkan papan pembangunan audio berasaskan ESP32-C3 ESP32C3-Lyra untuk mengawal lampu dengan audio. Papan mempunyai antara muka untuk mikrofon dan pembesar suara serta boleh mengawal jalur LED. Ia boleh digunakan untuk membangunkan kos ultra rendah, penyiar audio berprestasi tinggi dan jalur cahaya irama. Rajah 2.3 menunjukkan papan ESP32-C3Lyra yang dipautkan dengan jalur 40 lampu LED.
Rajah 2.3. ESP32-C3-Lyra dipautkan dengan jalur 40 lampu LED
Telefon Pintar (Android/iOS) Projek Smart Light melibatkan pembangunan aplikasi telefon pintar untuk menyediakan dan mengawal produk cahaya pintar.
Penghala Wi-Fi Penghala Wi-Fi menukar isyarat rangkaian berwayar dan isyarat rangkaian mudah alih kepada isyarat rangkaian wayarles, untuk komputer, telefon pintar, tablet dan peranti wayarles lain untuk menyambung ke rangkaian. Untuk exampOleh itu, jalur lebar di rumah hanya perlu disambungkan ke penghala Wi-Fi untuk mencapai rangkaian wayarles peranti Wi-Fi. Piawaian protokol arus perdana yang disokong oleh penghala Wi-Fi ialah IEEE 802.11n, dengan purata TxRate 300 Mbps, atau 600 Mbps pada maksimum. Mereka serasi ke belakang dengan IEEE 802.11b dan IEEE 802.11g. Cip ESP32-C3 oleh Espressif menyokong IEEE 802.11b/g/n, jadi anda boleh memilih penghala Wi-Fi jalur tunggal (2.4 GHz) atau dwi-jalur (2.4 GHz dan 5 GHz).
Persekitaran pembangunan komputer (Linux/macOS/Windows) akan diperkenalkan dalam Bab 4. Bab 2. Pengenalan dan Amalan Projek IoT 15
2.2.4 Proses Pembangunan
Rajah 2.4. Langkah-langkah membangunkan projek Smart Light
Reka bentuk perkakasan Reka bentuk perkakasan peranti IoT adalah penting untuk projek IoT. Projek lampu pintar yang lengkap bertujuan untuk menghasilkan lamp bekerja di bawah bekalan utama. Pengeluar yang berbeza menghasilkan lamps gaya dan jenis pemacu yang berbeza, tetapi modul wayarles mereka biasanya mempunyai fungsi yang sama. Untuk memudahkan proses pembangunan projek Smart Ligh, buku ini hanya merangkumi reka bentuk perkakasan dan pembangunan perisian modul wayarles.
Konfigurasi platform awan IoT Untuk menggunakan platform awan IoT, anda perlu mengkonfigurasi projek pada bahagian belakang, seperti mencipta produk, mencipta peranti, menetapkan sifat peranti, dsb.
Pembangunan perisian terbenam untuk peranti IoT Laksanakan fungsi yang diharapkan dengan ESP-IDF, SDK sisi peranti Espressif, termasuk menyambung ke platform awan IoT, membangunkan pemacu LED dan meningkatkan perisian tegar.
Pembangunan aplikasi telefon pintar Membangunkan aplikasi telefon pintar untuk sistem Android dan iOS untuk merealisasikan pendaftaran dan log masuk pengguna, kawalan peranti dan fungsi lain.
Pengoptimuman peranti IoT Setelah pembangunan asas fungsi peranti IoT selesai, anda boleh beralih kepada tugas pengoptimuman, seperti pengoptimuman kuasa.
Ujian pengeluaran besar-besaran Menjalankan ujian pengeluaran besar-besaran mengikut piawaian yang berkaitan, seperti ujian fungsi peralatan, ujian penuaan, ujian RF, dsb.
Walaupun langkah-langkah yang disenaraikan di atas, projek Smart Light tidak semestinya tertakluk kepada prosedur sedemikian kerana tugas yang berbeza juga boleh dijalankan pada masa yang sama. Untuk example, perisian terbenam dan aplikasi telefon pintar boleh dibangunkan secara selari. Beberapa langkah juga mungkin perlu diulang, seperti pengoptimuman peranti IoT dan ujian pengeluaran besar-besaran.
16 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
2.3 Rumusan
Dalam bab ini, kami mula-mula menerangkan tentang komponen asas dan modul berfungsi bagi projek IoT, kemudian memperkenalkan sarung Smart Light untuk amalan, merujuk kepada struktur, fungsi, penyediaan perkakasan dan proses pembangunannya. Pembaca boleh membuat kesimpulan daripada amalan dan menjadi yakin untuk melaksanakan projek IoT dengan kesilapan minimum pada masa hadapan.
Bab 2. Pengenalan dan Amalan Projek IoT 17
18 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Bab 3
pengenalan
kepada
ESP
RainMaker
Internet Perkara (IoT) menawarkan kemungkinan yang tidak berkesudahan untuk mengubah cara hidup orang ramai, namun pembangunan kejuruteraan IoT penuh dengan cabaran. Dengan awan awam, pengeluar terminal boleh melaksanakan fungsi produk melalui penyelesaian berikut:
Berdasarkan platform awan penyedia penyelesaian Dengan cara ini, pengeluar terminal hanya perlu mereka bentuk perkakasan produk, kemudian menyambung perkakasan ke awan menggunakan modul komunikasi yang disediakan, dan mengkonfigurasi fungsi produk mengikut garis panduan. Ini adalah pendekatan yang cekap kerana ia menghapuskan keperluan untuk pembangunan dan operasi dan penyelenggaraan (O&M) bahagian pelayan dan aplikasi. Ia membolehkan pengeluar terminal menumpukan pada reka bentuk perkakasan tanpa perlu mempertimbangkan pelaksanaan awan. Walau bagaimanapun, penyelesaian sedemikian (mis., perisian tegar peranti dan Apl) biasanya bukan sumber terbuka, jadi fungsi produk akan dihadkan oleh platform awan penyedia yang tidak boleh disesuaikan. Sementara itu, data pengguna dan peranti juga tergolong dalam platform awan.
Berdasarkan produk awan Dalam penyelesaian ini, selepas melengkapkan reka bentuk perkakasan, pengeluar terminal bukan sahaja perlu melaksanakan fungsi awan menggunakan satu atau lebih produk awan yang disediakan oleh awan awam, tetapi juga perlu memautkan perkakasan dengan awan. Untuk example, untuk menyambung ke Amazon Web Perkhidmatan (AWS), pengeluar terminal perlu menggunakan produk AWS seperti Amazon API Gateway, AWS IoT Core dan AWS Lambda untuk mendayakan akses peranti, alat kawalan jauh, storan data, pengurusan pengguna dan fungsi asas yang lain. Ia bukan sahaja meminta pengeluar terminal untuk menggunakan dan mengkonfigurasi produk awan secara fleksibel dengan pemahaman yang mendalam dan pengalaman yang kaya, tetapi juga memerlukan mereka untuk mempertimbangkan kos pembinaan dan penyelenggaraan untuk permulaan dan kemudian.tages Ini menimbulkan cabaran besar kepada tenaga dan sumber syarikat.
Berbanding dengan awan awam, awan peribadi biasanya dibina untuk projek dan produk tertentu. Pembangun awan swasta diberi kebebasan tahap tertinggi dalam reka bentuk protokol dan pelaksanaan logik perniagaan. Pengeluar terminal boleh membuat produk dan skema reka bentuk sesuka hati, dan dengan mudah menyepadukan serta memperkasakan data pengguna. Menggabungkan keselamatan tinggi, berskala dan kebolehpercayaan awan awam dengan advantages daripada awan peribadi, Espressif melancarkan ESP
19
RainMaker, penyelesaian awan persendirian bersepadu yang mendalam berdasarkan awan Amazon. Pengguna boleh menggunakan ESP RainMaker dan membina awan peribadi hanya dengan akaun AWS.
3.1 Apakah itu ESP RainMaker?
ESP RainMaker ialah platform AIoT lengkap yang dibina dengan berbilang produk AWS matang. Ia menyediakan pelbagai perkhidmatan yang diperlukan untuk pengeluaran besar-besaran seperti akses awan peranti, peningkatan peranti, pengurusan bahagian belakang, log masuk pihak ketiga, penyepaduan suara dan pengurusan pengguna. Dengan menggunakan Repositori Aplikasi Tanpa Pelayan (SAR) yang disediakan oleh AWS, pengeluar terminal boleh menggunakan ESP RainMaker dengan cepat ke akaun AWS mereka, yang menjimatkan masa dan mudah dikendalikan. Diurus dan diselenggara oleh Espressif, SAR yang digunakan oleh ESP RainMaker membantu pembangun mengurangkan kos penyelenggaraan awan dan mempercepatkan pembangunan produk AIoT, sekali gus membina penyelesaian AIoT yang selamat, stabil dan boleh disesuaikan. Rajah 3.1 menunjukkan seni bina ESP RainMaker.
Rajah 3.1. Seni bina ESP RainMaker
Pelayan awam ESP RainMaker oleh Espressif adalah percuma untuk semua peminat, pembuat dan pendidik ESP untuk penilaian penyelesaian. Pembangun boleh log masuk dengan akaun Apple, Google atau GitHub, dan dengan cepat membina prototaip aplikasi IoT mereka sendiri. Pelayan awam menyepadukan Alexa dan Google Home, dan menyediakan perkhidmatan kawalan suara, yang disokong oleh Alexa Skill dan Google Actions. Fungsi pengecaman semantiknya juga dikuasakan oleh pihak ketiga. Peranti RainMaker IoT hanya bertindak balas kepada tindakan tertentu. Untuk senarai lengkap arahan suara yang disokong, sila semak platform pihak ketiga. Selain itu, Espressif menawarkan Apl RainMaker awam untuk pengguna mengawal produk melalui telefon pintar. 20 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
3.2 Pelaksanaan ESP RainMaker
Seperti yang ditunjukkan dalam Rajah 3.2, ESP RainMaker terdiri daripada empat bahagian: · Tuntutan Perkhidmatan, membolehkan peranti RainMaker memperoleh sijil secara dinamik. · RainMaker Cloud (juga dikenali sebagai cloud backend), menyediakan perkhidmatan seperti penapisan mesej, pengurusan pengguna, storan data dan integrasi pihak ketiga. · Agen RainMaker, membolehkan peranti RainMaker bersambung ke RainMaker Cloud. · RainMaker Client (RainMaker App atau skrip CLI), untuk peruntukan, penciptaan pengguna, persatuan dan kawalan peranti, dsb.
Rajah 3.2. Struktur ESP RainMaker
ESP RainMaker menyediakan set lengkap alatan untuk pembangunan produk dan pengeluaran besar-besaran, termasuk: RainMaker SDK
RainMaker SDK adalah berdasarkan ESP-IDF dan menyediakan kod sumber ejen bahagian peranti dan API C yang berkaitan untuk pembangunan perisian tegar. Pembangun hanya perlu menulis logik aplikasi dan menyerahkan selebihnya kepada rangka kerja RainMaker. Untuk mendapatkan maklumat lanjut tentang C API, sila lawati https://bookc3.espressif.com/rm/c-api-reference. Apl RainMaker Versi awam Apl RainMaker membenarkan pembangun melengkapkan peruntukan peranti dan mengawal serta menanyakan status peranti (cth., produk lampu pintar). Ia tersedia di kedai aplikasi iOS dan Android. Untuk butiran lanjut, sila rujuk Bab 10. REST API REST API membantu pengguna membina aplikasi mereka sendiri serupa dengan RainMaker App. Untuk maklumat lanjut, sila layari https://swaggerapis.rainmaker.espressif.com/.
Bab 3. Pengenalan kepada ESP RainMaker 21
API Python CLI berasaskan Python, yang disertakan dengan RainMaker SDK, disediakan untuk melaksanakan semua fungsi yang serupa dengan ciri telefon pintar. Untuk mendapatkan maklumat lanjut tentang API Python, sila lawati https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, dengan tahap akses yang lebih tinggi, disediakan untuk penggunaan peribadi ESP RainMaker untuk menjana sijil peranti secara pukal.
3.2.1 Perkhidmatan Tuntutan
Semua komunikasi antara peranti RainMaker dan bahagian belakang awan dijalankan melalui MQTT+TLS. Dalam konteks ESP RainMaker, "Menuntut" ialah proses di mana peranti mendapatkan sijil daripada Perkhidmatan Tuntutan untuk menyambung ke bahagian belakang awan. Harap maklum bahawa Perkhidmatan Tuntutan hanya terpakai kepada perkhidmatan RainMaker awam, manakala untuk penggunaan peribadi, sijil peranti perlu dijana secara pukal melalui Admin CLI. ESP RainMaker menyokong tiga jenis Perkhidmatan Tuntutan: Tuntutan Sendiri
Peranti itu sendiri mengambil sijil melalui kunci rahsia yang dipraprogramkan dalam eFuse selepas menyambung ke Internet. Tuntutan Didorong Hos Sijil diperoleh daripada hos pembangunan dengan akaun RainMaker. Tuntutan Berbantu Sijil diperoleh melalui aplikasi telefon pintar semasa penyediaan.
3.2.2 Agen RainMaker
Rajah 3.3. Struktur RainMaker SDK Fungsi utama Agen RainMaker adalah untuk menyediakan ketersambungan dan membantu lapisan aplikasi untuk memproses data awan pautan atas/pautan bawah. Ia dibina melalui Pengembaraan Tanpa Wayar RainMaker SDK 22 ESP32-C3: Panduan Komprehensif untuk IoT
dan dibangunkan berdasarkan rangka kerja ESP-IDF yang terbukti, menggunakan komponen ESP-IDF seperti RTOS, NVS dan MQTT. Rajah 3.3 menunjukkan struktur RainMaker SDK.
RainMaker SDK merangkumi dua ciri utama.
Sambungan
i. Bekerjasama dengan Perkhidmatan Tuntutan untuk mendapatkan sijil peranti.
ii. Menyambung ke bahagian belakang awan menggunakan protokol MQTT yang selamat untuk menyediakan sambungan jauh dan melaksanakan kawalan jauh, pelaporan mesej, pengurusan pengguna, pengurusan peranti, dll. Ia menggunakan komponen MQTT dalam ESP-IDF secara lalai dan menyediakan lapisan abstraksi untuk antara muka dengan yang lain susunan protokol.
iii. Menyediakan komponen penyediaan wifi untuk sambungan dan peruntukan Wi-Fi, komponen https ota esp untuk peningkatan OTA, dan komponen ctrl tempatan esp untuk penemuan dan sambungan peranti tempatan. Semua objektif ini boleh dicapai melalui konfigurasi mudah.
Pemprosesan data
i. Menyimpan sijil peranti yang dikeluarkan oleh Perkhidmatan Tuntutan dan data yang diperlukan semasa menjalankan RainMaker, secara lalai menggunakan antara muka yang disediakan oleh komponen flash nvs dan menyediakan API untuk pembangun untuk kegunaan langsung.
ii. Menggunakan mekanisme panggil balik untuk memproses data awan uplink/downlink dan menyahsekat data secara automatik ke lapisan aplikasi untuk memudahkan pemprosesan oleh pembangun. Untuk exampOleh itu, RainMaker SDK menyediakan antara muka yang kaya untuk mewujudkan data TSL (Thing Specification Language), yang diperlukan untuk menentukan model TSL untuk menerangkan peranti IoT dan melaksanakan fungsi seperti pemasaan, undur dan kawalan suara. Untuk ciri interaktif asas seperti pemasaan, RainMaker SDK menyediakan penyelesaian bebas pembangunan yang boleh didayakan dengan mudah apabila diperlukan. Kemudian, Ejen RainMaker akan memproses data secara langsung, menghantarnya ke awan melalui topik MQTT yang berkaitan dan memberi maklum balas kepada perubahan data dalam bahagian belakang awan melalui mekanisme panggil balik.
3.2.3 Bahagian Belakang Awan
Bahagian belakang awan dibina pada AWS Serverless Computing dan dicapai melalui AWS Cognito (sistem pengurusan identiti), Amazon API Gateway, AWS Lambda (perkhidmatan pengkomputeran tanpa pelayan), Amazon DynamoDB (pangkalan data NoSQL), AWS IoT Core (teras akses IoT yang menyediakan akses MQTT dan penapisan peraturan), Perkhidmatan E-mel Mudah Amazon (perkhidmatan mel ringkas SES), Amazon CloudFront (rangkaian penghantaran pantas), Perkhidmatan Giliran Mudah Amazon (barisan mesej SQS) dan Amazon S3 (perkhidmatan storan baldi). Ia bertujuan untuk mengoptimumkan skalabiliti dan keselamatan. Dengan ESP RainMaker, pembangun boleh mengurus peranti tanpa perlu menulis kod dalam awan. Mesej yang dilaporkan oleh peranti dihantar secara telus kepada
Bab 3. Pengenalan kepada ESP RainMaker 23
pelanggan aplikasi atau perkhidmatan pihak ketiga yang lain. Jadual 3.1 menunjukkan produk dan fungsi awan AWS yang digunakan dalam bahagian belakang awan, dengan lebih banyak produk dan ciri yang sedang dibangunkan.
Jadual 3.1. Produk dan fungsi awan AWS yang digunakan oleh bahagian belakang awan
Produk Awan AWS Digunakan oleh RainMaker
Fungsi
AWS Cognito
Mengurus bukti kelayakan pengguna dan menyokong log masuk pihak ketiga
AWS Lambda
Melaksanakan logik perniagaan teras bahagian belakang awan
Amazon Timestream Menyimpan data siri masa
Amazon DynamoDB Menyimpan maklumat peribadi pelanggan
Teras IoT AWS
Menyokong komunikasi MQTT
Amazon SES
Menyediakan perkhidmatan penghantaran e-mel
Amazon CloudFront Mempercepatkan pengurusan bahagian belakang webakses tapak
Amazon SQS
Mengirim semula mesej daripada AWS IoT Core
3.2.4 Pelanggan RainMaker
Pelanggan RainMaker, seperti App dan CLI, berkomunikasi dengan bahagian belakang awan melalui API REST. Maklumat terperinci dan arahan tentang API REST boleh didapati dalam dokumentasi Swagger yang disediakan oleh Espressif. Pelanggan aplikasi mudah alih RainMaker tersedia untuk sistem iOS dan Android. Ia membenarkan peruntukan peranti, kawalan dan perkongsian, serta mencipta dan mendayakan tugas undur dan menyambung ke platform pihak ketiga. Ia boleh memuatkan UI dan ikon secara automatik mengikut konfigurasi yang dilaporkan oleh peranti dan memaparkan TSL peranti sepenuhnya.
Untuk exampDan, jika lampu pintar dibina pada bekas yang disediakan oleh RainMaker SDKampOleh itu, ikon dan UI lampu mentol akan dimuatkan secara automatik apabila peruntukan selesai. Pengguna boleh menukar warna dan kecerahan cahaya melalui antara muka dan mencapai kawalan pihak ketiga dengan memautkan Alexa Smart Home Skill atau Google Smart Home Actions ke akaun ESP RainMaker mereka. Rajah 3.4 menunjukkan ikon dan UI exampsedikit lampu mentol masing-masing pada Alexa, Google Home dan ESP RainMaker App.
24 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
(a) Cthample – Alexa
(b) Cthample – Laman Utama Google
(c) Cthample – ESP RainMaker
Rajah 3.4. Cthampsedikit ikon dan UI lampu mentol pada Alexa, Google Home dan Apl ESP RainMaker
3.3 Amalan: Perkara Utama untuk Membangunkan dengan ESP RainMaker
Setelah lapisan pemacu peranti selesai, pembangun boleh mula mencipta model TSL dan memproses data pautan bawah menggunakan API yang disediakan oleh RainMaker SDK dan mendayakan perkhidmatan asas ESP RainMaker berdasarkan definisi dan keperluan produk.
Bab 3. Pengenalan kepada ESP RainMaker 25
Bahagian 9.4 buku ini akan menerangkan pelaksanaan lampu pintar LED dalam RainMaker. Semasa nyahpepijat, pembangun boleh menggunakan alatan CLI dalam RainMaker SDK untuk berkomunikasi dengan lampu pintar (atau panggil REST API daripada Swagger).
Bab 10 akan menghuraikan penggunaan API REST dalam membangunkan aplikasi telefon pintar. Peningkatan OTA lampu pintar LED akan diliputi dalam Bab 11. Jika pembangun telah mendayakan pemantauan jauh ESP Insights, bahagian belakang pengurusan ESP RainMaker akan memaparkan data ESP Insights. Butiran akan dibentangkan dalam Bab 15.
ESP RainMaker menyokong penggunaan peribadi, yang berbeza daripada pelayan RainMaker awam dalam cara berikut:
Perkhidmatan Tuntutan Untuk menjana sijil dalam penempatan peribadi, anda perlu menggunakan CLI Pentadbir RainMaker dan bukannya Menuntut. Dengan pelayan awam, pembangun mesti diberi hak pentadbir untuk melaksanakan peningkatan perisian tegar, tetapi ia tidak diingini dalam penggunaan komersial. Oleh itu, perkhidmatan pengesahan berasingan tidak boleh disediakan untuk tuntutan sendiri, mahupun hak pentadbir untuk tuntutan didorong hos atau dibantu.
Aplikasi telefon Dalam penggunaan peribadi, aplikasi perlu dikonfigurasikan dan disusun secara berasingan untuk memastikan bahawa sistem akaun tidak boleh beroperasi.
Log masuk pihak ketiga dan penyepaduan suara Pembangun perlu mengkonfigurasi secara berasingan melalui akaun Google dan Apple Developer untuk mendayakan log masuk pihak ketiga, serta integrasi Alexa Skill dan Google Voice Assistant.
PETUA Untuk mendapatkan butiran tentang penggunaan awan, sila lawati https://customer.rainmaker.espressif. com. Dari segi perisian tegar, penghijrahan daripada pelayan awam ke pelayan peribadi hanya memerlukan penggantian sijil peranti, yang meningkatkan kecekapan penghijrahan dan mengurangkan kos migrasi dan penyahpepijatan sekunder.
3.4 Ciri-ciri ESP RainMaker
Ciri ESP RainMaker disasarkan terutamanya pada tiga aspek – pengurusan pengguna, pengguna akhir dan pentadbir. Semua ciri disokong dalam kedua-dua pelayan awam dan peribadi melainkan dinyatakan sebaliknya.
3.4.1 Pengurusan Pengguna
Ciri pengurusan pengguna membolehkan pengguna akhir mendaftar, log masuk, menukar kata laluan, mendapatkan kata laluan, dsb.
26 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Daftar dan log masuk Kaedah pendaftaran dan log masuk yang disokong oleh RainMaker termasuk: · Id e-mel + Kata laluan · Nombor telefon + Kata laluan · Akaun Google · Akaun Apple · Akaun GitHub (pelayan awam sahaja) · Akaun Amazon (pelayan peribadi sahaja)
NOTA Daftar menggunakan Google/Amazon berkongsi alamat e-mel pengguna dengan RainMaker. Daftar menggunakan Apple berkongsi alamat palsu yang Apple berikan kepada pengguna khusus untuk perkhidmatan RainMaker. Akaun RainMaker akan dibuat secara automatik untuk pengguna yang melog masuk dengan akaun Google, Apple atau Amazon buat kali pertama.
Tukar kata laluan Sah hanya untuk log masuk berasaskan id e-mel/nombor telefon. Semua sesi aktif lain akan dilog keluar selepas kata laluan ditukar. Mengikut gelagat AWS Cognito, sesi log keluar boleh kekal aktif sehingga 1 jam.
Dapatkan kata laluan Sah hanya untuk log masuk berasaskan id e-mel/nombor telefon.
3.4.2 Ciri Pengguna Akhir
Ciri yang terbuka kepada pengguna akhir termasuk kawalan dan pemantauan setempat dan jauh, penjadualan, pengumpulan peranti, perkongsian peranti, pemberitahuan tolak dan penyepaduan pihak ketiga.
Kawalan jauh dan pemantauan · Konfigurasi pertanyaan, nilai parameter dan status sambungan untuk satu atau semua peranti. · Tetapkan parameter untuk peranti tunggal atau berbilang.
Kawalan dan pemantauan tempatan Telefon mudah alih dan peranti perlu disambungkan ke rangkaian yang sama untuk kawalan tempatan.
Penjadualan · Pengguna pratetap tindakan tertentu pada masa tertentu. · Tiada sambungan Internet diperlukan untuk peranti semasa melaksanakan jadual. · Satu kali atau ulangi (dengan menentukan hari) untuk satu atau berbilang peranti.
Pengumpulan peranti Menyokong pengelompokan abstrak berbilang peringkat Metadata kumpulan boleh digunakan untuk mencipta struktur Bilik Rumah.
Bab 3. Pengenalan kepada ESP RainMaker 27
Perkongsian peranti Satu atau lebih peranti boleh dikongsi dengan satu atau lebih pengguna.
Pemberitahuan tolak Pengguna akhir akan menerima pemberitahuan tolak untuk acara seperti · Peranti baharu ditambah/dialih keluar · Peranti disambungkan ke awan · Peranti diputuskan sambungan daripada awan · Permintaan perkongsian peranti dibuat/diterima/ditolak · Mesej amaran dilaporkan oleh peranti
Penyepaduan pihak ketiga Alexa dan Pembantu Suara Google disokong untuk mengawal peranti RainMaker, termasuk lampu, suis, soket, kipas dan penderia suhu.
3.4.3 Ciri-ciri Pentadbiran
Ciri pentadbir membolehkan pentadbir melaksanakan pendaftaran peranti, pengumpulan peranti dan peningkatan OTA, dan kepada view statistik dan data ESP Insights.
Pendaftaran peranti Jana sijil peranti dan daftar dengan Admin CLI (pelayan peribadi sahaja).
Pengumpulan peranti Cipta kumpulan abstrak atau berstruktur berdasarkan maklumat peranti (pelayan peribadi sahaja).
Peningkatan Over-the-Air (OTA) Muat naik perisian tegar berdasarkan versi dan model, kepada satu atau lebih peranti atau kumpulan Pantau, batalkan atau arkibkan kerja OTA.
View perangkaan Viewstatistik yang boleh termasuk: · Pendaftaran peranti (sijil yang didaftarkan oleh pentadbir) · Pengaktifan peranti (peranti disambungkan buat kali pertama) · Akaun pengguna · Perkaitan peranti pengguna
View Data ESP Insights Viewdata ESP Insights yang boleh termasuk: · Ralat, amaran dan log tersuai · Laporan ranap sistem dan analisis · Sebab but semula · Metrik seperti penggunaan memori, RSSI, dsb. · Metrik dan pembolehubah tersuai
28 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
3.5 Rumusan
Dalam bab ini, kami memperkenalkan beberapa perbezaan utama antara penggunaan RainMaker awam dan penggunaan peribadi. Penyelesaian ESP RainMaker persendirian yang dilancarkan oleh Espressif sangat dipercayai dan boleh diperluaskan. Semua cip siri ESP32 telah disambungkan dan disesuaikan dengan AWS, yang sangat mengurangkan kos. Pembangun boleh menumpukan pada pengesahan prototaip tanpa perlu belajar tentang produk awan AWS. Kami juga menerangkan pelaksanaan dan ciri ESP RainMaker, dan beberapa perkara penting untuk pembangunan menggunakan platform.
Imbas untuk memuat turun ESP RainMaker untuk Android Imbas untuk memuat turun ESP RainMaker untuk iOS
Bab 3. Pengenalan kepada ESP RainMaker 29
30 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Bab Menetapkan 4 Persekitaran Pembangunan
Bab ini memberi tumpuan kepada ESP-IDF, rangka kerja pembangunan perisian rasmi untuk ESP32-C3. Kami akan menerangkan cara menyediakan persekitaran pada pelbagai sistem pengendalian, dan memperkenalkan struktur projek dan membina sistem ESP-IDF, serta penggunaan alatan pembangunan yang berkaitan. Kemudian kami akan membentangkan proses penyusunan dan jalankan bekasampprojek, sambil menawarkan penjelasan terperinci tentang log keluaran pada setiap stage.
4.1 ESP-IDF Selesaiview
ESP-IDF (Espressif IoT Development Framework) ialah rangka kerja pembangunan IoT sehenti yang disediakan oleh Espressif Technology. Ia menggunakan C/C++ sebagai bahasa pembangunan utama dan menyokong kompilasi silang di bawah sistem pengendalian arus perdana seperti Linux, Mac dan Windows. bekas ituampprogram yang disertakan dalam buku ini dibangunkan menggunakan ESP-IDF, yang menawarkan ciri berikut: · Pemacu peringkat sistem SoC. ESP-IDF termasuk pemacu untuk ESP32, ESP32-S2, ESP32-C3,
dan kerepek lain. Pemacu ini merangkumi perpustakaan tahap rendah (LL) persisian, perpustakaan lapisan abstraksi perkakasan (HAL), sokongan RTOS dan perisian pemacu lapisan atas, dsb. · Komponen penting. ESP-IDF menggabungkan komponen asas yang diperlukan untuk pembangunan IoT. Ini termasuk berbilang susunan protokol rangkaian seperti HTTP dan MQTT, rangka kerja pengurusan kuasa dengan modulasi frekuensi dinamik, dan ciri seperti Penyulitan Flash dan But Selamat, dsb. · Alat pembangunan dan pengeluaran. ESP-IDF menyediakan alatan yang biasa digunakan untuk membina, denyar dan nyahpepijat semasa pembangunan dan pengeluaran besar-besaran (lihat Rajah 4.1), seperti sistem binaan berdasarkan CMake, rantai alat kompilasi silang berdasarkan GCC dan JTAG alat penyahpepijatan berdasarkan OpenOCD, dll. Perlu diingat bahawa kod ESP-IDF terutamanya mematuhi lesen sumber terbuka Apache 2.0. Pengguna boleh membangunkan perisian peribadi atau komersial tanpa sekatan sambil mematuhi syarat lesen sumber terbuka. Selain itu, pengguna diberikan lesen paten kekal secara percuma, tanpa kewajipan untuk membuka sumber sebarang pengubahsuaian yang dibuat pada kod sumber.
31
Rajah 4.1.
Membina, berkelip dan nyahpepijat-
alat ging untuk pembangunan dan pengeluaran besar-besaran
4.1.1 Versi ESP-IDF
Kod ESP-IDF dihoskan pada GitHub sebagai projek sumber terbuka. Pada masa ini, terdapat tiga versi utama yang tersedia: v3, v4, dan v5. Setiap versi utama biasanya mengandungi pelbagai subversi, seperti v4.2, v4.3 dan sebagainya. Sistem Espressif memastikan sokongan 30 bulan untuk pembetulan pepijat dan tampung keselamatan untuk setiap subversi yang dikeluarkan. Oleh itu, semakan subversi juga dikeluarkan secara tetap, seperti v4.3.1, v4.2.2, dsb. Jadual 4.1 menunjukkan status sokongan versi ESP-IDF berbeza untuk cip Espressif, menunjukkan sama ada ia berada dalam praview stage (menawarkan sokongan untuk praview versi, yang mungkin kekurangan ciri atau dokumentasi tertentu) atau disokong secara rasmi.
Jadual 4.1. Status sokongan versi ESP-IDF yang berbeza untuk cip Espressif
Siri ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2
v4.1 disokong
v4.2 disokong disokong
v4.3 disokong disokong disokong disokong
v4.4 disokong disokong disokong disokong disokong
praview
v5.0 disokong disokong disokong disokong disokong disokong praview
32 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Lelaran versi utama selalunya melibatkan pelarasan pada struktur rangka kerja dan kemas kini kepada sistem kompilasi. Untuk exampOleh itu, perubahan besar daripada v3.* kepada v4.* ialah pemindahan beransur-ansur sistem binaan daripada Make ke CMake. Sebaliknya, lelaran versi kecil biasanya memerlukan penambahan ciri baharu atau sokongan untuk cip baharu.
Adalah penting untuk membezakan dan memahami hubungan antara versi stabil dan cawangan GitHub. Versi yang dilabelkan sebagai v*.* atau v*.*.* mewakili versi stabil yang telah lulus ujian dalaman lengkap oleh Espressif. Setelah ditetapkan, kod, rantai alat dan dokumen keluaran untuk versi yang sama kekal tidak berubah. Walau bagaimanapun, cawangan GitHub (cth., cawangan keluaran/v4.3) menjalani komit kod yang kerap, selalunya setiap hari. Oleh itu, dua coretan kod di bawah cawangan yang sama mungkin berbeza, memerlukan pembangun mengemas kini kod mereka dengan segera dengan sewajarnya.
4.1.2 Aliran Kerja Git ESP-IDF
Espressif mengikut aliran kerja Git khusus untuk ESP-IDF, yang digariskan seperti berikut:
· Perubahan baru dibuat pada cawangan induk, yang berfungsi sebagai cawangan pembangunan utama. Versi ESP-IDF pada cawangan induk sentiasa membawa -dev tag untuk menunjukkan bahawa ia sedang dalam pembangunan, seperti v4.3-dev. Perubahan pada cawangan induk akan menjadi semulaviewed dan diuji dalam repositori dalaman Espressif, dan kemudian ditolak ke GitHub selepas ujian automatik selesai.
· Apabila versi baharu telah melengkapkan pembangunan ciri pada cawangan induk dan memenuhi kriteria untuk memasuki ujian beta, ia beralih kepada cawangan baharu, seperti keluaran/v4.3. Selain itu, cawangan baru ini adalah tagged sebagai versi pra-keluaran, seperti v4.3-beta1. Pembangun boleh merujuk kepada platform GitHub untuk mengakses senarai lengkap cawangan dan tags untuk ESP-IDF. Adalah penting untuk ambil perhatian bahawa versi beta (versi pra-keluaran) mungkin masih mempunyai sejumlah besar isu yang diketahui. Memandangkan versi beta menjalani ujian berterusan, pembetulan pepijat ditambahkan pada versi ini dan cawangan induk secara serentak. Sementara itu, cawangan induk mungkin sudah mula membangunkan ciri baharu untuk versi seterusnya. Apabila ujian hampir selesai, label calon keluaran (rc) ditambahkan pada cawangan, menunjukkan bahawa ia adalah calon berpotensi untuk keluaran rasmi, seperti v4.3-rc1. Pada s initage, cawangan kekal sebagai versi pra-keluaran.
· Jika tiada pepijat utama ditemui atau dilaporkan, versi prakeluaran akhirnya menerima label versi utama (cth., v5.0) atau label versi kecil (cth., v4.3) dan menjadi versi keluaran rasmi, yang didokumenkan dalam halaman nota keluaran. Selepas itu, sebarang pepijat yang dikenal pasti dalam versi ini ditetapkan pada cawangan keluaran. Selepas ujian manual selesai, cawangan diberikan label versi pembetulan pepijat (cth., v4.3.2), yang juga ditunjukkan pada halaman nota keluaran.
Bab 4. Menyediakan Persekitaran Pembangunan 33
4.1.3 Memilih Versi yang Sesuai
Memandangkan ESP-IDF secara rasmi mula menyokong ESP32-C3 daripada versi v4.3, dan v4.4 masih belum dikeluarkan secara rasmi pada masa penulisan buku ini, versi yang digunakan dalam buku ini ialah v4.3.2, iaitu versi yang disemak. daripada v4.3. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pada masa anda membaca buku ini, v4.4 atau versi yang lebih baharu mungkin sudah tersedia. Apabila memilih versi, kami mengesyorkan yang berikut:
· Untuk pembangun peringkat permulaan, adalah dinasihatkan untuk memilih versi v4.3 yang stabil atau versi yang disemak, yang sejajar dengan bekasampversi yang digunakan dalam buku ini.
· Untuk tujuan pengeluaran besar-besaran, adalah disyorkan untuk menggunakan versi stabil terkini untuk mendapat manfaat daripada sokongan teknikal yang paling terkini.
· Jika anda berhasrat untuk mencuba cip baharu atau meneroka ciri produk baharu, sila gunakan cawangan induk. Versi terkini mengandungi semua ciri terkini, tetapi perlu diingat bahawa mungkin terdapat pepijat yang diketahui atau tidak diketahui.
· Jika versi stabil yang digunakan tidak termasuk ciri baharu yang diingini dan anda ingin meminimumkan risiko yang berkaitan dengan cawangan induk, pertimbangkan untuk menggunakan cawangan keluaran yang sepadan, seperti cawangan keluaran/v4.4. Repositori GitHub Espressif akan mula-mula mencipta cawangan keluaran/v4.4 dan seterusnya mengeluarkan versi v4.4 yang stabil berdasarkan petikan sejarah khusus cawangan ini, selepas melengkapkan semua pembangunan dan ujian ciri.
4.1.4 Berakhirview daripada Direktori SDK ESP-IDF
ESP-IDF SDK terdiri daripada dua direktori utama: esp-idf dan .espressif. Yang pertama mengandungi kod sumber repositori ESP-IDF files dan skrip kompilasi, manakala yang terakhir ini terutamanya menyimpan rangkaian alat kompilasi dan perisian lain. Kebiasaan dengan dua direktori ini akan membantu pembangun menggunakan sumber yang ada dengan lebih baik dan mempercepatkan proses pembangunan. Struktur direktori ESP-IDF diterangkan di bawah:
(1) Direktori kod repositori ESP-IDF (/esp/esp-idf), seperti yang ditunjukkan dalam Rajah 4.2.
a. Komponen direktori komponen
Direktori teras ini menyepadukan pelbagai komponen perisian penting ESP-IDF. Tiada kod projek boleh disusun tanpa bergantung pada komponen dalam direktori ini. Ia termasuk sokongan pemandu untuk pelbagai cip Espressif. Daripada antara muka perpustakaan LL dan perpustakaan HAL untuk peranti kepada Pemacu dan Maya peringkat atas File Sokongan lapisan Sistem (VFS), pembangun boleh memilih komponen yang sesuai pada tahap yang berbeza untuk keperluan pembangunan mereka. ESP-IDF juga menyokong pelbagai susunan protokol rangkaian standard seperti TCP/IP, HTTP, MQTT, WebSoket, dsb. Pembangun boleh menggunakan antara muka biasa seperti Socket untuk membina aplikasi rangkaian. Komponen memberikan pemahaman-
34 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Rajah 4.2. Direktori kod repositori ESP-IDF
fungsi yang aktif dan boleh disepadukan dengan mudah ke dalam aplikasi, membolehkan pembangun menumpukan perhatian sepenuhnya pada logik perniagaan. Beberapa komponen biasa termasuk: · pemacu: Komponen ini mengandungi program pemacu persisian untuk pelbagai Espressif
siri cip, seperti GPIO, I2C, SPI, UART, LEDC (PWM), dll. Program pemacu persisian dalam komponen ini menawarkan antara muka abstrak bebas cip. Setiap persisian mempunyai pengepala yang sama file (seperti gpio.h), menghapuskan keperluan untuk menangani soalan sokongan khusus cip yang berbeza. · esp_wifi: Wi-Fi, sebagai peranti khas, dianggap sebagai komponen yang berasingan. Ia termasuk berbilang API seperti pengamulaan pelbagai mod pemacu Wi-Fi, konfigurasi parameter dan pemprosesan acara. Fungsi tertentu komponen ini disediakan dalam bentuk perpustakaan pautan statik. ESP-IDF juga menyediakan dokumentasi pemandu yang komprehensif untuk kemudahan penggunaan.
Bab 4. Menyediakan Persekitaran Pembangunan 35
· freertos: Komponen ini mengandungi kod FreeRTOS yang lengkap. Selain daripada menyediakan sokongan menyeluruh untuk sistem pengendalian ini, Espressif juga telah memperluaskan sokongannya kepada cip dwi-teras. Untuk cip dwi-teras seperti ESP32 dan ESP32-S3, pengguna boleh membuat tugasan pada teras tertentu.
b. Dokumen direktori dokumen
Direktori ini mengandungi dokumen pembangunan berkaitan ESP-IDF, termasuk Panduan Bermula, Manual Rujukan API, Panduan Pembangunan, dsb.
NOTA Selepas disusun oleh alatan automatik, kandungan direktori ini digunakan di https://docs.espressif.com/projects/esp-idf. Sila pastikan untuk menukar sasaran dokumen kepada ESP32-C3 dan pilih versi ESP-IDF yang ditentukan.
c. Alat alat skrip
Direktori ini mengandungi alat bahagian hadapan kompilasi yang biasa digunakan seperti idf.py dan alat terminal monitor idf_monitor.py, dsb. Subdirektori cmake juga mengandungi skrip teras files sistem kompilasi, berfungsi sebagai asas untuk melaksanakan peraturan penyusunan ESP-IDF. Apabila menambah pembolehubah persekitaran, kandungan dalam direktori alat ditambahkan pada pembolehubah persekitaran sistem, membenarkan idf.py dilaksanakan terus di bawah laluan projek.
d. Cthampdirektori program examples
Direktori ini mengandungi koleksi besar ESP-IDF exampprogram yang menunjukkan penggunaan API komponen. bekas ituamples disusun ke dalam pelbagai subdirektori berdasarkan kategorinya:
· mulakan: Sub-direktori ini termasuk peringkat permulaan exampseperti "hello world" dan "blink" untuk membantu pengguna memahami perkara asas.
· bluetooth: Anda boleh mencari contoh berkaitan Bluetoothamples di sini, termasuk Bluetooth LE Mesh, Bluetooth LE HID, BluFi dan banyak lagi.
· wifi: Sub-direktori ini memfokuskan pada Wi-Fi examples, termasuk program asas seperti Wi-Fi SoftAP, Stesen Wi-Fi, espnow, serta protokol komunikasi proprietari examples dari Espressif. Ia juga termasuk berbilang lapisan aplikasi examples berdasarkan Wi-Fi, seperti Iperf, Sniffer dan Smart Config.
· persisian: Sub-direktori yang luas ini dibahagikan lagi kepada banyak subfolder berdasarkan nama persisian. Ia terutamanya mengandungi pemacu persisian examples untuk kerepek Espressif, dengan setiap bekasample menampilkan beberapa sub-examples. Sebagai contoh, subdirektori gpio termasuk dua examples: papan kekunci matriks GPIO dan GPIO. Adalah penting untuk ambil perhatian bahawa tidak semua bekasamples dalam direktori ini boleh digunakan untuk ESP32-C3.
36 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Untuk example, bekasamples dalam usb/host hanya terpakai pada peranti dengan perkakasan Hos USB (seperti ESP32-S3), dan ESP32-C3 tidak mempunyai peranti ini. Sistem kompilasi biasanya menyediakan gesaan apabila menetapkan sasaran. README file setiap bekasample menyenaraikan cip yang disokong. · protokol: Sub-direktori ini mengandungi examples untuk pelbagai protokol komunikasi, termasuk MQTT, HTTP, Pelayan HTTP, PPPoS, Modbus, mDNS, SNTP, meliputi rangkaian luas protokol komunikasi exampkurang diperlukan untuk pembangunan IoT. · peruntukan: Di sini, anda akan menemui peruntukan examples untuk kaedah yang berbeza, seperti peruntukan Wi-Fi dan peruntukan LE Bluetooth. · sistem: Sub-direktori ini termasuk penyahpepijatan sistem cthamples (cth., pengesanan tindanan, pengesanan masa jalan, pemantauan tugas), pengurusan kuasa cthamples (cth., pelbagai mod tidur, pemproses bersama) dan cthampyang berkaitan dengan komponen sistem biasa seperti terminal konsol, gelung acara dan pemasa sistem. · storan: Dalam sub-direktori ini, anda akan menemui exampkurang daripada semua file sistem dan mekanisme storan yang disokong oleh ESP-IDF (seperti membaca dan menulis Flash, kad SD dan media storan lain), serta bekasampkurang storan tidak meruap (NVS), FatFS, SPIFFS dan lain-lain file operasi sistem. · keselamatan: Sub-direktori ini mengandungi examples berkaitan dengan penyulitan kilat. (2) Direktori rantai alat penyusunan ESP-IDF (/.espressif), seperti yang ditunjukkan dalam Rajah 4.3.
Rajah 4.3. Direktori rangkaian alat penyusunan ESP-IDF
Bab 4. Menyediakan Persekitaran Pembangunan 37
a. Direktori pengedaran perisian dist
Rantaian alat ESP-IDF dan perisian lain diedarkan dalam bentuk pakej termampat. Semasa proses pemasangan, alat pemasangan mula-mula memuat turun pakej termampat ke direktori dist, dan kemudian mengekstraknya ke direktori yang ditentukan. Setelah pemasangan selesai, kandungan dalam direktori ini boleh dialih keluar dengan selamat.
b. Direktori persekitaran maya Python python env
Versi ESP-IDF yang berbeza bergantung pada versi khusus pakej Python. Memasang pakej ini terus pada hos yang sama boleh menyebabkan konflik antara versi pakej. Untuk menangani perkara ini, ESP-IDF menggunakan persekitaran maya Python untuk mengasingkan versi pakej yang berbeza. Dengan mekanisme ini, pembangun boleh memasang berbilang versi ESP-IDF pada hos yang sama dan menukar antara mereka dengan mudah dengan mengimport pembolehubah persekitaran yang berbeza.
c. Alat direktori rantaian alat penyusunan ESP-IDF
Direktori ini terutamanya mengandungi alat kompilasi silang yang diperlukan untuk menyusun projek ESP-IDF, seperti alat CMake, alat binaan Ninja dan rantai alat gcc yang menjana program boleh laku akhir. Selain itu, direktori ini menempatkan perpustakaan standard bahasa C/C++ bersama-sama dengan pengepala yang sepadan files. Jika program merujuk pengepala sistem file seperti #include , rantai alat kompilasi akan mencari stdio.h file dalam direktori ini.
4.2 Menyediakan Persekitaran Pembangunan ESP-IDF
Persekitaran pembangunan ESP-IDF menyokong sistem pengendalian arus perdana seperti Windows, Linux dan macOS. Bahagian ini akan memperkenalkan cara menyediakan persekitaran pembangunan pada setiap sistem. Adalah disyorkan untuk membangunkan ESP32-C3 pada sistem Linux, yang akan diperkenalkan secara terperinci di sini. Banyak arahan boleh digunakan di seluruh platform kerana persamaan alat pembangunan. Oleh itu, adalah dinasihatkan untuk membaca dengan teliti kandungan bahagian ini.
NOTA Anda boleh merujuk kepada dokumen dalam talian yang tersedia di https://bookc3.espressif.com/esp32c3, yang menyediakan arahan yang dinyatakan dalam bahagian ini.
4.2.1 Menyediakan Persekitaran Pembangunan ESP-IDF pada Linux
Alat pembangunan dan penyahpepijatan GNU yang diperlukan untuk persekitaran pembangunan ESP-IDF adalah asli kepada sistem Linux. Selain itu, terminal baris arahan dalam Linux adalah berkuasa dan mesra pengguna, menjadikannya pilihan ideal untuk pembangunan ESP32-C3. Awak boleh
38 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
pilih pengedaran Linux pilihan anda, tetapi kami mengesyorkan menggunakan Ubuntu atau sistem berasaskan Debian yang lain. Bahagian ini menyediakan panduan tentang menyediakan persekitaran pembangunan ESP-IDF pada Ubuntu 20.04.
1. Pasang pakej yang diperlukan
Buka terminal baharu dan laksanakan arahan berikut untuk memasang semua pakej yang diperlukan. Perintah akan secara automatik melangkau pakej yang telah dipasang.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
TIP Anda perlu menggunakan akaun pentadbir dan kata laluan untuk arahan di atas. Secara lalai, tiada maklumat akan dipaparkan semasa memasukkan kata laluan. Hanya tekan kekunci "Enter" untuk meneruskan prosedur.
Git ialah alat pengurusan kod utama dalam ESP-IDF. Selepas berjaya menyediakan persekitaran pembangunan, anda boleh menggunakan arahan log git untuk view semua perubahan kod dibuat sejak penciptaan ESP-IDF. Selain itu, Git juga digunakan dalam ESP-IDF untuk mengesahkan maklumat versi, yang diperlukan untuk memasang rantai alat yang betul sepadan dengan versi tertentu. Bersama-sama dengan Git, alat sistem penting lain termasuk Python. ESP-IDF menggabungkan banyak skrip automasi yang ditulis dalam Python. Alat seperti CMake, Ninja-build dan Ccache digunakan secara meluas dalam projek C/C++ dan berfungsi sebagai kompilasi kod lalai dan alatan binaan dalam ESP-IDF. libusb-1.0-0 dan dfu-util ialah pemacu utama yang digunakan untuk komunikasi bersiri USB dan pembakaran perisian tegar. Setelah pakej perisian dipasang, anda boleh menggunakan arahan apt show untuk mendapatkan penerangan terperinci bagi setiap pakej. Untuk example, gunakan apt show git untuk mencetak maklumat penerangan untuk alat Git.
S: Apa yang perlu dilakukan jika versi Python tidak disokong? A: ESP-IDF v4.3 memerlukan versi Python yang tidak lebih rendah daripada v3.6. Untuk versi Ubuntu yang lebih lama, sila muat turun dan pasang versi Python yang lebih tinggi secara manual dan tetapkan Python3 sebagai persekitaran Python lalai. Anda boleh mendapatkan arahan terperinci dengan mencari kata kunci update-alternatives python.
2. Muat turun kod repositori ESP-IDF
Buka terminal dan buat folder bernama esp dalam direktori rumah anda menggunakan arahan mkdir. Anda boleh memilih nama lain untuk folder jika anda mahu. Gunakan arahan cd untuk memasuki folder.
Bab 4. Menyediakan Persekitaran Pembangunan 39
$ mkdir -p /esp $ cd /esp
Gunakan arahan git clone untuk memuat turun kod repositori ESP-IDF, seperti yang ditunjukkan di bawah:
$ git clone -b v4.3.2 –rekursif https://github.com/espressif/esp-idf.git
Dalam arahan di atas, parameter -b v4.3.2 menentukan versi untuk dimuat turun (dalam kes ini, versi 4.3.2). Parameter –rekursif memastikan semua sub-repositori ESP-IDF dimuat turun secara rekursif. Maklumat tentang sub-repositori boleh didapati dalam .gitmodules file.
3. Pasang rantai alat pembangunan ESP-IDF
Espressif menyediakan skrip automatik install.sh untuk memuat turun dan memasang rangkaian alat. Skrip ini menyemak versi ESP-IDF semasa dan persekitaran sistem pengendalian, dan kemudian memuat turun dan memasang versi yang sesuai bagi pakej alat Python dan rantai alat kompilasi. Laluan pemasangan lalai untuk rantai alat ialah /.espressif. Apa yang anda perlu lakukan ialah menavigasi ke direktori esp-idf dan jalankan install.sh.
$ cd /esp/esp-idf $ ./install.sh
Jika anda berjaya memasang rantai alat, terminal akan memaparkan:
Semua selesai!
Pada ketika ini, anda telah berjaya menyediakan persekitaran pembangunan ESP-IDF.
4.2.2 Menyediakan Persekitaran Pembangunan ESP-IDF pada Windows
1. Muat turun pemasang alat ESP-IDF
PETUA Adalah disyorkan untuk menyediakan persekitaran pembangunan ESP-IDF pada Windows 10 atau lebih tinggi. Anda boleh memuat turun pemasang dari https://dl.espressif.com/dl/esp-idf/. Pemasang juga merupakan perisian sumber terbuka, dan kod sumbernya boleh viewed di https: //github.com/espressif/idf-installer.
· Pemasang alat ESP-IDF dalam talian
Pemasang ini agak kecil, bersaiz sekitar 4 MB, dan pakej serta kod lain akan dimuat turun semasa proses pemasangan. Advan itutage daripada pemasang dalam talian ialah bukan sahaja pakej perisian dan kod boleh dimuat turun atas permintaan semasa proses pemasangan, tetapi juga membenarkan pemasangan semua keluaran ESP-IDF yang tersedia dan cawangan terbaharu kod GitHub (seperti cawangan induk) . Yang disadvantage ialah ia memerlukan sambungan rangkaian semasa proses pemasangan, yang mungkin menyebabkan kegagalan pemasangan disebabkan masalah rangkaian.
40 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
· Pemasang alat ESP-IDF luar talian Pemasang ini lebih besar, bersaiz kira-kira 1 GB, dan mengandungi semua pakej perisian dan kod yang diperlukan untuk persediaan persekitaran. Advan utamatage daripada pemasang luar talian ialah ia boleh digunakan pada komputer tanpa akses Internet, dan secara amnya mempunyai kadar kejayaan pemasangan yang lebih tinggi. Perlu diingat bahawa pemasang luar talian hanya boleh memasang keluaran stabil ESP-IDF yang dikenal pasti oleh v*.* atau v*.*.*.
2. Jalankan pemasang alat ESP-IDF Selepas memuat turun versi pemasang yang sesuai (ambil ESP-IDF Tools Offline 4.3.2 untuk example di sini), klik dua kali exe file untuk melancarkan antara muka pemasangan ESP-IDF. Berikut menunjukkan cara memasang ESP-IDF versi stabil v4.3.2 menggunakan pemasang luar talian.
(1) Dalam antara muka “Pilih bahasa pemasangan” yang ditunjukkan dalam Rajah 4.4, pilih bahasa yang akan digunakan daripada senarai juntai bawah.
Rajah 4.4. Antara muka “Pilih bahasa pemasangan” (2) Selepas memilih bahasa, klik “OK” untuk memaparkan antara muka “Perjanjian lesen”
(lihat Rajah 4.5). Selepas membaca perjanjian lesen pemasangan dengan teliti, pilih "Saya menerima perjanjian" dan klik "Seterusnya".
Rajah 4.5. Antara muka “Perjanjian lesen” Bab 4. Menyediakan Persekitaran Pembangunan 41
(3) Review konfigurasi sistem dalam antara muka "Semakan sistem prapemasangan" (lihat Rajah 4.6). Semak versi Windows dan maklumat perisian antivirus yang dipasang. Klik "Seterusnya" jika semua item konfigurasi adalah normal. Jika tidak, anda boleh mengklik "Log penuh" untuk penyelesaian berdasarkan item utama.
Rajah 4.6. TIPS antara muka “Pemeriksaan sistem sebelum pemasangan”.
Anda boleh menyerahkan log ke https://github.com/espressif/idf-installer/issues untuk mendapatkan bantuan. (4) Pilih direktori pemasangan ESP-IDF. Di sini, pilih D:/.espressif, seperti yang ditunjukkan dalam
Rajah 4.7, dan klik “Seterusnya”. Sila ambil perhatian bahawa .espressif di sini ialah direktori tersembunyi. Selepas pemasangan selesai, anda boleh view kandungan khusus direktori ini dengan membuka file pengurus dan memaparkan item tersembunyi.
Rajah 4.7. Pilih direktori pemasangan ESP-IDF 42 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
(5) Semak komponen yang perlu dipasang, seperti yang ditunjukkan dalam Rajah 4.8. Adalah disyorkan untuk menggunakan pilihan lalai, iaitu pemasangan lengkap, dan kemudian klik "Seterusnya".
Rajah 4.8. Pilih komponen untuk dipasang (6) Sahkan komponen yang hendak dipasang dan klik “Pasang” untuk memulakan in-
proses terhenti, seperti yang ditunjukkan dalam Rajah 4.9. Proses pemasangan mungkin berlangsung selama berpuluh-puluh minit dan bar kemajuan proses pemasangan ditunjukkan dalam Rajah 4.10. Sila tunggu dengan sabar.
Rajah 4.9. Bersedia untuk pemasangan (7) Selepas pemasangan selesai, adalah disyorkan untuk menyemak “Daftar ESP-IDF
Alat boleh laku sebagai pengecualian Windows Defender…” untuk menghalang perisian antivirus daripada dipadam files. Menambah item pengecualian juga boleh melangkau imbasan yang kerap oleh antivirus
Bab 4. Menyediakan Persekitaran Pembangunan 43
Rajah 4.10. Perisian bar kemajuan pemasangan, sangat meningkatkan kecekapan penyusunan kod sistem Windows. Klik “Selesai” untuk melengkapkan pemasangan persekitaran pembangunan, seperti yang ditunjukkan dalam Rajah 4.11. Anda boleh memilih untuk menyemak "Jalankan persekitaran PowerShell ESP-IDF" atau "Jalankan gesaan arahan ESP-IDF". Jalankan tetingkap kompilasi terus selepas pemasangan untuk memastikan persekitaran pembangunan berfungsi dengan normal.
Rajah 4.11. Pemasangan selesai (8) Buka persekitaran pembangunan yang dipasang dalam senarai program (sama ada ESP-IDF 4.3
Terminal CMD atau ESP-IDF 4.3 PowerShell, seperti yang ditunjukkan dalam Rajah 4.12), dan pembolehubah persekitaran ESP-IDF akan ditambah secara automatik apabila dijalankan dalam terminal. Selepas itu, anda boleh menggunakan arahan idf.py untuk operasi. ESP-IDF 4.3 CMD yang dibuka ditunjukkan dalam Rajah 4.13. 44 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Rajah 4.12. Persekitaran pembangunan dipasang
Rajah 4.13. ESP-IDF 4.3 CMD
4.2.3 Menyediakan Persekitaran Pembangunan ESP-IDF pada Mac
Proses memasang persekitaran pembangunan ESP-IDF pada sistem Mac adalah sama seperti pada sistem Linux. Perintah untuk memuat turun kod repositori dan memasang rantai alat adalah sama. Hanya arahan untuk memasang pakej kebergantungan sedikit berbeza. 1. Pasang pakej pergantungan Buka terminal, dan pasang pip, alat pengurusan pakej Python, dengan menjalankan arahan berikut:
% sudo mudah memasang pip
Pasang Homebrew, alat pengurusan pakej untuk macOS, dengan menjalankan arahan berikut:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ HEAD/install.sh)”
Pasang pakej pergantungan yang diperlukan dengan menjalankan arahan berikut:
% brew python3 pasang cmake ninja ccache dfu-util
2. Muat turun kod repositori ESP-IDF Ikut arahan yang diberikan dalam bahagian 4.2.1 untuk memuat turun kod repositori ESP-IDF. Langkah-langkahnya adalah sama seperti memuat turun pada sistem Linux.
Bab 4. Menyediakan Persekitaran Pembangunan 45
3. Pasang rantai alat pembangunan ESP-IDF
Ikut arahan yang diberikan dalam bahagian 4.2.1 untuk memasang rantai alat pembangunan ESP-IDF. Langkah-langkahnya adalah sama seperti pemasangan pada sistem Linux.
4.2.4 Memasang Kod VS
Secara lalai, ESP-IDF SDK tidak termasuk alat penyuntingan kod (walaupun pemasang ESP-IDF terbaharu untuk Windows menawarkan pilihan untuk memasang ESP-IDF Eclipse). Anda boleh menggunakan mana-mana alat penyuntingan teks pilihan anda untuk mengedit kod dan kemudian menyusunnya menggunakan arahan terminal.
Satu alat penyuntingan kod yang popular ialah VS Code (Visual Studio Code), yang merupakan editor kod percuma dan kaya dengan antara muka yang mesra pengguna. Ia menawarkan pelbagai plugins yang menyediakan fungsi seperti navigasi kod, penyerlahan sintaks, kawalan versi Git dan penyepaduan terminal. Selain itu, Espressif telah membangunkan pemalam khusus yang dipanggil Espressif IDF untuk Kod VS, yang memudahkan konfigurasi projek dan penyahpepijatan.
Anda boleh menggunakan arahan kod dalam terminal untuk membuka folder semasa dalam Kod VS dengan cepat. Sebagai alternatif, anda boleh menggunakan pintasan Ctrl+ untuk membuka konsol terminal lalai sistem dalam Kod VS.
TIP Adalah disyorkan untuk menggunakan Kod VS untuk pembangunan kod ESP32-C3. Muat turun dan pasang versi terkini Kod VS di https://code.visualstudio.com/.
4.2.5 Pengenalan kepada Persekitaran Pembangunan Pihak Ketiga
Sebagai tambahan kepada persekitaran pembangunan ESP-IDF rasmi, yang menggunakan bahasa C, ESP32-C3 juga menyokong bahasa pengaturcaraan arus perdana lain dan pelbagai persekitaran pembangunan pihak ketiga. Beberapa pilihan yang ketara termasuk:
Arduino: platform sumber terbuka untuk kedua-dua perkakasan dan perisian, menyokong pelbagai mikropengawal, termasuk ESP32-C3.
Ia menggunakan bahasa C++ dan menawarkan API yang dipermudahkan dan diseragamkan, biasanya dirujuk sebagai bahasa Arduino. Arduino digunakan secara meluas dalam pembangunan prototaip dan konteks pendidikan. Ia menyediakan pakej perisian yang boleh diperluaskan dan IDE yang membolehkan penyusunan mudah dan berkelip.
MicroPython: penterjemah bahasa Python 3 yang direka untuk dijalankan pada platform mikropengawal terbenam.
Dengan bahasa skrip yang mudah, ia boleh mengakses terus sumber persisian ESP32-C3 (seperti UART, SPI dan I2C) dan fungsi komunikasi (seperti Wi-Fi dan Bluetooth LE).
46 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
Ini memudahkan interaksi perkakasan. MicroPython, digabungkan dengan perpustakaan operasi matematik Python yang luas, membolehkan pelaksanaan algoritma kompleks pada ESP32-C3, memudahkan pembangunan aplikasi berkaitan AI. Sebagai bahasa skrip, tidak perlu kompilasi berulang; pengubahsuaian boleh dibuat dan skrip boleh dilaksanakan terus.
NodeMCU: penterjemah bahasa LUA yang dibangunkan untuk cip siri ESP.
Ia menyokong hampir semua fungsi persisian cip ESP dan lebih ringan daripada MicroPython. Sama seperti MicroPython, NodeMCU menggunakan bahasa skrip, menghapuskan keperluan untuk kompilasi berulang.
Tambahan pula, ESP32-C3 turut menyokong sistem pengendalian NuttX dan Zephyr. NuttX ialah sistem pengendalian masa nyata yang menyediakan antara muka serasi POSIX, meningkatkan kemudahalihan aplikasi. Zephyr ialah sistem pengendalian masa nyata kecil yang direka khusus untuk aplikasi IoT. Ia termasuk banyak perpustakaan perisian yang diperlukan dalam pembangunan IoT, secara beransur-ansur berkembang menjadi ekosistem perisian yang komprehensif.
Buku ini tidak menyediakan arahan pemasangan terperinci untuk persekitaran pembangunan yang disebutkan di atas. Anda boleh memasang persekitaran pembangunan berdasarkan keperluan anda dengan mengikut dokumentasi dan arahan masing-masing.
4.3 Sistem Penyusunan ESP-IDF
4.3.1 Konsep Asas Sistem Penyusunan
Projek ESP-IDF ialah koleksi program utama dengan fungsi kemasukan dan berbilang komponen fungsi bebas. Untuk exampOleh itu, projek yang mengawal suis LED terutamanya terdiri daripada program kemasukan utama dan komponen pemacu yang mengawal GPIO. Jika anda ingin merealisasikan kawalan jauh LED, anda juga perlu menambah Wi-Fi, susunan protokol TCP/IP, dsb.
Sistem kompilasi boleh menyusun, memaut dan menjana boleh laku files (.bin) untuk kod melalui set peraturan bangunan. Sistem kompilasi ESP-IDF v4.0 dan versi ke atas adalah berdasarkan CMake secara lalai, dan skrip kompilasi CMakeLists.txt boleh digunakan untuk mengawal gelagat kompilasi kod. Selain menyokong sintaks asas CMake, sistem kompilasi ESP-IDF juga mentakrifkan satu set peraturan kompilasi lalai dan fungsi CMake, dan anda boleh menulis skrip kompilasi dengan penyataan mudah.
4.3.2 Projek File Struktur
Projek ialah folder yang mengandungi program kemasukan utama, komponen yang ditentukan pengguna, dan files diperlukan untuk membina aplikasi boleh laku, seperti skrip kompilasi, konfigurasi
Bab 4. Menyediakan Persekitaran Pembangunan 47
files, jadual partition, dsb. Projek boleh disalin dan diteruskan, dan boleh laku yang sama file boleh disusun dan dijana dalam mesin dengan versi persekitaran pembangunan ESP-IDF yang sama. Projek ESP-IDF biasa file struktur ditunjukkan dalam Rajah 4.14.
Rajah 4.14. Projek ESP-IDF biasa file struktur Memandangkan ESP-IDF menyokong berbilang cip IoT daripada Espressif, termasuk ESP32, siri ESP32-S, siri ESP32-C, siri ESP32-H, dsb., sasaran perlu ditentukan sebelum menyusun kod. Sasaran ialah kedua-dua peranti perkakasan yang menjalankan program aplikasi dan sasaran binaan sistem kompilasi. Bergantung pada keperluan anda, anda boleh menentukan satu atau lebih sasaran untuk projek anda. Untuk exampOleh itu, melalui arahan idf.py set-target esp32c3, anda boleh menetapkan sasaran kompilasi kepada ESP32-C3, di mana parameter lalai dan laluan rantaian alat kompilasi untuk ESP32C3 akan dimuatkan. Selepas penyusunan, program boleh laku boleh dijana untuk ESP32C3. Anda juga boleh menjalankan perintah set-target sekali lagi untuk menetapkan sasaran yang berbeza, dan sistem kompilasi akan membersihkan dan mengkonfigurasi semula secara automatik. Komponen
Komponen dalam ESP-IDF ialah unit kod modular dan bebas yang diuruskan dalam sistem kompilasi. Ia disusun sebagai folder, dengan nama folder mewakili nama komponen secara lalai. Setiap komponen mempunyai skrip kompilasi sendiri yang 48 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
menentukan parameter penyusunan dan kebergantungannya. Semasa proses penyusunan, komponen disusun ke dalam perpustakaan statik yang berasingan (.a files) dan akhirnya digabungkan dengan komponen lain untuk membentuk program aplikasi.
ESP-IDF menyediakan fungsi penting, seperti sistem pengendalian, pemacu persisian, dan susunan protokol rangkaian, dalam bentuk komponen. Komponen ini disimpan dalam direktori komponen yang terletak dalam direktori akar ESP-IDF. Pembangun tidak perlu menyalin komponen ini ke direktori komponen myProject. Sebaliknya, mereka hanya perlu menentukan hubungan pergantungan komponen ini dalam CMakeLists.txt projek file menggunakan arahan REQUIRES atau PRIV_REQUIRES. Sistem kompilasi akan secara automatik mencari dan menyusun komponen yang diperlukan.
Oleh itu, direktori komponen di bawah myProject tidak diperlukan. Ia hanya digunakan untuk memasukkan beberapa komponen tersuai projek, yang boleh menjadi perpustakaan pihak ketiga atau kod yang ditentukan pengguna. Selain itu, komponen boleh diperoleh daripada mana-mana direktori selain daripada ESP-IDF atau projek semasa, seperti daripada projek sumber terbuka yang disimpan dalam direktori lain. Dalam kes ini, anda hanya perlu menambah laluan komponen dengan menetapkan pembolehubah EXTRA_COMPONENT_DIRS dalam CMakeLists.txt di bawah direktori akar. Direktori ini akan mengatasi mana-mana komponen ESP-IDF dengan nama yang sama, memastikan komponen yang betul digunakan.
Utama program kemasukan Direktori utama dalam projek mengikuti perkara yang sama file struktur sebagai komponen lain (cth., komponen1). Walau bagaimanapun, ia mempunyai kepentingan yang istimewa kerana ia merupakan komponen wajib yang mesti wujud dalam setiap projek. Direktori utama mengandungi kod sumber projek dan titik masuk program pengguna, biasanya dinamakan app_main. Secara lalai, pelaksanaan program pengguna bermula dari titik masuk ini. Komponen utama juga berbeza kerana ia bergantung secara automatik pada semua komponen dalam laluan carian. Oleh itu, tidak perlu menunjukkan kebergantungan secara eksplisit menggunakan arahan REQUIRES atau PRIV_REQUIRES dalam CMakeLists.txt file.
Konfigurasi file Direktori akar projek mengandungi konfigurasi file dipanggil sdkconfig, yang mengandungi parameter konfigurasi untuk semua komponen dalam projek. sdkconfig file dijana secara automatik oleh sistem kompilasi dan boleh diubah suai dan dijana semula dengan arahan idf.py menuconfig. Pilihan menuconfig terutamanya berasal daripada Kconfig.projbuild projek dan Kconfig komponen. Pembangun komponen biasanya menambah item konfigurasi dalam Kconfig untuk menjadikan komponen fleksibel dan boleh dikonfigurasikan.
Direktori binaan Secara lalai, direktori binaan dalam projek menyimpan perantaraan files dan fi-
Bab 4. Menyediakan Persekitaran Pembangunan 49
nal program boleh laku yang dihasilkan oleh arahan binaan idf.py. Secara umum, ia tidak perlu untuk mengakses secara langsung kandungan direktori binaan. ESP-IDF menyediakan arahan yang dipratentukan untuk berinteraksi dengan direktori, seperti menggunakan perintah kilat idf.py untuk mengesan binari yang disusun secara automatik file dan kilatkannya ke alamat denyar yang ditentukan, atau gunakan perintah idf.py fullclean untuk membersihkan keseluruhan direktori binaan.
Jadual partition (partitions.csv) Setiap projek memerlukan jadual partition untuk membahagikan ruang flash dan menentukan saiz dan alamat permulaan program boleh laku dan ruang data pengguna. Perintah idf.py flash atau program peningkatan OTA akan memancarkan perisian tegar ke alamat yang sepadan mengikut jadual ini. ESP-IDF menyediakan beberapa jadual partition lalai dalam component/ partition_table, seperti partitions_singleapp.csv dan partitions_two_ ota.csv, yang boleh dipilih dalam menuconfig.
Jika jadual partition lalai sistem tidak dapat memenuhi keperluan projek, partitions.csv tersuai boleh ditambah pada direktori projek dan dipilih dalam menuconfig.
4.3.3 Peraturan Binaan Lalai Sistem Kompilasi
Peraturan untuk mengatasi komponen dengan nama yang sama Semasa proses carian komponen, sistem penyusunan mengikut susunan tertentu. Ia mula-mula mencari komponen dalaman ESP-IDF, kemudian mencari komponen projek pengguna, dan akhirnya mencari komponen dalam EXTRA_COMPONENT_DIRS. Dalam kes di mana berbilang direktori mengandungi komponen dengan nama yang sama, komponen yang ditemui dalam direktori terakhir akan mengatasi mana-mana komponen sebelumnya dengan nama yang sama. Peraturan ini membenarkan penyesuaian komponen ESP-IDF dalam projek pengguna, sambil mengekalkan kod ESP-IDF asal tetap utuh.
Peraturan untuk memasukkan komponen biasa secara lalai Seperti yang dinyatakan dalam bahagian 4.3.2, komponen perlu menyatakan kebergantungan mereka secara eksplisit pada komponen lain dalam CMakeLists.txt. Walau bagaimanapun, komponen biasa seperti freertos disertakan secara automatik dalam sistem binaan secara lalai, walaupun perhubungan pergantungan mereka tidak ditakrifkan secara eksplisit dalam skrip kompilasi. Komponen biasa ESP-IDF termasuk freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv dan cxx. Menggunakan komponen biasa ini mengelakkan kerja berulang semasa menulis CMakeLists.txt dan menjadikannya lebih ringkas.
Peraturan untuk mengatasi item konfigurasi Pembangun boleh menambah parameter konfigurasi lalai dengan menambahkan konfigurasi lalai file bernama sdkconfig.defaults kepada projek. Untuk example, menambah CONFIG_LOG_
50 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
DEFAULT_LEVEL_NONE = y boleh mengkonfigurasi antara muka UART untuk tidak mencetak data log secara lalai. Tambahan pula, jika parameter khusus perlu ditetapkan untuk sasaran tertentu, konfigurasi file bernama sdkconfig.defaults.TARGET_NAME boleh ditambah, dengan TARGET_NAME boleh menjadi esp32s2, esp32c3 dan seterusnya. Konfigurasi ini files diimport ke dalam sdkconfig semasa penyusunan, dengan konfigurasi lalai umum file sdkconfig.defaults diimport dahulu, diikuti dengan konfigurasi khusus sasaran file, seperti sdkconfig.defaults.esp32c3. Dalam kes di mana terdapat item konfigurasi dengan nama yang sama, konfigurasi yang kedua file akan mengatasi bekas.
4.3.4 Pengenalan Skrip Kompilasi
Apabila membangunkan projek menggunakan ESP-IDF, pembangun bukan sahaja perlu menulis kod sumber tetapi juga perlu menulis CMakeLists.txt untuk projek dan komponen. CMakeLists.txt ialah teks file, juga dikenali sebagai skrip kompilasi, yang mentakrifkan satu siri objek kompilasi, item konfigurasi kompilasi dan arahan untuk membimbing proses penyusunan kod sumber. Sistem kompilasi ESP-IDF v4.3.2 adalah berdasarkan CMake. Selain menyokong fungsi dan arahan CMake asli, ia juga mentakrifkan satu siri fungsi tersuai, menjadikannya lebih mudah untuk menulis skrip kompilasi.
Skrip kompilasi dalam ESP-IDF terutamanya termasuk skrip kompilasi projek dan skrip kompilasi komponen. CMakeLists.txt dalam direktori akar projek dipanggil skrip kompilasi projek, yang membimbing proses penyusunan keseluruhan projek. Skrip kompilasi projek asas biasanya merangkumi tiga baris berikut:
1. cmake_minimum_required(VERSION 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. project(myProject)
Antaranya, cmake_minimum_required (VERSION 3.5) mesti diletakkan pada baris pertama, yang digunakan untuk menunjukkan nombor versi CMake minimum yang diperlukan oleh projek. Versi CMake yang lebih baharu biasanya serasi ke belakang dengan versi yang lebih lama, jadi laraskan nombor versi dengan sewajarnya apabila menggunakan arahan CMake yang lebih baharu untuk memastikan keserasian.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) mengimport item konfigurasi yang dipratakrifkan dan arahan sistem kompilasi ESP-IDF, termasuk peraturan binaan lalai bagi sistem kompilasi yang diterangkan dalam Bahagian 4.3.3. project(myProject) mencipta projek itu sendiri dan menentukan namanya. Nama ini akan digunakan sebagai binari keluaran akhir file nama, iaitu, myProject.elf dan myProject.bin.
Projek boleh mempunyai berbilang komponen, termasuk komponen utama. Direktori peringkat atas setiap komponen mengandungi CMakeLists.txt file, yang dipanggil skrip penyusunan komponen. Skrip kompilasi komponen digunakan terutamanya untuk menentukan kebergantungan komponen, parameter konfigurasi, kod sumber files, dan disertakan pengepala files untuk
Bab 4. Menyediakan Persekitaran Pembangunan 51
kompilasi. Dengan fungsi tersuai ESP-IDF idf_component_register, kod minimum yang diperlukan untuk skrip kompilasi komponen adalah seperti berikut:
1. idf_component_register(SRCS “src1.c”
2.
INCLUDE_DIRS "termasuk"
3.
MEMERLUKAN komponen1)
Parameter SRCS menyediakan senarai sumber files dalam komponen, dipisahkan oleh ruang jika terdapat berbilang files. Parameter INCLUDE_DIRS menyediakan senarai pengepala awam file direktori untuk komponen, yang akan ditambahkan pada laluan carian termasuk untuk komponen lain yang bergantung pada komponen semasa. Parameter REQUIRES mengenal pasti kebergantungan komponen awam untuk komponen semasa. Komponen perlu menyatakan secara eksplisit komponen mana yang mereka bergantung, seperti komponen2 bergantung pada komponen1. Walau bagaimanapun, untuk komponen utama, yang bergantung pada semua komponen secara lalai, parameter REQUIRES boleh diabaikan.
Di samping itu, arahan CMake asli juga boleh digunakan dalam skrip kompilasi. Untuk exampOleh itu, gunakan set arahan untuk menetapkan pembolehubah, seperti set(BOLEH UBAH “NILAI”).
4.3.5 Pengenalan kepada Perintah Biasa
ESP-IDF menggunakan CMake (alat konfigurasi projek), Ninja (alat pembinaan projek) dan esptool (alat kilat) dalam proses penyusunan kod. Setiap alat memainkan peranan yang berbeza dalam penyusunan, pembinaan dan proses kilat, dan juga menyokong arahan pengendalian yang berbeza. Untuk memudahkan operasi pengguna, ESP-IDF menambah idf.py bahagian hadapan bersatu yang membolehkan arahan di atas dipanggil dengan cepat.
Sebelum menggunakan idf.py, pastikan bahawa:
· Pembolehubah persekitaran IDF_PATH ESP-IDF telah ditambahkan pada terminal semasa. · Direktori pelaksanaan arahan ialah direktori akar projek, yang termasuk
skrip kompilasi projek CMakeLists.txt.
Arahan biasa idf.py adalah seperti berikut:
· idf.py –help: memaparkan senarai arahan dan arahan penggunaannya. · idf.py set-target : menetapkan kompilasi taidf.py fullcleanrget, seperti
sebagai menggantikan dengan esp32c3. · idf.py menuconfig: melancarkan menuconfig, konfigurasi grafik terminal
alat, yang boleh memilih atau mengubah suai pilihan konfigurasi, dan keputusan konfigurasi disimpan dalam sdkconfig file. · binaan idf.py: memulakan penyusunan kod. Perantaraan files dan program boleh laku akhir yang dijana oleh kompilasi akan disimpan dalam direktori binaan projek secara lalai. Proses penyusunan adalah incremental, yang bermaksud bahawa jika hanya satu sumber file diubah suai, hanya yang diubah suai file akan disusun pada masa akan datang.
52 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
· idf.py clean: membersihkan perantaraan files dijana oleh penyusunan projek. Keseluruhan projek akan dipaksa untuk menyusun dalam kompilasi seterusnya. Ambil perhatian bahawa konfigurasi CMake dan pengubahsuaian konfigurasi yang dibuat oleh menuconfig tidak akan dipadamkan semasa pembersihan.
· idf.py fullclean: memadamkan keseluruhan direktori binaan, termasuk semua output konfigurasi CMake files. Apabila membina projek semula, CMake akan mengkonfigurasi projek dari awal. Sila ambil perhatian bahawa arahan ini akan memadam semua secara rekursif files dalam direktori binaan, jadi gunakannya dengan berhati-hati, dan konfigurasi projek file tidak akan dipadamkan.
· kilat idf.py: memancarkan binari program boleh laku file dijana dengan membina kepada sasaran ESP32-C3. Pilihan -p dan -b digunakan untuk menetapkan nama peranti port bersiri dan kadar baud untuk berkelip, masing-masing. Jika kedua-dua pilihan ini tidak dinyatakan, port bersiri akan dikesan secara automatik dan kadar baud lalai akan digunakan.
· idf.py monitor: memaparkan output port bersiri sasaran ESP32-C3. Pilihan -p boleh digunakan untuk menentukan nama peranti port bersiri sisi hos. Semasa pencetakan port bersiri, tekan kombinasi kekunci Ctrl+] untuk keluar dari monitor.
Perintah di atas juga boleh digabungkan mengikut keperluan. Untuk exampOleh itu, arahan idf.py build flash monitor akan melakukan penyusunan kod, kilat dan membuka monitor port bersiri dalam urutan.
Anda boleh melayari https://bookc3.espressif.com/build-system untuk mengetahui lebih lanjut mengenai sistem penyusunan ESP-IDF.
4.4 Latihan: Menyusun CthampProgram "Kelip"
4.4.1 Cthample Analisis
Bahagian ini akan mengambil program Blink sebagai bekasample untuk menganalisis file struktur dan peraturan pengekodan projek sebenar secara terperinci. Program Blink melaksanakan kesan berkelip LED, dan projek itu terletak dalam direktori examples/get-started/blink, yang mengandungi sumber file, konfigurasi files, dan beberapa skrip kompilasi.
Projek lampu pintar yang diperkenalkan dalam buku ini adalah berdasarkan bekas iniampprogram itu. Fungsi akan ditambahkan secara beransur-ansur dalam bab-bab kemudian untuk akhirnya menyelesaikannya.
Kod sumber Untuk menunjukkan keseluruhan proses pembangunan, program Blink telah disalin ke esp32c3-iot-projects/perisian tegar peranti/1 blink.
Struktur direktori projek berkelip files ditunjukkan dalam Rajah 4.15.
Projek berkelip mengandungi hanya satu direktori utama, iaitu komponen khas yang
Bab 4. Menyediakan Persekitaran Pembangunan 53
Rajah 4.15. File struktur direktori projek berkelip
mesti disertakan seperti yang diterangkan dalam bahagian 4.3.2. Direktori utama digunakan terutamanya untuk menyimpan pelaksanaan fungsi app_main(), yang merupakan titik masuk kepada program pengguna. Projek berkelip tidak termasuk direktori komponen, kerana bekas iniample hanya perlu menggunakan komponen yang disertakan dengan ESP-IDF dan tidak memerlukan komponen tambahan. CMakeLists.txt yang disertakan dalam projek berkelip digunakan untuk membimbing proses penyusunan, manakala Kconfig.projbuild digunakan untuk menambah item konfigurasi untuk bekas iniampprogram dalam menuconfig. Lain-lain yang tidak perlu files tidak akan menjejaskan penyusunan kod, jadi ia tidak akan dibincangkan di sini. Pengenalan terperinci kepada projek blink files adalah seperti berikut.
1. /*blink.c termasuk pengepala berikut files*/
2. #include
//Pengepala perpustakaan Standard C file
3. #include “freeertos/freeRTOS.h” //Pengepala utama FreeRTOS file
4. #include “freeertos/task.h”
//Pengepala Tugas FreeRTOS file
5. #include “sdkconfig.h”
//Pengepala konfigurasi file dihasilkan oleh kconfig
6. #include “driver/gpio.h”
//Pengepala pemandu GPIO file
Sumbernya file blink.c mengandungi satu siri pengepala files sepadan dengan fungsi deklara-
tions. ESP-IDF biasanya mengikut urutan memasukkan pengepala perpustakaan standard files, PercumaR-
Pengepala TOS files, pengepala pemandu files, pengepala komponen lain files, dan pengepala projek files.
Susunan dalam pengepala mana files disertakan boleh menjejaskan hasil kompilasi akhir, jadi cuba
ikut peraturan lalai. Perlu diingatkan bahawa sdkconfig.h dijana secara automatik
oleh kconfig dan hanya boleh dikonfigurasikan melalui perintah idf.py menuconfig.
Pengubahsuaian langsung pengepala ini file akan ditimpa.
1. /*Anda boleh memilih GPIO yang sepadan dengan LED dalam idf.py menuconfig, dan hasil pengubahsuaian menuconfig ialah nilai CONFIG_BLINK
_GPIO akan ditukar. Anda juga boleh mengubah suai definisi makro secara langsung
di sini dan tukar CONFIG_BLINK_GPIO kepada nilai tetap.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO
3. void app_main(void)
4. {
5.
/*Konfigurasikan IO sebagai fungsi lalai GPIO, dayakan mod tarik naik, dan
6.
lumpuhkan mod input dan output*/
7.
gpio_reset_pin(BLINK_GPIO);
54 Pengembaraan Tanpa Wayar ESP32-C3: Panduan Komprehensif untuk IoT
8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. }
/*Tetapkan GPIO kepada mod output*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); manakala(1) {
/*Cetak log*/ printf(“Mematikan LEDn”); /*Matikan LED (paras rendah output)*/ gpio_set_level(BLINK_GPIO, 0); /*Lengah (1000 ms)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("Menghidupkan LEDn"); /*Hidupkan LED (output high level)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000 / portTICK_PERIOD_MS); }
Fungsi app_main() dalam Blink exampprogram le berfungsi sebagai titik masuk untuk program pengguna. Ia adalah fungsi mudah tanpa parameter dan tiada nilai pulangan. Fungsi ini dipanggil selepas sistem telah melengkapkan pemulaan, yang merangkumi tugas seperti memulakan port bersiri log, mengkonfigurasi teras tunggal/dwi dan mengkonfigurasi pengawas.
Fungsi app_main() berjalan dalam konteks tugas bernama main. Saiz tindanan dan keutamaan tugas ini boleh dilaraskan dalam menuconfig Componentconfig Common ESP berkaitan.
Untuk tugasan mudah seperti berkelip LED, semua kod yang diperlukan boleh dilaksanakan terus dalam fungsi app_main(). Ini biasanya melibatkan memulakan GPIO yang sepadan dengan LED dan menggunakan gelung while(1) untuk menghidupkan dan mematikan LED. Sebagai alternatif, anda boleh menggunakan API FreeRTOS untuk mencipta tugas baharu yang mengendalikan kelipan LED. Setelah tugas baharu berjaya dibuat, anda boleh keluar dari fungsi app_main().
Kandungan utama/CMakeLists.txt file, yang membimbing proses penyusunan untuk komponen utama, adalah seperti berikut:
1. idf_component_register(SRCS “blink.c” INCLUDE_DIRS “.” )
Antaranya, main/CMakeLists.txt hanya memanggil satu fungsi sistem kompilasi, iaitu idf_component_register. Sama seperti CMakeLists.txt untuk kebanyakan komponen lain, blink.c ditambahkan pada SRCS dan sumber files ditambahkan pada SRCS akan disusun. Pada masa yang sama, ".", yang mewakili laluan di mana CMakeLists.txt berada, harus ditambahkan pada INCLUDE_DIRS sebagai direktori carian untuk pengepala files. Kandungan CMakeLists.txt adalah seperti berikut:
1. #Nyatakan v3.5 sebagai versi CMake tertua yang disokong oleh projek semasa 2. #Versi yang lebih rendah daripada v3.5 mesti dinaik taraf sebelum penyusunan diteruskan 3. cmake_minimum_required(VERSION 3.5) 4. #Sertakan konfigurasi CMake lalai ESP -Sistem penyusunan IDF
Bab 4. Menyediakan Persekitaran Pembangunan 55
5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Buat projek bernama “blink” 7. project(myProject)
Antaranya, CMakeLists.txt dalam direktori akar terutamanya termasuk $ENV{IDF_ PATH}/tools/cmake/project.cmake, yang merupakan konfigurasi CMake utama file disediakan oleh ESP-IDF. Ia digunakan untuk con
Dokumen / Sumber
![]() |
Sistem Espressif ESP32-C3 Pengembaraan Tanpa Wayar [pdf] Panduan Pengguna ESP32-C3 Pengembaraan Tanpa Wayar, ESP32-C3, Pengembaraan Tanpa Wayar, Pengembaraan |