
I.PRESENTATION
Le MQ-2 est un capteur qui permet de détecteur du gaz ou de fumée à des concentrations de 300 ppm à 10000 ppm. Après calibration, le MQ-2 peut détecter différents gaz comme le GPL (LPG), l’i-butane, le propane, le méthane, l’alcool, l’hydrogène ainsi que les fumées. Il est conçu pour un usage intérieur à température ambiante.
Le MQ2 doit être alimenté en 5V pour le capteur physico-chimique puisse atteindre sa température de fonctionnement. Il dispose d’une sortie analogique et d’un réglage de la sensibilité par potentiomètre. Vous pourrez aussi le trouver avec une interface Grove, notamment chez le fabricant SeeedStudio pour vos projets Intel Edisson. Vous pouvez vous procurer le MQ2 à partir de 2,70€
Attention, n’utilisez pas ce détecteur pour réaliser des applications pouvant mettre en danger la sécurité des personnes (applications médicales, industrielles…)
Attention. Le capteur chauffe après quelques minutes d’utilisation. C’est normal, c’est le principe même de fonctionnement de tous les capteurs physicochimiques. Tenez en compte dans la conception de votre projet.
Pour ce tutoriel vous aurez besoin du matériel suivant
Vous risquer de rencontrer des problèmes pour installer votre MQ-2 sur un breadboard. En effet, les fabricants soudent assez souvent les connecteurs coudés un peu trop loin du bord (pour laisser apparaitre les repérages), ce qui empêche d’utiliser une breadboard. Dans ce cas, il est préférable d’utiliser des Jumpers Dupont M/F.
Connectez les 3 broches du capteur à l’Arduino (ou ESP32 / ESP8266) en suivant le schéma de câblage suivant
Reliez les Pins Vcc et GND du capteur au 5V et au GND de l’Arduino
Reliez le Pin D0 du capteur à l’entrée analogique A0 de l’Arduino
Voici le code vous permettant de tester votre MQ-2. Par défaut, la sortie analogique du MQ-2 est branchée sur l’entrée analogique A0 de l’Arduino.
/*
Programme de test des détecteurs de gaz de la série MQx
Plus d'info sur http://www.projetsdiy.fr
*/
const int mqxPin = A0; // La sortie analogique du détecteur MQx est reliée au Pin analogique A0 de l'Arduino
void setup()
{
Serial.begin(9600); // Initialise le port série à 9600 bps //
}
void loop()
{
Serial.println(analogRead(mqxPin));
delay(1000); // Imprime une mesure chaque seconde
}
Copy
Pour détecter la présence d’un polluant (gaz ou fumée), on calcul le ratio entre la résistance initiale (R0) et la résistance (le signal analogique lu par l’Arduino) que le MQ2 renvoie à tout moment (Rs).
Connaissant ce ratio, on utilise la courbe théorique ci-dessous pour déterminer la quantité de chaque polluant.
Ici par exemple, le ratio Rs/R0 = 2, on lit une concentration en fumées de 800ppm sur la courbe rouge.
Il est préférable de déterminer Le R0 à chaque fois qu’on allume le capteur. En effet, la résistance des capteurs MQxx peut évoluer avec le temps car la surface active du capteur peut changer (présence de poussière, stabilisation de la céramique…).
En mesurant la température et le taux d’humidité, on peut corriger le ratio Rs/R0 ce qui permet d’améliorer la précision de détection.
Dans la pratique, le MQ2 envoie un signal analogique à l’Arduino. Ce signal sera la valeur de Rs
Pour utiliser le MQ2, inutile de réinventer la roue, nous allons utiliser le code mis à disposition par Sandbox Electronics qui permet de calibrer le capteur pour détecter la présence de GPL, de CO (Monoxide de carbone) ou de fumées dans l’atmosphère environnante.
Créez un projet Arduino et collez le code ci-dessous.
Le programme commence par mesurer la résistance sur CALIBARAION_SAMPLE_TIMES échantillons (mesures). On attend CALIBRATION_SAMPLE_INTERVAL entre chaque mesure. Par défaut, la calibration initiale de R0 dure 2,5 secondes (5 * 500 ms).
Durant la calibration de R0, assurez vous que le capteur soit placé dans un air “propre”, idéalement à l’extérieur.
On peut assimiler chaque courbe à une droite. Les variables LPGCurve COCurve et SmokeCurve permettent de déterminer la concentration en GPL, fumées et CO dans l’atmosphère connaissant le ratio Rs/R0.
La méthode MQGetGasPercentage() permet de connaître la concentration en polluant. On doit lui indiquer le ratio Rs/R0 ainsi que le polluant recherché GAS_LPG (GPL), GAS_CO (monoxyde de carbone) ou GAS_SMOKE (fumées).
Pour connaître la présence d’autres gaz, il suffira d’ajouter les courbes correspondantes dans votre code.
#ifdef ESP32
#include
#include
#else
#include
#include
#include
#endif
#include
const char* ssid = "MW40V_F754";
const char* password = "31344522";
//const char* serverName = "http://192.168.1.133/domo2/post-esp-data.php";
const char* serverName = "http://sensors.agpasarl.com/post-esp-data.php";
const int mqxPin = A0; // La sortie analogique du détecteur MQx est reliée au Pin analogique A0 de la carte
String apiKeyValue = "tPmAT5Ab3j7F9";
int carteId = 40;
int userId = 60;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
HTTPClient http;
// Prepare your HTTP POST request data
String httpRequestData =
"api_key=" + apiKeyValue +
"&carte_id=" + carteId +
"&user_id=" + userId +
"&value1=" + analogRead(mqxPin) +
"&value2=" + 0 +
"&value3=" + 0 +
"";
// Your Domain name with URL path or IP address with path
http.begin(serverName);
// Specify content-type header
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
Serial.print("httpRequestData: ");
Serial.println(httpRequestData);
// Send HTTP POST request
int httpResponseCode = http.POST(httpRequestData);
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
}
else {
Serial.println("WiFi Disconnected");
}
//Send an HTTP POST request every 30 seconds
delay(1000);
}