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

راه اندازی سنسور BME680 با آردوینو (گاز، رطوبت، دما، فشار)

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

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

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

BME680 یک حسگر محیطی است که حسگرهای گاز، فشار، رطوبت و دما را ترکیب می کند. حسگر گاز می تواند طیف وسیعی از گازها مانند ترکیبات آلی فرار (VOC) را شناسایی کند. به همین دلیل می توان از BME680 در کنترل کیفیت هوای داخل ساختمان استفاده کرد.معرفی ماژول سنسور محیطی BME680

BME680 یک سنسور دیجیتال 4 در 1 است که موارد زیر را اندازه گیری می کند:

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

سنسور گاز BME680

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

سنسورهای MOX از یک سطح اکسید فلز، یک تراشه حسگر برای اندازه‌گیری تغییرات رسانایی و یک بخاری تشکیل شده‌اند. VOC ها را با جذب مولکول های اکسیژن در لایه حساس خود شناسایی می کند. BME680 به اکثر VOC های آلوده کننده هوای داخل ساختمان (به جز CO2) واکنش نشان می دهد.

هنگامی که حسگر با گازهای کاهنده تماس پیدا می کند، مولکول های اکسیژن واکنش نشان می دهند و رسانایی را در سراسر سطح افزایش می دهند. به عنوان یک سیگنال خام، BME680 مقادیر مقاومت را خارج می کند. این مقادیر به دلیل تغییرات در غلظت VOC تغییر می کند:

سنسور گاز BME680

  • غلظت بالاتر VOCs » مقاومت کمتر
  • غلظت کمتر VOCs » مقاومت بالاتر

واکنش‌هایی که روی سطح حسگر رخ می‌دهند تحت تأثیر پارامترهایی غیر از غلظت VOC مانند دما و رطوبت هستند.

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

دقت BME680

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

سنسور دقت
دما +/- 1.0 ºC
رطوبت +/- 3 %
فشار +/- 1 hPa

لیست زیر محدوده عملکرد سنسورهای دما، رطوبت و فشار BME680 را نشان می دهد.

  • دما -40 تا 85 درجه سانتیگراد
  • رطوبت 0 تا 100 درصد
  • فشار 300 تا 1100 hPa

اتصال سنسور BME680 به برد آردوینو

توضیحات پین های BME680

VCC تغذیه ماژول
GND GND
SCL پین SCL برای ارتباطات I2C
پین SCK برای ارتباط SPI
SDA پین SDA برای ارتباطات I2C
پین MOSI برای ارتباطات SPI
SDO پین MISO برای ارتباطات SPI
CS پین CS برای ارتباط SPI

BME680 از رابط های I2C و SPI پشتیبانی می کند.

برای استفاده از پروتکل ارتباطی I2C، از پین های زیر استفاده کنید:

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
BME680 آردوینو
SCL A5
SDA A4

برای استفاده از پروتکل ارتباطی SPI، از پین های زیر استفاده کنید:

BME680 آردوینو
SCL (SCK SPI Clock) D13
SDA (SDI MOSI) D11
SDO (MISO) D12
CS (Chip Select) D10

اتصال برد آردوینو به سنسور BME680

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

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

اتصال برد آردوینو به سنسور BME680

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

آردوینو با BME680 با استفاده از SPI

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

برای تکمیل این آموزش به قطعات زیر نیاز دارید:

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

کد َArduino راه اندازی سنسور BME680

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

آردوینو خود را باز کنید و به Sketch > Include Library > Manage Libraries بروید.

عبارت adafruit bme680 را در کادر جستجو جستجو کنید و کتابخانه را نصب کنید.

برای استفاده از کتابخانه BME680، باید کتابخانه Adafruit_Sensor را نیز نصب کنید. به Sketch > Include Library > Manage Libraries بروید و «Adafruit Unified Sensor» را در کادر جستجو تایپ کنید. ب

پس از نصب کتابخانه ها، آردوینو IDE خود را مجددا راه اندازی کنید.

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

کد با گنجاندن کتابخانه های مورد نیاز شروع می شود: کتابخانه Wire برای استفاده از I2C، کتابخانه SPI (اگر می خواهید از SPI به جای I2C استفاده کنید)، کتابخانه های Adafruit_Sensor و Adafruit_BME680 برای ارتباط با حسگر BME680.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"

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

/*#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10*/

متغیری به نام SEALEVELPRESSURE_HPA ایجاد می شود.

#define SEALEVELPRESSURE_HPA (1013.25)

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

این مثال به طور پیش فرض از پروتکل ارتباطی I2C استفاده می کند. خط زیر یک آبجکت Adafruit_BME680 به نام bme را روی پین های Arduino I2C ایجاد می کند: D5 (SCL)، D4 (SDA).

Adafruit_BME680 bme; // I2C

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

//Adafruit_BME680 bme(BME_CS، BME_MOSI، BME_MISO، BME_SCK)؛ // SPI

در setup() یک ارتباط سریال را شروع کنید.

Serial.begin(115200);

با خطوط زیر سنسور BME680 را راه اندازی کنید:

if (!bme.begin()) {
Serial.println(F("Could not find a valid BME680 sensor, check wiring!"));
while (1);
}

پارامترهای زیر پارامتر های مورد نیاز را برای سنسور تنظیم کنید.

bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150);

برای افزایش وضوح داده های خام این حسگر از نمونه برداری بیش از حد پشتیبانی می کند. ما از پارامترهای نمونه برداری پیش فرض استفاده خواهیم کرد، اما شما می توانید آنها را تغییر دهید.

  • setTemperatureOversampling(): تنظیم بیش از حد نمونه برداری دما.
  • setHumidityOversampling(): تنظیم رطوبت بیش از حد نمونه.
  • setPressureOversampling(): نمونه برداری بیش از حد فشار را تنظیم کنید.

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

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

سنسور BME680 یک فیلتر IIR داخلی را برای کاهش تغییرات کوتاه مدت در مقادیر خروجی سنسور ناشی از اختلالات خارجی استفاده می کند. متد setIIRFilterSize() فیلتر 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

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

ابتدا به سنسور بگویید که خواندن را با bme.beginReading() شروع کند. این ox زمان آماده شدن خواندن را برمی گرداند.

unsigned long endTime = bme.beginReading();
if (endTime == 0) {
Serial.println(F("Failed to begin reading :("));
return; 
}
Serial.print(F("Reading started at "));
Serial.print(millis());
Serial.print(F(" and will finish at "));
Serial.println(endTime);

سپس می توانیم مقدار ها را به صورت زیر بدست آوریم:

  • bme.temperature: دما را بر میگرداند
  • bme.pressure: فشار را بر میگرداند
  • bme.humidity: رطوبت را بر میگرداند
  • bme.gas_resistance: گاز را بر میگرداند
Serial.print(F("Temp= "));
Serial.print(bme.temperature);
Serial.println(F(" *C"));

Serial.print(F("Pressure = "));
Serial.print(bme.pressure / 100.0);
Serial.println(F("hPa"));

Serial.print(F("Humidity= "));
Serial.print(bme.humidity);
Serial.println(F(" %"));

Serial.print(F("Gas="));
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(F("KOhms"));

Serial.print(F("Approx. Altitude = "));
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(F("m"));

نتیجه پروژه

کد را روی برد آردوینو خود آپلود کنید. به Tools > Board بروید و برد آردوینو مورد استفاده خود را انتخاب کنید. به Tools > Port بروید و پورتی که بردتان به آن متصل است را انتخاب کنید. سپس، روی دکمه آپلود کلیک کنید.

مانیتور سریال را با نرخ باود 115200 باز کنید، دکمه RST روی برد را فشار دهید. اندازه گیری سنسور نمایش داده خواهد شد.

BME680 Arduino IDE نمونه نمایشگر دمای گاز

ماژول سنسور BME680 یک سنسور دیجیتال 4 در 1 است که سنسورهای گاز، فشار، دما و رطوبت را ترکیب می کند. BME680 دارای یک سنسور MOX است که حضور بیشتر گازهای VOC را حس می کند. این سنسور یک ایده کیفی از مجموع VOCs / آلاینده ها در هوای اطراف به شما می دهد. به همین دلیل می توان از BME680 برای نظارت بر کیفیت هوای داخل خانه استفاده کرد.

موارد موجود در فایل : سورس کامل

5 (2 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *