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)
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.
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, 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.
Currently popular 9DOF modules with AHRS software include ICM-20948, LSM6DOSX, MiniIMU-9 and others. These will all significantly outperform the BNO-055.
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.
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.
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.
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
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.
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.
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):