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
9#pragma once
10
62
63#include <stdbool.h>
64#include "periph/gpio.h"
65#include "periph/i2c.h"
66
67#ifdef __cplusplus
68extern "C" {
69#endif
70
74typedef struct {
77
81typedef struct {
83} sps30_t;
84
92typedef struct {
93 float mc_pm1;
94 float mc_pm2_5;
95 float mc_pm4;
96 float mc_pm10;
97 float nc_pm0_5;
98 float nc_pm1;
99 float nc_pm2_5;
100 float nc_pm4;
101 float nc_pm10;
102 float ps;
104
113
117#define SPS30_FAN_CLEAN_S (10U)
118
122#define SPS30_SER_ART_LEN (32U)
123
127#define SPS30_DEFAULT_ACI_S (604800UL)
128
146#ifndef CONFIG_SPS30_ERROR_RETRY
147#define CONFIG_SPS30_ERROR_RETRY (500U)
148#endif
150
160int sps30_init(sps30_t *dev, const sps30_params_t *params);
161
178
189
200bool sps30_data_ready(const sps30_t *dev, int *error);
201
211
224int sps30_read_ac_interval(const sps30_t *dev, uint32_t *seconds);
225
243int sps30_write_ac_interval(const sps30_t *dev, uint32_t seconds);
244
257
267int sps30_read_article_code(const sps30_t *dev, char *str, size_t len);
268
278int sps30_read_serial_number(const sps30_t *dev, char *str, size_t len);
279
287int sps30_reset(const sps30_t *dev);
288
296int sps30_sleep(const sps30_t *dev);
297
305int sps30_wakeup(const sps30_t *dev);
306
307#ifdef __cplusplus
308}
309#endif
Low-level GPIO peripheral driver interface definitions.
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:144
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:108
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:111
@ SPS30_CRC_ERROR
The CRC check of received data failed.
Definition sps30.h:110
@ SPS30_OK
Everything went fine.
Definition sps30.h:109
Low-level I2C peripheral driver interface definition.
Set of measured particulate matter values.
Definition sps30.h:92
float nc_pm10
Number concentration of all particles <= 10µm [#/cm^3].
Definition sps30.h:101
float mc_pm10
Mass concentration of all particles <= 10µm [µg/m^3].
Definition sps30.h:96
float nc_pm0_5
Number concentration of all particles <= 0.5µm [#/cm^3].
Definition sps30.h:97
float nc_pm4
Number concentration of all particles <= 4µm [#/cm^3].
Definition sps30.h:100
float mc_pm1
Mass concentration of all particles <= 1µm [µg/m^3].
Definition sps30.h:93
float mc_pm4
Mass concentration of all particles <= 4µm [µg/m^3].
Definition sps30.h:95
float ps
Typical particle size [µm].
Definition sps30.h:102
float nc_pm2_5
Number concentration of all particles <= 2.5µm [#/cm^3].
Definition sps30.h:99
float mc_pm2_5
Mass concentration of all particles <= 2.5µm [µg/m^3].
Definition sps30.h:94
float nc_pm1
Number concentration of all particles <= 1µm [#/cm^3].
Definition sps30.h:98
SPS30 device parameters.
Definition sps30.h:74
i2c_t i2c_dev
I2C dev the sensor is connected to.
Definition sps30.h:75
SPS30 device instance.
Definition sps30.h:81
sps30_params_t p
parameters of the sensor device
Definition sps30.h:82