Sensirion I2C SCD4x Driver
A platform-agnostic no_std Rust driver for the Sensirion SCD4x CO2 sensor family (SCD40/SCD41), built on embedded-hal traits. Based on embedded-i2c-scd4x and sgpc3-rs.
Sensirion SCD4x
The SCD4x is a miniature CO2, temperature, and relative humidity sensor using photoacoustic NDIR sensing.
Further information: Datasheet SCD4x
Features
- Full SCD4x command set (periodic & single-shot measurements, calibration, configuration)
- SCD41-specific commands behind the
scd41feature flag (single-shot, power down/wake up) - Async support via the
embedded-hal-asyncfeature - Optional
thiserrorintegration forstdenvironments - Optional
defmtsupport for embedded logging - Blocking and non-blocking measurement modes
Usage
Add to your Cargo.toml:
[]
= "0.5"
# For SCD41-specific features (single-shot, power management):
# scd4x = { version = "0.5", features = ["scd41"] }
# For async support:
# scd4x = { version = "0.5", features = ["embedded-hal-async"] }
Full Examples
- Linux / Raspberry Pi — blocking driver with
linux-embedded-hal - ESP32-C3 Embassy — async driver with
esp-haland Embassy
CLI Utility
Run the built-in CLI to read serial number and measurements (Linux only):
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contributing
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.