// Ucok Sinaga
// Facebook: www.facebook.com/nagasakti
// Email: [email protected]
// Tanggal Experiment: 26/2/2020
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <MQ2.h>
int pinAout = A0;
int lpg_gas, co_gas, smoke_gas;
MQ2 mq2(pinAout);
int Buzzer = 13; // D7
int LED = LED_BUILTIN; // Led Bawaan (On Board)
#define sensor_data_topic "MQ2"
const char* ssid = "IoT Lab";
const char* password = "";
const char* mqtt_server = "192.168.1.200";
const char* mqtt_user = "";
const char* mqtt_pass= "";
int Buzzer1 = 13; // D7
const int mq2pin = A0; // MQ2 analog input pin
int nilaianalog = 0; // data sensor
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
// Connecting to a WiFi network
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi Terhubung");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Ulangi koneksi sampai terhubung
Serial.println("Menghubungkan Ulang...");
while (!client.connected()) {
Serial.print("Melakukan koneksi ke MQTT Broker...");
// Attempt to connect
if (client.connect("Arduino_Gas", mqtt_user, mqtt_pass)) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" Reconect dalam 5 detik");
delay(5000);
}
}
}
void setup() {
pinMode(Buzzer, OUTPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600);
mq2.begin();
setup_wifi();
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) {
reconnect();
}
nilaianalog =analogRead(mq2pin);
int i=0;
if (nilaianalog > 150) {
digitalWrite(LED, HIGH);
for(i=2;i<10;i++){
tone(Buzzer,i);
delay(5);
}
for(i=3;i>10;i--){
tone(Buzzer,i);
delay(20);
}
} else if (nilaianalog < 150){
digitalWrite(LED, LOW);
tone(Buzzer,0);
}
float* values= mq2.read(false); //jika diset "false" tidak akan dimunculkan di serial monitor
lpg_gas = mq2.readLPG();
co_gas = mq2.readCO();
smoke_gas = mq2.readSmoke();
StaticJsonBuffer<100> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root["lpg_gas"] = lpg_gas;
root["co_gas"] = co_gas;
root["smoke_gas"] = smoke_gas;
root["adc"] = nilaianalog;
client.loop();
char JSONmessageBuffer[100];
root.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
Serial.println("Mengirim pesan to MQTT Broker ..");
Serial.println(JSONmessageBuffer);
//client.publish(sensor_data_topic, String(sensor).c_str(), true);
client.publish(sensor_data_topic, JSONmessageBuffer, true);
delay(1000);
}
Comments