Sistem ini tentu saja masih belum sempurna. Masih banyak hal yang dapat dilakukan untuk mengembangkan sistem ini agar menjadi lebih baik diantaranya adalah gas beracun yang dapat membahayakan manusia didalam laboratorium memliki jumlah lebih dari 2. Oleh sebab itu sensor dapat ditambah agar lebih banyak lagi gas yang bisa dideteksi
96
DAFTAR PUSTAKA
Arduino,2015. Arduino Introduction. [Online] Tersedia : http://www.arduino.cc/en/guide/introduction [1 Maret 2015].
Astamal, Rio. 2006. Menjadi Web Master dalam 30 hari. [Online] Tersedia: http://infokampusonline.com/ [2 November 2014].
Banzi, Massimo. 2011. Getting Started with Arduino. California : O'Reilly Media,inc
Federal Trade Commission, 2015. Internet Of Thigs [Online] Tersedia : https://www.ftc.gov/system/files/documents/reports/federal-trade
commission-staff-report-november-2013-workshop-entitled-internet-things-privacy/150127iotrpt.pdf [10 Maret 2015].
Hermawan, Ari. 2002. Pemrograman dengan Java. [Online] Tersedia :
http://www.master.web.id/mwmag/issue/04/content/tutorial-java-1/tutorial-java-1.html [10 Maret 2015].
Irwanto, Djon. 2006. Perancangan Object Oriented Software dengan UML. Yogyakarta: Andi.
Jogianto, HM. 2005. Analisis dan Desain Sistem Informasi : Pendekatan Terstruktur Teori dan Praktek Aplikasi Bisnis. Yogyakarta: Andi.
97
Morris, Alan S., 2001 Measurement and Instrumentation Principles, Oxford : Butterworth-Heinemann.
NIOSH, 1992. Occupational Safety and Health Guideline for Ammonia. U.S : Department Of Health and Human Services
NJSHealth, 2010. Hazardous Substance Fact Sheet Liquefied Petroleum Gas. New Jersey : New Jersey Department of Health
Seedstudio, 2015. GPRS Shield V2.0 [Online] Tersedia : http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0 [ 5 Maret 2015]
Shelly, Rosenblatt, 2012. System Analysis and Design 9th Edition. Boston : Course Technology.
Sholiq, 2006. Pemodelan Sistem Informasi Berorientasi Objek dengan UML. Yogyakarta: GRAHA ILMU
Sparkfun,2015. AT_Commands Reference Guide.[Online] Tersedia : https://www.sparkfun.com/datasheets/Cellular%20Modules/AT_Comman ds_Reference_Guide_r0.pdf [05 Maret 2015]
Sutabri, Tata. 2005. Sistem Infromasi Manajemen. Yogyakarta : Andi
Sridadi, Bambang. 2010. Sistem waktu nyata (Real-time System): teori dan implementasinya dalam bahasa C dan ada. Bandung: Informatika.
Tresnaningsih,2003.Standar Pelayanan Kesehatan Kerja Dasar. KEPMENKES NOMOR 1758/MENKES/SK/XII/2003.
98
Wahyono, Teguh. 2003. Sistem Informasi. Yogyakarta :Graha Ilmu
Whitten, Jeffrey L. System Analysis and Design Methods 7th ed. New York : McGraw-Hill
xvi
xvii Lampiran 1 –Data Kelembaban
xviii Lampiran 2 – Wawancara
Waktu : 17 November 2014 , 13.00 WIB
Interviewee : Muhammad Iskandar Fauzi (Laboran Kimia FITK)
1. Apakah sudah ada sistem untuk pencegahan kecelakaan K3 di laboratorium kimia FITK Uin Jakarta?
a. Jawab : Persiapan perlengakapan standar labor
2. Dimana saja bagian-bagian di ruangan laboratorium kimia yang rentan terjadi kecelakaan kerja ?
Jawab : disetiap tempat yang terdapat zat kimia, terutama di lemari asam
3. Apakah sudah pernah terjadi kebocoran gas di lemari asam ? Jawab : Pernah
4. Dalam 10 tahun terakhir, sudah berapa kali terjadi kebocoran di lemari asam? Kapan itu?
Jawab : Sekitar 1 tahun yang lalu (Oktober 2013) disebabkan oleh faktor manusia (human error)
5. Apakah penanganan yang dilakukan oleh pihak labor jika terjadi kebocoran gas?
Jawab : Evakuasi praktikan, tembak kipas kearah sumber gas, tumpahan dibersihkan.
6. Apa saja tugas laboran dalam hal keamanan labor?
Jawab : mengingatkan penggunaan masker, sarung tangan, pencegahan pertama
xix
7. Apakah laboran selalu berada di tempat atau berpindah-pindah ketika sehari-hari?
xx Lampiran 3 – Kode Program Arduino Arduino
#include <SoftwareSerial.h> #include <String.h>
SoftwareSerial mySerial(7, 8);
/************************Define LPG******************/
#define MQ_2_PIN (A3) //define which analog input channel you are going to use
#define RL_VALUE (1000) //define the load resistance on the board, in kilo ohms
#define RO_CLEAN_AIR_FACTOR (9.83) //RO_CLEAR_AIR_FACTOR = (Sensor resistance in clean air)/RO, which is derived from the chart in datashee #define CALIBARAION_SAMPLE_TIMES (50) //define how many samples you are going to ke in the calibration phase
#define CALIBRATION_SAMPLE_INTERVAL (500) //define the time interal(in milisecond) between each samples in the
float LPGCurve[3] = {2.3,0.21,-0.47}; //two points are taken from the curve. //with these two points, a line is formed which is "approximately equivalent” //to the original curve. //data format:{ x, y, slope}; point1: (lg200, 0.21), point2: (lg10000, -0.59)
float Ro = 10; //Ro is initialized to 10 kilo ohms
/************************Define LPG Penutup******************/ /************************Define Amoniak Pembuka******************/ #define MQ_135_PIN (A1) //define which analog input channel you are going to use
#define MQ135_DEFAULTPPM 100 //default ppm of CO2 for calibration NH3
#define MQ135_DEFAULTRO 108251 //default Ro for MQ135_DEFAULTPPM ppm of NH3
xxi
#define MQ135_EXPONENT -3.235365807 //NH3 gas value #define MQ135_MAXRSRO 1.3 //for NH3 #define MQ135_MINRSRO 0.56 //for NH3 float mq135_ro = 10000.0; // this has to be tuned 10K Ohm
int val = 0; // variable to store the value coming from the sensor
/************************Define Amoniak Penutup******************/ const int ledPin_135 = 2; // LED tersambung dengan pin 2 di arduino
const int ledPin_2 = 3; // LED tersambung dengan pin 3 di arduino const int blowerPin = 4; // kipas blower tersambung dengan pin 4 const int alarmPin = 5; // alarm tersambung dengan pin 5
int sensorValue_135 = 0; // inisialisasi nilai sensor mq135 int sensorValue_2 = 0; // inisialisasi nilai sensor mq2 float ppm_lpg = 0.00; float ppm_ammonia = 0.00 ; int num; String le; String var; String kualitas_udara; String smd = "="; String dan = "&"; int vcc_fan = 6;
int check_ammonia_time = 0; int check_lpg_time = 0;
void setup() {
xxii
mySerial.begin(9600); //the GPRS baud rate Serial.begin(9600);
Ro = MQCalibration(MQ_2_PIN); //Calibrating the sensor. Please make sure the sensor is in clean air
delay(10000); pinMode(vcc_fan,OUTPUT); //digitalWrite(vcc_fan, HIGH); } void loop() {
getSensorValue(); //memanggil fungsi getSensorValue() Check_Ammonia(); // fungsi check ammonia Check_LPG (); // fungsi check lpg initGPRS(); //memanggil fungsi initGPRS() upload_data(); delay (3000); if (mySerial.available()) Serial.write(mySerial.read()); } void initGPRS() { mySerial.println("AT+CGATT?"); ShowSerialData();
mySerial.println("AT+CSTT=\"wap.three.co.id\""); //APN dari provider three
delay(1000); ShowSerialData();
xxiii delay(3000);
ShowSerialData();
mySerial.println("AT+CIFSR"); //get local IP adress delay(2000); ShowSerialData(); mySerial.println("AT+CIPSPRT=0"); delay(3000); ShowSerialData(); mySerial.println("AT+CIPSTART=\"tcp\",\"rokusoft.com\",\"80\""); //start up the connection
delay(3000); ShowSerialData();
mySerial.println("AT+CIPSEND"); //begin send data to remote server
delay(3000); }
void getSensorValue(){
sensorValue_135 = analogRead(MQ_135_PIN); sensorValue_2 = analogRead(MQ_2_PIN);
ppm_ammonia = MQ_135_GetPPM_Ammonia(); // get ppm ammonia ppm_lpg = MQ_2_GetPPM_LPG(); // get ppm ammonia
Serial.println("---Terdeteksi --- ");
Serial.print("Value Mq135 "); Serial.println (sensorValue_135); Serial.print("Value Mq2 -- "); Serial.print(sensorValue_2); Serial.println(" ");
Serial.print("ppm amoniak (NH3) = " ); Serial.println(ppm_ammonia); Serial.print("ppm LPG = " ); Serial.println(ppm_lpg);
xxiv delay(10);
String sendValue_mq135 = "getValue_mq135"; String sendValue_mq2 = "getValue_mq2";
kualitas_udara = sendValue_mq135 + smd + ppm_ammonia + dan + sendValue_mq2 + smd + ppm_lpg; Serial.print(kualitas_udara); Serial.println(" "); } void upload_data() { var = kualitas_udara; num = var.length(); le = String(num); mySerial.print("POST /riset/insert.php?"); mySerial.print(kualitas_udara); delay(100); ShowSerialData(); mySerial.println("/values HTTP/1.1"); delay(100); ShowSerialData(); mySerial.println("Content-Type:application/x-www-form-urlencoded"); //media type in request or sending data method post for encoding (penyandian) key-value delay(100); ShowSerialData(); mySerial.println("Content-Length: "+le); delay(100); ShowSerialData();
xxv mySerial.println("Host: rokusoft.com"); delay(100); ShowSerialData(); mySerial.println(); delay(100); ShowSerialData(); mySerial.println(var); delay(100); ShowSerialData(); mySerial.println(); delay(100); ShowSerialData(); mySerial.println((char)26); delay(7000); mySerial.println(); ShowSerialData(); // mySerial.println("AT+CIPCLOSE"); //close the communication
// delay(1000); //ShowSerialData(); }
void DialVoiceCall() {
mySerial.println("ATD + ++6285278704211;");//dial the number delay(100);
mySerial.println(); }
xxvi void ShowSerialData() { while(mySerial.available()!=0) Serial.write(mySerial.read()); }
/************************Check Kadar Amoniak******************/
void Check_Ammonia () {
if ( ppm_ammonia > 2.0 && 5.0 > ppm_ammonia ) {
digitalWrite(ledPin_135, HIGH); digitalWrite(vcc_fan, HIGH); }
else if (ppm_ammonia >= 7.0 && check_ammonia_time <=5 ) { digitalWrite(vcc_fan, HIGH); Serial.println(ppm_ammonia); Serial.print("check_ammonia_time = "); Serial.print(check_ammonia_time); Serial.println(" "); digitalWrite(ledPin_135, HIGH); digitalWrite(alarmPin, HIGH); check_ammonia_time = check_ammonia_time + 1 ; if (check_ammonia_time == 5)
xxvii { DialVoiceCall(); delay(5000); } delay(5000); loop(); } else { check_ammonia_time = 0; digitalWrite(vcc_fan, LOW); digitalWrite(ledPin_135, LOW); digitalWrite(alarmPin, LOW); } }
/********************Tutup: Check Kadar Amoniak*****************/
/********************Buka: Check Kadar LPG*****************/
void Check_LPG () { if ( ppm_lpg > 1.0 && 5.0 > ppm_lpg ) { digitalWrite(ledPin_2, HIGH); digitalWrite(vcc_fan, HIGH); }
xxviii { digitalWrite(vcc_fan, HIGH); Serial.println(ppm_lpg); Serial.print("check_lpg_time = "); Serial.print(check_lpg_time); digitalWrite(ledPin_135, HIGH); digitalWrite(alarmPin, HIGH); check_lpg_time = check_lpg_time + 1; if (check_lpg_time == 5) { DialVoiceCall(); delay(5000); } delay(5000); loop(); } else { check_lpg_time = 0; digitalWrite(vcc_fan, LOW); digitalWrite(ledPin_2, LOW); digitalWrite(alarmPin, LOW); } }
xxix /********************Buka: Dapatkan PPM LPG*****************/ float MQ_2_GetPPM_LPG() { return MQGetGasPercentage(MQRead(MQ_2_PIN)/Ro); }
int MQGetGasPercentage(float rs_ro_ratio) {
return MQGetPercentage(rs_ro_ratio,LPGCurve); }
float MQRead(int mq_pin) {
float rs = 0;
rs = MQResistanceCalculation(analogRead(mq_pin)); return rs;
}
int MQGetPercentage(float rs_ro_ratio, float *pcurve) {
return (pow(10,( ((log(rs_ro_ratio)-pcurve[1])/pcurve[2]) + pcurve[0]))); }
float MQResistanceCalculation(int raw_adc) {
return ( ((float)RL_VALUE*(1023-raw_adc)/raw_adc)); }
float MQCalibration(int mq_pin) {
float val=0;
xxx
val = val/RO_CLEAN_AIR_FACTOR; //divided by
RO_CLEAN_AIR_FACTOR yields the Ro //according to the chart in the datasheet
return val; }
/********************Tutup: Dapatkan PPM LPG*****************/ /********************Buka: Dapatkan PPM Amoniak *****************/ int MQ_135_GetPPM_Ammonia()
{
long valr = analogRead(MQ_135_PIN); long val = ((float)22000*(1023-valr)/valr);
//mq135_ro = mq135_getro(val, MQ135_DEFAULTPPM);
return mq135_getppm(val, MQ135_DEFAULTRO);
}
double mq135_getppm(long resvalue, long ro) { double ret = 0;
double validinterval = 0;
validinterval = resvalue/(double)ro;
if(validinterval<MQ135_MAXRSRO && validinterval>MQ135_MINRSRO) { ret = (double)MQ135_SCALINGFACTOR * pow( ((double)resvalue/ro), MQ135_EXPONENT);
return ret; }
}
int MQGetPercentage(float rs_ro_ratio, float ro, float *pcurve) {
xxxi
return (double)(pcurve[0] * pow(((double)rs_ro_ratio/ro), pcurve[1])); }
xxxii Lampiran 4 – Surat SK bimbingan Skripsi
xxxiii Lampiran 5 – Surat Pengantar Penelitian