0. Componentes y programación necesaria para usar el módulo GY-91 MPU-9250 + BMP280

Componentes requeridos:

{Product:2000}
{Product:1338}

I. Cómo utilizar el Sensor de inercia con el módulo GY-91 y Arduino

Este módulo IMU es una pequeña placa en la que se colocan todos los sensores necesarios para 10 grados de libertad. Este módulo se comunica con Arduino o microcontroladores a través de la interfaz I2C.  Con las funciones y el código fuente de FreeIMU existentes, puede utilizar fácilmente esta IMU como un sistema AHRS en los controles de vuelo. Puede utilizar este módulo en VTOL, modelos de aviones, UAVS y también en dispositivos industriales y médicos.

Este sensor tiene 8 pines:

  • - VIN: Fuente de alimentación del módulo - 5 V
  • - GND: tierra
  • - 3V3: Fuente de alimentación del módulo - 3,3 V
  • - SLC: Reloj I2C / Reloj SPI
  • - SDA : pin de datos I2C / MOSI para SPI
  • - SAO / SDO: Pin de ajuste de dirección para pin I2C / MISO para SPI
  • - NCS: Pin de selección de chip solo para sensor MPU-9250
  • - CSB : Pin de selección de chip solo para sensor BMP280

Puede ver el pinout de este módulo en la imagen a continuación:

II. Procedimientos experimentales

Conexión

El módulo se alimenta directamente de Arduino, así que no necesitamos una fuente de alimentación externa. 

Los pines están conectados según la tabla:

Pin Módulo

Pin de Arduino UNO

VCC

5V

GND

GND

SCL

A5

SDA

A4

Tal y como indica la siguiente figura:

Código

 Abre Arduino IDE e instala las siguientes librerías:

Al principio, debes agregar las librerías "Adafruit_BMP280_Library" y "MPU9250_asukiaaa" en Arduino IDE. Para ello descárgalas haciendo clic sobre sus nombres, y una vez denstro de GitHub, descargarla. Instalarlas después desde Programa -> Incluir biblioteca -> Añadir Bilioteca .ZIP ...), buscar el comprimido descargado y aceptar.

Ahora, abre un nuevo sketch y pega el siguiente código:

    /*

  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

  }

Una vez lo tengas todo conectado, el puerto y placa bien, sube el código a la placa y ya puedes abrir el "Serial Plotter" (o con el Monitor Serie, desde la pestaña Herramientas) para ver los movimientos registrados. Puedes filtrarlos y probar a modificar el código de ejemplo. Por supuesto, puedes probar los ejemplos de las librerías.

Para más info sobre los acelerómetros, puedes consultar los siguientes tutoriales: