DASAR TEORI
Wireless Sensor Network (WSN)
atau Sensor Jaringan Nirkabel merupakan suatu jaringan nirkabel yang terdiri
dari beberapa sensor (sensor node) yang diletakkan ditempat-tempat yang berbeda
untuk memantau kondisi suatu plan. Beberapa penggunaan WSN adalah oto-masi
industri, kontrol dan managemen energi, memantau mesin-mesin kesehatan,
memantau lingkungan untuk keperluan kesehatan, memantau arus lalulintas,
memantau bencana alam (pencatatan gempa), memantau polusi, memantau hewan liar,
memantau parameter energi listrik dan lain-lain.
Sensor-sensor tersebut akan mendeteksi obyek
dan mengirim data dengan nirkabel ke gateway
lalu ke server. Sensor-sensor yang digunakan dapat bermacam-macam, tergantung
dari plan yang dik-erjakan. Berikut adalah contoh penggunaan Wireless Sensor Network pada dokumentasi
Libelium.
Gambar 1.1 Libelium Smart World
- Overview
Waspmote adalah sebuah open
source wireless sensor platform yang fokus pada implementasi dari low-consumption-modes yang memungkinkan sensor node bekerja secara otomatis.
Waspmote dapat bertahan selama 1-5 tahun tegantung pada penggunaannya. Waspmote
dikeluarkan oleh Libelium pada November 2009.
Waspmote menjadi perangkat yang bertugas mengambil data dari
lingkungan sesuai modul atau sensor yang digunakan bersamanya. Waspmote dibuat
berdasarkan pada arsitektur modular. Idenya adalah untuk mengintegrasikan hanya
modul-modul pada masing-masing perangkat. Modul-modul ini dapat diubah dan
diperluas sesuai dengan kebutuhan. Arsitektur Waspmote didasarkan pada
mikrokontroler Atmel ATMEGA 1281.
Unit pengolahan ini mulai menjalankan bootloader
binary, yang bertanggunag jawab untuk mengambil program yang telah
dikompilasi dan library yang
sebelumnya disimpan dalam memori FLASH ke dalam memori utama, sehingga program
utama yang telah dibuat dapat berjalan.
Gambar 1.2 Komponen inti Waspmote (tampak atas)
Gambar 1.3 Komponen inti Waspmote (tampak bawah)
- Waspmote Events 2.0 Board
Waspmote Events 2.0 Board adalah sebuah papan rangkaian elektronik
yang memungkinkan koneksi simultan sampai dengan 8 sensor. Sensor-senor yang
dipasang ke papan ini memiliki beberepa fungsi yang disesuaikan untuk events atau peristiwa-peristiwa
tertentu. Misalnya pendeteksi banjir, keamanan, pengukuran intensitas cahaya,
dan lain-lain.
Events 2.0 Board mempunyai soket yang digunakan untuk
menghubungkan beberapa sensor yang umum pada aplikasi untuk kondisi atau
kejadian tertentu, yaitu sensor cahaya (luminosity
sensor), keberadaan (presence sensor),
tekanan (pressure sensor), pendeteksi
tingkat zait cair (liquid level sensor)
dan sebagainya.
- Luminosity Sensor (9205)
Sensor luminosity atau sering disebut Light Dependent Resistor (LDR) adalah jenis resistor yang nilai
hambatan atau nilai resistansinya tergantung pada intensitas cahaya yang
diterimanya. Nilai Hambatan LDR akan menurun pada saat cahaya terang dan nilai
Hambatannya akan menjadi tinggi jika dalam kondisi gelap. Dengan kata lain,
fungsi sensor ini adalah untuk menghantarkan arus listrik jika menerima
sejumlah intensitas cahaya (kondisi terang) dan menghambat arus listrik dalam
kondisi gelap. Naik turunnya nilai hambatan akan sebanding dengan jumlah cahaya
yang diterimanya.
Sensor luminosity (LDR) sering digunakan atau diaplikasikan dalam
rangkaian elektronika sebagai sensor pada lampu penerang jalan, lampu kamar
tidur, rangkaian anti maling, shutter
kamera, alarm dan lain sebagainya. [3]
Pada Libelium, sensor ini mempunyai nomor 9205. Sensor ini
mempunyai resistansi 20 MΩ saat gelap dan 5-20kΩ saat terang (10lux). Sensor
luminosity dapat berfungsi pada suhu yang cukup ekstrim, yaitu antara -30ºC s/d
75ºC sehingga memungkinkan untuk kondisi di luar ruangan. [4]
Pada projek akhir ini, sensor luminosity digunakan sebagai sensor
penangkap nilai intensitas cahaya matahari. Nilai intensitas cahaya matahari
dari sensor digunakan sebagai parameter penentuan cuaca.
Gambar 1.4 Sensor luminosity 9205 [2]
Meteor atau MeteorJS adalah sebuah open-source realtime framework untuk web
berbasis javascript yang dibuat menggunakan Node.js. Meteor memungkinkan
penggunanya untuk merancang atau membuat coding untuk berbagai platform seperti
web, Android, iOS dengan sangat cepat. MeteorJS berintergrasi dengan MongoDB
dan menggunakan Distributed Data Protocol
dan pola publish-subscribe untuk
secara otomatis menyebarkan perubahan data pada client secara realtime tanpa
membutuhkan coding khusus untuk sinkronisasi. Pada sisi client, Meteor
bergantung pada jQuery dan dapat digunakan dengan library javacript manapun. [5]
network
|
Gambar 1.5 Arsitektur MeteorJS (sumber:Google)
MongoDB merupakan basis data yang tidak
relasional. MongoDB ini bersifat open source
yang memiliki High Performance.
MongoDB adalah sebuah database yang menggunakan konsep manajemen database
berorientasi dokumen (document-oriented)
yang dibuat menggunakan pemograman C++. Orientasi dokumen ini adalah sebuah
program komputer yang dirancang untuk menyimpan, mengambil, dan mengelola data
yang berorientasi dokumen.
MongoDB sudah dikembangkan oleh Iogen sejak
Oktober 2007, namun baru dipublikasikan mulai Februari 2009. Performa pada
MongoDB sudah mencapai 4 kali lebih cepat dibandingkan dengn MySQL serta mudah
diaplikasikan juga. Karena MongoDB ini tergabung sebagai modul PHP.
Untuk pengguna RDBMS yang mungkin agak
membingungkan, karena dalam MongoDB ini tidak terdapat namanya tabel akan
tetapi yang digunakan hanyalah koleksi dan dokumen. Koleksi ini dianggap
sebagai sebuah directory (folder)
sedangkan dokumen sendiri dianggap sebagai file (berkas) dalam directory (folder) tersebut.
Perbandingan pada RDBMS seperti MySQL, pada koleksi diibaratkan dengan tabel,
sedangkan dokumen diibaratkan dengan baris dalam tabel tersebut. Baris pada
MongoDB ini tidak sama dengan yang ada pada RDBMS, dokumen pada MongoDB dapat
memiliki beda atribut dengan dokumen
yang lainnya walaupun ada pada satu koleksi.
Data model MongoDB disebut BSON dengan
struktur yang mirip dengan JSON. Strukturnya cukup mudah untuk dibaca. Dengan
konsep key-value pada MongoDB, setiap
dokumen akan otomatis memiliki indeks id yang unik. Sehingga dapat membantu
mempercepat proses pencarian data secara global.
Gambar 1.6 Perbandingan istilah pada SQL dan
MongoDB
Kelebihan
MongoDB
1.
MongoDB merupakan sistem basis data yang
menggunakan konsep key-value, yaitu
setiap dokumen dalam MongoDB pasti memiliki key.
Saat membuat dokumen tanpa menggunakan sebuah primary key, secara otomatis MongoDB akan memberikan sebuah key. Key-value
ini berperan penting karena membuat sistem basis data pada MongoDB semakin
lebih cepat dibandingkan dengan non
key-value seperti RDBMS.
2.
MongoDB mendukung replikasi. Repiklasi ini
dapat membuat pemilik sistem yang memiliki trafik membaca tinggi akan sangat
terbantu ketika sistemnya menggunakannya.
3.
MongoDB juga mendukung Sharding. Sharding digunakan ketika
memiliki website yang sudah sangat besar jumlah penggunaannya, datanya dapat
mencapai jutaan giga byte. Dengan penggunakan sharding ini akan dikerjakan
dengan membaris-baris data dengan per regional.
4.
MongoDB mendukung modul pemograman
MapReduce. Yaitu sebuah konsep yang sangat fenomenal yang pernah dikeluarkan
oleh Google dan saat ini banyak diimplementasikan seperti pada Apache Hadoop.
MapReduce membantu ketika melakukan operasi agregasi. Dimana semua entry
datangnya dari collection dan
outputnya akan menjadi collection
juga. Pada MySQL biasanya menggunakan query
Group By.
5.
MongoDB mendukung bahasa pemograman C,
C++, C#, Erlang, Haskell, Java, JavaScript, .NET (C#F#, PowerShell), Lips, PHP,
Python, Ruby, dan Scala.
6.
Cross-platform. MongoDB akan
dapat digunakan di Windows, Linux, OS X, dan Solarus.
7.
Proses CRUD (create, read, update, dan delete) terasa ringan.
8.
GridFS. GridFS ini digunakan untuk
menyimpan data yang sangat besar.
Kekurangan
MongoDB
1.
MongoDB harus diinstall disebuah server.
2.
MongoDB belum support dibanyak hosting.
3.
Tidak cocok untuk aplikasi proses
transaksi.
Dalam pembuatan suatu sistem harus dilakukan
perencanaan dan perancangan sistem yang sesuai dengan tujuan serta permasalahan
yang dihadapi. Bab ini akan membahas secara rinci mengenai perencanaan dan
pembuatan sistem yang akan dibuat.
Pada proyek akhir yang saya kerjakan yaitu mengenai pengimplementasian
wireless sensor network untuk
penentuan cuaca dengan menggunakan sensor luminosity.
Berikut adalah gambaran umum desain proyek akhir saya.
Gambar 2.1
Gambaran umum
Events sensor node merupakan suatu
perangkat yang tersusun atas Luminosity
Sensor, Waspmote Events 2.0 board,
dan Waspmote Starter Kit. Rancangan
sensor inilah yang diletakkan pada lokasi di luar ruangan di mana sinar
matahari akan ditangkap oleh sensor. Data dari sensor yang merupakan nilai
intensitas cahaya matahari akan dikirim ke komputer server secara wireless. Kemudian akan ada sebuah gateway yang menghubungkannya dengan
komputer server. Gateway ini bertugas
sebagai jalur perpindahan data dari lingkungan untuk dapat diterima oleh
komputer. Komputer server bertugas menerima data-data tersebut dan siap
diproses oleh aplikasi monitoring secara realtime
lalu disebarkan ke semua client
yang sedang terhubung atau mengakses aplikasi. Selain itu, data yang telah didapatkan akan digunakan untuk melakukan
perhitungan yang bertujuan untuk mendapatkan kondisi cuaca Hasil dari
perhitungan tersebut adalah bilangan yang merupakan nilai intensitas cahaya
dalam satuan Lux, lokasi di mana data tersebut diambil, waktu data diambil,
serta kondisi cuaca pada saat pengambilan data dilakukan.
Untuk masalah konfigurasi pada board
sensor, Waspmote memiliki aplikasi sendiri yang berfungsi sebagai IDE yang
disebut dengan Waspmote IDE. Aplikasi ini digunakan untuk menulis source code dan mengunggahnya ke board dari waspmote. Aplikasi ini juga
dapat digunakan untuk mengamati output
serial monitor dan untuk debugging.
IDE ini memuat Waspmote API (API adalah satu set dari semua library dari waspmote yang digunakan
untuk proses compile program).
Waspmote IDE dapat diunduh dari halaman resmi dari libelium di internet secara
gratis. Waspmote IDE tersedia untuk sistem operasi Windows, OSX dan Linux.
Berikut ini adalah
tampilan awal aplikasi Waspmote IDE pada Windows 8. Halaman tengah merupakan
halaman yang berisi coding yang akan
diunggah ke sensor board.
Gambar 1.
2 Tampilan Waspmote IDE pada Windows 8
Sebelum mengkonfigurasi sensor pada Waspmote IDE, terlebih dahulu
harus menginstal aplikasi X-CTU yang dapat kita unduh secara gratis di
internet. Aplikasi ini berfungsi untuk melihat nomor CH Channel dan ID PAN ID gateway yang akan kita gunakan.
Penentuan nomor CH Channel dan ID PAN ID gateway ini digunakan dalam konfigurasi pada program yang akan kita
unggah di sensor board.
Berikut adalah tampilan halaman awal aplikasi X-CTU yang akan
digunakan untuk melihat nomor CH Channel
dan ID PAN ID gateway. Tampak bahwa belum ada device
yang tampil. Kita harus menambahkan terlebih dahulu device (X-BEE gateway) yang akan kita gunakan untuk melihat nomor CH Channel dan ID PAN ID gateway.
Gambar 2.
3 Tampilan aplikasi X-CTU pada Windows 8
Langkah berikutnya setelah mendapatkan nomor CH Channel dan ID PAN ID gateway, kita harus mengatur rumus pada library pada program Libelium. Hal ini
dilakukan karena rumus awal untuk sensor luminosity adalah rumus untuk
mendapatkan tegangan (V0).
Untuk mengubah rumus pada library
program, kita harus masuk pada folder
“waspmote-pro-ide-v04-windows\waspmote-pro-ide-v04-windows\libraries\SensorAgr_v20”.
Lalu cari dan buka file bernama WaspSensorAgr_v20.cpp.
Gambar 2.
4 Gambar di mana file Waspmote_v20.cpp berada
Pada file Waspmote_v20.cpp cari baris dengan
nama SENS_AGR_LDR. Pada baris ini
berisi rumus awal yang ada atau tertanam dalam sensor luminosity. Rumus ini
hanya mengambil nilai tegangan (V0) saja dari sinar matahari.
Gambar 2.
5 Gambar baris SENS_AGR_LDR berada
Gambar 2.
6 Rumus awal sensor
Saya menambahkan rumus untuk mencari nilai intensitas cahaya matahari.
Rumus ini hanya cocok untuk menghitung nilai intensitas cahaya di luar ruangan.
Jika di dalam ruangan, maka rumus yang digunakan berbeda. Tergantung jenis
sumber cahaya, ukuran ruangan, dan jaram antara sumber cahaya dan sensor.
Gambar 2.
7 Rumus mencari nilai intensitas cahaya matahari
Keterangan:
Lux = nilai intensitas
cahaya dalam satuan Lux
V0 = nilai
tegangan awal yang didapat dari sensor
2500 = variabel
tetap/konstanta
500 = variabel
tetap/konstanta
3.3 = nilai tahanan pada board sensor dalam satuan KΩ (kilo Ohm)
Berikut adalah coding pada sensor setelah pengubahan
rumus
Gambar 2.
8 Rumus baru untuk menghitung nilai intensitas cahaya matahari
Keterangan:
aux = nilai intensitas
cahaya (Lux)
V0 = nilai
tegangan awal yang didapat dari sensor
((aux2*3.3) / 1023)
2500 = variabel
tetap/konstanta
500 = variabel
tetap/konstanta
3.3 = nilai tahanan pada board sensor dalam satuan KΩ (kilo Ohm)
Setelah menambahkan rumus baru ke dalam library program pada sensor,
selanjutnya adalah melakukan pengunggahan kode pada sensor dengan Waspmote IDE.
Kode untuk sensor ini terbagi menjadi 3 bagian, berikut adalah bagian-bagian
tersebut beserta penjelasannya:
1.
Bagian inisialisasi semua komponen dan
variabel yang dibutuhkan.
1. #include
2. #include
3. #include
4.
5. // PAN (Personal Area Network)
Identifier
6. uint8_t
PANID[2]={0x33, 0x32}; //ID PAN ID (ada pada X-CTU)
7.
8. // Destination MAC address
9. char*
MAC_ADDRESS="0013A2004071E4E3"; //mac address gateway (ada pada
X-BEE gateway)
10.
11. // Sleep time [dd:hh:mm:ss]
12. //char* sleepTime =
"00:00:01:00";
13.
14. //Pointer to an XBee packet structure
15. packetXBee* packet;
16.
17. //sensor variables
18.
float luminosity = 0.0; //variabel untuk nilai
intensitas cahaya matahari yang akan ditampilkan
|
Kode 3.1 Potongan kode inisialisasi sensor
Pada potongan kode tersebut, dapat dilihat pada baris 1-3
digunakan untuk memanggil library-library
yang dibutuhkan. Lalu untuk baris 6 digunakan untuk inisialisasi PAN ID dan
baris nomor 9 digunakan untuk inisialisasi MAC ADDRESS yang akan digunakan
untuk komunikasi dengan gateway yang
terhubung dengan komputer server. Pada baris ke 15 digunakan untuk
mendeklarasikan variabel yang akan digunakan untuk pengiriman paket. Kode pada
baris ke 18 digunakan untuk mendeklarasikan variabel yang digunakan sebagai
tempat dari nilai yang akan diambil oleh sensor.
2.
Bagian setup
yaitu digunakan untuk mengaktifkan semua komponen.
1. void setup()
2. {
3. // Serial.begin(9600);
4. // init
5. USB.ON();
6. USB.println(F("Data"));
7.
8. //init agr board
9. SensorAgrv20.ON(); // board sensor
10.
11. // init XBee
12. xbee802.ON();
13. /////////////////////////////
14. /////////////////////////////
15. // 1. set channel
16. /////////////////////////////
17. xbee802.setChannel(0xC); //ch channel (ada pada X-CTU)
18. // check at commmand execution flag
19. if( xbee802.error_AT == 0 )
20. {
21. USB.println(F("Channel set
OK"));
22. }
23. else
24. {
25. USB.println(F("Error setting
channel"));
26. }
27. /////////////////////////////////////
28. // 2. set PANID
29. /////////////////////////////////////
30. xbee802.setPAN(PANID);
31.
32. // check the AT commmand execution flag
33. if( xbee802.error_AT == 0 )
34. {
35. USB.println(F("PANID set OK"));
36. }
37. else
38. {
39. USB.println(F("Error setting
PANID"));
40. }
41. }
|
Kode 3.2 Potongan kode pada fungsi setup
Kode pada bagian
setup ini pada dasarnya digunakan
untuk mengaktifkan komponen pada board.
Seperti yang dapat dilihat pada baris 5-12, kode tersebut digunakan untuk
mengkatifkan USB, Events 2.0 Board, dan gateway
Xbee 802. Selain untuk mengaktifkan komponen, pada bagian ini juga terdapat
bagian yang digunakan untuk setting variabel yang harus dilakukan sebelum
memulai koneksi antara titik sensor dengan gateway pada komputer.
3.
Bagian yang berisi kode yang akan diulangi
dalam jarak waktu tertentu yang digunakan untuk mengambil nilai
1. variabel oleh sensor.
2. void loop()
3. {
4. USB.println(F("Measuring
sensors..."));
5.
6. // Part 1: Sensor reading
7. // Turn on the sensor and wait for
stabilization and response time
8. SensorAgrv20.setSensorMode(SENS_ON,
SENS_AGR_LDR);
9. delay(10000);
10.
11. // Read the Luminosity from the sensor
12. luminosity =
SensorAgrv20.readValue(SENS_AGR_LDR);
13.
14. // Turn off the sensor
15. SensorAgrv20.setSensorMode(SENS_OFF,
SENS_AGR_LDR);
16.
17.
18. RTC.getTime();
19. ////////////
20.
21.
22. ///////////////////////////////
23. //
1. Create ASCII frame
24. ///////////////////////////////
25.
26. // create new frame
27. frame.createFrame(ASCII, "Data
Luminosity");
28.
29. // add frame fields
30. frame.addSensor(SENSOR_LUM, luminosity);
31. frame.addSensor(SENSOR_BAT,
PWR.getBatteryLevel());
32. frame.addSensor(SENSOR_STR,
"\n");
33. frame.showFrame();
34.
35. ///////////////////////////////
36. // 2. Send packet
37. ///////////////////////////////
38.
39. // set parameters to packet:
40. packet=(packetXBee*)
calloc(1,sizeof(packetXBee)); // Memory allocation
41. packet->mode=UNICAST; // Choose
transmission mode: UNICAST or BROADCAST
42.
43. // set destination XBee parameters to
packet
44. xbee802.setDestinationParams( packet,
MAC_ADDRESS, frame.buffer, frame.length, MAC_TYPE);
45.
46. // send XBee packet
47. xbee802.sendXBee(packet);
48.
49. // check TX flag
50. if( xbee802.error_TX == 0 )
51. {
52. USB.println(F("ok"));
53. }
54. else
55. {
56. USB.println(F("error"));
57. }
58.
59. // free variables
60. free(packet);
61. packet=NULL;
62.
63. // wait for
seconds
64. delay(10000);
65. }
|
Kode 3.3 Potongan kode pada fungsi loop
Bagian terakhir
yang ada pada kode untuk sensor adalah fungsi loop. Fungsi loop ini adalah
fungsi yang akan dijalankan berkali-kali oleh sensor. Fungsi ini berisi
perintah-perintah yang memang dibutuhkan lebih dari sekali, seperti pembacaan
dan pengiriman data. Perintah yang pertama kali dilakukan oleh fungsi ini adalah mengkatifkan sensor luminosity yang
merupakan sensor untuk mengambil data nilai intensitas cahaya dari lingkungan
lalu menunggu sampai sensor benar-benar siap dengan perintah delay. Setelah itu sensor melakukan
pembacaan nilai intensitas cahaya dari lingkungan dan memasukkannya pada
variabel yang telah disiapkan pada bagian pertama sebelumnya, yang ada pada
baris 12. Setelah itu sensor dimatikan dengan menggunakan perintah pada baris
nomor 15. Setelah mendapatkan data yang diinginkan maka perintah selanjutnya
yang dijalankan oleh board adalah membuat frame, yaitu satu tempat menampung
semua variabel yang akan dikirim. Setelah frame dibuat dengan perintah baris nomor
27, maka selanjutnya adalah melakukan perintah baris ke 30 dan 31 yang
bertujuan untuk memasukkan data-data yang diinginkan ke dalam frame seperti
data nilai intensitas cahaya, dan sisa daya pada baterai. Setelah semua data
dimasukkan dalam frame, maka yang selanjutnya dilakukan adalah melakukan
konfigurasi akhir pada paket seperti memberikan MAC ADDRESS tujuan dan
mengirimkannya. Setelah paket dikirim, maka akan dilakukan pengecekan dengan
perintah baris 47-53 apakah paket diterima oleh tujuan. Setelah itu yang
dilakukan oleh board adalah
mengosongkan isi paket yang telah dikirimkan. Dan setelah semuanya selesai,
maka perintah yang terakhir dilakukan adalah delay yang berfungsi untuk memberikan jeda pengiriman paket.
Beriku ini
adalah flowchart cara kerja program
yang diunggah pada sensor.
Gambar 2.
9 Flowchart alur program yang diunggah pada sensor
Setelah membuat
kode dan mengunggahnya pada sensor node, maka yang dilakukan selanjutnya adalah
melakukan uji coba terhadap sensor menggunakan serial monitor yang ada pada
Waspmote IDE.
Gambar 2.
10 Hasil sensor pada serial monitor
Gambar 2.10
menunjukkan hasil pada serial monitor yang didapatkan. Pada gambar terlihat
banyak baris yang merupakan frame yang berisi data-data yang dkirimkan dari
sensor ke gateway pada komputer.
Pada bagian ini akan dijelaskan hal-hal yang perlu dilakukan untuk
menyediakan tempat bagi aplikasi. Akan dijelaskan mulai proses pemasangan
Meteor.JS, konfigurasi database sampai pembuatan antar-muka untuk aplikasi.
Hal pertama yang dilakukan dalam pembuatan aplikasi ini adalah
melakukan pemasangan Meteor.JS yang akan digunakan sebagai framework aplikasi ke dalam komputer server. Pada proyek akhir ini
menggunakan komputer dengan sistem operasi Xubuntu 64 bit sebagai server.
Berikut adalah langkah-langkah pemasangan MeteorJS pada Xubuntu:
1.
Install meteor, jalankan perintah
curl
https://install.meteor.com | sh
Pada Xubuntu, paket “curl” belum terinstall. Sehingga untuk dapat
melakukan perintah di atas, terlebih dahulu menginstall paket curl dengan
perintah berikut.
#apt-get
install curl
2.
Membuat project baru. Masuk ke direktori
dimana project ingin dibuat.
meteor
create [nama project]
Di sini saya
membuat projek MeteorJS dengan nama “luminosatu”. Setelah pembuatan projek
selesai, masuk direktori “luminosatu”. Di dalam direktori terdapat 3 file,
yaitu luminosatu.js yang berfungsi
sebagai tempat untuk mengambil data dari sensor dan juga melakukan penghitungan
data intensitas cahaya untuk diolah. Sehingga mendapatkan hasil berupa kondisi
cuaca. File luminosatu.html dan luminosatu.css merupakan file yang
digunakan untuk mengatur halaman web yang nantinya akan menampilkan hasil
akhir.
3.
Menjalankan aplikasi Meteor dengan
perintah meteor
4. Membuka aplikasi pada browser dengan
alamat sebagai berikut: http://localhost:3000
Setelah berhasil memasang MeteorJS, hal yang
dilakukan selanjutnya adalah pemasangan beberapa paket yang akan digunakan yang
bertujuan untuk memaksimalkan performa dari aplikasi ini. Perintah tersebut dijalankan
pada direktori dari projek. Pemasangan paket Meteor JS dengan menggunakan
perintah:
Meteor
add [nama paket]
Berikut adalah daftar serta penjelasan mengenai paket yang
dipasangkan:
1.
Paket “donaldaverill:serialport”.
Paket serialport ini digunakan oleh pihak server agar dapat
mengakses ataupun mengambil informasi yang ada pada serial port pada server.
Hal ini dilakukan karena sensor mengirimkan data tentang keadaan lingkungan
kepada server melalui serial port.
2.
Paket “arunoda:streams”
Paket streams ini digunakan oleh pihak server dan client. Paket
ini digunakan untuk melakukan komunikasi secara realtime antara server dan
client. Pada saat server menerima data dari sensor melalui serial port, server
akan langsung mengolah data tersebut dan memasukkan informasi-informasi dari
data tersebut ke dalam sebuah array yang selanjutnya akan dimasukkan pada
sebuah stream. Stream inilah yang akan diakses oleh client. Jadi apabila ada
perubahan pada stream maka client
akan mengambil data baru dari stream
tersebut dan menampilkannya saat itu juga.
3.
Paket “mizzao:bootstrap-3”
Paket bootstrap-3 ini merupakan paket yang berisi framework css
dari twitter bootstrap yang dibuat khusus untuk MeteorJS. Paket ini digunakan
untuk membuat tampilan pada sisi client agar dapat menggunakan framework css
twitter bootsrap.
4.
Paket “fongandrew:find-and-modify”
Paket find-and-modify ini adalah paket yang digunakan untuk pengolahan
data pada database. Paket ini digunakan untuk memudahkan proses pembaruan data
pada database.
5.
Paket “maazalik:highcharts”
Paket highcharts adalah paket yang digunakan pada sisi client.
Paket ini akan digunakan untuk membuat grafik yang intrraktif mengenai
intensitas cahaya serta waktu.
6.
Paket “aldeed:tabular”
Paket tabular merupakan paket yang digunakan untuk membuat
datatable pada aplikasi MeteorJS. Pada aplikasi ini, tabular digunakan untuk
membuat tabel yang berisikan data-data mengenai data tanggal, waktu, nilai
intensitas cahaya matahari, kondisi cuaca dan lokasi pengambilan data yang
telah disimpan sebelumnya. Paket ini memungkinkan untuk melakukan pengurutan
data pada setiap kategori dan dapat digunakan untuk melakukan pencarian
terhadap suatu data.
7.
Paket “sdk android”
Paket SDK Android merupakan paket yang berisi tools yang akan digunakan untuk membuat aplikasi Android dari
proyek yang sedang kita kerjakan di MeteorJS. Perintah untuk menginstall paket
ini adalah
Jika sudah menginstall paket SDK tersebut, ketik perintah berikut.
meteor
add-platform android
Setelah platform Android terpasang, coba jalankan virtual Android
dengan mengetik perintah berikut.
meteor
run android
Perintah ini akan menampilkan aplikasi dalam emulator Android
Tampilan pada virtual Android
Paket-paket
tersebut merupakan paket yang digunakan dalam aplikasi ini. Untuk melakukan
pemasangan sebuah paket pada MeteorJS, digunakan sebuah perintah khusus dari
MeteorJS.
Selanjutnya,
masuk ke projek yang telah dibuat dan buka file Javascript luminosatu.js. Lalu tambahkan
kode berupa range kondisi sebagai
berikut.
Waktu
|
Range Lux
|
Kondisi
|
5.30 – 6.30
|
> 3000
|
Cerah
|
1000 – 300
|
Cerah Berawan
|
|
< 1000
|
Mendung
|
|
6.30 – 16.30
|
> 10000
|
Cerah
|
3000 – 10000
|
Cerah Berawan
|
|
< 3000
|
Mendung
|
|
16.30 – 17.30
|
> 3000
|
Cerah
|
1000 – 300
|
Cerah Berawan
|
|
< 1000
|
Mendung
|
Tabel 2.1 Range kondisi cuaca berdasarkan nilai intensitas cahaya
(lux)
Range di atas
didapatkan dari beberapa kali percobaan dengan cara pengambilan sample secara langsung, manipulasi
kondisi lingkungan serta membandingkan dengan penelitian yang terkait [8] .
Pada proyek akhir ini, database yang digunakan adalah MongoDB. MongoDB
tidak memerlukan pemasangan sendiri, karena secara otomatis terpasang saat
melakukan pemasangan MeteorJS. MongoDB merupakan database yang berbasis
dokumen. Sintaks pada database ini berbeda dengan sintaks SQL biasanya. Dengan
menggunakan database ini, pengguna tidak perlu membuat database terlebih dahulu
karena akan dibuat pada saat aplikasi dijalankan.
Pada proyek ini hanya diperlukan satu buah collection yang harus
dibuat secara manual, collection itu berguna untuk membuat nomor urut agar data
dapat ditampilkan dengan baik dan urut pada saat diperlukan pada bagian
antar-muka. Sedangkan collection yang lain akan dibuat oleh aplikasi saat
dibutuhkan.
Berikut adalah langkah-langkah yang harus di lakukan untuk
mempersiapkan database aplikasi proyek akhir ini:
1.
Masuk ke direktori project menggunakan
terminal, dan jalankan aplikasinya dengan menggunakan perintah
Meteor
2.
Membuka tab baru pada terminal, masuk ke
dalam MongoDB menggunakan perintah
meteor
mongo
2.3.3
TAMPILAN
ANTAR-MUKA
Hal yang paling penting dari sebuah aplikasi web maupun
aplikasi-aplikasi pada platform lainnya adalah tampilan antar-muka. Tampilan
antar-muka merupakan hal yang dapat dilihat oleh pengguna. Kenyamanan pengguna
ditentukan dengan bagaimana bentuk maupun tata-letak dari fitur-fitur yang ada
pada aplikasi yang mereka gunakan.
Pada proyek ini, kami membuat sebuah aplikasi dengan tampilan
antar-muka menggunakan tema single-page.
Jadi, pada aplikasi web ini haanya menggunakan satu buah halaman. Pada satu
halaman tersbut sudah terdapat semua fitur yang ada pada aplikasi ini. Berikut
adalah desain layout dari aplikasi proyek akhir ini:
Gambar Layout aplikasi
pada platform web “Home”
Gambar di atas merupakan panel “Home”. Panel ini merupakan
panel yang berisi fitur untuk menampilkan lokasi pengambilan data, nilai
intensitas cahaya dalam satuan Lux, kondisi cuaca berdasarkan nilai intensitas
cahaya serta waktu saat pengambilan data dilakukan. Pada panel “Home” ini, data
yang ditampilkan merupakan data real time
per satuan detik.
Gambar Layout aplikasi
pada platform web “History”
Gambar tersebut merupakan panel “History”. Panel ini
merupakan panel yang berisi fitur untuk menampilkan tabel yang berisi lokasi
pengambilan data, nilai intensitas cahaya dalam satuan Lux, kondisi cuaca
berdasarkan nilai intensitas cahaya serta waktu saat pengambilan data
dilakukan. Pada panel “History” ini, data yang ditampilkan merupakan nilai
rata-rata data yang telah dihitung selama satu menit.
UJI COBA DAN
ANALISA
Pada bab ini akan
dibahas tentang pengimplemantasian sistem pada studi kasus sebenarnya,
pengujian, dan analisa proyek untuk melihat apakah proyek yang telah dikerjakan/dibuat
telah sesuai dengan yang telah direncanakan pada awal penegrjaan. Pengujian
dilakukan dengan cara melakukan percobaan secara berulang-ulang. Setelah
melakukan percobaan, maka selanjutnya membandingkan keadaan sebelum dan sesudah
dilakukan percobaan. Dengan adanya pengujian ini maka dapat diketahui adanya
kekurangan yang ada pada proyek ini. Sehingga dapat dilakukan perbaikan jika
terjadi kesalahan nantinya.
Bahan
dan alat yang digunakan untuk pengujian dalam proyek akhir ini dibagi menjadi
2, yaitu hardware dan sofware. Berikut adalah spesifikasi hardware dan software yang digunakan dalam pengujian proyek akhir ini:
a.
Perangkat keras (hardware)
-
Laptop Toshiba L645.
-
Waspmote Events Sensor Kit, yang berisikan:
·
Sensor Luminosity.
·
Waspmote Events 2.0 Board.
-
Waspmote Starter Kit, yang berisikan:
·
Waspmote 802.15.4 Board.
·
Waspmote Gateway 802.15.4.
·
Baterai 2300 mAh.
·
Kabel MiniUSB.
b.
Perangkat lunak
-
Windows 8 64-bit untuk pengaturan awal sensor.
-
Mozilla Firefox.
-
Sublime Text 3
-
Robomongo
-
Waspmote Pro IDE 4.
-
Linux sebagai server, dengan spesifikasi:
·
Sistem Operasi :
Xubuntu 64-bit.
·
Memory :
2048 MB.
·
Hard Disk :
15GB.
Pada bagian ini akan dilakukan proses pemasangan
dan pengujian sensor yang dilakukan terlebih dahulu sebelum
mengimplementasikannya dengan aplikasi sebenarnya. Bagian ini akan dibagi
menjadi 2 bagian, yaitu yang pertama adalah bagaimana menggabungkan
komponen-komponen yang dibutuhkan dalam titik sensor dan yang kedua adalah
bagaimana menguji coba sensor sebelum diimplementasikan dalam aplikasi dengan
menggunakan serial monitor.
3.2.1
PEMASANGAN
SENSOR
Sebelum dilakukan pengujian, perlu dilakukan
pemasangan komponen-komponen agar dapat digunakan dalam pengimplementasian
proyek ini. Berikut adalah cara bagaimana menggabungkan komponen-komponen
penyusun sensor Events titik sensor:
1.
Mempersiapkan sensor Luminosity).
Gambar 3.1 Sensor Luminosity/LDR (Light Dependent Resistor)
Gambar 3.1 merupakan penampakan sensor dari
posisi atas. Terdapat 2 kaki yang akan dipasangkan pada socket pada board.
2.
Memasangkan sensor Luminosity dengan Events 2.0
Board.
Gambar 3.2 Events Board dan sensor luminosity yang telah terpasang
Seperti yang dapat dilihat pada Gambar 3.2,
sensor dipasangkan pada board dengan
posisi menghadap ke arah luar. Kaki-kaki dari sensor dimasukkan ke dalam socket pada board sampai tidak bisa msauk lebih dalam lagi ke dalam socket. Sensor dapat dipasang pada soket
yang mempunyai 2 port.
3.
Mempersiapkan Waspmote 802.15.4 Board.
Gambar 3.3 Waspmote Board
Gambar 3.3 merupakan foto penampakan board Waspmote yang merupakan bagian
utama dari sensor yang digunakan untuk mengirimkan data yang didapatkan oleh board dari sensor. Dapat dilihat pada
gambar terdapat 2 lingkaran, lingkaran yang pertama berwarna merah yang
merupakan modul Xbee yang digunakan untuk berkomunikasi dengan modul Xbee yang
terpasang pada gateway di server. Sedangkan lingkaran yang berwarna kuning
merupakan socket untuk menyambungkan
baterai pada board yang digunakan
sebagai sumber daya dari sensor.
4.
Memasangkan Events 2.0 Board yang telah terpasang sensor dengan Waspmote 802.15.4 Board menjadi satu buah Events sensor node.
Gambar 3.4 Events sensor node dengan sensor luminosity yang
terpasang
Gambar 3.4 merupakan titik sensor yang akan
digunakan dalam pengambilan data tingkat intensitas cahaya matahari pada
lingkungan. Titik sensor diatas merupakan gabungan dari 2 board, yaitu Events 2.0 Board
yang telah terpasang sensor yang berfungsi untuk mengambil data dengan Waspmote 802.15.4 Board yang berfungsi untuk mengirimkan data ke
gateway yang ada pada server. Sebelum meletakkan titik sensor pada lingkungan
implementasi, harus dipastikan bahwa baterai terisi dengan daya yang cukup
untuk melakukan tugas pengambilan data.
5.
Memasangkan Waspmote Gateway pada laptop.
Gambar 3.5 Waspmote gateway pada laptop
Gambar 3.5 merupakan penampakan Waspmote
Gateway yang terpasang pada port USB pada laptop yang digunakan sebagai server.
Setelah proses pembuatan titik sensor, hal
yang dilakukan selanjutnya adalah pengunggahan kode pada titik sensor agar
dapat melakukan tugas yang diinginkan, yaitu mengambil data dari lingkungan
lalu mengirimkannya kepada gateway yang terpasang pada server.
Berikut adalah langkah-langkah pemberian kode
pada sensor:
1.
Membuka aplikasi Waspmote IDE.
Gambar 3.6 Aplikasi Waspmote IDE
Gambar
3.6 merupakan penampakan aplikasi Waspmote IDE yang digunakan untuk melakukan
proses pembuatan, compile, dan
pengunggahan kode pada titik sensor.
2.
Menulis kode yang berisi perintah untuk
mengambil data dari lingkungan dan perintah untuk mengirimkan data tersebut
kepada gateway pada server.
Gambar 3.7 Kode yang diunggah pada titik
sensor
Pada Gambar
3.7 di atas, terdapat perintah-perintah yang digunakan oleh titik sensor untuk
melakukan tugas-tugasnya. Tugas yang dimiliki oleh titik sensor mulai dari mencari
gateway yang akan dikirimi data,
mengambil data nilai intensitas cahaya matahari, sampai mengirim data ke
gateway pada server.
3.
Menghubungkan titik sensor dengan laptop
menggunakan miniUSB.
Gambar 3.8 Titik sensor terhubung
pada laptop
Untuk melakukan proses pengunggahan kode yang
berisi perintah-perintah pada titik sensor, maka titik sensor harus dihubungkan
pada laptop yang digunakan untuk menulis kode menggunakan kabel miniUSB,
seperti yang dapat dilihat pada Gambar 3.8. Setelah menghubungkan titik sensor
pada laptop, pastikan switch pada board (lingkaran kuning) yang ada di
titik sensor dalam keadaan menyala atau switch
dalam keadaan berada di kiri. Lampu led akan menyala seperti pada Gambar 3.8
apabila board sudah dalam keadaan
aktif atau menyala.
4.
Melakukan proses pengunggahan kode pada titik
sensor.
Gambar 3.9 Tombol
untuk mengunggah kode
Setelah selesai proses penulisan kode dan menyambungkan
titik sensor pada port USB laptop, hal yang dilakukan selanjutnya adalah
melakukan proses pengunggahan. Proses pengunggahan dapat dilakukan dengan
menekan tombol upload yang berada pada tombol ke 2 dari kiri yang ditunjukkan
dengan lingkaran kuning pada Gambar 3.9.
5.
Manjalankan aplikasi Waspmote IDE melalui
serial port
Gambar 3.10 Tombol untuk menampilkan data
melalui serial port
Setelah selesai mengunggah kode pada sensor,
selanjutnya adalah melakukan uji coba. Lepas sensor, lalu tancapkan gateway ke laptop. Pastikan baterai
memiliki cukup daya dan juga switch on/off
dalam keadaan ‘ON’. Setelah itu pada sebelah kanan atas sebelah kiri logo
Libelium klik ikon serial seperti pada Gambar 3.10 di atas.
Pada bagian ini akan dilakukan uji coba
pengambilan data intensitas cahaya matahari dari lingkungan oleh titik sensor
dan menerima data oleh gateway pada
server. Uji coba ini menggunakan serial monitor yang ada pada Waspmote IDE.
Berikut ini adalah data yang diterima oleh gateway pada server
Gambar 3.11 Data yang diterima gateway
Gambar 3.11 merupakan screenshot dari serial monitor pada saat melakukan monitoring terhadap gateway. Terlihat
pada Gambar 3.11, terdapat banyak sekali baris-baris frame yang diterima oleh
gateway. Baris-baris frame tersebut merupakan data yang diterima dari titik
sensor. Pada satu baris frame tersebut terdapat beberapa informasi, mulai dari
titik sensor pengirim frame, nomor index frame, nilai intensitas cahaya
matahari, serta sisa daya yang terdapat pada baterai.
Setelah
memastikan bahwa sensor dapat bekerja dengan benar, baik dalam proses
pengambilan data maupun proses pengiriman dan penerimaan data, hal yang
dilakukan selannjutnya adalah melakukan uji coba pada aplikasi yang telah
diintegrasikan dengan sensor. Pada tahap ini, akan dilakukan proses uji coba
terhadap semua fitur yang ada pada aplikasi. Pada aplikasi ini ada 2 fitur
utama, yaitu menampilkan data secara real
time dan rekap data
Berikut
adalah proses uji coba pengoperasian aplikasi dan uji coba fitur-fitur yang
telah disebutkan sebelumnya.
1.
Menjalankan aplikasi sebagai server.
Gambar 3.127 Menjalankan aplikasi
sebagai server
Hal pertama yang dilakukan untuk menjalankan
aplikasi proyek akhir ini adalah dengan mengaktifkan server. Untuk mengaktifkan
server menggunakan perintah command line
pada aplikasi terminal pada server. Perintah yang digunakan untuk mengaktifkan
server adalah meteor pada
direktori dari aplikasi. Gambar 3.12 merupakan screenshot pada saat melakukan proses pengaktifan pada server.
2.
Menjalankan aplikasi sebagai client.
Gambar 3.13 Menjalankan aplikasi sebagai client
Untuk menjalankan aplikasi sebagai client,
dapat dilakukan dengan menggunakan browser dan mengakses alamat ip dari server
dan menambahkan port yang digunakan oleh aplikasi. Gambar 3.13 menunjukkan cara
mengakses aplikasi sebagai client dengan cara mengakses localhost dari server
dan menambahkan port 3000 di akhir alamat ip yang merupakan port di mana
aplikasi dijalankan.
3.
Uji coba menu “Home”
\Gambar 3.14 Fitur “Home” menampilkan data real time
Gambar 3.14 merupakan screenshot aplikasi pada menu “Home”. Pada menu ini menampilkan
data lokasi pengambilan data, nilai intensitas cahaya, kondisi cuaca, dan waktu
pengambilan data. Data intensitas cahaya dan kondisi cuaca ditampilkan per
detik. Sedangkan waktu akan otomatis ter-update
per menit.
4.
Uji coba menu “History”.
Gambar 3.15 Menu “History” menampilkan data berupa tabel
Gambar 3.15 menunjukkan screenshot menu “History”. Menu ini menampilkan data tanggal-waktu
pengambilan data per menit, nilai rata-rata intensitas cahaya matahari per
menit, kondisi cuaca, serta lokasi pengambilan data.
Tahap
implementasi dalam proyek akhir ini dilakukan pada lingkungan luar ruangan agar
mendapatkan hasiul yang maksimal. Saya memilih 3 lokasi untuk sample. Yaitu rumah (Sidoarjo), kos
(Tegal Mulyorejo Baru, Sukolilo) dan kampus PENS.
Berikut
adalah gambar lokasi yang saya pilih untuk sampling.
Gambar 3.16 Rumah belakang
Gambar 3.16 merupakan gambar rumah bagian
belakang yang saya jadikan lokasi pengambilan data nilai intensitas cahaya
matahari. Gambar 3. 17 di bawah menunjukkan tampak langit saat pengambilan
data.
Gambar 3.17 Tampak langit
saat pengambilan sample di rumah
Gambar 3.18 Kos lantai 3
Gambar
3. 18 merupakan lokasi pengambilan data yang kedua, yaitu di kos lantai 3 di
Tegal Mulyorejo Baru, Sukolilo.
Gambar 3.19 Sensor mengambil data di Lapangan Merah, PENS
Gambar 3.20 Kondisi langit di Lapangan Merah, PENS
Gambar
3.19 merupakan gambar saat sensor mengambil data di Lapangan Merah, kampus
PENS. Pada Gambar 3. 20 menunjukkan gambar kondisi langit saat saya melakukan
pengambilan data di Lapangan Merah, kampus PENS.
Pada
bagian ini akan dijelaskan mengenai alur pengimplementasian dari proyek akhir
ini. Berikut adalah alur atau tahapannya:
1.
Meletakkan sensor pada ruang terbuka.
Gambar 3.21 Sensor board di
Lapangan Merah, PENS
Gambar 3.22 Sensor diletakkan di
kos lantai 3, Tegal Mulyorejo Baru, Sukolio
Pada tahap implementasi, sensor diletakkan di
luar ruangan seperti yang ditunjukkan pada Gambar 3.21 dan 4.22.
2.
Memasangkan gateway pada server.
Gambar 3.23 Waspmote gateway pada server
Gambar 3.23 menunjukkan gateway yang dihubungkan pada laptop yang digunanakan sebagai
server yang akan menerima data dari titik sensor dan menyebarkannya ke semua client yang terhubung. Gateway harus terhubung pada port
/dev/ttyUSB0 pada server agar aplikasi dapat berjalan.
3.
Menjalankan aplikasi.
Gambar 3.24 Menjalankan aplikasi
pada server
Gambar 3.24 menunjukkan cara menjalankan
aplikasi pada server menggunkan perintah meteor pada terminal.
Gambar 3.25 Menjalankan aplikasi pada client menggunakan browser
Saya melakukan implementasi menggunakan
browser yang ada pada laptop. Aplikasi dijalankan dengan localhost dan
menambahkan port tempat aplikasi dijalankan setelahnya. Gambar 3.25 merupakan
tampilan pada client saat aplikasi dijalankan.
4.
Mendapatkan nilai intensitas cahaya matahari
dari aplikasi dan menyimpan ke database.
Gambar 3.26 Isi database dilihat
dengan aplikasi Robomongo
Setelah aplikasi dijalankan, hal yang
dialakukan selanjutnya adalah mendapatkan nilai intensitas cahaya matahari.
Nilai intensitas cahaya, kondisi cuaca, waktu pengambilan dan lokasi
pengambilan data akan disimpan secara otomatis per menit.
Implementasi di atas dilakukan setiap hari
pada waktu pagi hingga sore hari antara jam 6 pagi hingga pukul 17.30 sore
hari. Jika malam hari tidak bisa melakukan pengambilan data dikarenakan tidak
ada sinar matahari.
Setelah dilakukan implementasi dan melakukan
beberapa kali pengambilan data nilai intensitas cahaya matahari di 3 tempat
yang berbeda, yaitu rumah (Sidoarjo), kos (Tegal Mulyorejo Baru, Sukolilo) dan
di Lapangan Merah, kampus PENS.
Berikut adalah hasil dari percobaan
pengambilan data intensitas cahaya matahari pada 3 lokasi tersebut.
Gambar 3.27 Hasil pengambilan data
di rumah
Gambar 3.28 Hasil pengambilan data
di kos
Gambar 3.29 Hasil pengambilan data
di kampus PENS
Berdasarkan hasil dari Gambar 3.27, 3.28 dan 3.29
dapat diambil kesimpulan bahwa cuaca rata-rata adalah cerah. Namun, untuk
menguji sensor agar mendapatkan hasil berupa kondisi cuaca yang berbeda, saya
melakukan manipulasi sebagai contoh apabila kondisi langit sedang mendung atau
berawan dengan cara menutup sensor.
Gambar 3.30 Manipulasi sensor agar mendapatkan kondisi
yang berbeda
Setelah
melakukan manipulasi tersebut, berikut adalah hasil yang ditampilkan pada client.
Gambar 3.31 Kondisi cerah berawan
Pada Gambar
3.31 kondisi cerah berawan terdapat nilai yang cukup tinggi di tabel intensitas
cahaya. Hal ini disebabkan kondisi cerah yang mempunyai nilai intensitas cahaya
yang tinggi dan nila- nilai tingkat intensitas cahaya matahari pada saat
kondisi cerah berawan yang tidak begitu rendah. Kondisi cerah berawan
didapatkan dari rata-rata kondisi cerah berawan yang lebih banyak daripada
kondisi cerah.
Gambar 3.32 Kondisi mendung
Pada Gambar
3.32 kondisi mendung terdapat nilai awal yang cukup tinggi di tabel intensitas
cahaya. Hal ini disebabkan kondisi cerah yang mempunyai nilai intensitas cahaya
yang tinggi dan nila-nilai tingkat intensitas cahaya matahari pada saat kondisi
mendung yang tidak begitu rendah. Kondisi mendung didapatkan dari rata-rata
kondisi mendung yang lebih banyak daripada kondisi cerah maupun kondisi cerah
berawan. Pada data selanjutnya terjadi kestabilan kondisi dengan nilai
rata-rata intensitas cahaya di bawah 1000 Lux.
Gambar 3.33 Tampilan pada Android
Pada Gambar 3.33 di
atas tampak bagaimana pikasi ketika dijalankan pada device Android.
Tampilan antar mukanya sama dengan tampilan antar muka pada web.
good aplication bro :)
BalasHapusgan source websites nya ada gak,,,
BalasHapuskalaw ada kirim ke email saya gan, jonipolbeng@gmail.com
Thanks for sharing information post.
BalasHapus