MODUL 04 (SPESIALIS IOT): PEMROGRAMAN C++ UNTUK IOT
๐ META MODUL & PRASYARAT
- Bidang Spesialisasi: Firmware Engineering & C++ Programming.
- Target Pembaca: Pembelajar yang sudah memahami Embedded Systems (Modul 03).
- Learning Outcome:
- Menguasai struktur kode Arduino/ESP32 C++ (
setup()danloop()). - Memahami tipe data khusus embedded (
uint8_t,uint16_t,float,String,char array). - Menggunakan Pointer (
) dan Reference (&) secara aman tanpa memicu Memory Leak. - Membuat dan mengimpor Library C++ (.h dan .cpp) kustom.
- Estimasi Waktu Belajar: 120 Menit.
- Tingkat Kesulitan: ๐ก Menengah (Level 4 / 40).
- Prasyarat: Modul 03 (Embedded Systems & FreeRTOS).
๐ GLOSARIUM & DAFTAR ISTILAH BARU
| Istilah | Definisi Sederhana | Analogi |
setup() | Fungsi yang dieksekusi satu kali saat ESP32 pertama kali dinyalakan. | Menyalakan mobil dan memeriksa minyak rem sebelum berjalan. |
loop() | Fungsi yang dieksekusi berulang-ulang terus menerus tanpa henti selama ada listrik. | Jantung manusia yang terus berdetak tanpa henti. |
Pointer () | Variabel yang menyimpan alamat memori RAM dari variabel lain. | Petunjuk alamat rumah seseorang di peta. |
Reference (&) | Mengakses langsung lokasi alamat memori variabel asal tanpa membuat salinan data baru. | Memberikan nama panggilan (alias) untuk orang yang sama. |
Header File (.h) | Berkas deklarasi pustaka yang berisi daftar nama fungsi dan variabel. | Daftar isi atau menu di restoran. |
Source File (.cpp) | Berkas implementasi yang berisi baris kode logika fungsi sebenarnya. | Proses koki memasak makanan di dapur. |
4. Pemrograman C++ untuk IoT
๐ฏ Tujuan Pembelajaran
Setelah menyelesaikan modul ini, Anda akan dapat:- Menulis program C++ bersih, terstruktur, dan hemat memori SRAM.
- Memilih tipe data yang tepat hemat RAM (
uint8_tvsint). - Menghindari kerentanan fragmentasi memori akibat penggunaan
Stringberlebihan. - Membuat library komponen IoT buatan Anda sendiri.
๐ง Penjelasan Konsep Utama (Secara Bertahap)
1. Struktur Utama Kode C++ Microcontroller
#include <WiFi.h> // 1. Import Library Eksternal
// 2. Deklarasi Konstanta & Pin
const int LED_PIN = 2;
uint32_t lastCheckTime = 0;
// 3. Fungsi Inisialisasi Perangkat (Jalan 1 Kali)
void setup() {
Serial.begin(115200); // Buka komunikasi serial USB
pinMode(LED_PIN, OUTPUT); // Atur pin GPIO 2 sebagai Output
Serial.println("ESP32 Ready!");
}
// 4. Fungsi Utama Berulang (Jalan Berulang-ulang)
void loop() {
digitalWrite(LED_PIN, HIGH); // Nyalakan LED
delay(500); // Tunggu 500ms
digitalWrite(LED_PIN, LOW); // Matikan LED
delay(500); // Tunggu 500ms
}
2. Tipe Data Hemat RAM untuk Microcontroller
SRAM ESP32 sangat terbatas (520KB). Menggunakan tipe data yang terlalu besar akan cepat menghabiskan memori!
+-------------------------------------------------------------------+
TIPE DATA C++ STANDAR EMBEDDED
+-------------------+-+--------------+------------------------------+
Tipe Data Ukuran (Bytes) Rentang Nilai
+-------------------+-+--------------+------------------------------+
bool / boolean 1 Byte true (1) atau false (0) uint8_t (byte) 1 Byte 0 s/d 255 (Tanpa minus) int8_t 1 Byte -128 s/d 127 uint16_t 2 Bytes 0 s/d 65.535 int 4 Bytes -2.147.483.648 s/d 2.147... float 4 Bytes Angka desimal (3.14159)
+-------------------+-+--------------+------------------------------+
โก CHEAT SHEET C++ IOT MEMORY OPTIMIZATION
// 1. Hemat RAM menggunakan makro F() untuk menyimpan string di Flash Memory:
Serial.println(F("String ini disimpan di Flash, BUKAN di RAM!"));
// 2. Gunakan char array daripada String objek untuk mencegah Fragmentasi SRAM:
char buffer[64];
snprintf(buffer, sizeof(buffer), "Suhu: %.2f C, Lembap: %d%%", temp, humidity);
Serial.println(buffer);
// 3. Melewatkan variabel via Reference (&) agar hemat memori tanpa copy:
void updateSensor(float &temperature, float &humidity) {
temperature = 28.5;
humidity = 70.0;
}
Latihan & Quiz Evaluasi Modul
Progres Quiz: 0 / 2 Soal
SOAL #1
Manakah tipe data 1-Byte unsigned yang paling efisien untuk menyimpan status persen (0-100%)?
SOAL #2
Fungsi manakah pada C++ ESP32 yang berjalan terus menerus secara berulang-ulang tanpa henti?
Kunci Jawaban & Pembahasan
Kunci Jawaban: 1. c. uint8_t, 2. b. loop().
Apakah Anda siap lanjut ke Modul 05: ESP8266 vs ESP32 Deep Dive & Board Comparison?
Apakah Anda siap lanjut ke Modul 05: ESP8266 vs ESP32 Deep Dive & Board Comparison?