3个版本
0.2.601 | 2022年1月25日 |
---|---|
0.2.600 | 2022年1月25日 |
0.2.6 | 2022年1月12日 |
#1067 in 嵌入式开发
53KB
498 行
sensor-temp-humidity-sht40
这是一个用于Sensirion SHT40温度和相对湿度传感器的Rust嵌入式库。
状态
软件
驱动程序针对嵌入式-hal的稳定版0.2.6进行开发。所有从这个分支发布的版本都是0.2.6xx,xx在每次发布中递增。
请使用main
分支以支持hal-1.0.0。
硬件特性
- 目前,驱动程序功能完善,支持向传感器发送的所有命令。
- 驱动程序应该与SHT4x系列中的其他传感器(如SHT41或SHT45)一起工作,但这尚未经过测试。
库特性
-
"fp": 如果您的CPU或MCU具有浮点单元并且您想能够将测量值转换为常见单位(摄氏度、华氏度对于温度和%对于相对湿度),请启用此功能
cargobuild --featuresfp --release
默认情况下,驱动程序以毫度摄氏度或毫度华氏度的形式存储温度测量值,以每千分之一(pcm)的形式存储相对湿度,使用定点算术进行转换。
23.89摄氏度的温度将存储为23890,56.2%的湿度将存储为56200。
使用"fp"功能,API用户可以使用一个实用函数直接将测量值转换为常见单位,该函数接受一个测量值并返回一个MeasurementFp。除非您需要这种便利,否则最好不启用"fp",并将值作为整数传播,直到在向最终用户显示之前。
用法
详细API文档这里
导入此库和嵌入式-hal实现,然后实例化驱动程序
- 例如,假设您已将SH40传感器连接到Linux机器,并且它被检测为i2c设备
use linux_embedded_hal as hal;
use hal::{I2cdev, Delay};
use sensor_temp_humidity_sht40::{SHT40Driver, I2CAddr, Precision,
Measurement, TempUnit};
fn main() {
let i2c_dev = I2cdev::new("/dev/i2c-1").unwrap();
let mut sht40 = SHT40Driver::new(i2c_dev, I2CAddr::SHT4x_A, Delay);
if let Ok(measurement) =
sht40.get_temp_and_rh(Precision::High, TempUnit::MilliDegreesCelsius) {
println!("Temp: {temp} C, Relative Humidity: {rh} %",
temp = measurement.temp,
rh = measurement.rel_hum_pcm);
}
}
- 同样,如果您使用基于ESP32的板
use esp_idf_sys;
use esp_idf_hal::delay;
use esp_idf_hal::i2c;
use esp_idf_hal::prelude::*;
use sensor_temp_humidity_sht40::{SHT40Driver, I2CAddr, Precision, TempUnit};
fn main() {
let peripherals = Peripherals::take().unwrap();
let pins = peripherals.pins;
let i2c = peripherals.i2c0;
let scl = pins.gpio9;
let sda = pins.gpio8;
let i2c_config = <i2c::config::MasterConfig as Default>::default()
.baudrate(400.kHz().into());
let mut sensor_drv = SHT40Driver::new(
i2c::Master::<i2c::I2C0, _, _>::new(i2c,
i2c::MasterPins { sda, scl },
i2c_config).unwrap(),
I2CAddr::SHT4x_A,
delay::Ets);
let measurement = sensor_drv.get_temp_and_rh(Precision::High,
TempUnit::MilliDegreesCelsius);
println!("Measurement {:#?}", measurement);
}
许可证
库在Apache License,Version 2.0或BSD 3-clause许可证下双重授权(您可以选择在哪种许可证下使用代码)。
贡献
如果您想为此项目贡献代码,您同意您提交的任何代码都应如上双重授权,并将您的版权详细信息添加到相关源文件中。
依赖项
~80KB