آردوینو پروژه های آردوینو

پروژه تشخیص نشت گاز با شیلد آردوینو ProMake Uno و سنسور MQ2

create-gas-leak-detection-system-with-arduino-and-easy-iot-promake-shield-digispark
نوشته شده توسط پریسا پوربلورچیان

اجرای پروژه بدون استفاده از برد بورد و کابل و اجرا بر روی ماژول و شیلدهای آماده تمرکز اصلی را بر روی روش اجرا تا کدنویسی قرار میدهد. شیلد به ما این امکان را میدهد تا مدارها را ساده تر پیاده سازی کنیم. دیگر به کابل و سیم کشی نیاز نداریم و استفاده از آن را هم به حداقل میرسانیم. حذف برد بورد BreadBoard، حذف کابل، پروتوتایپ پروژه سه دلیل اصلی استفاده از شیلد در پروژه ها است. در این آموزش توسط شیلد پرومیک تشخیص گازهای قابل اشتعال Easy IoT ProMake GAS MQ2 و توسط برد آردوینو Arduino پروژه تشخیص گاز را پیاده سازی و اجرا می‌کنیم. هدف اصلی نمایش غلظت گاز PPM در محیط و کنترل از طریق رله به صورت سوییچ است. برای کنترل از ماژول Easy IoT ProMake Relay Module استفاده می‌کنیم. در ادامه پروژه آردوینو ProMake Uno با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


ماژول ProMake تشخیص گاز MQ2


ماژول ProMake گاز MQ یک سنسور ماژول برای تشخیص غلظت گاز نوع MQ ورژن MQ2 است که برای تشخیص گاز قابل اشتعال H2, LPG, CH4, CO, Alcohol, Smoke , Propane است. بر روی ماژول ProMake  یک پتانسیومتر قرار گرفته شده است. توسط پتانسیومتر میتوانید حساسیت سنسور را تنظیم کنید. عملکرد سنسور در مدار به صورت ADC است.  این یک سنسور گاز نیمه هادی فلزی اکسید (MOS) است که به عنوان Chemiresistors نیز شناخته می شود. زیرا تشخیص بر اساس تغییر مقاومت ماده سنجشگر هنگام تماس گاز با ماده است. با استفاده از یک شبکه تقسیم ولتاژ ساده، می توان غلظت گاز را تشخیص داد. سنسور گاز MQ2 با ولتاژ ۵ ولت کار می کند و حدود ۸۰۰ mW توان نیاز دارد. این سنسور می تواند میزان LPG، دود، الکل، پروپان، هیدروژن، متان و مونوکسید کربن را در هر مکانی از ۲۰۰ تا ppm 10000 تشخیص دهد. این سنسور در واقع در دو لایه مش فولاد ضد زنگ ظریف به نام شبکه ضد انفجار محصور شده است. این اطمینان را می دهد که عنصر بخاری داخل سنسور باعث انفجار نمی شود، زیرا ما گازهای قابل اشتعال را حس می کنیم. مهم ترین بخش برای راه اندازی سنسور محاسبه مقاومت RO دریافتی از سنسور و محاسبه نسبت است. از این سنسور برای سنجش غلظت LPG، دود، الکل، پروپان، هیدروژن، متان و مونوکسید کربن در هوا مناسب است.

ماژول ProMake تشخیص گاز MQ2 -دیجی اسپارک

 

  • ولتاژ عملیاتی ۵ ولت
  • استفاده برای اندازه گیری یا تشخیص LPG ، الکل ، پروپان ، هیدروژن ، CO و  متان.
  • ولتاژ خروجی آنالوگ: ۰ ولت تا ۵ ولت
  • ولتاژ خروجی دیجیتال: ۰ ولت یا ۵ ولت (منطق TTL)
  • حساسیت پین دیجیتال را می توان با استفاده از پتانسیومتر تغییر داد.
  • کپسولهای منطبق

در جدول زیر پارامترهای مختلف سنسور نوشته شده است. ولتاژ کاری سنسور بین ۴٫۹ تا ۵٫۱ ولت متغیر است.توان مصرفی در حدود ۸۰۰ میلی وات است و مقاومت بار سنسور توسط پتانسیومتر قابل تنظیم است. مقاومت هیتر حدود ۳۳ اهم و استاندارد است. رنج تغییر مقاومت قابل دریافت بین ۳ تا ۳۰ کیلو اهم خواهد بود.

