• Tidak ada hasil yang ditemukan

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

Dokumen terkait