Crates.io | embedded-sht3x |
lib.rs | embedded-sht3x |
version | 0.1.0 |
source | src |
created_at | 2024-01-25 13:06:34.728507 |
updated_at | 2024-01-25 13:06:34.728507 |
description | Platform-agnostic Rust driver for the SHT3x temperature and humidity sensors. |
homepage | https://gitlab.com/ghislainmary/embedded-sht3x |
repository | https://gitlab.com/ghislainmary/embedded-sht3x |
max_upload_size | |
id | 1113826 |
size | 39,209 |
This is a platform agnostic Rust driver the SHT3x (SHT30, SHT31 and SHT35) digital
humidity and temperature sensors using the embedded-hal
traits.
The sensors of the SHT3x family are humidity and temperature sensors, that are fully calibrated and working with wide range of supply voltages, from 2.15 V to 5.5 V, and using an I²C interface.
They procure fast start-up and measurement times, and great accuracy. The typical accuracies are the following:
SHT30 | SHT31 | SHT35 |
---|---|---|
±2 %RH / ±0.2 °C | ±2 %RH / ±0.2 °C | ±1.5 %RH / ±0.1 °C |
The SHT3x is equipped with an internal heater which can increase the temperature in the range of a few degrees centigrade, and that is useful for pausibility checks.
To use this driver, import what you need from this crate and an embedded-hal
implentation, then instatiate the device.
use embedded_sht3x::{Repeatability::High, Sht3x, DEFAULT_I2C_ADDRESS};
use linux_embedded_hal as hal;
fn main() -> Result<(), embedded_sht3x::Error<hal::I2CError>> {
// Create the I2C device from the chosen embedded-hal implementation,
// in this case linux-embedded-hal
let i2c = match hal::I2cdev::new("/dev/i2c-1") {
Err(err) => {
eprintln!("Could not create I2C device: {}", err);
std::process::exit(1);
}
Ok(i2c) => i2c,
};
// Create the sensor and configure its repeatability
let mut sensor = Sht3x::new(i2c, DEFAULT_I2C_ADDRESS, hal::Delay {});
sensor.repeatability = High;
// Perform a temperature and humidity measurement
let measurement = sensor.single_measurement()?;
println!(
"Temperature: {:.2} °C, Relative humidity: {:.2} %",
measurement.temperature, measurement.humidity
);
Ok(())
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.