جدول تغییرات ولتاژی سنسور تشخیص گاز MQ2 - دیجی اسپارک

 


ماژول رله دو کاناله پرومیک ProMake


ProMake Relay 2CH یک برد رله دو کاناله است که توسط MCU یا پردازنده قابل کنترل می باشد. این ماژول یک راهکار آسان برای کنترل طیف گسترده ای از بارهای AC یا DC با قدرت بالا مانند لوازم خانگی کوچک، الکتروموتورها یا روشن کردن چراغ ها است. ماژول از دو رله کوچک G5NB-1A-E-DC5V از شرکت Omron استفاده می کند.

  • بارهای تا ۲۵۰ VAC یا ۳۰ VDC را می تواند سوئیچ کند
  • با سیگنال کنترل ۵ ولت کار می کند.
  • حداکثر ظرفیت جریان بار ۳A
  • کنترل مبتنی بر ترانزیستور، جهت به حداقل رساندن جریانی که باید توسط پین میکروکنترلر تامین شود.
  • نشانگر LED وضعیت رله
  • قابل استفاده روی برد آموزشی(Breadboard)

ماژول رله دو کاناله پرومیک ProMake - دیجی اسپارک

 

پایه های قرار گرفته شده بر روی ماژول به صورت زیر است.

پایه های ماژول رله دو کاناله پرومیک ProMake - دیجی اسپارک

 

نقشه‌ی پایه ها به صورت زیر است.

شماتیک اتصالات ماژول رله Promake - دیجی اسپارک

 


شیلد پرومیک Arduino UNO Shield


شیلد آردوینو ProMake Uno از مجموعه Easy-IoT برای استفاده در برد آردوینو UNO, Mega طراحی شده است. شیلد ProMake Arduino Shield به صورتی طراحی شده است که از دو ماژول ProMake Module 1 و ProMake Module 2 برای اتصال ماژول های تولید شده توسط کمپانی پشتیبانی می‌کند. ویژگی‌های کلی این شیلد در پست شیلد ProMake آردوینو راهکار جدید و مقرون به صرفه در اینترنت اشیا به صورت کامل معرفی و بررسی شده‌اند.

شیلد پرومیک Arduino UNO Shield - دیجی اسپارک

 

ماژول ProMake Module1 جهت استفاده از ماژول های ProMake است. ماژول رله، ماژول گاز، بلوتوث، GPS, Lora, WIFI, RS485, Ethernet, Can BUS, Sensor TAG, Data Logger تولید Promake Easy IoT بر روی شیلد قابل استفاده است. این دو ماژول ProMake از رابط I2C, SPI, Serial, Analog پشتیبانی می‌کند. به عنوان مثال در ماژول ProMAke Module 1 ترتیب پایه ها را مشاهده کنید. اگر از ماژولی که دارای رابط آنالوگ است استفاده کنید، پایه اول از سمت چپ (A0)AN است. یعنی در کد برنامه باید پایه A0 را به عنوان پایه دیتا ورودی مشخص کنید. اگر از ماژولی با رابط SPI استفاده می‌کنید، پایه های  D10, D13, D12, D11 در کد برنامه بایستی تعریف شود. پایه PWM در ماژول شماره یک پایه D5 است.

محل اتصال ماژول ها در شیلد پرومیک Arduino Uno - دیجی اسپارک

 

برای ماژول ProMake Module 2 هم به این همین صورت است. با این تفاوت که پایه آنالوگ (A1)AN است. پایه PWM در ماژول شماره یک پایه D6 است. در تصویر زیر تمامی پایه ها مشخص شده است. در صورت استفاده از هر کدام از ماژول های ProMake با بررسی پایه ها و قرار دادن ماژول ها بر روی شیلد برای کدنویسی آماده هستید.

محل اتصال انواع ماژول در شیلد پرومیک Arduino Uno - دیجی اسپارک

 

در این پروژه سنسور گازی MQ2 از سری ماژول های ProMake را بر روی یکی از ماژول های شیلد UNO قرار داده ایم. ماژول سنسور گازی MQ2 را بر روی ماژول شماره ۲ یعنی ProMake Module 2 قرار داده ایم. رابط سنسور به صورت آنالوگ است و پایه آنالوگ این ماژول بر روی پایه ها A1 تعریف شده است. پس جهت کدنویسی و فراخوانی این سنسور در کد آردوینو برنامه باید پایه آنالوگ A1 را مشخص و تعریف کنید و داده های سنسور را از پایه A1 دریافت کنید. روش اتصال مطابق با تصویر زیر است.

محل نصب ماژول گاز Mq2 در شیلد پرومیک Uno - دیجی اسپارک

 

برای ماژول شماره یک از ماژول پرومیک رله Realy 2CH Module ProMake استفاده می‌کنیم. مطابق با تصویر زیر ماژول رله دو کاناله را بر روی شیلد آردوینو قرار داده ایم. 

محل قرار گیری ماژول رله دو کانال در شیلد Uno پرومیک - دیجی اسپارک

 

در نهایت هر دو ماژول به صورت زیر بر روی شیلد آردوینو قرار میگیرد.

پروژه نهایی تشخیص گاز شهری با شیلد آردوینو پرومیک - دیجی اسپارک

 


کد آردوینو پروژه تشخیص گاز قابل اشتعال


در پروژه تشخیص گاز شهری با آردوینو سنسور به پایه A1 متصل است که به شیلد متصل است. در این کد ولتاژ خوانده شده از سنسور نمایش داده شده که بایستی مقدار آستانه threshold را محاسبه و از کد دریافت کنیم. کد زیر را کپی و به نرم افزار IDE Arduino انتقال دهید.

void setup() {
    Serial.begin(9600);
}
 
void loop() {
    float sensor_volt;
    float sensorValue;
 
    sensorValue = analogRead(A1);
    sensor_volt = sensorValue/1024*5.0;
 
    Serial.print("sensor_volt = ");
    Serial.print(sensor_volt);
    Serial.println("V");
    delay(1000);
}

 

در این کد در ابتدا بادریت سنسور را بر روی ۹۶۰۰ تنظیم و در کد برنامه در بخش Void Setup وارد کنید. در حلقه برنامه مقادیر ورودی از سنسور بر واحد اعشاری float دریافت و خوانده شده و در یک متغیر که به دلخواه با نام دلخواه sensorvolt ساخته شده است، ذخیره می‌کنیم. مقادیر ولتاژ از پایه A1 سنسور توسط دستور analogRead(A1) خوانده شده و سپس در متغیری به نام Sensorvalue ذخیره می‌شود. سپس مقادیر ذخیره شده در متغیر Sensorvalue در بازه آنالوگ تقسیم بر ۱۰۲۴*۵ شده و مقادیر نهایی در متغیر Sensor volt ذخیره می‌شود. سپس مقادیر را توسط دستورات سریال مانیتور در سریال مانیتور نمایش میدهیم. این مقادیر کاملا بر شرایط محیطی وابسته است. با تغییر دما و رطوبت عدد خروجی تغییر خواهد کرد. برای پایداری در محیط کافیست سنسور در فضا مدتی فعال شده تا خروجی ثابتی نمایش دهد.

 

محاسبه مقاومت R0

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

void setup() {
    Serial.begin(9600);
}
 
void loop() {
    float sensor_volt;

    // دریافت مقادیر از مقاومت RS در فضای آزاد 
    float RS_air; 

    // دریافت مقادیر از RO در H2
    float R0;  

    // ساخت متغیر برای ذخیره مقادیر دریافتی از سنسور در Sensor value
    float sensorValue;


// دریافت میانگین دیتای دریافتی از سنسور در ۱۰۰ مرتبه
 
       
    for(int x = 0 ; x < 100 ; x++)
    {
        sensorValue = sensorValue + analogRead(A1);
    }
    sensorValue = sensorValue/100.0;

    
 
    sensor_volt = sensorValue/1024*5.0;
    
    RS_air = (5.0-sensor_volt)/sensor_volt; //محاسبه مقاومت RS
    R0 = RS_air/9.8; //نسبت RS/RO بر طبق دیتاشیت در هوای تمیز ۶٫۵ است.
 
    Serial.print("sensor_volt = ");
    Serial.print(sensor_volt);
    Serial.println("V");
 
    Serial.print("R0 = ");
    Serial.println(R0);
    delay(1000);
}

 

