Kembali ke Katalog Modul
MODUL 04 DEEP DIVE

Pemrograman C++ untuk IoT & Memory Optimization

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() dan loop()).
  • 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

IstilahDefinisi SederhanaAnalogi
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_t vs int).
  • Menghindari kerentanan fragmentasi memori akibat penggunaan String berlebihan.
  • 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 DataUkuran (Bytes)Rentang Nilai
+-------------------+-+--------------+------------------------------+
bool / boolean1 Bytetrue (1) atau false (0)
uint8_t (byte)1 Byte0 s/d 255 (Tanpa minus)
int8_t1 Byte-128 s/d 127
uint16_t2 Bytes0 s/d 65.535
int4 Bytes-2.147.483.648 s/d 2.147...
float4 BytesAngka 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?