# sen0177
[![crates.io][crates-shield]][crates-url]
[![Documentation][docs-shield]][docs-url]
[![Apache 2.0][license-shield]][license-url]
[![Build Status][build-shield]][build-url]
`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:
```toml
[dependencies]
sen0177 = "0.6"
```
If you are in a `no_std` environment, you may depend on this crate like so:
```toml
[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](https://www.raspberrypi.org/documentation/configuration/uart.md)
and the [UART-related
overlays](https://www.raspberrypi.org/documentation/configuration/uart.md)
for more information.
[crates-shield]: https://img.shields.io/crates/v/sen0177.svg
[crates-url]: https://crates.io/crates/sen0177
[docs-shield]: https://docs.rs/sen0177/badge.svg
[docs-url]: https://docs.rs/sen0177
[license-shield]: https://img.shields.io/crates/l/sen0177.svg
[license-url]: https://github.com/kelnos/sen0177-rs/blob/maim/LICENSE
[build-shield]: https://img.shields.io/github/workflow/status/kelnos/sen0177-rs/CI
[build-url]: https://github.com/kelnos/sen0177-rs/actions