MPU-6050.swift

用于 MPU-6050 加速度计和陀螺仪的 Swift 库

Linux-only Swift 4 compatible License: MIT

MPU-6050

概述

这是一个用于基于 MPU-6050 加速度计和陀螺仪的开发板的库(Adafruit、Sparkfun 或其他制造商提供几种不同的型号)。

您将能够通过 I2C 读取沿 X、Y、Z 轴的当前加速度计和陀螺仪值,检查内部温度传感器的值,以及开启/关闭和重置设备。

有关如何解释这些数据的更多信息,请参阅 这份 Sparkfun 指南

硬件细节

这些开发板通常由 3.3V 供电,并具有一个 ADD 引脚,允许您在同一总线上使用多个此类设备时选择备用 I2C 地址(将其置为高电平以使用 0x69 而不是默认的 0x68)。大多数情况下,您会将此引脚连接到 GND

它们还具有一个 INT 中断输出引脚,您可以忽略它,以及两个额外的 XDAXCL(或某些开发板上的 ASDA 和 ASCL)I2C 引脚,用于与 MPU 的小型内部处理器(它有自己的固件,但没有关于如何更改它的文档)控制的辅助设备进行通信。

某些开发板可能具有额外的引脚,此库唯一需要的是 I2C 接口,将其连接到您的 ARM 开发板即可。

用法

所有加速度计和陀螺仪值都作为主 MPU6050 类的属性公开,但也可以通过调用 getAll() 一次性检索,该方法返回包含所有值的元组。

与其他库一样,要初始化此对象,您需要首先从 SwiftyGPIO 检索一个 I2CInterface 实例,然后启用设备。

let i2cs = SwiftyGPIO.hardwareI2Cs(for:.RaspberryPi2)!
let i2c = i2cs[1]

let mp = MPU6050(i2c)

mp.enable(true)

while(true){
    let (ax,ay,az,t,gx,gy,gz) = mp.getAll()
    print("Accelerometer - x:\(ax),y:\(ay),z:\(az)")
    print("Gyroscope - x:\(gx),y:\(gy),z:\(gz)")
    print("Temperature(°c): \(t)")
    sleep(1)
}

虽然您通常需要同时获取所有值,但您可以使用这些属性将它们作为单个值检索。

  public var AccelX: Int
  public var AccelY: Int 
  public var AccelZ: Int
  public var Temp: Float
  public var GyroX: Int
  public var GyroY: Int
  public var GyroZ: Int

所有 Int 值都是无符号 16 位整数。

该设备还具有自检功能,可以验证此 MEMS 芯片的内部微观机制是否按预期工作,但目前尚未实现这些附加功能。

即使您的设备位于平坦表面且静止不动,您也应始终预期加速度计和陀螺仪值会略有变化。

支持的开发板

SwiftyGPIO 支持的每个开发板:RaspberryPis、BeagleBones、C.H.I.P. 等...

要使用此库,您需要一个运行 Swift 3.x/4.x 的 Linux ARM 开发板。

下面的示例将使用 RaspberryPi 2 开发板,但您可以轻松修改示例以使用其他受支持的开发板之一,Examples 目录中提供了 RaspberryPi2 的完整工作演示项目。

安装

有关 Swift 安装说明,请参阅 SwiftyGPIO 的 readme 文件。

一旦您的开发板运行 Swift,如果您的版本支持 Swift Package Manager,您可以简单地将此库添加为项目的依赖项,并使用 swift build 进行编译。

  let package = Package(
      name: "MyProject",
      dependencies: [
        .Package(url: "https://github.com/uraimo/MPU-6050.swift.git", majorVersion: 2),
      ]
  ) 

Examples 目录包含使用 SPM 的示例项目,编译它并使用 ./.build/debug/TestMPU6050 运行示例。

如果不支持 SPM,您需要手动下载库及其依赖项。

wget https://raw.githubusercontent.com/uraimo/MPU-6050.swift/master/Sources/MPU-6050.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SwiftyGPIO.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/Presets.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/I2C.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SunXi.swift  

并且一旦下载了所有文件,创建一个额外的文件,其中将包含您的应用程序的代码(例如 main.swift)。当您的代码准备就绪后,使用以下命令编译它

swiftc *.swift

编译器将创建一个 main 可执行文件。