Expand description
sen0177
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.
Modules
- Sensors connected to the I2C bus
- Sensors connected to a serial UART
Structs
- A single air quality sensor reading
Enums
- Describes errors returned by the air quality sensor
Traits
- Trait representing a bus-agnostic air quality sensor