ESP32-P4 OBC Firmware
ESP-IDF firmware for Plant-B CubeSat OBC
 
Loading...
Searching...
No Matches
scd30_sensor.h
Go to the documentation of this file.
1
32
33#ifndef __SCD3O_SENSOR_H__
34#define __SCD3O_SENSOR_H__
35
36#include <stddef.h>
37#include "freertos/FreeRTOS.h"
38#include "freertos/task.h"
39#include "rom/ets_sys.h"
40#include "esp_err.h"
41#include "i2c_bus.h"
42#include "esp_log.h"
43
63
64#define SCD30_I2C_ADDR (0x61)
65
66#ifdef __cplusplus
67extern "C" {
68#endif
69
74typedef uint16_t p_mbar_t;
75
80typedef uint16_t i_sec_t;
81
86typedef uint16_t uco2_ppm_t;
87
92typedef uint16_t tx100_celsius_t;
93
98typedef uint16_t alt_m_t;
99
104typedef float t_celsius_t;
105
110typedef float rh_percent_t;
111
116typedef float co2_ppm_t;
117
122typedef uint8_t i2c_addr_t;
123
127typedef struct {
128 i2c_bus_device_handle_t i2c_dev;
131
136typedef void* scd30_handle_t;
137
150scd30_handle_t scd30_i2c_create(i2c_bus_handle_t bus, i2c_addr_t dev_addr);
151
164scd30_handle_t scd30_i2c_init(i2c_bus_handle_t bus, i2c_addr_t dev_addr);
165
175
192 scd30_handle_t sensor,
193 p_mbar_t p_comp
194);
195
208
225 scd30_handle_t sensor,
226 i_sec_t *interval
227);
228
246 scd30_handle_t sensor,
247 i_sec_t interval
248);
249
263 scd30_handle_t sensor,
264 bool *data_ready
265);
266
282 scd30_handle_t sensor,
283 co2_ppm_t *co2,
284 t_celsius_t *temperature,
285 rh_percent_t *humidity
286);
287
303 scd30_handle_t sensor,
304 bool *enabled
305);
306
322 scd30_handle_t sensor,
323 bool enabled
324);
325
345 scd30_handle_t sensor,
346 uco2_ppm_t *frc
347);
348
375 scd30_handle_t sensor,
376 uco2_ppm_t target
377);
378
396 scd30_handle_t sensor,
397 tx100_celsius_t *offset
398);
399
419 scd30_handle_t sensor,
420 t_celsius_t *offset
421);
422
440 scd30_handle_t sensor,
441 tx100_celsius_t offset
442);
443
462 scd30_handle_t sensor,
463 t_celsius_t offset
464);
465
484 scd30_handle_t sensor,
485 alt_m_t *altitude
486);
487
504 scd30_handle_t sensor,
505 alt_m_t altitude
506);
507
524 scd30_handle_t sensor,
525 uint16_t *firmware_version
526);
527
542esp_err_t scd30_i2c_soft_reset(scd30_handle_t sensor);
543
544#ifdef __cplusplus
545}
546#endif
547 // end of scd30 group
549
550#endif // __SCD3O_SENSOR_H__
uint8_t i2c_addr_t
Type for I²C addresses.
Definition bme280_sensor.h:54
float rh_percent_t
Type for relative humidity [%].
Definition bme280_sensor.h:66
float t_celsius_t
Type for temperature [°C].
Definition bme280_sensor.h:60
i2c_bus_device_handle_t i2c_dev
I²C device handle.
Definition scd30_sensor.h:128
i2c_addr_t dev_addr
I²C address of the sensor.
Definition scd30_sensor.h:129
esp_err_t scd30_i2c_write_automatic_self_calibration(scd30_handle_t sensor, bool enabled)
Enable or disable automatic self calibration (ASC).
Definition scd30_sensor.c:358
esp_err_t scd30_i2c_write_temperature_offset_ticks(scd30_handle_t sensor, tx100_celsius_t offset)
Set temperature offset in ticks.
Definition scd30_sensor.c:438
uint16_t alt_m_t
Type for altitude [m].
Definition scd30_sensor.h:98
esp_err_t scd30_i2c_read_measurement_interval(scd30_handle_t sensor, i_sec_t *interval)
Read the measurement interval.
Definition scd30_sensor.c:262
esp_err_t scd30_i2c_read_firmware_version(scd30_handle_t sensor, uint16_t *firmware_version)
Get firmware version.
Definition scd30_sensor.c:498
esp_err_t scd30_i2c_read_data_ready_status(scd30_handle_t sensor, bool *data_ready)
Check whether new measurement data is available for read-out.
Definition scd30_sensor.c:292
esp_err_t scd30_i2c_read_measurement(scd30_handle_t sensor, co2_ppm_t *co2, t_celsius_t *temperature, rh_percent_t *humidity)
Read CO₂, temperature and humidity measurements.
Definition scd30_sensor.c:310
esp_err_t scd30_i2c_write_temperature_offset(scd30_handle_t sensor, t_celsius_t offset)
Set temperature offset.
Definition scd30_sensor.c:454
esp_err_t scd30_i2c_soft_reset(scd30_handle_t sensor)
Reset the sensor.
Definition scd30_sensor.c:515
uint8_t i2c_addr_t
Type for I²C addresses.
Definition scd30_sensor.h:122
esp_err_t scd30_i2c_read_sensor_altitude(scd30_handle_t sensor, alt_m_t *altitude)
Get configured sensor altitude.
Definition scd30_sensor.c:464
esp_err_t scd30_i2c_read_automatic_self_calibration(scd30_handle_t sensor, bool *enabled)
Get automatic self calibration (ASC) state.
Definition scd30_sensor.c:338
void scd30_i2c_delete(scd30_handle_t sensor)
Deinitialize the SCD30 sensor and free resources.
Definition scd30_sensor.c:218
float co2_ppm_t
Type for CO₂ [ppm].
Definition scd30_sensor.h:116
void * scd30_handle_t
Opaque handle for an SCD30 sensor.
Definition scd30_sensor.h:136
esp_err_t scd30_i2c_write_sensor_altitude(scd30_handle_t sensor, alt_m_t altitude)
Set sensor altitude above sea level.
Definition scd30_sensor.c:481
scd30_handle_t scd30_i2c_create(i2c_bus_handle_t bus, i2c_addr_t dev_addr)
Create a handle for an SCD30 sensor but does not apply any configuration.
Definition scd30_sensor.c:182
uint16_t p_mbar_t
Type for pressure [mbar].
Definition scd30_sensor.h:74
esp_err_t scd30_i2c_write_forced_recalibration_value(scd30_handle_t sensor, uco2_ppm_t target)
Set forced recalibration (FRC) value.
Definition scd30_sensor.c:392
esp_err_t scd30_i2c_stop_continuous_measurement(scd30_handle_t sensor)
Stop continuous measurement.
Definition scd30_sensor.c:248
esp_err_t scd30_i2c_trigger_continuous_measurement(scd30_handle_t sensor, p_mbar_t p_comp)
Trigger continuous measurement.
Definition scd30_sensor.c:231
uint16_t uco2_ppm_t
Type for CO₂ concentration [ppm] (forced recalibration only).
Definition scd30_sensor.h:86
uint16_t i_sec_t
Type for measurement interval [s].
Definition scd30_sensor.h:80
uint16_t tx100_celsius_t
Type for temperature [°C × 100].
Definition scd30_sensor.h:92
esp_err_t scd30_i2c_read_forced_recalibration_value(scd30_handle_t sensor, uco2_ppm_t *frc)
Get forced recalibration (FRC) value.
Definition scd30_sensor.c:375
scd30_handle_t scd30_i2c_init(i2c_bus_handle_t bus, i2c_addr_t dev_addr)
Initialize the SCD30 sensor on the I²C bus with a default configuration.
Definition scd30_sensor.c:197
esp_err_t scd30_i2c_read_temperature_offset(scd30_handle_t sensor, t_celsius_t *offset)
Get temperature offset.
Definition scd30_sensor.c:426
esp_err_t scd30_i2c_write_measurement_interval(scd30_handle_t sensor, i_sec_t interval)
Set measurement interval.
Definition scd30_sensor.c:277
esp_err_t scd30_i2c_read_temperature_offset_ticks(scd30_handle_t sensor, tx100_celsius_t *offset)
Get temperature offset in ticks.
Definition scd30_sensor.c:409
Structure representing the SCD30 device on an I²C bus.
Definition scd30_sensor.h:127