Deterministic-design

  • Published on
    Artikel ini mengunci disiplin lifecycle object dan kebijakan alokasi memori untuk firmware ESP32 berbasis Arduino. Masalah jangka panjang pada sistem produksi sering berasal dari dynamic allocation tersembunyi, fragmentasi heap, object yang dibuat di dalam loop, serta penggunaan `String` dan container growable tanpa kontrol. Embedded system membutuhkan determinism dan prediktabilitas, bukan fleksibilitas runtime berlebihan. Artikel ini menetapkan prinsip static-first allocation, pembatasan ketat penggunaan heap, larangan alokasi di ISR dan control loop, serta destructor yang harus trivial. Dengan lifecycle eksplisit dan memori terkendali, firmware dapat bertahan bertahun-tahun tanpa degradasi stabilitas atau reset misterius.
  • Published on
    Artikel ini mengunci arsitektur komunikasi firmware ESP32 berbasis Arduino agar terisolasi dan deterministik. Tanpa boundary yang jelas, WiFi event, MQTT callback, dan OTA handler sering langsung memengaruhi logic aplikasi dan hardware, menciptakan coupling baru setelah layering dan concurrency sudah rapi. Artikel ini menetapkan CommManager sebagai satu-satunya gateway komunikasi, memisahkan transport dari business logic, serta mewajibkan state machine eksplisit untuk koneksi dan reconnect. Telemetry harus offline-safe dengan buffer terbatas, dan credential tidak boleh tersebar. Dengan freeze ini, komunikasi tidak lagi menjadi pusat coupling atau sumber jitter pada control loop.