RCWL-0516 微波雷达的 Swift 库
使用这个简单的库,您将能够使用 RCWL-0516 微波雷达来检测其探测范围内(周围 4-7 米,向上几米,具体取决于模块和 VIN
)的人(或动物)的移动。
此传感器是常用 PIR 运动传感器的替代品,PIR 传感器使用红外光来检测运动,并且其范围受到周围反射表面的限制。而 RCWL 信号可以穿透由非金属材料制成的相对较厚的表面(门、窗户、墙壁等)。
关于这个神秘模块的所有可用信息均由 Joe Desbonnet 发现并收集在 GitHub 上。如果您想了解更多信息,请查看。
该模块成本几美元,可以使用 5V VIN
工作,并具有 3.3V OUT
输出信号,这使我们能够将其连接到基本上任何 ARM 开发板的 GPIO 端口。
还提供了一个额外的 3.3V 输出,用于为外部设备供电,以及一个光传感器输入 CDS
。大多数情况下,您只需连接 VIN
、GND
,然后将 OUT
连接到您的 GPIO 之一。
每次传感器检测到运动时,OUT
引脚(通常在未检测到运动时为 0V)都会设置为高电平 (3.3V)。
雷达不会提供有关移动物体距离的信息,甚至不会提供其范围内的大概位置,它只是检测连续运动或进入其范围的新物体。
由于该模块使用 3Ghz 频段信号,因此不会对其他无线设备造成任何干扰。
多个模块可以在同一房间内一起使用。
2024 年更新:如果您来到这里是为了了解更多关于此传感器的信息,请查看此链接 和 此链接。
该库围绕 RCWL0516Radar
对象展开。
要创建 RCWL0516Radar
实例,我们只需使用从 SwiftyGPIO 获取的 GPIO 实例初始化该对象,该实例指向连接 OUT
的开发板引脚(例如 P18)。
import SwiftyGPIO
import RCWL0516Radar
let gpios = SwiftyGPIO.GPIOs(for:.RaspberryPi2)
var gp = gpios[.P18]!
let r = RCWL0516Radar(gp)
// Check for motion every second
while(true){
print(r.getStatus())
sleep(1)
}
调用 getStatus
我们可以知道传感器是否检测到运动(请注意,传感器需要大约一秒钟才能理解运动已停止)。
要注册在检测范围内开始或停止某种运动时将被调用的处理程序,请使用 onMotion(closure:)
和 onMotionStop(closure:)
。
r.onMotion{
print("Movement detected!")
}
r.onMotionStop{
print("No more movement...")
}
可以调用 clearMotionHandlers()
来取消注册处理程序。
所有 SwiftyGPIO 支持的开发板:Raspberry Pis、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/RCWL-0516-Radar.swift.git", majorVersion: 2),
]
)
目录 Examples
包含使用 SPM 的示例项目,编译它并使用 ./.build/debug/Test
运行示例。
如果不支持 SPM,您需要手动下载该库及其依赖项
wget https://raw.githubusercontent.com/uraimo/RCWL-0516-Radar.swift/master/Sources/RCWL0516Radar.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
一旦所有文件都已下载,创建一个额外的文件,其中将包含您的应用程序代码(例如 main.swift)。当您的代码准备就绪后,使用以下命令编译它
swiftc *.swift
编译器将创建一个名为 main 的可执行文件。