#air-quality #sensor #embedded-hal #pmsa003i

no-std sen0177

Read air quality data from the SEN0177 and PMSA003I sensors

7 releases (breaking)

0.6.0 Jan 10, 2024
0.5.0 Nov 5, 2023
0.4.0-alpha.1 May 30, 2022
0.3.0-alpha.1 May 28, 2022
0.1.1 Aug 25, 2020

#1104 in Embedded development

Apache-2.0

14KB
213 lines

sen0177

crates.io Documentation Apache 2.0 Build Status

sen0177 is a Rust library/crate that reads air quality data from the SEN0177 air quality sensor.

Prerequisites

  • You've connected the sensor to a UART or I2C bus on your device, and your device has a crate implementing the applicable embedded_hal traits.
  • For a UART-based sensor, you've configured the UART for 9600 baud, 8 data bits, no parity, 1 stop bit, and no flow control.

Setup

Include the following in your Cargo.toml file:

[dependencies]
sen0177 = "0.6"

If you are in a no_std environment, you may depend on this crate like so:

[dependencies]
sen0177 = { version = "0.6", default-features = false }

Usage

See the examples/ directory.

Note that linux-embedded-hal does not (as of this writing) have a release supporting the stable 1.x series of embedded-hal, so the Linux example has to pull linux-embedded-hal from GitHub.

Note that the serial device occasionally returns bad data. If you receive SensorError::BadMagic or SensorError::ChecksumMismatch from the AirQualitySensor::read call, a second try will usually succeed.

Gotchas

Raspberry Pi

If you're using this with a Raspberry Pi, note that by default the primary UART is set up as a Linux serial console. You will need to disable that (by editing /boot/cmdline.txt) before this will work. Instead of using a specifiy TTY device node, you should use /dev/serial0, which is a symlink to the proper device.

Alternatively, you can use the second UART, but you'll need to load an overlay to assign it to GPIO pins. See UART configuration and the UART-related overlays for more information.

Dependencies

~85KB