MODUL 36 (SPESIALIS IOT): OVER-THE-AIR (OTA) FIRMWARE UPDATE
๐ META MODUL & PRASYARAT
- Bidang Spesialisasi: Remote Firmware Management & Over-The-Air Updates.
- Target Pembaca: Pembelajar yang sudah menguasai Firmware Security (Modul 35).
- Learning Outcome:
- Memahami arsitektur pembaruan OTA (Over-The-Air) secara nirkabel via WiFi.
- Memahami pembagian Partition Table ESP32 (
ota_0,ota_1,otadata). - Mampu mengimplementasikan
ArduinoOTA.hdan HTTP Web Server OTA Rollout. - Memahami prosedur Rollback Otomatis jika biner firmware baru mengalami crash.
- Estimasi Waktu Belajar: 120 Menit.
- Tingkat Kesulitan: ๐ก Menengah - Lanjut (Level 36 / 40).
- Prasyarat: Modul 35 (Firmware Security & Secure Boot pada ESP32).
๐ง ARSITEKTUR TABEL PARTISI OTA ESP32
=======================================================================
SKEMA PARTISI FLASH DUAL-BANK OTA ESP32
=======================================================================
[ FLASH MEMORY 4MB ]
โโโ Bootloader (0x1000)
โโโ Partition Table (0x8000)
โโโ NVS & otadata (0x9000)
โโโ [ PARTISI OTA_0 ] โโโบ (Firmware Lama Aktif v1.0)
โโโ [ PARTISI OTA_1 ] โโโบ (Tempat Mengunduh Firmware Baru v2.0 dari Server)
ALUR PEMBARUAN:
- ESP32 mengunduh biner v2.0 dan menuliskannya ke Partisi OTA_1.
- Verifikasi Hash Biner Sukses.
- Update pointer
otadata -> Alihkan Bootloader ke OTA_1.
- Reboot. Jika v2.0 gagal booting (crash), otomatis Rollback ke OTA_0!
โก CHEAT SHEET KODE ARDUINOOTA ESP32
#include <WiFi.h>
#include <ArduinoOTA.h>
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "PASS");
while (WiFi.status() != WL_CONNECTED) { delay(500); }
// Konfigurasi Port & Hostname OTA
ArduinoOTA.setHostname("esp32-sensor-kebun");
ArduinoOTA.setPassword("DeeptechOTAPassword123");
ArduinoOTA.onStart([]() { Serial.println("Mulai Proses OTA Update..."); });
ArduinoOTA.onEnd([]() { Serial.println("\nOTA Selesai! Rebooting..."); });
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress OTA: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: Gagal OTA\n", error);
});
ArduinoOTA.begin();
Serial.println("OTA Server Siap!");
}
void loop() {
ArduinoOTA.handle(); // Wajib dipanggil di loop untuk mendengarkan firmware baru
}
Latihan & Quiz Evaluasi Modul
Progres Quiz: 0 / 2 Soal
SOAL #1
Apakah nama fitur pembaruan firmware nirkabel yang memungkinkan kita memperbarui kode C++ pada ribuan sensor ESP32 terpasang di atas atap tanpa harus colok kabel USB?
SOAL #2
Mengapa ESP32 menggunakan skema **Dual-Bank Partition (`ota_0` & `ota_1`)** saat menerima pembaruan OTA?
Kunci Jawaban & Pembahasan
Kunci Jawaban: 1. b. Over-The-Air (OTA) Update, 2. b. Mencegah perangkat bricked jika mati lampu.
Apakah Anda siap lanjut ke Modul 37: Remote Device Management & Heartbeat Health Monitoring?
Apakah Anda siap lanjut ke Modul 37: Remote Device Management & Heartbeat Health Monitoring?