در هر خط از برنامه تحلیل فارسی نوشته شده است. کد را کپی و به نرم افزار آردوینو IDE Arduino منتقل کنید. در ابتدا همانند کد قبل ولتاژ پایه A1 از سنسور را در متغیر Sensor Volt دریافت و ذخیره می‌کنیم. سپس یک متغیر برای مقاومت RS و یک متغیر برای مقاومت R0 با داده float تعریف می‌کنیم. در نهایت با فرمول های نوشته شده در کد مقدار RS و R0 را محاسبه می‌کنیم.

 RS_air = (5.0-sensor_volt)/sensor_volt; //محاسبه مقاومت RS
    R0 = RS_air/6.5; //نسبت RS/RO بر طبق دیتاشیت در هوای تمیز ۶٫۵ است.

 

 

در نهایت برای محاسبه نسبت RS/R0 با سنسور گازی MQ از فرمول زیر در کد برنامه استفاده می‌کنیم.

ratio = RS_gas/R0;

به جای R0 مقدار دریافتی در کد قبلی را جایگزین کنید. کد اصلی برنامه به صورت زیر است.

#define relay 5
#define thershold 2.0
void setup() {
    Serial.begin(9600);
    pinMode(relay, OUTPUT);
}
 
void loop() {
 
    float sensor_volt;
    float RS_gas; // Get value of RS in a GAS
    float ratio; // Get ratio RS_GAS/RS_air
    int sensorValue = analogRead(A1);
    sensor_volt=(float)sensorValue/1024*5.0;
    RS_gas = (5.0-sensor_volt)/sensor_volt; // omit * RL
 
    ratio = RS_gas/1.33;  
 
if(ratio > thershold){
digitalWrite(relay, HIGH);
}else{
digitalWrite(relay, LOW);
}



    Serial.print("sensor_volt = ");
    Serial.println(sensor_volt);
    Serial.print("RS_ratio = ");
    Serial.println(RS_gas);
    Serial.print("Rs/R0 = ");
    Serial.println(ratio);
    Serial.print("\n\n");
    delay(1000);
 }

 

پروژه نهایی اجرا شده با آردوینو ProMake Uno مطابق تصویر زیر خواهد بود. کاملا منظم، قابل اطمینان و بدون سیم کشی‌های اضافی میتوانید روی آردوینو ProMake Uno اجرا کنید.

تشخیص گاز شهری با سنسور Mq2 و شیلد Uno Promake - دیجی اسپارک

 


وسایل مورد نیاز


برد آردوینو Arduino UNO

شیلد پرومیک آردوینو PROMAKE EASYIOT

ماژول درگاه سنسور گاز PROMAKE GAS MQ

ماژول رله کنترل دو کاناله پرومیک PROMAKE RELAY 2CH

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه

  • سلام خانم پوربلورچیان
    آموزش جامع و جالبی بود. خصوصا اینکه با این روش دیگه سیم کشی لازم نیست. حالا یه سوالی چرا از دو تا رله استفده کردید؟

    • با سلام
      سپاس از همراهی شما کاربر گرامی
      ماژول رله دو کاناله است و فقط از یک کانال آن استفاده شده است.

  • سلام و خسته نباشید
    آیا از سنسور گازی MQ5 روی همین شیلد پرو میشه استفاده کرد؟ که گاز شهری رو محاسبه کنه ؟

    • با سلام
      بله از تمامی مدل های سری MQ میتوانید برای شیلد پرومیک Easy IoT استفاده کنید.

  • سلام خسته نباشی
    مطالب خیلی آموزنده و خوبی بود
    و یه سوال داشتم
    کد های برنامه نویسی که برای این نوع سنسور نوشتین رو میتونم روی سنسور MQ پرومیک استفاده کنم

    • با سلام
      کاربر گرامی قیمت در وسایل مورد نیاز درج شده است و بله این کالا تولید ایران است.

  • سلام خانم پوربلورچیان
    ضمن تشکر از زحمات شما در ارائه مطالب مفید ، در پروژه بالا میتتوان نمایشگر اضافه کرد؟