bangnaga icon

Wemos D1 Mini MQ2 Buzzer Json MQTT

bangnaga | PRO | 06/23/25 06:34:42 AM UTC (Edited) | 0 ⭐ | 190 👁️ | Never ⏰ | []
C++ |

2.82 KB

|

None

|

0 👍

/

0 👎

// 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