GY-BMI160 6DOF, 6 Axis Gravity/Accelerometer/Gyroscope Sensor Module
The GY-BMI160 is a highly integrated, low-power 6-axis inertial measurement unit (IMU) designed for precise motion tracking. It combines a 16-bit digital, 3-axis accelerometer and a 3-axis gyroscope into a single compact module, making it an ideal choice for space-constrained and battery-sensitive applications.The GY-BMI160 is a highly integrated, low-power 6-axis inertial measurement unit (IMU) designed for precise motion tracking. It combines a 16-bit digital, 3-axis accelerometer and a 3-axis gyroscope into a single compact module, making it an ideal choice for space-constrained and battery-sensitive applications.
At its core lies the Bosch BMI160 sensor, which features advanced internal power management, intelligent interrupt engines, and precise synchronization capabilities, allowing it to deliver high-performance motion sensing with minimal power consumption.
Key Features
Integrated Sensing: Combines a 3-axis accelerometer and a 3-axis gyroscope on a single chip.
Low Power Consumption: Optimized for wearable devices and battery-operated electronics.
High Precision: 16-bit data output with selectable full-scale ranges for both the accelerometer and gyroscope.
Integrated Features: Includes on-chip interrupt engines for motion detection (step detection, tap/double-tap, any-motion, orientation).
Communication Interfaces: Supports both I2C and SPI digital interfaces for easy integration with microcontrollers like Arduino, ESP32, or STM32.
Compact Design: The module form factor is designed for easy breadboarding and integration into prototyping projects.
Technical Specifications
| Parameter | Detail |
| Sensor Model | Bosch BMI160 |
| Supply Voltage | 3.3V – 5V DC |
| Communication | I2C (up to 1MHz) / SPI (up to 10MHz) |
| Accelerometer Range | ±2, ±4, ±8, ±16 g |
| Gyroscope Range | ±125, ±250, ±500, ±1000, ±2000 °/s |
| Interface Levels | Digital |
Typical Applications
Wearable Technology: Smartwatches, fitness trackers, and health monitoring devices.
Robotics & Drones: Balancing, orientation tracking, and navigation.
Human-Machine Interaction: Gesture recognition and motion-controlled interfaces.
IoT Devices: Activity monitoring and motion-triggered logging.
Note: The GY-BMI160 is a sensitive component. When mounting the module in your project, ensure it is firmly attached to the chassis; vibrations or loose connections may introduce significant noise into the sensor data.
What's in the box?
1 x GY-BMI160 6DOF Module
1 x 12 pin header
Resources
Using with Raspberry Pi
Using the GY-BMI160 with a Raspberry Pi is a straightforward process, as the module supports the standard I2C communication protocol, which is natively supported by the Raspberry Pi GPIO header.
Wiring Guide
You will need to connect the module to the Raspberry Pi's I2C pins. Ensure you are using the 3.3V pin on the Pi, as the BMI160 is a 3.3V device.
| GY-BMI160 Pin | Raspberry Pi Pin (GPIO Header) |
| VCC | 3.3V (Pin 1) |
| GND | GND (Pin 6 or 9) |
| SCL | SCL (Pin 5) |
| SDA | SDA (Pin 3) |
Step-by-Step Setup
Enable I2C:
Open your terminal on the Raspberry Pi.
Run
sudo raspi-config.Navigate to Interface Options > I2C and select Yes to enable it.
Reboot your Pi:
sudo reboot.
Verify Connection:
Install the I2C tools:
sudo apt-get install i2c-tools.Run the detection command:
i2cdetect -y 1.You should see a device address (typically
0x68or0x69) appear in the grid. This confirms the Pi sees the sensor.
Install Python Libraries:
The most common way to interface with this sensor is using Python. You will need the
smbus2library or a specific BMI160 wrapper.Install smbus:
sudo apt-get install python3-smbus.You can then search for available GitHub repositories for "BMI160 Python Raspberry Pi" to find pre-written drivers that handle the register communication for you.
Reading Data:
Once you have the library installed, you can run a simple test script to read the acceleration and gyroscope values (X, Y, Z axes).
Tip: Remember that the raw data requires scaling based on the range you set (e.g., ±2g, ±250°/s) to convert the values into meaningful units like $m/s^2$ or degrees per second.
Important Considerations
Logic Levels: Always ensure you are using 3.3V for the signal lines. Connecting to 5V pins can damage the sensor or the Raspberry Pi.
Interrupts: If you need to use the advanced features like "step detection," you will need to connect the INT1 or INT2 pins of the module to one of the Raspberry Pi's GPIO input pins and configure an interrupt handler in your code.
Calibration: IMUs often require a calibration routine to remove "bias" or "offset" errors when the device is stationary.