Buka Senin - Jumat jam 08.30 s/d jam 16.30 , Sabtu Jam 8.30 s/d jam 13.00 , Minggu tutup
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Beranda » Blog » Bikin Alat Monitoring Kualitas Udara Ruangan Berbasis ESP32 dan Sensor MQ-135

Bikin Alat Monitoring Kualitas Udara Ruangan Berbasis ESP32 dan Sensor MQ-135

Diposting pada 11 November 2026 oleh indo maker / Dilihat: 16 kali / Kategori:

Sobat maker, kualitas udara di dalam ruangan yang buruk sering kali bikin kita gampang lelah dan kurang fokus tanpa kita sadari. Untungnya, kamu bisa bikin solusi pemantau udara otomatis yang canggih dan ramah di kantong lewat proyek monitoring kualitas udara ESP32 MQ-135 ini. Selain proyek ini, kamu juga bisa mempelajari proyek IoT menarik seperti sistem parkir otomatis untuk semakin mengasah keterampilan embedded system kamu!

1. Mengapa Perlu Monitoring Kualitas Udara Ruangan

Memantau kualitas udara, suhu, dan kelembapan di dalam ruangan sangat penting untuk menjaga kesehatan serta kenyamanan aktivitas kita sehari-hari. Polusi udara dalam ruangan yang dipicu oleh akumulasi gas berbahaya seperti CO2, amonia, atau asap, ditambah tingkat kelembapan yang tidak ideal, bisa berdampak buruk pada sistem pernapasan dan menurunkan produktivitas. Sayangnya, alat pemantau konvensional umumnya bekerja secara lokal tanpa kemampuan menyimpan atau memancarkan data, sehingga kita kesulitan memantau kondisi ruangan dari jarak jauh.

Dengan memanfaatkan mikrokontroler ESP32 yang memiliki prosesor dual-core serta modul Wi-Fi terintegrasi, kita mendapatkan keunggulan besar dibandingkan sistem standalone tradisional. ESP32 mampu mengumpulkan data dari berbagai sensor secara responsif, mengolahnya, dan mengirimkannya secara real-time ke platform cloud BlynkIoT. Berkat konektivitas internet ini, kamu bisa memantau kondisi udara ruangan di rumah, ruang kelas, maupun tempat kerja secara fleksibel melalui smartphone kapan saja dan di mana saja.

2. Alat dan Bahan

Komponen Jumlah Keterangan
ESP32 Development Board 1 Modul utama mikrokontroler dengan Wi-Fi & Bluetooth
Sensor Gas MQ-135 1 Mendeteksi gas CO2, NH3, asap, benzena, dan alkohol
Sensor Suhu dan Kelembapan DHT11 1 Mengecek suhu 0-50°C dan kelembapan 20-90% RH
LCD Display 16×2 I2C 1 Menampilkan data sensor secara lokal dengan antarmuka I2C
Power Supply Adaptor 5V 2A 1 Sumber daya stabil untuk mikrokontroler dan sensor
Kabel Jumper & Breadboard/PCB Secukupnya Rangkaian koneksi komponen

3. Skematik Rangkaian dan Jalur Pin

Pemetaan Pin Komponen

Penginstalan rangkaian hardware membutuhkan ketelitian dalam memilih jalur pin GPIO pada ESP32. Antarmuka layar LCD 16×2 I2C dipasangkan pada jalur default I2C ESP32, yaitu pin SDA terhubung ke GPIO 21 dan pin SCL terhubung ke GPIO 22. Penggunaan modul I2C ini sangat menghemat penggunaan pin GPIO mikrokontroler karena hanya membutuhkan dua jalur komunikasi data. Untuk sensor suhu dan kelembapan DHT11, pin data digital dihubungkan ke jalur GPIO 13.

Komponen Pin Komponen Pin ESP32
LCD Display 16×2 I2C SDA GPIO 21
LCD Display 16×2 I2C SCL GPIO 22
Sensor Gas MQ-135 Analog Output (AO) GPIO 34 (ADC1_CH6)
Sensor DHT11 Data GPIO 13
Power Supply / VCC VCC / 5V VIN / 5V
Power Supply / GND GND GND

Solusi Noise ADC dan Mode Bootloader

Pemilihan pin untuk keluaran analog sensor MQ-135 harus dilakukan secara cermat. Kamu wajib menggunakan pin yang terhubung ke saluran ADC1 (seperti GPIO 34, 35, atau 36) dan menghindari penggunaan pin ADC2 (GPIO 0, 2, 4, 12-15, 25-27). Hal ini dikarenakan sirkuit ADC2 berbagi hardware dengan periferal pemancar Wi-Fi ESP32, sehingga akan terjadi konflik hardware atau pembacaan data acak ketika Wi-Fi sedang aktif menyalurkan data. Selain itu, pin GPIO 34-39 merupakan pin input-only tanpa transistor output driver, yang menjadikannya memiliki karakteristik sinyal analog lebih bersih dari interupsi internal.

Untuk mereduksi noise frekuensi tinggi dari sirkuit internal ESP32 yang dapat mengganggu akurasi ADC, pasangkan kapasitor dekopling keramik 100nF antara pin analog input (GPIO 34) dan GND. Kapasitor ini berfungsi sebagai filter low-pass hardware sederhana untuk meredam riak tegangan. Pastikan pula jalur daya komponen tidak mengganggu jalur strapping pins saat proses menyalakan atau mereset papan, sesuai rincian panduan ESP32 Boot Mode Selection agar mikrokontroler dapat masuk ke mode bootloader dengan lancar.

4. Cara Kerja Sistem dan Pengolahan Data Sensor

Sistem ini bekerja secara kontinu dengan mengumpulkan data fisik dari lingkungan sekitar. Sensor MQ-135 menghasilkan sinyal analog berupa tegangan yang nilainya proporsional dengan konsentrasi gas di udara, seperti karbondioksida, amonia, benzena, alkohol, dan asap. Di sisi lain, sensor DHT11 membaca parameter suhu dan kelembapan relatif lingkungan, kemudian mengirimkan hasilnya ke ESP32 menggunakan protokol komunikasi digital tunggal (single-wire).

Perlu dipahami bahwa nilai pencemaran udara yang dibaca oleh sistem ini (gasValue) merupakan representasi nilai mentah (raw ADC) 12-bit dengan rentang skala 0 hingga 4095, dan bukan konversi langsung ke satuan PPM (parts per million). Penggunaan nilai mentah ADC yang telah difilter ini disengaja untuk mempermudah kategorisasi ambang batas kualitas udara tanpa memerlukan kalkulasi kurva logaritma kompleks yang memberatkan komputasi awal, namun tetap mempertahankan akurasi engineering yang presisi untuk klasifikasi indikator lingkungan.

Saat sinyal analog dari MQ-135 diterima oleh ADC ESP32, sinyal tersebut rawan terkena interferensi switching noise dari CPU (240 MHz) dan pemancar Wi-Fi. Untuk mengatasi masalah ini, program menggunakan teknik pembacaan oversampling atau averaging. ESP32 mengambil 64 sampel sinyal analog secara cepat dalam hitungan milidetik, lalu menghitung nilai rata-ratanya untuk mengeliminasi lonjakan noise acak secara instan.

Setelah data sensor DHT11 dan nilai analog MQ-135 selesai diolah dan difilter, ESP32 memperbarui tampilan teks pada layar LCD 16×2 I2C secara lokal. Secara bersamaan, modul Wi-Fi internal ESP32 memaketkan data tersebut dan mengirimkannya melalui koneksi internet ke platform cloud BlynkIoT.

5. Pemrograman dan Kode Program ESP32

#define BLYNK_TEMPLATE_ID "TMPLxxxxxx"
#define BLYNK_TEMPLATE_NAME "Air Quality Monitoring"
#define BLYNK_AUTH_TOKEN "Your_Blynk_Auth_Token"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

// Konfigurasi WiFi dan Blynk
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Nama_WiFi_Kamu";
char pass[] = "Password_WiFi_Kamu";

// Definisi pin dan tipe sensor
#define DHTPIN 13
#define DHTTYPE DHT11
#define MQ135_PIN 34  // Menggunakan pin ADC1 (GPIO 34)

// Inisialisasi komponen
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;

// Fungsi oversampling 64 sampel untuk mengurangi noise ADC
int readADCaveraged(int pin, int samples = 64) {
  long sum = 0;

  for (int i = 0; i < samples; i++) {
    sum += analogRead(pin);
    delayMicroseconds(100);
  }

  return sum / samples;
}

// Fungsi membaca dan mengirim data sensor
void processAndSendData() {
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();
  int gasValue = readADCaveraged(MQ135_PIN, 64);

  if (isnan(temp) || isnan(hum)) {
    Serial.println("Gagal membaca dari sensor DHT11!");
    return;
  }

  // Menampilkan data pada LCD 16x2
  lcd.setCursor(0, 0);
  lcd.print("Temp:");
  lcd.print((int)temp);
  lcd.print("C Hum:");
  lcd.print((int)hum);
  lcd.print("%");

  lcd.setCursor(0, 1);
  lcd.print("Gas Val:");
  lcd.print(gasValue);
  lcd.print("     ");

  // Mengirim data sensor ke Blynk IoT Cloud
  Blynk.virtualWrite(V0, temp);
  Blynk.virtualWrite(V1, hum);
  Blynk.virtualWrite(V2, gasValue);

  // Menentukan status kualitas udara berdasarkan nilai ADC
  if (gasValue < 500) {
    Blynk.virtualWrite(V3, "Moderate");
  } else if (gasValue < 900) {
    Blynk.virtualWrite(V3, "Poor");
  } else {
    Blynk.virtualWrite(V3, "Very Poor");
  }
}

