Loading...
Searching...
No Matches
sen5x.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2023 TU Braunschweig Institut für Betriebssysteme und Rechnerverbund
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
20#include <stdbool.h>
21#include <stdint.h>
22
23#include "periph/i2c.h"
24#include "saul.h"
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
63
67typedef struct {
69 uint8_t i2c_addr;
71
75typedef struct {
77} sen5x_t;
78
88int sen5x_init(sen5x_t *dev, const sen5x_params_t *params);
89
98int sen5x_reset(const sen5x_t *dev);
99
105void sen5x_wake(const sen5x_t *dev);
106
113void sen5x_wake_no_pm(const sen5x_t *dev);
114
120void sen5x_sleep(const sen5x_t *dev);
121
127void sen5x_clean_fan(const sen5x_t *dev);
128
138
146
154
163void sen5x_set_temperature_offset(const sen5x_t *dev, int16_t temp_offset,
164 int16_t slope, uint16_t time_constant);
165
174void sen5x_get_temperature_offset(const sen5x_t *dev, int16_t *temp_offset,
175 int16_t *slope, uint16_t *time_constant);
176
185void sen5x_set_warm_start(const sen5x_t *dev, uint16_t warm_start);
186
194void sen5x_get_warm_start(const sen5x_t *dev, uint16_t *warm_start);
195
211 const sen5x_t *dev, int16_t index_offset, int16_t learning_time_offset_hours,
212 int16_t learning_time_gain_hours, int16_t gating_max_duration_minutes,
213 int16_t std_initial, int16_t gain_factor);
214
231 const sen5x_t *dev, int16_t *index_offset, int16_t *learning_time_offset_hours,
232 int16_t *learning_time_gain_hours, int16_t *gating_max_duration_minutes,
233 int16_t *std_initial, int16_t *gain_factor);
234
254 const sen5x_t *dev, int16_t index_offset, int16_t learning_time_offset_hours,
255 int16_t learning_time_gain_hours, int16_t gating_max_duration_minutes,
256 int16_t std_initial, int16_t gain_factor);
257
277 const sen5x_t *dev, int16_t *index_offset, int16_t *learning_time_offset_hours,
278 int16_t *learning_time_gain_hours, int16_t *gating_max_duration_minutes,
279 int16_t *std_initial, int16_t *gain_factor);
280
290void sen5x_set_rht_acceleration(const sen5x_t *dev, uint16_t mode);
291
301void sen5x_get_rht_acceleration(const sen5x_t *dev, uint16_t *mode);
302
310void sen5x_set_voc_state(const sen5x_t *dev, const uint8_t *state, uint8_t state_size);
311
319void sen5x_get_voc_state(const sen5x_t *dev, uint8_t *state, uint8_t state_size);
320
321#ifdef __cplusplus
322}
323#endif
324
Definition of the generic [S]ensor [A]ctuator [U]ber [L]ayer.
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
int sen5x_init(sen5x_t *dev, const sen5x_params_t *params)
Initialize the given device.
void sen5x_set_warm_start(const sen5x_t *dev, uint16_t warm_start)
Set the parameter for a warm start on the device, to improve initial accuracy of the ambient temperat...
void sen5x_wake_no_pm(const sen5x_t *dev)
Starts a continuous measurement without PM.
void sen5x_clean_fan(const sen5x_t *dev)
Sets the fan to maximum speed, to clean it within 10 seconds.
void sen5x_set_temperature_offset(const sen5x_t *dev, int16_t temp_offset, int16_t slope, uint16_t time_constant)
Set a custom temperature offset to the ambient temperature.
void sen5x_wake(const sen5x_t *dev)
Starts a continuous measurement.
void sen5x_get_voc_state(const sen5x_t *dev, uint8_t *state, uint8_t state_size)
Set the VOC Algorithm state.
void sen5x_get_warm_start(const sen5x_t *dev, uint16_t *warm_start)
Get the warm start parameter.
void sen5x_sleep(const sen5x_t *dev)
Stops the measurement and returns to idle mode.
void sen5x_get_temperature_offset(const sen5x_t *dev, int16_t *temp_offset, int16_t *slope, uint16_t *time_constant)
Set a custom temperature offset to the ambient temperature.
void sen5x_get_voc_algorithm_tuning(const sen5x_t *dev, int16_t *index_offset, int16_t *learning_time_offset_hours, int16_t *learning_time_gain_hours, int16_t *gating_max_duration_minutes, int16_t *std_initial, int16_t *gain_factor)
Get the VOC Algorithm tuning parameters.
void sen5x_set_rht_acceleration(const sen5x_t *dev, uint16_t mode)
Set the mode for the RH/T acceleration algorithm.
void sen5x_read_values(const sen5x_t *dev, sen5x_measurement_t *values)
Read measured mass concentration, humidity and temperature values.
void sen5x_read_pm_values(const sen5x_t *dev, sen5x_measurement_t *values)
Read measured particle matter values.
void sen5x_set_voc_algorithm_tuning(const sen5x_t *dev, int16_t index_offset, int16_t learning_time_offset_hours, int16_t learning_time_gain_hours, int16_t gating_max_duration_minutes, int16_t std_initial, int16_t gain_factor)
Set the parameters for the VOC Algorithm tuning.
void sen5x_set_voc_state(const sen5x_t *dev, const uint8_t *state, uint8_t state_size)
Get the VOC Algorithm state.
bool sen5x_data_ready_flag(const sen5x_t *dev)
Sets the fan to maximum speed, to clean it within 10 seconds.
void sen5x_get_nox_algorithm_tuning(const sen5x_t *dev, int16_t *index_offset, int16_t *learning_time_offset_hours, int16_t *learning_time_gain_hours, int16_t *gating_max_duration_minutes, int16_t *std_initial, int16_t *gain_factor)
Get the NOx Algorithm tuning parameters.
int sen5x_reset(const sen5x_t *dev)
Execute a reset on the given device.
void sen5x_set_nox_algorithm_tuning(const sen5x_t *dev, int16_t index_offset, int16_t learning_time_offset_hours, int16_t learning_time_gain_hours, int16_t gating_max_duration_minutes, int16_t std_initial, int16_t gain_factor)
Set the parameters for the NOx Algorithm tuning.
void sen5x_get_rht_acceleration(const sen5x_t *dev, uint16_t *mode)
Get the mode for the RH/T acceleration algorithm.
Low-level I2C peripheral driver interface definition.
Wrapper for measured values.
Definition sen5x.h:33
uint16_t mass_concentration_pm4p0
raw value is scaled with factor 10: PM4.0 [µg/m³] = value / 10
Definition sen5x.h:38
uint16_t number_concentration_pm4p0
raw value is scaled with factor 10: PM4.0 [#/cm³] = value / 10
Definition sen5x.h:48
uint16_t mass_concentration_pm10p0
raw value is scaled with factor 10: PM10.0 [µg/m³] = value / 10
Definition sen5x.h:40
uint16_t number_concentration_pm0p5
raw value is scaled with factor 10: PM0.5 [#/cm³] = value / 10
Definition sen5x.h:42
int16_t ambient_humidity
raw value is scaled with factor 100: RH [%] = value / 100
Definition sen5x.h:54
uint16_t mass_concentration_pm1p0
raw value is scaled with factor 10: PM1.0 [µg/m³] = value / 10
Definition sen5x.h:34
uint16_t mass_concentration_pm2p5
raw value is scaled with factor 10: PM2.5 [µg/m³] = value / 10
Definition sen5x.h:36
int16_t voc_index
raw value is scaled with factor 10: VOC Index = value / 10
Definition sen5x.h:58
int16_t ambient_temperature
raw value is scaled with factor 200: T [°C] = value / 200
Definition sen5x.h:56
uint16_t number_concentration_pm10p0
raw value is scaled with factor 10: PM10.0 [#/cm³] = value / 10
Definition sen5x.h:50
int16_t nox_index
raw value is scaled with factor 10: NOx Index = value / 10
Definition sen5x.h:60
uint16_t number_concentration_pm1p0
raw value is scaled with factor 10: PM1.0 [#/cm³] = value / 10
Definition sen5x.h:44
uint16_t typical_particle_size
raw value is scaled with factor 1000: Size [µm] = value / 1000
Definition sen5x.h:52
uint16_t number_concentration_pm2p5
raw value is scaled with factor 10: PM2.5 [#/cm³] = value / 10
Definition sen5x.h:46
Device initialization parameters.
Definition sen5x.h:67
uint8_t i2c_addr
I2C address.
Definition sen5x.h:69
i2c_t i2c_dev
I2C device which is used.
Definition sen5x.h:68
Device descriptor for the driver.
Definition sen5x.h:75
sen5x_params_t params
Device initialization parameters.
Definition sen5x.h:76