Deskripsi Detail Sistem
3.2.3 Deskripsi Detail Sistem
Aplikasi web pada sistem yang akan dibangun memiliki dua fungsi utama yaitu sebagai antarmuka konfigurasi mikrokontroler yang digunakan dan sebagai antarmuka yang menampilkan informasi pemantauan lingkungan oleh sensor yang dihasilkan ketika Arduino telah berjalan sesuai dengan konfigurasi pengguna. Skema database yang akan digunakan untuk membangun aplikasi web dapat dilihat pada Gambar 18 berikut.
Gambar 18 Skema database Aplikasi Web
Fungsi konfigurasi mikrokontroler yang dilakukan oleh aplikasi web didasari oleh generasi kode program berdasarkan pin sensor yang akan digunakan oleh pengguna secara otomatis. Pengguna akan menentukan kombinasi sensor yang akan digunakan dan menancapkan sensor pada pin yang tersedia pada mikrokontroler, setelah itu pengguna mengkonfigurasi sensor yang digunakan melalui aplikasi web dengan memilih jenis sensor yang digunakan dan pin yang digunakan. Secara langsung, aplikasi web melakukan generasi source code dengan mengkombinasikan modul-modul fungsi yang berasal dari database yang bersesuaian dengan pilihan sensor dan pin dari pengguna. Setelah kode program yang bersesuaian dengan keinginan user digenerasi oleh aplikasi, aplikasi web akan menciptakan file berekstensi ino yang berisi source code yang telah digenerasi. Selanjutnya file akan di-compile dan menghasilkan file berekstensi bin. Proses compile dilakukan dengan terminal sistem operasi linux yang bertindak sebagai server untuk aplikasi berbasis web. Hal ini dapat dilakukan dengan bantuan PHP script. Aplikasi akan mengeksekusi shell command melalui PHP Script pada sistem operasi linux yang digunakan pada server untuk mengirimkan kode program melalui servis TFTP yang dibuka pada arduino.
Pada transmisi ini, sistem linux akan bertindak sebagai client dan Arduino akan bertindak sebagai server TFTP. Transmisi kode program dari web server ke mikrokontroler Arduino akan dilakukan dengan metode transmisi UDP TFTP melalui port 69 yang terbuka pada mikrokontroler arduino. Sebelum dikirimkan, file kode program yang akan dikirim akan diubah menjadi bentuk binary. Hal ini dikarenakan protokol TFTP yang digunakan hanya mendukung pengiriman binary data. Transmisi source code dilakukan dengan menggunakan mode octet TFTP yang menspesifikasikan bahwa data yang akan dikirim akan berbentuk data binary dan data tersebut akan displit kedalam beberapa tahapan pengiriman. Setiap tahapan pengiriman, client akan mengirim 512byte data pada server TFTP.
Proses transmisi data dpaat dilihat pada Gambar 19 berikut.
Gambar 19 Transmisi data dalam TFTP
Server TFTP (arduino) akan mengirimkan acknowledgment pada setiap block atau tahapan pengiriman. Pengriman data akan dilakukan bertahap sehingga menciptakan block byte data secara terus menerus, sampai semua binary data terkirim pada server TFTP.
Setelah kode program baru diterima oleh mikrokontroler arduino, kode program akan dieksekusi dan secara langsung sensor yang ditambahkan oleh pengguna dapat berfungsi.
Upload kode program melaui service tftp pada arduino dapat dilakukan dikarenakan 2 hal utama yaitu bootloader pada Arduino Uno (Arduino Uno Bootloader) telah diganti menjadi TFTP Bootloader Ariadne. Hal ini bertujuan agar file source code yang dikirmkan oleh aplikasi web melalui servis TFTP yang terbuka dapat dieksekusi oleh Arduino. EPROM pada mikrokontroler Arduino (ATMEGA328P) telah di-flash dengan konfigurasi jaringan yang akan digunakan, hal ini dilakukan agar konfigurasi jaringan pada Arduino berjalan dari mulai Arduino dinyalakan, dan agar konfigurasi jaringan tidak tertimpa saat Arduino mengeksekusi source code yang dikirim lewat TFTP oleh aplikasi web.
Skema pembuatan source code dan pengiriman source code melalui protocol TFTP pada Arduino dapat dilihat pada Gambar 20 berikut
Gambar 20 Tahapan pembuatan source code dan transmisi melalui TFTP
Setelah Arduino mengeksekusi kode program yang dikirimkan melalui TFTP dan manjalankan fungsi sesuai dengan sensor yang digunakan oleh pengguna, Arduino akan menghasilkan data pemantauan keadaan lingkungan yang berasal dari hasil sensing oleh sensor. Data ini akan dikembalikan lagi ke server yang menangani aplikasi berbasis web dan kemudian akan diolah sebelum informasi keadaan lingkungan ditampilkan pada aplikasi berbasis web tersebut. Data keadaan lingkungan dari Arduino akan dikirimkan dengan format JSON ke server aplikasi web.
Gambar 21 Skema Consume data berformat JSON