9个版本
0.1.8 | 2024年6月8日 |
---|---|
0.1.7 | 2024年4月27日 |
#1383 in 嵌入式开发
每月 23次下载
63KB
988 行
STHS34PF80
用于STMicroelectronics STHS34PF80存在和运动检测传感器的Rust库
https://github.com/marvinrobot42/stsh34pf80.git
STHS34PF80传感器检测红外存在,意味着一个温暖的“身体”静止物体。它还可以进行环境冲击温度检测(过度的热量变化)和运动检测。
许多可配置的检测阈值、数据输出速率、中断引脚、低通滤波器、灵敏度设置。
功能
- 更新为使用嵌入式-hal版本1.0.x
- 为嵌入式使用(ESP32-C3、-C6和-S3)和树莓派设计
- 可配置的中断引脚
- 基于存在、运动和环境冲击测量的数据就绪状态读取
- 如果需要,则配置低通滤波器
- 滞后获取器和设置器
- 灵敏度获取器和设置器
- 增益获取器和设置器
- 数据输出速率、平均调整获取器和设置器
- 易于使用的Measurements结构体
- 易于使用的初始化函数
- 易于使用的get_measurement_blocking和get_measurement_timeout(带有超时参数)
- 与no_std嵌入式兼容
注意
此驱动程序基于Sparkfun Arduino STHS34PF80驱动程序。用于此驱动程序开发的Sparkfun STHS34PF80 https://www.sparkfun.com/products/22494 传感器板。
不幸的是,github仓库名称拼写不正确,但现在陷入了困境。正确的设备和库名称是sths34pf80,而拼写错误的仓库名称是stsh34pf80。
近期版本历史
- 0.1.8 更新README.md
- 0.1.7 修复了下面的示例,添加了树莓派示例
- 0.1.5 在链接中修复了github仓库名称
- 0.1.4 文档改进。
- 0.1.0 初始发布。
用法
将依赖关系添加到Cargo.toml
。
[dependencies.sths34pf80]
version = "0.1"
创建一个硬件特定的I²C驱动程序接口和延迟函数。从I²C接口和延迟函数创建Sths34pf80结构。如果需要,配置中断引脚属性。
初始化Sths34pf80(initialize() fn设置“标准”调整和ODR参数)。仅在需要更广泛的/更少的检测范围时设置存在、运动或环境冲击阈值。读取STHS34PF80状态并检查是否有新数据就绪,然后get_func_status并匹配返回的FUNC_STATUS枚举以查看哪个值发生了变化,然后获取这些值。
简单示例
更完整的示例在仓库examples路径中
use sths34pf80::{Sths34pf80};
...
fn main() -> Result<()> {
...
let peripherals = Peripherals::take().unwrap();
let pins = peripherals.pins;
let sda = pins.gpio0;
let scl = pins.gpio1;
let i2c = peripherals.i2c0;
let config = I2cConfig::new().baudrate(100.kHz().into());
let i2c_dev = I2cDriver::new(i2c, sda, scl, &config)?;
let mut sths34pf80 = Sths34pf80::new(i2c_dev, Ets{}); // Ets is ESP32 IDF delay function
sths34pf80.initialize().unwrap();
loop {
if let Ok(measurements) = sths34pf80.get_measurements_timeout(10) {
match measurements.presence_value {
Some(presence_value) => info!("presence detected, value is {}", presence_value),
_ => (),
}
match measurements.motion_value {
Some(motion_value) => info!("motion detected, value is {}", motion_value),
_ => (),
}
match measurements.ambient_shock_value {
Some(abmient_shock_value) => info!("ambient shock temp detected, value is {}", abmient_shock_value),
_ => (),
}
} else {
info!("timeout with get_measurements_timeout call");
}
FreeRtos::delay_ms(10000);
}
}
许可证
您可以根据以下任一条款自由复制、修改和分发此应用程序
- Apache许可证,版本2.0(LICENSE-Apache-2.0 或 https://opensource.org/licenses/Apache-2.0)
- MIT许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任由您选择。
本项目与STMicroelectronics或Sparkfun没有任何关联,也不获得任何形式的认可。
依赖项
~0.3–1.3MB
~14K SLoC