https://github.com/sensirion/embedded-sps
Embedded i2c Driver for Sensirion Particulate Matter Sensors - Download the Zip Package from the Release Page
https://github.com/sensirion/embedded-sps
driver embedded i2c particulate-matter particulates-sensors sensirion sensirion-embedded-drivers sensor sps30
Last synced: 6 months ago
JSON representation
Embedded i2c Driver for Sensirion Particulate Matter Sensors - Download the Zip Package from the Release Page
- Host: GitHub
- URL: https://github.com/sensirion/embedded-sps
- Owner: Sensirion
- License: bsd-3-clause
- Created: 2018-11-02T13:49:56.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-04-19T13:43:25.000Z (over 1 year ago)
- Last Synced: 2024-07-31T20:39:47.061Z (about 1 year ago)
- Topics: driver, embedded, i2c, particulate-matter, particulates-sensors, sensirion, sensirion-embedded-drivers, sensor, sps30
- Language: C
- Homepage: https://github.com/Sensirion/embedded-sps/releases
- Size: 90.8 KB
- Stars: 45
- Watchers: 12
- Forks: 15
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# embedded-sps [](https://circleci.com/gh/Sensirion/embedded-sps) [](https://raw.githubusercontent.com/Sensirion/embedded-sps/master/LICENSE)
This repository contains the embedded i2c driver sources for Sensirion's
SPS product line.If you just want to use the driver, it is recommended to download the release
zip from https://github.com/Sensirion/embedded-sps/releasesThe UART driver of the SPS is available in the
[embedded-uart-sps](https://github.com/Sensirion/embedded-uart-sps) repository.*Arduino* (i2c): https://github.com/Sensirion/arduino-sps
## Clone this repository
```
git clone --recursive https://github.com/Sensirion/embedded-sps.git
```## Repository content
* `embedded-common` submodule repository for common HAL
* `sps30-i2c` SPS30 i2c driver## Hardware setup
* Make sure that the SPS30's Pin 4 ("Interface select") is connected to GND, on
power-up of the sensor, otherwise the sensor works in UART instead of i2c
mode. Note that the interface-select configuration is read on every start of
the sensor including after a soft-reset.* The i2c wires need appropriate pull-up resistors if they're not included or
enabled in your microprocessor.## Collecting resources
```
make release
```
This will create a release folder with the necessary driver files in it,
including a Makefile. That way, you have just ONE folder with all the sources
ready to build your driver for your platform.## Files to adjust (from embedded-common)
To adapt the driver to your platform, you only need to touch the following* `sensirion_arch_config.h` (architecture specifics, you need to specify
the integer sizes if your compiler toolchain does not provide `stdint.h`)and depending on your i2c implementation either of the following:
* `embedded-common/hw_i2c/sensirion_hw_i2c_implementation.c`
functions for hardware i2c communication if your platform has a dedicated I2C
controller.
* `embedded-common/sw_i2c/sensirion_sw_i2c_implementation.c`
functions for software i2c communication if your platform does not have a
dedicated I2C controller and communication happens with GPIOs. In this case
you need to make sure that appropriate I2C pull-up resistors are used.## Building the driver
1. Adjust `sensirion_arch_config.h` if you don't have the `` header
file available.
2. Either use one of the provided sample implementations implement necessary
functions in one of the `*_implementation.c` files described above (either in
the `hw_i2c` or `sw_i2c` folder).To reuse a provided sample implementation you can specify it in a custom
build configuration. For this adapt the file `user_config.inc` in the
driver:`user_config.inc` for hardware i2c with dedicated i2c controller:
```
CONFIG_I2C_TYPE=hw_i2c
hw_i2c_impl_src = ${embedded-common}/hw_i2c/sample-implementations/linux_user_space/sensirion_hw_i2c_implementation.c
````user_config.inc` for software i2c with bit-banging on GPIOs:
```
CONFIG_I2C_TYPE=sw_i2c
sw_i2c_impl_src = ${embedded-common}/sw_i2c/sample-implementations/linux_user_space/sensirion_sw_i2c_implementation.c
```3. Run `make`
4. Run the compiled example usage with `./sps30_example_usage`. Note that
hardware access permissions (e.g. `sudo`) might be needed.---
Please check the [embedded-common](https://github.com/Sensirion/embedded-common)
repository for further information and sample implementations.---