Petualangan Nirkabel ESP32-C3

Petualangan Nirkabel ESP32-C3

Panduan Komprehensif tentang IoT

Sistem Espressif 12 Juni 2023

Spesifikasi

  • Produk: Petualangan Nirkabel ESP32-C3
  • Pabrikan: Sistem Espressif
  • Tanggal: 12 Juni 2023

Petunjuk Penggunaan Produk

Persiapan

Sebelum menggunakan Petualangan Nirkabel ESP32-C3, pastikan Anda menggunakannya
akrab dengan konsep dan arsitektur IoT. Ini akan membantu
Anda memahami bagaimana perangkat ini cocok dengan ekosistem IoT yang lebih besar
dan potensi penerapannya di rumah pintar.

Pengenalan dan Praktik Proyek IoT

Di bagian ini, Anda akan mempelajari tentang proyek IoT pada umumnya,
termasuk modul dasar untuk perangkat IoT umum, modul dasar
aplikasi klien, dan platform cloud IoT umum. Ini akan
memberi Anda landasan untuk memahami dan menciptakan
proyek IoT sendiri.

Latihan: Proyek Cahaya Cerdas

Dalam proyek latihan ini, Anda akan belajar cara membuat smart
ringan menggunakan Petualangan Nirkabel ESP32-C3. Struktur proyek,
fungsi, persiapan perangkat keras, dan proses pengembangan akan
dijelaskan secara rinci.

Struktur Proyek

Proyek ini terdiri dari beberapa komponen, antara lain
Petualangan Nirkabel ESP32-C3, LED, sensor, dan cloud
bagian belakang.

Fungsi Proyek

Proyek lampu pintar memungkinkan Anda mengontrol kecerahan dan
warna LED dari jarak jauh melalui aplikasi seluler atau web
antarmuka.

Persiapan Perangkat Keras

Untuk mempersiapkan proyek ini, Anda perlu mengumpulkan
komponen perangkat keras yang diperlukan, seperti ESP32-C3 Wireless
Papan petualangan, LED, resistor, dan catu daya.

Proses Pengembangan

Proses pengembangan melibatkan pengaturan pengembangan
lingkungan, menulis kode untuk mengontrol LED, menghubungkan ke
backend cloud, dan menguji fungsionalitas smart
lampu.

Pengantar ESP RainMaker

ESP RainMaker adalah kerangka kerja yang kuat untuk mengembangkan IoT
perangkat. Di bagian ini, Anda akan mempelajari apa itu ESP RainMaker dan
bagaimana hal itu dapat diterapkan dalam proyek Anda.

Apa itu ESP RainMaker?

ESP RainMaker adalah platform berbasis cloud yang menyediakan serangkaian
alat dan layanan untuk membangun dan mengelola perangkat IoT.

Implementasi ESP RainMaker

Bagian ini menjelaskan berbagai komponen yang terlibat di dalamnya
mengimplementasikan ESP RainMaker, termasuk layanan klaim,
Agen RainMaker, backend cloud, dan Klien RainMaker.

Latihan: Poin Penting untuk Berkembang dengan ESP RainMaker

Di bagian latihan ini, Anda akan mempelajari poin-poin penting
pertimbangkan ketika mengembangkan dengan ESP RainMaker. Ini termasuk perangkat
klaim, sinkronisasi data, dan manajemen pengguna.

Fitur ESP RainMaker

ESP RainMaker menawarkan berbagai fitur untuk manajemen pengguna, end
pengguna, dan administrator. Fitur-fitur ini memungkinkan perangkat mudah
pengaturan, kendali jarak jauh, dan pemantauan.

Menyiapkan Lingkungan Pengembangan

Bagian ini menyediakan informasi lebih lanjutview dari ESP-IDF (Espressif IoT
Kerangka Pembangunan), yang merupakan kerangka pembangunan resmi
untuk perangkat berbasis ESP32. Ini menjelaskan berbagai versi
ESP-IDF dan cara menyiapkan lingkungan pengembangan.

Pengembangan Perangkat Keras dan Driver

Desain Perangkat Keras Produk Smart Light berbasis ESP32-C3

Bagian ini berfokus pada desain perangkat keras lampu pintar
produk berdasarkan Petualangan Nirkabel ESP32-C3. Ini mencakup
fitur dan komposisi produk lampu pintar, serta
desain perangkat keras dari sistem inti ESP32-C3.

Fitur dan Komposisi Produk Smart Light

Subbagian ini menjelaskan fitur dan komponen yang membuatnya
produk lampu pintar. Ini membahas fungsi yang berbeda
dan pertimbangan desain untuk membuat lampu pintar.

Desain Perangkat Keras Sistem Inti ESP32-C3

Desain perangkat keras sistem inti ESP32-C3 mencakup daya
suplai, urutan penyalaan, reset sistem, flash SPI, sumber jam,
dan pertimbangan RF dan antena. Subbagian ini menyediakan
informasi rinci mengenai aspek-aspek ini.

Tanya Jawab Umum

T: Apa itu ESP RainMaker?

J: ESP RainMaker adalah platform berbasis cloud yang menyediakan alat
dan layanan untuk membangun dan mengelola perangkat IoT. Ini menyederhanakan
proses pengembangan dan memungkinkan pengaturan perangkat yang mudah, jarak jauh
pengendalian, dan pemantauan.

T: Bagaimana cara menyiapkan lingkungan pengembangan untuk
ESP32-C3?

J: Untuk menyiapkan lingkungan pengembangan untuk ESP32-C3, Anda memerlukan
untuk menginstal ESP-IDF (Kerangka Pengembangan IoT Espressif) dan
konfigurasikan sesuai dengan instruksi yang diberikan. ESP-IDF adalah
kerangka pengembangan resmi untuk perangkat berbasis ESP32.

T: Apa saja fitur ESP RainMaker?

A: ESP RainMaker menawarkan berbagai fitur, termasuk pengguna
manajemen, fitur pengguna akhir, dan fitur admin. Manajemen pengguna
memungkinkan klaim perangkat dan sinkronisasi data dengan mudah. Pengguna akhir
fitur memungkinkan kendali jarak jauh perangkat melalui aplikasi seluler atau
web antarmuka. Fitur admin menyediakan alat untuk pemantauan perangkat
dan manajemen.

Petualangan Nirkabel ESP32-C3
Panduan Komprehensif tentang IoT
Sistem Espressif 12 Juni 2023

Isi

saya Persiapan

1

1 Pengantar IoT

3

1.1 Arsitektur IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Penerapan IoT di Rumah Pintar. . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Pengenalan dan Praktek Proyek IoT

9

2.1 Pengantar Proyek IoT Khas. . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1 Modul Dasar untuk Perangkat IoT Umum. . . . . . . . . . . . . . . . . 9

2.1.2 Modul Dasar Aplikasi Klien. . . . . . . . . . . . . . . . . . . 10

2.1.3 Pengantar Platform Cloud IoT Umum. . . . . . . . . . . . . . 11

2.2 Latihan: Proyek Cahaya Cerdas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1 Struktur Proyek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.2 Fungsi Proyek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.3 Persiapan Perangkat Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.2.4 Proses Pembangunan. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Pengantar ESP RainMaker

19

3.1 Apa itu ESP RainMaker? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 Penerapan ESP RainMaker. . . . . . . . . . . . . . . . . . . . . . 21

3.2.1 Layanan Klaim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

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

3.2.3 Ujung Belakang Awan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.4 Klien RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.3 Latihan: Poin Penting untuk Pengembangan dengan ESP RainMaker . . . . . . . . . . . . 25

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

3.4.1 Manajemen Pengguna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.4.2 Fitur Pengguna Akhir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

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

3.5 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Menyiapkan Lingkungan Pembangunan

31

4.1 ESP-IDF Berakhirview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Versi ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3

4.1.2 Alur Kerja Git ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.3 Memilih Versi yang Sesuai . . . . . . . . . . . . . . . . . . . . . . . . 34 4.1.4 Selesaiview Direktori SDK ESP-IDF. . . . . . . . . . . . . . . . . . . . 34 4.2 Menyiapkan Lingkungan Pengembangan ESP-IDF . . . . . . . . . . . . . . . . . 38 4.2.1 Menyiapkan Lingkungan Pengembangan ESP-IDF di Linux . . . . . . . . 38 4.2.2 Menyiapkan Lingkungan Pengembangan ESP-IDF di Windows . . . . . . 40 4.2.3 Menyiapkan Lingkungan Pengembangan ESP-IDF di Mac . . . . . . . . . 45 4.2.4 Menginstal Kode VS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.5 Pengenalan Lingkungan Pengembangan Pihak Ketiga . . . . . . . . 46 4.3 Sistem Kompilasi ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.1 Konsep Dasar Sistem Penyusunan . . . . . . . . . . . . . . . . . . 47 4.3.2 Proyek File Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.3.3 Aturan Pembuatan Default Sistem Kompilasi . . . . . . . . . . . . . 50 4.3.4 Pengenalan Naskah Penyusunan . . . . . . . . . . . . . . . . . . 51 4.3.5 Pengenalan Perintah Umum . . . . . . . . . . . . . . . . . . . 52 4.4 Latihan: Menyusun Kelample Program "Berkedip" . . . . . . . . . . . . . . . . . . 53 4.4.1 Kelample Analisis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.2 Menyusun Program Blink . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.3 Mem-flash Program Blink . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Analisis Log Port Serial pada Program Blink . . . . . . . . . . . . . . 60 4.5 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

II Pengembangan Perangkat Keras dan Driver

65

5 Desain Perangkat Keras Produk Smart Light berbasis ESP32-C3

67

5.1 Fitur dan Komposisi Produk Lampu Cerdas. . . . . . . . . . . . . . . 67

5.2 Desain Perangkat Keras Sistem Inti ESP32-C3. . . . . . . . . . . . . . . . . . . 70

5.2.1 Catu Daya. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2.2 Urutan Penyalaan dan Reset Sistem. . . . . . . . . . . . . . . . . . 74

5.2.3 Lampu Kilat SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

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

5.2.5 RF dan Antena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.2.6 Pin Pengikat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2.7 Pengontrol GPIO dan PWM. . . . . . . . . . . . . . . . . . . . . . . . . 79

5.3 Praktek: Membangun Sistem Lampu Cerdas dengan ESP32-C3 . . . . . . . . . . . . . 80

5.3.1 Memilih Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5.3.2 Mengonfigurasi GPIO Sinyal PWM. . . . . . . . . . . . . . . . . . . . 82

5.3.3 Mengunduh Firmware dan Antarmuka Debugging. . . . . . . . . . . . 82

5.3.4 Pedoman Desain RF. . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3.5 Pedoman Desain Catu Daya . . . . . . . . . . . . . . . . . . . 86 5.4 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6 Pengembangan Pengemudi

87

6.1 Proses Pengembangan Pengemudi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

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

6.3 Dasar-Dasar Penggerak LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.1 Ruang Warna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3.2 Pengemudi LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.3 Peredupan LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

6.3.4 Pengenalan PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.4 Pengembangan Penggerak Peredupan LED. . . . . . . . . . . . . . . . . . . . . . . . 96

6.4.1 Penyimpanan Non-Volatil (NVS) . . . . . . . . . . . . . . . . . . . . . . . . 97

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

6.4.3 Pemrograman PWM LED. . . . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Latihan: Menambahkan Driver ke Proyek Smart Light . . . . . . . . . . . . . . . . . 103

6.5.1 Pengemudi Tombol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

6.5.2 Driver Peredupan LED. . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

6.6 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

III Komunikasi dan Kontrol Nirkabel

109

7 Konfigurasi dan Koneksi Wi-Fi

111

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

7.1.1 Pengenalan Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

7.1.2 Evolusi IEEE 802.11 . . . . . . . . . . . . . . . . . . . . . . . . . 111

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

7.1.4 Koneksi Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

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

7.2.1 Pengenalan Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . 123

7.2.2 Konsep Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

7.2.3 Koneksi Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . 127

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

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

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

7.3.3 Konfigurasi Cerdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

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

7.3.5 Metode Lainnya. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.4 Pemrograman Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.1 Komponen Wi-Fi di ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . 139 7.4.2 Latihan: Koneksi Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . 141 7.4.3 Latihan: Koneksi Wi-Fi Cerdas . . . . . . . . . . . . . . . . . . . . . 145
7.5 Latihan: Konfigurasi Wi-Fi di Proyek Lampu Cerdas . . . . . . . . . . . . . . . 156 7.5.1 Koneksi Wi-Fi di Proyek Lampu Cerdas . . . . . . . . . . . . . . . . . 156 7.5.2 Konfigurasi Wi-Fi Cerdas . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.6 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

8 Kontrol Lokal

159

8.1 Pengantar Pengendalian Lokal. . . . . . . . . . . . . . . . . . . . . . . . . . . 159

8.1.1 Penerapan Pengendalian Lokal. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.2 Lanjutantages Pengendalian Lokal. . . . . . . . . . . . . . . . . . . . . . . . 161

8.1.3 Menemukan Perangkat yang Dikendalikan melalui Ponsel Cerdas. . . . . . . . . . 161

8.1.4 Komunikasi Data Antara Smartphone dan Perangkat. . . . . . . . 162

8.2 Metode Penemuan Lokal yang Umum . . . . . . . . . . . . . . . . . . . . . . . . 162

8.2.1 Siaran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

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

8.2.3 Perbandingan Antara Broadcast dan Multicast. . . . . . . . . . . . . . 176

8.2.4 Protokol Aplikasi Multicast mDNS untuk Penemuan Lokal. . . . . . . . 176

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

8.3.1 Protokol Kontrol Transmisi (TCP) . . . . . . . . . . . . . . . . . . . 179

8.3.2 Protokol Transfer Hiperteks (HTTP) . . . . . . . . . . . . . . . . . . . 185

8.3.3 Tanggal PenggunatagProtokol ram (UDP). . . . . . . . . . . . . . . . . . . . . . 189

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

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

8.3.6 Ringkasan Protokol Komunikasi Data. . . . . . . . . . . . . . . 203

8.4 Jaminan Keamanan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

8.4.1 Pengantar Keamanan Lapisan Transportasi (TLS). . . . . . . . . . . . . 207

8.4.2 Pengantar DatagKeamanan Lapisan Transportasi ram (DTLS). . . . . . . 213

8.5 Praktek: Pengendalian Lokal dalam Proyek Lampu Cerdas. . . . . . . . . . . . . . . . . . 217

8.5.1 Membuat Server Kontrol Lokal berbasis Wi-Fi. . . . . . . . . . . . . . . 217

8.5.2 Memverifikasi Fungsi Kontrol Lokal menggunakan Skrip. . . . . . . . . . . 221

8.5.3 Membuat Server Kontrol Lokal berbasis Bluetooth. . . . . . . . . . . . 222

8.6 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

9 Kontrol Awan

225

9.1 Pengantar Kendali Jarak Jauh. . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.2 Protokol Komunikasi Data Cloud. . . . . . . . . . . . . . . . . . . . . . 226

9.2.1 Pengenalan MQTT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.2 Prinsip MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.2.3 Format Pesan MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.4 Perbandingan Protokol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.2.5 Menyiapkan Broker MQTT di Linux dan Windows . . . . . . . . . . . . 233 9.2.6 Menyiapkan Klien MQTT Berdasarkan ESP-IDF . . . . . . . . . . . . . . . . 235 9.3 Memastikan Keamanan Data MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.1 Arti dan Fungsi Sertifikat. . . . . . . . . . . . . . . . . . . 237 9.3.2 Pembuatan Sertifikat Secara Lokal . . . . . . . . . . . . . . . . . . . . . . 239 9.3.3 Mengonfigurasi Pialang MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3.4 Mengonfigurasi Klien MQTT . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.4 Latihan: Kendali Jarak Jauh melalui ESP RainMaker . . . . . . . . . . . . . . . . 243 9.4.1 Dasar-dasar ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.4.2 Protokol Komunikasi Node dan Cloud Backend . . . . . . . . . . . 244 9.4.3 Komunikasi antara Klien dan Cloud Backend . . . . . . . . . . . 249 9.4.4 Peran Pengguna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.5 Pelayanan Dasar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 9.4.6 Lampu Cerdas Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.4.7 Aplikasi RainMaker dan Integrasi Pihak Ketiga . . . . . . . . . . . . . . . 262 9.5 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

10 Pengembangan Aplikasi Ponsel Cerdas

269

10.1 Pengantar Pengembangan Aplikasi Ponsel Cerdas. . . . . . . . . . . . . . . . . . 269

10.1.1 Lebih dariview Pengembangan Aplikasi Ponsel Cerdas. . . . . . . . . . . . . . . 270

10.1.2 Struktur Proyek Android. . . . . . . . . . . . . . . . . . . . . . 270

10.1.3 Struktur Proyek iOS. . . . . . . . . . . . . . . . . . . . . . . . 271

10.1.4 Siklus Hidup Aktivitas Android . . . . . . . . . . . . . . . . . . . . . . 272

10.1.5 Siklus Hidup iOS ViewPengendali. . . . . . . . . . . . . . . . . . . . . . 273

10.2 Membuat Proyek Aplikasi Smartphone Baru . . . . . . . . . . . . . . . . . . . . . 275

10.2.1 Mempersiapkan Pengembangan Android . . . . . . . . . . . . . . . . . . . 275

10.2.2 Membuat Proyek Android Baru. . . . . . . . . . . . . . . . . . . . . . 275

10.2.3 Menambahkan Dependensi untuk MyRainmaker . . . . . . . . . . . . . . . . . 276

10.2.4 Permintaan Izin di Android. . . . . . . . . . . . . . . . . . . . . . 277

10.2.5 Mempersiapkan Pengembangan iOS . . . . . . . . . . . . . . . . . . . . . . 277

10.2.6 Membuat Proyek iOS Baru. . . . . . . . . . . . . . . . . . . . . . . . 278

10.2.7 Menambahkan Dependensi untuk MyRainmaker . . . . . . . . . . . . . . . . . 279

10.2.8 Permintaan Izin di iOS. . . . . . . . . . . . . . . . . . . . . . . . . 280

10.3 Analisis Persyaratan Fungsional Aplikasi. . . . . . . . . . . . . . . . . . 281

10.3.1 Analisis Persyaratan Fungsional Proyek. . . . . . . . . . . . 282

