Project sensor gas MQ, module gsm SIM800L V2

Project Arduino gas leak detector via SMS Module SIM800L v.2

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 :

contoh variasi dari sensor gas MQ

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 :

  1. Module sensor gas MQ-5
  2. Module GSM SIM800L V.2
  3. Arduino Pro Micro
  4. Buzzer
  5. Relay 1 ch 5vdc to 220vac
  6. LCD 16×2 dan driver PCF8574

Berikut gambar rangkaiannya

Project sensor gas dan module gsm SIM800L V2

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.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *