#define BLYNK_TEMPLATE_ID "TMPL3dTeTE9zM"
#define BLYNK_TEMPLATE_NAME "Multi-Sensor Setup"
#define BLYNK_AUTH_TOKEN "ITpNHxTACH8NQXzq668EDC02A5wvDsBF"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// Define Pins
#define TRIG_PIN 5
#define ECHO_PIN 18
#define DHTPIN 4
#define DHTTYPE DHT22
#define GAS_SENSOR_AOUT 36
#define GAS_SENSOR_DOUT 27
// WiFi Credentials
char ssid[] = "Wokwi-GUEST"; // Replace with your WiFi SSID
char pass[] = ""; // Replace with your WiFi Password
// DHT Sensor Initialization
DHT dht(DHTPIN, DHTTYPE);
// Variables
long duration, distance;
void setup() {
Serial.begin(115200);
// Ultrasonic Sensor Setup
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// DHT Sensor Setup
dht.begin();
// MQ-2 Gas Sensor Setup
pinMode(GAS_SENSOR_DOUT, INPUT);
// Connect to Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run(); // Run Blynk
// --- Ultrasonic Sensor Reading ---
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration / 2) / 29.1; // Convert to cm
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Blynk.virtualWrite(V1, distance); // Send distance to Virtual Pin V1
// --- DHT22 Sensor Reading ---
float temperature = dht.readTemperature(); // Read temperature
float humidity = dht.readHumidity(); // Read humidity
if (!isnan(temperature) && !isnan(humidity)) {
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
Blynk.virtualWrite(V2, temperature); // Send temperature to Virtual Pin V2
Blynk.virtualWrite(V3, humidity); // Send humidity to Virtual Pin V3
} else {
Serial.println("Failed to read from DHT sensor!");
}
// --- MQ-2 Gas Sensor Reading ---
int gasLevel = analogRead(GAS_SENSOR_AOUT); // Read analog output
int gasStatus = digitalRead(GAS_SENSOR_DOUT); // Read digital output
Serial.print("Gas Level (Analog): ");
Serial.println(gasLevel);
Serial.print("Gas Detected (Digital): ");
Serial.println(gasStatus == HIGH ? "Yes" : "No");
Blynk.virtualWrite(V4, gasLevel); // Send analog gas level to Virtual Pin V4
Blynk.virtualWrite(V5, gasStatus); // Send gas status (HIGH/LOW) to Virtual Pin V5
delay(2000); // Wait 2 seconds before next reading
}