

The Adafruit LSM6DS3TR-C + LIS3MDL (Part ID: 5543) is a precision 9 Degrees of Freedom (DoF) Inertial Measurement Unit (IMU) designed for accurate motion tracking and orientation sensing. This module combines two powerful sensors: the LSM6DS3TR-C, which integrates a 3-axis accelerometer and a 3-axis gyroscope, and the LIS3MDL, a 3-axis magnetometer. Together, these sensors provide comprehensive motion and orientation data.
This IMU is equipped with STEMMA QT / Qwiic connectors, enabling plug-and-play compatibility with a wide range of development boards and simplifying integration into projects. It is ideal for applications such as robotics, drones, wearable devices, and gaming controllers.








0x6A (default) or 0x6B 0x1C, 0x1E, 0x1D, or 0x1F (configurable)The Adafruit LSM6DS3TR-C + LIS3MDL module features the following pins:
| Pin | Label | Description |
|---|---|---|
| 1 | VIN | Power input (3.3V to 5V). Connect to the power supply of your microcontroller. |
| 2 | GND | Ground. Connect to the ground of your circuit. |
| 3 | SCL | I²C clock line. Connect to the SCL pin of your microcontroller. |
| 4 | SDA | I²C data line. Connect to the SDA pin of your microcontroller. |
| 5 | INT1 | Interrupt pin 1 from the LSM6DS3TR-C. Optional for advanced applications. |
| 6 | INT2 | Interrupt pin 2 from the LSM6DS3TR-C. Optional for advanced applications. |
| 7 | DRDY | Data ready pin from the LIS3MDL. Optional for advanced applications. |
| 8 | CS | Chip select for SPI communication. Leave unconnected for I²C mode. |
Below is an example Arduino sketch to read accelerometer, gyroscope, and magnetometer data using I²C:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM6DS33.h>
#include <Adafruit_LIS3MDL.h>
// Create sensor objects
Adafruit_LSM6DS33 lsm6ds33;
Adafruit_LIS3MDL lis3mdl;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10); // Wait for Serial Monitor to open
// Initialize LSM6DS33
if (!lsm6ds33.begin_I2C()) {
Serial.println("Failed to find LSM6DS33 chip");
while (1) delay(10);
}
Serial.println("LSM6DS33 Found!");
// Initialize LIS3MDL
if (!lis3mdl.begin_I2C()) {
Serial.println("Failed to find LIS3MDL chip");
while (1) delay(10);
}
Serial.println("LIS3MDL Found!");
}
void loop() {
// Read accelerometer data
sensors_event_t accel, gyro, temp;
lsm6ds33.getEvent(&accel, &gyro, &temp);
// Read magnetometer data
sensors_event_t mag;
lis3mdl.getEvent(&mag);
// Print accelerometer data
Serial.print("Accel X: "); Serial.print(accel.acceleration.x); Serial.print(" m/s^2 ");
Serial.print("Y: "); Serial.print(accel.acceleration.y); Serial.print(" m/s^2 ");
Serial.print("Z: "); Serial.print(accel.acceleration.z); Serial.println(" m/s^2");
// Print gyroscope data
Serial.print("Gyro X: "); Serial.print(gyro.gyro.x); Serial.print(" rad/s ");
Serial.print("Y: "); Serial.print(gyro.gyro.y); Serial.print(" rad/s ");
Serial.print("Z: "); Serial.print(gyro.gyro.z); Serial.println(" rad/s");
// Print magnetometer data
Serial.print("Mag X: "); Serial.print(mag.magnetic.x); Serial.print(" uT ");
Serial.print("Y: "); Serial.print(mag.magnetic.y); Serial.print(" uT ");
Serial.print("Z: "); Serial.print(mag.magnetic.z); Serial.println(" uT");
delay(500); // Delay for readability
}
Sensor Not Detected:
Incorrect or No Data:
I²C Communication Errors:
By following this documentation, you can effectively integrate the Adafruit LSM6DS3TR-C + LIS3MDL IMU into your projects for precise motion and orientation sensing.