#include "DHTesp.h"
// ---------------- PIN DEFINITIONS ----------------
#define DHT_PIN 4 // DHT22 data -> GPIO 4 (D4)
#define MQ2_PIN 34 // MQ2 analog output -> GPIO 34 (D34)
// DHT22 sensor
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
// Start DHT22
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Serial.println("================================");
Serial.println(" AI AIR QUALITY MONITORING SYSTEM");
Serial.println(" ESP32 IoT SENSOR NODE");
Serial.println("================================");
Serial.println();
}
void loop() {
// -------- READ DHT22 --------
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float temperature = data.temperature;
float humidity = data.humidity;
// -------- READ MQ2 --------
int gasValue = analogRead(MQ2_PIN);
// -------- SIMULATED AIR QUALITY --------
// Convert MQ2 reading into a simple 0-500 AQI-like value
int aqi = map(gasValue, 0, 4095, 0, 500);
aqi = constrain(aqi, 0, 500);
// -------- DETERMINE AIR QUALITY STATUS --------
String status;
if (aqi <= 50) {
status = "Good";
}
else if (aqi <= 100) {
status = "Moderate";
}
else if (aqi <= 150) {
status = "Unhealthy for Sensitive Groups";
}
else if (aqi <= 200) {
status = "Unhealthy";
}
else if (aqi <= 300) {
status = "Very Unhealthy";
}
else {
status = "Hazardous";
}
// -------- DISPLAY DATA --------
Serial.println("--------------------------------");
Serial.print("Temperature : ");
Serial.print(temperature, 1);
Serial.println(" °C");
Serial.print("Humidity : ");
Serial.print(humidity, 1);
Serial.println(" %");
Serial.print("Gas Sensor : ");
Serial.println(gasValue);
Serial.print("AQI Value : ");
Serial.println(aqi);
Serial.print("Air Quality : ");
Serial.println(status);
Serial.println("--------------------------------");
Serial.println();
delay(2000);
}