BNO080 How to Use Low Power Mode, Library Supported Sensor Types, via I2C

  1. Do the library commands include low power modes for the BNO080 and are they all accessible through I2C? I see there is a wake pin, PS0/WAKE. 2) Is it necessary to drive this high in order to wake the BNO and/or can the BNO wake by pushing a wake command through I2C?

  2. Just to confirm, I can alter the data aquistition rate through the I2C and library provided code to somewhat reduce power consumption?

  3. Also I see that on page 51 of the datasheet there is a “Significant Motion Detector”. Would it be possible for me to run “Significant Motion Detector” then if significant motion is detected, fire up the Gyro Rotation and 9-Axis Sensor Fusion Sensors so they don’t have to be running all the time?

  4. Does the SparkFun I2C library support Significant Motion Detection and is there a time lag between using SMD sensor data and first Gyro Rotation Vector/ 9-Axis Sensor Fusion?

  5. Does Idle Power on page 51 of the datasheet represent the power draw during the sleep/low power mode or what is this?

  6. I don’t see other mention of the “Idle Power” term in the datasheet, so maybe this state is entered when there are no requests for data from the sensors?

8/9) Does it work automatically like this? In the beginning of the code the data rate is set. Does this affect the ability to enter Idle Power?

  1. Can the data rate be actively changed?

  2. Thank you.

Hi themethod01,

This is a lot to unpack so I will try and answer your questions as well as I can below but if you have not done so already, I would highly recommend reading through the [Hookup Guide for the BNO080 Breakout as it will have most of the information you are looking for. Now, on to your questions.

Do the library commands include low power modes for the BNO080 and are they all accessible through I2C? I see there is a wake pin, PS0/WAKE. 2) Is it necessary to drive this high in order to wake the BNO and/or can the BNO wake by pushing a wake command through I2C?

  • The Hookup Guide I linked above will have nearly all of the functions in the library in the "Library Overview" section. The PS0/WAKE pin is pulled to ground by default to set the BNO080 into I2C mode and is not used in I2C communication. It can only be used to wake the IMU in SPI mode. The Hookup Guide I linked above has a table for the Protocol Selection Jumpers and what mode is active when they are pulled HIGH/LOW. There is no specific wake command over I2C as far as I can tell and certainly not one integrated into our library.
  • Just to confirm, I can alter the data acquisition rate through the I2C and library provided code to somewhat reduce power consumption?

  • Yes you absolutely can. [[Example1](https://learn.sparkfun.com/tutorials/qwiic-vr-imu-bno080-hookup-guide#arduino-example-code) shows how to set up the IMU to report data every 50ms but you can adjust that timing to either increase or decrease the time between reports.
  • [/list]

    Also I see that on page 51 of the datasheet there is a “Significant Motion Detector”. Would it be possible for me to run “Significant Motion Detector” then if significant motion is detected, fire up the Gyro Rotation and 9-Axis Sensor Fusion Sensors so they don’t have to be running all the time?

  • A short answer is not with the SparkFun library. Each [[example](https://github.com/sparkfun/SparkFun_BNO080_Arduino_Library/tree/master/examples) goes through the various capabilities of the library.
  • [/list]

    Does the SparkFun I2C library support Significant Motion Detection and is there a time lag between using SMD sensor data and first Gyro Rotation Vector/ 9-Axis Sensor Fusion?

  • Unfortunately, no.
  • Does Idle Power on page 51 of the datasheet represent the power draw during the sleep/low power mode or what is this?

  • I am not sure what that value is referring to, unfortunately. The datasheet does not specify what state the BNO080 is in when listing "Idle Power". Most likely, this is just your idle/no motion current draw of the sensor.
  • Does it work automatically like this? In the beginning of the code the data rate is set. Does this affect the ability to enter Idle Power?

  • Again, I am afraid we do not have a good answer for this as there is not much helpful information about what the "Idle State" is. The manufacturer of the IMU, [[Hillcrest Labs](https://www.hillcrestlabs.com/) would be the best place to contact for further information about the BNO080 not listed in our documentation.
  • [/list]

    Can the data rate be actively changed?

  • When using the BNO080 over UART, you can probably send the correct commands to change the data rate actively but using the SparkFun library, I am not aware of a way to actively change that outside of having your report rate dependent on an external input but coding and implementing that may be more trouble than it is worth.
  • I am sorry we do not have answers to all of your questions but hopefully, this information answers most of them thoroughly and points you in the right direction to find out more about the BNO080.](https://www.hillcrestlabs.com/)](SparkFun_BNO080_Arduino_Library/examples at main · sparkfun/SparkFun_BNO080_Arduino_Library · GitHub)](Qwiic VR IMU (BNO080) Hookup Guide - SparkFun Learn)](Qwiic VR IMU (BNO080) Hookup Guide - SparkFun Learn)