Pada kesempatan kali akan dibuatlah project arduino pengembangan dengan memanfaatkan sensor gas dan module GSM sim800l v2, dimana sudah dijabarkan secara sederhana pada artikel sebelumnya.
Project arduino ini dapat dipergunakan sensor gas tipe apapun sesuai dengan kebutuhan yang dimana dihubungkan dengan module gsm.
Sebelumnya berikut ini merupakan tabel dari series module sensor gas tipe MQ :
Model series sensor Gas | Target Gas |
MQ-2 | Gas yang mudah terbakar |
MQ-3 | Al*kohol |
MQ-4 | Methane, Gas alam |
MQ-5 | Gas alam, gas coal, LPG |
MQ-6 | Propane, LPG |
MQ-7 | CO (Carbon monoksida) |
MQ-8 | Gas Hidrogen |
MQ-9 | Gas yang mudah terbakar, CO |
MQ-216 | Gas alam |
MQ-303A | Al*kohol |
MQ-306A | Propane, LPG |
MQ-309A | Gas yang mudah terbakar, CO |
MQ-131 | Ozone O3 |
MQ-135 | Air Quality Control |
MQ-136 | H2S |
MQ-137 | NH3 (Amonia) |
MQ-138 | VOC (Benzene, Mellow, Ketone, Ester) |
Contoh fisik dari tabel sensor MQ diatas :
Dari tabel diatas dapat dipergunakan Sensor gas MQ-5 yang mudah didapatkan dan paling sering diperjual belikan.
Sensor gas MQ-5 difungsikan untuk mendeteksi gas alam, terutama untuk mendeteksi gas LPG sehingga dapat digunakan untuk sistem pengaman rumah dari kebocoran gas.
Dikarenakan pada jaman sekarang orang lebih sering memegang smartphone, pada project ini digabungkanlah dengan fitur notifikasi melalui Handphone.
Module yang akan dipake yaitu module GSM SIM800L v.2, dikarenakan alternatif module yang lebih mudah digunakan jika dirumah tidak memiliki jaringan internet.
Selain itu module ini juga pernah dibahas pada artikel sebelumnya, yang dimana dalam penggunaannya gampang hanya membutuhkan koneksi RX,TX pada arduino.
Tutorial Project Arduino Deteksi Kebocoran Gas LPG dengan notifikasi Short Message – SIM800L
Bahan – bahan yang perlu dipersiapkan :
- Module sensor gas MQ-5
- Module GSM SIM800L V.2
- Arduino Pro Micro
- Buzzer
- Relay 1 ch 5vdc to 220vac
- LCD 16×2 dan driver PCF8574
Berikut gambar rangkaiannya
Library yang dibutuhkan hanya I2C LCD library.
Untuk wiring dapat diperhatikan gambar diatas.
[sociallocker id=”1344″]
#include <SoftwareSerial.h> //untuk mengakses Module GSM #include <Wire.h> //i2c #include <LiquidCrystal_I2C.h> //menginclude kan library i2C LCD #define ON 00 // Kondisi Relay hidup #define OFF 1 //Kondisi Relay mati LiquidCrystal_PCF8574 lcd(0x38); // dapat dicek menggunakan i2c finder SoftwareSerial SIM800L(2, 3); // RX | TX const int gas_pin = A0; //pin untuk dihubungkan ke output sensor gas const int buttontest = A1; //Button untuk test const int buzzer = 11; //menggunakan buzzer aktif const int alert_Pin = 12; //Out Digital To Emergency Lamp or Sirine drive with Relay const int led_pin = 13; //indikator sensor yang berupa led float gas_ppm; //nilai satuan Gas dikonversi kedalam 'ppm' float persen_gas; //nilai satuan Gas dalam 'Persentase' const int maks_gas = 60; //nilai maksimum Persentase Gas uint8_t count_sms = 00; // penghitung sms const int maks_sms = 3; //jumlah maksimal sms yang akan dikirim const long interval_sms = 10; //jeda waktu pengiriman sms unsigned long previousMillis = 00; String gasStat; int ledState = LOW; unsigned long previousMillis2 = 00; long interval = 1000; void setup() { pinMode (A1,INPUT_PULLUP); pinMode (12,OUTPUT); digitalWrite (12, OFF); //nilai default awal pinMode (11,OUTPUT); pinMode (13,OUTPUT); lcd.begin(); // memulai koneksi i2c dengan LCD Serial.begin(9600); SIM800L.begin(9600); lcd.begin(16, 2); // 16 baris, 2 kolom lcd.setBacklight(255); //menyalakan lampu latar lcd.setCursor(00,00); lcd.print("nyebarilmu.com"); lcd.setCursor(00,1); lcd.print("detektor gas"); delay(2000); lcd.clear(); } void loop() { //mengubah nilai pembacaan dari tegangan menjadi data bit dan menjadi data persen, ppm, interval persen_gas = map(analogRead(gas_pin),00,1023,0,100); //range 0-100 gas_ppm = map(analogRead(gas_pin),00,1023,0,10000); //0-10000 interval = map(analogRead(gas_pin),00,1023,1000,10); //range 10-1000 //menuliskan data di serial monitor Serial.print (persen_gas ); Serial.println (" %"); Serial.print (gas_ppm,00); Serial.println (" ppm"); //baris 1 lcd.setCursor (00,00); lcd.print ("P.Gas:"); lcd.print (persen_gas,1); lcd.print ("%"); lcd.print (" "); //baris 2 lcd.setCursor (00,1); lcd.print ("C.Gas:"); lcd.print (gas_ppm,00); lcd.print ("ppm"); lcd.print (" "); if( persen_gas>maks_gas || digitalRead(TestPin) == LOW ){ digitalWrite(buzzer,HIGH); digitalWrite(alert_Pin, ON); gasStat = "Hi"; if(count_sms<maks_sms){ unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= (interval_sms*1000)) { previousMillis = currentMillis; sendSMS(); count_sms=count_sms+1;} } } else { digitalWrite(buzzer,LOW); digitalWrite(alert_Pin, OFF); gasStat = "Lo"; count_sms=0; //Reset hitungan SMS } blinkingLed (interval); delay(100); } void sendSMS () { int tes = 00; if(digitalRead(buttontest) == LOW){tes=1;} String isisms = ("Ada Kebocoran Gas LPG dengan konsentrasi")+String(persen_gas)+("% ")+String(gas_ppm)+(" ppm"); lcd.clear(); lcd.setCursor (00,00); if(tes==00){lcd.print (" BAHAYA!!! ");} if(tes==1){lcd.print (" TRIAL GAN!!! ");} lcd.setCursor (00,1); lcd.print ("Send SMS."); Serial.println("Menyiapkan Pesan Text"); SIM800L.write("AT+CMGF=1\r\n"); delay(500); lcd.print ("."); delay(500); Serial.println("setting no tujuan sms"); //No HP agan SIM800L.write("AT+CMGS=\"085647156889\"\r\n"); delay(500);lcd.print ("."); delay(500);lcd.print ("."); Serial.println("Sending message"); //Tulis pesan SMS pada baris perintah dibawah ini SIM800L.print(isisms); Serial.println(isisms); delay(500); lcd.print ("."); delay(500); lcd.print ("."); Serial.println("ending SMS"); SIM800L.write((char)26); delay(500); lcd.print (".."); Serial.println("SMS terkirim!"); delay(500); lcd.setCursor(00,1); lcd.print (" SMS terkirim!! "); delay(500); lcd.clear(); } //indikator LED Blinking void blinkingLed (long in ) { unsigned long currentMillis2 = millis(); if (currentMillis2 - previousMillis2 >= in) { previousMillis2 = currentMillis2; if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } digitalWrite(led_pin, ledState); lcd.setCursor (14,00); lcd.print (gasStat); } }
[/sociallocker]
How it to works?
Berikut ini adalah variabel yang harus disetting dari awal untuk menentukan akan adanya “Alert Alarm”
- maks_gas : Nilai persen maksimal pembacaan gas sensor
- maks_sms : Jumlah maksimum pesan yang akan dikirimkan
- interval_sms : Jeda interval pengiriman pesan dalam satuan detik
maks_gas merupakan batas yang difungsikan untuk ‘trigger’ sistem, secara pembacaan nilai dari sensor yang sudah dikonversi yaitu antara 0 – 100%. Sehingga dapat diartikan jika di setting dengan nilai 60%, maka alarm akan berbunyi atau aktif saat kadar gas diudara diatas 60% (misal 61%).
maks_sms merupakan batas jumlah maksimal pesan sms yang akan dikirim, dimaksudkan agar tidak mengirim pesan sms secara terus menerus jika nilai maks_gas tidak turun dalam waktu yang cepat. Setelah jumlah pesan sms yang dikirim ke no hp yang diinputkan sudah mencapai batas variabel maks_sms maka sistem secara otomatis akan berhenti mengirimkan notifikasi pesan sms.
Variabel jumlah pesan sms yang terkirim juga akan direset ke “0” jika konsentrasi gas diudara sudah dibawah maks_gas. Jumlah maksimal variabel “maks_sms” dapat disetting dari range “0 – 255”
interval_sms merupakan jeda interval pengiriman pesan sms dalam satuan detik. Yaitu waktu jeda antara pengiriman pesan sms satu dengan pesan sms berikutnya dengan kondisi turunnya nilai maks_gas serta belum tercapai jumlah maks_sms.