🛠 Lire l'accélération avec l'IMU MPU6886

M5StickC Plus2 (M5Stack) — kit vestible "stick" con ESP32-PICO-V3-02 (SKU K016-P2) · debutant · Schéma : IMG-m5stack-stick-c-plus-2-debutant-3-m5stick-c2-imu-acceleration.svg — M5StickC Plus2 inclinée avec vecteurs X, Y, Z d'accélération et bus I2C interne (SDA=G21, SCL=G22) reliant l'IMU MPU6886 et l'horloge RTC BM8563.

Objetivos

Leer los 3 ejes de aceleración del MPU6886 (IMU de 6 ejes: acelerómetro + giroscopio) conectado al bus I2C interno SDA=G21 / SCL=G22, el mismo que el reloj de tiempo real BM8563 (direcciones I2C clásicas: 0x68 para el MPU6886, 0x51 para el BM8563). Mostrar ax, ay, az en g en la pantalla y en el monitor serie.

Material

Código completo

// IMU MPU6886 sur I2C interne SDA=G21 SCL=G22 (adresse 0x68)
#include <M5Unified.h>

void setup {
  auto cfg = M5.config;
  M5.begin(cfg);
  Serial.begin(115200);
  M5.Display.setRotation(1);
  M5.Display.setTextSize(2);
  M5.Display.setTextColor(TFT_CYAN, TFT_BLACK);
  if (!M5.Imu.isEnabled) {
    M5.Display.println("IMU absente!");   // MPU6886 introuvable sur 0x68
  }
}

void loop {
  M5.update;
  float ax = 0, ay = 0, az = 0;
  M5.Imu.getAccel(&ax, &ay, &az);        // en g (1 g = 9.81 m/s2)
  M5.Display.setCursor(0, 10);
  M5.Display.printf("ax %+5.2f g\n", ax);
  M5.Display.printf("ay %+5.2f g\n", ay);
  M5.Display.printf("az %+5.2f g\n", az);
  Serial.printf("%f %f %f\n", ax, ay, az);
  vTaskDelay(100 / portTICK_PERIOD_MS);
}

Verificación esperada

Colocado en plano, la pantalla muestra aproximadamente az = +1.00 g y ax/ay cercanos a 0; inclinado sobre su borde, el eje correspondiente pasa a ±1 g. El monitor serie imprime 10 líneas por segundo. Un pequeño escáner I2C (Wire.begin(21, 22)) encuentra 0x68 (IMU) y 0x51 (RTC).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales