INFORMACIÓN
El GY-BNO085 Sensor IMU de 9DOF integra acelerómetro, giroscopio y magnetómetro en un solo módulo, junto con un potente procesador interno de fusión de sensores. Este sensor no entrega solo datos crudos, sino que procesa internamente la información para calcular orientación absoluta, ángulos de rotación (yaw, pitch y roll), vectores de rotación y aceleraciones compensadas por gravedad. El GY-BNO085 puede comunicarse mediante I²C, SPI, UART o UART-RVC, lo que lo hace muy versátil de usar.
El sensor GY-BNO085 se utiliza ampliamente en aplicaciones donde es necesario conocer la orientación y el movimiento en el espacio de forma precisa y estable. Entre sus principales usos se encuentran la robótica móvil, para control de balance y navegación; drones y vehículos autónomos, para estabilización y estimación de actitud; sistemas de realidad virtual y aumentada. Gracias a que soporta I²C, SPI, UART y UART-RVC, es compatible con una gran variedad de tarjetas de desarrollo, incluyendo Arduino Uno, Mega, Nano y Due, ESP32, ESP8266, Raspberry Pi, Teensy, STM32 y otras placas basadas en microcontroladores de 3.3 V.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Sensor principal: BNO085.
- Tipo: IMU 9DOF (9 grados de libertad)
- Acelerómetro: 3 ejes ±2 g / ±4 g / ±8 g / ±16 g.
- Giroscopio: 3 ejes ±125°/s a ±2000°/s.
- Magnetómetro: 3 ejes integrados.
- Voltajes
- De Alimentación: 3.3 VDC.
- Lógico: 3.3 VDC.
- Consumo Típico: ~2.7 mA
- Resolución: 16 bits.
- Frecuencia de salida: Hasta 1000 Hz.
- Fusión de sensores: Integrada (hardware).
- Latencia: Ultrabaja.
- CPU interna: SH-2 Sensor Hub.
- Interfaces de Comunicación:
- I²C (direcciones: 0x4A / 0x4B, predeterminada 0x4B).
- SPI.
- UART.
- UART-RVC (modo vector rotación).
- Algoritmos: Orientación, quaternion, Euler, VR, AR.
- Dimensiones: 21 mm x 11 mm x 2 mm.
- Peso: 2.04 g.
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Descripción de Pines.
- VCC: Este es el pin de alimentación de 3.3 VDC, siendo también el nivel lógico del sensor.
- GND: Tierra.
- SCL: Pin de reloj I2C, se conecta a la línea de reloj I2C del microcontrolador.
- SCK: Este también es el pin de bloqueo del reloj SPI / SCK, es una entrada al chip.
- RX: Entrada de datos UART al sensor se debe conectar al pin TX del microcontrolador.
- SDA: Pin de datos I2C, se conecta a la línea de datos I2C del microcontrolador.
- MISO: Funciona también como pin de salida de datos / salida del sensor de entrada del microcontrolador / MISMO, para datos enviados desde el BNO08x.
- TX: Salida de datos UART del sensor se debe conectar al pin RX del microcontrolador.
- AD0/ADDR: Al poner este pin a LOW, la dirección I2C cambiará de 0x4B a 0x4A.
- MOSI: Entrada de datos/ Entrada del sensor de salida del microcontrolador / Pin MOSI, para datos enviados desde su procesador al BNO08x.
- CS: Este es el pin de selección del chip. Se debe colocar en posición baja para iniciar una transacción SPI. Es una entrada al chip.
- INT – Interrupción – Nivel bajo activo: Indica que el BNO085 requiere la atención del host. Necesario para un funcionamiento estable de SPI.
- RST – Reinicio – Activo bajo: Conecte a tierra para reiniciar el sensor. Necesario para un funcionamiento estable del SPI.
- Pines P0/P1 y puentes de soldadura: Selección de modo. Utiliza estos pines para configurar el modo de funcionamiento del BNO085 según la tabla a continuación. Ambos pines están en modo bajo por defecto, con el valor predeterminado I²C.
Tabla de Configuración.
| PS1 | PS0 | Modo |
|---|---|---|
| Bajo | Bajo | I2C |
| Bajo | Alto | UART – RVC |
| Alto | Bajo | UART |
| Alto | Alto | SPI |
- BOOT: Pin del cargador de arranque que se usa para configurar el sensor en el cargador de arranque. Los usuarios expertos deben consultar la hoja de datos para obtener más información. Si no sabeS qué es esto, probablemente prefiera dejarlo así o podría dañar el sensor.
Notas de Funcionamiento.
- La implementación I2C del BNO08x infringe el protocolo I2C en algunas circunstancias. Esto impide su correcto funcionamiento con ciertas familias de chips. No funciona correctamente con Espressif ESP32, ESP32-S3, ni con NXP i.MX RT1011, ni con multiplexores I2C. El funcionamiento con SAMD51, RP2040, STM32F4 y nRF52840 es más fiable.
- La biblioteca Arduino BNO08x solo admite un único sensor BNO08x.
- Debido al tamaño y la complejidad de la biblioteca BNO08x, tendrás que usar un Arduino compatible con una mayor cantidad de memoria, como SAMD21, SAMD51, nRF52, ESP, Mega, etc. Arduino Uno o Leonardo no funcionarán debido a la RAM mínima.
¿Cómo probar el GY-BNO085 Sensor IMU de 9DOF?
Aquí te doy una guía rápida de como porbar el GY-BNO085, sin morir en el intento.
Materiales Necesarios.
Conexiones.
| BNO085 | TXS0108E (A) | TXS0108E (B) | Arduino Mega |
|---|---|---|---|
| TX (SDA) | A1 | B1 | RX1 (19) |
| PS0 | – | – | 3.3 V |
| VCC | – | – | 3.3 V |
| GND | GND | GND | GND |
| VA | VA | – | 3.3 V |
| VB | – | VB | 5 V |
| OE | – | – | 3.3 V |

