ویژگیهای ماژول سنسور فشار بارومتریک BMP280
ماژول فشار بارومتریک BMP280 با اندازه کوچک خود توانایی خوبی در اندازهگیری فشار دارد. سنسور BMP280 به علت داشتن ابعاد کوچک و مصرف انرژی پایین، برای دستگاههایی مانند موبایل، GPS و یا ساعت مناسب است.
مهمترین ویژگیهای این ماژول عبارتاند از :
- محدوده فشار : 300 تا 1100hPa
- قابلیت اندازهگیری دما
- دقت اندازه گیری فشار: 12hPa
- پشتیبانی از پروتکل ارتباطی I2C تا 3.4 مگاهرتز
- پشتیبانی از پروتکل ارتباطی SPI تا 10 مگاهرتز
موارد کاربرد این ماژول عبارتاند از:
- موقعیت یابی داخلی
- پیشبینی آب وهوا
- شاخص سرعت عمودی
- GPS
- تجهیزات فضای باز
نکته
هر hPa برابر 100Pa میباشد.
دیتاشیت سنسور BMP280 را میتوانید از اینجا دانلود کنید.
BMP280 pressure Sensor Datasheet
معرفی پایههای (Pinout) ماژول سنسور فشار بارومتریک BMP280
ماژول BMP280 دارای 6 پایه به شرح زیر است:
- VCC: تغذیه ماژول
- GND: زمین
- SDA: پایه دیتا I2C
- SCL: پایه کلاک I2C
- CSB: پایه انتخاب قطعه
- SDO: پایه سریال دیتا
نکته
در پروتکل I2C، از دو پایه SDA و SCL استفاده میکنیم و در پروتکل SPI از هر 4 پایه بهره میبریم.
پین اوت (Pinout) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول سنسور فشار بارومتریک BMP280 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
توجه
در این آموزش از پروتکل I2C استفاده کردهایم. بنابراین دو پین SDA و SCL را جهت راهاندازی ماژول به کار میبریم.
گام دوم: نصب کتابخانه
به Library manager رفته و با سرچ کلمه BMP280، کتابخانه ی Adafruit_BMP280_Library را نصب کنید.
گام سوم: کد
کد زیر را روی برد آردوینو آپلود کنید.
/*
BMP280-Barometric-Pressure-Sensor-Module
modified on 05 Jan 2021
by Amir Mohammad Shojaee @ Electropeak
Home
Based on Adafruit Example
*/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#define BMP_SCK (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS (10)
Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("altitude = "));
Serial.print(bmp.readAltitude(1013.25)); /* Adjusted to local forecast! */
Serial.println(" m");
Serial.println();
delay(2000);
}
در ابتدای برنامه سه کتابخانه مدنظر را وارد میکنیم. در ادامه و در خروجی سریال مانیتور به ترتیب فشار بر حسب Pa، دما بر حسب سانتیگراد و ارتفاع از سطح دریا بر حسب متر را نمایش میدهیم. ارتفاع از سطح دریا از طریق فشار اندازهگیری شده محاسبه میشود.
توجه
این برنامه برای هر دو پروتکل I2C و SPI نوشته شدهاست.
عکس زیر خروجی سریال مانیتور را نشان میدهد. سه پارامتر فشار، دما و ارتفاع را مشاهده میکنید.
Comments (2)
نویسنده مطلب کلا فراموش کرده در مورد pull up کردن دو خط i2c بنویسه در نتیجه با این آموزش نتیجه نخواهید گرفت.
با سلام
اکثر ماژول های I2C به صورت داخلی مقاومت های pull-up را قرار داده اند.
در این ماژول نیز توجه کنید 2 عدد مقاومت برای همین موضوع استفاده شده است.
امکان دارد ماژولی همراه قطعه خود دارید استفاده میکنید که باعث نویز شده است. یا در سمت میکرو شما اشکال جزعی به وجود آماده است که این اتفاق برایش افتاده است. و با قرار دادن مقاومت اضافه مشکل شما را حل میکند.