- All products
- Sensors & Modules
- Gyro+Accelerometer
- Accelerometer Gyro Compass Pressure Sensor Module GY-91 (MPU9250 + BMP280)
- Gyro+Accelerometer
Features:
- 10DOF sensor combining motion tracking and pressure sensing
- MPU9250: 3-axis accelerometer, 3-axis gyroscope, 3-axis magnetometer
- BMP280: high-precision barometric pressure and temperature sensor
- Built-in 16-bit ADC for high-resolution data output
- Supports both I2C and SPI communication interfaces
- Wide operating voltage range (3V – 5V)
- Compact size suitable for embedded and portable systems
- High sensitivity and stability for accurate motion detection
- Onboard low-dropout regulator for stable power supply
- Standard 2.54mm pin spacing for easy integration
Principle of Work:
The GY-91 module operates by combining data from multiple sensors to provide a complete understanding of motion and environmental conditions. The MPU9250 detects acceleration, angular velocity, and magnetic field strength across three axes, allowing calculation of orientation and movement in space. The BMP280 measures atmospheric pressure and temperature, which can be used to estimate altitude.
The collected data is transmitted to a microcontroller via I2C or SPI communication, where it can be processed using sensor fusion algorithms to generate accurate position, heading, and environmental information.
Pinout:
- VIN: Power input (3V–5V)
- 3V3: Regulated 3.3V output
- GND: Ground
- SCL: I2C clock / SPI clock
- SDA: I2C data / SPI MOSI
- SDO/SAO: I2C address select / SPI MISO
- NCS: Chip select (MPU9250, SPI mode)
- CSB: Chip select (BMP280, SPI mode)
Applications:
- Drones and UAV flight control systems
- Robotics orientation and motion tracking
- Wearable motion sensing devices
- Navigation and positioning systems
- Altitude measurement and weather monitoring
- Industrial automation and stabilization systems
- Virtual reality and gaming motion tracking
Circuit:

- VCC to 3.3V or 5V of microcontroller
- GND to GND
- SDA to SDA (Arduino UNO: A4)
- SCL to SCL (Arduino UNO: A5)
- Optional: use SPI pins (MOSI, MISO, SCK, CS) if SPI mode is required
Code:
The module can be used with libraries such as MPU9250 and BMP280 libraries in the Arduino IDE.
#include "Wire.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_BMP280.h"
#include "MPU9250.h"
Adafruit_BMP280 bmp;
MPU9250 imu(Wire, 0x68);
void setup() {
Serial.begin(115200);
Wire.begin();
if (!bmp.begin()) {
Serial.println("BMP280 not detected!");
while (1);
}
if (imu.begin() != 0) {
Serial.println("MPU9250 init failed!");
while (1);
}
Serial.println("GY-91 Initialized");
}
void loop() {
imu.readSensor();
Serial.print("Accel X: "); Serial.print(imu.getAccelX_mss());
Serial.print(" | Y: "); Serial.print(imu.getAccelY_mss());
Serial.print(" | Z: "); Serial.println(imu.getAccelZ_mss());
Serial.print("Temp: "); Serial.print(bmp.readTemperature());
Serial.print(" °C | Pressure: "); Serial.print(bmp.readPressure());
Serial.println(" Pa");
delay(500);
}
Technical Details:
- Sensor Chips: MPU9250 + BMP280
- Degrees of Freedom: 10DOF
- Operating Voltage: 3V – 5V
- Communication: I2C / SPI
- Gyroscope Range: ±250, ±500, ±1000, ±2000 °/s
- Accelerometer Range: ±2g, ±4g, ±8g, ±16g
- Magnetometer Range: ±4800 µT
- Pressure Range: 300 – 1100 hPa
- Resolution: 16-bit ADC
- Dimensions: ~14.3 mm × 20.5 mm
Resources:
Comparisons:
Compared to simpler IMU modules like MPU6050, the GY-91 offers significantly more functionality by adding a magnetometer and barometric pressure sensor, enabling full 10DOF sensing. This allows for more accurate orientation tracking and altitude estimation. Compared to larger modules like GY-80, the GY-91 provides similar or better functionality in a smaller and more compact form factor, making it more suitable for space-constrained applications. :contentReference[oaicite:3]{index=3}
Features:
- 10DOF sensor combining motion tracking and pressure sensing
- MPU9250: 3-axis accelerometer, 3-axis gyroscope, 3-axis magnetometer
- BMP280: high-precision barometric pressure and temperature sensor
- Built-in 16-bit ADC for high-resolution data output
- Supports both I2C and SPI communication interfaces
- Wide operating voltage range (3V – 5V)
- Compact size suitable for embedded and portable systems
- High sensitivity and stability for accurate motion detection
- Onboard low-dropout regulator for stable power supply
- Standard 2.54mm pin spacing for easy integration
Principle of Work:
The GY-91 module operates by combining data from multiple sensors to provide a complete understanding of motion and environmental conditions. The MPU9250 detects acceleration, angular velocity, and magnetic field strength across three axes, allowing calculation of orientation and movement in space. The BMP280 measures atmospheric pressure and temperature, which can be used to estimate altitude.
The collected data is transmitted to a microcontroller via I2C or SPI communication, where it can be processed using sensor fusion algorithms to generate accurate position, heading, and environmental information.
Pinout:
- VIN: Power input (3V–5V)
- 3V3: Regulated 3.3V output
- GND: Ground
- SCL: I2C clock / SPI clock
- SDA: I2C data / SPI MOSI
- SDO/SAO: I2C address select / SPI MISO
- NCS: Chip select (MPU9250, SPI mode)
- CSB: Chip select (BMP280, SPI mode)
Applications:
- Drones and UAV flight control systems
- Robotics orientation and motion tracking
- Wearable motion sensing devices
- Navigation and positioning systems
- Altitude measurement and weather monitoring
- Industrial automation and stabilization systems
- Virtual reality and gaming motion tracking
Circuit:

- VCC to 3.3V or 5V of microcontroller
- GND to GND
- SDA to SDA (Arduino UNO: A4)
- SCL to SCL (Arduino UNO: A5)
- Optional: use SPI pins (MOSI, MISO, SCK, CS) if SPI mode is required
Code:
The module can be used with libraries such as MPU9250 and BMP280 libraries in the Arduino IDE.
#include "Wire.h"
#include "Adafruit_Sensor.h"
#include "Adafruit_BMP280.h"
#include "MPU9250.h"
Adafruit_BMP280 bmp;
MPU9250 imu(Wire, 0x68);
void setup() {
Serial.begin(115200);
Wire.begin();
if (!bmp.begin()) {
Serial.println("BMP280 not detected!");
while (1);
}
if (imu.begin() != 0) {
Serial.println("MPU9250 init failed!");
while (1);
}
Serial.println("GY-91 Initialized");
}
void loop() {
imu.readSensor();
Serial.print("Accel X: "); Serial.print(imu.getAccelX_mss());
Serial.print(" | Y: "); Serial.print(imu.getAccelY_mss());
Serial.print(" | Z: "); Serial.println(imu.getAccelZ_mss());
Serial.print("Temp: "); Serial.print(bmp.readTemperature());
Serial.print(" °C | Pressure: "); Serial.print(bmp.readPressure());
Serial.println(" Pa");
delay(500);
}
Technical Details:
- Sensor Chips: MPU9250 + BMP280
- Degrees of Freedom: 10DOF
- Operating Voltage: 3V – 5V
- Communication: I2C / SPI
- Gyroscope Range: ±250, ±500, ±1000, ±2000 °/s
- Accelerometer Range: ±2g, ±4g, ±8g, ±16g
- Magnetometer Range: ±4800 µT
- Pressure Range: 300 – 1100 hPa
- Resolution: 16-bit ADC
- Dimensions: ~14.3 mm × 20.5 mm
Resources:
Comparisons:
Compared to simpler IMU modules like MPU6050, the GY-91 offers significantly more functionality by adding a magnetometer and barometric pressure sensor, enabling full 10DOF sensing. This allows for more accurate orientation tracking and altitude estimation. Compared to larger modules like GY-80, the GY-91 provides similar or better functionality in a smaller and more compact form factor, making it more suitable for space-constrained applications. :contentReference[oaicite:3]{index=3}