Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

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.
MQ2, yanıcı gazları ve dumanı algılayabilen yarı iletken tip bir gaz sensörüdür. Aşağıdaki gazları tespit edebilir:

MQ2 sensör modülü dört bağlantı ucuna sahiptir:
DO pini, sensörün algıladığı gaz konsantrasyonunu önceden ayarlanmış bir eşik değer ile karşılaştırır:
Eşik değeri, modül üzerindeki potansiyometre ile ayarlanabilir.
Projede kullanılan pin ataması:
Not: DO sinyali dijital giriş olarak okunduğundan, herhangi bir GPIO pini kullanılabilir. GPIO 16 seçimi örneğe dayanmaktadır.

Not: AO (analog çıkış) pini bu projede kullanılmamaktadır. Analog okuma yapmak isterseniz ADC destekleyen bir GPIO’ya (örn: GPIO 36) bağlayabilirsiniz.
Modül üzerindeki potansiyometre, gaz algılama eşik değerini belirler:
Ayarı test ortamında gaz kaynağı yaklaştırılarak yapılmalıdır.
Arduino IDE’yi açın ve aşağıdaki kart ayarlarını kontrol edin:
Not: Bu proje harici kütüphane gerektirmez; ESP32’nin dahili GPIO fonksiyonları yeterlidir.
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
}
#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.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.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.Kod yüklendikten sonra:
Temel işlevi tamamladıktan sonra projeyi aşağıdaki şekilde genişletebilirsiniz:
delay(50) veya yazılımsal filtre ekleyin.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.