#sensor #driver #i2c #embedded-hal-driver

no-std sps30-i2c

Platform-agnostic Rust driver for the SPS30 particulate matter sensor

1 unstable release

0.1.0 Aug 11, 2020
0.0.1 Aug 7, 2020

#532 in Embedded development


286 lines

Rust SPS30 Particulate Matter Sensor Driver

crates.io Docs Build Status

This is a platform agnostic Rust driver for the SPS30 particulate matter sensor using the embedded-hal traits.

The driver supports only floating point output and is written for the firmware version 2.1. Although it is fully compatible with older versions and the 2.2 version, it doesn't fully support the latest.

This driver allows you to:

  • Enter measurement mode. See: start_measurement().
  • Exit measurement mode. See: stop_measurement.
  • Poll for the availability of new measurements. See: read_data_ready_flag().
  • Read the measured values. See: read_measured_values().
  • Enter sleep mode. See: sleep().
  • Exit sleep mode. See: wake_up().
  • Start the fan-cleaning manually. See: start_fan_cleaning().
  • Read the interval[s] of the periodic fan-cleaning. See: read_auto_cleaning_interval().
  • Write the interval[s] of the periodic fan-cleaning. See: write_auto_cleaning_interval().
  • Read device product type. See: read_device_product_type().
  • Read device serial number. See: read_device_serial_number().
  • Read firmware version. See: read_firmware_version().
  • Read device status register. See: read_device_status_register().
  • Clear device status register. See: clear_device_status_register().
  • Reset the device. See: device_reset().

The device

The SPS30 Particulate Matter (PM) sensor is a technological breakthrough in optical PM sensors. Its measurement principle is based on laser scattering and makes use of Sensirion's innovative contamination-resistance technology. This technology, together with high-quality and long-lasting components, enables precise measurements from its first operation and throughout its lifetime of more than ten years. In addition, Sensiron's advanced algorithms provide superior precision for different PM types and higher-resolution particle size binning, opening up new possibilities for the detection of different sorts of environmental dust and other particles.

The SPS30 has been designed for use in various applications and devices, such as:

  • Air purifiers
  • HVAC equipment
  • Demand-controlled ventilation systems
  • Air conditioners
  • Air quality and environmental monitors
  • Smart home and IoT devices



To use this driver, import this crate and an embedded-hal implementation, then instantiate the device.

Please see examples folder.


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


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.