ویژگی های ماژول BMP280 + MPU9250
این ماژول IMU یک برد کوچک است که تمامی سنسور های مورد نیاز برای 10 درجه آزادی روی آن قرار گرفته است. ارتباط این ماژول با آردوینو و یا میکرو کنترل ها از طریق رابط I2C برقرار می شود، با استفاده از توابع و سورس کد های موجود FreeIMU به راحتی می توانید از این IMU به عنوان یک سیستم AHRS در سامانه کنترل پرواز ربات های پرنده ، عمود پروازها، هواپیماها و هلیکوپتر های مدل و … استفاده نمایید و یا با کمی تغییر آن را در ساخت دستگاه های صنعتی ، پزشکی و … به کار بگیرید.
معرفی پایه ها (Pinout) ماژول BMP280 + MPU9250
ماژول CJMCU 9-AXIS IMU دارای 6 پایه است. کاربرد پایه های پرکاربرد این ماژول به شرح زیر است:
- +3V3: تغذیه ماژول – 3.3 ولت
- GND: زمین
- SLC: همزمان سازی برای پروتکل I2C
- SDA: اطلاعات برای پروتکل I2C
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
جهت دریافت دیتاشیت ماژول فشار بارومتریک BMP280 به همراه شتاب سنج 9 محوره MPU9250 اینجا کلیک کنید.
MPU9250 Sensor Datasheet
BMP280 Sensor Datasheet
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول BMP280 + MPU9250 با آردوینو
گام اول: سیم بندی
گام دوم: کد
ابتدا کتابخانه زیر را بر آردوینوی خود نصب کنید.
توجه
اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.
/*
by MohammedDamirchi
Home
*/
#include <MPU9250_asukiaaa.h>
#include <Adafruit_BMP280.h>
#ifdef _ESP32_HAL_I2C_H_
#define SDA_PIN 21
#define SCL_PIN 22
#endif
Adafruit_BMP280 bme; // I2C
MPU9250_asukiaaa mySensor;
float aX, aY, aZ, aSqrt, gX, gY, gZ, mDirection, mX, mY, mZ;
void setup() {
Serial.begin(115200);
while (!Serial);
#ifdef _ESP32_HAL_I2C_H_ // For ESP32
Wire.begin(SDA_PIN, SCL_PIN);
mySensor.setWire(&Wire);
#endif
bme.begin();
mySensor.beginAccel();
mySensor.beginGyro();
mySensor.beginMag();
// You can set your own offset for mag values
// mySensor.magXOffset = -50;
// mySensor.magYOffset = -55;
// mySensor.magZOffset = -10;
}
void loop() {
if (mySensor.accelUpdate() == 0) {
aX = mySensor.accelX();
aY = mySensor.accelY();
aZ = mySensor.accelZ();
aSqrt = mySensor.accelSqrt();
Serial.print("accelX: " + String(aX));
Serial.print("\taccelY: " + String(aY));
Serial.print("\taccelZ: " + String(aZ));
Serial.print("\taccelSqrt: " + String(aSqrt));
}
if (mySensor.gyroUpdate() == 0) {
gX = mySensor.gyroX();
gY = mySensor.gyroY();
gZ = mySensor.gyroZ();
Serial.print("\tgyroX: " + String(gX));
Serial.print("\tgyroY: " + String(gY));
Serial.print("\tgyroZ: " + String(gZ));
}
if (mySensor.magUpdate() == 0) {
mX = mySensor.magX();
mY = mySensor.magY();
mZ = mySensor.magZ();
mDirection = mySensor.magHorizDirection();
Serial.print("\tmagX: " + String(mX));
Serial.print("\tmaxY: " + String(mY));
Serial.print("\tmagZ: " + String(mZ));
Serial.print("\thorizontalDirection: " + String(mDirection));
}
Serial.print("\tTemperature(*C): ");
Serial.print(bme.readTemperature());
Serial.print("\tPressure(Inches(Hg)): ");
Serial.print(bme.readPressure()/3377);
Serial.print("\tApproxAltitude(m): ");
Serial.print(bme.readAltitude(1013.25)); // this should be adjusted to your local forcase
Serial.println(""); // Add an empty line
}
پس از آپلود کد با حرکت دادن ماژول در سریال مانیتور می توانید اطلاعات سنسور را مشاهده کنید.