Arduino İle MQ135 Hava Kalite Sensörünün Kullanımı
Hiç sağlığınıza zararlı gazların olduğu bir odaya girdiniz mi? Bu ortamın ne kadar sağlıklı olduğunu ölçmek istediniz mi? Bu yazımızda mq135 hava kalite sensörü ile bu aklınıza takılan soruları çözeceğiz.
Mq135 Hava Kalite Sensörü Nedir?
Gaz sensörleri, öncelikle belirli gazları tespit etmek ve sensörü çevreleyen havadaki gazların varlığını ve konsantrasyonunu ölçmek için kullanılır. Güvenlik sistemlerinde önemlidirler, yanıcı, parlayıcı ve zehirli gazlar ile bölgedeki oksijen tüketimi ve karbondioksit oranları hakkında bilgi sağlarlar. MQ135 gaz sensörü, düşük iletkenlik kalay oksit (SnO2) ile yapılmıştır. Hava kirliliği gaz sensöründe algılandığında, gaz konsantrasyonundaki hava kirliliğinde ki artış ile iletkenlik artar. Bu da bizim sensörümüzün çıkışında değişikliğe sebep olmaktadır. Bu sayede ortamdaki gaz konsantrasyonunu algılayabilmekteyiz.


Mq135 Hava Kalite Sensörü Özellikleri
- Boyut: 32X20X22mm
- Ana çip: MQ135 gaz algılama probu
- Çalışma Voltajı: DC 5V
- Güç Tüketimi(akım) : 150mA
- Analog ve dijital çıkışa sahiptir.
- Artan konsantrasyon ile Analog çıkış, konsantrasyon ne kadar yüksek olursa voltaj o kadar yüksek olur.
- Uzun ömürlü ve güvenilir bir kararlılığa sahiptir.
Not: Sensör 5V ile çalışan bir sensördür. 3.3V ile besleme ile düzgün çalışmamaktadır.
Mq135 Hava Kalite Sensörü Pinleri
Arduino | Sensör |
5V | VCC |
GND | GND |
Dijital Pin | DO |
Analog Pin | AO |
Arduino İle Mq135 Hava Kalite Sensörü Bağlantı Şeması

Burada en önemli nokta mq135 sensörünün dışarıdan beslenmesidir. Beslemeyi arduinonun 5v pini ile de yapabilirsiniz. Ama ben size tavsiye etmiyorum. Nedeni ise eğer bu sensör ile başka sensörlerde kullanırsanız güç sıkıntısı çekebilirsiniz. Bu sebeple lm2596 voltaj regülatörü ile beslemeyi yaptım. Lm2596 regülatörünü 5 volta ayarlamayı unutmayın. Bir diğer önemli nokta ise gnd hatlarının birleşmesidir.
Arduino İle Mq135 Hava Kalite Sensörü Kullanım Kodu
Bu sensörü kullanımında en önemli noktalardan birisi de ortamın sıcaklığı ve nemidir. İlk olarak bir ortamımızın sıcaklığını ve nemini biliyor gibi düşünüp sensörümüzün ilk kullanımını yapacağız. Arkasından dht11 sıcaklık ve nem sensörü ile anlık sıcaklık ve nem bilgilerimizi alarak daha doğru sonuçlar elde edceğiz.
İlk olarak gerekli kütüphanemizi indirmemiz lazım. Aşağıdaki linkten güncel kütüphanemizi indirelim.
#include <MQ135.h> //mq135 kütüphanemizi ekliyoruz
#define PIN_MQ135 A0 // sensörümüzün takılacağı pini tanımlıyoruz.
MQ135 mq135_sensor(PIN_MQ135); // Objemizi oluşturuyoruz.
float temperature = 21.0; // Varsayılan veya bilinen sıcaklık değerimizi giriyoruz.
float humidity = 25.0; // Varsayılan veya bilinen nem değerimizi giriyoruz.
void setup() {
Serial.begin(9600); // seri haberleşmeyi başlatıyoruz.
}
void loop() {
float rzero = mq135_sensor.getRZero(); // rzero değerini alıyoruz.
float correctedRZero = mq135_sensor.getCorrectedRZero(temperature, humidity); // doğrulanmış rzero değerini alıyoruz.
float resistance = mq135_sensor.getResistance(); // sensör direnç değerimizi alıyoruz.
float ppm = mq135_sensor.getPPM(); // hava kalitesini ppm cinsinden alıyoruz.
float correctedPPM = mq135_sensor.getCorrectedPPM(temperature, humidity); // doğrulanmış ppm değerini alıyoruz.
Serial.print("MQ135 RZero: ");
Serial.print(rzero);
Serial.print("\t Dogrulanmis RZero: ");
Serial.print(correctedRZero);
Serial.print("\t Direnç: ");
Serial.print(resistance);
Serial.print("\t PPM: ");
Serial.print(ppm);
Serial.print("\t Dogrulanmis PPM: ");
Serial.print(correctedPPM);
Serial.println("ppm");
delay(300); // 300ms bekleme yaptırarak ölçümlerimizi yapıyoruz.
}
Arkadaşlar kodumuzu çalıştırdığımızda düzgün sonuçlar elde etmek için ilk olarak sensörümüzün en az 2-3 dakika ısınmasını bekleyelim. Beklemeden sonra seri port ekranımızı açtığımda sensörün bana verdiği çıktı aşağıdaki resimdeki gibidir.

