用于 DS18B20 数字温度传感器的 Swift 库
这是一个用于 DS18B20 温度传感器的库,该传感器有多种形式,从经典 IC 到防水探头。
该传感器使用 1-Wire 协议进行通信。
传感器可以使用 3.3V 电源供电,信号引脚需要一个 4.7KΩ 的上拉电阻,连接到相同的电压。
RaspberryPi 上的 1-Wire 端口(引脚 4)需要通过 raspi-config
启用后才能使用(需要重启),启用 1-Wire 后,您将失去将该引脚用作标准 GPIO 的能力。
传感器返回的温度由 DS18B20
对象的唯一属性提供:Temperature
。
该值以摄氏度为单位,如果您需要华氏度值,则需要手动转换。
与其他库一样,要初始化此对象,您需要首先从 SwiftyGPIO 获取一个 OneWireInterface
实例,然后通过提供从机 ID 来初始化 DS18B20 传感器
let onewires = SwiftyGPIO.hardware1Wires(for:.RaspberryPi2)!
let onewire = onewires[1]
let slaveId = onewire.getSlaves()[0]
let ds = DS18B20(onewire,slaveId: slaveId)
print(ds.Temperature())
从机 ID 是唯一的,用于标识特定的传感器,因为可以将多个传感器连接到同一条 1-Wire 总线。
在大多数情况下,您只需硬编码您想要的从机 ID,而不是从可用从机设备的列表中选择一个,因为列表有时可能会以不同的顺序返回项目。
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/DS18B20.swift.git", majorVersion: 2),
]
)
Examples
目录包含使用 SPM 的示例项目,编译它并使用 ./.build/debug/TestDS18B20
运行示例。
如果不支持 SPM,您需要手动下载库及其依赖项
wget https://raw.githubusercontent.com/uraimo/DS18B20.swift/master/Sources/DS18B20.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/SunXi.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/1Wire.swift
一旦所有文件都已下载,创建一个额外的文件,其中将包含您的应用程序代码(例如 main.swift)。当您的代码准备就绪后,使用以下命令编译它
swiftc *.swift
编译器将创建一个 main 可执行文件。