Hi, I need make decision what sensor use in my device. I’ve made choice for BNO086 uart rvc mode in this moment. Why ? I need simple solution as it is possible.
I need get: pitch, roll and yaw data, x,y and z accelerometer data. 100Hz in enough to refresh data - rvc mode give it. I don’t want use any other interface for example spi or i2c, I’ll not connect to BNO086 any external device with I2C. I want to use a few mcu’s line as it is possbile.
My device has: GSM/GPS module, mcu and flash memory etc… Device has 2 pcb’s.
Upper pcb - top side: GSM/GPS module, anntenas. Upper pcb - bottom side: slot sim card, led’s, voltage regulator.
Bottom pcb - top side: voltages regulator, resistors etc., bootm pcb - bottom side: mcu, flash memory, voltage regulators and I want install BNO086 in this place.
I have a questions, because datasheet isn’t clear for me in rvc mode:
What BNO086 lines should be connected to mcu ?
Do I need any calibation after connect power on to BNO086 ? If yes, how I should to do that in rvc mode ?
My device will works with sleep mode - mcu connect power on to other parts for example 1 minutes, after that any parts are disconnected from power supply for 10-60 minutes, after that mcu’ll connect power supply to parts. Process repeats. If calibration from 2 point is necessary, do I need do that every time when mcu disconnect power supply from BNO086 ?
Have You any suggestions about install on pcb ? I want do that under bottom pcb.
What is max power consumption in rvc mode ?
What about other conditions if we talk about other parts on device ? Distance from BNO086, material ?
Do I really need use external oscilator to use uart rvc mode ?
Thanks for any help and have a nice day for everyone
For UART RVC mode, you need to connect these lines:
VDD (power supply)
GND (ground)
UART_RXD to your MCU’s TX
UART_TXD to your MCU’s RX
P0/BOOTN (to set up RVC mode at boot)
RESETN (optional but recommended for controlling reset)
2. Do I need any calibration after power on?
Yes, the BNO086 requires calibration, even in RVC mode. The sensor has dynamic calibration capability, but initial calibration helps improve accuracy. In RVC mode, the sensor transmits calibration status along with sensor data. You’ll need to:
Monitor the calibration status bytes in the RVC packets
For initial calibration, keep the device stationary for a few seconds, then perform some simple rotations
3. Regarding sleep mode and recalibration:
When power is completely removed from the BNO086, you will need to recalibrate. However, the BNO086 stores calibration data in non-volatile memory, so if you:
Use the SAVE_DCD command before powering down
Then RESTORE_DCD after power-up You can minimize recalibration time.
For your duty cycle (1min on, 10-60min off), I recommend implementing this calibration saving/restoration process to maintain accuracy.
4. Installation suggestions:
Mounting under the bottom PCB is fine if:
You ensure it’s away from components that generate magnetic fields
You rigidly mount it to prevent vibrations that could affect readings
You maintain proper thermal management
5. Power consumption in RVC mode:
The BNO086 in RVC mode typically consumes approximately 10-15mA. This may vary slightly based on your specific configuration.
6. Considerations regarding other parts:
Keep the BNO086 away from magnetic components (speakers, transformers)
Minimum 5-10mm distance from high-current traces
PCB material isn’t critical, but ensure rigid mounting
Shield from EMI sources if possible (especially from the GSM module)
7. External oscillator requirement:
No, you don’t strictly need an external oscillator for UART RVC mode. The BNO086 has an internal oscillator that’s sufficient for most RVC mode operation. However, if you need extremely precise timing, an external oscillator could improve performance
Claude
Thanks for your follow-up questions! Let me provide a clearer step-by-step guide for working with the BNO086 in UART RVC mode.
Initial Power-On and Calibration
Place device with BNO086 on a flat, stable surface
MCU turns on power to BNO086
MCU resets BNO086 by setting NRST pin to “0” for >10ns, then wait >94ms (t1+t2)
Monitoring Calibration Status in RVC Mode
When in RVC mode, the BNO086 automatically sends data packets. Each packet includes calibration status information that looks like this:
Bytes 21-24 of the RVC packet contain the calibration status
A value of 3 for each sensor type indicates full calibration
To monitor this:
Parse the incoming UART data from BNO086
Check bytes 21-24 for calibration values
When all relevant calibration values reach 3, your sensor is fully calibrated
Performing Initial Calibration
Keep the device stationary for ~5-10 seconds (helps calibrate accelerometer)
Rotate the device slowly through various orientations (helps calibrate gyroscope and magnetometer)
Try to cover all six faces (top, bottom, left, right, front, back)
Move through at least 90° in each axis
Saving Calibration Data
To save calibration data, you need to send the Save DCD command:
$ISDCD,0*52
The BNO086 should respond with:
$ISDCD,1*53
You don’t need to send an Enter/Return character after commands - just send the exact string including the asterisk and checksum.
Steps for Normal Use After Calibration
MCU turns on power to BNO086
MCU resets BNO086 (NRST pin to “0” for >10ns, wait >94ms)
To restore calibration data, send:
$IRDCD,0*42
The BNO086 should respond with:
$IRDCD,1*43
The BNO086 will now start sending RVC packets with your calibrated data
When done, you can just turn off power - calibration data is already saved
Keep in mind that for best accuracy, you might want to recalibrate periodically, especially if the device has been subjected to strong magnetic fields or significant temperature changes.
Does this procedure make sense for your implementation? Would you like more details on any specific part of this process?
Could You tell me where can I download file with all UART-RVC commands ? There is no information about it in datasheet, except information about data with x,y,z, pitch, roll, yaw etc. information
Can I send commands to BNO between data which is send with 100ms period? Could there be a problem with that ? If yes, when I can send command ?
What is the important difference between BNO086 and BNO086 ? If I don’t need 14-bit resolution maybe BNO085 is sufficient for me ? I know that there is difference in calibration option, could You tell me that should be important for me ?
Device with BNO08X will be install on some object one time and after that device will not be available to us (for service). So I can calibrate device one time, I can’t make any correction calibration in the future.
If differences could has important for me – explain that step by step as You can :). Thanks for all help and have a nice day