ویژگی های ماژول فشار بارومتریک 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 اینجا کلیک کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول GY-91 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: کد
ابتدا کتابخانه زیر را بر آردوینوی خود نصب کنید.
توجه
اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.
کد زیر را روی برد آردوینوی خودآپلود کنید.
/*
by MohammedDamirchi
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=bdutXLJhty" data-secret="bdutXLJhty" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
*/
#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)
سلام . دقیقا مطابق آموزش بالا ماژول 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
سلام. بله احتمالش هست که مشکل از خود ماژول باشه. در صورتی که مشکل از کد، اتصالات و یا عوامل دیگه باشه هیچکدوم از پارامترها صحیح نوشته نمیشن.