IOT Based LPG/CNG Gas Leakage Detection
 

Safety for all must be insured in today’s world and it is necessary that efficient and proactive safety systems should be implemented in public places and households. This IOT based project modifies the existing safety model installed in industries and this system also be used in homes and offices. The main objective of this IOT based work is designing micro-controller based toxic gas detecting and alerting system.

The hazardous gases like LPG and propane were sensed. If the hazardous gases exceed the normal level then an alarm is triggered immediately at the incident place and also an alert message (i.e. Push Notification) is sent to the authorized person through the INTERNET with the help of used ESP8266 module incorporating Things Speak CloudThe advantage of this IOT based automated detection and alerting system over the manual method is that it provide real time response and accurate detection of an emergency and in turn leading faster control over the critical situation.

 

How does IOT based gas detection work : 

 
 

Hardware Required for IOT based Project :

1.Firstly, Arduino Uno  => BUY
2.Secondly, ESP8266 Wifi Module => BUY
3.Thirdly, Jumper Wires => BUY
4.Fourthly, LED => BUY
5.Lastly, Buzzer => BUY
 

Steps for Creating IOT based Project:

1.Firstly, Hardware Connection
2.Secondly, Configuring ThingSpeak Cloud for uploading Sensor Values
3.Thirdly, Make changes to Code & Upload  
4.Lastly, Posting to Pushbullet via ThingSpeak for getting Push Notification on Android
 

1st Step : Hardware Connection – 

Circuit Diagram:

IOT: Circuit diagram
 

2nd Step : Configuring Thingspeak Cloud –

 

Source: www.thingspeak.com

 

Visit www.thingspeak.com and click on the “Get Started” button to make a free account.


Now click on the “New Channel” Give it a name and select two fields. If you want you can fill more info about your channel, e.g. Latitude and Longitude of your sensor. If you want to share sensor info with your friends (and more..) click on the “Make Public?” check box option. Finally click on the “Save Channel” button.


IOT Based LPG/CNG Gas Leakage Detection & Alert

 

press new channel and select the API keys tab (third image above). Copy your “Write API Key” , you will need it in the next step.

3rd Step : The Code 

#include <SoftwareSerial.h>

SoftwareSerial espSerial = SoftwareSerial(2,3); // arduino RX pin=2 arduino TX pin=3 connect the arduino RX pin to esp8266 module TX pin - connect the arduino TX pin to esp8266 module RX pin




float sensor=A0;

float gas_value;

String apiKey = "5G0NEIEWV7FQWERTY"; // replace with your channel's thingspeak WRITE API key

String ssid="kavin"; // Wifi network SSID

String password ="12345612"; // Wifi network password

boolean DEBUG=true;

#define VOLTAGE_MAX 5.0

#define VOLTAGE_MAXCOUNTS 1023.0

//======================================================================== showResponse




void showResponse(int waitTime){

long t=millis();

char c;

while (t+waitTime>millis()){

if (espSerial.available()){

c=espSerial.read();

if (DEBUG) Serial.print(c);

}

}




}




//=======================connection to thinkspeak.com=================================================

boolean thingSpeakWrite(float value1){

String cmd = "AT+CIPSTART="TCP",""; // TCP connection

cmd += "184.106.153.149"; // api.thingspeak.com

cmd += "",80";

espSerial.println(cmd);

if (DEBUG) Serial.println(cmd);

if(espSerial.find("Error")){

if (DEBUG) Serial.println("AT+CIPSTART error");

return false;

}







String getStr = "GET /update?api_key="; // prepare GET string

getStr += apiKey;




getStr +="&field1=";

getStr += String(value1);

//getStr +="&field2=";

//getStr += String(value2);

// ...

getStr += "rn";




// send data length

cmd = "AT+CIPSEND=";

cmd += String(getStr.length());

espSerial.println(cmd);

if (DEBUG) Serial.println(cmd);

delay(100);

if(espSerial.find(">")){

espSerial.print(getStr);

if (DEBUG) Serial.print(getStr);

}

else{

espSerial.println("AT+CIPCLOSE");

// alert user

if (DEBUG) Serial.println("AT+CIPCLOSE");

return false;

}

return true;

}

//================================================================================ setup

void setup() { 

DEBUG=true; // enable debug serial




//----------my sensor code-----------

pinMode(LED_BUILTIN, OUTPUT);

pinMode(sensor,INPUT);

Serial.begin(9600); 

espSerial.begin(115200); // enable software serial

// Your esp8266 module's speed is probably at 115200. 

// For this reason the first time set the speed to 115200 or to your esp8266 configured speed 

// and upload. Then change to 9600 and upload again




//espSerial.println("AT+RST"); // Enable this line to reset the module;

//showResponse(1000);




//espSerial.println("AT+UART_CUR=9600,8,1,0,0"); // Enable this line to set esp8266 serial speed to 9600 bps

//showResponse(1000);










espSerial.println("AT+CWMODE=1"); // set esp8266 as client

showResponse(1000);




espSerial.println("AT+CWJAP=""+ssid+"",""+password+"""); // set your home router SSID and password

showResponse(5000);




if (DEBUG) Serial.println("Setup completed");

}







