آموزش راه اندازی ماژول فشار بارومتریک BME280 با استفاده از آردوینو

فهرست مطالب

ویژگی های ماژول فشار بارومتریک BME280

ماژول سنسور فشار بارومتریک BOSCH BME280 با اندازه ی کوچک توانایی بسیار خوبی در اندازه گیری فشار دارد. BME280 یک سنسور فشار مطلق است که برای کاربردهای تلفن همراه طراحی شده است. اندازه ی کوچک و مصرف پایین انرژی به آن امکان تغذیه با باتری دستگاه هایی مانند موبایل، ماژول GPS یا ساعت را میدهد. BME280 بر اساس تکنولوژی سنسور فشار پیزومقاومتی ساخته شده و دارای دقت بالا، خروجی خطی و ثبات و ماندگاری بالاست.

در این آموزش نحوه راه اندازی این ماژول را با استفاده از ارتباط I2C، آموزش می دهیم.

دیتاشیت سنسور فشار بارومتریک BME280 را می توانید از اینجا دانلود کنید.

معرفی پایه ها (Pinout) ماژول فشار و ارتفاع BME280

ماژول BME280 دارای 10 پایه به شرح زیر است:

  •  +3V3: تغذیه ماژول – 3.3 ولت
  •  GND: زمین
  •  SLC: همزمان سازی برای پروتکل I2C
  •  SDA: اطلاعات برای پروتکل I2C
  •  SCK: همزمان سازی برای پروتکل SPI
  •  SDO: خط ارسالی اطلاعات برای پروتکل SPI
  •  SDI: خط دریافتی اطلاعات برای پروتکل SPI
  •  CS: انتخاب دستگاه های زیر مجموعه برای پروتکل SPI

پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

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

آردوینو UNO R3 × 1
ماژول اندازه گیری فشار هوا BME280 × 1
سیم جامپر نری به مادگی × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول فشار بارومتریک BME280 با آردوینو

گام اول: سیم بندی

مطابق مدار زیر، ماژول را به آردوینو وصل کنید.

گام دوم: کد

ابتدا کتابخانه زیر را  بر آردوینوی خود نصب کنید. 

https://github.com/adafruit/Adafruit_BME280_Library

توجه

اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.

کد زیر را روی برد آردوینوی خود آپلود کنید.
/***************************************************************************
  This is a library for the BME280 humidity, temperature & pressure sensor

  Designed specifically to work with the Adafruit BME280 Breakout
  ----> http://www.adafruit.com/products/2650

  These sensors use I2C or SPI to communicate, 2 or 4 pins are required
  to interface. The device's I2C address is either 0x76 or 0x77.

  Adafruit invests time and resources providing this open source code,
  please support Adafruit andopen-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried & Kevin Townsend for Adafruit Industries.
  BSD license, all text above must be included in any redistribution
  See the LICENSE file for details.
 ***************************************************************************/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

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

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
    Serial.begin(9600);
    while(!Serial);    // time to get serial running
    Serial.println(F("BME280 test"));

    unsigned status;
    
    // default settings
    status = bme.begin();  
    // You can also pass in a Wire library object like &Wire2
    // status = bme.begin(0x76, &Wire2)
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
        Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
        Serial.print("        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
        Serial.print("   ID of 0x56-0x58 represents a BMP 280,\n");
        Serial.print("        ID of 0x60 represents a BME 280.\n");
        Serial.print("        ID of 0x61 represents a BME 680.\n");
        while (1) delay(10);
    }
    
    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}


void loop() { 
    printValues();
    delay(delayTime);
}


void printValues() {
    Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" *C");

    Serial.print("Pressure = ");

    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

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

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

    }

پس از آپلود کد در سریال مانیتور چیزی شبیه به تصویر زیر را مشاهده می کنید.

آموزش های مشابه

Comments (2)

  • امید رضایی Reply

    سلام میخواستم بدونم این ماژول برای راه اندازی یک ایستگاه هواشناسی و نصبش در باغ مناسب هست؟
    و اگه برای حفاظت از ماژول در برابر اب و باران چه ایده ای دارید

    ژانویه 19, 2021 at 4:47 ق.ظ
    • مهران ملکی Reply

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

      ژانویه 19, 2021 at 10:00 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.