
مقدمه
تشخیص نشتی گاز با آردوینو: شاید بتوان بدون تردید گفت که بزرگترین ترس بشریت ترس از مرگ است. هر یک از ما بالاخره قرار است این ترس بزرگ را تجربه کنیم اما تمام تلاشمان را می کنیم که بندازیمش عقب. بسیاری از مردم به خاطر نشت گاز شهری جان خودشان را از دست داده اند و این تنها زمانی اتفاق میفته که ما خواب باشیم. امروز با استفاده از سنسور هایی که مخصوص اندازه گیری گاز شهری هستند می خواهیم این مشکل را حل کنیم.

ماژول MQ5
برای اینکار ما از ماژول mq5 استفاده می کنیم. به طور خلاصه کار این ماژول این هست که گاز هایAlcohol, H2, LPG, CH4 CO را تشخیص می دهد. ولتاژ کاری این ماژول ۵ ولت، توان مصرفی آن کمتر از 800mW و حساسیت ماژول توسط پتانسیومتری که روی آن قرار گرفته قابل تغییر می باشد.
پایه های ماژول MQ5
VCC: اتصال به ۵ ولت.
GND: اتصال به زمین مدار.
AO: مخفف عبارت Analog Out است که مقادیر خوانده شده را به صورت آنالوگ به آردوینو می دهد.
DO: مخفف عبارت Digital Out است که اگر گاز های مذکور را تشخیص دهد ولتاژ آن HIGH می شود.
اتصال ماژول MQ5 به آردوینو

همانطور که میبینید ما هر دو پایه آنالوگ و دیجیتال را به آردوینو متصل کرده ایم و هر دو آن ها را برای شما راه اندازی خواهیم کرد.
لوازم مورد نیاز برای تشخیص نشتی گاز با آردوینو
ماژول رله (اختیاری)
یکم انرژی!
کد برنامه تشخیص نشتی گاز با آردوینو
به کد آردوینو زیر به دقت نگاه کنید. در این کد ما قرار است که غلظت گاز را بررسی کنیم:
#include <MQUnifiedsensor.h>
“اضافه کردن کتابخانه mq5”
#define place "Arduino UNO"
#define Voltage_Resolution 5
#define pin A4 //Analog input 4 of your arduino
#define type "MQ-5" //MQ5
#define ADC_Bit_Resolution 10
#define RatioMQ5CleanAir 4.4 //RS / R0 = 4.4 ppm
//#define calibration_button 13 //Pin to calibrate your sensor
MQUnifiedsensor MQ5(placa, Voltage_Resolution, ADC_Bit_Resolution, pin, type);
“شناساندن سنسور”
void setup() {
Serial.begin(115200);
“راه اندازی ارتباط سریال”
/**/
MQ5.setRegressionMethod(1); //_PPM = a*ratio^b
“ایجاد مدل ریاضی برای محاسبه ppm”
MQ5.setA(30000000); MQ5.setB(-8.308);
“تنظیم تشخیص گاز شهری”
MQ5.init();
“راه اندازی اولیه”
Serial.print("Calibrating please wait.");
float calcR0 = 0;
for(int i = 1; i<=10; i ++)
{
MQ5.update(); // Update data, the arduino will be read the voltage on the analog pin
calcR0 += MQ5.calibrate(RatioMQ5CleanAir);
Serial.print(".");
}
“کالیبره کردن”
MQ5.setR0(calcR0/10);
Serial.println(“ done!.”);
“پایان کالیبره کردن”
if(isinf(calcR0)) {Serial.println("Warning: Connection issue founded, R0 is infinite (Open circuit detected) please check your wiring and supply"); while(1);}
“اگر پایه آنالوگ معلق باشد به این پیغام بر خواهید خورد و تا درست نشود ادامه پیدا نمی کند”
if(calcR0 == 0){Serial.println("Warning: Connection issue founded, R0 is zero (Analog pin with short circuit to ground) please check your wiring and supply"); while(1);}
“اگر پایه آنالوگ به اشتباه زمین شده باشد به این پیغام بر خواهید خورد و تا درست نشود ادامه پیدا نمی کند”
MQ5.serialDebug(true);
}
void loop() {
MQ5.update();
“آپدیت مقدار غلظت گاز خوانده شده”
float smokePPM = MQ5.readSensor();
“خواندن مقدار غلظت”
if(smokePPM > 1000) {Serial.println("Warning: High concentrations of smoke detected")};
/*#*/
“اگر غلظت از یه حدی بیشتر باشد اخطار می دهد”
MQ5.serialDebug(); // Will print the table on the serial port
delay(400);
“تاخیر به مدت ۴۰۰ میلی ثانیه”
}
با استفاده از کد بالا اگر غلظت گاز بیش از اندازه معمول شد شما مطلع می شوید.
اگر می خواهید رله ای را نیز با آن فعال کنید لازم است زیر عبارات /*#*/ و /**/ عبارات پایین را قرار دهید:
/**/:
pinMode(10, OUTPUT);
/*#*/:
if(smokePPM > 1000) DigitalWrite(10, HIGH);
else DigitalWrite(10, LOW);
توجه داشته باشید که رله به پایه ۱۰ میکرو کنترلر متصل شده است که شما خودتون می توانید آن را به راحتی تغییر دهید.
سخن پایانی
از این که همراه ما بودید بسیار سپاسگذاریم و اگر سوالی داشتین خوشحال می شیم که در بخش نظرات مطرح کنید.
امیدوارم از این آموزش لذت برده باشید.