Is my BNO055 toast?

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
Robkw
 
Posts: 3
Joined: Thu Jan 20, 2022 12:24 pm

Is my BNO055 toast?

Post by Robkw »

I am trying to design an audio-compass for a local charity that teaches viusally impaired people to sail yachts.
I am currently trying to build this with an ESP32 devkit and an Adafruit BNO055.

I did have this working reasonably well, but not perfectly. I was trying to use the Euler angle output (in fusion mode) to extract the compass heading but found that the heading (yaw) was affected by moderate variations in roll. Not ideal on a yacht.

My problem now is that suddenly I am struggling to reliably extract any sensible readings from the sensors.

It takes an age to self-calibrate and even when calibrated, I can only get sensible XYZ values when the module is tilted at specific angles. I can read other registers (calibration, system status etc.) Without any problem. It looks as if the module is maybe resetting to config mode unless it is at the specific angle. Most of the time I get just 0x0000 values for XYZ but then if I tilt the sensor roughy 20 degrees and hold it steady, it gives accurate values for XYZ.

I can read the status and self-test registers OK and they provide sensible values (error register is 0x00).

I know that this maybe sounds like aa dry joint or some such but I have checked all this very thoroughly.

I am using the Adafruit BNO055 library examples.

Any thoughts? Is my BNO055 bricked? This setup was *nearly* working. Tearing my hair out.

Thanks in advance.

User avatar
gammaburst
 
Posts: 1015
Joined: Thu Dec 31, 2015 12:06 pm

Re: Is my BNO055 toast?

Post by gammaburst »

Sounds like you may have multiple problems. Not bricked though, that would be totally dead.

I have seen I2C communication trouble between a BNO055 and ESP32. Try this fix: connect a simple resistor, roughly 2K to 3K ohms, from SDA to 3.3V. Does that help?

If you don't tilt the sensor (pitch and roll) much more than about 20 degrees, the BNO055 Euler angle output should be reasonably accurate. If you tilt it significantly more than 20 degrees (unpleasant sailing) then the BNO055's Euler math bug begins to distort the output angles. If that affects you, the solution is to use its quaternion output instead.

Other folks here will probably have suggestions regarding calibration, avoiding magnetic fields, and sometimes significant problems with the BNO055 in a moving vehicle. I don't use the BNO's calibration feature because its fusion algorithm occasionally auto-calibrates itself, sometimes does a poor job, and there's no way to turn it off.

User avatar
Robkw
 
Posts: 3
Joined: Thu Jan 20, 2022 12:24 pm

Re: Is my BNO055 toast?

Post by Robkw »

Many thanks for the response, I will try adding the resistor and get back. Last night I tried using the Bosch BNO055 library "Euler Streaming" example instead of the Adafruit library and this seems to work, but I would still like to understand why the Adafruit library is not working. Doesnt make much sense. I have also tried running the module on both 3v3 and 5v but this did not impact the behaviour.

User avatar
Robkw
 
Posts: 3
Joined: Thu Jan 20, 2022 12:24 pm

Re: Is my BNO055 toast?

Post by Robkw »

Bingo! - I have now added a 2K pull-up resistor to the I2C SDA line and the Adafruit BNO055 "restore settings" example is working beautifully. Even before the system calibration is complete.

I am finding the Euler output is good enough for my purposes. The Yaw (=compass heading) value remains with +/- 2 degrees with roll angles up to about 40 degrees. Very few helmsmen can steer that accurately, and if you are heeled over at 40 deg in a yacht then you probably have more pressing problems to deal with (like keeping the sea on the outside and the crew on the inside).

Would there be any value in putting the BNO055 into "Compass" mode?

Thanks again.

Bob

User avatar
gammaburst
 
Posts: 1015
Joined: Thu Dec 31, 2015 12:06 pm

Re: Is my BNO055 toast?

Post by gammaburst »

Yay! Always nice to hear about a project working better.

If you're curious, here's a brief summary of why the resistor helps:
viewtopic.php?f=60&t=182881&start=15#p889629

II don't know if Compass mode has any advantages over the default NDOF mode. Compass mode doesn't use the gyro, so it may consume less power. Maybe someone else can answer.

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”