

The GY-912 is a high-precision 9-axis motion tracking sensor module manufactured by OEM, with the part ID BMP388, ICM20948, 10DOF. This module integrates a 3-axis accelerometer, 3-axis gyroscope, and 3-axis magnetometer, making it ideal for applications requiring accurate orientation and motion detection. Additionally, it includes a BMP388 barometric pressure sensor for altitude measurement, enhancing its versatility.








| Parameter | Value |
|---|---|
| Manufacturer | OEM |
| Part ID | BMP388, ICM20948, 10DOF |
| Supply Voltage | 3.3V - 5V |
| Communication Interface | I2C, SPI |
| Accelerometer Range | ±2g, ±4g, ±8g, ±16g |
| Gyroscope Range | ±250, ±500, ±1000, ±2000 degrees/second |
| Magnetometer Range | ±4900 µT |
| Barometric Pressure Range | 300 hPa to 1250 hPa |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 15mm x 10mm |
| Pin Name | Description |
|---|---|
| VCC | Power supply input (3.3V - 5V) |
| GND | Ground |
| SCL | I2C clock line |
| SDA | I2C data line |
| CS | Chip select for SPI communication |
| SDO | SPI data output |
| INT | Interrupt output |
Below is an example of how to interface the GY-912 with an Arduino UNO using the I2C protocol:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ICM20948.h>
#include <Adafruit_BMP3XX.h>
// Create sensor objects
Adafruit_ICM20948 icm; // ICM20948 9-axis sensor
Adafruit_BMP3XX bmp; // BMP388 barometric pressure sensor
void setup() {
Serial.begin(115200);
while (!Serial); // Wait for Serial Monitor to open
// Initialize I2C communication
if (!icm.begin_I2C()) {
Serial.println("Failed to find ICM20948 sensor!");
while (1);
}
Serial.println("ICM20948 initialized!");
if (!bmp.begin_I2C()) {
Serial.println("Failed to find BMP388 sensor!");
while (1);
}
Serial.println("BMP388 initialized!");
}
void loop() {
// Read accelerometer data
sensors_event_t accel, gyro, mag;
icm.getEvent(&accel, &gyro, &mag);
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");
// Read barometric pressure
if (bmp.performReading()) {
Serial.print("Pressure: "); Serial.print(bmp.pressure / 100.0); Serial.println(" hPa");
Serial.print("Altitude: "); Serial.print(bmp.readAltitude(1013.25)); Serial.println(" m");
} else {
Serial.println("Failed to read BMP388 sensor!");
}
delay(1000); // Wait 1 second before next reading
}
Adafruit_ICM20948 and Adafruit_BMP3XX libraries via the Arduino Library Manager before running the code.bmp.readAltitude() function's sea-level pressure parameter (1013.25 hPa) based on your location for accurate altitude readings.No Sensor Detected:
Inaccurate Readings:
Communication Errors:
By following this documentation, you can effectively integrate the GY-912 module into your projects and troubleshoot common issues.