آموزش آردوینو پروژه های آردوینو

پروژه تشخیص گاز شهری با آردوینو و سنسور MQ5 نمایش روی OLED

gas-detector-with-mq5-and-arduino-oled-digispark
نوشته شده توسط پریسا پوربلورچیان

با توجه به شرایط این روزهایی کرونایی و دورکاری از طریق منزل بیش تر وقت خود را در خانه می‌گذرانیم. یکی از اساسی ترین پارامتری که در کنترل خانه به آن نیاز داریم، درصد مقدار گاز شهری در فضا است. البته در صورتیکه سنسور گاز در ساختمان نداشته باشیم 🙂 در پروژه تشخیص گاز شهری با آردوینو مقدار درصد گاز شهری توسط MQ5 تشخیص و در نمایشگر OLED نمایش داده می‌شود. در ادامه با مرجع تخصصی اینترنت اشیا به زبان فارسی، دیجی اسپارک همراه باشید.

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

 


سنسور گاز MQ5


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

 

جدول زیر از دیتاشیت سنسور ضمیمه شده است که برای محاسبه ولتاز و انتخاب ولتاژ و جریان صحیح بسیار کاربردی است.

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

 

سنسور گاز MQ5 تشخیص گاز شهری - دیجی اسپارک

 


کد آردوینو محاسبه ولتاژ سنسور گاز


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

 

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

 

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

 


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


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

 

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

 

سپس کد را کامپایل کرده و سریال مانیتور را باز کنید. در سریال مانیتور با بادریت ۹۶۰۰ مقادیر ولتاژ روی پایه A0 سنسور و مقدار RO نمایش داده می‌شود.

دریافت مقادیر RO سنسور گاز MQ5 در آردوینو - دیجی اسپارک

 

عدد ثابت شده برای مقاومت RO در محیط اتاقی که در حال حاضر هستم به ۲٫۸۱ رسیده است. این عدد را دریافت و در جایی یادداشت کنید. در کد بعدی به آن نیاز داریم.

 


محاسبه نسبت RS/RO = Ratio


در نهایت برای محاسبه نسبت RS/RO در پروژه تشخیص گاز شهری با آردوینو با سنسور گازی MQ از فرمول زیر در کد برنامه استفاده می‌کنیم.

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

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

کد را کپی و به نرم افزار آردوینو Arduino انتقال دهید. سپس سریال مانیتور را باز کرده و نتایج را مشاهده و یادداشت کنید.

 

 


استفاده از نمایشگر OLED


در این پروژه از نمایشگر OLED با درایور SSD1306 استفاده می‌کنیم. نمایشگر OLED با توجه به اینکه نسبت به سایر نمایشگرها کوچیکتر و با ابعاد ۰٫۹۶ اینچ است، اما روزلوشن ۱۲۸*۶۴ دارد و کتابخانه ی منحصر به فردی جداگانه برای آن توسعه یافته است. برای نمایش محتوا در OLED از کتابخانه SSD1306 استفاده می‌کنیم. روش نصب کتابخانه در آموزش راه اندازی OLED توضیح داده شده است.

 

نصب کتابخانه Adafuit ssd1306

 

نصب کتابخانه Adafruit_GFX

 


تحلیل کد OLED


برای نمایش متن در نمایشگر OLED از دستور زیر استفاده کنید.

 

برای انتخاب مکان نما برای نمایش محتوا در نمایشگر oled از دستور زیر استفاده کنید.

 

برای انتخاب سایز نمایش محتوا از دستور زیر استفاده کنید.

 


کد آردوینو نشتی گاز


کد آردوینو برنامه در ادامه ضمیمه شده است، آن را کپی و به نرم افزار آردوینو Arduino انتقال دهید.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


اتصالات سنسور گاز MQ


برای استفاده از نمایشگر OLED به رابط I2C نیاز داریم. همچنین سنسور گاز دارای ورودی آنالوگ است و ratio اندازه گیری شده توسط پایه های آنالوگ صورت گرفته است. برای اتصال نمایشگر OLED به آردوینو همانند زیر اجرا کنید.

  • پایه VCC را به ۳٫۳ ولت اتصال دهید.
  • پایه GND را به GND اتصال دهید.
  • پایه SDA را به پایه A4 اتصالا دهید.
  • پایه SCL را به پایه A5 اتصال دهید.

 

برای اتصال ماژول MQ5 به آردوینو همانند زیر اجرا کنید.

  • پایه آنالوگ A را به پایه A0 آنالوگ اتصال دهید.
  • پایه VCC را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND را به پایه GND اتصال دهید.

 


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


 برد آردوینو 

نمایشگر OLED

سنسور تشخیص گاز شهری MQ5

برد بورد و کابل

 


جمع بندی لیدی پای


با اجرای این پروژه با نشتی گاز شهری در محیط های بسته میتوانید غلظت گاز محیط را بر حسب PPM اندازه گیری و دریافت کنید. بسیاری از کاربران بدون در نظر گرفتن فرمول های ریاضی برای اندازه گیری نسبت مقاومت و نسبت آن اقدام به راه اندازی این کالا می‌کنند. در این صورت عدد به دست آمده همان ولتاژ پایه ی آنالوگ بر روی سنسور است و کاملا اشتباه خواهد بود. برای اندازه گیری پارامتر دقیق سنسور نیاز به محاسبه نسبت RS/RO = Ratio داریم که کامل روند اجرا و کدنویسی آموزش داده شده است. دیتای دریافتی از سنسور محاسبه شده و سپس بر روی نمایشگر OLED نمایش داده می‌شود. 

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

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

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

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

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

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

۲ دیدگاه

  • آموزش کاربردی بود ممنون

    و اما سوال : دلیل اینکه داده های دریافتی از ماژول رو در ۱۰۲۳ ضرب و بعد در ۵ تقسیم میکنیم چی هست ؟

    • سپاس از همراهی شما
      برای محاسبه ی ولتاژ روی پایه از فرمول adc استفاده می‌کنیم. بدین صورت که مقادیر Value دریافتی از پایه آنالوگ را بر ۱۰۲۴ که رنج adc است، تقسیم کرده و سپس در ۵ ولت یعنی بیشتری بازه ی ولتاژ ضرب می‌کنیم.