Un système de détection de fuites de gaz peut être utilisé pour surveiller en continu la présence de gaz dans un environnement et alerter les personnes concernées en cas de fuite de gaz. Ces systèmes peuvent être utilisés dans une variété de situations, telles que dans les maisons, les immeubles de bureaux, les usines et les centres de distribution de gaz.
Il existe plusieurs types de détecteurs de fuites de gaz, notamment les détecteurs de monoxyde de carbone, les détecteurs de propane et les détecteurs de gaz naturel. Certains de ces appareils sont portatifs et peuvent être utilisés pour détecter les fuites de gaz dans des endroits difficiles d’accès, tandis que d’autres sont fixés au mur ou au plafond et sont conçus pour surveiller continuellement l’environnement pour détecter les fuites de gaz.
Les systèmes de détection de fuites de gaz peuvent être connectés à un réseau de communication, comme le WiFi, ce qui permet de recevoir des alertes sur un appareil mobile ou de recevoir des notifications par courrier électronique en cas de fuite de gaz. Cela peut être particulièrement utile dans les situations où il est important de réagir rapidement en cas de fuite de gaz, comme dans les immeubles de bureaux ou les usines.
Il est important de noter que les détecteurs de fuites de gaz ne remplacent pas la maintenance régulière des équipements et des tuyaux, qui peut aider à prévenir les fuites de gaz. Il est également recommandé de connaître les signes de fuite de gaz et de savoir comment réagir en cas de fuite de gaz.
Dans ce projet on va réaliser un système de détection de fuite de gaz contrôlé par la carte Arduino connecté à l’Internet.
Il utilise principalement un capteur de gaz MQ-4.Lorsque le capteur détecte une fuite de gaz, la carte Arduino envoie un email alerte par WIFI.
carte Arduino
Une carte Arduino est une carte de développement électronique basée sur un microcontrôleur. Elle est conçue pour être facilement utilisable par les développeurs et les hobbyistes pour créer des projets électroniques.
Les cartes Arduino sont principalement utilisées pour contrôler des appareils électroniques en utilisant du code informatique, mais elles peuvent également être utilisées pour traiter et afficher des données. Elles sont souvent utilisées dans des projets de robotique, de domotique, de domaine de l’Internet des objets (IoT) et dans de nombreux autres domaines de l’électronique de loisir et professionnelle.
un module wifi ESP8266
Le module WiFi ESP8266 est un module de communication sans fil utilisé pour connecter des périphériques et des cartes de développement à un réseau WiFi. Il est couramment utilisé avec des cartes de développement comme Arduino et Micro:bit pour créer des projets IoT et pour ajouter des fonctionnalités de communication sans fil à ces cartes.
capteur de gaz MQ-4
Le capteur de gaz MQ-4 est un capteur qui permet de détecter les concentrations de méthane, de propane et de gaz de pétrole liquéfié (GPL) dans l’air. Il est souvent utilisé dans les applications de sécurité industrielle et de détection de fuites de gaz.
Un module d’alimentation 3.3V/5V est un module de conversion de tension qui permet de fournir une tension de 3,3V ou de 5V à un circuit électronique. Il est souvent utilisé pour alimenter des cartes de développement et des capteurs qui nécessitent une tension de 3,3V ou de 5V.
Les fils de connexion sont des fils électriques utilisés pour connecter des composants électroniques à une carte de développement ESP32. Ils sont généralement utilisés pour connecter des capteurs, des actionneurs, des afficheurs et d’autres composants à la carte ESP32 afin de créer des circuits électroniques.
Il existe deux types de fils de connexion: les fils de connexion mâle-mâle et les fils de connexion mâle-femelle. Les fils de connexion mâle-mâle sont utilisés pour connecter des composants qui ont tous deux des broches mâles, tandis que les fils de connexion mâle-femelle sont utilisés pour connecter des composants avec une broche mâle et une broche femelle.
Les fils de connexion sont généralement fabriqués en cuivre ou en alliage de cuivre et sont revêtus d’un isolant en plastique pour protéger les fils électriques et empêcher les courts-circuits. Ils sont disponibles dans une variété de couleurs pour aider à identifier et organiser les différents fils dans un circuit.
Plaque d’essai
Une plaque d’essai est un type de carte de développement électronique qui permet aux développeurs de tester et de prototyper facilement des circuits électroniques. Elles sont souvent utilisées par les développeurs pour tester rapidement des idées et des conceptions avant de les intégrer à un projet plus important ou de les intégrer dans une carte de développement plus permanente.
Les plaques d’essai sont généralement basées sur un microcontrôleur, qui est un processeur facile à utiliser et à programmer qui peut être utilisé pour contrôler une variété de circuits électroniques. Les plaques d’essai incluent généralement des broches d’extension qui permettent de connecter facilement des composants électroniques tels que des capteurs, des afficheurs, des moteurs et d’autres composants.
Pour réaliser le montage, on peut connecter:
pour le capteur MQ-4 :
Pour le module ESP8266, on connecte:
Voici le programme du système de détection des fuite de gaz intelligent connecté à l’Internet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
#include <Adafruit_ESP8266.h> #include <SoftwareSerial.h> #define ESP_RX 3 #define ESP_TX 4 #define ESP_RST 8 SoftwareSerial softser(ESP_RX, ESP_TX); // Must declare output stream before Adafruit_ESP8266 constructor; can be // a SoftwareSerial stream, or Serial/Serial1/etc. for UART. Adafruit_ESP8266 wifi(&softser, &Serial, ESP_RST); // Must call begin() on the stream(s) before using Adafruit_ESP8266 object. #define ESP_SSID “*************” // Your network name here #define ESP_PASS “*************” // Your network password here char EMAIL_FROM[] = “adresse email de l’émetteur”; char EMAIL_PASSWORD[] = “************”; char EMAIL_TO[] = “adresse email du récepteur”; char SUBJECT[] = “My ESP8266”; char EMAIL_CONTENT[] = “Attention!!! ,\r\n il y a un feu .”; // We’ll need your EMAIL_FROM and its EMAIL_PASSWORD base64 encoded, you can use https://www.base64encode.org/ #define EMAIL_FROM_BASE64 “bm9yZXBseUBtZXNhcnRpc2Fucy5mcg==” #define EMAIL_PASSWORD_BASE64 “WVlMdVhKelphVg==” #define HOST “Nom du serveur SMTP” // Find/Google your email provider’s SMTP outgoing server name for unencrypted email #define PORT 587 // Find/Google your email provider’s SMTP outgoing port for unencrypted email int count = 0; // we’ll use this int to keep track of which command we need to send next bool send_flag = false; // we’ll use this flag to know when to send the email commands int analogPin = A0; // Capteur de gaz MQ-4 analog interface int analogVal; //analog readings void setup() { pinMode(btnPin,INPUT_PULLUP); char buffer[50]; // This might work with other firmware versions (no guarantees) // by providing a string to ID the tail end of the boot message: // comment/replace this if you are using something other than v 0.9.2.4! wifi.setBootMarker(F(“Version:0.9.2.4]\r\n\r\nready”)); softser.begin(9600); // Soft serial connection to ESP8266 Serial.begin(57600); while(!Serial); // UART serial debug Serial.println(F(“Adafruit ESP8266 Email”)); // Test if module is ready Serial.print(F(“Hard reset…”)); if(!wifi.hardReset()) { Serial.println(F(“no response from module.”)); for(;;); } Serial.println(F(“OK.”)); Serial.print(F(“Soft reset…”)); if(!wifi.softReset()) { Serial.println(F(“no response from module.”)); for(;;); } Serial.println(F(“OK.”)); Serial.print(F(“Checking firmware version…”)); wifi.println(F(“AT+GMR”)); if(wifi.readLine(buffer, sizeof(buffer))) { Serial.println(buffer); wifi.find(); // Discard the ‘OK’ that follows } else { Serial.println(F(“error”)); } Serial.print(F(“Connecting to WiFi…”)); if(wifi.connectToAP(F(ESP_SSID), F(ESP_PASS))) { // IP addr check isn’t part of library yet, but // we can manually request and place in a string. Serial.print(F(“OK\nChecking IP addr…”)); wifi.println(F(“AT+CIFSR”)); if(wifi.readLine(buffer, sizeof(buffer))) { Serial.println(buffer); wifi.find(); // Discard the ‘OK’ that follows Serial.print(F(“Connecting to host…”)); Serial.print(“Connected..”); wifi.println(“AT+CIPMUX=0”); // configure for single connection, //we should only be connected to one SMTP server wifi.find(); wifi.closeTCP(); // close any open TCP connections wifi.find(); Serial.println(“Type \”send it\” to send an email”); } else { // IP addr check failed Serial.println(F(“error”)); } } else { // WiFi connection failed Serial.println(F(“FAIL”)); } } void loop() { if(!send_flag){ // check if we expect to send an email // Read the analog interface analogVal = analogRead(analogPin); if (analogVal<=60) // Si le capteur détecte un fuite de gaz { send_flag = true; // envoi d’un email d’alerte //Serial.println(btnVal); delay(1000); } } if(send_flag){ // the send_flat is set, this means we are or need to start sending SMTP commands if(do_next()){ // execute the next command count++; // increment the count so that the next command will be executed next time. } } } // do_next executes the SMTP command in the order required. boolean do_next() { switch(count){ case 0: Serial.println(“Connecting…”); return wifi.connectTCP(F(HOST), PORT); break; case 1: // send “HELO ip_address” command. Server will reply with “250” and welcome message return wifi.cipSend(“HELO computer.com”,F(“250”)); // ideally an ipaddress should go in place // of “computer.com” but I think the email providers // check the IP anyways so I just put anything. break; case 2: // send “AUTH LOGIN” command to the server will reply with “334 username” base 64 encoded return wifi.cipSend(“AUTH LOGIN”,F(“334 VXNlcm5hbWU6”)); break; case 3: // send username/email base 64 encoded, the server will reply with “334 password” base 64 encoded return wifi.cipSend(EMAIL_FROM_BASE64,F(“334 UGFzc3dvcmQ6”)); break; case 4: // send password base 64 encoded, upon successful login the server will reply with 235. return wifi.cipSend(EMAIL_PASSWORD_BASE64,F(“235”)); break; case 5:{ // send “MAIL FROM:<emali_from@domain.com>” command char mailFrom[50] = “MAIL FROM:<“; // If 50 is not long enough change it, do the same for the array in the other cases strcat(mailFrom,EMAIL_FROM); strcat(mailFrom,”>”); return wifi.cipSend(mailFrom,F(“250”)); break; } case 6:{ // send “RCPT TO:<email_to@domain.com>” command char rcptTo[50] = “RCPT TO:<“; strcat(rcptTo,EMAIL_TO); strcat(rcptTo,”>”); return wifi.cipSend(rcptTo,F(“250”)); break; } case 7: // Send “DATA” command, the server will reply with something like “334 end message with \r\n.\r\n.” return wifi.cipSend(“DATA”,F(“354”)); break; case 8:{ // apply “FROM: from_name <from_email@domain.com>” header char from[100] = “FROM: “; strcat(from,EMAIL_FROM); strcat(from,” “); strcat(from,”<“); strcat(from,EMAIL_FROM); strcat(from,”>”); return wifi.cipSend(from); break; } case 9:{ // apply TO header char to[100] = “TO: “; strcat(to,EMAIL_TO); strcat(to,”<“); strcat(to,EMAIL_TO); strcat(to,”>”); return wifi.cipSend(to); break; } case 10:{ // apply SUBJECT header char subject[50] = “SUBJECT: “; strcat(subject,SUBJECT); return wifi.cipSend(subject); break; } case 11: return wifi.cipSend(“\r\n”); // marks end of header (SUBJECT, FROM, TO, etc); break; case 12: return wifi.cipSend(EMAIL_CONTENT); break; case 13: return wifi.cipSend(“\r\n.”); // marks end of data command break; case 14: return wifi.cipSend(“QUIT”); break; case 15: wifi.closeTCP(); return true; break; case 16: Serial.println(“Done”); send_flag = false; count = 0; return false; // we don’t want to increment the count break; default: break; } } |
BENI 01-09-2323
Le code ne passe pas chez moi
Toi Hugo 12-05-2222
Ok merci j'ai eu la réponse à ma demande
youssef ouikhlef 29-11-2121
s'il vous plait comment tu peut m'aider de faire une expérience de détection des fuites de gaz par l'Arduino ?