// ======================================================================= loop

void loop() {




//---------my gas sensor value reading-------------------




gas_value=analogRead(sensor);

Serial.println(gas_value);

delay(1); //delay in between reads for stability 

if(gas_value>250){




// initialize digital pin LED_BUILTIN as an output.




digitalWrite(LED_BUILTIN, HIGH);

//delay(250);

// digitalWrite(LED_BUILTIN, LOW);

//delay(250);




float t = gas_value*(VOLTAGE_MAX / VOLTAGE_MAXCOUNTS); //convert gas value to voltages




if (isnan(t)) {

if (DEBUG) Serial.println("Failed to read from MQ5");

}




else{

if (DEBUG) Serial.println("Voltage="+String(t));

thingSpeakWrite(t); // Write values to thingspeak

}

// thingspeak needs 15 sec delay between updates, */ 

delay(20000); 

}

else{

digitalWrite(LED_BUILTIN, LOW);

}

}
 
Just edit these lines with your information in the code & upload it to Arduino :
 
String apiKey = “5G0NEIEWV7FQWERTY”; -ThingSpeak key 
String ssid=“kavin”; – Wifi Hotspot Name
String password =“12345612”; – Wifi Password
 
Once the code editing is done upload it & Use a Gas/Cigarette lighter near sensor in gas leak condition you will see a change in sensor value in serial monitor and also able to see push API key data update in monitor. 

Serial Monitor Output When Gas Leakage Detected:

IOT Based LPG/CNG Gas Leakage Detection & Alert
   

Monitor Thingspeak Channel Output:

Our code is written in a way that if there is gas leakage then a sensor value will be pushed to ThingSpeak Channel.
 
IOT Based LPG/CNG Gas Leakage Detection & Alert
 

POSTING TO PUSHBULLET VIA THINGSPEAK

Where do you start?

Step 1: setup the PushBullet service (free)

Pushbullet is an internet service which for SMS sending, notification management and file sending between your mobile devices and pc..”
First you need to go to PushBullet and make a new free account. Activate your account, login in the website and you will see the next screen:
 
 
Select and press mobile OS type ex android or IOS or go in the apps market / Google play in case of android and search for “PushBullet” and setup the application on your mobile device with the help of account you’ve just created. After that you should see your mobile smartphone in the Devices menu.

 
Go to Settings menu of the app where you have create a new Access Token by clicking Create Access Token button.
IOT Based LPG/CNG Gas Leakage Detection & Alert
 
IOT Based LPG/CNG Gas Leakage Detection & Alert
 

Get the access token and save it to a notepad text file.

Step 2: Setup the ThingSpeak Http, React App:



Step by step guide on configuring ThingSpeak to auto post to PushBullet, I use ESP8266’s but the you can use this for anything posting to ThingSpeak. I’ve been messing with the ESP8266 chips, a really cheap Wifi SoC that can be used with Arduino, but also with the right firmware can be used on their own without a master control processor. 
 
So the point of this step is to figure out how to send information to PushBullet via ThingSpeak. This is really a part two to an article I haven’t written yet, but as the hackanons article has already described how to program an arduino & 8266 and post to ThingSpeak I will expect you to have done that and we continue from there.
 
 
I have created a channel called MQ5 SENSOR VALUE. It doesn’t really do anything except take a “Field1” input, which I only ever send a value ofsensor. Because In my instance I only ever log something to ThingSpeak if the sensor detectssome Gas Leakage.
Of course on your project you can use any existing channel and check any field for a value in that to trigger a notification.

Next we need to create the ThingSpeak App based on “ThingHTTP”. Click on Apps in the
Menu bar and then select ‘ThingHTTP’
 
 
 
Now Click New ThingHTTP button & Fill Out the Form.
 
 
 
 
 

Form:

Name: Request 49499
API Key: 693WY7K2ICK5DKQW

URL: https://api.pushbullet.com/v2/pushes
HTTP Auth Username: o.kOHs3pI{ PUSH BULLET ACCESS TOKEN HERE}
HTTP Auth Password: sdfgh
Method: POST
Content Type: application/json
HTTP Version: 1.1
Host: api.pushbullet.com
Headers:
Name: Authorization
Value: Bearer [PushBulletAPI] 
Body: {“type”: “note”, “title”: “IOT SOS ALERT”, “body”: “LPG/CNG Gas Leakage”}
Parse String:
Created: 2017-04-27 7:35 am
So now we can log into ThingSpeak and we have something that can call into PushBullet which will send a notification to an Android OR iPhone.
 
Lastly we need to tie these things together and we do this also inside ThingSpeak for that we need to use React App in ThingSpeak.
 
 
 Now Click New React  button & Fill Out the Form.
 
 
Here we are testing on every insertion string on channel MQ5 SENSOR VALUE, Field 1 in which the condition is – if inserted value is not equal to 0
If this condition is true we call into the ThingHttp by setting the Action to ThingHttp. 
Save it.
That’s it.
Now whenever your IoT device sends a piece of data into ThingSpeak, ThingSpeak will automatically relay a post to PushBullet and in turn notify your devices. 
 
 

Categorized in: