Alarm Detektor Gas/Asap MQ-2 ESP32
Di proyek ini, gas mudah terbakar (LPG, metana, propana) dan asap dideteksi memakai modul sensor gas MQ-2, dan alarm mirip sirene diputar lewat buzzer pasif ketika terdeteksi. Output ambang digital (DO) sensor disambung ke GPIO 4 ESP32; ketika gas atau asap melewati ambang, DO menjadi LOW dan alarm terpicu. Kepekaan diatur lewat potensiometer modul. Buzzer pasif digerakkan dengan tone() untuk menghasilkan efek sirene dua frekuensi.

Video
Skema rangkaian

Kode sumber
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Alarm Detektor Gas/Asap MQ-2 ESP32
4// ─────────────────────────────────────────
5// Membaca output ambang digital (DO) dari modul MQ-2. Ketika gas atau asap
6// melewati ambang, LED peringatan menyala dan buzzer pasif memainkan
7// sirene yang berganti antara 800 dan 1200 Hz setiap 0.2 s. Atur ambangnya
8// dengan trimpot di modul (Arduino Core 3.0+).
9//
10// Pin:
11// GPIO 4 -> MQ-2 DO (output ambang digital)
12// GPIO 18 -> Kaki + buzzer
13// GPIO 5 -> LED merah (dengan resistor 220 ohm)
14// MQ-2 VCC -> MQ-2 VCC -> 5V (VIN), GND -> GND
15
16// Definisi pin
17const int MQ2_DO_PIN = 4; // MQ-2 D0 (output ambang digital)
18const int BUZZER_PIN = 18; // Buzzer pasif
19const int LED_PIN = 5; // LED peringatan + 220R
20
21// Waktu pemanasan (ms): heater MQ-2 butuh beberapa menit untuk panas. Di Wokwi 2000 sudah cukup.
22const unsigned long WARMUP_MS = 60000;
23bool warmedUp = false; // Apakah pemanasan sudah selesai
24
25void setup() {
26 pinMode(MQ2_DO_PIN, INPUT);
27 pinMode(BUZZER_PIN, OUTPUT);
28 pinMode(LED_PIN, OUTPUT);
29 digitalWrite(BUZZER_PIN, LOW);
30 digitalWrite(LED_PIN, LOW);
31}
32
33void loop() {
34 // Pemanasan: pembacaan DO diabaikan, LED berkedip pelan tanpa memblokir
35 if (!warmedUp) {
36 if (millis() < WARMUP_MS) {
37 digitalWrite(LED_PIN, (millis() / 500) % 2); // 0.5 s nyala, 0.5 s mati
38 return;
39 }
40 warmedUp = true;
41 }
42
43 // MQ-2 D0 normalnya HIGH dan menjadi LOW di atas ambang
44 int gasState = digitalRead(MQ2_DO_PIN);
45
46 if (gasState == LOW) {
47 // Alarm: LED menyala, buzzer memainkan sirene dua nada
48 digitalWrite(LED_PIN, HIGH);
49 tone(BUZZER_PIN, 800); // Nada rendah
50 delay(200);
51 tone(BUZZER_PIN, 1200); // Nada tinggi
52 delay(200);
53 } else {
54 // Diam: LED dan buzzer mati
55 digitalWrite(LED_PIN, LOW);
56 noTone(BUZZER_PIN);
57 delay(50);
58 }
59}
60
FAQ
Gas apa yang dideteksi MQ-2?
MQ-2 peka terhadap LPG, propana, metana, hidrogen, uap alkohol, dan asap. Sensor ini tidak bisa membedakan gas yang berbeda; ia hanya mendeteksi kenaikan kepadatan secara keseluruhan.
Bisakah output analog MQ-2 langsung disambung ke ESP32?
MQ-2 diberi daya 5 V, dan output analognya bisa mencapai 5 V. Karena input ADC ESP32 paling tinggi menerima 3,3 V, harus dipakai pembagi tegangan (mis. 10 kΩ + 20 kΩ).
Sensor menunjukkan bacaan tinggi ketika pertama kali dinyalakan. Kenapa?
Pemanas sensor MQ butuh beberapa menit untuk stabil; selama itu bacaannya tinggi. Menonaktifkan alarm selama beberapa menit setelah dinyalakan mencegah alarm palsu.
Bagaimana efek sirene dibuat?
Buzzer pasif digerakkan dengan `tone()` agar berayun cepat di antara dua frekuensi berbeda (mis. 800 Hz dan 1200 Hz). Ayunan ini meniru bunyi alarm klasik.
