#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL3OmXli1Ql"
#define BLYNK_TEMPLATE_NAME "IoT Enable Machine Monitoring system"
#define BLYNK_AUTH_TOKEN "Re68YtpePJcWtbhAit4t7XAOIPr4g15R"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 15
#define DHTTYPE DHT22
#define MQ2_PIN 34
#define LED_PIN 13
#define BUZZER_PIN 27
#define TEMP_HIGH 70
#define TEMP_LOW 60
#define GAS_HIGH 2000
#define GAS_LOW 1200
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
bool alertState = false;
void sendData() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
int gas = analogRead(MQ2_PIN);
Serial.print("Temp: ");
Serial.print(temp);
Serial.print(" °C | Hum: ");
Serial.print(hum);
Serial.print(" % | Gas: ");
Serial.println(gas);
Blynk.virtualWrite(V0, temp);
Blynk.virtualWrite(V1, hum);
Blynk.virtualWrite(V2, gas);
if (!alertState && (temp > TEMP_HIGH || gas > GAS_HIGH)) {
alertState = true;
digitalWrite(LED_PIN, HIGH);
digitalWrite(BUZZER_PIN, HIGH);
Blynk.logEvent("safety_alert", "⚠ Machine Risk Detected");
Serial.println("ALERT ON");
}
if (alertState && (temp < TEMP_LOW && gas < GAS_LOW)) {
alertState = false;
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
Serial.println("ALERT OFF");
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
dht.begin();
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(2000L, sendData);
}
void loop() {
Blynk.run();
timer.run();
}