All Posts

  • 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 struktur arsitektur firmware berbasis class yang layered dan deterministik untuk ESP32 Arduino. Setelah dependency dan memory discipline dikontrol, risiko terbesar berikutnya adalah coupling lintas domain akibat tidak adanya direction rule yang tegas. Artikel ini menetapkan model 3 layer - Driver, Service, dan Application, dengan aturan dependency satu arah (DAG) dan larangan circular include. Prefix file (`drv_`, `svc_`, `app_`, `sys_`) menjadi boundary enforcement pada struktur flat Arduino. Dengan layering eksplisit dan composition root di `IndustrialNode.ino`, firmware memiliki bentuk tetap yang stabil, mudah diaudit, dan tidak berubah meski fitur bertambah.
  • Published on
    Artikel ini mengunci batas concurrency dalam firmware ESP32 berbasis Arduino yang berjalan di atas FreeRTOS internal. Setelah layering dan memory discipline dikendalikan, risiko berikutnya adalah eksekusi paralel tanpa boundary yang jelas. ISR, WiFi stack, MQTT callback, dan control loop berjalan dalam konteks berbeda yang dapat memicu race condition dan jitter. Artikel ini menetapkan aturan - task-per-domain, ISR hanya sebagai notifier, komunikasi antar task menggunakan queue fixed-size, serta larangan blocking di ControlTask. Dengan batas eksekusi eksplisit dan alur satu arah, firmware tetap deterministik meskipun berjalan pada sistem multitasking.
  • 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.
  • Published on
    Artikel ini mengunci model reliability dan error handling untuk firmware ESP32 produksi. Setelah dependency, memory, layering, concurrency, dan communication dibekukan, sistem masih bisa gagal jika tidak memiliki model propagasi error yang eksplisit dan fail-safe state yang jelas. Silent failure, printf liar, watchdog tanpa owner, serta relay fail-open adalah penyebab utama bug lapangan yang sulit diaudit. Artikel ini menetapkan error enum eksplisit, larangan exception, encapsulation watchdog dalam HealthService, logging via interface non-blocking, serta kewajiban health telemetry minimal. Dengan reliability model formal, firmware tidak hanya rapi, tetapi juga dapat diaudit dan dipertahankan bertahun-tahun.