Firmware-architecture

  • Published on
    HortiLink dirancang sebagai sistem smart agriculture offline-first berbasis ESP32-C3 sebagai edge node dan Raspberry Pi sebagai gateway lokal. Aliran belajar dimulai dari pemahaman sistem, batasan nyata platform Velxio, konsep MVP, feature system, mode operasi, dan mapping layer firmware, lalu diturunkan ke definisi formal v0.1. Pendekatan ini menjaga pembelajaran tetap natural bagi engineer praktis - node harus hidup mandiri lebih dulu sebelum masuk ke gateway, logging, persistence, dan cloud. Struktur feature dibagi ke node, gateway, reliability, dan remote layer, dengan build order bertahap agar implementasi tetap deterministic, modular, scalable, dan selaras dengan prinsip single-project, offline-first, serta OOP kecil yang disiplin.
  • Published on
    Layering dalam firmware embedded bukan sekadar pemisahan file, tetapi cara mengendalikan dependency dan kompleksitas sistem. Tanpa struktur yang jelas, callback komunikasi, ISR, dan logic kontrol dapat saling terhubung secara liar sehingga firmware sulit dipelihara. Artikel ini membangun model 3-layer yang digunakan dalam seluruh seri - Application, Service, dan Driver, dengan dukungan modul System. Kita membahas arah dependency, alasan pemisahan domain, serta bagaimana struktur ini diterapkan dalam project flat-folder Arduino ESP32. Tujuannya adalah membentuk mental model arsitektur sebelum masuk ke disiplin freeze pada tahap produksi.
  • Published on
    Artikel ini mengunci fondasi pengendalian dependency dalam firmware ESP32 berbasis Arduino. Masalah utama spaghetti firmware bukan pada bahasa, melainkan global mutable state tanpa owner dan dependency implicit lintas domain. OOP digunakan bukan untuk gaya, tetapi untuk mengenkapsulasi state, menetapkan ownership yang jelas, dan memaksa dependency eksplisit melalui constructor injection. Setiap peripheral dan domain logic harus dibungkus dalam class dengan state private. Singleton dan inheritance berlebihan dilarang; composition menjadi pendekatan default. Dengan struktur ini, dependency menjadi terarah, blast radius perubahan mengecil, dan race condition lebih mudah dianalisis sebelum sistem berkembang semakin kompleks.
  • 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
    Modul 4 memperkenalkan ComponentBase sebagai fondasi arsitektural utama dalam firmware IoT modular berbasis ESP. Setelah firmware mampu membuat object secara runtime (Modul 3), modul ini menyelesaikan masalah fragmentasi dengan menyatukan seluruh komponen di bawah kontrak perilaku yang sama. Melalui penggunaan abstract class dan virtual method seperti begin() dan update(), firmware dapat mengelola berbagai komponen secara seragam tanpa bergantung pada implementasi konkret. Hasilnya adalah arsitektur yang konsisten, scalable, dan siap menangani kompleksitas sensor, actuator, serta komunikasi IoT pada modul-modul lanjutan.