Doubts about GY-BNO005

Hello,

I have a an old project that I developed with an Arduino 9 Axes Moition shield. I'm continuing with the project but this time around I will likely be limited to using the GY-BNO-055 with Arduino Unos or Nanos.

I've found a few links with people having difficulty with this board and one in particular on this forum by @VitallyRaccoon involved the disconnect of a jumper on the board itself:

I know nothing about hardware and I'm not a very good programmer so I have doubts about what code and libraries I'll need to upload to the Arduino and whether or not the GY-BNO005 needs to be run in UART or I2C mode. Can someone please explain this to me and put me on the right track in regards the libraries?

(for the motion shield I used the Bosch bno055.c and headers and NAxisMotion.c and headers - i think this setup involves I2C)

In this country the boards are quite expensive with all the correct tax receipts so I've not yet bought one. I may bring one in to test from overseas. I found a very cheap source but have no idea if it's not a scam as it's a fraction of the cost of the boards on AliExpress: https://www.tuxpowe.com/gaohou-gybno055-attitude-sensor-9dof-9axis-gyroscope-module-p-64556.html

Anyone know this website?

Thanks a lot!

I'm only aware of GY-BNO055 boards from China. Some of these boards are simply fakes (no BNO055 chip from Bosch on them). You might have to check that. The other problem is that you shouldn't connect the board directly to a 5V Arduino (as the UNO or Nano is) because that might put more than the 3.6V to the signal pins that the datasheet lists as the maximum value.

I miss the wiring diagram of your setup. Did you activate I2C (PS1 pulled low)? That may be one of the solder bridges on the board, I didn't find schematics (I never buy a board without schematics).

If you have enough time to order a replacement part you can order from Ali, otherwise I would recommend to order from a serious supplier.

It surely is. Don't waste your time or money.

The BNO055 has never worked very well due to poor internal firmware, which has not been updated. You are much better off with a modern 9DOF sensor and one of the AHRS libraries. It is more work, because you need to calibrate the gyro and the magnetometer, but in the end the performance will be much higher.

Hi,
Can you please post some images of your module?

Thanks. Tom... :smiley: :+1: :coffee: :australia:

Hi, as I said, I'm not a very good programmer and know nothing about hardware. Doesn't the Uno have a 3.3V supply? So this can't be used? If I can't use an Uno or Nano, what can I use? Or is there a regulator circuit that can be applied using the 5V supply?

Up until now I have only used the Arduino motion shield hat, so no wiring involved.

Thanks

Are you able to inform me of particular board/chip? Thanks

Yes, I've purchased one now from another supplier. It will take some time to arrive.

Currently popular 9DOF modules with AHRS software include ICM-20948, LSM6DOSX, MiniIMU-9 and others. These will all significantly outperform the BNO-055.

Yes, it has but the supply isn't the problem but the signal voltage level. If you have 5V on the I2C bus the BNO055 will be fried.

You can but you should use a level converter or a breakout board for the BNO055 that includes a level converter.

It looks like the GY_BNO055 has a regulator on-board but as I wrote above, that's not the problem.

1 Like

Thanks @pylon, that's very helpful. So I need a 5 to 3.3V bidirectional logic level converter like the this, correct?

To confirm I understand the wiring: For the central part of the board, I would connect the 5V output from the Arduino (rather than the 3.3V) and the ground to the connectors marked HV and GND, then from the other side of the board, connect the LV and GND to the voltage and ground terminals on to the sensor. The SCL and SDA pins of the Arduino connect to two of the high volt channels - and then on to the sensor via the corresponding low volt terminals.

All the best.

I haven't seen the schematics but it looks OK.

Yes, but you also need to connect the 3.3V of the sensor board to the LV pin on the level converter. If you don't have 3.3V on the sensor board you may use the corresponding voltage from the Arduino board but that's not recommended as the I2C signals are probably pulled high on the sensor board.

Thanks, yes, I think that's what I meant. I've edited my message above to make it clearer.

That's make it much harder for a reader to follow the thread. You shouldn't edit posts other than fixing typos. Everything else should go into a new post.

We haven't seen a picture of your sensor board yet but the ones I find on the Internet doesn't have a pin to get the sensor's VCC pin. The only one available is VIN which must have a voltage at least 0.7V higher than that (more than 4V). So if your board doesn't have a 3V3 pin or something similar you probably have to use the 3.3V from the Arduino.

This is a photo of the unit that I ordered:

The only specifications are in Portuguese:
Tipo de item: Módulo sensor de giroscópio
Material: Plástico
Módulo Modelo: GY-BNO055
Use Chip: para BNO-055
Fonte de alimentação: 3-5V (baixa tensão interna de estabilização de queda)
Método de comunicação: padrão iic / protocolo de comunicação serial

So power supply is given as 3-5V with low internal voltage power drop stabilization, i think.
communication method: standard iic / serial protocol

I don't know if this will help...

As I wrote, provide 5V on VIN, use the 3.3V from the Arduino for the LV on the level converter. That's not how it should be but your hardware selection doesn't give you another option. Let's hope the two voltage regulators do a good job and produce an almost equal 3.3V level.

Thanks, please, have i understood?:

Arduino 5V ----> GY-BNO055 VIN
Arduino GND ----> Converter GND --> Converter GND --> GY-BNO055 GND
Arduino SCL ----> Converter HV1 ----> Converter LV1 ---> GY-BNO055 SCL
Arduino SDA ----> Converter HV2 ----> Converter LV2 ---> GY-BNO055 SDA

The connections Arduino 3V3 --> Converter LV and Arduino 5V --> Converter HV are missing.

Sorry if I'm confused. In summary:

Arduino 5V ----> GY-BNO055 VIN
Arduino 5V --> Converter HV
Arduino 3.3V --> Converter LV
Arduino GND ----> Converter GND --> Converter GND --> GY-BNO055 GND
Arduino SCL ----> Converter HV1 ----> Converter LV1 ---> GY-BNO055 SCL
Arduino SDA ----> Converter HV2 ----> Converter LV2 ---> GY-BNO055 SDA

Yes, that probably works although it isn't ideal as the 3.3V from the Arduino may be different than what the regulator on the GY-BNO055 produces. You might want to measure that before you actually connect like that.

1 Like

After all these months, for various reasons, it has taken me until now to receive a GY-BNO055. And I got it working with the help here and from this other excellent thread: GY-BNO055 Issues - #13 by marcusbehrens

My board came with the two jumper contacts, mentioned in the thread, unsoldered, and needed to be closed. Using the "i2c_scanner" Arduino code, that comes I believe with the Adafruit Unified Sensor library, I found the i2c address is 0x29 and used the following to initialise the sensor in my code:

NAxisMotion mySensor;
mySensor.initSensor(0x29);

The logic level converters I got are different to the one above. They're this following type and have two bi-directional channels (the "TX" ones):

image

I used the following wiring with a Nano:

Nano-3.3V --> logic-LV
Nano-A4(SDA) --> logic-TXO (1st channel)
Nano-A5 (SCL) --> logic-TXO) (2nd channel)
Nano-5V --> logic-HV
Nano-GND --> logic-GND (HV side)
Nano-GND --> logic-GND (LV side)
Nano-GND --> GY-BNO055-GND
logic-TXI (1st channel) --> GY-BNO055-SDA
logic-LV --> GY-BNO055-VIN
logic-TXI (2nd channel) --> GY-BNO055-SCL

Aliexpress has the GY-BNO055 for about US$12, presently, so at that price it's worth the extra fiddling around.

All the best,