
This circuit integrates an Arduino UNO with an Adafruit BNO085 9-DOF Orientation IMU and a Bluetooth HC-06 module. The Arduino reads orientation data from the IMU via I2C and transmits it over Bluetooth, powered by a 7.4V battery.

The Troyka IMU 10 DoF is a compact and versatile Inertial Measurement Unit (IMU) designed for applications requiring precise motion and orientation tracking. This module integrates a 3-axis accelerometer, a 3-axis gyroscope, and a 3-axis magnetometer, along with a barometric pressure sensor, to provide 10 degrees of freedom (DoF) for comprehensive motion sensing. It is ideal for robotics, navigation systems, drones, and other projects that demand accurate spatial awareness.

This circuit integrates an Arduino UNO with an Adafruit BNO085 9-DOF Orientation IMU and a Bluetooth HC-06 module. The Arduino reads orientation data from the IMU via I2C and transmits it over Bluetooth, powered by a 7.4V battery.

This circuit features an Arduino UNO microcontroller interfaced with a Bluetooth HC-06 module for wireless communication and an Adafruit BNO085 9-DOF Orientation IMU for motion sensing. The Arduino handles data acquisition from the IMU via I2C and communicates the data wirelessly through the Bluetooth module.

This circuit consists of an Arduino UNO R4 WiFi microcontroller connected to an Adafruit BNO085 9-DOF Orientation IMU Fusion sensor. The Arduino communicates with the IMU sensor via I2C protocol, providing power and ground connections to the sensor, enabling it to read orientation data.

This circuit consists of an Arduino UNO R4 WiFi microcontroller connected to an Adafruit BNO085 9-DOF Orientation IMU Fusion sensor. The Arduino provides power and ground to the IMU sensor and communicates with it via the I2C protocol using the SDA and SCL lines.
The following table outlines the key technical details of the Troyka IMU 10 DoF:
| Parameter | Specification |
|---|---|
| Manufacturer | Troyka |
| Part ID | IMU 10 DoF |
| Accelerometer | 3-axis (±2g/±4g/±8g/±16g selectable range) |
| Gyroscope | 3-axis (±250/±500/±1000/±2000°/s range) |
| Magnetometer | 3-axis (±4800 µT range) |
| Barometric Sensor | Pressure range: 300–1100 hPa |
| Communication Interface | I2C, SPI |
| Operating Voltage | 3.3V–5V |
| Dimensions | 25mm x 25mm |
| Weight | ~5g |
The Troyka IMU 10 DoF features the following pin layout:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.3V–5V) |
| 2 | GND | Ground |
| 3 | SDA | I2C data line |
| 4 | SCL | I2C clock line |
| 5 | CS | Chip select for SPI communication |
| 6 | SDO | SPI data output |
| 7 | SDI | SPI data input |
| 8 | SCK | SPI clock input |
| 9 | INT1 | Interrupt pin 1 (configurable) |
| 10 | INT2 | Interrupt pin 2 (configurable) |
To use the Troyka IMU 10 DoF with an Arduino UNO, follow these steps:
Below is an example Arduino sketch to read data from the IMU using the I2C interface:
#include <Wire.h>
// Define the I2C address of the IMU
#define IMU_ADDRESS 0x68
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
// Wake up the IMU (if required by the specific IMU model)
Wire.beginTransmission(IMU_ADDRESS);
Wire.write(0x6B); // Power management register
Wire.write(0x00); // Set to normal mode
Wire.endTransmission();
Serial.println("Troyka IMU 10 DoF initialized.");
}
void loop() {
Wire.beginTransmission(IMU_ADDRESS);
Wire.write(0x3B); // Starting register for accelerometer data
Wire.endTransmission(false);
Wire.requestFrom(IMU_ADDRESS, 6, true); // Request 6 bytes of data
// Read accelerometer data
int16_t accelX = (Wire.read() << 8) | Wire.read();
int16_t accelY = (Wire.read() << 8) | Wire.read();
int16_t accelZ = (Wire.read() << 8) | Wire.read();
// Print accelerometer data to the Serial Monitor
Serial.print("Accel X: "); Serial.print(accelX);
Serial.print(" | Accel Y: "); Serial.print(accelY);
Serial.print(" | Accel Z: "); Serial.println(accelZ);
delay(500); // Wait for 500ms before the next reading
}
No data or incorrect readings from the IMU.
Inconsistent or noisy sensor data.
The IMU is not detected by the Arduino.
Q: Can I use the Troyka IMU 10 DoF with a 3.3V microcontroller?
A: Yes, the IMU supports both 3.3V and 5V logic levels, making it compatible with a wide range of microcontrollers.
Q: How do I calibrate the sensors?
A: Calibration can be performed by collecting raw data from the sensors and applying offsets or scaling factors. Many libraries (e.g., MPU6050 or BNO055 libraries) include built-in calibration functions.
Q: Can I use SPI instead of I2C?
A: Yes, the IMU supports SPI communication. Refer to the pin configuration table for SPI pin connections.
Q: What is the maximum sampling rate of the IMU?
A: The sampling rate depends on the specific sensor configuration. Refer to the sensor datasheets for detailed information.