void setup() {
  Serial.begin(115200);

  dht.begin();
  lcd.init();
  lcd.backlight();

  // Konfigurasi ADC ESP32
  // Attenuasi 11dB untuk rentang tegangan hingga sekitar 3.3V
  // Resolusi 12-bit menghasilkan nilai pembacaan 0-4095
  analogSetAttenuation(ADC_11db);
  analogSetWidth(12);

  // Menghubungkan ESP32 ke Blynk
  Blynk.begin(auth, ssid, pass);

  // Menjalankan pembacaan sensor setiap 2 detik
  timer.setInterval(2000L, processAndSendData);
}

void loop() {
  Blynk.run();
  timer.run();
}

Struktur kode di atas dirancang ringkas namun tangguh. Pada fungsi setup(), instruksi analogSetAttenuation(ADC_11db); dipanggil untuk mengonfigurasi batas ukur input analog pada rentang penuh 0–3.3V, sedangkan analogSetWidth(12); menetapkan resolusi pembacaan ADC pada tingkat 12-bit (menghasilkan rentang angka mentah 0–4095). Fungsi readADCaveraged() mengeksekusi pembacaan 64 sampel sinyal analog secara beruntun dengan interval mikrodetik untuk menyaring riak noise frekuensi tinggi. Rutinitas pembacaan sensor, pembaruan LCD, serta pengiriman data ke Virtual Pins Blynk (V0 hingga V3) diatur secara efisien oleh BlynkTimer setiap 2 detik agar tidak mengganggu kinerja transmisi data pada loop utama.

6. Pengujian dan Hasil Dashboard

Setelah kode program berhasil diunggah dan sirkuit dihubungkan ke adaptor daya 5V 2A, sistem akan langsung menginisialisasi seluruh komponen. Layar LCD 16×2 I2C menampilkan data pembacaan lokal secara langsung, di mana baris pertama memuat informasi suhu (°C) dan kelembapan (% RH), sedangkan baris kedua menampilkan nilai mentah pembacaan gas hasil proses oversampling.

+----------------+
|Temp:28C Hum:66%|
|Gas Val:370     |
+----------------+

Pada aplikasi Blynk IoT (baik melalui mobile app maupun web dashboard), parameter lingkungan divisualisasikan secara intuitif menggunakan widget Gauge dan Label Display:

  • Temperature Gauge: Menampilkan suhu ruangan dalam derajat Celsius secara real-time (misalnya 28°C atau 29°C).
  • Humidity Gauge: Menampilkan tingkat kelembapan relatif udara (misalnya 62% hingga 66% RH).
  • Gas Value Gauge: Menampilkan tingkat konsentrasi gas dalam rentang skala mentah ADC 12-bit (misalnya nilai 370, 686, hingga 1100).
  • Air Quality Status: Menampilkan teks indikator status kualitas udara berdasarkan pengelompokan ambang batas gas:
    • Status Moderate muncul ketika pembacaan gas tergolong rendah (contoh: nilai ADC 370 pada suhu 28°C dan kelembapan 66%).
    • Status Poor muncul ketika terjadi peningkatan konsentrasi gas sedang (contoh: nilai ADC 686 pada suhu 29°C dan kelembapan 62%).
    • Status Very Poor aktif saat tercatat akumulasi gas berlebih di udara (contoh: nilai ADC mencapai 1100 pada suhu 29°C dan kelembapan 62%).

7. Kesimpulan

Membuat sendiri sistem monitoring kualitas udara ESP32 MQ-135 adalah proyek IoT yang sangat praktis, edukatif, dan berdampak langsung pada kenyamanan lingkungan sekitar kita. Dengan mengombinasikan keunggulan pemrosesan dual-core ESP32, teknik penyaringan noise ADC yang tepat, dan platform cloud Blynk, kamu bisa membangun perangkat pemantau udara pintar berfitur lengkap dengan biaya yang sangat terjangkau. Proyek ini membuktikan bahwa eksperimen elektronika embedded tidak hanya seru untuk dirakit, tetapi juga mampu menghasilkan perangkat yang fungsional untuk mendukung gaya hidup sehat sehari-hari.

Bagikan ke

Bikin Alat Monitoring Kualitas Udara Ruangan Berbasis ESP32 dan Sensor MQ-135

Saat ini belum tersedia komentar.

Silahkan tulis komentar Anda

Bikin Alat Monitoring Kualitas Udara Ruangan Berbasis ESP32 dan Sensor MQ-135

Produk yang sangat tepat, pilihan bagus..!

Berhasil ditambahkan ke keranjang belanja
Lanjut Belanja
Checkout
Produk Quick Order

Pemesanan dapat langsung menghubungi kontak dibawah: