#embedded-hal #async #sensor

no-std bmp5xx

True-to-spec async I2C driver for the BMP580/BMP581/BMP585 barometric pressure sensors

3 releases (stable)

Uses new Rust 2024

new 2.0.0 Jun 13, 2026
1.0.0 Jun 9, 2026
0.1.0 Jun 8, 2026

#1514 in Embedded development

GPL-3.0-or-later

23KB
476 lines

True-to-spec async I2C driver for the BMP580/BMP581/BMP585 barometric pressure sensors.

Features

  • no_std compatible, works without an allocator
  • Widely compatible, generic over embedded_hal_async I2C traits
  • 100% documentation coverage
  • Based on Bosch Sensortec BMP581 datasheet, written by a human
  • Fully tested on real hardware: compatible with Adafruit BMP581 development board

Usage

Getting started is easy:

// initialize the sensor
let bmp5 = Bmp5xx::new(i2c, Delay, 0x47);
bmp5.init().await.unwrap();

// new pressure measurement
let pressure = bmp5.meas_pres().await.unwrap();

Advanced operations:

// change oversampling rate
bmp5.osr_temp(Oversampling::X8);
bmp5.osr_pres(Oversampling::X128);

// set up interrupts
bmp5.int(Interrupt::default().enable(true)).await.unwrap();

// start continuous measurement
bmp5.start_continuous(true).await.unwrap();

bmp5xx

True-to-spec async I2C driver for the BMP580/BMP581/BMP585 barometric pressure sensors.

Features

  • no_std compatible, works without an allocator
  • Widely compatible, generic over embedded_hal_async I2C traits
  • 100% documentation coverage
  • Based on Bosch Sensortec BMP581 datasheet, written by a human
  • Fully tested on real hardware: compatible with Adafruit BMP581 development board

Usage

Getting started is easy:

// initialize the sensor
let bmp5 = Bmp5xx::new(i2c, Delay, 0x47);
bmp5.init().await.unwrap();

// new pressure measurement
let pressure = bmp5.meas_pres().await.unwrap();

Advanced operations:

// change oversampling rate
bmp5.osr_temp(Oversampling::X8);
bmp5.osr_pres(Oversampling::X128);

// set up interrupts
bmp5.int(Interrupt::default().enable(true)).await.unwrap();

// start continuous measurement
bmp5.start_continuous(true).await.unwrap();

License: GPL-3.0-or-later

Dependencies

~205KB