10.3.2 Analisis Persyaratan Manajemen Pengguna. . . . . . . . . . . . . . . 282 10.3.3 Analisis Persyaratan Penyediaan dan Pengikatan Perangkat. . . . . . . 283 10.3.4 Analisis Persyaratan Kendali Jarak Jauh . . . . . . . . . . . . . . . . 283 10.3.5 Analisis Persyaratan Penjadwalan . . . . . . . . . . . . . . . . . . . 284 10.3.6 Analisis Persyaratan Pusat Pengguna . . . . . . . . . . . . . . . . . . 285 10.4 Pengembangan Manajemen Pengguna . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4.1 Pengenalan API RainMaker . . . . . . . . . . . . . . . . . . . . . . 285 10.4.2 Memulai Komunikasi melalui Smartphone . . . . . . . . . . . . . . . . 286 10.4.3 Pendaftaran Akun . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.4.4 Masuk Akun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5 Pengembangan Penyediaan Perangkat . . . . . . . . . . . . . . . . . . . . . . . 292 10.5.1 Perangkat Pemindaian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 10.5.2 Perangkat Penghubung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.5.3 Menghasilkan Kunci Rahasia . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.4 Mendapatkan ID Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.5.5 Perangkat Penyediaan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 10.6 Pengembangan Pengendalian Perangkat. . . . . . . . . . . . . . . . . . . . . . . . . . 302 10.6.1 Mengikat Perangkat ke Akun Cloud . . . . . . . . . . . . . . . . . . . . 303 10.6.2 Mendapatkan Daftar Perangkat . . . . . . . . . . . . . . . . . . . . . . . . . . 305 10.6.3 Mendapatkan Status Perangkat . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 10.6.4 Mengubah Status Perangkat . . . . . . . . . . . . . . . . . . . . . . . . . . 310 10.7 Pengembangan Penjadwalan dan Pusat Pengguna . . . . . . . . . . . . . . . . . . . 313 10.7.1 Penerapan Fungsi Penjadwalan . . . . . . . . . . . . . . . . . . . . 313 10.7.2 Pelaksana Pusat Pengguna . . . . . . . . . . . . . . . . . . . . . . . . . 315 10.7.3 Lebih Banyak Cloud API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 10.8 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11 Peningkatan Firmware dan Manajemen Versi

321

11.1 Peningkatan Firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

11.1.1 Lebih dariview Tabel Partisi. . . . . . . . . . . . . . . . . . . . . . . . 322

11.1.2 Proses Booting Firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11.1.3 Lebih dariview Mekanisme OTA. . . . . . . . . . . . . . . . . . . . . 326

11.2 Manajemen Versi Firmware. . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.1 Penandaan Firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

11.2.2 Kembalikan dan Anti-Kembalikan . . . . . . . . . . . . . . . . . . . . . . . . 331

11.3 Latihan: Over-the-air (OTA) Contohample. . . . . . . . . . . . . . . . . . . . . . . 332

11.3.1 Tingkatkan Firmware Melalui Host Lokal. . . . . . . . . . . . . . . . . 332

11.3.2 Tingkatkan Firmware Melalui ESP RainMaker. . . . . . . . . . . . . . . 335

11.4 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

IV Optimasi dan Produksi Massal

343

12 Manajemen Daya dan Optimasi Daya Rendah

345

12.1 Manajemen Daya ESP32-C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

12.1.1 Penskalaan Frekuensi Dinamis . . . . . . . . . . . . . . . . . . . . . . . . 346

12.1.2 Konfigurasi Manajemen Daya . . . . . . . . . . . . . . . . . . . . 348

12.2 ESP32-C3 Mode Daya Rendah. . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

12.2.1 Mode tidur modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

12.2.2 Mode Tidur Ringan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

12.2.3 Mode tidur nyenyak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

12.2.4 Konsumsi Arus dalam Mode Daya Berbeda . . . . . . . . . . . . . 358

12.3 Manajemen Daya dan Debugging Daya Rendah. . . . . . . . . . . . . . . . . 359

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

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

12.4 Praktek: Manajemen Daya dalam Proyek Lampu Cerdas. . . . . . . . . . . . . . . 363

12.4.1 Mengonfigurasi Fitur Manajemen Daya . . . . . . . . . . . . . . . . . 364

12.4.2 Gunakan Kunci Manajemen Daya. . . . . . . . . . . . . . . . . . . . . . 365

12.4.3 Memverifikasi Konsumsi Daya. . . . . . . . . . . . . . . . . . . . . . . 366

12.5 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

13 Fitur Keamanan Perangkat yang Ditingkatkan

369

13.1 Lebih dariview Keamanan Data Perangkat IoT. . . . . . . . . . . . . . . . . . . . . . . 369

13.1.1 Mengapa Mengamankan Data Perangkat IoT? . . . . . . . . . . . . . . . . . . . . . . 370

13.1.2 Persyaratan Dasar untuk Keamanan Data Perangkat IoT. . . . . . . . . . . . 371

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

13.2.1 Pengenalan Metode Verifikasi Integritas . . . . . . . . . . . . . . 372

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

13.2.3 Contohample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3 Perlindungan Kerahasiaan Data . . . . . . . . . . . . . . . . . . . . . . . . . . 374

13.3.1 Pengenalan Enkripsi Data. . . . . . . . . . . . . . . . . . . . . . 374

13.3.2 Pengenalan Skema Enkripsi Flash. . . . . . . . . . . . . . . . . 376

13.3.3 Penyimpanan Kunci Enkripsi Flash. . . . . . . . . . . . . . . . . . . . . . . 379

13.3.4 Mode Kerja Enkripsi Flash. . . . . . . . . . . . . . . . . . . . 380

13.3.5 Proses Enkripsi Flash. . . . . . . . . . . . . . . . . . . . . . . . . . 381

13.3.6 Pengenalan Enkripsi NVS. . . . . . . . . . . . . . . . . . . . . . 383

13.3.7 Contohampfile Enkripsi Flash dan Enkripsi NVS. . . . . . . . . . . 384

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

13.4.1 Pengenalan Tanda Tangan Digital . . . . . . . . . . . . . . . . . . . . . 386

13.4.2 Lebih dariview Skema Boot Aman. . . . . . . . . . . . . . . . . . . . . 388

13.4.3 Pengenalan Perangkat Lunak Boot Aman . . . . . . . . . . . . . . . . . . . 388 13.4.4 Pengantar Boot Aman Perangkat Keras . . . . . . . . . . . . . . . . . . 390 13.4.5 Kelample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 13.5 Praktek: Fitur Keamanan Dalam Produksi Massal . . . . . . . . . . . . . . . . . . 396 13.5.1 Enkripsi Flash dan Boot Aman . . . . . . . . . . . . . . . . . . . . . 396 13.5.2 Mengaktifkan Enkripsi Flash dan Boot Aman dengan Alat Flash Batch . . 397 13.5.3 Mengaktifkan Enkripsi Flash dan Boot Aman di Smart Light Project . . . 398 13.6 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

14 Pembakaran dan Pengujian Firmware untuk Produksi Massal

399

14.1 Pembakaran Firmware dalam Produksi Massal. . . . . . . . . . . . . . . . . . . . . . 399

14.1.1 Mendefinisikan Partisi Data. . . . . . . . . . . . . . . . . . . . . . . . . . 399

14.1.2 Pembakaran Firmware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

14.2 Pengujian Produksi Massal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

14.3 Praktek: Data Produksi Massal dalam Proyek Lampu Cerdas. . . . . . . . . . . . . 404

14.4 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15 Wawasan ESP: Platform Pemantauan Jarak Jauh

405

15.1 Pengantar Wawasan ESP. . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

15.2 Memulai dengan ESP Insights. . . . . . . . . . . . . . . . . . . . . . . . . 409

15.2.1 Memulai ESP Insights di Proyek esp-insights . . . . . . 409

15.2.2 Menjalankan Kelample di Proyek esp-insights. . . . . . . . . . . . . . . 411

15.2.3 Pelaporan Informasi Coredump . . . . . . . . . . . . . . . . . . . . . 411

15.2.4 Menyesuaikan Log Minat. . . . . . . . . . . . . . . . . . . . . . . . 412

15.2.5 Melaporkan Alasan Reboot. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.2.6 Metrik Khusus Pelaporan. . . . . . . . . . . . . . . . . . . . . . . . . 413

15.3 Latihan: Menggunakan ESP Insights dalam Smart Light Project . . . . . . . . . . . . . . . 416

15.4 Ringkasan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Perkenalan
ESP32-C3 adalah SoC mikrokontroler Wi-Fi dan Bluetooth 5 (LE) inti tunggal, berdasarkan arsitektur RISC-V sumber terbuka. Teknologi ini memberikan keseimbangan yang tepat antara daya, kemampuan I/O, dan keamanan, sehingga menawarkan solusi hemat biaya yang optimal untuk perangkat yang terhubung. Untuk menunjukkan berbagai aplikasi keluarga ESP32-C3, buku karya Espressif ini akan membawa Anda pada perjalanan menarik melalui AIoT, mulai dari dasar-dasar pengembangan proyek IoT dan pengaturan lingkungan hingga contoh praktik.amples. Empat bab pertama membahas tentang IoT, ESP RainMaker, dan ESP-IDF. Bab 5 dan 6 memberikan penjelasan singkat tentang desain perangkat keras dan pengembangan driver. Seiring kemajuan Anda, Anda akan menemukan cara mengonfigurasi proyek Anda melalui jaringan Wi-Fi dan Aplikasi seluler. Terakhir, Anda akan belajar mengoptimalkan proyek Anda dan memasukkannya ke dalam produksi massal.
Jika Anda seorang insinyur di bidang terkait, arsitek perangkat lunak, guru, siswa, atau siapa pun yang tertarik dengan IoT, buku ini cocok untuk Anda.
Anda dapat mengunduh kode misample digunakan dalam buku ini dari situs Espressif di GitHub. Untuk informasi terkini mengenai perkembangan IoT, silakan ikuti akun resmi kami.

Kata pengantar
Dunia Informasi
Memanfaatkan gelombang Internet, Internet of Things (IoT) memulai debutnya dengan menjadi jenis infrastruktur baru dalam ekonomi digital. Untuk mendekatkan teknologi ini ke masyarakat, Espressif Systems bekerja dengan visi bahwa pengembang dari semua lapisan masyarakat dapat menggunakan IoT untuk memecahkan beberapa masalah paling mendesak di zaman kita. Dunia “Jaringan Cerdas Segala Sesuatu” adalah apa yang kita harapkan di masa depan.
Merancang chip kami sendiri merupakan komponen penting dari visi tersebut. Ini adalah sebuah maraton yang membutuhkan terobosan terus-menerus terhadap batasan teknologi. Dari “Game Changer” ESP8266 hingga seri ESP32 yang mengintegrasikan konektivitas Wi-Fi dan Bluetoothr (LE), diikuti oleh ESP32-S3 yang dilengkapi akselerasi AI, Espressif tidak pernah berhenti meneliti dan mengembangkan produk untuk solusi AIoT. Dengan perangkat lunak sumber terbuka kami, seperti IoT Development Framework ESP-IDF, Mesh Development Framework ESP-MDF, dan Device Connectivity Platform ESP RainMaker, kami telah menciptakan kerangka kerja independen untuk membangun aplikasi AIoT.
Pada Juli 2022, pengiriman kumulatif chipset IoT Espressif telah melampaui 800 juta, memimpin pasar Wi-Fi MCU dan mendukung sejumlah besar perangkat yang terhubung di seluruh dunia. Mengejar keunggulan menjadikan setiap produk Espressif sukses besar karena tingkat integrasi dan efisiensi biayanya yang tinggi. Peluncuran ESP32-C3 menandai tonggak penting dari teknologi yang dikembangkan sendiri oleh Espressif. Ini adalah MCU single-core, 32-bit, berbasis RISC-V dengan SRAM 400KB, yang dapat berjalan pada 160MHz. Ini memiliki Wi-Fi 2.4 GHz terintegrasi dan Bluetooth 5 (LE) dengan dukungan jarak jauh. Teknologi ini memberikan keseimbangan yang baik antara daya, kemampuan I/O, dan keamanan, sehingga menawarkan solusi hemat biaya yang optimal untuk perangkat yang terhubung. Berdasarkan ESP32-C3 yang begitu kuat, buku ini dimaksudkan untuk membantu pembaca memahami pengetahuan terkait IoT dengan ilustrasi mendetail dan contoh praktis.ampsedikit.
Mengapa kami menulis buku ini?
Espressif Systems lebih dari sekadar perusahaan semikonduktor. Ini juga merupakan perusahaan platform IoT yang selalu berupaya melakukan terobosan dan inovasi di bidang teknologi. Pada saat yang sama, Espressif telah melakukan open source dan membagikan sistem operasi dan kerangka perangkat lunak yang dikembangkan sendiri kepada komunitas, sehingga membentuk ekosistem yang unik. Insinyur, pembuat, dan penggemar teknologi secara aktif mengembangkan aplikasi perangkat lunak baru berdasarkan produk Espressif, berkomunikasi secara bebas, dan berbagi pengalaman. Anda dapat melihat ide-ide menarik para pengembang di berbagai platform sepanjang waktu, seperti YouTube dan GitHub. Popularitas produk Espressif telah mendorong peningkatan jumlah penulis yang telah menghasilkan lebih dari 100 buku berdasarkan chipset Espressif, dalam lebih dari sepuluh bahasa, termasuk Inggris, Cina, Jerman, Prancis, dan Jepang.

Dukungan dan kepercayaan mitra komunitaslah yang mendorong inovasi Espressif terus menerus. “Kami berusaha untuk membuat chip, sistem operasi, kerangka kerja, solusi, Cloud, praktik bisnis, alat, dokumentasi, tulisan, ide, dll., menjadi lebih relevan dengan jawaban yang dibutuhkan masyarakat dalam permasalahan kehidupan yang paling mendesak saat ini. Ini adalah ambisi tertinggi dan pedoman moral Espressif.” kata Tuan Teo Swee Ann, Pendiri dan CEO Espressif.
Espressif menghargai bacaan dan ide. Karena peningkatan teknologi IoT yang berkelanjutan menimbulkan tuntutan yang lebih tinggi bagi para insinyur, bagaimana kita dapat membantu lebih banyak orang untuk dengan cepat menguasai chip IoT, sistem operasi, kerangka perangkat lunak, skema aplikasi, dan produk layanan cloud? Seperti kata pepatah, lebih baik mengajari seseorang memancing daripada memberinya ikan. Dalam sesi brainstorming, terpikir oleh kami bahwa kami dapat menulis buku untuk memilah secara sistematis pengetahuan utama pengembangan IoT. Kami cocok, dengan cepat mengumpulkan sekelompok insinyur senior, dan menggabungkan pengalaman tim teknis dalam pemrograman tertanam, pengembangan perangkat keras dan perangkat lunak IoT, semuanya berkontribusi pada penerbitan buku ini. Dalam proses penulisan, kami berusaha sebaik mungkin untuk bersikap objektif dan adil, menghilangkan kepompong, dan menggunakan ekspresi ringkas untuk menceritakan kompleksitas dan pesona Internet of Things. Kami dengan cermat merangkum pertanyaan-pertanyaan umum, mengacu pada umpan balik dan saran komunitas, untuk menjawab dengan jelas pertanyaan-pertanyaan yang dihadapi dalam proses pengembangan, dan memberikan pedoman pengembangan IoT praktis untuk teknisi dan pengambil keputusan terkait.
Struktur Buku
Buku ini mengambil perspektif yang berpusat pada insinyur dan menguraikan pengetahuan yang diperlukan untuk pengembangan proyek IoT langkah demi langkah. Terdiri dari empat bagian, sebagai berikut:
· Persiapan (Bab 1): Bagian ini memperkenalkan arsitektur IoT, kerangka umum proyek IoT, platform cloud ESP RainMakerr, dan lingkungan pengembangan ESP-IDF, untuk meletakkan dasar yang kuat untuk pengembangan proyek IoT.
· Pengembangan Perangkat Keras dan Driver (Bab 5): Berdasarkan chipset ESP6-C32, bagian ini menguraikan sistem perangkat keras minimum dan pengembangan driver, serta mengimplementasikan kontrol peredupan, penilaian warna, dan komunikasi nirkabel.
· Komunikasi dan Kontrol Nirkabel (Bab 7): Bagian ini menjelaskan skema konfigurasi Wi-Fi cerdas berdasarkan chip ESP11-C32, protokol kontrol lokal & cloud, dan kontrol perangkat lokal & jarak jauh. Ini juga menyediakan skema untuk mengembangkan aplikasi ponsel cerdas, peningkatan firmware, dan manajemen versi.
· Optimasi dan Produksi Massal (Bab 12-15): Bagian ini ditujukan untuk aplikasi IoT tingkat lanjut, dengan fokus pada optimalisasi produk dalam manajemen daya, optimalisasi daya rendah, dan peningkatan keamanan. Ini juga memperkenalkan pembakaran dan pengujian firmware dalam produksi massal, dan cara mendiagnosis status berjalan dan log firmware perangkat melalui platform pemantauan jarak jauh ESP Insights.

Tentang Kode Sumber
Pembaca dapat menjalankan example program dalam buku ini, baik dengan memasukkan kode secara manual atau menggunakan kode sumber yang menyertai buku. Kami menekankan kombinasi teori dan praktik, dan dengan demikian menetapkan bagian Praktik berdasarkan proyek Smart Light di hampir setiap bab. Semua kode bersumber terbuka. Pembaca dipersilakan untuk mengunduh kode sumber dan mendiskusikannya di bagian terkait buku ini di GitHub dan forum resmi kami esp32.com. Kode sumber terbuka buku ini tunduk pada ketentuan Lisensi Apache 2.0.
Catatan Penulis
Buku ini secara resmi diproduksi oleh Espressif Systems dan ditulis oleh para insinyur senior perusahaan. Sangat cocok untuk manajer dan personel R&D di industri terkait IoT, guru dan siswa dari jurusan terkait, serta penggemar di bidang Internet of Things. Kami berharap buku ini dapat menjadi panduan kerja, referensi, dan buku samping tempat tidur, sehingga dapat menjadi tutor dan teman yang baik.
Dalam penyusunan buku ini, kami mengacu pada beberapa hasil penelitian yang relevan dari para ahli, cendekiawan, dan teknisi di dalam dan luar negeri, dan kami berusaha semaksimal mungkin untuk mengutipnya sesuai dengan norma akademik. Namun, tidak dapat dihindari bahwa ada beberapa kekurangan, oleh karena itu di sini kami ingin menyampaikan rasa hormat dan terima kasih yang sebesar-besarnya kepada semua penulis terkait. Selain itu, kami telah mengutip informasi dari Internet, jadi kami ingin mengucapkan terima kasih kepada penulis dan penerbit asli serta meminta maaf karena kami tidak dapat menyebutkan sumber dari setiap informasi.
Untuk menghasilkan buku berkualitas tinggi, kami telah mengadakan diskusi internal, dan belajar dari saran dan umpan balik dari pembaca percobaan dan editor penerbit. Di sini, kami ingin mengucapkan terima kasih sekali lagi atas bantuan Anda yang semuanya berkontribusi pada keberhasilan pekerjaan ini.
Terakhir, namun yang terpenting, terima kasih kepada semua orang di Espressif yang telah bekerja keras untuk lahirnya dan mempopulerkan produk kami.
Pengembangan proyek IoT melibatkan berbagai pengetahuan. Terbatas pada panjang buku, serta tingkat dan pengalaman penulis, kelalaian tidak dapat dihindari. Oleh karena itu, kami mohon agar para ahli dan pembaca dapat mengkritik dan memperbaiki kesalahan kami. Jika Anda memiliki saran untuk buku ini, silakan hubungi kami di book@espressif.com. Kami menantikan tanggapan Anda.

Bagaimana cara menggunakan buku ini?
Kode proyek dalam buku ini bersumber terbuka. Anda dapat mengunduhnya dari repositori GitHub kami dan membagikan pemikiran dan pertanyaan Anda di forum resmi kami. GitHub: https://github.com/espressif/book-esp32c3-iot-projects Forum: https://www.esp32.com/bookc3 Sepanjang buku ini, akan ada bagian yang disorot seperti yang ditunjukkan di bawah ini.
Kode sumber Dalam buku ini, kami menekankan kombinasi teori dan praktik, sehingga menetapkan bagian Praktik tentang proyek Smart Light di hampir setiap bab. Langkah-langkah yang sesuai dan halaman sumber akan ditandai di antara dua baris yang dimulai dengan tag Kode sumber.
CATATAN/TIPS Di sinilah Anda dapat menemukan beberapa informasi penting dan pengingat agar berhasil melakukan debug pada program Anda. Mereka akan ditandai di antara dua garis tebal yang dimulai dengan tag CATATAN atau TIPS.
Sebagian besar perintah dalam buku ini dijalankan di Linux, diminta oleh karakter “$”. Jika perintah memerlukan hak pengguna super untuk dijalankan, prompt akan diganti dengan “#”. Prompt perintah pada sistem Mac adalah “%”, seperti yang digunakan di Bagian 4.2.3 Menginstal ESP-IDF di Mac.
Teks isi buku ini akan dicetak dalam Piagam, sedangkan kode exampfile, komponen, fungsi, variabel, kode file nama, direktori kode, dan string akan ada di Courier New.
Perintah atau teks yang perlu dimasukkan oleh pengguna, dan perintah yang dapat dimasukkan dengan menekan tombol “Enter” akan dicetak dengan huruf tebal Courier New. Log dan blok kode akan disajikan dalam kotak biru muda.
Exampsaya:
Kedua, gunakan esp-idf/components/nvs flash/nvs partisi generator/nvs partisi gen.py untuk menghasilkan biner partisi NVS file pada host pengembangan dengan perintah berikut:
$ python $IDF PATH/components/nvs flash/nvs partisi generator/nvs partisi gen.py –input prod.csv massal –output prod.bin massal –ukuran UKURAN PARTISI NVS

Bab 1

Perkenalan

ke

Internet of Things (IoT)

Pada akhir abad ke-20, dengan munculnya jaringan komputer dan teknologi komunikasi, Internet dengan cepat terintegrasi ke dalam kehidupan masyarakat. Seiring dengan semakin berkembangnya teknologi Internet, lahirlah ide Internet of Things (IoT). Secara harfiah, IoT berarti Internet tempat segala sesuatunya terhubung. Meskipun Internet pada awalnya mendobrak batasan ruang dan waktu serta mempersempit jarak antara “orang dan orang”, IoT menjadikan “benda” sebagai partisipan yang penting, sehingga mendekatkan “orang” dan “benda”. Di masa mendatang, IoT akan menjadi kekuatan pendorong industri informasi.
Jadi, apa itu Internet of Things?
Sulit untuk mendefinisikan Internet of Things secara akurat, karena makna dan cakupannya terus berkembang. Pada tahun 1995, Bill Gates pertama kali mengemukakan ide IoT dalam bukunya The Road Ahead. Sederhananya, IoT memungkinkan objek untuk bertukar informasi satu sama lain melalui Internet. Tujuan utamanya adalah untuk membangun “Internet Segalanya”. Ini adalah interpretasi awal IoT, sekaligus fantasi teknologi masa depan. Tiga puluh tahun kemudian, dengan pesatnya perkembangan ekonomi dan teknologi, fantasi tersebut menjadi kenyataan. Dari perangkat pintar, rumah pintar, kota pintar, Internet Kendaraan dan perangkat yang dapat dikenakan, hingga “metaverse” yang didukung oleh teknologi IoT, konsep-konsep baru terus bermunculan. Dalam bab ini, kita akan memulai dengan penjelasan arsitektur Internet of Things, lalu memperkenalkan aplikasi IoT yang paling umum, yaitu rumah pintar, untuk membantu Anda mendapatkan pemahaman yang jelas tentang IoT.
1.1 Arsitektur IoT
Internet of Things melibatkan berbagai teknologi yang memiliki kebutuhan dan bentuk aplikasi berbeda di industri berbeda. Untuk memilah struktur, teknologi utama, dan karakteristik aplikasi IoT, perlu dibangun arsitektur terpadu dan sistem teknis standar. Dalam buku ini, arsitektur IoT secara sederhana dibagi menjadi empat lapisan: lapisan persepsi & kontrol, lapisan jaringan, lapisan platform, dan lapisan aplikasi.
Lapisan Persepsi & Kontrol Sebagai elemen paling dasar dari arsitektur IoT, lapisan persepsi & kontrol adalah inti untuk mewujudkan penginderaan IoT yang komprehensif. Fungsi utamanya adalah mengumpulkan, mengidentifikasi dan mengendalikan informasi. Terdiri dari berbagai perangkat dengan kemampuan persepsi,
3

identifikasi, kontrol dan eksekusi, dan bertanggung jawab untuk mengambil dan menganalisis data seperti properti material, tren perilaku, dan status perangkat. Dengan cara ini, IoT dapat mengenali dunia fisik nyata. Selain itu, lapisan tersebut juga mampu mengontrol status perangkat.
Perangkat yang paling umum pada lapisan ini adalah berbagai sensor, yang memainkan peran penting dalam pengumpulan dan identifikasi informasi. Sensor itu seperti organ indra manusia, seperti sensor fotosensitif yang setara dengan penglihatan, sensor akustik sama dengan pendengaran, sensor gas sama dengan penciuman, dan sensor peka tekanan dan suhu sama dengan sentuhan. Dengan semua “organ indera” ini, objek menjadi “hidup” dan mampu memahami, mengenali, dan memanipulasi dunia fisik secara cerdas.
Lapisan Jaringan Fungsi utama lapisan jaringan adalah mengirimkan informasi, termasuk data yang diperoleh dari lapisan persepsi & kontrol ke target yang ditentukan, serta perintah yang dikeluarkan dari lapisan aplikasi kembali ke lapisan persepsi & kontrol. Ini berfungsi sebagai jembatan komunikasi penting yang menghubungkan berbagai lapisan sistem IoT. Untuk menyiapkan model dasar Internet of Things, diperlukan dua langkah untuk mengintegrasikan objek ke dalam jaringan: akses ke Internet dan transmisi melalui Internet.
Akses ke Internet Internet memungkinkan terjadinya interkoneksi antara orang dengan orang lain, namun gagal memasukkan segala sesuatu ke dalam keluarga besar. Sebelum munculnya IoT, sebagian besar hal tidak “dapat dihubungkan ke jaringan”. Berkat perkembangan teknologi yang berkelanjutan, IoT berhasil menghubungkan berbagai hal ke Internet, sehingga mewujudkan interkoneksi antara “manusia dan benda”, dan “benda dan benda”. Ada dua cara umum untuk mengimplementasikan koneksi Internet: akses jaringan kabel dan akses jaringan nirkabel.
Metode akses jaringan kabel meliputi Ethernet, komunikasi serial (misalnya RS-232, RS-485) dan USB, sedangkan akses jaringan nirkabel bergantung pada komunikasi nirkabel, yang selanjutnya dapat dibagi menjadi komunikasi nirkabel jarak pendek dan komunikasi nirkabel jarak jauh.
Komunikasi nirkabel jarak pendek mencakup ZigBee, Bluetoothr, Wi-Fi, Komunikasi Jarak Dekat (NFC), dan Identifikasi Frekuensi Radio (RFID). Komunikasi nirkabel jarak jauh mencakup Enhanced Machine Type Communication (eMTC), LoRa, Narrow Band Internet of Things (NB-IoT), 2G, 3G, 4G, 5G, dll.
Transmisi melalui Internet Berbagai metode akses Internet mengarah pada tautan transmisi fisik data yang sesuai. Hal berikutnya adalah memutuskan protokol komunikasi mana yang akan digunakan untuk mengirimkan data. Dibandingkan dengan terminal Internet, sebagian besar terminal IoT saat ini memiliki jumlah yang lebih sedikit
4 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

sumber daya yang tersedia, seperti kinerja pemrosesan, kapasitas penyimpanan, kecepatan jaringan, dll., sehingga perlu memilih protokol komunikasi yang menggunakan lebih sedikit sumber daya dalam aplikasi IoT. Ada dua protokol komunikasi yang banyak digunakan saat ini: Message Queuing Telemetry Transport (MQTT) dan Constrained Application Protocol (CoAP).
Lapisan Platform Lapisan platform terutama mengacu pada platform cloud IoT. Ketika semua terminal IoT terhubung ke jaringan, datanya perlu dikumpulkan pada platform cloud IoT untuk dihitung dan disimpan. Lapisan platform terutama mendukung aplikasi IoT dalam memfasilitasi akses dan pengelolaan perangkat berukuran besar. Ini menghubungkan terminal IoT ke platform cloud, mengumpulkan data terminal, dan mengeluarkan perintah ke terminal, untuk menerapkan kendali jarak jauh. Sebagai layanan perantara untuk menetapkan peralatan ke aplikasi industri, lapisan platform memainkan peran penghubung dalam seluruh arsitektur IoT, membawa logika bisnis abstrak dan model data inti standar, yang tidak hanya mewujudkan akses perangkat yang cepat, namun juga menyediakan kemampuan modular yang kuat untuk memenuhi berbagai kebutuhan dalam skenario aplikasi industri. Lapisan platform terutama mencakup modul fungsional seperti akses perangkat, manajemen perangkat, manajemen keamanan, komunikasi pesan, pemantauan operasi dan pemeliharaan, dan aplikasi data.
· Akses perangkat, mewujudkan koneksi dan komunikasi antara terminal dan platform cloud IoT.
· Manajemen perangkat, termasuk fungsi seperti pembuatan perangkat, pemeliharaan perangkat, konversi data, sinkronisasi data, dan distribusi perangkat.
· Manajemen keamanan, memastikan keamanan transmisi data IoT dari perspektif otentikasi keamanan dan keamanan komunikasi.
· Komunikasi pesan, termasuk tiga arah transmisi, yaitu terminal mengirimkan data ke platform cloud IoT, platform cloud IoT mengirimkan data ke sisi server atau platform cloud IoT lainnya, dan sisi server mengontrol perangkat IoT dari jarak jauh.
· Pemantauan O&M, yang melibatkan pemantauan dan diagnosis, peningkatan firmware, debugging online, layanan log, dll.
· Aplikasi data, melibatkan penyimpanan, analisis dan penerapan data.
Lapisan Aplikasi Lapisan aplikasi menggunakan data dari lapisan platform untuk mengelola aplikasi, menyaring dan memprosesnya dengan alat seperti database dan perangkat lunak analisis. Data yang dihasilkan dapat digunakan untuk aplikasi IoT di dunia nyata seperti layanan kesehatan pintar, pertanian pintar, rumah pintar, dan kota pintar.
Tentu saja, arsitektur IoT dapat dibagi lagi menjadi lebih banyak lapisan, namun tidak peduli berapa banyak lapisan yang ada, prinsip dasarnya pada dasarnya tetap sama. Sedang belajar
Bab 1. Pengenalan IoT 5

tentang arsitektur IoT membantu memperdalam pemahaman kita tentang teknologi IoT dan membangun proyek IoT yang berfungsi penuh.
1.2 Penerapan IoT di Rumah Pintar
IoT telah merambah ke semua lapisan masyarakat, dan aplikasi IoT yang paling erat hubungannya dengan kita adalah rumah pintar. Banyak peralatan tradisional kini dilengkapi dengan satu atau lebih perangkat IoT, dan banyak rumah baru yang dirancang dengan teknologi IoT sejak awal. Gambar 1.1 menunjukkan beberapa perangkat rumah pintar yang umum.
Gambar 1.1. Perangkat rumah pintar yang umum Perkembangan rumah pintar secara sederhana dapat dibagi menjadi beberapa produk pintartage, interkoneksi adegan stage dan cerdas stage, seperti yang ditunjukkan pada Gambar 1.2.
Gambar 1.2. Pembangunan stage dari rumah pintar 6 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif untuk IoT

Yang pertama stage adalah tentang produk pintar. Berbeda dari rumah tradisional, di rumah pintar, perangkat IoT menerima sinyal dengan sensor, dan terhubung ke jaringan melalui teknologi komunikasi nirkabel seperti Wi-Fi, Bluetooth LE, dan ZigBee. Pengguna dapat mengontrol produk pintar dengan berbagai cara, seperti aplikasi ponsel pintar, asisten suara, kontrol speaker pintar, dll.tage berfokus pada interkoneksi adegan. Dalam hal initage, pengembang tidak lagi mempertimbangkan untuk mengendalikan satu produk pintar, tetapi menghubungkan dua atau lebih produk pintar, mengotomatisasi sampai batas tertentu, dan akhirnya membentuk mode pemandangan khusus. MisalnyaampMisalnya, ketika pengguna menekan tombol mode pemandangan apa pun, lampu, tirai, dan AC akan secara otomatis disesuaikan dengan preset. Tentu saja, logika linkage harus siap diatur, termasuk kondisi pemicu dan tindakan eksekusi. Bayangkan mode pemanasan AC dipicu ketika suhu dalam ruangan turun di bawah 10°C; bahwa pada jam 7 pagi, musik diputar untuk membangunkan pengguna, tirai pintar dibuka, dan penanak nasi atau pemanggang roti dinyalakan melalui soket pintar; setelah pengguna bangun dan selesai mencuci, sarapan sudah disajikan, sehingga tidak ada penundaan dalam berangkat kerja. Betapa nyamannya hidup kita! hal ketigatage pergi ke intelijen stage. Semakin banyak perangkat rumah pintar yang diakses, jenis data yang dihasilkan juga akan meningkat. Dengan bantuan komputasi awan, data besar, dan kecerdasan buatan, “otak yang lebih cerdas” telah ditanamkan ke dalam rumah pintar, yang tidak lagi memerlukan perintah sering dari pengguna. Mereka mengumpulkan data dari interaksi sebelumnya dan mempelajari pola perilaku dan preferensi pengguna, sehingga dapat mengotomatiskan aktivitas, termasuk memberikan rekomendasi untuk pengambilan keputusan. Saat ini, sebagian besar rumah pintar berada di lokasi interkoneksitage. Ketika tingkat penetrasi dan kecerdasan produk pintar meningkat, hambatan antar protokol komunikasi dihilangkan. Di masa depan, rumah pintar pasti akan menjadi benar-benar “pintar”, seperti sistem AI Jarvis di Iron Man, yang tidak hanya dapat membantu pengguna mengontrol berbagai perangkat, menangani urusan sehari-hari, tetapi juga memiliki kekuatan komputasi dan kemampuan berpikir yang super. Dalam hal yang cerdastage, umat manusia akan mendapat pelayanan yang lebih baik baik kuantitas maupun kualitasnya.
Bab 1. Pengenalan IoT 7

8 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Bab Pengenalan dan Praktek 2 Proyek IoT
Pada Bab 1, kami memperkenalkan arsitektur IoT, dan peran serta keterkaitan lapisan persepsi & kontrol, lapisan jaringan, lapisan platform, dan lapisan aplikasi, serta pengembangan rumah pintar. Namun, seperti halnya ketika kita belajar melukis, mengetahui pengetahuan teoritis saja masih jauh dari cukup. Kita harus “kotor” untuk menerapkan proyek IoT agar benar-benar menguasai teknologinya. Selain itu, ketika sebuah proyek berpindah ke produksi massaltage, perlu mempertimbangkan lebih banyak faktor seperti koneksi jaringan, konfigurasi, interaksi platform cloud IoT, manajemen dan pembaruan firmware, manajemen produksi massal, dan konfigurasi keamanan. Jadi, apa yang perlu kita perhatikan saat mengembangkan proyek IoT secara lengkap? Di Bab 1, kami menyebutkan bahwa rumah pintar adalah salah satu skenario penerapan IoT yang paling umum, dan lampu pintar adalah salah satu peralatan paling dasar dan praktis, yang dapat digunakan di rumah, hotel, pusat kebugaran, rumah sakit, dll. Dalam buku ini, kami akan mengambil pembangunan proyek lampu pintar sebagai titik awal, menjelaskan komponen dan fiturnya, serta memberikan panduan pengembangan proyek. Kami berharap Anda dapat menarik kesimpulan dari kasus ini untuk membuat lebih banyak aplikasi IoT.
2.1 Pengantar Proyek IoT pada umumnya
Dalam hal pengembangan, modul fungsional dasar proyek IoT dapat diklasifikasikan ke dalam pengembangan perangkat lunak dan perangkat keras perangkat IoT, pengembangan aplikasi klien, dan pengembangan platform cloud IoT. Penting untuk memperjelas modul fungsional dasar, yang akan dijelaskan lebih lanjut di bagian ini.
2.1.1 Modul Dasar untuk Perangkat IoT Umum
Pengembangan perangkat lunak dan perangkat keras perangkat IoT mencakup modul dasar berikut: Pengumpulan data
Sebagai lapisan terbawah arsitektur IoT, perangkat IoT pada lapisan persepsi & kontrol menghubungkan sensor dan perangkat melalui chip dan periferalnya untuk mencapai pengumpulan data dan kontrol operasi.
9

