Loading...
Searching...
No Matches
scd30.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Puhang Ding
3 * SPDX-FileCopyrightText: 2020 Jan Schlichter
4 * SPDX-FileCopyrightText: 2020 Nishchay Agrawal
5 * SPDX-License-Identifier: LGPL-2.1-only
6 */
7
8#pragma once
9
22
23#include "periph/i2c.h"
24#include "saul.h"
25#include "xtimer.h"
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
34#define SCD30_VERSION 0xD100
35#define SCD30_STATUS 0x0202
37
38#define SCD30_DATA 0x0300
39
40#define SCD30_START 0x0010
41#define SCD30_STOP 0x0104
42#define SCD30_SOFT_RESET 0xD304
43
44#define SCD30_INTERVAL 0x4600
46#define SCD30_ASC 0x5306
47#define SCD30_FRC 0x5204
48#define SCD30_T_OFFSET 0x5403
49#define SCD30_A_OFFSET 0x5102
51
55enum {
56 SCD30_OK = 0,
61};
62
71
75typedef struct {
77 uint8_t i2c_addr;
79
83typedef struct {
85} scd30_t;
86
95int8_t scd30_init(scd30_t *dev, const scd30_params_t *params);
96
107int8_t scd30_set_param(const scd30_t *dev, uint16_t param, uint16_t val);
108
119int8_t scd30_get_param(scd30_t *dev, uint16_t param, uint16_t *val);
120
130
141
154int scd30_start_periodic_measurement(scd30_t *dev, uint16_t *interval,
155 uint16_t *apc);
156
165
173int8_t scd30_reset(scd30_t *dev);
174
175#ifdef __cplusplus
176}
177#endif
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
Low-level I2C peripheral driver interface definition.
@ SCD30_CRC_ERROR
Invalid value or length.
Definition scd30.h:59
@ SCD30_NO_NEW_DATA
No new data.
Definition scd30.h:60
@ SCD30_INVALID_VALUE
Device doesn't exist.
Definition scd30.h:58
@ SCD30_COM_FAILED
Communication with device failed.
Definition scd30.h:57
uint8_t scd30_read_periodic(scd30_t *dev, scd30_measurement_t *result)
read co2 concentration, temperature and relative humidity when continuous measurements are being take...
int8_t scd30_reset(scd30_t *dev)
Soft reset sensor.
int8_t scd30_get_param(scd30_t *dev, uint16_t param, uint16_t *val)
Get value set for a configuration parameter on the device.
int scd30_start_periodic_measurement(scd30_t *dev, uint16_t *interval, uint16_t *apc)
Initializes Continuous Measurements.
int8_t scd30_stop_measurements(const scd30_t *dev)
Stop Continuous measurements.
int8_t scd30_init(scd30_t *dev, const scd30_params_t *params)
Initialize SCD30.
int8_t scd30_set_param(const scd30_t *dev, uint16_t param, uint16_t val)
Set a configuration parameter of device.
int8_t scd30_read_triggered(scd30_t *dev, scd30_measurement_t *result)
read CO2 concentration, temperature and relative humidity once
Measurement from SCD30 sensor.
Definition scd30.h:66
float temperature
Temperature measured in °C.
Definition scd30.h:68
float co2_concentration
CO2 concentration in ppm.
Definition scd30.h:67
float relative_humidity
Relative humidity measured in %.
Definition scd30.h:69
Device initialization parameters.
Definition scd30.h:75
i2c_t i2c_dev
I2C device which is used.
Definition scd30.h:76
uint8_t i2c_addr
I2C address.
Definition scd30.h:77
Device descriptor for the SCD30 sensor.
Definition scd30.h:83
scd30_params_t params
Device initialization parameters.
Definition scd30.h:84
xtimer interface definitions