用于 MPU-6050 加速度计和陀螺仪的 Swift 库
这是一个用于基于 MPU-6050 加速度计和陀螺仪的开发板的库(Adafruit、Sparkfun 或其他制造商提供几种不同的型号)。
您将能够通过 I2C 读取沿 X、Y、Z 轴的当前加速度计和陀螺仪值,检查内部温度传感器的值,以及开启/关闭和重置设备。
有关如何解释这些数据的更多信息,请参阅 这份 Sparkfun 指南。
这些开发板通常由 3.3V 供电,并具有一个 ADD
引脚,允许您在同一总线上使用多个此类设备时选择备用 I2C 地址(将其置为高电平以使用 0x69 而不是默认的 0x68)。大多数情况下,您会将此引脚连接到 GND
。
它们还具有一个 INT
中断输出引脚,您可以忽略它,以及两个额外的 XDA
和 XCL
(或某些开发板上的 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 可执行文件。