Nunca conectes el TX del BNO085 directo al Mega (5 V lo puede dañar). Para una configuración de hardware aún más sencilla, puentea el pad soldadura P0 en la parte posterior de la placa para mantenerla configurada en modo UART RVC. ¡Siempre puede retirar la soldadura para usar otros modos!
Librería de Arduino.
Puedes instalar la biblioteca Adafruit BNO08x RVC para Arduino utilizando el Administrador de bibliotecas en el IDE de Arduino:
- Sketch → Include Library → Manage Libraries.
- Instala:
- Adafruit BNO08x RVC.
- Adafruit BusIO.
Ejemplo de Librería.
Abre: Archivo -> Ejemplos -> Adafruit BNO08x RVC-> uart_rvc.
Tras abrir el archivo de demostración, cárgalo en tú Arduino conectado al sensor. Una vez cargado el código, verás que se imprimen los valores de los ejes principales y la aceleración, al abrir el Monitor Serie (Herramientas -> Monitor Serie) a 115200 baudios, de forma similar a esto:

Código de Trazado.
/* Plotter-friendly test sketch for Adafruit BNO08x sensor
* using UART-RVC mode with labeled outputs
*/
#include "Adafruit_BNO08x_RVC.h"
Adafruit_BNO08x_RVC rvc = Adafruit_BNO08x_RVC();
void setup() {
// Serial monitor / plotter
Serial.begin(115200);
while (!Serial) {
delay(10);
}
// Hardware UART connected to BNO08X
Serial1.begin(115200); // Fixed baud rate for RVC
while (!Serial1) {
delay(10);
}
// Initialize BNO08X in UART-RVC mode
if (!rvc.begin(&Serial1)) {
// If initialization fails, stay here
while (1) {
delay(10);
}
}
// Optional: print one-time header for Serial Monitor
Serial.println(F("BNO08X UART-RVC Serial Plotter"));
}
void loop() {
BNO08x_RVC_Data heading;
// Try to read a full RVC packet
if (!rvc.read(&heading)) {
// No valid data yet
return;
}
// Print labeled values for Arduino Serial Plotter
Serial.print(F("Yaw:"));
Serial.print(heading.yaw);
Serial.print(F(" "));
Serial.print(F("Pitch:"));
Serial.print(heading.pitch);
Serial.print(F(" "));
Serial.print(F("Roll:"));
Serial.print(heading.roll);
Serial.print(F(" "));
Serial.print(F("X:"));
Serial.print(heading.x_accel);
Serial.print(F(" "));
Serial.print(F("Y:"));
Serial.print(heading.y_accel);
Serial.print(F(" "));
Serial.print(F("Z:"));
Serial.print(heading.z_accel);
// End of line → one sample for the plotter
Serial.println();
}
Te dejo aquí un código de trazado de los valores, cárgalo en tú Arduino conectado al sensor. Una vez cargado el código, abre el Serial Plotter (Herramientas -> Serial Plotter) a 115200 baudios y verás gráficos de rumbo y aceleración como estos:

¡Juega con él! Mueve el sensor y observa cómo al girarlo, de adelante hacia atrás y de adelante hacia atrás, se modifican los gráficos. ¡Te sorprenderás!






























Valoraciones
No hay valoraciones aún.