Components and supplies
20K Potantiometer
MQ4 Gas sensor
MQ3 Gas sensor
MQ2 gas sensor
(MQ303A) Gas Sensor
(MQ303A) Gas Sensor
Grove - Gas Sensor(MQ5)
MQ7 Gas sensor
16x2 LCD display with I²C interface
Arduino Uno Rev3
MQ137 Gas Sensor
MQ136 Gas Sensor
(MQ309A) Gas Sensor
MQ8 Gas sensor
Grove - Gas Sensor (MQ9)
MQ-131(ozone)
Gravity: Analog Propane Gas Sensor (MQ6) For Arduino
(MQ307A) Gas Sensor
MQ135 Gas sensor
Apps and platforms
Arduino IDE 2.0 (beta)
PlatformIO IDE
Project description
Code
Adjustable Air Quality Monitoring & Analysis Platform with Plug-UnPlug System
cpp
1#include <MQSpaceData.h> 2#include <LiquidCrystal_I2C.h> 3 4#define ADC_BIT_RESU (10) 5#define space (A1) 6 7#define pot analogRead(A0) 8 9MQSpaceData MQ(ADC_BIT_RESU, space); 10 11int lcdColumns = 16; 12int lcdRows = 2; 13 14int x, Air; 15String xname, mode, strper; 16 17LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); 18 19void setup() { 20 MQ.begin(); 21 lcd.init(); 22 lcd.backlight(); 23} 24 25void loop() { 26 switch (map(pot, 0, (1 << ADC_BIT_RESU) - 1, 1, 15)) { 27 case (1): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(3.6); MQ.setRL(20); mode = "MQ-135"; MQ135(); break; 28 case (2): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(9.8); MQ.setRL(20); mode = "MQ-2"; MQ2(); break; 29 case (3): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(60.53); MQ.setRL(200); mode = "MQ-3"; MQ3(); break; 30 case (4): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(4.4); MQ.setRL(20); mode = "MQ-4"; MQ4(); break; 31 case (5): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(6.5); MQ.setRL(20); mode = "MQ-5"; MQ5(); break; 32 case (6): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(10); MQ.setRL(20); mode = "MQ-6"; MQ6(); break; 33 case (7): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(26); MQ.setRL(10); mode = "MQ-7"; MQ7(); break; 34 case (8): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(70); MQ.setRL(10); mode = "MQ-8"; MQ8(); break; 35 case (9): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(9.7); MQ.setRL(20); mode = "MQ-9"; MQ9(); break; 36 case (10): MQ.setRatio("Ro/Rs"); MQ.RSRoMQAir(12); MQ.setRL(100); mode = "MQ131"; MQ131(); break; 37 case (11): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(3.54); MQ.setRL(20); mode = "MQ-136"; MQ136(); break; 38 case (12): MQ.setRatio("Rs/Ro"); MQ.RSRoMQAir(3.54); MQ.setRL(47); mode = "MQ-137"; MQ137(); break; 39 case (13): MQ.setRatio("Rs/Rs"); MQ.setRL(47); mode = "MQ303A"; MQ303A(); break; 40 case (14): MQ.setRatio("Rs/Rs"); MQ.setRL(50); mode = "MQ307A"; MQ307A(); break; 41 case (15): MQ.setRatio("Rs/Rs"); MQ.setRL(50); mode = "MQ309A"; MQ309A(); break; 42 } 43} 44 45void hello() { 46 lcd.setCursor(0, 0); 47 lcd.print("Air:" + String(Air)); 48 lcd.setCursor(16 - mode.length(), 0); 49 lcd.print(mode); 50 lcd.setCursor(0, 1); 51 lcd.print(xname + ":" + String(x)); 52 strper = String(int(MQ.MQData100())); 53 lcd.setCursor(16 - strper.length() - 1, 1); 54 lcd.print("%" + strper); 55 delay(1500); 56 lcd.clear(); 57} 58 59void MQ135(){ 60 xname = "CO"; 61 MQ.dangerousPer(42.5); 62 x = MQ.MQ135DataCO(); 63 hello(); 64 65 xname = "Alcohol"; 66 MQ.dangerousPer(25.55); 67 x = MQ.MQ135DataAlcohol(); 68 hello(); 69 70 xname = "CO2"; 71 MQ.dangerousPer(27.77); 72 x = MQ.MQ135DataCO2(); 73 hello(); 74 75 xname = "Toluen"; 76 MQ.dangerousPer(21.944); 77 x = MQ.MQ135DataToluen(); 78 hello(); 79 80 xname = "NH4"; 81 MQ.dangerousPer(29.166); 82 x = MQ.MQ135DataNH4(); 83 hello(); 84 85 xname = "Aceton"; 86 MQ.dangerousPer(20.55); 87 x = MQ.MQ135DataAceton(); 88 hello(); 89 90 Air = MQ.MQ135DataAir(); 91} 92 93void MQ2() { 94 xname = "H2"; 95 MQ.dangerousPer(10.2); 96 x = MQ.MQ2DataH2(); 97 hello(); 98 99 xname = "LPG"; 100 MQ.dangerousPer(7.96); 101 x = MQ.MQ2DataLPG(); 102 hello(); 103 104 xname = "CO"; 105 MQ.dangerousPer(31.63); 106 x = MQ.MQ2DataCO(); 107 hello(); 108 109 xname = "Alcohol"; 110 MQ.dangerousPer(16.33); 111 x = MQ.MQ2DataAlcohol(); 112 hello(); 113 114 xname = "Propane"; 115 MQ.dangerousPer(8.38); 116 x = MQ.MQ2DataPropane(); 117 hello(); 118 119 xname = "CH4"; 120 MQ.dangerousPer(17.86); 121 x = MQ.MQ2DataCH4(); 122 hello(); 123 124 xname = "Smoke"; 125 MQ.dangerousPer(18.98); 126 x = MQ.MQ2Datasmoke(); 127 hello(); 128 129 Air = MQ.MQ2DataAir(); 130} 131 132void MQ3() { 133 xname = "H2"; 134 MQ.dangerousPer(10.2); 135 x = MQ.MQ2DataH2(); 136 hello(); 137 138 xname = "LPG"; 139 MQ.dangerousPer(7.96); 140 x = MQ.MQ2DataLPG(); 141 hello(); 142 143 xname = "CO"; 144 MQ.dangerousPer(31.63); 145 x = MQ.MQ2DataCO(); 146 hello(); 147 148 xname = "Alcohol"; 149 MQ.dangerousPer(16.33); 150 x = MQ.MQ2DataAlcohol(); 151 hello(); 152 153 xname = "Propane"; 154 MQ.dangerousPer(8.38); 155 x = MQ.MQ2DataPropane(); 156 hello(); 157 158 xname = "CH4"; 159 MQ.dangerousPer(17.86); 160 x = MQ.MQ2DataCH4(); 161 hello(); 162 163 xname = "Smoke"; 164 MQ.dangerousPer(18.98); 165 x = MQ.MQ2Datasmoke(); 166 hello(); 167 168 Air = MQ.MQ2DataAir(); 169} 170 171void MQ4() { 172 xname = "H2"; 173 MQ.dangerousPer(64.43); 174 x = MQ.MQ4DataH2(); 175 hello(); 176 177 xname = "LPG"; 178 MQ.dangerousPer(34.32); 179 x = MQ.MQ4DataLPG(); 180 hello(); 181 182 xname = "CH4"; 183 MQ.dangerousPer(22.73); 184 x = MQ.MQ4DataCH4(); 185 hello(); 186 187 xname = "CO"; 188 MQ.dangerousPer(86.14); 189 x = MQ.MQ4DataCO(); 190 hello(); 191 192 xname = "Alcohol"; 193 MQ.dangerousPer(82.05); 194 x = MQ.MQ4DataAlcohol(); 195 hello(); 196 197 xname = "Smoke"; 198 MQ.dangerousPer(80.23); 199 x = MQ.MQ4DataSmoke(); 200 hello(); 201 202 Air = MQ.MQ4DataAir(); 203} 204 205void MQ5() { 206 xname = "H2"; 207 MQ.dangerousPer(15.12); 208 x = MQ.MQ5DataH2(); 209 hello(); 210 211 xname = "LPG"; 212 MQ.dangerousPer(5.54); 213 x = MQ.MQ5DataLPG(); 214 hello(); 215 216 xname = "CH4"; 217 MQ.dangerousPer(7.92); 218 x = MQ.MQ5DataCH4(); 219 hello(); 220 221 xname = "CO"; 222 MQ.dangerousPer(44.15); 223 x = MQ.MQ5DataCO(); 224 hello(); 225 226 xname = "Alcohol"; 227 MQ.dangerousPer(39.38); 228 x = MQ.MQ5DataAlcohol(); 229 hello(); 230 231 Air = MQ.MQ5DataAir(); 232} 233 234void MQ6() { 235 xname = "H2"; 236 MQ.dangerousPer(33.7); 237 x = MQ.MQ6DataH2(); 238 hello(); 239 240 xname = "LPG"; 241 MQ.dangerousPer(10); 242 x = MQ.MQ6DataLPG(); 243 hello(); 244 245 xname = "CH4"; 246 MQ.dangerousPer(13.5); 247 x = MQ.MQ6DataCH4(); 248 hello(); 249 250 xname = "CO"; 251 MQ.dangerousPer(78); 252 x = MQ.MQ6DataCO(); 253 hello(); 254 255 xname = "Alcohol"; 256 MQ.dangerousPer(61.2); 257 x = MQ.MQ6DataAlcohol(); 258 hello(); 259 260 Air = MQ.MQ6DataAir(); 261} 262 263void MQ7() { 264 xname = "H2"; 265 MQ.dangerousPer(3.08); 266 x = MQ.MQ7DataH2(); 267 hello(); 268 269 xname = "LPG"; 270 MQ.dangerousPer(30.77); 271 x = MQ.MQ7DataLPG(); 272 hello(); 273 274 xname = "CH4"; 275 MQ.dangerousPer(49.18); 276 x = MQ.MQ7DataCH4(); 277 hello(); 278 279 xname = "CO"; 280 MQ.dangerousPer(3.85); 281 x = MQ.MQ7DataCO(); 282 hello(); 283 284 xname = "Alcohol"; 285 MQ.dangerousPer(57.69); 286 x = MQ.MQ7DataAlcohol(); 287 hello(); 288 289 Air = MQ.MQ7DataAir(); 290} 291 292void MQ8() { 293 xname = "H2"; 294 MQ.dangerousPer(1.43); 295 x = MQ.MQ8DataH2(); 296 hello(); 297 298 xname = "LPG"; 299 MQ.dangerousPer(27.53); 300 x = MQ.MQ8DataLPG(); 301 hello(); 302 303 xname = "CH4"; 304 MQ.dangerousPer(63.47); 305 x = MQ.MQ8DataCH4(); 306 hello(); 307 308 xname = "CO"; 309 MQ.dangerousPer(80.57); 310 x = MQ.MQ8DataCO(); 311 hello(); 312 313 xname = "Alcohol"; 314 MQ.dangerousPer(14.81); 315 x = MQ.MQ8DataAlcohol(); 316 hello(); 317 318 Air = MQ.MQ8DataAir(); 319} 320 321void MQ9() { 322 xname = "LPG"; 323 MQ.dangerousPer(10.31); 324 x = MQ.MQ9DataLPG(); 325 hello(); 326 327 xname = "CH4"; 328 MQ.dangerousPer(18.04); 329 x = MQ.MQ9DataCH4(); 330 hello(); 331 332 xname = "CO"; 333 MQ.dangerousPer(8); 334 x = MQ.MQ9DataCO(); 335 hello(); 336 337 Air = MQ.MQ9DataAir(); 338} 339 340void MQ131() { 341 float MaxAir = 100; 342 343 xname = "NOx"; 344 MQ.dangerousPer(23.75); 345 x = MQ.readRoRsratio(MQ.MQ131DataNOx(), MaxAir); 346 hello(); 347 348 xname = "CL2"; 349 MQ.dangerousPer(8.33); 350 x = MQ.readRoRsratio(MQ.MQ131DataCL2(), MaxAir); 351 hello(); 352 353 xname = "O3"; 354 MQ.dangerousPer(4.166); 355 x = MQ.readRoRsratio(MQ.MQ131DataO3(), MaxAir); 356 hello(); 357 358 Air = MQ.MQ131DataAir(); 359} 360 361void MQ136() { 362 xname = "H2S"; 363 MQ.dangerousPer(40.68); 364 x = MQ.MQ136DataH2S(); 365 hello(); 366 367 xname = "NH4"; 368 MQ.dangerousPer(72); 369 x = MQ.MQ136DataNH4(); 370 hello(); 371 372 xname = "CO"; 373 MQ.dangerousPer(81.64); 374 x = MQ.MQ136DataCO(); 375 hello(); 376 377 Air = MQ.MQ136DataAir(); 378} 379 380void MQ137() { 381 xname = "CO"; 382 MQ.dangerousPer(81.64); 383 x = MQ.MQ137DataCO(); 384 hello(); 385 386 xname = "Ethanol"; 387 MQ.dangerousPer(72); 388 x = MQ.MQ137DataEthanol(); 389 hello(); 390 391 xname = "NH3"; 392 MQ.dangerousPer(40.68); 393 x = MQ.MQ137DataNH3(); 394 hello(); 395 396 Air = MQ.MQ137DataAir(); 397} 398 399void MQ303A() { 400 xname = "IsoButane"; 401 MQ.dangerousPer(28); 402 x = MQ.MQ303ADataIso(); 403 hello(); 404 405 xname = "Hydrogen"; 406 MQ.dangerousPer(21); 407 x = MQ.MQ303ADataHyd(); 408 hello(); 409 410 xname = "Ethanol"; 411 MQ.dangerousPer(27); 412 x = MQ.MQ303ADataEthanol(); 413 hello(); 414 415 Air = MQ.MQ303ADataAir(); 416} 417 418void MQ309A() { 419 xname = "H2"; 420 MQ.dangerousPer(11.4545); 421 x = MQ.MQ309ADataH2(); 422 hello(); 423 424 xname = "CH4"; 425 MQ.dangerousPer(9.0909); 426 x = MQ.MQ309ADataCH4(); 427 hello(); 428 429 xname = "CO"; 430 MQ.dangerousPer(54.5454); 431 x = MQ.MQ309ADataCO(); 432 hello(); 433 434 xname = "Alcohol"; 435 MQ.dangerousPer(49.0909); 436 x = MQ.MQ309ADataAlcohol(); 437 hello(); 438 439 Air = MQ.MQ309ADataAir(); 440} 441 442void MQ307A(){ 443 xname = "CO"; 444 MQ.dangerousPer(0.96); 445 x = MQ.MQ307ADataCO(); 446 hello(); 447 448 xname = "H2"; 449 MQ.dangerousPer(56.107); 450 x = MQ.MQ307ADataH2(); 451 hello(); 452} 453 454// MQ-X: [PIN --> A1] [GND --> GND] [VCC --> 5V] 455// Potentiometer: [PIN --> A0] [GND --> GND] [VCC --> 5V]
Documentation
Circuit Diagram
circut.png
Comments
Only logged in users can leave comments