Wiring ESP8266 MQ135 DHT22

Apa Projek Ni

Sambung ESP8266/NodeMCU dengan sensor gas MQ135 dan sensor suhu/kelembapan DHT22. Yang penting kat sini — wiring kena betul, especially voltage divider untuk MQ135 sebab output dia 5V tapi ESP8266 ADC max 3.3V.

Components

  • ESP8266 / NodeMCU
  • MQ135 gas sensor
  • DHT22 temperature & humidity sensor
  • Resistors: 10kΩ + 20kΩ (voltage divider), 4.7kΩ (DHT22 pull-up)
  • Breadboard + jumper wires

Wiring

MQ135 → ESP8266

MQ135 PinConnect To
VCC5V (Vin)
GNDGND
AOUTVoltage divider → A0

Voltage divider: MQ135 AOUT → 10kΩ → A0 → 20kΩ → GND

Kenapa? MQ135 output 0-5V, ESP8266 ADC handle 0-3.3V je. Voltage divider scale down: 5V × (20k / 30k) = 3.3V. Safe.

DHT22 → ESP8266

DHT22 PinConnect To
VCC3.3V
GNDGND
DATAD4 (GPIO2)

Pull-up resistor: 4.7kΩ antara DATA dan VCC (3.3V). Tanpa ni, bacaan jadi erratic.

Common Mistakes

  • Tak pasang voltage divider — ADC ESP8266 boleh rosak kalau kena 5V direct
  • Tak pasang pull-up resistor DHT22 — bacaan intermittent, kadang NaN
  • Power MQ135 dari 3.3V — tak cukup, heater tak panas, reading tak accurate. Kena guna 5V (Vin)
  • Baca MQ135 terus lepas power on — sensor perlu warm up 2-3 minit untuk stable reading

Quick Test Code

#include <DHT.h>

#define DHTPIN D4
#define DHTTYPE DHT22
#define MQ135PIN A0

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
  delay(2000); // DHT22 startup
}

void loop() {
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();
  int gas = analogRead(MQ135PIN);
  
  Serial.printf("Temp: %.1f C, Humidity: %.1f%%, Gas: %d\n", temp, hum, gas);
  delay(2000);
}

Kalau semua wiring betul, serial monitor patut show readings yang stable lepas 2-3 minit warm up.

Leave a Comment