Teknologi server web yang efisien untuk mikrokontroler dengan sumber daya terbatas
Beberapa waktu yang lalu kami menerbitkan sebuah artikel berjudul Pandangan baru tentang penyematan server web, di mana kami menyarankan untuk menggunakan WebSockets daripada HTTP dengan perintah GET dan POST tradisionalnya. Seorang komentator mengkritik artikel tersebut karena tidak cocok untuk kategori luas sistem tertanam berbasis mikrokontroler kecil.
Protokol WebSocket bila digunakan dengan benar menggunakan lebih sedikit sumber daya daripada server web tradisional. Faktanya, kami percaya WebSockets adalah satu-satunya opsi yang layak jika Anda pernah berencana untuk mengaktifkan TLS pada server web tertanam. Anda mungkin sudah menggunakan server web tertanam di perangkat Anda, tetapi mengaktifkan TLS di server web standar untuk perangkat dengan sumber daya terbatas biasanya berakhir dengan bencana. Untuk memahami mengapa TLS menimbulkan masalah seperti itu untuk teknologi server web standar, lihat tutorial kami Saat Tidak Menyematkan Server Web di Perangkat.
Desain Referensi Aplikasi Web Modern untuk Mikrokontroler
Kami baru-baru ini melakukan Embedded HTTP dan WebSocket Server kami ke GitHub. Server HTTP dan WebSocket Tertanam, yang disebut Server Minnow, telah dirancang khusus untuk mikrokontroler kecil dengan sumber daya terbatas.
Lebih penting lagi, kami juga menyertakan contoh referensi yang menunjukkan cara membangun antarmuka pengguna web real-time modern untuk manajemen perangkat. Aplikasi web disebut Single Page Application (SPA) yang secara eksklusif menggunakan protokol WebSocket untuk manajemen perangkat. Protokol HTTP hanya digunakan untuk memuat SPA. Dengan kata lain, HTTP awalnya digunakan oleh browser saat memuat aplikasi sesuai permintaan dari perangkat.
Contoh referensi mencakup pembaruan waktu nyata dari LED dan pengukur termostat, dan ini menunjukkan cara mengunggah firmware melalui WebSockets. SPA lengkap hanya membutuhkan 41 Kbytes ruang penyimpanan memori flash. Selain itu, server WebSocket memerlukan sedikit RAM untuk komunikasi.
Tangkapan layar berikut menunjukkan halaman unggah firmware SPA. Halaman tersebut adalah salah satu dari beberapa contoh halaman yang menunjukkan bagaimana memanfaatkan protokol WebSocket yang baru. Halaman unggah firmware menunjukkan cara membuat logika unggah JavaScript seret dan lepas dan cara mengirim file yang diunggah ke server melalui koneksi WebSocket. Semua pesan yang dikirim melalui koneksi WebSocket dikirim sebagai pesan teks JSON kecuali untuk unggahan, yang dikirim sebagai data biner. JavaScript modern dapat dengan mudah mengelola data biner dan protokol WebSocket mendukung bingkai biner dan teks.
Memulai Server Minnow
Buka GitHub, unduh Server Minnow, dan mulailah menulis SPA Anda sendiri untuk desain mikrokontroler Anda sendiri. Contoh referensi telah dirancang sedemikian rupa sehingga dapat dengan mudah digunakan kembali untuk aplikasi manajemen perangkat tertanam Anda sendiri. Blok penyusun CSS dan HTML5 dalam aplikasi ini telah dirancang untuk digunakan kembali. Selain itu, pustaka JavaScript komunikasi WebSocket yang disertakan dalam contoh dirancang untuk umum dan dapat dengan mudah digunakan kembali di aplikasi lain.
Catatan:
Server Minnow dirancang untuk mikrokontroler kecil, tetapi karena contoh referensi terutama dirancang untuk tujuan pendidikan, kami telah membatasi lingkungan build yang siap pakai untuk Windows dan Linux. Anda dapat mem-port aplikasi ke sistem tertanam, tetapi lebih masuk akal untuk hanya menggunakan ide-ide desain dalam contoh referensi. Anda tentu saja dapat menggunakan bagian umum "sebagaimana adanya".
Meskipun Server Minnow dapat diatur untuk mengelola beberapa koneksi, contoh referensi diatur untuk mengelola satu koneksi pada satu waktu. Mencoba menghubungkan jendela browser baru saat jendela browser lain menggunakan satu-satunya koneksi WebSocket tidak akan berfungsi.
Jika Anda tidak memiliki pengalaman HTML/CSS/JavaScript yang diperlukan, pertimbangkan untuk bekerja sama dengan pengembang web ujung depan. Cara terbaik untuk memikirkan cara membuat SPA adalah dengan membandingkan proses pengembangan dengan membuat aplikasi desktop atau aplikasi telepon yang dirancang untuk berkomunikasi dengan perangkat menggunakan TCP. Biasanya, pengembang yang berbeda bertanggung jawab atas aplikasi desktop dan firmware perangkat dan ini juga merupakan cara terbaik untuk merancang SPA. Firmware dan pengembang ujung depan harus menyetujui API komunikasi antara browser dan server dan sebaliknya. Dengan kata lain, mereka perlu menentukan jenis pesan yang dikirim melalui koneksi WebSocket.
Wilfred Nilsen , Pendiri &CTO Real Time Logic, memiliki pengalaman 28 tahun dalam merancang perangkat lunak tertanam. Didukung oleh visi sistem tertanam yang terhubung, ia merancang Server Aplikasi Barracuda, menyesuaikannya untuk kebutuhan mikroprosesor tertanam yang kecil dan real-time.