Loading...
Searching...
No Matches
sps30.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2020 HAW Hamburg
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser General
5 * Public License v2.1. See the file LICENSE in the top level directory for more
6 * details.
7 */
8
61#ifndef SPS30_H
62#define SPS30_H
63
64#include <stdbool.h>
65#include "periph/gpio.h"
66#include "periph/i2c.h"
67
68#ifdef __cplusplus
69extern "C" {
70#endif
71
75typedef struct {
78
82typedef struct {
84} sps30_t;
85
93typedef struct {
94 float mc_pm1;
95 float mc_pm2_5;
96 float mc_pm4;
97 float mc_pm10;
98 float nc_pm0_5;
99 float nc_pm1;
100 float nc_pm2_5;
101 float nc_pm4;
102 float nc_pm10;
103 float ps;
105
114
118#define SPS30_FAN_CLEAN_S (10U)
119
123#define SPS30_SER_ART_LEN (32U)
124
128#define SPS30_DEFAULT_ACI_S (604800UL)
129
147#ifndef CONFIG_SPS30_ERROR_RETRY
148#define CONFIG_SPS30_ERROR_RETRY (500U)
149#endif
161int sps30_init(sps30_t *dev, const sps30_params_t *params);
162
179
190
201bool sps30_data_ready(const sps30_t *dev, int *error);
202
212
225int sps30_read_ac_interval(const sps30_t *dev, uint32_t *seconds);
226
244int sps30_write_ac_interval(const sps30_t *dev, uint32_t seconds);
245
258
268int sps30_read_article_code(const sps30_t *dev, char *str, size_t len);
269
279int sps30_read_serial_number(const sps30_t *dev, char *str, size_t len);
280
288int sps30_reset(const sps30_t *dev);
289
297int sps30_sleep(const sps30_t *dev);
298
306int sps30_wakeup(const sps30_t *dev);
307
308#ifdef __cplusplus
309}
310#endif
311#endif /* SPS30_H */
Low-level GPIO peripheral driver interface definitions.
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:151
int sps30_read_ac_interval(const sps30_t *dev, uint32_t *seconds)
Read the fan auto-clean interval.
int sps30_start_measurement(const sps30_t *dev)
Enable the measurement action.
int sps30_start_fan_clean(const sps30_t *dev)
Run a fan cleaning cycle manually.
bool sps30_data_ready(const sps30_t *dev, int *error)
Ask the device if a measurement is ready for reading.
int sps30_read_article_code(const sps30_t *dev, char *str, size_t len)
Read the article code from the sensor as string.
sps30_error_code_t
SPS30 error codes (returned as negative values)
Definition sps30.h:109
int sps30_reset(const sps30_t *dev)
Reset the sensor.
int sps30_sleep(const sps30_t *dev)
Put the sensor in sleep mode.
int sps30_read_serial_number(const sps30_t *dev, char *str, size_t len)
Read the serial number from the sensor as string.
int sps30_write_ac_interval(const sps30_t *dev, uint32_t seconds)
Write the fan auto-clean interval.
int sps30_wakeup(const sps30_t *dev)
Wake up sensor from sleep mode (returns sensor to Idle mode)
int sps30_read_measurement(const sps30_t *dev, sps30_data_t *data)
Read a set of particulate matter measurements.
int sps30_stop_measurement(const sps30_t *dev)
Stops the measurement action.
int sps30_init(sps30_t *dev, const sps30_params_t *params)
Initialize SPS30 sensor driver.
@ SPS30_I2C_ERROR
Some I2C operation failed.
Definition sps30.h:112
@ SPS30_CRC_ERROR
The CRC check of received data failed.
Definition sps30.h:111
@ SPS30_OK
Everything went fine.
Definition sps30.h:110
Low-level I2C peripheral driver interface definition.
Set of measured particulate matter values.
Definition sps30.h:93
float nc_pm10
Number concentration of all particles <= 10µm [#/cm^3].
Definition sps30.h:102
float mc_pm10
Mass concentration of all particles <= 10µm [µg/m^3].
Definition sps30.h:97
float nc_pm0_5
Number concentration of all particles <= 0.5µm [#/cm^3].
Definition sps30.h:98
float nc_pm4
Number concentration of all particles <= 4µm [#/cm^3].
Definition sps30.h:101
float mc_pm1
Mass concentration of all particles <= 1µm [µg/m^3].
Definition sps30.h:94
float mc_pm4
Mass concentration of all particles <= 4µm [µg/m^3].
Definition sps30.h:96
float ps
Typical particle size [µm].
Definition sps30.h:103
float nc_pm2_5
Number concentration of all particles <= 2.5µm [#/cm^3].
Definition sps30.h:100
float mc_pm2_5
Mass concentration of all particles <= 2.5µm [µg/m^3].
Definition sps30.h:95
float nc_pm1
Number concentration of all particles <= 1µm [#/cm^3].
Definition sps30.h:99
SPS30 device parameters.
Definition sps30.h:75
i2c_t i2c_dev
I2C dev the sensor is connected to.
Definition sps30.h:76
SPS30 device instance.
Definition sps30.h:82
sps30_params_t p
parameters of the sensor device
Definition sps30.h:83