Skip to content

Platform-agnostic Rust driver for the HDC2080, HDC2010 and HDC2021 low-power humidity and temperature digital sensor

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

eldruin/hdc20xx-rs

Repository files navigation

Rust HDC2080, HDC2021 and HDC2010 Low-Power Humidity and Temperature Digital Sensor Driver

crates.io Docs Build Status Coverage Status

This is a platform agnostic Rust driver for the HDC2080, HDC2021 and HDC2010 low-power humidity and temperature digital sensor using the embedded-hal traits.

This driver allows you to:

  • Set the measurement mode. Temperature only or temperature and humidity. See: set_measurement_mode().
  • Make one shot measurement. See: read().
  • Read the data and interrupt status. See: status().
  • Trigger a software reset. See: software_reset().
  • Read the manufacturer ID. See: manufacturer_id().
  • Read the device ID. See: device_id().

The devices

The HDC2080 device is an integrated humidity and temperature sensor that provides high accuracy measurements with very low power consumption in a small DFN package. The capacitive-based sensor includes new integrated digital features and a heating element to dissipate condensation and moisture.

The HDC2080 digital features include programmable interrupt thresholds to provide alerts and system wake-ups without requiring a microcontroller to be continuously monitoring the system. Combined with programmable sampling intervals, a low power consumption, and a support for a 1.8-V supply voltage, the HDC2080 is designed for battery-operated systems.

This driver is compatible with HDC2080, HDC2021 and HDC2010.

Datasheets: HDC2080, HDC2021, HDC2010

Usage

To use this driver, import this crate and an embedded_hal implementation, then instantiate the device.

Please find additional examples using hardware in this repository: driver-examples

use embedded_hal::blocking::delay::DelayMs;
use hdc20xx::{Hdc20xx, SlaveAddr};
use linux_embedded_hal::{Delay, I2cdev};

fn main() {
    let mut delay = Delay {};
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let address = SlaveAddr::default();
    let mut sensor = Hdc20xx::new(dev, address);
    loop {
        loop {
            let result = sensor.read();
            match result {
                Err(nb::Error::WouldBlock) => delay.delay_ms(100_u8),
                Err(e) => {
                    println!("Error! {:?}", e);
                }
                Ok(data) => {
                    println!(
                        "Temperature: {:2}°C, Humidity: {:2}%",
                        data.temperature,
                        data.humidity.unwrap()
                    );
                }
            }
        }
    }
}

Support

For questions, issues, feature requests, and other changes, please file an issue in the github project.

License

Licensed under either of

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.

About

Platform-agnostic Rust driver for the HDC2080, HDC2010 and HDC2021 low-power humidity and temperature digital sensor

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages