10 个版本

使用旧的 Rust 2015

0.6.8 2020 年 9 月 28 日
0.6.7 2020 年 9 月 28 日
0.6.6 2019 年 3 月 24 日
0.6.5 2019 年 2 月 27 日
0.5.0 2018 年 11 月 22 日

#8 in #校准

Apache-2.0

46KB
710

mpu9250-i2c

此软件包/存储库不再维护。 考虑使用 mpu9250 软件包

MPU9250 驱动程序,用于嵌入式设备和 Linux,用 Rust 编写。一个与 MPU9250 通过 I2C 交互的平台无关驱动程序。此驱动程序使用 embedded-hal 特性构建。

特性

  • 3 轴陀螺仪
  • 3 轴罗盘(磁力计)
  • 3 轴加速度计
  • 温度设备
  • AHRS(姿态和航向参考系统)- 包含 Magwick 滤波器示例
  • 测试

示例

示例代码位于 /src/bin 文件夹中,这些示例在具有 I2C 总线的 Linux 设备上运行,例如树莓派和 BeagleBone。 示例包括

  • calibrate.rs - 校准 MPU9250 设备的代码。
  • mpu9250.rs - 从设备读取所有数据的简单示例。
  • ahrs.rs - 完全功能的 AHRS 算法,使用 Magwick 滤波器。

Linux 示例

extern crate linux_embedded_hal as hal;
extern crate mpu9250_i2c as mpu9250;
use hal::{Delay, I2cdev};
use mpu9250::{calibration::Calibration, Mpu9250};
use std::time::Duration;
use std::thread;

fn main() {

  // Linux device
  let dev = I2cdev::new("/dev/i2c-2").unwrap();

  // Set the calibration to the default setting.  This can
  // be set to a custom value specific for the device.
  let cal = Calibration {
    ..Default::default()
  };

  let mpu9250 = &mut Mpu9250::new(dev, Delay, cal).unwrap();

  // Initialise with default settings
  mpu9250.init().unwrap();

  // Probe the temperature
  loop {
    let temp = mpu9250.get_temperature_celsius().unwrap();
    println!("Temp: {} °C", temp);
    thread::sleep(Duration::from_millis(500));
  }

}
}

实用提示:使用以下命令为 BeagleBone / Raspbery Pi 编译。

cargo build --target=armv7-unknown-linux-musleabihf --release

校准

这些设备中使用的技术在很大程度上很嘈杂。每个组件都需要不同的校准方法。编译 calibrate.rs 文件,这将生成一个名为 calibrate 的可执行文件。运行时,calibrate 将为您提供校准说明。然后在每个组件的校准步骤之后,将特定于该设备的校准设置打印到控制台。这些值可以用于您的代码中。校准对温度敏感。因此,如果您想非常精确,您应该在不同的温度下重复校准。在高级别上,校准执行以下操作

  • 陀螺仪:取平均值,这称为偏差。
  • 加速度计:静止时的加速度计刻度应从 -1.0g 到 1.0g 范围内,其中 g 是 9.81 m/s。校准将考虑这一点。以及正交轴上的噪声。
  • 磁力计:这个组件对每个设备可能都大不相同。此校准将确保发现其极限。您需要将设备在所有方向上旋转。

MPU9250 文档

https://www.invensense.com/products/motion-tracking/9-axis/mpu-9250/

https://www.invensense.com/wp-content/uploads/2015/02/MPU-9250-Datasheet.pdf

https://www.invensense.com/wp-content/uploads/2015/02/MPU-9250-Register-Map.pdf

许可证

版权所有 © 2018 Simon M. Werner

本文件遵循Apache License 2.0(以下简称“许可证”);除非遵守许可证,否则不得使用此文件。
您可以在以下地址获取许可证副本:http://www.apache.org/licenses/LICENSE-2.0。除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言、权限和限制,请参阅许可证。

依赖项

~71KB