🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    BMM150 doesn't work with M5AtomS3 and M5CoreS3

    Modules
    2
    5
    483
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      carpenderspark
      last edited by

      I bought this one.

      6-DoF IMU Pro Mini Unit (BMI270, BMM150, BMP280)
      https://shop.m5stack.com/products/6-dof-imu-pro-mini-unit-bmi270-bmm150-bmp280
      Six-axis Attitude Sensor (BMI270) I2C address:0x68(default)
      Three-axis Geomagnetic Sensor (BMM150) I2C Address: 0x10
      Atmospheric Pressure Sensor (BMP280) I2C Address: 0x76

      I run I2C device probe program. The result is below.
      I get same result on M5AtomS3 and M5CoreS3.
      I use Visual Studio Code + PlatformIO.

      I2C Scan SDA:2 SCL:1
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      .. .. .. .. .. .. .. ..
      68 .. .. .. .. .. .. ..
      .. .. .. .. .. .. 76 ..
      .. .. .. .. .. .. .. ..
      

      I also run on RaspberryPi. The result is below.

      raspi@raspberrypi:~ $ i2cdetect -y 1
           0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
      00:                         -- -- -- -- -- -- -- --
      10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
      70: -- -- -- -- -- -- 76 --
      raspi@raspberrypi:~ $
      

      Is this normal status ?

      device probe program

        auto cfg = M5.config();
        M5.begin(cfg);
        Wire.begin(M5.Ex_I2C.getSDA(), M5.Ex_I2C.getSCL(), 400000);
        Serial.printf("I2C Scan SDA:%d SCL:%d", M5.Ex_I2C.getSDA(), M5.Ex_I2C.getSCL());
        Serial.println();
        for (byte address = 0; address <= 127; address++) {
          Wire.beginTransmission(address);
          byte error = Wire.endTransmission();
          if (error == 0) {
            Serial.printf("%02X ", address);
          } else {
            Serial.print(".. ");
            if (address % 8 == 7) {
              Serial.println();
            }
          }
          delay(1);
        }
      

      Thank you.

      felmueF 1 Reply Last reply Reply Quote 0
      • felmueF
        felmue @carpenderspark
        last edited by

        Hello @carpenderspark

        yes, that is normal. The reason is that the BMM150 is not directly connected to the I2C bus (e.g. SDA, SCL) but is behind BMI270 (e.g. BMM_SDA, BMM SCL). See schematic here. That is the reason it doesn't show up in the I2C scan.

        You can access it via BMI270 functions. See here.

        Thanks
        Felix

        GPIO translation table M5Stack / M5Core2
        Information about various M5Stack products.
        Code examples

        C 1 Reply Last reply Reply Quote 0
        • C
          carpenderspark @felmue
          last edited by

          @felmue Wow, thank you. I saw schematic, I understand. I try. I will report the result.
          Thanks.

          C 1 Reply Last reply Reply Quote 0
          • C
            carpenderspark @carpenderspark
            last edited by

            Umm, it doesn't seem good combination <M5Unified> and <M5Unit-IMU-Pro-Mini>.

            I got error message.

            Dependency Graph
            |-- M5Unified @ 0.1.16
            |-- VL53L1X @ 1.3.1+sha.8f21d60
            |-- M5Unit-ENV @ 1.0.1
            |-- M5Unit-IMU-Pro-Mini @ 1.0.2+sha.002b74a
            |-- WiFi @ 2.0.0
            Building in release mode
            Compiling .pio\build\m5stack-atoms3\src\main.cpp.o
            In file included from .pio/libdeps/m5stack-atoms3/M5Unit-IMU-Pro-Mini/src/M5_IMU_PRO.h:7,
                             from src/main.cpp:8:
            .pio/libdeps/m5stack-atoms3/M5Unit-IMU-Pro-Mini/src/BMI270.h:37:8: error: redefinition of 'struct BMI270::dev_info'
             struct dev_info {
                    ^~~~~~~~
            In file included from src/main.cpp:7:
            .pio/libdeps/m5stack-atoms3/M5Unit-IMU-Pro-Mini/src/BMI270.h:37:8: note: previous definition of 'struct BMI270::dev_info'
             struct dev_info {
                    ^~~~~~~~
            In file included from .pio/libdeps/m5stack-atoms3/M5Unit-IMU-Pro-Mini/src/M5_IMU_PRO.h:7,
                             from src/main.cpp:8:
            .pio/libdeps/m5stack-atoms3/M5Unit-IMU-Pro-Mini/src/BMI270.h:42:7: error: redefinition of 'class BMI270::BMI270'
             class BMI270 {
                   ^~~~~~
            In file included from src/main.cpp:7:
            .pio/libdeps/m5stack-atoms3/M5Unit-IMU-Pro-Mini/src/BMI270.h:42:7: note: previous definition of 'class BMI270::BMI270'
             class BMI270 {
                   ^~~~~~
            *** [.pio\build\m5stack-atoms3\src\main.cpp.o] Error 1
            

            M5Unified\src\utility\imu\BMI270_Class.hpp(11): class BMI270_Class : public IMU_Base
            M5Unit-IMU-Pro-Mini\src\BMI270.h(42): class BMI270 {

            I use this environment on PlatformIO.

            [env:m5stack-atoms3]
            platform = espressif32
            board = m5stack-atoms3
            framework = arduino
            lib_deps = 
            	m5stack/M5Unified@^0.1.16
            	https://github.com/pololu/vl53l1x-arduino
            	m5stack/M5Unit-ENV@^1.0.1
            	https://github.com/m5stack/M5Unit-IMU-Pro-Mini
            

            It is better to change M5Unified to another baseic library, isn't it?

            C 1 Reply Last reply Reply Quote 0
            • C
              carpenderspark @carpenderspark
              last edited by

              AtomS3 has MPU6886. umm
              https://docs.m5stack.com/en/core/AtomS3
              Built-in 3-axis gyroscope and 3-axis accelerometer (MPU6886)

              1 Reply Last reply Reply Quote 0
              • First post
                Last post