آموزش راه اندازی شتاب سنج 9 محوره MPU9250 به همراه BMP280 با آردوینو

نویسنده

دسته

فهرست مطالب

ویژگی های ماژول 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 اینجا کلیک کنید.

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

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

آردوینو UNO R3 × 1
ماژول فشار بارومتریک BMP280 + MPU9250 × 1
سیم جامپر نری به مادگی × 1

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

آردوینو IDE

راه اندازی ماژول BMP280 + MPU9250 با آردوینو

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

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

گام دوم: کد

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

https://github.com/adafruit/Adafruit_BMP280_Library

https://github.com/asukiaaa/MPU9250_asukiaaa

توجه

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

کد زیر را روی برد آردوینوی خود آپلود کنید.
/*
  by MohammedDamirchi
  https://electropeak.com/learn/
*/



#include <MPU9250_asukiaaa.h>
#include <Adafruit_BMP280.h>

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

  }

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

از این مطلب خوشتان آمده؟

جدیدترین آموزش‌ها را از بهترین‌ها دریافت کنید

بیشتر بخوانید

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

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