GY-BNO055 Issues


Im working on a project that uses a GY-bno055 9-axis accelerometer like the one pictured below:

Im unable to get the BNO055 module to show up on I2C. I've been using the i2c_scanner program and I've proven the setup is working with a BME280. However, when I hook up the BME055 and reset the board the sketch simply returns "No I2C devices found." i've been unable to find any information on this particular board to even begin troubleshooting the problem.

Does anyone here have any experience with this particular board? Any ideas?

Thanks a ton guys!

The BNO055 chip is a 3.3V device. If you are using a 5V Arduino, is the module fully 5V compatible?

Pullup resistors are required on the I2C lines. You could try adding 4.7K.

The BNO055 chip is a 3.3V device. If you are using a 5V Arduino, is the module fully 5V compatible?

Pullup resistors are required on the I2C lines. You could try adding 4.7K.

Yes the whole system is running at 3.3V. Pullups where a good idea, But still no luck. I tried a few different values from 10kohm down to 2.2k as recommended by adafruit. The BNO is still invisible.


Wow! Okay guys I have the GY-bno055 working as expected. These particular breakout modules are extremely poorly documented so I hope to do a full run down later this week. I can't imagine how many of these things have been thrown out because they didn't work.

In the meantime here's how i got the GY-bno055 running over i2c:

On the breakout there are two unmarked jumper pads

Some manufactures are shipping these modules with the jumpers open, Others ship with the jumpers closed. To configure the module for i2c communication both jumpers should be closed.

That is certainly useful information, and I'm glad you got it working.

But don't expect a lot from the BNO055, as described here:

when purchased this module indicated 3-5v power supply - does the i2c really not work with 5v?

The data sheet indicates the BNO055's absolute highest input voltage is 3.6v.

The board does appear to have a small voltage regular on board. So, although I haven't looked at the boards schematic you're probably safe supplying 5v to the board. (although, no promises. You'll have to take a look at the board you got and do some experiments.)

However. That voltage regulator is not going to regulate the I2C voltage and you run the risk of killing your bno055 if you feed it 5v I2C logic. I'd recommended using a bi-directional logic level shifter. They're cheap and extremely abundant on Amazon, eBay and the like.

Yes, i have been using a logic level shifter from pololu to serve 3.3v and sda and scl via the logic level shifter.

But somehow the device cannot be found. I'm using Arduino Leonardo (actually a pololu a*star board with a 32u4 running at 5v).

Which board and logic level shifter have you been using? I have the gut feeling the BNO055 has issues with i2c on raspberry and other devices ... I will try a Mega next or an nodemcu which runs at 3.3v.

Hum. This can be caused by one of a few things. If your bno055 is not configured for I2C by closing those two solder jumpers it will not appear on the I2C bus. If ones closed but the other is not it will show up on address 0x54 or something like that and not behave as expected.

Another option is that your logic shifting circuit is not bidirectional or requires pull-up resistors on the LV side.

I Would recommend swapping over to the NodeMCU to isolate the problem. I have been using a straight esp32 module in my project and it worked as soon as I solved the jumper puzzle. My NodeMCU works perfectly as well.

If your NodeMCU works you know the problem is probably your logic shifting circuit. If it does not work with the ESP there's probably a configuration issue or your bno055 has been damaged.

great tips, i brought nodemcus, arduino uno and mega from work to track this down.

did you connect the board to 5v (usb vin on the nodemcu)? Or to 3.3v? Some people in other threads mentioned that 3.3v minus a 0.2 voltage drop will result in only 3.1v for the bno055 which might be too little.

will result in only 3.1v for the bno055 which might be too little.

Very unlikely, since the manufacturer states that the operating voltage range is 2.4-3.6V.

I can confirm. 3v3 from the node mcu to the BNO055 is perfectly acceptable. Rock solid performance for me. In line with or better than the above linked post about the BNO055's performance. You're probably not going to be guiding ICBMs with the thing but if you're looking for general orientation data it's been great.

Ok, I got it to work nicely with the following setup:

  1. Mac with Mojave
  2. Arduino IDE 1.8.7 (fresh install)
  3. Added boards manager for esp8266
  4. Added board definitions for esp8266
  5. Picked NodeMCU 1.0 from the boards list
  6. Downloaded adafruit for bno055 library
  7. Downloaded adafruit unified sensor library
  8. Opened the sensorapi example
  9. Wired up GY-BNO055 to GND, 3.3V (to VIN on the GY-BNO055 board), SDA to D2 on NodeMCU, SCL to D1
  10. Change Port to the port where NodeMCU showed up /dev/cu.SLAB_USBtoUART (I had the driver for this board for the mac installed earlier)
  11. Compile and Upload

Voila - it worked after changing this call: Adafruit_BNO055 bno = Adafruit_BNO055(55,0x29); to refer to the 0x29 (i used i2cscanner code first to find this).

Thanks for all your help - would be great to get this working with arduino leonardo too.

After some twisting i got calibration of 3 1 3 for gyro, accelerometer and magnetometer and i saw the values for pitch roll and absolute heading relative to magentic earth field right away. It's great to get this orientation out of the box although i understand it works only for small amounts of pitch and roll.

Good to hear! And to my understanding the pitch/roll limitation is caused by eular angles. If you stick to pure quaternions you should have good performance across most orientations.

I'm having quite some issues with this module as well.

  1. This is only a gyroscope, correct? Because everywhere I look it also says that it's an accelerometer, gyroscope and geomagnetic sensor.

  2. Which library do you use with this sensor? I've tried the Adafruit BNO055 library. (Even with that one I'm not sure how I'd even read out things like the acceleration or magnetic field if the sensor has these capabilities)

  3. Is there anything special to pay attention to when to when wiring? I currently only have Vin, GND, SCL and SDA connected which should be enough, right? But I can't get the sensor to work.

I really hope I can some quick answers here.

Ok, I got it to work nicely with the following setup:

Well, properly reading through this actually solved problems number 1 and 3 and I think I'll be able to figure out the answer to problem 2 from here.

Sorry for the inconvenience!

No trouble at all! I've been working with this sensor quite a bit since my initial post. If you need any help getting it going don't hesitate to let me know!

A programmer here, completely ignorant about hardware :frowning:

I bought the same board and it came without any documentation. Is there a link online, not about the chip but the board?

Is it possible to connect it directly to an Arduino using 3.3V for VIN and don't use any level shift?
Do I need to add +3.3V pullups (4.7K) to I2C lines?

Sorry for the silly questions, but the theory behind is quite above my competence...


I'm having bno055 with stm32 bluepill I am tried lot of times still it is not working please anybody help me to find out this issue