Go Down

Topic: GY-BNO055 Issues (Read 3729 times) previous topic - next topic

VitallyRaccoon

Hello,

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!

jremington

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.

VitallyRaccoon

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.

VitallyRaccoon

Success!!!!

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.

jremington

#4
Oct 20, 2018, 07:15 pm Last Edit: Oct 20, 2018, 07:15 pm by jremington
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: https://forums.adafruit.com/viewtopic.php?f=19&t=112315

marcusbehrens

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

VitallyRaccoon

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.

marcusbehrens

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.

VitallyRaccoon

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.




marcusbehrens

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.

jremington

Quote
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.

VitallyRaccoon

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.

marcusbehrens

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.

VitallyRaccoon

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.

Lithimlin

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.

Go Up