ESP32 MQ-2 Gaz/Duman Dedektörü Alarmı
Bu projede MQ-2 gaz sensörü modülü ile yanıcı gaz (LPG, metan, propan) ve duman tespiti yapılır; tespit anında pasif buzzer üzerinden siren benzeri bir alarm sesi çalınır. Sensörün dijital eşik çıkışı (DO) ESP32'nin GPIO 4 pinine bağlanır; gaz ya da duman eşik değeri aştığında DO LOW olur ve alarm tetiklenir. Hassasiyet modül üzerindeki potansiyometre ile ayarlanır. Pasif buzzer `tone()` fonksiyonu ile sürülerek iki frekans arasında geçişli siren efekti üretilir.

Video
Devre Şeması

Kaynak Kodu
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// ESP32 MQ-2 Gaz/Duman Dedektörü Alarmı
4// ─────────────────────────────────────────
5// MQ-2 modülünün dijital eşik çıkışı (DO) okunur. Gaz ya da duman eşiği
6// aşılınca uyarı LED'i yanar ve pasif buzzer 800/1200 Hz arasında 0.2
7// sn'de bir geçen siren çalar. Eşik modül üzerindeki trimpot ile ayarlanır
8// (Arduino Core 3.0+).
9//
10// Pinler:
11// GPIO 4 -> MQ-2 DO (dijital eşik çıkışı)
12// GPIO 18 -> Buzzer + bacağı
13// GPIO 5 -> Kırmızı LED (220 ohm dirençle)
14// MQ-2 VCC -> 5V (VIN), GND -> GND
15
16// Pin tanımları
17const int MQ2_DO_PIN = 4; // MQ-2 D0 (dijital eşik çıkışı)
18const int BUZZER_PIN = 18; // Pasif buzzer
19const int LED_PIN = 5; // Uyarı LED + 220R
20
21// Isınma süresi (ms): MQ-2'nin ısıtıcısı dakikalarca ısınır. Wokwi'de 2000 yeterli.
22const unsigned long WARMUP_MS = 60000;
23bool warmedUp = false; // Isınma bitti mi
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 // Isınma: DO okuması yok sayılır, LED bloklamadan yavaşça yanıp söner
35 if (!warmedUp) {
36 if (millis() < WARMUP_MS) {
37 digitalWrite(LED_PIN, (millis() / 500) % 2); // 0.5 sn yanık, 0.5 sn sönük
38 return;
39 }
40 warmedUp = true;
41 }
42
43 // MQ-2 D0 normalde HIGH, eşik aşılınca LOW
44 int gasState = digitalRead(MQ2_DO_PIN);
45
46 if (gasState == LOW) {
47 // Alarm: LED yanar, buzzer iki tonlu siren çalar
48 digitalWrite(LED_PIN, HIGH);
49 tone(BUZZER_PIN, 800); // Kalın ses
50 delay(200);
51 tone(BUZZER_PIN, 1200); // Yüksek ton
52 delay(200);
53 } else {
54 // Bekleme: LED ve buzzer kapalı
55 digitalWrite(LED_PIN, LOW);
56 noTone(BUZZER_PIN);
57 delay(50);
58 }
59}
60
Sıkça Sorulanlar
MQ-2 hangi gazları algılar?▾
MQ-2 LPG, propan, metan, hidrojen, alkol buharı ve dumana duyarlıdır. Hangi gaz olduğunu ayırt edemez; yalnızca toplam yoğunluk artışını algılar.
MQ-2'nin analog çıkışı ESP32'ye doğrudan bağlanabilir mi?▾
MQ-2 5 V ile beslenir ve analog çıkışı 5 V'a kadar çıkabilir. ESP32'nin ADC girişi en fazla 3,3 V kabul ettiği için bir gerilim bölücü (ör. 10 kΩ + 20 kΩ) kullanmak gerekir.
Sensör ilk açılışta yüksek değer gösteriyor, neden?▾
MQ sensörlerin ısıtıcısının dengeye gelmesi birkaç dakika sürer; bu sürede değerler yüksek okunur. Alarmı açılıştan sonra birkaç dakika devre dışı bırakmak yanlış alarmları önler.
Siren efekti nasıl oluşturuluyor?▾
Pasif buzzer iki farklı frekans arasında hızla gidip gelecek şekilde tone() ile sürülür (ör. 800 Hz ve 1200 Hz). Bu geçiş klasik alarm sesini taklit eder.
