Problemas con un GY-91 y Arduino Uno

Hola, soy José Vicente Galadí.

He intentado conectar un Arduino Uno y un GY-91 según el esquema que se muestra aquí...

Aquí tenéis los pines del GY-91

Y éste es el código del programa.

  /*
  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();
  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
  }

El GY-91 es un circuito impreso que integra el BMP280 (sensor de temperatura, presión y altura) y un MPU9250 que es un giroscopio, acelerómetro, brújula, etc.

Solo puedo ver la información que proporciona el MPU9250.

Casualmente he comprobado que poniendo el pin SAO/SDO a 3,3 voltios, aparece la información del BMP260, pero no la del MPU9250.

He probado, con la ayuda de un divisor de tensión de 1KOhmio y 2,2 KOhmio conectado al pin digital 4 y con la salida de tensión llevada a SAO/SDO, de poner alternativamente ese pin en alta y en baja y acceder a toda la información. Pero no funciona.

Tras pasarle el I2CScaner me aparecen tres dispositivos: 0x5A, 0x68 and 0x76. Ocurre que tengo también conectado un CCS811 que es un sensor de CO2 y partítulas volátiles en el aire y que me parece que corresponde con la primera dirección.

Les agradeceré cualquier consejo.

José Vicente Galadí.

Reemplaza todos esos enlaces con imágenes o codiga.
Replace all those links with pictures or code.

En el primer post de cada sección encuentras las Normas del foro, te sugiero quw las leas y adjuntes imágenes y códigos de acuerdo a las mismas.
Y por cierto, en el foro en español solo usamos español.

Cuando tienes problemas asi, empieza de nuevo paso a paso.
Quien es el que te dá problemas el MPU, okay, entonces, busca un ejemplo con el SOLO conectado (desconecta los demas) y obviamente va a funcionar.
Ahi verás que la dirección de funcionamiento es tal,

#define    MPU9250_ADDRESS            0x68

Según esto:

Ahora agregas un dispositivo, pero su agregado será a este código.
Cambia el nombre porque los ejemplos con el IDE estan como protegidos de solo lectura.
Asi que con nuevo nombre agrega los datos del nuevo sensor.
No uses delay().
Verifica si funciona, y asi vas sumando.

Intenta usar
bme.begin(BMP280_ADDRESS_ALT);

Esto hace que el sketch se conecte al BMP280 enla dirección 0x76 en lugar de 0x77

Muchísimas gracias.

Mañana lo intento.

¡¡¡¡¡¡¡Funciona!!!!!!

Muchísimas gracias.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.