BNO055

Hello, I am a PhD student in Civil Engineering and wants to use BNO055 by Bosch Sensortec for slope movement detection. However, I am not sure whether this sensor is already programmed or needs to be programmed. If already programmed then what are the outputs and sampling frequency? I am interested in Linear acceleration, Gravity acceleration and angular velocity in all three directions. Any one please help…

Hello Hassankhan,

Welcome to DigiKey tech forum community.

Looks like BNO55 has some programmable features yes, for its accelerometer and gyroscope. It also does have a magnetometer as well. So it can measure linear and gravity acceleration and angular velocity it seems.
There is an in depth data sheet you could review for more detail on it located in below link:
BNO055 Datasheet (bosch-sensortec.com)

I recommend you go through that thoroughly to see if it will do what you need it to do in your intended application.

Hope that helps.

1 Like

Hello hassankhan,

May I recommend you start with this product:

You will find that Adafruit provides excellent support. For example, if you explore this page, you will find an introduction to the device as well as links to a GitHub library:

As to your question about programming; maybe. Know that most sensors are configured with general power-on settings. For many applications this is all we need. This may or may not be what you need for your application. Either way, the GitHub libraries should get you started.

Recommend you find an electrical student at your school. At this point, the seniors are old hats at this type of configuration.

It may cost you a pizza.

Best Wishes,

APDahlen

Thank you @Irfan_Koric. I was wondering if it is already programmed and gives the required data at the sensor sampling frequency given in the datasheet. Because the BNO055 shown in Digikey has a box and I think a USB connection. And I also see a video Bosch forum which just connects this sensor through a USB with its software to demonstrate its calibration.

@APDahlen I started with this sensor one year ago with the help of an electrical student but up till now we did not get the desired sampling frequency because the manufacturer claims its frequency is 100Hz but we bearly get 1Hz (1 sample per second). So, now i decided to get BNO055 which has its own microcontroller, already programmed for the given frequency and can be connected to cable or wifi for data logging…because I don’t need to understand its electronics complexities I just want to use it and get some results which then I will interpret in my own field.

That is why I post here to get some help regarding buying this type of BNO055. Still, I am not clear, is it available in ready-to-use form as I mentioned or not?

Part number BNO055 has only ram and non volatile memory.
So it has to be programed each time it is powered down.

It is not recommended for new design, just for personal use.

1 Like

Hello hassankhan,

Let’s work to narrow down the list of possibilities. A slow sensor may be attributed to:

  • Sensor

    • internal physics package
    • internal delays in the sensor’s control circuitry
    • configuration e.g. a tradeoff between precision and speed
    • configuration of internal filters
  • Communication

    • speed of the SPI or I2C interface
  • Microcontroller or data collection system

    • delays in processing data on the associated microcontroller
    • delays is performing other blocking tasks
    • intentional delays

While I understand your plug-and-play sentiments, we need to apply this list to your projects to determine the delay location. This application is exceptional as the Bosch sensor is one of the more complex sensors on the market. Internally, the sensor consists of the physics package connected to a microcontroller with a host of configuration options. The 117-page data sheet doesn’t help our situation.

As a starting point, I recommend we set up a flag so that we can see what is happening. Here the term flag is a microcontroller I/O pin that will be set just before executing a process and cleared immediately after. Using an oscilloscope, we can then determine the time duration of the process and the periodicity of the process.

For example, assuming we are running the Adafruit read_all_data.ino. Part of the code looks like this

void loop(void)
{
  //could add VECTOR_ACCELEROMETER, VECTOR_MAGNETOMETER,VECTOR_GRAVITY...
  sensors_event_t orientationData , angVelocityData , linearAccelData, magnetometerData, accelerometerData, gravityData;
  bno.getEvent(&orientationData, Adafruit_BNO055::VECTOR_EULER);
  bno.getEvent(&angVelocityData, Adafruit_BNO055::VECTOR_GYROSCOPE);
  bno.getEvent(&linearAccelData, Adafruit_BNO055::VECTOR_LINEARACCEL);
  bno.getEvent(&magnetometerData, Adafruit_BNO055::VECTOR_MAGNETOMETER);
  bno.getEvent(&accelerometerData, Adafruit_BNO055::VECTOR_ACCELEROMETER);
  bno.getEvent(&gravityData, Adafruit_BNO055::VECTOR_GRAVITY);

We start be setting up the flag from within the setup( ) function by adding this line

    pinMode(13, OUTPUT);    // sets the digital pin 13 as output

We then add the flag to the line of interest:

void loop(void)
{
  //could add VECTOR_ACCELEROMETER, VECTOR_MAGNETOMETER,VECTOR_GRAVITY...
  sensors_event_t orientationData , angVelocityData , linearAccelData, magnetometerData, accelerometerData, gravityData;
  bno.getEvent(&orientationData, Adafruit_BNO055::VECTOR_EULER);
  bno.getEvent(&angVelocityData, Adafruit_BNO055::VECTOR_GYROSCOPE);


  digitalWrite(13, HIGH);         // sets the digital pin 13 on
  bno.getEvent(&linearAccelData, Adafruit_BNO055::VECTOR_LINEARACCEL);
  digitalWrite(13, LOW);          // sets the digital pin 13 off


  bno.getEvent(&magnetometerData, Adafruit_BNO055::VECTOR_MAGNETOMETER);
  bno.getEvent(&accelerometerData, Adafruit_BNO055::VECTOR_ACCELEROMETER);
  bno.getEvent(&gravityData, Adafruit_BNO055::VECTOR_GRAVITY);

With this example, we can then measure the length of time associated with the LINEARACCEL data fetch.

Please adjust as necessary to fit within your application.

Please let us know if this helps narrow down the list of possibilities. In your reply, please provide additional data such as the sensor configuration and the sensor data fetch routines.

Best Wishes,

APDahlen