ESP32 Environmental Monitoring System

Monitoring environmental parameters like temperature, humidity, and air quality is essential for homes, offices, and industrial spaces to ensure safety and comfort.

Using ESP32 and sensors like DHT11/DHT22 for temperature and humidity, and MQ-135 for air quality, you can build a real-time monitoring system.

The ESP32 sends data to IoT dashboards or mobile apps, allowing users to track environmental conditions remotely.

Why Build an Environmental Monitoring System?

Maintaining optimal environmental conditions is important for health, productivity, and industrial operations.

ESP32-based systems provide low-cost, real-time monitoring with the ability to integrate alerts and data logging.

This project teaches sensor interfacing, IoT integration, and cloud data visualization, making it ideal for beginners and hobbyists.

Required Components

ESP32 Development Board

DHT11 or DHT22 Temperature & Humidity Sensor

MQ-135 Gas Sensor for Air Quality (CO2, NH3, Benzene detection)

Jumper wires and breadboard

5V Power supply or USB cable

IoT platform or web dashboard for real-time monitoring (ThingSpeak, Blynk, or custom server)

Circuit Connections

1. DHT Sensor: VCC → 3.3V, GND → GND, DATA → ESP32 GPIO 4 (example) with 10k pull-up resistor.

2. MQ-135 Sensor: VCC → 5V, GND → GND, Analog Output → ESP32 ADC pin (e.g., GPIO 36).

3. ESP32 connected to power via USB or 5V adapter.

4. Ensure proper grounding for sensors and ESP32 to maintain accurate readings.

Arduino Code

Program: ESP32 Environmental Monitoring System
#include <WiFi.h>
#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

const int mq135Pin = 36;
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.begin(ssid, password);
  while(WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi Connected");
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  int airQuality = analogRead(mq135Pin);

  Serial.print("Temperature: "); Serial.print(temperature); Serial.print(" °C, ");
  Serial.print("Humidity: "); Serial.print(humidity); Serial.print(" %, ");
  Serial.print("Air Quality: "); Serial.println(airQuality);

  sendToServer(temperature, humidity, airQuality);
  delay(5000);
}

void sendToServer(float temp, float hum, int air){
  if(WiFi.status() == WL_CONNECTED){
    WiFiClient client;
    HTTPClient http;
    String url = "http://yourserver.com/update?temp=" + String(temp) + "&hum=" + String(hum) + "&air=" + String(air);
    http.begin(client, url);
    int code = http.GET();
    http.end();
  }
}

This code reads temperature, humidity, and air quality values and sends them to an IoT server or dashboard for real-time monitoring.

Working Principle

DHT sensors measure temperature and humidity using digital sensing technology, while MQ-135 detects gases in the environment, providing an analog signal proportional to air quality.

ESP32 reads these sensors and sends data via Wi-Fi to a cloud platform for visualization.

Users can monitor environmental conditions in real-time, set alerts for abnormal readings, and log data for analysis.

Key Features

Real-time monitoring of temperature, humidity, and air quality

IoT integration for remote access via web or mobile app

Low-cost and scalable solution for homes, offices, or labs

Customizable alerts for critical environmental conditions

Expandable with additional sensors for more parameters like CO2, smoke, or VOC detection

Applications

Home and office environmental monitoring

Air quality monitoring in labs, classrooms, or industrial areas

IoT-based educational projects for learning sensor interfacing

Integration with smart home automation systems for climate control

Health monitoring for sensitive individuals in polluted areas

Common Mistakes

Incorrect sensor wiring leading to inaccurate readings

Not calibrating MQ-135 sensor for baseline air quality

ESP32 losing Wi-Fi connectivity causing missing data

Ignoring sensor warm-up time (MQ-135 requires stabilization)

Using long wires without proper shielding causing noise in analog readings

Frequently Asked Questions

Q1: Can I use DHT11 instead of DHT22? A: Yes, but DHT22 is more accurate and provides higher resolution for temperature and humidity.

Q2: Can I monitor data on my smartphone? A: Yes, integrate ESP32 with platforms like ThingSpeak or Blynk to view data remotely.

Q3: How often should readings be taken? A: Every 5–10 seconds is sufficient for real-time monitoring without overloading the network.

Q4: Can I add more sensors? A: Yes, ESP32 has multiple GPIO pins and ADC channels for additional sensors like CO2, smoke, or light sensors.

Conclusion

ESP32 Environmental Monitoring System is a versatile IoT project that allows users to track temperature, humidity, and air quality in real-time.

It is cost-effective, scalable, and provides an excellent platform for learning sensor interfacing, IoT integration, and data visualization.

This project can be extended for smart home automation, industrial monitoring, and health-critical applications, making it highly practical and educational.