Le capteur MQ-135 donne une valeur brute de la qualité de l'air. Cette valeur doit être corrigée en fonction de la température et du taux d'humidité.
Raison pour laquelle il est indispensable d'utilisé un capteur DHT11 ou DHT22 qui couplé au MQ-135 permettra d'obtenir une valeur corrigée de la qualité de l'air.
Il se peut que vous soyez aussi contreint d'ajouter une bibliothèque sensor.
Bibliothèques requises
MQ135.h (MQ135 by Phoenix1747),
DHT.h (DHT sensor library by Adafruit),
Sensor.h (Adafruit Unified sensor by Adafruit)
#include <MQ135.h>
#include <DHT.h>
/* MQ135 + DHT Temp Sensor
Combination of the MQ135 air quality sensor and a DHT11/22 temperature sensor to accurately measure ppm values through the library correction.
Uses the Adafruit DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
Written by: https://github.com/Phoenix1747/MQ135
*/
#define PIN_MQ135 A2 // MQ135 Analog Input Pin
#define DHTPIN 2 // DHT Digital Input Pin
#define DHTTYPE DHT11 // DHT11 or DHT22, depends on your sensor
MQ135 mq135_sensor(PIN_MQ135);
DHT dht(DHTPIN, DHTTYPE);
float temperature, humidity; // Temp and Humid floats, will be measured by the DHT
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
humidity = dht.readHumidity();
temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float rzero = mq135_sensor.getRZero();
float correctedRZero = mq135_sensor.getCorrectedRZero(temperature, humidity);
float resistance = mq135_sensor.getResistance();
float ppm = mq135_sensor.getPPM();
float correctedPPM = mq135_sensor.getCorrectedPPM(temperature, humidity);
Serial.print("MQ135 RZero: ");
Serial.print(rzero);
Serial.print("\t Corrected RZero: ");
Serial.print(correctedRZero);
Serial.print("\t Resistance: ");
Serial.print(resistance);
Serial.print("\t PPM: ");
Serial.print(ppm);
Serial.print("ppm");
Serial.print("\t Corrected PPM: ");
Serial.print(correctedPPM);
Serial.println("ppm");
delay(300);
}