Pengikatan akun dan konfigurasi awal Untuk sebagian besar perangkat IoT, pengikatan akun dan konfigurasi awal diselesaikan dalam satu proses operasional, misalnyaample, menghubungkan perangkat dengan pengguna dengan mengkonfigurasi jaringan Wi-Fi.
Interaksi dengan platform cloud IoT Untuk memantau dan mengontrol perangkat IoT, perangkat juga perlu dihubungkan ke platform cloud IoT, untuk memberikan perintah dan melaporkan status melalui interaksi antara satu sama lain.
Kontrol perangkat Saat terhubung dengan platform cloud IoT, perangkat dapat berkomunikasi dengan cloud dan didaftarkan, diikat, atau dikontrol. Pengguna dapat menanyakan status produk dan melakukan operasi lain pada aplikasi ponsel pintar melalui platform cloud IoT atau protokol komunikasi lokal.
Peningkatan firmware Perangkat IoT juga dapat mencapai peningkatan firmware berdasarkan kebutuhan produsen. Dengan menerima perintah yang dikirim melalui cloud, peningkatan firmware dan manajemen versi akan terwujud. Dengan fitur peningkatan firmware ini, Anda dapat terus meningkatkan fungsi perangkat IoT, memperbaiki kerusakan, dan meningkatkan pengalaman pengguna.
2.1.2 Modul Dasar Aplikasi Klien
Aplikasi klien (misalnya, aplikasi ponsel pintar) terutama mencakup modul dasar berikut:
Sistem akun dan otorisasi Mendukung otorisasi akun dan perangkat.
Kontrol Perangkat Aplikasi ponsel pintar biasanya dilengkapi dengan fungsi pengontrolan. Pengguna dapat dengan mudah terhubung ke perangkat IoT, dan mengelolanya kapan saja, di mana saja melalui aplikasi ponsel pintar. Di rumah pintar di dunia nyata, sebagian besar perangkat dikontrol melalui aplikasi ponsel cerdas, yang tidak hanya memungkinkan pengelolaan perangkat secara cerdas, namun juga menghemat biaya tenaga kerja. Oleh karena itu, kontrol perangkat adalah suatu keharusan untuk aplikasi klien, seperti kontrol atribut fungsi perangkat, kontrol pemandangan, penjadwalan, kendali jarak jauh, hubungan perangkat, dll. Pengguna rumah pintar juga dapat menyesuaikan pemandangan sesuai dengan kebutuhan pribadi, mengendalikan pencahayaan, peralatan rumah tangga, pintu masuk , dll., untuk membuat kehidupan rumah lebih nyaman dan nyaman. Mereka dapat mengatur waktu AC, mematikannya dari jarak jauh, menyalakan lampu lorong secara otomatis setelah pintu tidak terkunci, atau beralih ke mode “teater” hanya dengan satu tombol.
Aplikasi Klien Notifikasi memperbarui status perangkat IoT secara real-time, dan mengirimkan peringatan ketika perangkat menjadi tidak normal.
10 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Layanan pelanggan purna jual Aplikasi ponsel pintar dapat menyediakan layanan purna jual untuk produk, untuk menyelesaikan masalah terkait kegagalan perangkat IoT dan pengoperasian teknis secara tepat waktu.
Fungsi unggulan Untuk memenuhi kebutuhan pengguna yang berbeda, fungsi lain dapat ditambahkan, seperti Shake, NFC, GPS, dll. GPS dapat membantu mengatur keakuratan pengoperasian pemandangan berdasarkan lokasi dan jarak, sedangkan fungsi Shake memungkinkan pengguna mengatur keakuratan perintah yang akan dieksekusi untuk perangkat atau adegan tertentu dengan gemetar.
2.1.3 Pengantar Platform Cloud IoT Umum
Platform cloud IoT adalah platform lengkap yang mengintegrasikan fungsi seperti manajemen perangkat, komunikasi keamanan data, dan manajemen notifikasi. Menurut kelompok sasaran dan aksesibilitasnya, platform cloud IoT dapat dibagi menjadi platform cloud IoT publik (selanjutnya disebut sebagai “cloud publik”) dan platform cloud IoT pribadi (selanjutnya disebut sebagai “cloud pribadi”).
Cloud publik biasanya menunjukkan platform cloud IoT bersama untuk perusahaan atau individu, dioperasikan dan dikelola oleh penyedia platform, dan dibagikan melalui Internet. Ini bisa gratis atau berbiaya rendah, dan menyediakan layanan di seluruh jaringan publik terbuka, seperti Alibaba Cloud, Tencent Cloud, Baidu Cloud, AWS IoT, Google IoT, dll. Sebagai platform pendukung, public cloud dapat mengintegrasikan penyedia layanan hulu dan pengguna akhir hilir untuk menciptakan rantai nilai dan ekosistem baru.
Cloud pribadi dibuat hanya untuk penggunaan perusahaan, sehingga menjamin kontrol terbaik atas data, keamanan, dan kualitas layanan. Layanan dan infrastrukturnya dikelola secara terpisah oleh perusahaan, dan perangkat keras serta perangkat lunak pendukungnya juga didedikasikan untuk pengguna tertentu. Perusahaan dapat menyesuaikan layanan cloud untuk memenuhi kebutuhan bisnis mereka. Saat ini, beberapa produsen rumah pintar telah memiliki platform cloud IoT pribadi dan mengembangkan aplikasi rumah pintar berdasarkan platform tersebut.
Cloud publik dan cloud pribadi memiliki keunggulannya masing-masingtagya, yang akan dijelaskan nanti.
Untuk mencapai konektivitas komunikasi, perlu menyelesaikan setidaknya pengembangan tertanam di sisi perangkat, bersama dengan server bisnis, platform cloud IoT, dan aplikasi ponsel pintar. Menghadapi proyek sebesar itu, cloud publik biasanya menyediakan kit pengembangan perangkat lunak untuk aplikasi di sisi perangkat dan ponsel pintar untuk mempercepat prosesnya. Cloud publik dan privat menyediakan layanan termasuk akses perangkat, manajemen perangkat, bayangan perangkat, serta pengoperasian dan pemeliharaan.
Akses perangkat Platform cloud IoT perlu menyediakan tidak hanya antarmuka untuk akses perangkat menggunakan protokol
Bab 2. Pengenalan dan Praktek Proyek IoT 11

seperti MQTT, CoAP, HTTPS, dan WebSoket, tetapi juga fungsi otentikasi keamanan perangkat untuk memblokir perangkat palsu dan ilegal, yang secara efektif mengurangi risiko disusupi. Otentikasi semacam itu biasanya mendukung mekanisme yang berbeda, jadi ketika perangkat diproduksi secara massal, sertifikat perangkat perlu ditetapkan terlebih dahulu sesuai dengan mekanisme otentikasi yang dipilih dan membakarnya ke dalam perangkat.
Manajemen perangkat Fungsi manajemen perangkat yang disediakan oleh platform cloud IoT tidak hanya dapat membantu produsen memantau status aktivasi dan status online perangkat mereka secara real-time, namun juga memungkinkan opsi seperti menambah/menghapus perangkat, mengambil, menambah/menghapus grup, peningkatan firmware , dan manajemen versi.
Platform cloud IoT bayangan perangkat dapat membuat versi virtual persisten (bayangan perangkat) untuk setiap perangkat, dan status bayangan perangkat dapat disinkronkan dan diperoleh oleh aplikasi ponsel cerdas atau perangkat lain melalui protokol transmisi Internet. Bayangan perangkat menyimpan status terbaru yang dilaporkan dan status yang diharapkan dari setiap perangkat, dan meskipun perangkat sedang offline, perangkat masih dapat memperoleh status tersebut dengan memanggil API. Device shadow menyediakan API yang selalu aktif, sehingga memudahkan pembuatan aplikasi ponsel cerdas yang berinteraksi dengan perangkat.
Pengoperasian dan pemeliharaan Fungsi O&M mencakup tiga aspek: · Mendemonstrasikan informasi statistik tentang perangkat IoT dan notifikasi. · Manajemen log memungkinkan pengambilan informasi tentang perilaku perangkat, aliran pesan naik / turun, dan konten pesan. · Proses debug perangkat mendukung pengiriman perintah, pembaruan konfigurasi, dan pemeriksaan interaksi antara platform cloud IoT dan pesan perangkat.
2.2 Latihan: Proyek Cahaya Cerdas
Setelah pengenalan teori di setiap bab, Anda akan menemukan bagian praktik terkait proyek Smart Light untuk membantu Anda mendapatkan pengalaman langsung. Proyek ini didasarkan pada chip ESP32-C3 Espressif dan ESP RainMaker IoT Cloud Platform, dan mencakup perangkat keras modul nirkabel dalam produk lampu pintar, perangkat lunak tertanam untuk perangkat pintar berbasis ESP32C3, aplikasi ponsel pintar, dan interaksi ESP RainMaker.
Kode sumber Untuk pembelajaran dan pengembangan pengalaman yang lebih baik, proyek dalam buku ini bersifat open source. Anda dapat mengunduh kode sumber dari repositori GitHub kami di https://github. com/espressif/book-esp32c3-iot-projects.
12 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

2.2.1 Struktur Proyek
Proyek Smart Light terdiri dari tiga bagian: i. Perangkat lampu pintar berbasis ESP32-C3, bertanggung jawab untuk berinteraksi dengan platform cloud IoT, dan mengontrol sakelar, kecerahan, dan suhu warna LED lamp manik-manik. ii. Aplikasi ponsel cerdas (termasuk aplikasi tablet yang berjalan di Android dan iOS), bertanggung jawab atas konfigurasi jaringan produk lampu pintar, serta menanyakan dan mengontrol statusnya.
aku aku aku. Platform cloud IoT berdasarkan ESP RainMaker. Untuk penyederhanaan, kami mempertimbangkan platform cloud IoT dan server bisnis secara keseluruhan dalam buku ini. Detail tentang ESP RainMaker akan diberikan di Bab 3.
Korespondensi antara struktur proyek Smart Light dan arsitektur IoT ditunjukkan pada Gambar 2.1.
Gambar 2.1. Struktur proyek lampu pintar
2.2.2 Fungsi Proyek
Dibagi menurut strukturnya, fungsi masing-masing bagian adalah sebagai berikut. Perangkat lampu pintar
· Konfigurasi dan koneksi jaringan. · Kontrol PWM LED, seperti saklar, kecerahan, suhu warna, dll. · Otomatisasi atau kontrol pemandangan, misalnya saklar waktu. · Enkripsi dan boot aman dari Flash. · Peningkatan firmware dan manajemen versi.
Bab 2. Pengenalan dan Praktek Proyek IoT 13

Aplikasi ponsel cerdas · Konfigurasi jaringan dan pengikatan perangkat. · Kontrol produk lampu pintar, seperti sakelar, kecerahan, suhu warna, dll. · Otomatisasi atau pengaturan pemandangan, misalnya, sakelar waktu. · Kontrol lokal/jarak jauh. · Registrasi pengguna, login, dll.
Platform cloud ESP RainMaker IoT · Mengaktifkan akses perangkat IoT. · Menyediakan API pengoperasian perangkat yang dapat diakses oleh aplikasi ponsel cerdas. · Peningkatan firmware dan manajemen versi.
2.2.3 Persiapan Perangkat Keras
Jika tertarik untuk mempraktikkan proyek ini, Anda juga memerlukan perangkat keras berikut: lampu pintar, ponsel cerdas, router Wi-Fi, dan komputer yang memenuhi persyaratan instalasi lingkungan pengembangan. Lampu pintar
Lampu pintar merupakan jenis bohlam baru yang bentuknya sama dengan bohlam pijar pada umumnya. Lampu pintar terdiri dari catu daya pengatur step-down kapasitor, modul nirkabel (dengan ESP32-C3 bawaan), pengontrol LED, dan matriks LED RGB. Saat dihubungkan ke listrik, tegangan 15 V DC voltagKeluaran setelah kapasitor diturunkan, rektifikasi dioda, dan regulasi memberikan energi ke pengontrol LED dan matriks LED. Pengontrol LED dapat secara otomatis mengirimkan level tinggi dan rendah pada interval tertentu, mengalihkan matriks LED RGB antara tertutup (lampu menyala) dan terbuka (lampu mati), sehingga dapat memancarkan warna cyan, kuning, hijau, ungu, biru, merah, dan cahaya putih. Modul nirkabel bertanggung jawab untuk menghubungkan ke router Wi-Fi, menerima dan melaporkan status lampu pintar, dan mengirimkan perintah untuk mengontrol LED.
Gambar 2.2. Lampu pintar yang disimulasikan
Pada awal perkembangan stage, Anda dapat menyimulasikan lampu pintar menggunakan papan ESP32-C3DevKitM-1 yang terhubung dengan LED RGB lamp manik-manik (lihat Gambar 2.2). Tapi kau harus
14 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

perhatikan bahwa ini bukan satu-satunya cara untuk merakit lampu pintar. Desain perangkat keras proyek dalam buku ini hanya berisi modul nirkabel (dengan ESP32-C3 bawaan), tetapi bukan desain perangkat keras lampu pintar yang lengkap. Selain itu, Espressif juga memproduksi papan pengembangan audio berbasis ESP32-C3 ESP32C3-Lyra untuk mengendalikan lampu dengan audio. Papan ini memiliki antarmuka untuk mikrofon dan speaker dan dapat mengontrol strip LED. Hal ini dapat digunakan untuk mengembangkan penyiar audio berperforma tinggi dan strip lampu ritme yang sangat murah. Gambar 2.3 menunjukkan papan ESP32-C3Lyra yang dihubungkan dengan strip berisi 40 lampu LED.
Gambar 2.3. ESP32-C3-Lyra dihubungkan dengan strip 40 lampu LED
Ponsel Cerdas (Android/iOS) Proyek Smart Light melibatkan pengembangan aplikasi ponsel cerdas untuk menyiapkan dan mengendalikan produk lampu pintar.
Router Wi-Fi Router Wi-Fi mengubah sinyal jaringan kabel dan sinyal jaringan seluler menjadi sinyal jaringan nirkabel, agar komputer, ponsel cerdas, tablet, dan perangkat nirkabel lainnya dapat terhubung ke jaringan. MisalnyaampMisalnya, broadband di rumah hanya perlu terhubung ke router Wi-Fi untuk mencapai jaringan nirkabel perangkat Wi-Fi. Standar protokol utama yang didukung oleh router Wi-Fi adalah IEEE 802.11n, dengan rata-rata TxRate 300 Mbps, atau maksimum 600 Mbps. Mereka kompatibel dengan IEEE 802.11b dan IEEE 802.11g. Chip ESP32-C3 dari Espressif mendukung IEEE 802.11b/g/n, sehingga Anda dapat memilih router Wi-Fi single-band (2.4 GHz) atau dual-band (2.4 GHz dan 5 GHz).
Lingkungan Pengembangan komputer (Linux/macOS/Windows) akan diperkenalkan di Bab 4. Bab 2. Pengenalan dan Praktik Proyek IoT 15

2.2.4 Proses Pengembangan
Gambar 2.4. Langkah-langkah pengembangan proyek Smart Light
Desain perangkat keras Desain perangkat keras perangkat IoT sangat penting untuk proyek IoT. Proyek lampu pintar yang lengkap dimaksudkan untuk menghasilkan alamp bekerja di bawah pasokan listrik. Produsen yang berbeda memproduksi lamps memiliki gaya dan jenis driver yang berbeda, tetapi modul nirkabelnya biasanya memiliki fungsi yang sama. Untuk menyederhanakan proses pengembangan proyek Smart Ligh, buku ini hanya mencakup desain perangkat keras dan pengembangan perangkat lunak modul nirkabel.
Konfigurasi platform cloud IoT Untuk menggunakan platform cloud IoT, Anda perlu mengonfigurasi proyek di backend, seperti membuat produk, membuat perangkat, mengatur properti perangkat, dll.
Pengembangan perangkat lunak tertanam untuk perangkat IoT Menerapkan fungsi yang diharapkan dengan ESP-IDF, SDK sisi perangkat Espressif, termasuk menghubungkan ke platform cloud IoT, mengembangkan driver LED, dan meningkatkan firmware.
Pengembangan aplikasi ponsel cerdas Kembangkan aplikasi ponsel cerdas untuk sistem Android dan iOS untuk mewujudkan registrasi dan login pengguna, kontrol perangkat, dan fungsi lainnya.
Pengoptimalan perangkat IoT Setelah pengembangan dasar fungsi perangkat IoT selesai, Anda dapat beralih ke tugas pengoptimalan, seperti pengoptimalan daya.
Pengujian produksi massal Melakukan pengujian produksi massal sesuai standar terkait, seperti uji fungsi peralatan, uji penuaan, uji RF, dll.
Terlepas dari langkah-langkah yang tercantum di atas, proyek Smart Light tidak harus mengikuti prosedur seperti itu karena tugas yang berbeda juga dapat dilakukan pada waktu yang bersamaan. Misalnyaample, perangkat lunak tertanam dan aplikasi ponsel pintar dapat dikembangkan secara paralel. Beberapa langkah mungkin juga perlu diulang, seperti optimalisasi perangkat IoT dan pengujian produksi massal.
16 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

2.3 Ringkasan
Dalam bab ini, pertama-tama kami menguraikan komponen dasar dan modul fungsional proyek IoT, kemudian memperkenalkan kasus Smart Light untuk praktik, mengacu pada struktur, fungsi, persiapan perangkat keras, dan proses pengembangannya. Pembaca dapat menarik kesimpulan dari praktik tersebut dan menjadi percaya diri untuk melaksanakan proyek IoT dengan kesalahan minimal di masa depan.
Bab 2. Pengenalan dan Praktek Proyek IoT 17

18 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Bab 3

Perkenalan

ke

Bahasa Inggris

Pembuat Hujan

Internet of Things (IoT) menawarkan kemungkinan tanpa batas untuk mengubah cara hidup manusia, namun perkembangan teknologi IoT penuh dengan tantangan. Dengan cloud publik, produsen terminal dapat mengimplementasikan fungsionalitas produk melalui solusi berikut:
Berdasarkan platform cloud penyedia solusi Dengan cara ini, produsen terminal hanya perlu merancang perangkat keras produk, kemudian menghubungkan perangkat keras ke cloud menggunakan modul komunikasi yang disediakan, dan mengonfigurasi fungsi produk mengikuti pedoman. Ini adalah pendekatan yang efisien karena menghilangkan kebutuhan pengembangan serta operasi dan pemeliharaan (O&M) di sisi server dan aplikasi. Hal ini memungkinkan produsen terminal untuk fokus pada desain perangkat keras tanpa harus mempertimbangkan implementasi cloud. Namun, solusi tersebut (misalnya, firmware perangkat dan Aplikasi) umumnya bukan open source, sehingga fungsi produk akan dibatasi oleh platform cloud penyedia yang tidak dapat disesuaikan. Sementara itu, data pengguna dan perangkat juga milik platform cloud.
Berdasarkan produk cloud Dalam solusi ini, setelah menyelesaikan desain perangkat keras, produsen terminal tidak hanya perlu mengimplementasikan fungsi cloud menggunakan satu atau lebih produk cloud yang disediakan oleh cloud publik, namun juga perlu menghubungkan perangkat keras dengan cloud. Misalnyaampmisalnya, untuk terhubung ke Amazon Web Services (AWS), produsen terminal perlu menggunakan produk AWS seperti Amazon API Gateway, AWS IoT Core, dan AWS Lambda untuk mengaktifkan akses perangkat, kendali jarak jauh, penyimpanan data, manajemen pengguna, dan fungsi dasar lainnya. Hal ini tidak hanya meminta produsen terminal untuk secara fleksibel menggunakan dan mengonfigurasi produk cloud dengan pemahaman mendalam dan pengalaman yang kaya, namun juga mengharuskan mereka mempertimbangkan biaya konstruksi dan pemeliharaan untuk tahap awal dan selanjutnya.tages Hal ini menimbulkan tantangan besar terhadap energi dan sumber daya perusahaan.
Dibandingkan dengan cloud publik, cloud pribadi biasanya dibuat untuk proyek dan produk tertentu. Pengembang cloud swasta diberikan kebebasan tingkat tertinggi dalam desain protokol dan implementasi logika bisnis. Produsen terminal dapat membuat produk dan merancang skema sesuka hati, serta dengan mudah mengintegrasikan dan memberdayakan data pengguna. Menggabungkan keamanan tinggi, skalabilitas, dan keandalan cloud publik dengan advantages dari private cloud, Espressif meluncurkan ESP
19

RainMaker, solusi cloud pribadi yang terintegrasi secara mendalam berdasarkan cloud Amazon. Pengguna dapat menerapkan ESP RainMaker dan membangun cloud pribadi hanya dengan akun AWS.
3.1 Apa itu ESP RainMaker?
ESP RainMaker adalah platform AIoT lengkap yang dibangun dengan beberapa produk AWS yang matang. Ini menyediakan berbagai layanan yang diperlukan untuk produksi massal seperti akses cloud perangkat, peningkatan perangkat, manajemen backend, login pihak ketiga, integrasi suara, dan manajemen pengguna. Dengan menggunakan Serverless Application Repository (SAR) yang disediakan oleh AWS, produsen terminal dapat dengan cepat menerapkan ESP RainMaker ke akun AWS mereka, yang hemat waktu dan mudah dioperasikan. Dikelola dan dipelihara oleh Espressif, SAR yang digunakan oleh ESP RainMaker membantu pengembang mengurangi biaya pemeliharaan cloud dan mempercepat pengembangan produk AIoT, sehingga membangun solusi AIoT yang aman, stabil, dan dapat disesuaikan. Gambar 3.1 menunjukkan arsitektur ESP RainMaker.
Gambar 3.1. Arsitektur ESP RainMaker
Server publik ESP RainMaker dari Espressif gratis untuk semua penggemar, pembuat, dan pendidik ESP untuk evaluasi solusi. Pengembang dapat masuk dengan akun Apple, Google, atau GitHub, dan dengan cepat membuat prototipe aplikasi IoT mereka sendiri. Server publik mengintegrasikan Alexa dan Google Home, dan menyediakan layanan kontrol suara, yang didukung oleh Alexa Skill dan Google Actions. Fungsi pengenalan semantiknya juga didukung oleh pihak ketiga. Perangkat RainMaker IoT hanya merespons tindakan tertentu. Untuk daftar lengkap perintah suara yang didukung, silakan periksa platform pihak ketiga. Selain itu, Espressif menawarkan Aplikasi RainMaker publik bagi pengguna untuk mengontrol produk melalui ponsel pintar. 20 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