Şimdi ise ortamın sıcaklığını anlık olarak alalım ve mq135 kütüphanemiz ile birlikte kullananalım ve sonuçlarımızı görelim.
Mq135 Sensörünün Dht11 Sıcaklık Sensörü İle Bağlantı Şeması
Arkadaşlar pinleimizi bağlamadan önce bir noktaya dikkat edin. Dht11’i bağlarken sensörün pinlerinin yeni bazen değişebiliyor. Siz elinizde bulunan DHT11’e göre bağlantınızı yapınız. Dht11 sensörünün detaylı kullanabilmek için aşağıdaki linkten yazımızı okuyabilirsiniz.
Arduino | DHT11 |
5V | + |
GND | – |
9. Pin | S |

Arduino İle Mq135 Hava Kalite Sensörü ve Dht11 Kullanım Kodu
#include <MQ135.h> // Mq135 kütüphanemizi ekliyoruz.
#include <DHT.h> // DHT11 için gerekli kütüphanemizi ekliyoruz.
#define PIN_MQ135 A0 // Mq135 için bağlanacak analog pinimiz tanımlıyoruz.
#define DHTPIN 9 // DHT11 sensörümüz için gerekli olan dijita pinimizi tanımlıyoruz.
#define DHTTYPE DHT11 // DHT11 veya DHT22 sensörlerimizden hangisini kullanacaksak onu belirtiyoruz.
MQ135 mq135_sensor(PIN_MQ135); // Kütüphanemize pinimizi tanımlıyoruz.
DHT dht(DHTPIN, DHTTYPE); // objemizi tanımlıyoruz.
float temperature, humidity; // sıcaklık(temperature) ve nem(humidity) değişkenlerimizi float türünde tanımlıyoruz.
void setup() {
Serial.begin(9600); // seri haberleşmeyi 9600 haberleşme hızında başlatıyoruz.
dht.begin(); // dht sensörümüzü başlatıyoruz.
}
void loop() {
humidity = dht.readHumidity(); // nem değerimizi ölçüyoruz.
temperature = dht.readTemperature(); // sıcaklık değerimizi ölçüyoruz.
// Ölçmede herhangi bir sorun var mı kontrol ediyoruz ve varsa bunu yazdırıyoruz
if (isnan(humidity) || isnan(temperature)) {
Serial.println(F("DHT sensorunden olcum yapilamadi!"));
return;
}
float rzero = mq135_sensor.getRZero(); // rzero değerimizi alıyoruz
float correctedRZero = mq135_sensor.getCorrectedRZero(temperature, humidity); // doğrulanmış rzero değerimizi alıyoruz.
float resistance = mq135_sensor.getResistance(); // direncimizi alıyoruz.
float ppm = mq135_sensor.getPPM(); // ppm cinsinden ortamdaki hava kalitesini alıyoruz.
float correctedPPM = mq135_sensor.getCorrectedPPM(temperature, humidity); // doğrulanmış hava kalite değerini alıyoruz.
Serial.print("MQ135 RZero: ");
Serial.print(rzero);
Serial.print("\t Dogrulanmis RZero: ");
Serial.print(correctedRZero);
Serial.print("\t Direnc: ");
Serial.print(resistance);
Serial.print("\t PPM: ");
Serial.print(ppm);
Serial.print("ppm");
Serial.print("\t Dogrulanmis PPM: ");
Serial.print(correctedPPM);
Serial.println("ppm");
delay(300); // 300ms saniye ile bekleme yapıyoruz.
}
Kodumuzu yükledikten sonra ekran çıktım aşağıdaki gibi arkadaşlar. Bir önceki çıktım ile karşılaştırın ve doğruluğu ne kadar etkilediğini görün.

Şimdi bir de sensörümüze çakmak gazı sıktığımda oluşan çıktıya bakalım.

Arkadaşlar çıktımızdan değerlerimizin değişimini de görmüş olduk. Takıldığınız yerleri yorum olarak sorabilirsiniz. Bir sonraki yazımızı okumak için sitemizi takip edin 🙂