Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

How to Use Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing: Examples, Pinouts, and Specs

Image of Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWingDesign with Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing in Cirkit Designer

Introduction

The Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing is a comprehensive motion sensing solution that combines a 3-axis accelerometer, a 3-axis gyroscope, and a 3-axis magnetometer into a single module. This FeatherWing is designed to interface seamlessly with Adafruit's Feather development boards, providing a powerful tool for creating projects that require orientation tracking, motion sensing, and navigational functionalities. Common applications include drones, robotics, gesture control, and augmented reality devices.

Explore Projects Built with Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of ESP32-Based Force Measurement System with LSM303AGR Sensor: A project utilizing Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing in a practical application
ESP32-Based Force Measurement System with LSM303AGR Sensor

This circuit features an Adafruit HUZZAH32 ESP32 Feather microcontroller connected to an Adafruit LSM303AGR sensor via I2C communication lines (SCL and SDA), a force sensing resistor (FSR) interfaced through an analog input with a pull-up resistor, and powered by a 3xAA battery pack. The LSM303AGR sensor provides acceleration and magnetic field measurements, while the FSR detects applied force. The ESP32 processes these inputs and can be programmed to respond to sensor data for applications such as motion tracking and force measurement.

Open Project in Cirkit Designer
Image of ESP32-Based Vibration Feedback System with Quad Alphanumeric Display and ADXL343 Accelerometer: A project utilizing Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing in a practical application
ESP32-Based Vibration Feedback System with Quad Alphanumeric Display and ADXL343 Accelerometer

This circuit features an Adafruit HUZZAH32 ESP32 Feather board as the central microcontroller, which is connected to an Adafruit Quad AlphaNumeric Featherwing display and an Adafruit ADXL343 accelerometer via I2C communication (SCL and SDA lines). The ESP32 controls a vibration motor connected to one of its GPIO pins (A5_IO4) and shares a common power supply (3.3V) and ground (GND) with the other components. The purpose of this circuit is likely to read acceleration data, display information on the alphanumeric display, and provide haptic feedback through the vibration motor.

Open Project in Cirkit Designer
Image of Multi-Sensor Health Monitoring System with Adafruit Feather M0 Adalogger: A project utilizing Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing in a practical application
Multi-Sensor Health Monitoring System with Adafruit Feather M0 Adalogger

This circuit is designed to interface multiple sensors with an Adafruit Feather M0 Adalogger microcontroller for data logging purposes. The sensors include a MAX30205 temperature sensor, a body dehydration sensor, a MAX30102 pulse oximeter, an Adafruit LSM6DSOX 6-axis accelerometer and gyroscope, and an Adafruit BME680 environmental sensor. All sensors are connected to the microcontroller via an I2C bus, sharing the SDA and SCL lines for communication.

Open Project in Cirkit Designer
Image of Arduino UNO-Based Motion Sensor with OLED Display: A project utilizing Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing in a practical application
Arduino UNO-Based Motion Sensor with OLED Display

This circuit uses an Arduino UNO to read data from an MPU-6050 accelerometer and gyroscope sensor and display the readings on an Adafruit 128x64 OLED FeatherWing. The Arduino communicates with both the sensor and the display via the I2C protocol, and the code initializes the devices, reads sensor data, and updates the display every 500 milliseconds.

Open Project in Cirkit Designer

Technical Specifications

Key Technical Details

Pin Configuration and Descriptions

Pin Function Description
GND Ground Common ground for power and logic
3V Power 3.3V power supply input
SCL I2C Clock Serial Clock for I2C communication
SDA I2C Data Serial Data for I2C communication
INT1 Interrupt 1 Configurable interrupt for LSM6DSOX
INT2 Interrupt 2 Configurable interrupt for LIS3MDL

Usage Instructions

Integration with a Circuit

To use the Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing with a Feather board:

  1. Attach the FeatherWing to the Feather board using the provided headers.
  2. Ensure that the 3V and GND pins are connected to provide power to the module.
  3. Connect the SCL and SDA pins to the corresponding I2C pins on the Feather board.

Best Practices

Example Code for Arduino UNO

Below is an example code snippet for interfacing the Adafruit Precision 9-DoF LSM6DSOX + LIS3MDL FeatherWing with an Arduino UNO. This code initializes the sensor and reads the accelerometer, gyroscope, and magnetometer data.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM6DSOX.h>
#include <Adafruit_LIS3MDL.h>

// Create sensor instances
Adafruit_LSM6DSOX sox = Adafruit_LSM6DSOX();
Adafruit_LIS3MDL mdl = Adafruit_LIS3MDL();

void setup() {
  Serial.begin(115200);
  // Wait for serial monitor to open
  while (!Serial) { delay(10); }

  // Initialize LSM6DSOX
  if (!sox.begin_I2C()) {
    Serial.println("Failed to find LSM6DSOX chip");
    while (1) { delay(10); }
  }

  // Initialize LIS3MDL
  if (!mdl.begin_I2C()) {
    Serial.println("Failed to find LIS3MDL chip");
    while (1) { delay(10); }
  }

  Serial.println("LSM6DSOX + LIS3MDL FeatherWing started!");
}

void loop() {
  // Read accelerometer and gyroscope
  sensors_event_t accel;
  sensors_event_t gyro;
  sensors_event_t mag;
  sox.getEvent(&accel, &gyro, NULL);

  // Read magnetometer
  mdl.getEvent(&mag);

  // Print values to serial monitor
  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 ");

  Serial.print("Gyro X: "); Serial.print(gyro.gyro.x); Serial.print(" dps ");
  Serial.print("Y: "); Serial.print(gyro.gyro.y); Serial.print(" dps ");
  Serial.print("Z: "); Serial.print(gyro.gyro.z); Serial.println(" dps ");

  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(100);
}

Troubleshooting and FAQs

Common Issues

FAQs

Q: Can I use this FeatherWing with a 5V microcontroller? A: Yes, but you must use a logic level converter to step down the 5V signals to 3.3V to avoid damaging the sensors.

Q: How do I calibrate the magnetometer? A: Adafruit provides a calibration sketch and instructions on their website. Follow the guide to perform the calibration.

Q: What is the maximum sampling rate for the sensors? A: The LSM6DSOX can sample up to 6.66 kHz for the gyroscope and 1.66 kHz for the accelerometer. The LIS3MDL can sample up to 155 Hz.

For further assistance, consult the Adafruit forums or the detailed datasheets for the LSM6DSOX and LIS3MDL sensors.