

The 6DOF IMU 6 Click (Manufacturer Part ID: MIKROE-4044) is a compact module developed by MikroElektronika. It integrates a 6-axis Inertial Measurement Unit (IMU) that combines a 3-axis accelerometer and a 3-axis gyroscope. This module is designed for precise motion tracking and orientation sensing, making it ideal for applications such as robotics, drones, gaming devices, and industrial equipment.
The 6DOF IMU 6 Click is based on the IIS2ICLX sensor from STMicroelectronics, which offers high accuracy, low power consumption, and advanced features for motion detection and vibration monitoring.








| Parameter | Value |
|---|---|
| Sensor Type | 6-axis IMU (3-axis accelerometer + 3-axis gyroscope) |
| Communication Interface | I2C, SPI |
| Operating Voltage | 3.3V |
| Accelerometer Range | ±2g, ±4g, ±8g, ±16g |
| Gyroscope Range | ±125°/s, ±250°/s, ±500°/s, ±1000°/s, ±2000°/s |
| Output Data Rate (ODR) | Up to 6660 Hz |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 28.6mm x 25.4mm |
The 6DOF IMU 6 Click uses a standard mikroBUS™ socket for easy integration. The pinout is as follows:
| Pin No. | Pin Name | Description |
|---|---|---|
| 1 | AN | Interrupt 1 (configurable) |
| 2 | RST | Reset |
| 3 | CS | Chip Select (SPI mode) |
| 4 | SCK | Serial Clock (SPI mode) |
| 5 | MISO | Master In Slave Out (SPI mode) |
| 6 | MOSI | Master Out Slave In (SPI mode) |
| 7 | SDA | Serial Data (I2C mode) |
| 8 | SCL | Serial Clock (I2C mode) |
| 9 | PWM | Interrupt 2 (configurable) |
| 10 | INT | Interrupt 3 (configurable) |
| 11 | GND | Ground |
| 12 | 3.3V | Power Supply |
Below is an example of how to interface the 6DOF IMU 6 Click with an Arduino UNO using the I2C interface:
#include <Wire.h>
// Define the I2C address of the IIS2ICLX sensor
#define IMU_I2C_ADDRESS 0x6A
// Register addresses for accelerometer and gyroscope
#define WHO_AM_I_REG 0x0F
#define CTRL1_XL_REG 0x10
#define CTRL2_G_REG 0x11
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Check sensor connection
Wire.beginTransmission(IMU_I2C_ADDRESS);
Wire.write(WHO_AM_I_REG); // Request the WHO_AM_I register
Wire.endTransmission();
Wire.requestFrom(IMU_I2C_ADDRESS, 1);
if (Wire.available()) {
uint8_t whoAmI = Wire.read();
Serial.print("WHO_AM_I: 0x");
Serial.println(whoAmI, HEX);
if (whoAmI != 0x6B) { // Expected value for IIS2ICLX
Serial.println("Error: Sensor not detected!");
while (1); // Halt execution
}
}
// Configure accelerometer (e.g., ±4g range, 104 Hz ODR)
Wire.beginTransmission(IMU_I2C_ADDRESS);
Wire.write(CTRL1_XL_REG);
Wire.write(0x50); // 104 Hz ODR, ±4g range
Wire.endTransmission();
// Configure gyroscope (e.g., ±250°/s range, 104 Hz ODR)
Wire.beginTransmission(IMU_I2C_ADDRESS);
Wire.write(CTRL2_G_REG);
Wire.write(0x50); // 104 Hz ODR, ±250°/s range
Wire.endTransmission();
Serial.println("6DOF IMU 6 Click initialized successfully!");
}
void loop() {
// Add code to read accelerometer and gyroscope data
// and process it as needed for your application.
}
Sensor Not Detected:
Incorrect or No Data Output:
High Noise in Readings:
This documentation provides a comprehensive guide to using the 6DOF IMU 6 Click module effectively. For further assistance, refer to the official MikroElektronika documentation or contact their support team.