Grove - IMU 10DOF
Grove - IMU 10DOF 是 Grove - IMU 9DOF 和 Grove - Barometer Sensor (BMP180) 的组合。该模块基于 MPU-9250 和 BMP180,MPU-9250 是一个 9 轴运动跟踪设备,集成了 3 轴陀螺仪、3 轴加速度计、3 轴磁力计和数字运动处理器 (DMP),而 BMP180 是一种高精度、超低功耗的数字压力传感器,适用于消费类应用。该模块非常适合智能手机、平板电脑和可穿戴设备的应用。
规格
- I2C 接口
- MPU-9250 I2C 地址可选
- 低功耗
- 400kHz 快速模式 I2C,用于与所有寄存器通信
- 数字输出 X、Y 和 Z 轴角速度传感器(陀螺仪),具有用户可编程的全量程范围:±250、±500、±1000 和 ±2000°/秒
- 数字输出 3 轴加速度计,具有可编程的全量程范围:±2g、±4g、±8g 和 ±16g
- 数字输出磁力计,具有全量程范围:±4800uT
- 数字输出气压计,范围为 300 ~ 1100hPa(相对于海平面 +9000m ~ -500m)
- 尺寸:25.43mm x 20.35mm
- I2C 地址:默认 0x68,参考硬件概述可更改为 0x69。
note
如果您想使用多个 I2C 设备,请参考 软件 I2C
tip
更多关于 Grove 模块的详细信息,请参考 Grove 系统
支持的平台
Arduino | Raspberry Pi |
---|---|
caution
上述提到的支持平台仅表示模块的软件或理论兼容性。我们通常仅为 Arduino 平台提供软件库或代码示例。不可能为所有可能的 MCU 平台提供软件库或演示代码。因此,用户需要自行编写软件库。
硬件概述
- 1:MPU-9250 I2C 地址选择焊盘,默认连接 a 和 b,地址为 0x68;如果连接 b 和 c,地址为 0x69。
- 2:MPU-9250 中断引脚,中断需要配置,可用的中断源包括:运动检测、FIFO 溢出、数据就绪、I2C 主机错误。
入门指南
我们将在这里提供一个示例,展示如何使用此传感器。
使用 Arduino
硬件
- 步骤 1. 准备以下物品:
Seeeduino V4.2 | Base Shield | Grove-IMU_10DOF |
---|---|---|
立即购买 | 立即购买 | 立即购买 |
- 步骤 2. 将 Grove-IMU_10DOF 连接到 Grove-Base Shield 的 I2C 端口。
- 步骤 3. 将 Grove-Base Shield 插入 Seeeduino。
- 步骤 4. 使用 USB 数据线将 Seeeduino 连接到电脑。
note
如果没有 Grove Base Shield,我们也可以直接将此模块按如下方式连接到 Seeeduino。
Seeeduino V4 | Grove-IMU_10DOF |
---|---|
5V | VCC |
GND | GND |
SDA | SDA |
SCL | SCL |
软件
步骤 1. 从 Github 下载库文件。
步骤 2. 参考 如何安装库文件 为 Arduino 安装库文件。
步骤 3. 通过路径打开代码:文件 -> 示例 -> IMU_10DOF_Test。
以下是部分代码:
void setup()
{
// 加入 I2C 总线(I2Cdev 库不会自动完成此操作)
Wire.begin();
// 初始化串行通信
// (选择 38400 是因为它在 8MHz 和 16MHz 下都能正常工作,但具体取决于您的项目需求)
Serial.begin(38400);
// 初始化设备
Serial.println("Initializing I2C devices...");
accelgyro.initialize();
Barometer.init();
// 验证连接
Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ? "MPU9250 connection successful" : "MPU9250 connection failed");
delay(1000);
Serial.println(" ");
// Mxyz_init_calibrated ();
}
void loop()
{
getAccel_Data();
getGyro_Data();
getCompassDate_calibrated(); // 罗盘数据已在此处校准
getHeading(); // 在使用此函数之前,应先运行 'getCompassDate_calibrated()',以获取校准数据,然后才能获得正确的角度。
getTiltHeading();
Serial.println("校准参数: ");
Serial.print(mx_centre);
Serial.print(" ");
Serial.print(my_centre);
Serial.print(" ");
Serial.println(mz_centre);
Serial.println(" ");
Serial.println("X、Y、Z 轴加速度 (g):");
Serial.print(Axyz[0]);
Serial.print(",");
Serial.print(Axyz[1]);
Serial.print(",");
Serial.println(Axyz[2]);
Serial.println("X、Y、Z 轴陀螺仪 (度/秒):");
Serial.print(Gxyz[0]);
Serial.print(",");
Serial.print(Gxyz[1]);
Serial.print(",");
Serial.println(Gxyz[2]);
Serial.println("X、Y、Z 轴罗盘值:");
Serial.print(Mxyz[0]);
Serial.print(",");
Serial.print(Mxyz[1]);
Serial.print(",");
Serial.println(Mxyz[2]);
Serial.println("磁北与 X 轴之间的顺时针角度:");
Serial.print(heading);
Serial.println(" ");
Serial.println("磁北与 X 轴正方向在水平面上的投影之间的顺时针角度:");
Serial.println(tiltheading);
Serial.println(" ");
temperature = Barometer.bmp180GetTemperature(Barometer.bmp180ReadUT()); // 获取温度,必须先调用 bmp180ReadUT
pressure = Barometer.bmp180GetPressure(Barometer.bmp180ReadUP()); // 获取压力
altitude = Barometer.calcAltitude(pressure); // 未补偿计算 - 单位为米
atm = pressure / 101325;
Serial.print("温度: ");
Serial.print(temperature, 2); // 显示两位小数
Serial.println("摄氏度");
Serial.print("压力: ");
Serial.print(pressure, 0); // 仅显示整数
Serial.println(" 帕");
Serial.print("相对大气压: ");
Serial.println(atm, 4); // 显示四位小数
Serial.print("海拔: ");
Serial.print(altitude, 2); // 显示两位小数
Serial.println(" 米");
Serial.println();
delay(1000);
}
步骤 4. 上传代码。请选择正确的板卡类型和 COM 端口。
您可以看到:
参考资料
- 轴的方向
下图显示了灵敏度轴的方向以及旋转的极性。
Grove - IMU 10DOF v1.0
Grove - IMU 10DOF v1.1
资源
- [ZIP] Grove - IMU 10DOF v1.0 Eagle 文件
- [Eagle] Grove - IMU 10DOF v1.1 Eagle 文件
- [PDF] Grove - IMU 10DOF v1.0 原理图 PDF 文件
- [PDF] Grove - IMU 10DOF v1.1 原理图 PDF 文件
- [Library] Grove-IMU_10DOF 库
- [PDF] BMP180 数据手册
- [PDF] MPU-9250 数据手册
技术支持与产品讨论
感谢您选择我们的产品!我们致力于为您提供多种支持,以确保您使用我们的产品时获得最佳体验。我们提供多个沟通渠道,以满足不同的偏好和需求。