PRAKIRAN CUACA BERBASIS ARDUINO MENGGUNAKAN METODE NAIVE BAYES LAPORAN Diajukan Untuk Memenuhi Tugas Akhir Mata Kuliah Pengenalan Pola Disusun oleh: Rania Akhmalia 135150300111001 Rifqi Anshari 135150300111012 PROGRAM STUDI TEKNIK KOMPUTER JURUSAN INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA MALANG 2016 1. Latar Belakang Prakiraan cuaca merupakan salah satu faktor penting dalam kehidupan sehari-hari, karena dapat mempengaruhi aktifitas yang dilakukan oleh masyarakat. Ilmu teknologi yang semakin berkembang sangat mungkin dimanfaatkan dalam hal prakiraan cuaca, dalam perhitungannya prakiraan cuaca ditentukan oleh beberapa parameter yang sangat mepengaruhi kondisi cuaca, parameter tersebut yaitu temperatur, curah hujan, penguapan, penyinaran matahari, tekanan udara, kelembaban dan angin. Badan Meteorologi Klimatologi dan Geofisika (BMKG) mendapatkan nilai-nilai parameter dari peralatan pengamatan termometer, penakar hujan, evaporation pan/open pan untuk penguapan, Radiameter Gun Bellani untuk penyinar matahari, barometer, higrometer dan cup counter anemometer untuk angin. Pertumbuhan yang pesat dari akumulasi data menyebabkan banyak data yang terkumpul tetapi tidak dapat diolah dengan baik sehingga tidak memperoleh informasi yang baik pula. ARIMA (autoregresive integrated moving average) dapat diartikan sebagai gabungan dua model, yaitu Model Autoregresi (AR) dan Moving Average (MA). Model ini tidak mempunyai suatu variabel yang berbeda sebagai variabel bebas, tetapi menggunakan informasi dalam series yang sama dalam membentuk model, yang pada akhirnya sangat bermanfaat untuk peramalan. Peramalan dengan metode ini lebih dipercaya daripada peramalan yang dilakukan dengan model prediksi tradisional, hal ini berdasarkan kasus sebelumnya. Namun, hal ini tentu saja perlu dipelajari lebih lanjut oleh para peneliti yang tertarik menggunakan metode serupa. Aplikasi prakiraan cuaca menggunakan ARIMA dibuat sebagai alatbantu untuk memprediksi cuaca yang pada kenyataannya susah untuk diprediksi, serta membantu BMKG dalam pengelolaan data terutama untuk penentuan klasifikasi prediksi cuaca di daerah tersebut. Pengukuran dan pengolahan data yang hasil ukur sangat penting digunakan untuk proses klasifikasi prakiraan cuaca. Penelitian selanjutnya dilakukan dengan mengambil dua parameter dari beberapa parameter yang telah disebutkan yaitu temperature dan kelembaban. Pengambilan data dilakukan menggunakan rangkaian sederhana sensor suhu dan kelembaban dengan mikrokontroller arduino. Penelitian ini juga menggunakan algoritma naïve bayes sebagai klasifikasi dalam prakiraan cuaca yang sebelumnya diproses menggunakan metode ARIMA. 2. Diagram Sistem Berikut adalah diagram blok dari rancangan sistem prakiraan cuaca berbasis arduino menggunakan metode klasifikasi naïve bayes. INPUT PROSES OUTPUT Penjelasan: a. Input Sensing Input sensing merupakan proses pengambilan data primer. Pada sistem ini data berupa temperature dan kelembaban yang kemudian dikumpulkan untuk diolah menggunakan algoritma naïve bayes. b. Proses - Proses pertama adalah pengumpulan data temperature dan kelembaban selama satu minggu yang berguna sebagai data latih. - Proses kedua adalah pengkategorian data skala suhu dingin / panas dan kelembaban lembab / kering. - Proses ketiga yaitu perhitungan peluang kejadian masing-masing kelas. c. Hasil Klasifikasi Klasifikasi didapatkan dari hasil perhitungan peluang. Dimana peluang kelas yang terbesar merupakan hasil klasifikasi sebenarnya. 3. Flow Chart Sistem Mulai Pengukuran Input data suhu dan kelembab an Pengkategorian data training Perhitungan probabilitas Klasifikasi Selesai Penjelasan flow chart: a. Pengukuran Pengukuran dilakukan dengan menggunakan sensor temperature dan kelembaban jenis dht 11. b. Input data hasil pengukuran Data hasil pengukuran kemudian diinputkan ke dalam mikroontroler arduino uno untuk diolah lebih lanjut. c. Pengkategorian data latih Pengkategorian suhu: Temperature dingin <= 25oC Temperature panas > 25oC Pengkategorian kelembaban: Kering <= 55% Lembab >55% d. Perhitungan probabilitas Perhitungan probabilitas menggunakan rumus, Dimana: - Likelihood Probability P(x | Ɯj ) ; adalah probabilitas kelas tersebut pada seluruh data uji - Prior Probability P(Ɯj ) ; adalah probabilitas dari data uji yang berkategori terhadap keseluruhan data uji - Evidence P(x); adalah jumlah total dari semua likelihood probability yang dikalikan dengan prior probability. Evidence ini yang akan membuat nilai posterior probability hanya antara 0 dan 1. e. Proses Klasifikasi Proses klasifikasi dilakukan jika mendapati hasil perhitungan probabilitas suatu kelas lebih besar dari kelas lain. 4. Data a. Suhu Suhu menunjukkan derajat panas dari suatu objek terukur (benda, ruang dll). Satuan suhu Internasional adalah Kelvin. Namun pada projek ini digunakan satuan celcius yang memiliki titik beku/titik didih = 0/100 derajat celcius. (untuk proses pengambilan data latih source code terlampir) b. Kelembaban Kelembaban adalah konsentrasi uap air di udara atau jumlah kandungan uap air yang ada dalam udara. Kandungan uap air di udara berubah-ubah bergantung pada suhu Makin tinggi suhu, makin banyak kandungan uap airnya. (untuk proses pengambilan data latih source code terlampir) 5. Proses Pengukuran a. Peralatan yang dibutuhkan - DHT11 DHT11 adalah sensor digital yang dapat mengukur suhu dan kelembaban udara di sekitarnya. Memiliki tingkat stabilitas yang sangat baik serta fitur kalibrasi yang sangat akurat. Koefisien kalibrasi disimpan dalam OTP program memory, sehingga ketika internal sensor mendeteksi sesuatu, maka module ini menyertakan koefisien tersebut dalam kalkulasinya. DHT11 menjadi input sensing untuk data latih yang akan digunakan untuk penentuan keputusan. DHT11 memiliki spesifikasi : Supply Voltage: +5 V Temperature range : 0-50 °C error of ± 2 °C Humidity : 20-90% RH ± 5% RH error Interface : Digital - Arduino Uno Arduino Uno adalah board mikrokontroler berbasis ATmega328. Uno memiliki 14 pin digital input / output, 6 input analog, kecepatan clock 16 MHz, koneksi USB, jack listrik, header ICSP, dan tombol reset.Arduino menjadi sumber pemrposes data dan sebagai tempat menjalankan algorithma penentu keputusan .Arduino Uno memiliki spesifikasi : Mikrokontroler : ATmega328 Operasi tegangan : 5Volt Input tegangan : disarankan 7-11Volt Input tegangan batas : 6-20Volt Pin I/O digital : 14 (6 bisa untuk PWM) Pin Analog : 6Arus DC tiap pin I/O50mA Arus DC ketika 3.3V : 50mA Memori flash : 32 KB (ATmega328) dan 0,5 KB digunakan oleh bootloader SRAM : 2 KB (ATmega328) EEPROM : 1 KB (ATmega328) Kecepatan clock : 16 MHz b. Metode yang digunakan Proses klasifikasi prakiraan cuaca menggunakan data latih yang di kumpulkan dalam kurun waktu tertentu sebagai penentu keputusan prakiraan cuaca pada hari yang diinginkan. Pengambilan keputusan akhir menggunakan metode naïve bayes. Naïve bayes merupakan sebuah metode klasifikasi yang berakar pada teorema bayes. Pada naïve bayes untuk memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya. Ciri utama dari naïve bayes adalah asumsi yang sangat kuat akan indepedensi dari masing – masing kondisi. 6. Implementasi Data latih dikumpulkan dan dikategorikan menggunakan rata – rata suhu dan kelembaban dari masing - masing hari dengan kriteria yang ditentukan yaitu panas (suhu > 25 oC ), dingin (suhu ≤ 25 oC), lembab (kelembaban > 55%), kering (kelembaban ≤ 55%). Selanjutnya input data uji. Input tersebut akan ditentukan prakiraan cuaca yang mungkin terjadi pada hari tersebut. Hal ini dilakukan dengan cara metode naïve bayes. Pada input baru memiliki kategori dingin dan lembab, dari data tersebut dapat diketahui : - Prior probability peluang ber-kelas hujan dari semua pengukuran, p(hujan)= 2/7 - Conditional probabillity peluang berkelas hujan pada kondisi suhu = dingin dan kelembaban = lembab, p (lembab&dingin | hujan) = 1/5 - Prior probability peluang ber-kelas ber-kelas tidak hujan dari semua pengukuran, p(Tidak hujan)= 5/7 - Conditional probabillity peluang berkelas tidak hujan pada kondisi suhu = dingin dan kelembaban = lembab, p (lembab&dingin | tidak hujan) = 2/2 Dari peluang kondisi suhu dan kelembaban digolongkan sebagai hujan adalah : ( ( ) ) ( ) Dari peluang kondisi suhu dan kelembaban digolongkan sebagai tidak hujan adalah : ( ( ) ) ( ) Karena peluang hujan dengan kondisi suhu = dingin dan kelembaban = lembab untuk digolongkan menjadi hujan adalah 0.67 sedangkan untuk digolongkan sebagai tidak hujan adalah 0.33 , maka pada hari tersebut tersebut diperkirakan cuaca akan hujan. LAMPIRAN Lampiran 1 Source code pengukuran suhu #include <dht.h> #define dht_apin A0 // Analog Pin sensor is connected to dht DHT; void setup(){ Serial.begin(9600); delay(500);//Delay to let system boot Serial.println("DHT11 Humidity & temperature Sensor\n\n"); delay(1000);//Wait before accessing Sensor }//end "setup()" void loop(){ DHT.read11(dht_apin); Serial.print("Current humidity = "); Serial.print(DHT.humidity-5); Serial.print("% "); Serial.print("temperature = "); Serial.print(DHT.temperature-5); Serial.println("C "); delay(5000); } Lampiran 2 Source code naïve bayes #include <stdio.h> #include <math.h> float float float float float float a=1; b=2; c=5; d=7; iYa = (b/b); iTidak = (a/c); float jumlahT = (c/d); float jumlahY = (b/d); float totalInput; float Htidak; float Hya; void setup() { Serial.begin(9600); totalInput = ((iYa*jumlahY)+(iTidak*jumlahT)); Htidak = (iTidak*jumlahT)/totalInput; Hya = (iYa*jumlahY)/totalInput; Serial.println("====KLASIFIKASI===="); Serial.print("Besar Peluang terjadi HUJAN = "); Serial.println(Hya); Serial.print("Besar Peluang TIDAK terjadi HUJAN = "); Serial.println(Htidak); if (Hya > Htidak){ Serial.println("==kesimpulan=="); Serial.println("HUJAN"); } else { Serial.println("==kesimpulan=="); Serial.println("TIDAK HUJAN"); } }