ESP32 ile MQ2 Gaz Sensörü Projesi

Bu rehber, ESP32 geliştirme kartı kullanarak MQ2 gaz sensörünün dijital çıkış (DO) pini ile gaz varlığını algılama işlemini adım adım açıklar. Sensörün ısınma süresi, eşik değer ayarı ve dijital okuma prensibine dayanan bu proje, gaz sensörü entegrasyonu, dijital giriş okuma ve ortam güvenliği uygulamaları konularını öğrenmek için temel bir uygulamadır.

Adım 1 – MQ2 Gaz Sensörünü Tanıyın

MQ2 Sensör Özellikleri

MQ2, yanıcı gazları ve dumanı algılayabilen yarı iletken tip bir gaz sensörüdür. Aşağıdaki gazları tespit edebilir:

  • LPG / Propan: Mutfak tüpü, ısıtıcı gazları
  • Hidrojen (H₂): Yakıt hücreleri, endüstriyel uygulamalar
  • Metan (CH₄): Doğal gaz, biyogaz
  • Alkol / Etanol: Temizlik ürünleri, endüstriyel çözücüler
  • Duman: Yangın erken uyarı sistemleri

Sensör Bağlantı Pinleri

MQ2 sensör modülü dört bağlantı ucuna sahiptir:

  • VCC: Güç beslemesi (5V önerilir, 3.3V ile de çalışabilir)
  • GND: Toprak bağlantısı
  • DO (Digital Output): Dijital çıkış sinyali (HIGH/LOW)
  • AO (Analog Output): Analog çıkış sinyali (0-3.3V, bu projede kullanılmıyor)

Dijital Çıkış (DO) Çalışma Prensibi

DO pini, sensörün algıladığı gaz konsantrasyonunu önceden ayarlanmış bir eşik değer ile karşılaştırır:

  • Gaz yoksa: DO pini HIGH (3.3V) seviyesinde kalır
  • Gaz algılandığında: DO pini LOW (0V) seviyesine düşer

Eşik değeri, modül üzerindeki potansiyometre ile ayarlanabilir.

Adım 2 – GPIO Pin Atamaları

Projede kullanılan pin ataması:

  • GPIO 16: MQ2 sensör DO (dijital çıkış) pini için dijital giriş

Not: DO sinyali dijital giriş olarak okunduğundan, herhangi bir GPIO pini kullanılabilir. GPIO 16 seçimi örneğe dayanmaktadır.

Adım 3 – Devre Bağlantısı

MQ2 Sensör Modülü Bağlantısı:

  1. MQ2 modülünün VCC pinini ESP32 5V pinine bağlayın (3.3V ile de çalışabilir ancak 5V daha kararlı okuma sağlar).
  2. MQ2 modülünün GND pinini ESP32 GND pinine bağlayın.
  3. MQ2 modülünün DO pinini ESP32 GPIO 16 pinine bağlayın.

Not: AO (analog çıkış) pini bu projede kullanılmamaktadır. Analog okuma yapmak isterseniz ADC destekleyen bir GPIO’ya (örn: GPIO 36) bağlayabilirsiniz.

Potansiyometre Ayarı

Modül üzerindeki potansiyometre, gaz algılama eşik değerini belirler:

  • Saat yönünde çevirmek: Eşiği düşürür, daha hassas algılama sağlar
  • Saat yönünün tersine çevirmek: Eşiği yükseltir, daha az hassas algılama sağlar

Ayarı test ortamında gaz kaynağı yaklaştırılarak yapılmalıdır.

Adım 4 – Arduino IDE Hazırlığı

Arduino IDE’yi açın ve aşağıdaki kart ayarlarını kontrol edin:

  • Board: ESP32 geliştirme kartınızın modeli (Örn: DOIT ESP32 DEVKIT V1)
  • Port: ESP32’nin bağlı olduğu COM portu
  • ESP32 Paketi: Board Manager’dan “esp32” paketinin yüklü olduğundan emin olun

Not: Bu proje harici kütüphane gerektirmez; ESP32’nin dahili GPIO fonksiyonları yeterlidir.

Adım 5 – Kodu Yükleyin

Aşağıdaki kodu Arduino IDE editörüne yapıştırın ve ESP32 kartınıza yükleyin:

/*
 * ESP32 MQ2 Gaz Sensörü Projesi (Dijital Çıkış)
 * Sensör: MQ2 gaz/duman sensörü modülü
 * Çıkış tipi: DO (Digital Output) - HIGH/LOW sinyal
 * Bağlantı: DO pini -> GPIO16
 * Algılama: Gaz yoksa HIGH, gaz varsa LOW
 * Isınma süresi: 20 saniye (test için), tam stabilizasyon: 24-48 saat
 */

