آموزش راه اندازی ماژول GY-91 (شتاب سنج 9 محوره MPU9250 و BMP280) با آردوینو

فهرست مطالب

ویژگی های ماژول فشار بارومتریک BMP280 به همراه شتاب سنج 9 محوره MPU9250

این ماژول IMU یک برد کوچک است که تمامی سنسور های مورد نیاز برای 10 درجه آزادی روی آن قرار گرفته است. ارتباط این ماژول با آردوینو و یا میکرو کنترل ها از طریق رابط I2C برقرار می شود، با استفاده از توابع و سورس کد های موجود FreeIMU به راحتی می توانید از این IMU به عنوان یک سیستم AHRS در سامانه کنترل پرواز ربات های پرنده ، عمود پرواز ، هواپیماها و هلیکوپتر های مدل استفاده نمایید و یا با کمی تغییر آن را در ساخت دستگاه های صنعتی ، پزشکی و … به کارگیری نمایید.

معرفی پایه ها (Pinout) ماژول GY-91

ماژول 9-AXIS-IMU دارای 8 پایه است. کاربرد پایه های پرکاربرد این ماژول به شرح زیر است:

  • VIN: تغذیه ماژول – 5 ولت
  • GND: زمین
  • 3V3: تغذیه ماژول – 3 ولت
  • SLC: پایه کلاک پروتکل I2C / پایه کلاک پروتکل SPI
  • SDA: پایه دیتا پروتکل I2C / پایه MOSI پروتکل SPI
  • SAO/SDO: پایه تنظیمات آدرس در پروتکل I2C / پایه MISO پروتکل SPI
  • NCS: پایه Chip Select تنها برای سنسور MPU-9250
  • CSB: پایه Chip Select تنها برای سنسور BMP280

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

جهت دریافت دیتاشیت ماژول فشار بارومتریک BMP280 به همراه شتاب سنج 9 محوره MPU9250 اینجا کلیک کنید.

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

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

آردوینو Uno R3 × 1
ماژول فشار BMP280 و شتاب سنج MPU9250 × 1
سیم جامپر × 1

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

آردوینو IDE

راه اندازی ماژول GY-91 با آردوینو

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

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

گام دوم: کد

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

https://github.com/adafruit/Adafruit_BMP280_Library

https://github.com/asukiaaa/MPU9250_asukiaaa

توجه

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

کد زیر را روی برد آردوینوی خودآپلود کنید.

    /*
  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); #else Wire.begin(); mySensor.setWire(&Wire); #endif bme.begin(0x76); 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 }

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

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

Comments (2)

  • reza Reply

    سلام . دقیقا مطابق آموزش بالا ماژول gy-91 رو راه اندازی کردم.متاسفانه فقط دو تا از پارامترهای اول (accelX-
    accelY) توسط ماژول اندازه گیری میشن و مابقی ثابتن… – از کتابخانه های دیگه و حتی در حال spi و علاوه بر آردینو روی esp32 هم چک کردم نتیجه همون شد. چقدر احتمال داره که ماژول خراب باشه؟؟؟
    sensorId: 112
    accelX: -3.37
    accelY: 3.14
    accelZ: -16.00
    accelSqrt: 16.65
    gyroX: 0.00
    gyroY: 0.00
    gyroZ: 0.00
    Cannot read mag values

    می 20, 2021 at 3:08 ق.ظ
    • مهران ملکی Reply

      سلام. بله احتمالش هست که مشکل از خود ماژول باشه. در صورتی که مشکل از کد، اتصالات و یا عوامل دیگه باشه هیچکدوم از پارامترها صحیح نوشته نمیشن.

      می 22, 2021 at 2:42 ب.ظ

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

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