Tabel A.4.3 Percobaan Hari Pertama Percobaan
Pukul
Jungkitan Curah Hujan (mm) Suhu (OC) Kelembaban (%) 01:00 0 0 25,45 68,02 02:00 0 0 25,21 65,08 03:00 0 0 24,78 65,65 04:00 0 0 24,81 63,21 05:00 0 0 25,01 70,4 06:00 0 0 25,06 69,41 07:00 0 0 25,12 74,29 08:00 0 0 25,06 70,79 09:00 0 0 25,24 71,68 10:00 0 0 25,11 71,85 11:00 0 0 25,09 70,32 12:00 0 0 25,04 70,57 13:00 0 0 25,02 71,15 14:00 0 0 25,08 72,68 15:00 118 47 26,87 83,73 16:00 72 29 25,35 93,87 17:00 10 4 24,86 93,44 18:00 22 9 24,82 94,15 19:00 20 8 24,59 95,08 20:00 10 4 24,55 95,88 21:00 12 5 24,56 94,83 22:00 6 2 24,44 95,91 23:00 1 0 24,39 96,27 24:00 0 0 24,43 95,21 Jumlah 271 108 - - Rata-rata 22,6 10,8 24,9975 83,6791
Tabel B.4.4 Percobaan Hari ke 2 s/d 30 Percobaan
Tanggal
Jungkitan Curah Hujan (mm) Suhu (OC) Kelembaban (%) 24 Des 0 0 25.85 85.35 25 Des 17 7 27.60 87.66 26 Des 0 0 26.26 87.34 27 Des 0 0 25.42 95.72 28 Des 0 0 27.39 87.87 29 Des 0 0 27.71 97.94 30 Des 0 0 31.89 72.47 31 Des 168 67 31.66 88.83 1 Jan 65 26 26.55 89.65 2 Jan 0 0 27.46 87.45 3 Jan 0 0 29.38 85.12 4 Jan 0 0 28.74 86.35 5 Jan 0 0 27.69 84.20 6 Jan 0 0 28.74 86.73 7 Jan 12 5 24.37 88.63 8 Jan 10 4 25.52 97.95 9 Jan 15 6 24.82 98.65 10 Jan 0 0 23.83 95.72 11 Jan 37 15 24.53 89.46 12 Jan 49 20 27.43 85.64 13 Jan 55 20 23.75 90.23 14 Jan 480 192 22.85 92.85 15 Jan 585 234 23.35 91.45 16 Jan 850 340 22.33 92.75 17 Jan 9000 3600 22.83 95.34 18 Jan 4536 1814 23.71 95.79 19 Jan 4788 1915 22.45 94.72 20 Jan 2940 1176 24.23 90.08
Percobaan Tanggal
Jungkitan Curah Hujan (mm) Suhu (0C) Kelembaban (%) 21 Jan 1776 710 26.76 91.14 22 Jan 972 389 24.39 92.84 23 Jan 456 182 24.39 91.75 24 Jan 108 43 25.61 90.11 Rata-rata 841,2188 336,4063 25,84621 90,14967
Tabel C.4.5 Perbandingan Data dengan BMKG
Data Tanggal Kategori Hujan Suhu (OC) Kelembaban (%)
24 Des Cerah 23 - 32 64 - 96
25 Des Hujan Ringan 24 - 31 60 - 79
26 Des Cerah 25 - 33 47 - 97
27 Des Cerah 26 - 32 50 - 92
28 Des Cerah Berawan 25 - 34 51 - 90
29 Des Cerah 26 - 32 49 - 96
30 Des Cerah 25 - 32 50 - 96
31 Des Hujan Sedang 24 - 30 49 - 90 1 Jan Hujan Ringan 25 - 31 50 - 92
2 Jan Cerah 24 - 34 48 - 90
3 Jan Cerah Berawan 25 - 32 48 - 91
4 Jan Cerah 25 - 34 47 - 89
5 Jan Cerah 26 - 33 48 - 84
6 Jan Cerah Berawan 25 - 34 49 - 89
7 Jan Berawan 24 - 29 50 - 91
8 Jan Berawan 25 - 30 51 - 98
9 Jan Berawan 24 -30 52 - 98
10 Jan Berawan 23 - 29 54 - 96
11 Jan Hujan Ringan 24 - 29 49 - 90 12 Jan Hujan Ringan 25 - 30 48 - 92 13 Jan Hujan Ringan 23 - 30 50 - 92 14 Jan Hujan Lebat 23 - 29 53 - 94 15 Jan Hujan Sedang 24 -29 48 - 93 16 Jan Hujan Sedang 22 - 29 49 - 92
17 Jan Hujan Lebat 22 - 30 53 - 97
18 Jan Hujan Lebat 23 - 29 54 - 98
19 Jan Hujan Lebat 22 - 29 52 - 96
Data Tanggal Curah Hujan (mm)
Suhu (0C) Kelembaban (%)
21 Jan Hujan Lebat 23 - 30 41 - 95
22 Jan Hujan Sedang 23 - 32 50 - 95 23 Jan Hujan Sedang 24 - 31 49 - 92 24 Jan Hujan Sedang 24 - 30 44 - 94
Coding Pengiriman Simcom 900 AT + CREG = 1 AT + CGATT = 1 AT + CIPHEAD = 1 AT + CSTT = "3data","3data","3data" AT + CGDCONT = 1,"IP","3data" AT + CIICR AT + CIFSR AT + CDNSCFG = "8.8.8.8","8.8.8.8" AT CIPSTART = "TCP","www.widhika.com","80" AT + CIPSEND > POST /proses.php HTTP/1.1 ^M ^J Host: www.widhika.com ^M ^J
Content - Type: application/x-www-Form-Urlencoded ^M ^J Content - Length: 67 ^M ^J
suhu=20&kelembapan=70&curah+hujan=100&arah+angin=utara&send=Sign+up
Ket :
Coding Arduino #include <MsTimer2.h> #include <NewSoftSerial.h> #include <LiquidCrystal.h> #include <SHT1x.h> #include <EEPROM.h> #include <String.h> #define dataPin 10 #define clockPin 11 NewSoftSerial mySerial(12,13); LiquidCrystal lcd(8,7,6,5,4,3); SHT1x sht1x(dataPin, clockPin); int pbIn=0; unsigned int rain; int time=0; float TA=0; float RH=0; int adrs=0;
unsigned long longTA; unsigned long longRH; unsigned int TotalLength; String stringTA;
String stringRH; String stringRain; unsigned int pbin=0; unsigned int cnt=0; unsigned flag=0;
int cek_ATE0() {
int num_err=0;
unsigned int counter=0; unsigned int time_out=0; unsigned char c;
mySerial.print("ATE0\r\n"); while(num_err<50)
{
if(!mySerial.available() && counter<10) { counter++; delay(100); } else { if (mySerial.read()=='K') {
return 1; } else { num_err++; } } } return 0; } void setup() { Serial.begin(9600); mySerial.begin(9600); rain=EEPROM.read(adrs); lcd.begin(20,4); pinMode(2,INPUT); digitalWrite(2, HIGH);
attachInterrupt(pbIn, stateChange, FALLING); MsTimer2::set(10000, cekTime);
MsTimer2::start(); delay(500);
{ delay(100); } Serial.print("get ATEO"); } int cek_CGATT() { int num_err=0;
unsigned int counter=0; unsigned int time_out=0; unsigned char c;
mySerial.print("AT+CGATT?\r\n"); while(num_err<50)
{
if(!mySerial.available() && counter<30) { counter++; delay(100); } else { if (mySerial.read()=='1') {
return 1; } else { num_err++; } } } return 0; } int connect_server() { int num_err=0;
unsigned int counter=0; unsigned int time_out=0; unsigned char c; mySerial.print("AT+CIPSTART=\"TCP\",\"www.widhika.com\",\"80\"\r\n"); while(num_err<40) { if(!mySerial.available()) { delay(100); num_err++;
} else { c=mySerial.read(); if(c=='T') { Serial.print("TOK"); while(!mySerial.available()) { } mySerial.read(); while(!mySerial.available()) { } if(mySerial.read()=='O') { Serial.print("OOK"); return 1; } else { Serial.print("ONO"); return 0; }
} else { Serial.print("TNO"); Serial.print(c); num_err++; } } } return 0; } int kirim() { //krm++; int num_err=0;
unsigned int counter=0; unsigned int time_out=0; unsigned char c;
mySerial.print("AT+CIPSEND\r\n"); while(num_err<100)
{
if(!mySerial.available() && counter<50) {
counter++; delay(100); } else { if (mySerial.read()=='>') { Serial.print("get >"); mySerial.print("POST /proses.php HTTP/1.1\r\n"); mySerial.print("Host: www.widhika.com\r\n"); mySerial.print("Content-Type: application/x-www-form-urlencoded\r\n"); mySerial.print("Content-Length: "); mySerial.print(TotalLength); mySerial.print("\r\n\r\n"); //mySerial.print("suhu=11&kelembapan=49&curah+hujan=400&arah+angin=barat&send= Sign+up"); mySerial.print("suhu="); mySerial.print(TA); mySerial.print("&kelembapan="); mySerial.print(RH); mySerial.print("&curah+hujan="); mySerial.print(rain); mySerial.print("&arah+angin="); mySerial.print("");
mySerial.print("&send="); mySerial.print("Sign+up"); mySerial.print(0x1A, BYTE); counter=0; while(counter<30) { if(!mySerial.available()) { counter++; delay(100); } else { if(mySerial.read()=='D') { Serial.print("D Detect"); while(mySerial.read()!='\r') { } Serial.print("Ret Detect"); flag=0; cnt=0; return 1; }
else { counter++; } } } return 0; } else { num_err++; } } } return 0; } int putus() { int num_err=0;
unsigned int counter=0; unsigned int time_out=0; unsigned char c;
while(num_err<50) {
if(!mySerial.available() && counter<30) { counter++; delay(100); } else { if(mySerial.read()=='T') { Serial.print("T Detect"); while(mySerial.read()!='\r') { } Serial.print("Ret Detect"); return 1; } else { counter++; } } }
return 0; } void cekTime() { time++; if (time>=12) { flag=1; time=0; rain=0; EEPROM.write(adrs, rain); } } void loop() { TA = sht1x.readTemperatureC(); RH = sht1x.readHumidity(); longTA = TA*100; longRH = RH*100; stringTA(longTA, DEC);
stringRH(longRH, DEC); stringRain(rain, DEC); TotalLength=(stringTa.length()+1)+(stringRH.length()+1)+(stringRain.length())+55; lcd.clear(); lcd.setCursor(0,0); lcd.print("AirTemp :"); lcd.print(TA); lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Humidity:"); lcd.print(RH); lcd.print(" %"); lcd.setCursor(0,2); lcd.print("Rain :"); lcd.print(rain); lcd.print(" mm"); delay(1000); if (flag==1) { if (cek_CGATT()==1) {
Serial.print("CGATT OK\n"); delay(100); if(connect_server()==1) { Serial.print("ConnectServer"); if (kirim()==1) { Serial.print("Terkirim"); } } delay(2000); putus(); } delay(1000); } } void stateChange() { rain++; EEPROM.write(adrs, rain); }
Coding Pada Web ( Halaman Muka ) Menggunakan MySQL
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Pemantau Curah Hujan Menggunakan Web </title>
<meta name="description" content="Sistem Pemantau curah hujan menggunakan web pada daerah tertentu. Variabel yang dipantau berupa curah hujan, kelembapan, temperatur dan arah angin" />
<meta name="keywords" content="sistem pemantau curah hujan, curah hujan, suhu, kelembapan, arah angin" />
<style type="text/css"> <!-- .style1 { color: #33CC66; font-weight: bold; } .style2 {color: #FFFFFF} --> </style>
<script type="text/javascript" src="FusionCharts.js"></script> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } //--> </script> </head> <body>
<table style="width: 1000px;" border="0" cellspacing="0" cellpadding="0" align="center">
<tbody> <tr>
<td style="text-align: center;border: 2px solid #000000; background-color: #78bcff;" colspan="2"><h1>Sistem Pemantau Curah Hujan Menggunakan web</h1></td>
</tr> <tr>
<td>Deskripsi Pemantau Curah Hujan<br/> <br />
Penakar curah hujan (RainGauge) adalah alat instrument yang digunakan oleh Badan Meteorologi dan Hidrologi untuk mendapatkan dan mengukur
jumlah curah hujan pada periode tertentu. Salah satu penakar hujan adalah jenis Tipping bucket.
Seperti halnya penakar hujan lainnya, Tipping Bucket bertujuan untuk mendapatkan jumlah curah hujan yang jatuh pada periode dan waktu tertentu.<br />
Penakar hujan tipping bucket ini adalah penakar hujan semi elektrolit dan otomatis. Artinya bahwa pengukuran hujan dilakukan oleh alat melalui pias yang bergerak secara grafik setiap curah hujan yang terukur. Jadi setiap akhir pengamatan kita akan langsung mendapatkan data curah hujan.<br /> <br />
Komponen dalam Rain Gauge :<br />
• Tipping Bucket menggunakan Sensor dimana Reed Switch dan Magnet sebagai Counter <br />
• Menggunakan Sensor Suhu dan Kelembapan <br /> <br /> <br /> <br /> </td> </tr> <tr><td>
<table width="950" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><form name="form" method="post" id="form" action="kinerja.php"> <strong>Lihat kinerja :</strong>
<strong>Bulan </strong> <strong>:</strong>
<select name="bulan" size="1" id="bulan"> <option>Januari</option> <option>Februari</option> <option>Maret</option> <option>April</option> <option>Mei</option> <option>Juni</option> <option>Juli</option> <option>Agustus</option> <option>September</option> <option>Oktober</option> <option>November</option> <option selected="selected">Desember</option> </select> <strong>Tahun</strong> <strong>:</strong> <select name="tahun" size="1" id="tahun"> <option>2008</option> <option>2009</option> <option>2010</option> <option>2011</option> <option selected="selected">2012</option> <option>2013</option> <option>2014</option> <option>2015</option> </select>
<input type="submit" name="submit" id="submit" value="Submit" /> </form></td>
</tr> </table>
</td></tr>
<tr><td style="text-align: center;" colspan="2"><p><hr /></p><p></p></td></tr>
<tr>
<td><h3>SUHU</h3><br />
<div id="chartdiv1" align="center"></div> <script type="text/javascript">
var myChart = new FusionCharts("FCF_Line.swf", "myChartId1", "800", "400", "0", "1"); myChart.setDataURL('get_latest_data.php'); myChart.render("chartdiv1"); </script> <br /><br /></td> <td valign="top" > <script type="text/javascript"> function successFunc(response){
var container = $('notice'); var content = response.responseText; // container.update(content);
document.getElementById("angka").innerHTML= content; }
</script>
<table style="width: 300px;" border="0" cellspacing="0" cellpadding="0" align="center">
<tbody> <tr>
<td style="background-color: #000000;" ><div id="angka">asd</div></td> </tr> </tbody> </table> </td> </tr> <tr> <td><h3>KELEMBAPAN</h3><br />
<div id="chartdiv3" align="center"></div> <script type="text/javascript">
var myChart = new FusionCharts("FCF_Line.swf", "myChartId3", "800", "400", "0", "1");
myChart.setDataURL('get_latest_data3.php'); myChart.render("chartdiv3");
</td> <td></td> </tr> <tr>
<td><h3>CURAH HUJAN</h3> <br />
<div id="chartdiv2" align="center"></div> <script type="text/javascript">
var myChart = new FusionCharts("FCF_Line.swf", "myChartId2", "800", "400", "0", "1"); myChart.setDataURL('get_latest_data2.php'); myChart.render("chartdiv2"); </script> </td> <td></td> </tr> </tbody> </table> </body> </html> <script type="text/javascript">
new PeriodicalExecuter(function getLatestData() { new Ajax.Request('get_latest_data.php', { method: 'get', onSuccess: function(transport) { updateChartXML('myChartId1', transport.responseText); } }); new Ajax.Request('get_latest_data2.php', { method: 'get', onSuccess: function(transport) { updateChartXML('myChartId2', transport.responseText); } }); new Ajax.Request('get_latest_data3.php', { method: 'get', onSuccess: function(transport) { updateChartXML('myChartId3', transport.responseText); } }); new Ajax.Request('angka.php', { method: 'get', onSuccess: successFunc });
}, 1); </script>