1. صفحه نخست
  2. راهنمای سنسورها
  3. راهنمای کامل BME680 سنسور زیست محیطی با برد Arduino

راهنمای کامل BME680 سنسور زیست محیطی با برد Arduino

در این مقاله آموزشی سعی داریم، نحوه استفاده از ماژول سنسور BME680 با برد Arduino uno را آموزش دهیم.سنسور دیجیتال زیست محیطی BME680 گاز،فشار،رطوبت و دما را اندازه گیری می کند.

این سنسور به یک میکروکنترولر با استفاده از پروتکل ارتباطی I2C یا SPI متصل می شود.

سنسور BME680_سنسور گاز_رطوبت_دما_فشار
سنسور BME680_سنسور گاز_رطوبت_دما_فشار

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

معرفی ماژول سنسور زیست محیطی BME680

سنسور BME680  سنسور های گاز، فشار، رطوبت و دما را ترکیب می کند. سنسور گاز قابلیت تشخیص بازه گازها مانند ترکیبات آلی فرار را دارد. به همین دلیل BME680 برای کنترل کیفیت هوای داخلی استفاده شود.

سنسور BME680_کنترل کیفیت هوای داخلی

اندازه گیری های سنسور BME680

یک سنسور دیجیتال 1*4 با قابلیت اندازه گیری پارامترهای زیر می باشد :

  • دما
  • رطوبت
  • فشار بارومتریک
  • گاز : ترکیبات آلی فرار (VOC)مانند اتانول و کربن منو اکسید

سنسور گاز

سنسور BME680 دارای یک اکسید فلز (MOX) که ترکیبات آلی فرار (VOC) موجود در هوا را شناسایی می کند و یک ایده کیفی از مجموع ترکیبات آلی فرار / آلاینده های موجود در هوای اطراف به شما می دهد.( مشخصاً مربوط به یک مولکول ویژه گاز نیست.)

سطح سنسورهای MOX از اکسید فلز پوشیده شده و دارای یک چیپ برای اندازه گیری تغیییرات رسانایی و یک هیتر (بخاری) می باشد. این سنسور ترکیبات آلی فرار را از طریق جذب مولکول های اکسیژن در لایه های حساس آن، شناسایی می کند.

سنسور BME680 به اکثریت ترکیبات آلی فرار؛ که باعث آلودگی هوای داخلی می شوند، بجز کربن دی اکسید CO2 واکنش نشان می دهد.

وقتی که سنسور با گازهای کاهش دهنده در تماس قرار می گیرد، مولکول های اکسیژن واکنش نشان داده و رسانایی سطح را افزایش می دهند.(مانند یک ردیف سیگنال) در این مرحله سنسور BME680 مقادیر مقاومت را ارائه می دهد که این مقادیر به دلیل تغییرات غلظت تغییر می کند.

در شکل زیر روند بالا را به صورت شماتیک مشاهده می کنید :

نحوه عملکرد سنسور BME680

نکته : غلظت بالاتر از ترکیبات آلی فرار (VOCs) به معنای مقاومت کمتر است و غلظت پایین تر از VOCها نشان دهنده مقاومت بالاتر می باشد.

واکنش هایی مانند مقاومت،که در سطح سنسور صورت می گیرد. تحت تاثیر پارامترهای دیگری از غلظت VOC (ترکیبات آلی فرار) مثل دما و رطوبت هستند.

اطلاعات مربوط به خواندن سنسور گاز

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

وقتی برای اولین بار کار با سنسور را شروع می کنید. توصیه می شود بعد از حمع آوری داده های  “واقعی” سنسور را به مدت 48 ساعت  و30 دقیقه قبل از شروع خواندن گاز در حال اجرا قرار دهید.

دقت سنسور BME680

جدول زیر دقت سنسور BME680 را نمایش پارامترهای دما،رطوبت و فشار نشان می دهد :

سنسور BME680 دقت اندازه گیری
دما +/- 1.0 درجه سلسیوس
رطوبت +/- 3 %
فشار +/- 1 هکتوپاسکال

محدوده اجرایی BME680

جدول زیر بازه کارکرد سنسور BME680 را نمایش پارامترهای دما،رطوبت و فشار نشان می دهد :

سنسورBME680 بازه عددی عملکرد
دما -40 _ 85 درجه سلسیوس
رطوبت 0 _ 100 %
فشار 300 _ 1100 هکتوپاسکال

پین های BME680

VCC سنسور BME680 را تغذیه می کند
 GND پین مشترک،اتصال به زمین
 SCL

پین SCL سریال کلاک به پروتکل I2C

پین SCK سریال کلاک به پروتکل SPI

 SDA

پین SDA سریال دیتا به پروتکل I2C

پین (SDI(MOSI سیگنال دیتا داخلی( پین master خارجی/ پین slave داخلی) به پروتکل SPI

 SDO پین (SDO (MISO سیگنال دیتا خارجی (پین master داخلی/ پین slave خارجی) به پروتکل SPI
 CS پین (CS(chip select به پروتکل SPI

رابط سنسور BME680 چیست؟

رابط های سنسور BME680، پروتکل I2C و SPI  هستند.

سنسور BMPE680
سنسور BMPE680
اتصال پروتکل I2C به سنسور BME680

نحوه اتصال پین های پروتکل رابط I2C به سنسور BME680 در جدول زیر مشاهده می کنید :

سنسور BME680 برد Arduino
پایه سریال کلاک SCL A5
پایه سریال دیتا SDA A4
اتصال پروتکل SPI به سنسور BME680

نحوه اتصال پین های پروتکل رابط SPI به سنسور BME680 در جدول زیر مشاهده می کنید :

سنسور BME680 برد Arduino
پین سریال کلاک (SCL (SCK SPI Clock  D13
پین سریال دیتا_ارسالی master وslave ورودی (SDI MOSI)  D11
پین سیگنال دیتا خروجی_ master  ورودی و slave خروجی  D12
پبن (CS (cheep select  D10

قطعات مورد نیاز

برد Arduino_سنسورBME680

جهت تکمیل آموخته های خود در این مقاله و شروع یک پروژه کاربردی و ساده شما باید قطعات زیر را تهیه کنید :

  1. ماژول سنسور BME680
  2. برد Arduino Uno
  3. Breadboard
  4. Jumper wires /جامپر وایر یا سیم جامپر

تمامی قطعات الکترونیکی خود را با هزینه ای به صرفه می توانید در اینجا پیدا کنید.

مدار شماتیک – سنسور BME680 به Arduino

همانطور که در قسمت های قبلی آموزش توضیح دادیم،این سنسور به هر دو پروتکل I2C و SPI  می تواند متصل شود.

سنسور BME680 به Arduino / توسط I2C

مدار شماتیک اتصال سنسور دما، رطوبت و فشار BME680 به برد آردوینو توسط پروتکل رابط I2C، به صورت زیر است :

مدار اتصال سنسور BME680 به Arduino uno-پروتکل I2C
مدار اتصال سنسور BME680 به Arduino uno-پروتکل I2C

اتصال سنسور BME680 به Arduino توسط SPI

ممکن است شما از پروتکل SPI استفاده کنید. مدار شماتیک اتصال سنسور دما، رطوبت و فشار BME680 به برد آردوینو توسط پروتکل رابط SPI ، به صورت زیر است :

سنسور BME680 به Arduino / توسط SPI
اتصال سنسور BME680 به Arduino / توسط SPI

 نصب کتابخانه سنسور BME680

برای دریافت پارامترهای ذکر شده در ابتدا این مقاله ( گاز،دما، فشار و رطوبت)، باید Adafruit_BME280 library را نصب کنید.

مراحل زیر را به ترتیب در Arduino IDE انجام دهید:

نرم افزار Arduino IDE را باز کنید به منوی Sketch بروید پس از آن به زیر منوی Include Library سپس به  Manage Libraries وارد شوید.

عبارت “adafruit bme680 ” را سرچ کنید و کتابخانه را نصب کنید:

نصب کتابخانه سنسورBME680
نصب کتابخانه سنسورBME680

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

برای فعال سازی و استفاده از BME680 library؛ نصب کتابخانه موجود در سایت گیت هاب Adafruit_Sensor library ضروری است . مراحل نصب آن را در آردوینو IDE به شما آموزش خواهیم داد :

به منوی Sketch بروید. پس از آن به زیر منوی Include Library، سپس به Manage Libraries وارد شوید و عبارت  “Adafruit Unified Sensor” را سرچ کنید. بعد از اینکه تا انتهای صفحه  آمدید کتابخانه را پیدا و نصب کنید.

نصب adafruit sensor library
نصب adafruit sensor library

کدنویسی

برای خواندن گاز،دما،فشار و رطوبت ما از یک مدل طرح شده در کتابخانه استفاده می کنیم. بعد از نصب BME680 library و کتابخانه توسعه دهنده Adafruit_Sensor  ، مسیر زیر را در Arduino IDE بروید :

ابتدا منو File را باز کنید. پس از آن به زیر منو Examples بروید سپس Adafruit BME680 Library بروید و در آخر bme680async را باز کنید.

نحوه عملکرد کد

در این قسمت آموزش نحوه کارکرد کد را به شما آموزش می دهیم. اگر با این قسمت آشنایی لازمه را دارید، برای ادامه آموزش خود به انتهای مقاله بخش “نمایش” رجوع کنید.

کتابخانه ها

کد به واسطه کتابخانه هایی که لازم دارد شروع به کار می کند.کتابخانه wire با استفاده از کتابخانه پروتکل I2C و SPI (از کتابخانه هر کدام که برای استفاده انتخاب کرده اید.)کتابخانه های توسعه دهنده Adafruit_Sensor و Adafruit_BME680 سنسور BME680 را راه می اندازد.

رابط SPI

به طور کلی توصیه ما استفاده از پروتکل I2C با سنسور BME680 است. اما اگر شما از پروتکلSPI استفاده می کنید، کافی است برای تعریف پین های SPI دستور زیر را از حالت کامنت خارج کنید :

فشار سطح دریا

یک متغیر به نام SEALEVELPRESSURE_HPA ایجاد کنید :

بعد از ایجا این متغیر قابلیت محاسبه فشار سطح دریا را بر حسب هکتوپاسکال (برابر با میلی بار) و تخمین ارتفاع برای فشار های مختلفی که وارد می کنید، بر اساس فشار سطح دریا را دارد.

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

پروتکل I2C

در این مثال به صورت پیش فرض از پروتکل I2C استفاده می شود.

در دستور زیر ابتدا یک آبجکت Adafruit_BME680 به نام bme  بر پین های I2C، برد آردوینو :

(D5(SCL), D4 (SDA.

برای استفاده از پروتکل SPI، شما باید دستور قبل را کامنت و دستور زیر را از حالت کامنت خارج کنید.

()setup

در ()setup، یک ارتباط سریالی شروع می شود :

راه اندازی BME680

 با دستور زیر سنسور BME680، مقدار دهی اولی می شود:

پارامترهای زیر را ست کنید :

  1. آور سمپلینگ
  2. فیلتر
  3. هیتر گازی

ما از پارامترهای آورسمپلینگ پیش فرض، استفاده می کنیم شما می توانید با توجه به گزینه های خودتان، آن ها را عوض کنید.🙂

  • setTemperatureOversampling(): set temperature oversampling
  • setHumidityOversampling(): set humidity oversampling
  • setPressureOversampling(): set pressure oversampling

این متدها پارامترهای زیر را می تواند اکسپت کند :

  • ;BME680_OS_NONE: turn off reading
  • BME680_OS_1X
  • BME680_OS_2X
  • BME680_OS_4X
  • BME680_OS_8X
  • BME680_OS_16X

سنسور BME680 از یک فیلتر IIR برای کاهش تغییرات کوتاه مدتی، که در مقادیر خروجی سنسور ایجاد می شود، استفاده می کند.( عامل این تغییرات کوتاه مدت، اختلالات خارجی است.)

  • BME680_FILTER_SIZE_0 (no filtering)
  • BME680_FILTER_SIZE_1
  • BME680_FILTER_SIZE_3
  • BME680_FILTER_SIZE_7
  • BME680_FILTER_SIZE_15
  • BME680_FILTER_SIZE_31
  • BME680_FILTER_SIZE_63
  • BME680_FILTER_SIZE_127

در این قسمت برای تنظیم پروفایل یک هیتر، از متد ()setGasHeater استفاده می شود که آن را به عنوان آرگومان می پذیرد :

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

به عنوان پیش فرض از دمای 320 درجه سانتی گراد برای 150 میلی ثانیه، استفاده می کنیم.

()loop

در ()loop، پارامترهای اندازه گیری شده توسط سنسور BME680 را دریافت می کنیم.

به عنوان قدم اول، به سنسور بگویید که  یک خوانش نامتقارن را با دستور ()bme.beginReading را شروع کند.

سپس از متد ()endReading برای پایان دادن به خوانش نامتقارن، استفاده کنید.

اگر متوجه شدید که خواندن نامتقارن همچنان ادامه دارد، بلاک کنید.

پس از مراحل بالا، ما می توانیم خواندن را از سنسور شروع کنیم :

  • bme.temperature: returns temperature reading
  • bme.pressure: returns pressure reading
  • bme.humidity: returns humidity reading
  • bme.gas_resistance: returns gas resistance

نمایش

کد را در برد Arduino آپلود کنید.

به Tools بروید پس از آن به Board  وارد شوید و برد آردوینو ای که استفاده می کنید را انتخاب کنید.

به Tools و پس از آن به Port وارد شوید و پورتی را که برد به آن متصل است انتخاب کنید و کلیک کنید تا آپلود شروع شود.

وارد مانیتور سریال با بادریت 115200 شوید. بر روی on-board RST که در پایین صفحه می باشد کلیک کنید. در این مرحله اندازه گیری های سنسورBME680 نمایش داده می شود :

نمایش اندازه گیری های سنسور BME680 بر مانیتورسریال
نمایش اندازه گیری های سنسور BME680 بر مانیتورسریال
جمع بندی مطالب فوق

ماژول سنسور BME680، یک سنسور دیجیتالی 4 در 1 اینچ است که سنسور گاز،فشار،دما و رطوبت در خود دارد.

سنسور BME680 شامل یک سنسور MOX است که وجود گازهایی ترکیبات آلی(VOC gases) را شناسایی می کند .

این سنسور یک ایده کیفی از مجموعه آلاینده ها / ترکیبات آلی فرار در هوای اطراف به شما می دهد. به همین خاطر است که از سنسور BME680 برای نظارت بر کیفیت هوای داخلی می توان استفاده کرد.

امیدواریم که این آموزش برای شما مفید واقع شده باشد.

برای آموزش های بیشتر و تکمیلی راجع به سنسورها، اینجا کلیک کنید.

در قسمت نظرات ایده ها و مطالب پیشنهادی خود را با ما به اشتراک بگذارید.

آخرین آپدیت در آوریل 11, 2021

آیا این مقاله آموزشی مفید بود ؟

نوشته های مرتبط

لطفا نظر خود را بنویسید، این نظر میتواند تنها یک تشکر باشد.