6軸IMUユニット MPU6886のデータシートP31/59では、レジスタ0x75はWHO_AM_Iとなっていて、P49/59には既定値が0x19とあり、また9軸のMPU-9250 Register Map p44/55では、WHO_AM_Iレジスタの既定値が0x71となっていることから、次のIMUユニットの型式を調べるコードは間違っていないようだ。

IMUユニットの型式

main.cpp
#include <M5Core2.h>
#include <Wire.h>
void setup() {
    M5.begin();
    M5.Lcd.setCursor(20, 40);
    M5.Lcd.setTextSize(2);
    String f16 = "genshin-regular-16pt";
    M5.Lcd.loadFont(f16,SD);
    Wire1.begin();
    Wire1.beginTransmission(MPU6886_ADDRESS); //0x68
    Wire1.write(MPU6886_WHOAMI); //0x75
    Wire1.endTransmission(false);
    Wire1.requestFrom(MPU6886_ADDRESS, 1);
    unsigned char whoami = Wire1.read();
    if (whoami == 0x71) {
        M5.Lcd.print("MPU9250 が入っています");
    } else if (whoami == 0x19) {
        M5.Lcd.print("MPU6886 が入っています");
    } else {
        M5.Lcd.print("不明なデバイスです");
    }
    M5.Lcd.printf(" 戻り値:(%#x)", whoami);
 }

void loop() {
}

M5Stack機種別のモーションセンサ搭載状況

出典:トホホな疑問(31) M5Stack、IMUの種類と取り扱いに戸惑う

 機 種  加速度/ジャイロ   磁 気  
Basic
Gray MPU9250 AK8963
Fire MPU6886 BMM150
Fire SH200Q BMM150
Fire MPU6050 BMM150
Core2 MPU6886