// MQ2 sensörünün DO (Digital Output) pininin bağlı olduğu GPIO pini
// GPIO16 dijital giriş modunda sensör sinyalini okumak için kullanılır
// DO pini: Gaz yoksa HIGH (3.3V), gaz algılandığında LOW (0V) üretir
#define DO_PIN 16  // GPIO16 pini MQ2 sensör DO hattına bağlanır

// Kurulum fonksiyonu: reset atıldığında bir kez çalışır
void setup() {
  // Serial iletişim hızını 9600 baud olarak başlat
  // Gaz algılama durumunu Serial Monitor'de izlemek ve hata ayıklama için kullanılır
  Serial.begin(9600);

  // DO_PIN'i dijital giriş (INPUT) modunda yapılandır
  // pinMode(pin, MODE): Belirtilen pinin çalışma modunu ayarlar
  // INPUT modu: Pin dışarıdan gelen sinyali okumak için hazırlanır
  // Dahili pull-up/pull-down dirençleri aktif değildir
  pinMode(DO_PIN, INPUT);

  // Kullanıcıya sensör ısınma bilgisi Serial Monitor'e yazdır
  // MQ2 sensörü ilk çalıştırmada ısınma süresine ihtiyaç duyar
  Serial.println("Warming up the MQ2 sensor");

  // Sensörün ısınması için 20 saniye bekle
  // delay(ms): Program akışını belirtilen milisaniye kadar duraklatır
  // MQ2 sensörü tam kararlı okuma için 24-48 saat ısınma gerektirebilir
  // Ancak temel testler için 20-30 saniye yeterli olabilir
  // Gerçek uygulamalarda bu süre artırılmalı veya sensör sürekli çalışır durumda tutulmalıdır
  delay(20000);  // 20000 ms = 20 saniye bekleme süresi
}

// Ana döngü fonksiyonu: sürekli tekrarlanır
void loop() {
  // DO_PIN'den dijital sinyal değerini oku
  // digitalRead(pin): Belirtilen pinin HIGH (1) veya LOW (0) durumunu döner
  // MQ2 DO çıkışı: Gaz yoksa HIGH, gaz algılandığında LOW seviyesindedir
  int gasState = digitalRead(DO_PIN);

  // Okunan gaz durumu değerine göre koşul kontrolü yap
  // gasState == HIGH: Sensör gaz algılamadı (temiz hava)
  if (gasState == HIGH) {
    // Serial Monitor'e "Gaz tespit edilmedi" mesajı yazdır
    // println(): Metni yazdıktan sonra satır sonu ekler, bir sonraki çıktı yeni satırda başlar
    Serial.println("The gas is NOT present");
  }
  // gasState == LOW: Sensör gaz algıladı (eşik değeri aşıldı)
  else {
    // Serial Monitor'e "Gaz tespit edildi" uyarı mesajı yazdır
    Serial.println("The gas is present");
  }

  // Döngü sonuna gecikme eklenmemiştir; sürekli okuma yapılır
  // Gerektiğinde okuma sıklığını azaltmak için delay(100-500) eklenebilir
  // Örnek: delay(200); // 200ms bekle, saniyede ~5 okuma yap
}

Kod Nasıl Çalışır

Tanımlar ve Sabitler

  • #define DO_PIN 16: MQ2 sensörünün dijital çıkış pininin bağlı olduğu GPIO numarası sabit olarak tanımlanır; kodun okunabilirliği ve bakımı kolaylaşır.

Setup Fonksiyonu

  • Serial.begin(9600): Serial iletişim başlatılır; gaz algılama durumunu izlemek ve hata ayıklama için kullanılır.
  • pinMode(DO_PIN, INPUT): DO pini dijital giriş moduna yapılandırılır; sensörden gelen HIGH/LOW sinyali okunabilir hale gelir.
  • Serial.println("Warming up..."): Kullanıcıya sensör ısınma süreci hakkında bilgi verilir.
  • delay(20000): Sensörün ısınması için 20 saniye bekleme sağlanır; bu süre boyunca program duraklar ve okuma yapılmaz.

Loop Fonksiyonu

  • digitalRead(DO_PIN): MQ2 sensörünün DO pininden dijital sinyal okunur; gaz durumuna göre HIGH veya LOW değer döner.
  • if (gasState == HIGH): Sensör gaz algılamadıysa koşul sağlanır; “The gas is NOT present” mesajı Serial Monitor’e yazdırılır.
  • else: Sensör gaz algıladıysa bu blok çalışır; “The gas is present” uyarı mesajı görüntülenir.
  • Serial.println(): Her okuma sonrası mesaj yazdırılır ve satır sonu eklenir; Serial Monitor’de her durum yeni satırda görünür.
  • Döngü sürekli tekrarlandığından, gaz durumu gerçek zamanlı olarak izlenir.

Adım 6 – Test Edin

Kod yüklendikten sonra:

  1. Arduino IDE’de Serial Monitor’ü açın (9600 baud).
  2. “Warming up the MQ2 sensor” mesajının görüntülendiğini kontrol edin.
  3. 20 saniye ısınma süresinin tamamlanmasını bekleyin.
  4. Normal ortamda “The gas is NOT present” mesajının sürekli tekrarlandığını gözlemleyin.
  5. Sensöre hafifçe çakmak gazı, kolonya buharı veya duman yaklaştırın.
  6. Gaz algılandığında Serial Monitor’de “The gas is present” mesajının görüntülendiğini doğrulayın.
  7. Gaz kaynağı uzaklaştırıldığında mesajın tekrar “NOT present” durumuna döndüğünü kontrol edin.
  8. Tepki alınamıyorsa potansiyometre ayarını, bağlantıları ve sensörün ısındığından emin olun.

İsteğe Bağlı Geliştirmeler

Temel işlevi tamamladıktan sonra projeyi aşağıdaki şekilde genişletebilirsiniz:

  • Analog Okuma: AO pinini ADC destekleyen GPIO’ya bağlayarak gaz konsantrasyon seviyesini ölçün.
  • LED/Buzzer Uyarısı: Gaz algılandığında görsel (LED) ve işitsel (buzzer) uyarı ekleyin.
  • Debouncing: Yanlış tetiklemeleri önlemek için okuma sonrası kısa delay(50) veya yazılımsal filtre ekleyin.
  • WiFi Bildirimi: ESP32 WiFi özelliği ile gaz algılandığında e-posta veya push bildirimi gönderin.
  • Veri Kaydı: SD kart modülü ile gaz olaylarını zaman damgası ile kaydedin.
  • Çoklu Sensör: Farklı gaz türleri için MQ serisi diğer sensörleri (MQ5, MQ7, MQ135) entegre edin.

ESP32 MQ2 Sensör Projesi SSS

S: Sensör sürekli “gas present” uyarısı veriyor.
C: Potansiyometre çok hassas ayarlanmış olabilir. Potansiyometreyi saat yönünün tersine çevirerek eşik değerini yükseltin. Ayrıca sensörün temiz havada kalibre edilmesi gerekebilir.

S: Sensör hiç tepki vermiyor, gaz yaklaştırdığımda bile.
C: Sensör yeterince ısınmamış olabilir. MQ2 tam kararlılık için 24-48 saat sürekli çalıştırılmalıdır. Ayrıca potansiyometreyi saat yönünde çevirerek hassasiyeti artırın ve gaz kaynağının yeterince yakın olduğundan emin olun.

S: DO yerine AO (analog) çıkışını kullanabilir miyim?
C: Evet. AO pinini GPIO 36 gibi ADC destekleyen bir pine bağlayın ve analogRead() ile 0-4095 aralığında değer okuyun. Bu sayede gaz konsantrasyon seviyesini ölçebilirsiniz.

S: Isınma süresi neden bu kadar uzun?
C: MQ2 sensörü içindeki ısıtıcı eleman, sensör malzemesinin doğru çalışması için belirli sıcaklığa ulaşmalıdır. Kısa süreli testler için 20-30 saniye yeterli olabilir ancak hassas ölçümler için 24-48 saat sürekli çalışma önerilir.

S: Sensörü dış mekanda kullanabilir miyim?
C: MQ2 modülleri genellikle açık hava koşullarına dayanıklı değildir. Nem, toz ve sıcaklık değişimlerinden korumak için uygun muhafaza içinde kullanılmalıdır. Ayrıca rüzgar gaz konsantrasyonunu etkileyebilir.

S: Farklı GPIO pinleri kullanabilir miyim?
C: Evet. DO sinyali dijital giriş olarak okunduğundan, herhangi bir GPIO pini kullanılabilir. #define DO_PIN 16 satırındaki değeri değiştirerek pin atamasını güncelleyebilirsiniz.

S: Gaz algılama mesafesi ne kadar olmalı?
C: MQ2 sensörü temas veya çok yakın mesafe (1-5 cm) için tasarlanmıştır. Gazın sensöre doğrudan ulaşması gerekir; uzaktan algılama için fan veya hava akışı yönlendirme sistemi gerekebilir.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir