I thought I would save some money by buying a BNO055 9-axis IMU from Amazon as it was only $22.50 and I already pay for Prime (the delivery costs add up!). However, in haste and seeing the reduced price over Adafruit's BNO055 IMU breakout board, I inadvertently bought a knock off breakout board (GY-BNO055). You can tell the difference by the board size. The GY- or similar other knockoffs have a much smaller footprint and pins on only one side (limiting SPI options if one wanted to use them).
Anyway, I could not get this board to work using I2C. But after hours of trying various suggestions I found on the web, I decided to just try changing the peripheral's address from the default 0x28 to 0x29. I also commented out the ID check which causes the program to give up in an endless while(1) loop. This worked! The data looks great and steady. I tried power down, resetting a few time, but it still works. The address 0x29 is typically used when more than one peripheral is connected to the I2C bus.
I still wouldn't purchase another knockoff after this experience. I see that the Oak-D depth camera uses the BNO085 and works well with it. The BNO085 and BNO086 are made by Hillcrest, while the BNO055 is made by Bosch. The two companies have an agreement to use the same hardware but use different firmware. All of these BNO- chips violate the I2C standard and thus don't work with some microcontrollers.
I will be trying out the BNO085 next since it costs around $20s. That is getting the real deal for the price of a BNO055 knockoff!
Now that I have put this issue to rest, particularly since the new IMU sensor is working with the RPi Pico using microPython via Thonny. That was one of the goals of updating the Edu-AMR bot. I'm thinking of giving the new bot a new name :) Any thoughts? Maybe after you see it put together a name will be more easily derived.
Comments