3.2 Penerapan ESP RainMaker
Seperti yang ditunjukkan pada Gambar 3.2, ESP RainMaker terdiri dari empat bagian: · Layanan Klaim, memungkinkan perangkat RainMaker memperoleh sertifikat secara dinamis. · RainMaker Cloud (juga dikenal sebagai cloud backend), menyediakan layanan seperti pemfilteran pesan, manajemen pengguna, penyimpanan data, dan integrasi pihak ketiga. · Agen RainMaker, memungkinkan perangkat RainMaker terhubung ke RainMaker Cloud. · Klien RainMaker (Aplikasi RainMaker atau skrip CLI), untuk penyediaan, pembuatan pengguna, asosiasi dan kontrol perangkat, dll.
Gambar 3.2. Struktur ESP RainMaker
ESP RainMaker menyediakan seperangkat alat lengkap untuk pengembangan produk dan produksi massal, termasuk: RainMaker SDK
RainMaker SDK didasarkan pada ESP-IDF dan menyediakan kode sumber agen sisi perangkat dan API C terkait untuk pengembangan firmware. Pengembang hanya perlu menulis logika aplikasi dan menyerahkan sisanya ke kerangka RainMaker. Untuk informasi lebih lanjut tentang C API, silakan kunjungi https://bookc3.espressif.com/rm/c-api-reference. Aplikasi RainMaker Versi publik Aplikasi RainMaker memungkinkan pengembang menyelesaikan penyediaan perangkat, serta mengontrol dan menanyakan status perangkat (misalnya, produk pencahayaan cerdas). Ini tersedia di toko aplikasi iOS dan Android. Untuk lebih jelasnya, lihat Bab 10. REST API REST API membantu pengguna membangun aplikasi mereka sendiri yang serupa dengan Aplikasi RainMaker. Untuk informasi lebih lanjut, silakan kunjungi https://swaggerapis.rainmaker.espressif.com/.
Bab 3. Pengantar ESP RainMaker 21

API Python CLI berbasis Python, yang dilengkapi dengan RainMaker SDK, disediakan untuk mengimplementasikan semua fungsi yang mirip dengan fitur ponsel cerdas. Untuk informasi selengkapnya tentang API Python, silakan kunjungi https://bookc3.espressif.com/rm/python-api-reference.
Admin CLI Admin CLI, dengan tingkat akses yang lebih tinggi, disediakan untuk penerapan pribadi ESP RainMaker guna menghasilkan sertifikat perangkat secara massal.
3.2.1 Layanan Klaim
Semua komunikasi antara perangkat RainMaker dan backend cloud dilakukan melalui MQTT+TLS. Dalam konteks ESP RainMaker, “Klaim” adalah proses di mana perangkat memperoleh sertifikat dari Layanan Klaim untuk terhubung ke backend cloud. Perhatikan bahwa Layanan Klaim hanya berlaku untuk layanan RainMaker publik, sedangkan untuk penerapan pribadi, sertifikat perangkat perlu dibuat secara massal melalui Admin CLI. ESP RainMaker mendukung tiga jenis Layanan Klaim: Klaim Mandiri
Perangkat itu sendiri mengambil sertifikat melalui kunci rahasia yang telah diprogram di eFuse setelah tersambung ke Internet. Klaim Berbasis Host Sertifikat diperoleh dari host pengembangan dengan akun RainMaker. Klaim Terbantu Sertifikat diperoleh melalui aplikasi smartphone selama penyediaan.
3.2.2 Agen RainMaker
Gambar 3.3. Struktur SDK RainMaker Fungsi utama Agen RainMaker adalah menyediakan konektivitas dan membantu lapisan aplikasi untuk memproses data cloud uplink/downlink. Itu dibangun melalui Petualangan Nirkabel RainMaker SDK 22 ESP32-C3: Panduan Komprehensif untuk IoT

dan dikembangkan berdasarkan kerangka kerja ESP-IDF yang telah terbukti, menggunakan komponen ESP-IDF seperti RTOS, NVS, dan MQTT. Gambar 3.3 menunjukkan struktur RainMaker SDK.
RainMaker SDK mencakup dua fitur utama.
Koneksi
Saya. Bekerja sama dengan Claiming Service untuk mendapatkan sertifikat perangkat.
ii. Menghubungkan ke backend cloud menggunakan protokol MQTT yang aman untuk menyediakan konektivitas jarak jauh dan menerapkan kendali jarak jauh, pelaporan pesan, manajemen pengguna, manajemen perangkat, dll. Ini menggunakan komponen MQTT di ESP-IDF secara default dan menyediakan lapisan abstraksi untuk berinteraksi dengan yang lain tumpukan protokol.
aku aku aku. Menyediakan komponen penyediaan wifi untuk koneksi dan penyediaan Wi-Fi, komponen esp https ota untuk peningkatan OTA, dan komponen esp ctrl lokal untuk penemuan dan koneksi perangkat lokal. Semua tujuan ini dapat dicapai melalui konfigurasi sederhana.
Pengolahan data
Saya. Menyimpan sertifikat perangkat yang dikeluarkan oleh Claiming Service dan data yang diperlukan saat menjalankan RainMaker, secara default menggunakan antarmuka yang disediakan oleh komponen nvs flash, dan menyediakan API bagi pengembang untuk digunakan langsung.
ii. Menggunakan mekanisme callback untuk memproses data cloud uplink/downlink dan secara otomatis membuka blokir data ke lapisan aplikasi untuk memudahkan pemrosesan oleh pengembang. Misalnyaampmisalnya, RainMaker SDK menyediakan antarmuka yang kaya untuk membuat data TSL (Thing Spesification Language), yang diperlukan untuk menentukan model TSL guna mendeskripsikan perangkat IoT dan mengimplementasikan fungsi seperti pengaturan waktu, hitungan mundur, dan kontrol suara. Untuk fitur interaktif dasar seperti pengaturan waktu, RainMaker SDK menyediakan solusi bebas pengembangan yang dapat diaktifkan dengan mudah bila diperlukan. Kemudian, Agen RainMaker akan langsung memproses data, mengirimkannya ke cloud melalui topik MQTT terkait, dan memberikan umpan balik terhadap perubahan data di backend cloud melalui mekanisme panggilan balik.
3.2.3 Ujung Belakang Awan
Backend cloud dibangun di AWS Serverless Computing dan dicapai melalui AWS Cognito (sistem manajemen identitas), Amazon API Gateway, AWS Lambda (layanan komputasi tanpa server), Amazon DynamoDB (database NoSQL), AWS IoT Core (inti akses IoT yang menyediakan akses MQTT dan pemfilteran aturan), Amazon Simple Email Service (layanan email sederhana SES), Amazon CloudFront (jaringan pengiriman cepat), Amazon Simple Queue Service (antrian pesan SQS), dan Amazon S3 (layanan penyimpanan bucket). Hal ini bertujuan untuk mengoptimalkan skalabilitas dan keamanan. Dengan ESP RainMaker, pengembang dapat mengelola perangkat tanpa harus menulis kode di cloud. Pesan yang dilaporkan oleh perangkat dikirimkan secara transparan
Bab 3. Pengantar ESP RainMaker 23

klien aplikasi atau layanan pihak ketiga lainnya. Tabel 3.1 menunjukkan produk dan fungsi cloud AWS yang digunakan di backend cloud, dengan lebih banyak produk dan fitur yang sedang dikembangkan.
Tabel 3.1. Produk dan fungsi cloud AWS yang digunakan oleh backend cloud

Produk AWS Cloud yang Digunakan oleh RainMaker

Fungsi

AWS Kognito

Mengelola kredensial pengguna dan mendukung login pihak ketiga

Bahasa Indonesia: AWS Lambda

Menerapkan logika bisnis inti dari backend cloud

Amazon Timestream Menyimpan data deret waktu

Amazon DynamoDB Menyimpan informasi pribadi pelanggan

Inti IoT AWS

Mendukung komunikasi MQTT

Amazon SES

Menyediakan layanan pengiriman email

Amazon CloudFront Mempercepat pengelolaan backend webakses situs

Amazon.com: Layanan Pelanggan Amazon.com

Meneruskan pesan dari AWS IoT Core

3.2.4 Klien RainMaker
Klien RainMaker, seperti App dan CLI, berkomunikasi dengan backend cloud melalui REST API. Informasi dan instruksi mendetail tentang REST API dapat ditemukan di dokumentasi Swagger yang disediakan oleh Espressif. Klien aplikasi seluler RainMaker tersedia untuk sistem iOS dan Android. Hal ini memungkinkan penyediaan, kontrol, dan berbagi perangkat, serta membuat dan mengaktifkan tugas hitung mundur dan menghubungkan ke platform pihak ketiga. Itu dapat secara otomatis memuat UI dan ikon sesuai dengan konfigurasi yang dilaporkan oleh perangkat dan menampilkan TSL perangkat sepenuhnya.
Misalnyaampmisalnya, jika lampu pintar dibuat pada contoh yang disediakan RainMaker SDKamples, ikon dan UI lampu bohlam akan dimuat secara otomatis saat penyediaan selesai. Pengguna dapat mengubah warna dan kecerahan cahaya melalui antarmuka dan mendapatkan kontrol pihak ketiga dengan menghubungkan Alexa Smart Home Skill atau Google Smart Home Actions ke akun ESP RainMaker mereka. Gambar 3.4 menunjukkan icon dan UI exampfile bohlam masing-masing di Alexa, Google Home, dan Aplikasi ESP RainMaker.

24 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

(a) Kelample – Alexa

(b) Kelample – Beranda Google

(c) Kelample – Pembuat Hujan ESP
Gambar 3.4. Contohampfile ikon dan UI lampu bohlam di Alexa, Google Home, dan Aplikasi ESP RainMaker
3.3 Latihan: Poin Penting untuk Pengembangan dengan ESP RainMaker
Setelah lapisan driver perangkat selesai, pengembang dapat mulai membuat model TSL dan memproses data downlink menggunakan API yang disediakan oleh RainMaker SDK, dan mengaktifkan layanan dasar ESP RainMaker berdasarkan definisi dan persyaratan produk.
Bab 3. Pengantar ESP RainMaker 25

Bagian 9.4 buku ini akan menjelaskan penerapan lampu pintar LED di RainMaker. Selama proses debug, pengembang dapat menggunakan alat CLI di RainMaker SDK untuk berkomunikasi dengan lampu pintar (atau memanggil REST API dari Swagger).
Bab 10 akan menguraikan penggunaan REST API dalam mengembangkan aplikasi ponsel pintar. Peningkatan OTA pada lampu pintar LED akan dibahas di Bab 11. Jika pengembang telah mengaktifkan pemantauan jarak jauh ESP Insights, backend manajemen ESP RainMaker akan menampilkan data ESP Insights. Detailnya akan disajikan pada Bab 15.
ESP RainMaker mendukung penerapan pribadi, yang berbeda dari server RainMaker publik dalam hal berikut:
Layanan Klaim Untuk menghasilkan sertifikat dalam penerapan pribadi, Anda harus menggunakan CLI Admin RainMaker, bukan Klaim. Dengan server publik, pengembang harus diberikan hak admin untuk mengimplementasikan peningkatan firmware, namun hal ini tidak diinginkan dalam penerapan komersial. Oleh karena itu, tidak ada layanan autentikasi terpisah yang dapat diberikan untuk klaim mandiri, maupun hak admin untuk klaim yang digerakkan oleh host atau yang dibantu.
Aplikasi telepon Dalam penerapan pribadi, aplikasi perlu dikonfigurasi dan dikompilasi secara terpisah untuk memastikan bahwa sistem akun tidak dapat dioperasikan.
Login pihak ketiga dan integrasi suara Pengembang harus mengonfigurasi secara terpisah melalui akun Pengembang Google dan Apple untuk mengaktifkan login pihak ketiga, serta integrasi Alexa Skill dan Google Voice Assistant.
TIPS Untuk detail tentang penerapan cloud, silakan kunjungi https://customer.rainmaker.espressif. com. Dalam hal firmware, migrasi dari server publik ke server pribadi hanya memerlukan penggantian sertifikat perangkat, yang sangat meningkatkan efisiensi migrasi dan mengurangi biaya migrasi dan debugging sekunder.
3.4 Fitur ESP RainMaker
Fitur ESP RainMaker terutama ditargetkan pada tiga aspek – manajemen pengguna, pengguna akhir, dan admin. Semua fitur didukung di server publik dan pribadi kecuali dinyatakan lain.
3.4.1 Manajemen Pengguna
Fitur manajemen pengguna memungkinkan pengguna akhir untuk mendaftar, masuk, mengubah kata sandi, mengambil kata sandi, dll.
26 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Daftar dan masuk Metode registrasi dan login yang didukung oleh RainMaker meliputi: · ID email + Kata Sandi · Nomor telepon + Kata Sandi · Akun Google · Akun Apple · Akun GitHub (hanya server publik) · Akun Amazon (hanya server pribadi)
CATATAN Mendaftar menggunakan Google/Amazon membagikan alamat email pengguna dengan RainMaker. Mendaftar menggunakan Apple membagikan alamat tiruan yang diberikan Apple kepada pengguna khusus untuk layanan RainMaker. Akun RainMaker akan dibuat secara otomatis untuk pengguna yang masuk dengan akun Google, Apple, atau Amazon untuk pertama kalinya.
Ubah kata sandi Hanya berlaku untuk login berbasis ID Email/Nomor Telepon. Semua sesi aktif lainnya akan keluar setelah kata sandi diubah. Sesuai dengan perilaku AWS Cognito, sesi logout dapat tetap aktif hingga 1 jam.
Ambil kata sandi Hanya berlaku untuk login berbasis ID Email/Nomor Telepon.
3.4.2 Fitur Pengguna Akhir
Fitur yang terbuka untuk pengguna akhir mencakup kendali dan pemantauan lokal dan jarak jauh, penjadwalan, pengelompokan perangkat, berbagi perangkat, pemberitahuan push, dan integrasi pihak ketiga.
Kontrol dan pemantauan jarak jauh · Konfigurasi kueri, nilai parameter, dan status koneksi untuk satu atau semua perangkat. · Tetapkan parameter untuk satu atau beberapa perangkat.
Kontrol dan pemantauan lokal Ponsel dan perangkat harus terhubung ke jaringan yang sama untuk kontrol lokal.
Penjadwalan · Pengguna telah mengatur tindakan tertentu pada waktu tertentu. · Tidak diperlukan koneksi Internet untuk perangkat saat menjalankan jadwal. · Satu kali atau berulang (dengan menentukan hari) untuk satu atau beberapa perangkat.
Pengelompokan perangkat Mendukung pengelompokan abstrak multi-level Metadata grup dapat digunakan untuk membuat struktur Ruang Rumah.
Bab 3. Pengantar ESP RainMaker 27

Berbagi perangkat Satu atau lebih perangkat dapat dibagikan dengan satu atau lebih pengguna.
Pemberitahuan push Pengguna akhir akan menerima pemberitahuan push untuk acara seperti · Perangkat baru ditambahkan/dihapus · Perangkat terhubung ke cloud · Perangkat terputus dari cloud · Permintaan berbagi perangkat dibuat/diterima/ditolak · Pesan peringatan dilaporkan oleh perangkat
Integrasi pihak ketiga Alexa dan Google Voice Assistant didukung untuk mengontrol perangkat RainMaker, termasuk lampu, sakelar, soket, kipas, dan sensor suhu.
3.4.3 Fitur Admin
Fitur Admin memungkinkan administrator untuk menerapkan pendaftaran perangkat, pengelompokan perangkat, dan peningkatan OTA, dan sebagainya view statistik dan data ESP Insights.
Registrasi perangkat Hasilkan sertifikat perangkat dan daftar dengan Admin CLI (hanya server pribadi).
Pengelompokan perangkat Membuat grup abstrak atau terstruktur berdasarkan informasi perangkat (hanya server pribadi).
Peningkatan Over-the-Air (OTA) Unggah firmware berdasarkan versi dan model, ke satu atau beberapa perangkat atau grup Pantau, batalkan, atau arsipkan pekerjaan OTA.
View Statistik ViewStatistik yang dapat digunakan meliputi: · Pendaftaran perangkat (sertifikat didaftarkan oleh admin) · Aktivasi perangkat (perangkat terhubung untuk pertama kali) · Akun pengguna · Asosiasi pengguna-perangkat
View Data Wawasan ESP ViewData ESP Insights yang dapat digunakan meliputi: · Kesalahan, peringatan, dan log khusus · Laporan dan analisis kerusakan · Alasan reboot · Metrik seperti penggunaan memori, RSSI, dll. · Metrik dan variabel khusus
28 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

3.5 Ringkasan
Dalam bab ini, kami memperkenalkan beberapa perbedaan utama antara penerapan RainMaker publik dan penerapan pribadi. Solusi ESP RainMaker pribadi yang diluncurkan oleh Espressif sangat andal dan dapat diperluas. Semua chip seri ESP32 telah terhubung dan disesuaikan dengan AWS, sehingga sangat mengurangi biaya. Pengembang dapat fokus pada verifikasi prototipe tanpa harus mempelajari produk cloud AWS. Kami juga menjelaskan implementasi dan fitur ESP RainMaker, serta beberapa poin penting untuk pengembangan menggunakan platform tersebut.
Pindai untuk mengunduh ESP RainMaker untuk Android Pindai untuk mengunduh ESP RainMaker untuk iOS
Bab 3. Pengantar ESP RainMaker 29

