#pressure-sensor #pressure #st #mems #multi-fluid

no-std lps28dfw

Platform-agnostic Rust driver for the LPS28DFW pressure sensor

2 releases

Uses old Rust 2015

0.1.6 Jul 15, 2024
0.1.5 Jul 7, 2024

#300 in Embedded development

MIT/Apache

27KB
444 lines

hardware driver for ST LPS28DFW pressure sensor

This is a platform agnostic Rust driver for the LPS28DFW pressure sensor from ST, based on the embedded-hal traits.

This driver allows you to:

  • read pressure and temperature values from sensor
  • enable pressure value interrupts
  • set sampling rates

The device

LPS28DFW is a high precision MEMS pressure and temperature sensor for multiple fluids. Pressure measuring range is variable between 1024 and 4096 kPa.

Datasheet: LPS28DFW

Usage

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

use ds1307::{DateTimeAccess, Ds1307, NaiveDate};
use linux_embedded_hal::I2cdev;

fn main() {
    let dev = I2cdev::new("/dev/i2c-1").unwrap();
    let mut pressure_sensor = LPS28DFW::new(dev);
    let mut pressure_sensor_cfg = LPS28DFW::get_default_config();
    pressure_sensor.write_config(pressure_sensor_cfg).unwrap();
    let pressure = pressure_sensor.get_pressure().unwrap();
    println!("{pressure} kPa");
}

Todos

  • fifo control and status methods
  • temperature sensor methods
  • pressure data output methods
  • oneshot mode
  • autoresets
  • update tests
  • create raspberry pi example for i2c testing

Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.62 and up. It might compile with older versions but that may change in any new patch release.

Support

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

License

Licensed under

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in MIT Licence text.

Dependencies

~1MB
~22K SLoC