● online
- Kabel Jumper Dupont Pelangi 30 cm female to Female....
- Push Button Tactile Switch Saklar Tombol Tinggi - ....
- TANG CRIMPING PRESS SKUN RATCHET YTH SN-48B....
- Sensor Ultrasonik HC-SR04 HC SR04 Sensor Jarak Ult....
- Raspberry Pi Pico Microcontroller Board....
- Resistor 220 Ohm 220R Ohm 220Ohm 1/4W 1% Metal fil....
- SG90 Motor Servo For Arduino Uno Mega SG 90 Biru S....
- Raspberry Pi 4 Model B 8GB Original UK E14 Raspi 4....
- 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.
Bikin Alat Monitoring Kualitas Udara Ruangan Berbasis ESP32 dan Sensor MQ-135
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.
Bikin Alat Monitoring Kualitas Udara Ruangan Berbasis ESP32 dan Sensor MQ-135
Pada kesempatan ini akan dijelaskan mengenai cara pembuatan export/download berupa file excel berdasarkan range tanggal yang dipilih. Filter ini... selengkapnya
Pada artikel kali ini akan membahas tutorial mengakses sensor soil moisture pada Arduino. Nanti hasilnya akan ditampilkan dalam persen... selengkapnya
DHT11 adalah perangkat elektronik yang digunakan untuk mendeteksi kelembapan dan suhu udara. Sensor ini dapat digunakan untuk mendeteksi suhu... selengkapnya
Modul Bluetooth DX-BT18 adalah perangkat elektronika yang digunakan untuk menghubungkan suatu perangkat menggunakan koneksi bluetooth. Saat ini penggunaan sensor sidik... selengkapnya
Pernah gak sih kamu lupa nyiram tanaman kesayangan sampai daunnya layu dan hampir mati? Padahal, menjaga tanaman tetap segar dan... selengkapnya
SIM800C adalah modul GSM / GPRS yang bekerja di frekuensi 850 – 1900 MHz, modul ini dapat membaca SMS... selengkapnya
Di percobaan sebelumnya, kamu sudah belajar dua hal penting secara terpisah, yaitu menyalakan LED dan membaca input dari tombol. Nah,... selengkapnya
Sensor ultrasonik merupakan sensor yang dapat mendeteksi suatu benda yang ada di depannya dengan jarak tertentu. Prinsip kerja dari... selengkapnya
Setelah mengetahui spesifikasi dan fungsi BFD-1000 pada artikel sebelumnya, maka kini mari kita belajar lebih dalam lagi mengenai pin pada... selengkapnya
Halo sobat IoT! Pernah gak sih kamu membayangkan punya tempat sampah pintar di rumah yang gak cuma bisa bekerja secara... selengkapnya
Deskripsi Produk “LED Dot Matrix Display dengan 32×8 pixel, berwarna Merah, menggunakan IC MAX7219 sebagai driver dan dapat dikoneksikan ke… selengkapnya
Rp 47.500Modul sensor tegangan AC bolak balik 3 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 57.000Kabel Jumper Dupont Pelangi 10 cm female to female 1 lembar = 40 kabel
Rp 9.000Kabel Jumper Dupont Pelangi 10 cm male to male 1 lembar = 40 kabel
Rp 13.000Kabel Jumper Dupont Pelangi 30cm female to Female 1 lembar = 40 kabel
Rp 13.500Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500Buruan dibeli gan….barang murah-berkualitas SIAPA CEPAT DIA DAPAT Spesifikasi: LCD 1602 / 16×2 (16 karakter, 2 baris) merek QAPASS (cek… selengkapnya
Rp 24.5002000W SCR Electronic Voltage Regulator Speed Controller Dimmer Thermostat Aplikasi : Kontrol temperature heater, kontrol kecepatan fan/bor tangan/gurinda tangan, kompor… selengkapnya
Rp 19.500MERK : TOWER PRO MG995 180 derajat Specifications Weight: 55 g Dimension: 40.7 x 19.7 x 42.9 mm approx. Stall… selengkapnya
Rp 36.300

Saat ini belum tersedia komentar.