30 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Bab Menyiapkan 4 Lingkungan Pengembangan
Bab ini berfokus pada ESP-IDF, kerangka pengembangan perangkat lunak resmi untuk ESP32-C3. Kami akan menjelaskan cara menyiapkan lingkungan di berbagai sistem operasi, dan memperkenalkan struktur proyek dan sistem pembangunan ESP-IDF, serta penggunaan alat pengembangan terkait. Kemudian kami akan menyajikan proses kompilasi dan menjalankan sebuah example proyek, sambil menawarkan penjelasan rinci tentang log keluaran di setiap detiktage.
4.1 ESP-IDF Berakhirview
ESP-IDF (Espressif IoT Development Framework) adalah kerangka pengembangan IoT terpadu yang disediakan oleh Espressif Technology. Ia menggunakan C/C++ sebagai bahasa pengembangan utama dan mendukung kompilasi silang di bawah sistem operasi mainstream seperti Linux, Mac, dan Windows. Sang mantanample program yang disertakan dalam buku ini dikembangkan menggunakan ESP-IDF, yang menawarkan fitur-fitur berikut: · Driver tingkat sistem SoC. ESP-IDF menyertakan driver untuk ESP32, ESP32-S2, ESP32-C3,
dan chip lainnya. Driver ini mencakup perpustakaan periferal tingkat rendah (LL), perpustakaan lapisan abstraksi perangkat keras (HAL), dukungan RTOS dan perangkat lunak driver lapisan atas, dll. · Komponen penting. ESP-IDF menggabungkan komponen mendasar yang diperlukan untuk pengembangan IoT. Ini mencakup beberapa tumpukan protokol jaringan seperti HTTP dan MQTT, kerangka manajemen daya dengan modulasi frekuensi dinamis, dan fitur seperti Enkripsi Flash dan Boot Aman, dll. · Alat pengembangan dan produksi. ESP-IDF menyediakan alat yang umum digunakan untuk membangun, mem-flash, dan debugging selama pengembangan dan produksi massal (lihat Gambar 4.1), seperti sistem bangunan berdasarkan CMake, rantai alat kompilasi silang berdasarkan GCC, dan JTAG alat debugging berdasarkan OpenOCD, dll. Perlu dicatat bahwa kode ESP-IDF terutama mematuhi lisensi sumber terbuka Apache 2.0. Pengguna dapat mengembangkan perangkat lunak pribadi atau komersial tanpa batasan dengan tetap mematuhi ketentuan lisensi sumber terbuka. Selain itu, pengguna diberikan lisensi paten permanen secara gratis, tanpa kewajiban untuk membuat modifikasi apa pun pada kode sumber menjadi sumber terbuka.
31

Gambar 4.1.

Membangun, mem-flash, dan men-debug-

membuat alat untuk pengembangan dan produksi massal

4.1.1 Versi ESP-IDF
Kode ESP-IDF dihosting di GitHub sebagai proyek sumber terbuka. Saat ini, ada tiga versi utama yang tersedia: v3, v4, dan v5. Setiap versi mayor biasanya berisi berbagai subversi, seperti v4.2, v4.3, dan seterusnya. Espressif Systems memastikan dukungan 30 bulan untuk perbaikan bug dan patch keamanan untuk setiap sub-versi yang dirilis. Oleh karena itu, revisi subversi juga dirilis secara berkala, seperti v4.3.1, v4.2.2, dll. Tabel 4.1 menunjukkan status dukungan versi ESP-IDF yang berbeda untuk chip Espressif, yang menunjukkan apakah versi tersebut berada dalam versi praview stage (menawarkan dukungan untuk praview versi, yang mungkin tidak memiliki fitur atau dokumentasi tertentu) atau didukung secara resmi.

Tabel 4.1. Status dukungan versi ESP-IDF yang berbeda untuk chip Espressif

Seri ESP32 ESP32-S2 ESP32-C3 ESP32-S3 ESP32-C2 ESP32-H2

v4.1 didukung

v4.2 didukung didukung

v4.3 didukung didukung didukung

v4.4 didukung didukung didukung didukung
praview

v5.0 didukung didukung didukung didukung didukung praview

32 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Iterasi versi utama sering kali melibatkan penyesuaian pada struktur kerangka kerja dan pembaruan pada sistem kompilasi. MisalnyaampMisalnya, perubahan besar dari v3.* ke v4.* adalah migrasi bertahap sistem build dari Make ke CMake. Di sisi lain, iterasi versi minor biasanya memerlukan penambahan fitur baru atau dukungan untuk chip baru.
Penting untuk membedakan dan memahami hubungan antara versi stabil dan cabang GitHub. Versi berlabel v*.* atau v*.*.* mewakili versi stabil yang telah lulus pengujian internal lengkap oleh Espressif. Setelah diperbaiki, kode, rangkaian alat, dan dokumen rilis untuk versi yang sama tetap tidak berubah. Namun, cabang GitHub (misalnya, cabang rilis/v4.3) sering mengalami penerapan kode, seringkali setiap hari. Oleh karena itu, dua cuplikan kode di cabang yang sama mungkin berbeda, sehingga mengharuskan pengembang untuk segera memperbarui kode mereka.
4.1.2 Alur Kerja Git ESP-IDF
Espressif mengikuti alur kerja Git khusus untuk ESP-IDF, yang diuraikan sebagai berikut:
· Perubahan baru dilakukan pada cabang master, yang berfungsi sebagai cabang pengembangan utama. Versi ESP-IDF di cabang master selalu membawa -dev tag untuk menunjukkan bahwa ini sedang dalam pengembangan, seperti v4.3-dev. Perubahan pada cabang master pertama-tama akan dilakukan kembaliviewdiedit dan diuji di repositori internal Espressif, lalu dikirim ke GitHub setelah pengujian otomatis selesai.
· Setelah versi baru menyelesaikan pengembangan fitur pada cabang master dan memenuhi kriteria untuk memasuki pengujian beta, versi tersebut akan bertransisi ke cabang baru, seperti rilis/v4.3. Selain itu, cabang baru ini tagdibuat sebagai versi pra-rilis, seperti v4.3-beta1. Pengembang dapat merujuk ke platform GitHub untuk mengakses daftar lengkap cabang dan tags untuk ESP-IDF. Penting untuk diperhatikan bahwa versi beta (versi pra-rilis) mungkin masih memiliki sejumlah besar masalah umum. Saat versi beta menjalani pengujian berkelanjutan, perbaikan bug ditambahkan ke versi ini dan cabang master secara bersamaan. Sementara itu, cabang master mungkin sudah mulai mengembangkan fitur baru untuk versi berikutnya. Ketika pengujian hampir selesai, label kandidat rilis (rc) ditambahkan ke cabang, yang menunjukkan bahwa cabang tersebut merupakan kandidat potensial untuk rilis resmi, seperti v4.3-rc1. Pada hal initage, cabang tetap merupakan versi pra-rilis.
· Jika tidak ada bug besar yang ditemukan atau dilaporkan, versi pra-rilis pada akhirnya menerima label versi mayor (misalnya v5.0) atau label versi minor (misalnya v4.3) dan menjadi versi rilis resmi, yang didokumentasikan di halaman catatan rilis. Selanjutnya, setiap bug yang diidentifikasi dalam versi ini diperbaiki pada cabang rilis. Setelah pengujian manual selesai, cabang diberi label versi perbaikan bug (misalnya, v4.3.2), yang juga tercermin pada halaman catatan rilis.
Bab 4. Menyiapkan Lingkungan Pembangunan 33

4.1.3 Memilih Versi yang Sesuai
Karena ESP-IDF secara resmi mulai mendukung ESP32-C3 dari versi v4.3, dan v4.4 belum dirilis secara resmi pada saat buku ini ditulis, maka versi yang digunakan dalam buku ini adalah v4.3.2, yang merupakan versi revisi dari v4.3. Namun, penting untuk dicatat bahwa pada saat Anda membaca buku ini, versi v4.4 atau yang lebih baru mungkin sudah tersedia. Saat memilih versi, kami merekomendasikan hal berikut:
· Untuk pengembang tingkat pemula, disarankan untuk memilih versi stabil v4.3 atau versi revisinya, yang selaras dengan versi sebelumnyaampversi le yang digunakan dalam buku ini.
· Untuk tujuan produksi massal, disarankan untuk menggunakan versi stabil terbaru untuk mendapatkan manfaat dari dukungan teknis terkini.
· Jika Anda ingin bereksperimen dengan chip baru atau menjelajahi fitur produk baru, silakan gunakan cabang master. Versi terbaru berisi semua fitur terbaru, namun perlu diingat bahwa mungkin ada bug yang diketahui atau tidak diketahui.
· Jika versi stabil yang digunakan tidak menyertakan fitur baru yang diinginkan dan Anda ingin meminimalkan risiko yang terkait dengan cabang master, pertimbangkan untuk menggunakan cabang rilis yang sesuai, seperti cabang rilis/v4.4. Repositori GitHub Espressif pertama-tama akan membuat cabang rilis/v4.4 dan selanjutnya merilis versi stabil v4.4 berdasarkan cuplikan riwayat spesifik dari cabang ini, setelah menyelesaikan semua pengembangan dan pengujian fitur.
4.1.4 Lebih dariview Direktori SDK ESP-IDF
ESP-IDF SDK terdiri dari dua direktori utama: esp-idf dan .espressif. Yang pertama berisi kode sumber repositori ESP-IDF files dan skrip kompilasi, sedangkan skrip kompilasi terutama menyimpan rantai alat kompilasi dan perangkat lunak lainnya. Keakraban dengan kedua direktori ini akan membantu pengembang memanfaatkan sumber daya yang tersedia dengan lebih baik dan mempercepat proses pengembangan. Struktur direktori ESP-IDF dijelaskan di bawah ini:
(1) Direktori kode repositori ESP-IDF (/esp/esp-idf), seperti yang ditunjukkan pada Gambar 4.2.
A. Komponen direktori komponen
Direktori inti ini mengintegrasikan berbagai komponen perangkat lunak penting ESP-IDF. Tidak ada kode proyek yang dapat dikompilasi tanpa bergantung pada komponen dalam direktori ini. Ini mencakup dukungan driver untuk berbagai chip Espressif. Dari perpustakaan LL dan antarmuka perpustakaan HAL untuk periferal hingga Driver dan Virtual tingkat atas File Dukungan lapisan Sistem (VFS), pengembang dapat memilih komponen yang sesuai pada tingkat berbeda untuk kebutuhan pengembangan mereka. ESP-IDF juga mendukung beberapa tumpukan protokol jaringan standar seperti TCP/IP, HTTP, MQTT, WebSocket, dll. Pengembang dapat memanfaatkan antarmuka yang sudah dikenal seperti Socket untuk membangun aplikasi jaringan. Komponen memberikan pemahaman
34 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Gambar 4.2. Direktori kode repositori ESP-IDF
fungsionalitas yang luas dan dapat dengan mudah diintegrasikan ke dalam aplikasi, memungkinkan pengembang untuk fokus hanya pada logika bisnis. Beberapa komponen umum meliputi: · driver: Komponen ini berisi program driver periferal untuk berbagai Espressif
seri chip, seperti GPIO, I2C, SPI, UART, LEDC (PWM), dll. Program driver periferal dalam komponen ini menawarkan antarmuka abstrak yang tidak bergantung pada chip. Setiap periferal memiliki header yang sama file (seperti gpio.h), menghilangkan kebutuhan untuk menangani berbagai pertanyaan dukungan khusus chip. · esp_wifi: Wi-Fi, sebagai perangkat khusus, diperlakukan sebagai komponen terpisah. Ini mencakup beberapa API seperti inisialisasi berbagai mode driver Wi-Fi, konfigurasi parameter, dan pemrosesan peristiwa. Fungsi tertentu dari komponen ini disediakan dalam bentuk perpustakaan tautan statis. ESP-IDF juga menyediakan dokumentasi driver yang komprehensif untuk kemudahan penggunaan.
Bab 4. Menyiapkan Lingkungan Pembangunan 35

· freertos: Komponen ini berisi kode FreeRTOS lengkap. Selain memberikan dukungan komprehensif untuk sistem operasi ini, Espressif juga memperluas dukungannya ke chip dual-core. Untuk chip dual-core seperti ESP32 dan ESP32-S3, pengguna dapat membuat tugas pada core tertentu.
B. Dokumen direktori dokumen
Direktori ini berisi dokumen pengembangan terkait ESP-IDF, termasuk Panduan Memulai, Manual Referensi API, Panduan Pengembangan, dll.
CATATAN Setelah dikompilasi oleh alat otomatis, konten direktori ini disebarkan di https://docs.espressif.com/projects/esp-idf. Harap pastikan untuk mengalihkan target dokumen ke ESP32-C3 dan memilih versi ESP-IDF yang ditentukan.
C. Alat alat skrip
Direktori ini berisi alat kompilasi front-end yang umum digunakan seperti idf.py, dan alat terminal monitor idf_monitor.py, dll. Sub-direktori cmake juga berisi skrip inti files dari sistem kompilasi, yang berfungsi sebagai landasan untuk menerapkan aturan kompilasi ESP-IDF. Saat menambahkan variabel lingkungan, konten dalam direktori alat ditambahkan ke variabel lingkungan sistem, memungkinkan idf.py dieksekusi langsung di bawah jalur proyek.
D. Mantanample direktori program exampsedikit
Direktori ini terdiri dari banyak koleksi ESP-IDF example program yang mendemonstrasikan penggunaan komponen API. Sang mantanample disusun ke dalam berbagai subdirektori berdasarkan kategorinya:
· memulai: Sub-direktori ini mencakup ex tingkat pemulaampfile seperti “hello world” dan “blink” untuk membantu pengguna memahami dasar-dasarnya.
· bluetooth: Anda dapat menemukan ex terkait Bluetoothampfile di sini, termasuk Bluetooth LE Mesh, Bluetooth LE HID, BluFi, dan banyak lagi.
· wifi: Sub-direktori ini berfokus pada Wi-Fi exampfile, termasuk program dasar seperti Wi-Fi SoftAP, Wi-Fi Station, espnow, serta protokol komunikasi berpemilik misalnyaamples dari Espressif. Ini juga mencakup beberapa lapisan aplikasi misampfile berbasis Wi-Fi, seperti Iperf, Sniffer, dan Smart Config.
· periferal: Subdirektori ekstensif ini dibagi lagi menjadi beberapa subfolder berdasarkan nama periferal. Ini terutama berisi driver periferal examples untuk chip Espressif, dengan masing-masing example menampilkan beberapa sub-examples. Misalnya, subdirektori gpio menyertakan dua exampfile: keyboard matriks GPIO dan GPIO. Penting untuk dicatat bahwa tidak semua mantanampfile dalam direktori ini berlaku untuk ESP32-C3.
36 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Misalnyaample, mantanampfile di usb/host hanya berlaku untuk periferal dengan perangkat keras Host USB (seperti ESP32-S3), dan ESP32-C3 tidak memiliki periferal ini. Sistem kompilasi biasanya memberikan petunjuk saat menetapkan target. README file dari masing-masing mantanample mencantumkan chip yang didukung. · protokol: Sub-direktori ini berisi exampfile untuk berbagai protokol komunikasi, termasuk MQTT, HTTP, HTTP Server, PPPoS, Modbus, mDNS, SNTP, mencakup berbagai protokol komunikasi, misalnyaamples yang diperlukan untuk pengembangan IoT. · penyediaan: Di sini, Anda akan menemukan penyediaan exampfile untuk metode berbeda, seperti penyediaan Wi-Fi dan penyediaan Bluetooth LE. · sistem: Sub-direktori ini mencakup debugging sistem, misampfile (misalnya, penelusuran tumpukan, penelusuran waktu proses, pemantauan tugas), manajemen daya, misalnyaamples (misalnya, berbagai mode tidur, co-prosesor), dan misampfile yang terkait dengan komponen sistem umum seperti terminal konsol, loop peristiwa, dan pengatur waktu sistem. · Penyimpanan: Dalam sub-direktori ini, Anda akan menemukan exampsemua file sistem dan mekanisme penyimpanan yang didukung oleh ESP-IDF (seperti membaca dan menulis Flash, kartu SD, dan media penyimpanan lainnya), serta exampfile penyimpanan non-volatile (NVS), FatFS, SPIFFS dan lainnya file operasi sistem. · keamanan: Sub-direktori ini berisi exampfile yang terkait dengan enkripsi flash. (2) Direktori rantai alat kompilasi ESP-IDF (/.espressif), seperti yang ditunjukkan pada Gambar 4.3.
Gambar 4.3. Direktori rantai alat kompilasi ESP-IDF
Bab 4. Menyiapkan Lingkungan Pembangunan 37

A. Direktori distribusi perangkat lunak
Rantai alat ESP-IDF dan perangkat lunak lainnya didistribusikan dalam bentuk paket terkompresi. Selama proses instalasi, alat instalasi pertama-tama mengunduh paket terkompresi ke direktori dist, lalu mengekstraknya ke direktori yang ditentukan. Setelah instalasi selesai, isi direktori ini dapat dihapus dengan aman.
B. Direktori lingkungan virtual python python env
Versi ESP-IDF yang berbeda bergantung pada versi paket Python tertentu. Menginstal paket-paket ini secara langsung pada host yang sama dapat menyebabkan konflik antar versi paket. Untuk mengatasi hal ini, ESP-IDF menggunakan lingkungan virtual Python untuk mengisolasi versi paket yang berbeda. Dengan mekanisme ini, pengembang dapat menginstal beberapa versi ESP-IDF pada host yang sama dan dengan mudah beralih di antara versi tersebut dengan mengimpor variabel lingkungan yang berbeda.
C. Alat direktori rantai alat kompilasi ESP-IDF
Direktori ini terutama berisi alat kompilasi silang yang diperlukan untuk mengkompilasi proyek ESP-IDF, seperti alat CMake, alat build Ninja, dan rantai alat gcc yang menghasilkan program akhir yang dapat dieksekusi. Selain itu, direktori ini menampung perpustakaan standar bahasa C/C++ bersama dengan header yang sesuai fileS. Jika suatu program mereferensikan header sistem file seperti #sertakan , rantai alat kompilasi akan menemukan stdio.h file dalam direktori ini.
4.2 Menyiapkan Lingkungan Pengembangan ESP-IDF
Lingkungan pengembangan ESP-IDF mendukung sistem operasi mainstream seperti Windows, Linux, dan macOS. Bagian ini akan memperkenalkan cara menyiapkan lingkungan pengembangan pada setiap sistem. Disarankan untuk mengembangkan ESP32-C3 pada sistem Linux, yang akan diperkenalkan secara rinci di sini. Banyak instruksi yang dapat diterapkan di seluruh platform karena kesamaan alat pengembangan. Oleh karena itu, disarankan untuk membaca dengan cermat isi bagian ini.
CATATAN Anda dapat merujuk ke dokumen online yang tersedia di https://bookc3.espressif.com/esp32c3, yang menyediakan perintah yang disebutkan di bagian ini.
4.2.1 Menyiapkan Lingkungan Pengembangan ESP-IDF di Linux
Alat pengembangan dan debugging GNU yang diperlukan untuk lingkungan pengembangan ESP-IDF adalah asli sistem Linux. Selain itu, terminal baris perintah di Linux sangat kuat dan mudah digunakan, menjadikannya pilihan ideal untuk pengembangan ESP32-C3. Kamu bisa
38 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

pilih distribusi Linux pilihan Anda, namun kami merekomendasikan penggunaan Ubuntu atau sistem berbasis Debian lainnya. Bagian ini memberikan panduan tentang pengaturan lingkungan pengembangan ESP-IDF di Ubuntu 20.04.
1. Instal paket yang diperlukan
Buka terminal baru dan jalankan perintah berikut untuk menginstal semua paket yang diperlukan. Perintah tersebut secara otomatis akan melewatkan paket yang sudah diinstal.
$ sudo apt-get install git wget flex bison gperf python3 python3-pip python3setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
TIPS Anda perlu menggunakan akun administrator dan kata sandi untuk perintah di atas. Secara default, tidak ada informasi yang akan ditampilkan saat memasukkan kata sandi. Cukup tekan tombol “Enter” untuk melanjutkan prosedur.
Git adalah alat manajemen kode kunci di ESP-IDF. Setelah berhasil menyiapkan lingkungan pengembangan, Anda dapat menggunakan perintah git log untuk view semua perubahan kode dilakukan sejak pembuatan ESP-IDF. Selain itu, Git juga digunakan di ESP-IDF untuk mengonfirmasi informasi versi, yang diperlukan untuk menginstal rantai alat yang benar sesuai dengan versi tertentu. Selain Git, alat sistem penting lainnya termasuk Python. ESP-IDF menggabungkan banyak skrip otomatisasi yang ditulis dengan Python. Alat seperti CMake, Ninja-build, dan Ccache banyak digunakan dalam proyek C/C++ dan berfungsi sebagai alat kompilasi dan pembuatan kode default di ESP-IDF. libusb-1.0-0 dan dfu-util adalah driver utama yang digunakan untuk komunikasi serial USB dan pembakaran firmware. Setelah paket perangkat lunak diinstal, Anda dapat menggunakan apt show perintah untuk mendapatkan deskripsi rinci dari setiap paket. Misalnyaample, gunakan apt show git untuk mencetak informasi deskripsi alat Git.
T: Apa yang harus dilakukan jika versi Python tidak didukung? J: ESP-IDF v4.3 memerlukan versi Python yang tidak lebih rendah dari v3.6. Untuk Ubuntu versi lama, unduh dan instal versi Python yang lebih tinggi secara manual dan atur Python3 sebagai lingkungan Python default. Anda dapat menemukan petunjuk rinci dengan mencari kata kunci update-alternatives python.
2. Unduh kode repositori ESP-IDF
Buka terminal dan buat folder bernama esp di direktori home Anda menggunakan perintah mkdir. Anda dapat memilih nama lain untuk folder tersebut jika Anda mau. Gunakan perintah cd untuk masuk ke folder.
Bab 4. Menyiapkan Lingkungan Pembangunan 39

$ mkdir -p /esp $cd /esp
Gunakan perintah git clone untuk mengunduh kode repositori ESP-IDF, seperti yang ditunjukkan di bawah ini:
$ git clone -b v4.3.2 –rekursif https://github.com/espressif/esp-idf.git
Pada perintah di atas, parameter -b v4.3.2 menentukan versi yang akan diunduh (dalam hal ini, versi 4.3.2). Parameter –rekursif memastikan bahwa semua sub-repositori ESP-IDF diunduh secara rekursif. Informasi tentang sub-repositori dapat ditemukan di .gitmodules file.
3. Instal rantai alat pengembangan ESP-IDF
Espressif menyediakan skrip install.sh otomatis untuk mengunduh dan menginstal rantai alat. Skrip ini memeriksa versi ESP-IDF saat ini dan lingkungan sistem operasi, lalu mengunduh dan menginstal versi paket alat Python dan rantai alat kompilasi yang sesuai. Jalur instalasi default untuk rantai alat adalah /.espressif. Yang perlu Anda lakukan adalah menavigasi ke direktori esp-idf dan menjalankan install.sh.
$ cd /esp/esp-idf $ ./install.sh
Jika Anda berhasil memasang rantai alat, terminal akan menampilkan:
Selesai!
Pada titik ini, Anda telah berhasil menyiapkan lingkungan pengembangan ESP-IDF.
4.2.2 Menyiapkan Lingkungan Pengembangan ESP-IDF di Windows
1. Unduh penginstal alat ESP-IDF
TIPS Disarankan untuk mengatur lingkungan pengembangan ESP-IDF pada Windows 10 atau lebih tinggi. Anda dapat mengunduh penginstal dari https://dl.espressif.com/dl/esp-idf/. Penginstal juga merupakan perangkat lunak sumber terbuka, dan kode sumbernya dapat berupa viewdiedit di https://github.com/espressif/idf-installer.
· Penginstal alat ESP-IDF online
Pemasang ini relatif kecil, berukuran sekitar 4 MB, dan paket serta kode lain akan diunduh selama proses instalasi. KemajuantagSalah satu keunggulan penginstal online adalah paket perangkat lunak dan kode tidak hanya dapat diunduh sesuai permintaan selama proses instalasi, tetapi juga memungkinkan instalasi semua rilis ESP-IDF yang tersedia dan cabang terbaru kode GitHub (seperti cabang master) . Kerugiannyatage adalah memerlukan koneksi jaringan selama proses instalasi, yang dapat menyebabkan kegagalan instalasi karena masalah jaringan.
40 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

· Penginstal alat ESP-IDF offline Penginstal ini lebih besar, berukuran sekitar 1 GB, dan berisi semua paket perangkat lunak dan kode yang diperlukan untuk pengaturan lingkungan. Keuntungan utamatagSalah satu keunggulan penginstal offline adalah dapat digunakan pada komputer tanpa akses Internet, dan umumnya memiliki tingkat keberhasilan penginstalan yang lebih tinggi. Perlu dicatat bahwa penginstal offline hanya dapat menginstal rilis stabil ESP-IDF yang diidentifikasi oleh v*.* atau v*.*.*.
2. Jalankan penginstal alat ESP-IDF Setelah mengunduh versi penginstal yang sesuai (misalnya ESP-IDF Tools Offline 4.3.2ample di sini), klik dua kali exe file untuk meluncurkan antarmuka instalasi ESP-IDF. Berikut ini menunjukkan cara menginstal ESP-IDF versi stabil v4.3.2 menggunakan penginstal offline.
(1) Pada antarmuka “Pilih bahasa instalasi” yang ditunjukkan pada Gambar 4.4, pilih bahasa yang akan digunakan dari daftar drop-down.
Gambar 4.4. Antarmuka “Pilih bahasa instalasi” (2) Setelah memilih bahasa, klik “OK” untuk memunculkan antarmuka “Perjanjian Lisensi”
(lihat Gambar 4.5). Setelah membaca dengan cermat perjanjian lisensi instalasi, pilih “Saya menerima perjanjian” dan klik “Berikutnya”.
Gambar 4.5. Antarmuka “Perjanjian Lisensi” Bab 4. Menyiapkan Lingkungan Pengembangan 41

(3) Perihalview konfigurasi sistem di antarmuka “Pemeriksaan sistem pra-instalasi” (lihat Gambar 4.6). Periksa versi Windows dan informasi perangkat lunak antivirus yang diinstal. Klik “Next” jika semua item konfigurasi normal. Jika tidak, Anda dapat mengklik “Log lengkap” untuk solusi berdasarkan item utama.
Gambar 4.6. TIPS antarmuka “Pemeriksaan sistem sebelum instalasi”.
Anda dapat mengirimkan log ke https://github.com/espressif/idf-installer/issues untuk mendapatkan bantuan. (4) Pilih direktori instalasi ESP-IDF. Di sini, pilih D:/.espressif, seperti yang ditunjukkan pada
Gambar 4.7, dan klik “Next”. Harap dicatat bahwa .espressif di sini adalah direktori tersembunyi. Setelah instalasi selesai, Anda bisa view isi spesifik direktori ini dengan membuka file manajer dan menampilkan item tersembunyi.
Gambar 4.7. Pilih direktori instalasi ESP-IDF 42 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif untuk IoT

(5) Periksa komponen-komponen yang perlu dipasang, seperti terlihat pada Gambar 4.8. Disarankan untuk menggunakan opsi default, yaitu menyelesaikan instalasi, lalu klik "Berikutnya".
Gambar 4.8. Pilih komponen yang akan diinstal (6) Konfirmasikan komponen yang akan diinstal dan klik “Instal” untuk memulai instalasi otomatis.
proses stallasi, seperti terlihat pada Gambar 4.9. Proses instalasi mungkin memakan waktu puluhan menit dan bilah kemajuan proses instalasi ditunjukkan pada Gambar 4.10. Mohon menunggu dengan sabar.
Gambar 4.9. Mempersiapkan instalasi (7) Setelah instalasi selesai, disarankan untuk mencentang “Daftarkan ESP-IDF
Alat yang dapat dieksekusi sebagai pengecualian Windows Defender…” untuk mencegah penghapusan perangkat lunak antivirus fileS. Menambahkan item pengecualian juga dapat melewati pemindaian yang sering dilakukan oleh antivirus
Bab 4. Menyiapkan Lingkungan Pembangunan 43

Gambar 4.10. Perangkat lunak bilah kemajuan instalasi, sangat meningkatkan efisiensi kompilasi kode sistem Windows. Klik “Selesai” untuk menyelesaikan instalasi lingkungan pengembangan, seperti yang ditunjukkan pada Gambar 4.11. Anda dapat memilih untuk mencentang “Jalankan lingkungan ESP-IDF PowerShell” atau “Jalankan prompt perintah ESP-IDF”. Jalankan jendela kompilasi langsung setelah instalasi untuk memastikan bahwa lingkungan pengembangan berfungsi normal.
Gambar 4.11. Instalasi selesai (8) Buka lingkungan pengembangan yang diinstal dalam daftar program (baik ESP-IDF 4.3
CMD atau terminal PowerShell ESP-IDF 4.3, seperti yang ditunjukkan pada Gambar 4.12), dan variabel lingkungan ESP-IDF akan secara otomatis ditambahkan saat dijalankan di terminal. Setelah itu, Anda dapat menggunakan perintah idf.py untuk pengoperasiannya. ESP-IDF 4.3 CMD yang dibuka ditunjukkan pada Gambar 4.13. 44 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Gambar 4.12. Lingkungan pengembangan diinstal
Gambar 4.13. ESP-IDF 4.3 CMD
4.2.3 Menyiapkan Lingkungan Pengembangan ESP-IDF di Mac
Proses instalasi lingkungan pengembangan ESP-IDF pada sistem Mac sama dengan proses pada sistem Linux. Perintah untuk mengunduh kode repositori dan menginstal rantai alat sama persis. Hanya perintah untuk menginstal paket ketergantungan yang sedikit berbeda. 1. Instal paket ketergantungan Buka terminal, dan instal pip, alat manajemen paket Python, dengan menjalankan perintah berikut:
% sudo instalasi mudah pip
Instal Homebrew, alat manajemen paket untuk macOS, dengan menjalankan perintah berikut:
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Instal paket ketergantungan yang diperlukan dengan menjalankan perintah berikut:
% minuman python3 instal cmake ninja ccache dfu-util
2. Download kode repositori ESP-IDF Ikuti instruksi yang diberikan di bagian 4.2.1 untuk mendownload kode repositori ESP-IDF. Langkah-langkahnya sama seperti mendownload di sistem Linux.
Bab 4. Menyiapkan Lingkungan Pembangunan 45

3. Instal rantai alat pengembangan ESP-IDF
Ikuti instruksi yang diberikan di bagian 4.2.1 untuk menginstal rantai alat pengembangan ESP-IDF. Langkah-langkahnya sama seperti instalasi pada sistem Linux.
4.2.4 Memasang Kode VS
Secara default, ESP-IDF SDK tidak menyertakan alat pengeditan kode (meskipun penginstal ESP-IDF terbaru untuk Windows menawarkan opsi untuk menginstal ESP-IDF Eclipse). Anda dapat menggunakan alat pengeditan teks pilihan Anda untuk mengedit kode dan kemudian mengkompilasinya menggunakan perintah terminal.
Salah satu alat pengeditan kode yang populer adalah VS Code (Visual Studio Code), yang merupakan editor kode gratis dan kaya fitur dengan antarmuka yang ramah pengguna. Ini menawarkan berbagai plugins yang menyediakan fungsionalitas seperti navigasi kode, penyorotan sintaksis, kontrol versi Git, dan integrasi terminal. Selain itu, Espressif telah mengembangkan plugin khusus yang disebut Espressif IDF untuk VS Code, yang menyederhanakan konfigurasi dan debugging proyek.
Anda dapat menggunakan perintah kode di terminal untuk membuka folder saat ini dengan cepat di VS Code. Alternatifnya, Anda dapat menggunakan pintasan Ctrl+ untuk membuka konsol terminal default sistem dalam VS Code.
TIPS Disarankan untuk menggunakan VS Code untuk pengembangan kode ESP32-C3. Unduh dan instal VS Code versi terbaru di https://code.visualstudio.com/.
4.2.5 Pengenalan Lingkungan Pengembangan Pihak Ketiga
Selain lingkungan pengembangan resmi ESP-IDF, yang sebagian besar menggunakan bahasa C, ESP32-C3 juga mendukung bahasa pemrograman utama lainnya dan berbagai lingkungan pengembangan pihak ketiga. Beberapa opsi penting meliputi:
Arduino: platform sumber terbuka untuk perangkat keras dan perangkat lunak, mendukung berbagai mikrokontroler, termasuk ESP32-C3.
Ia menggunakan bahasa C++ dan menawarkan API yang disederhanakan dan terstandarisasi, biasa disebut sebagai bahasa Arduino. Arduino banyak digunakan dalam pengembangan prototipe dan konteks pendidikan. Ini menyediakan paket perangkat lunak yang dapat diperluas dan IDE yang memungkinkan kompilasi dan flashing dengan mudah.
MicroPython: penerjemah bahasa Python 3 yang dirancang untuk berjalan pada platform mikrokontroler tertanam.
Dengan bahasa skrip yang sederhana, ia dapat langsung mengakses sumber daya periferal ESP32-C3 (seperti UART, SPI, dan I2C) dan fungsi komunikasi (seperti Wi-Fi dan Bluetooth LE).
46 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

Ini menyederhanakan interaksi perangkat keras. MicroPython, dikombinasikan dengan perpustakaan operasi matematika Python yang luas, memungkinkan penerapan algoritma kompleks pada ESP32-C3, memfasilitasi pengembangan aplikasi terkait AI. Sebagai bahasa skrip, tidak perlu kompilasi berulang-ulang; modifikasi dapat dilakukan dan skrip dapat dijalankan secara langsung.
NodeMCU: penerjemah bahasa LUA yang dikembangkan untuk chip seri ESP.
Ini mendukung hampir semua fungsi periferal chip ESP dan lebih ringan dari MicroPython. Mirip dengan MicroPython, NodeMCU menggunakan bahasa skrip, sehingga menghilangkan kebutuhan untuk kompilasi berulang.
Lebih lanjut, ESP32-C3 juga mendukung sistem operasi NuttX dan Zephyr. NuttX adalah sistem operasi real-time yang menyediakan antarmuka yang kompatibel dengan POSIX, sehingga meningkatkan portabilitas aplikasi. Zephyr adalah sistem operasi real-time kecil yang dirancang khusus untuk aplikasi IoT. Ini mencakup banyak perpustakaan perangkat lunak yang diperlukan dalam pengembangan IoT, yang secara bertahap berkembang menjadi ekosistem perangkat lunak yang komprehensif.
Buku ini tidak memberikan petunjuk instalasi rinci untuk lingkungan pengembangan yang disebutkan di atas. Anda dapat menginstal lingkungan pengembangan berdasarkan kebutuhan Anda dengan mengikuti dokumentasi dan instruksi masing-masing.
4.3 Sistem Kompilasi ESP-IDF
4.3.1 Konsep Dasar Sistem Penyusunan
Proyek ESP-IDF adalah kumpulan program utama dengan fungsi entri dan beberapa komponen fungsional independen. Misalnyaample, proyek yang mengontrol sakelar LED terutama terdiri dari program entri utama dan komponen driver yang mengontrol GPIO. Jika Anda ingin mewujudkan remote control LED, Anda juga perlu menambahkan Wi-Fi, tumpukan protokol TCP/IP, dll.
Sistem kompilasi dapat mengkompilasi, menghubungkan, dan menghasilkan executable files (.bin) untuk kode melalui seperangkat aturan bangunan. Sistem kompilasi ESP-IDF v4.0 dan versi di atasnya didasarkan pada CMake secara default, dan skrip kompilasi CMakeLists.txt dapat digunakan untuk mengontrol perilaku kompilasi kode. Selain mendukung sintaks dasar CMake, sistem kompilasi ESP-IDF juga mendefinisikan seperangkat aturan kompilasi default dan fungsi CMake, dan Anda dapat menulis skrip kompilasi dengan pernyataan sederhana.
Proyek 4.3.2 File Struktur
Proyek adalah folder yang berisi entri program utama, komponen yang ditentukan pengguna, dan files diperlukan untuk membangun aplikasi yang dapat dieksekusi, seperti skrip kompilasi, konfigurasi
Bab 4. Menyiapkan Lingkungan Pembangunan 47

files, tabel partisi, dll. Proyek dapat disalin dan diteruskan, dan dapat dieksekusi sama file dapat dikompilasi dan dihasilkan di mesin dengan versi lingkungan pengembangan ESP-IDF yang sama. Proyek khas ESP-IDF file strukturnya ditunjukkan pada Gambar 4.14.
Gambar 4.14. Proyek ESP-IDF yang khas file struktur Karena ESP-IDF mendukung beberapa chip IoT dari Espressif, termasuk ESP32, seri ESP32-S, seri ESP32-C, seri ESP32-H, dll., target perlu ditentukan sebelum mengkompilasi kode. Targetnya adalah perangkat keras yang menjalankan program aplikasi dan target pembangunan sistem kompilasi. Bergantung pada kebutuhan Anda, Anda dapat menentukan satu atau lebih target untuk proyek Anda. Misalnyaample, melalui perintah idf.py set-target esp32c3, Anda dapat mengatur target kompilasi ke ESP32-C3, di mana parameter default dan jalur rantai alat kompilasi untuk ESP32C3 akan dimuat. Setelah kompilasi, program yang dapat dieksekusi dapat dibuat untuk ESP32C3. Anda juga dapat menjalankan perintah set-target lagi untuk menetapkan target yang berbeda, dan sistem kompilasi akan secara otomatis membersihkan dan mengkonfigurasi ulang. Komponen
Komponen dalam ESP-IDF adalah unit kode modular dan independen yang dikelola dalam sistem kompilasi. Mereka disusun sebagai folder, dengan nama folder mewakili nama komponen secara default. Setiap komponen memiliki skrip kompilasinya sendiri yaitu 48 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif untuk IoT

menentukan parameter kompilasi dan dependensinya. Selama proses kompilasi, komponen dikompilasi ke dalam perpustakaan statis terpisah (.a files) dan akhirnya digabungkan dengan komponen lain untuk membentuk program aplikasi.
ESP-IDF menyediakan fungsi-fungsi penting, seperti sistem operasi, driver periferal, dan tumpukan protokol jaringan, dalam bentuk komponen. Komponen-komponen ini disimpan di direktori komponen yang terletak di dalam direktori root ESP-IDF. Pengembang tidak perlu menyalin komponen ini ke direktori komponen Proyek saya. Sebaliknya, mereka hanya perlu menentukan hubungan ketergantungan komponen-komponen ini di CMakeLists.txt proyek file menggunakan direktif REQUIRES atau PRIV_REQUIRES. Sistem kompilasi akan secara otomatis mencari dan mengkompilasi komponen yang diperlukan.
Oleh karena itu, direktori komponen di bawah myProject tidak diperlukan. Ini hanya digunakan untuk menyertakan beberapa komponen khusus proyek, yang dapat berupa perpustakaan pihak ketiga atau kode yang ditentukan pengguna. Selain itu, komponen dapat bersumber dari direktori mana pun selain ESP-IDF atau proyek saat ini, misalnya dari proyek sumber terbuka yang disimpan di direktori lain. Dalam hal ini, Anda hanya perlu menambahkan path komponen dengan mengatur variabel EXTRA_COMPONENT_DIRS di CMakeLists.txt di bawah direktori root. Direktori ini akan menimpa komponen ESP-IDF apa pun dengan nama yang sama, memastikan komponen yang benar digunakan.
Entri program utama Direktori utama dalam proyek mengikuti hal yang sama file struktur sebagai komponen lain (misalnya, komponen1). Namun memiliki arti khusus karena merupakan komponen wajib yang harus ada di setiap proyek. Direktori utama berisi kode sumber proyek dan titik masuk program pengguna, biasanya bernama app_main. Secara default, eksekusi program pengguna dimulai dari titik masuk ini. Komponen utama juga berbeda karena secara otomatis bergantung pada semua komponen dalam jalur pencarian. Oleh karena itu, tidak perlu secara eksplisit menunjukkan dependensi menggunakan arahan REQUIRES atau PRIV_REQUIRES di CMakeLists.txt file.
Konfigurasi file Direktori root proyek berisi konfigurasi file disebut sdkconfig, yang berisi parameter konfigurasi untuk semua komponen dalam proyek. Sdkconfig file secara otomatis dihasilkan oleh sistem kompilasi dan dapat dimodifikasi dan dibuat ulang dengan perintah idf.py menuconfig. Opsi menuconfig terutama berasal dari Kconfig.projbuild proyek dan Kconfig komponen. Pengembang komponen umumnya menambahkan item konfigurasi di Kconfig untuk membuat komponen fleksibel dan dapat dikonfigurasi.
Direktori build Secara default, direktori build dalam proyek menyimpan perantara files dan fi-
Bab 4. Menyiapkan Lingkungan Pembangunan 49

program terakhir yang dapat dieksekusi yang dihasilkan oleh perintah build idf.py. Secara umum, tidak perlu mengakses langsung isi direktori build. ESP-IDF menyediakan perintah yang telah ditentukan sebelumnya untuk berinteraksi dengan direktori, seperti menggunakan perintah flash idf.py untuk secara otomatis menemukan biner yang dikompilasi file dan flash ke alamat flash yang ditentukan, atau gunakan perintah idf.py fullclean untuk membersihkan seluruh direktori build.
Tabel partisi (partitions.csv) Setiap proyek memerlukan tabel partisi untuk membagi ruang flash dan menentukan ukuran serta alamat awal program yang dapat dieksekusi dan ruang data pengguna. Perintah idf.py flash atau program pemutakhiran OTA akan mem-flash firmware ke alamat yang sesuai sesuai tabel ini. ESP-IDF menyediakan beberapa tabel partisi default di komponen/ tabel_partisi, seperti partisi_singleapp.csv dan partisi_dua_ ota.csv, yang dapat dipilih di menuconfig.
Jika tabel partisi default sistem tidak dapat memenuhi persyaratan proyek, partisi.csv khusus dapat ditambahkan ke direktori proyek dan dipilih di menuconfig.
4.3.3 Aturan Pembuatan Default Sistem Kompilasi
Aturan untuk mengganti komponen dengan nama yang sama Selama proses pencarian komponen, sistem kompilasi mengikuti urutan tertentu. Pertama-tama mencari komponen internal ESP-IDF, kemudian mencari komponen proyek pengguna, dan terakhir mencari komponen di EXTRA_COMPONENT_DIRS. Jika beberapa direktori berisi komponen dengan nama yang sama, komponen yang ditemukan di direktori terakhir akan menggantikan komponen sebelumnya dengan nama yang sama. Aturan ini memungkinkan penyesuaian komponen ESP-IDF dalam proyek pengguna, sekaligus menjaga kode ESP-IDF asli tetap utuh.
Aturan untuk menyertakan komponen umum secara default Seperti yang disebutkan di bagian 4.3.2, komponen harus secara eksplisit menentukan ketergantungannya pada komponen lain di CMakeLists.txt. Namun, komponen umum seperti freertos secara otomatis disertakan dalam sistem build secara default, meskipun hubungan ketergantungannya tidak ditentukan secara eksplisit dalam skrip kompilasi. Komponen umum ESP-IDF termasuk freertos, Newlib, heap, log, soc, esp_rom, esp_common, xtensa/riscv, dan cxx. Penggunaan komponen umum ini menghindari pekerjaan berulang saat menulis CMakeLists.txt dan membuatnya lebih ringkas.
Aturan untuk mengganti item konfigurasi Pengembang dapat menambahkan parameter konfigurasi default dengan menambahkan konfigurasi default file bernama sdkconfig.defaults ke proyek. Misalnyaample, menambahkan CONFIG_LOG_
50 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

DEFAULT_LEVEL_NONE = y dapat mengkonfigurasi antarmuka UART agar tidak mencetak data log secara default. Selanjutnya, jika parameter tertentu perlu ditetapkan untuk target tertentu, diperlukan konfigurasi file bernama sdkconfig.defaults.TARGET_NAME dapat ditambahkan, dimana TARGET_NAME dapat berupa esp32s2, esp32c3, dan seterusnya. Konfigurasi ini files diimpor ke sdkconfig selama kompilasi, dengan konfigurasi default umum file sdkconfig.defaults diimpor terlebih dahulu, diikuti dengan konfigurasi spesifik target file, seperti sdkconfig.defaults.esp32c3. Jika ada item konfigurasi dengan nama yang sama, konfigurasi yang terakhir file akan mengesampingkan yang pertama.
4.3.4 Pengenalan Naskah Penyusunan
Saat mengembangkan proyek menggunakan ESP-IDF, pengembang tidak hanya perlu menulis kode sumber tetapi juga perlu menulis CMakeLists.txt untuk proyek dan komponennya. CMakeLists.txt adalah sebuah teks file, juga dikenal sebagai skrip kompilasi, yang mendefinisikan serangkaian objek kompilasi, item konfigurasi kompilasi, dan perintah untuk memandu proses kompilasi kode sumber. Sistem kompilasi ESP-IDF v4.3.2 didasarkan pada CMake. Selain mendukung fungsi dan perintah CMake asli, ini juga mendefinisikan serangkaian fungsi khusus, sehingga lebih mudah untuk menulis skrip kompilasi.
Skrip kompilasi di ESP-IDF terutama mencakup skrip kompilasi proyek dan skrip kompilasi komponen. CMakeLists.txt di direktori akar proyek disebut skrip kompilasi proyek, yang memandu proses kompilasi keseluruhan proyek. Skrip kompilasi proyek dasar biasanya mencakup tiga baris berikut:
1. cmake_minimum_required(VERSI 3.5) 2. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 3. proyek(Proyek Saya)
Diantaranya, cmake_minimum_required (VERSI 3.5) harus ditempatkan pada baris pertama, yang digunakan untuk menunjukkan nomor versi CMake minimum yang diperlukan oleh proyek. Versi CMake yang lebih baru umumnya kompatibel dengan versi yang lebih lama, jadi sesuaikan nomor versi saat menggunakan perintah CMake yang lebih baru untuk memastikan kompatibilitas.
include($ENV {IDF_PATH}/tools/cmake/project.cmake) mengimpor item konfigurasi yang telah ditentukan sebelumnya dan perintah sistem kompilasi ESP-IDF, termasuk aturan build default dari sistem kompilasi yang dijelaskan di Bagian 4.3.3. project(myProject) membuat proyek itu sendiri dan menentukan namanya. Nama ini akan digunakan sebagai biner keluaran akhir file nama, yaitu, MyProject.elf dan myProject.bin.
Sebuah proyek dapat memiliki banyak komponen, termasuk komponen utama. Direktori tingkat atas setiap komponen berisi CMakeLists.txt file, yang disebut skrip kompilasi komponen. Skrip kompilasi komponen terutama digunakan untuk menentukan dependensi komponen, parameter konfigurasi, kode sumber files, dan menyertakan header files untuk
Bab 4. Menyiapkan Lingkungan Pembangunan 51

kompilasi. Dengan fungsi khusus ESP-IDF idf_component_register, kode minimum yang diperlukan untuk skrip kompilasi komponen adalah sebagai berikut:

1. idf_component_register(SRCS “src1.c”

2.

INCLUDE_DIRS "termasuk"

3.

MEMBUTUHKAN komponen1)

Parameter SRCS menyediakan daftar sumber files dalam komponen, dipisahkan dengan spasi jika ada kelipatannya fileS. Parameter INCLUDE_DIRS menyediakan daftar header publik file direktori untuk komponen tersebut, yang akan ditambahkan ke jalur pencarian penyertaan untuk komponen lain yang bergantung pada komponen saat ini. Parameter REQUIRES mengidentifikasi dependensi komponen publik untuk komponen saat ini. Komponen perlu menyatakan secara eksplisit komponen mana yang bergantung padanya, misalnya komponen2 bergantung pada komponen1. Namun, untuk komponen utama, yang bergantung pada semua komponen secara default, parameter REQUIRES dapat dihilangkan.

Selain itu, perintah CMake asli juga dapat digunakan dalam skrip kompilasi. Misalnyaample, gunakan perintah set untuk mengatur variabel, seperti set(VARIABLE “VALUE”).

4.3.5 Pengenalan Perintah Umum
ESP-IDF menggunakan CMake (alat konfigurasi proyek), Ninja (alat pembuatan proyek) dan esptool (alat flash) dalam proses kompilasi kode. Setiap alat memainkan peran berbeda dalam proses kompilasi, pembuatan, dan flash, dan juga mendukung perintah pengoperasian yang berbeda. Untuk memfasilitasi pengoperasian pengguna, ESP-IDF menambahkan idf.py front-end terpadu yang memungkinkan perintah di atas dipanggil dengan cepat.
Sebelum menggunakan idf.py, pastikan:
· Variabel lingkungan IDF_PATH dari ESP-IDF telah ditambahkan ke terminal saat ini. · Direktori eksekusi perintah adalah direktori root proyek, yang mencakup
skrip kompilasi proyek CMakeLists.txt.
Perintah umum idf.py adalah sebagai berikut:
· idf.py –help: menampilkan daftar perintah dan petunjuk penggunaannya. · idf.py tetapkan target : mengatur kompilasi taidf.py fullcleanrget, seperti itu
sebagai pengganti dengan esp32c3. · idf.py menuconfig: meluncurkan menuconfig, konfigurasi grafis terminal
alat, yang dapat memilih atau mengubah opsi konfigurasi, dan hasil konfigurasi disimpan di sdkconfig file. · idf.py build: memulai kompilasi kode. Perantara files dan program akhir yang dapat dieksekusi yang dihasilkan oleh kompilasi akan disimpan di direktori build proyek secara default. Proses kompilasinya bersifat inkremental artinya jika hanya satu sumber file dimodifikasi, hanya yang dimodifikasi file akan dikompilasi lain kali.

52 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

· idf.py clean: membersihkan perantara files dihasilkan oleh kompilasi proyek. Seluruh proyek akan dipaksa untuk dikompilasi pada kompilasi berikutnya. Perhatikan bahwa konfigurasi CMake dan modifikasi konfigurasi yang dilakukan oleh menuconfig tidak akan dihapus selama pembersihan.
· idf.py fullclean: menghapus seluruh direktori build, termasuk semua output konfigurasi CMake fileS. Saat membangun proyek lagi, CMake akan mengonfigurasi proyek dari awal. Harap dicatat bahwa perintah ini akan menghapus semua secara rekursif files di direktori build, jadi gunakan dengan hati-hati, dan konfigurasi proyek file tidak akan dihapus.
· idf.py flash: mem-flash biner program yang dapat dieksekusi file dihasilkan oleh build ke target ESP32-C3. Pilihan -p dan B digunakan untuk mengatur nama perangkat port serial dan baud rate untuk flashing. Jika kedua opsi ini tidak ditentukan, port serial akan terdeteksi secara otomatis dan baud rate default akan digunakan.
· Monitor idf.py: menampilkan output port serial dari target ESP32-C3. Opsi -p dapat digunakan untuk menentukan nama perangkat port serial sisi host. Selama pencetakan port serial, tekan kombinasi tombol Ctrl+] untuk keluar dari monitor.
Perintah di atas juga bisa digabungkan sesuai kebutuhan. Misalnyaample, perintah idf.py build flash monitor akan melakukan kompilasi kode, flash, dan membuka serial port monitor secara berurutan.
Anda dapat mengunjungi https://bookc3.espressif.com/build-system untuk mengetahui lebih banyak tentang sistem kompilasi ESP-IDF.
4.4 Latihan: Menyusun Kelample Program “Berkedip”
4.4.1 Contohample Analisis
Bagian ini akan mengambil program Blink sebagai contohnyaample untuk menganalisis file struktur dan aturan pengkodean proyek nyata secara rinci. Program Blink mengimplementasikan efek kedipan LED, dan proyek terletak di direktori examples/get-started/blink, yang berisi sumber file, konfigurasi files, dan beberapa skrip kompilasi.
Proyek lampu pintar yang diperkenalkan dalam buku ini didasarkan pada contoh iniample program. Fungsi akan ditambahkan secara bertahap di bab-bab selanjutnya untuk menyelesaikannya.
Kode sumber Untuk mendemonstrasikan keseluruhan proses pengembangan, program Blink telah disalin ke esp32c3-iot-projects/device firmware/1 flashing.
Struktur direktori proyek Blink files ditunjukkan pada Gambar 4.15.
Proyek Blink hanya berisi satu direktori utama, yang merupakan komponen khusus itu
Bab 4. Menyiapkan Lingkungan Pembangunan 53

Gambar 4.15. File struktur direktori proyek Blink

harus disertakan seperti yang dijelaskan dalam bagian 4.3.2. Direktori utama terutama digunakan untuk menyimpan implementasi fungsi app_main(), yang merupakan titik masuk ke program pengguna. Proyek Blink tidak menyertakan direktori komponen, karena ex iniample hanya perlu menggunakan komponen yang disertakan dengan ESP-IDF dan tidak memerlukan komponen tambahan. CMakeLists.txt yang disertakan dalam proyek flashing digunakan untuk memandu proses kompilasi, sedangkan Kconfig.projbuild digunakan untuk menambahkan item konfigurasi untuk contoh iniample program di menuconfig. Lainnya yang tidak diperlukan files tidak akan mempengaruhi kompilasi kode, jadi tidak akan dibahas di sini. Pengenalan rinci tentang proyek Blink files adalah sebagai berikut.

1. /*blink.c menyertakan header berikut fileS*/

2. #sertakan

//Header perpustakaan C standar file

3. #include “freertos/freeRTOS.h” //header utama FreeRTOS file

4. #sertakan “freertos/task.h”

//Tajuk Tugas FreeRTOS file

5. #sertakan “sdkconfig.h”

//Konfigurasi header file dihasilkan oleh kconfig

6. #sertakan “driver/gpio.h”

//tajuk driver GPIO file

Sumber file Blink.c berisi serangkaian header files sesuai dengan deklarasi fungsi-

tions. ESP-IDF umumnya mengikuti urutan penyertaan header perpustakaan standar files, GratisR-

Judul TOS files, tajuk pengemudi files, header komponen lainnya files, dan tajuk proyek files.

Urutan headernya files yang disertakan dapat mempengaruhi hasil kompilasi akhir, jadi cobalah

ikuti aturan default. Perlu dicatat bahwa sdkconfig.h dibuat secara otomatis

oleh kconfig dan hanya dapat dikonfigurasi melalui perintah idf.py menuconfig.

Modifikasi langsung pada header ini file akan ditimpa.

1. /*Anda dapat memilih GPIO yang sesuai dengan LED di idf.py menuconfig, dan hasil modifikasi menuconfig adalah nilai CONFIG_BLINK

_GPIO akan diubah. Anda juga dapat langsung mengubah definisi makro

di sini, dan ubah CONFIG_BLINK_GPIO ke nilai tetap.*/ 2. #define BLINK_GPIO CONFIG_BLINK_GPIO

3. batalkan aplikasi_main(batal)

4.{

5.

/*Konfigurasikan IO sebagai fungsi default GPIO, aktifkan mode pull-up, dan

6.

menonaktifkan mode input dan output*/

7.

gpio_reset_pin(BLINK_GPIO);

54 Petualangan Nirkabel ESP32-C3: Panduan Komprehensif tentang IoT

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

/*Setel GPIO ke mode keluaran*/ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); sementara(1) {
/*Cetak log*/ printf(“Mematikan LEDn”); /*Matikan LED (output level rendah)*/ gpio_set_level(BLINK_GPIO, 0); /*Penundaan (1000 mdtk)*/ vTaskDelay(1000 / portTICK_PERIOD_MS); printf("Menyalakan LEDn"); /*Nyalakan LED (output tingkat tinggi)*/ gpio_set_level(BLINK_GPIO, 1); vTaskDelay(1000/portTICK_PERIOD_MS); }

Fungsi app_main() di Blink example program berfungsi sebagai titik masuk untuk program pengguna. Ini adalah fungsi sederhana tanpa parameter dan tanpa nilai kembalian. Fungsi ini dipanggil setelah sistem menyelesaikan inisialisasi, yang mencakup tugas-tugas seperti inisialisasi port serial log, mengonfigurasi inti tunggal/ganda, dan mengonfigurasi pengawas.

Fungsi app_main() berjalan dalam konteks tugas bernama main. Ukuran tumpukan dan prioritas tugas ini dapat disesuaikan di menuconfig Componentconfig Umum terkait ESP.

Untuk tugas sederhana seperti mengedipkan LED, semua kode yang diperlukan dapat diimplementasikan langsung di fungsi app_main(). Hal ini biasanya melibatkan inisialisasi GPIO yang sesuai dengan LED dan menggunakan loop while(1) untuk menghidupkan dan mematikan LED. Alternatifnya, Anda dapat menggunakan FreeRTOS API untuk membuat tugas baru yang menangani kedipan LED. Setelah tugas baru berhasil dibuat, Anda dapat keluar dari fungsi app_main().

Konten utama/CMakeLists.txt file, yang memandu proses kompilasi komponen utama, adalah sebagai berikut:

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

Diantaranya, main/CMakeLists.txt hanya memanggil satu fungsi sistem kompilasi, yaitu idf_component_register. Mirip dengan CMakeLists.txt untuk sebagian besar komponen lainnya, flashing.c ditambahkan ke SRCS, dan sumbernya files yang ditambahkan ke SRCS akan dikompilasi. Pada saat yang sama, “.”, yang mewakili jalur di mana CMakeLists.txt berada, harus ditambahkan ke INCLUDE_DIRS sebagai direktori pencarian untuk header fileS. Isi CMakeLists.txt adalah sebagai berikut:
1. #Tentukan v3.5 sebagai versi CMake tertua yang didukung oleh proyek saat ini 2. #Versi yang lebih rendah dari v3.5 harus ditingkatkan sebelum kompilasi dilanjutkan 3. cmake_minimum_required(VERSI 3.5) 4. #Sertakan konfigurasi CMake default dari ESP -Sistem kompilasi IDF

Bab 4. Menyiapkan Lingkungan Pembangunan 55

5. include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6. #Buat proyek bernama “blink” 7. proyek(Proyek Saya)
Diantaranya, CMakeLists.txt di direktori root terutama mencakup $ENV{IDF_ PATH}/tools/cmake/project.cmake, yang merupakan konfigurasi CMake utama file disediakan oleh ESP-IDF. Ini digunakan untuk menipu

Dokumen / Sumber Daya

Petualangan Nirkabel Sistem Espressif ESP32-C3 [Bahasa Indonesia:] Panduan Pengguna
Petualangan Nirkabel ESP32-C3, ESP32-C3, Petualangan Nirkabel, Petualangan

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *