qmp6988 - Driver for QMP6988 digital temperature and pressure sensor

group qmp6988

ESP-IDF driver for QMP6988 digital temperature and pressure sensor.

Code based on m5stack https://github.com/m5stack/M5Unit-ENV and Ruslan V. Uss https://github.com/UncleRus

Copyright (c) 2019 Ruslan V. Uss (https://github.com/UncleRus

)

Copyright (c) 2022 m5stack (

https://github.com/m5stack

)

Copyright (c) 2024 vonguced (

https://github.com/vonguced

)

BSD Licensed as described in the file LICENSE

Defines

QMP6988_I2C_ADDR_GND
QMP6988_I2C_ADDR_VDD

Enums

enum qmp6988_power_mode_t

Possible measurement modes.

Values:

enumerator QMP6988_SLEEP_MODE

sleep mode

enumerator QMP6988_FORCED_MODE

one measurement then sleep again

enumerator QMP6988_NORMAL_MODE

power mode

enum qmp6988_filter_t

Possible filter modes.

Values:

enumerator QMP6988_FILTERCOEFF_OFF
enumerator QMP6988_FILTERCOEFF_2
enumerator QMP6988_FILTERCOEFF_4
enumerator QMP6988_FILTERCOEFF_8
enumerator QMP6988_FILTERCOEFF_16
enumerator QMP6988_FILTERCOEFF_32
enum qmp6988_oversampling_t

Possible oversampling modes.

Values:

enumerator QMP6988_OVERSAMPLING_SKIPPED
enumerator QMP6988_OVERSAMPLING_1X
enumerator QMP6988_OVERSAMPLING_2X
enumerator QMP6988_OVERSAMPLING_4X
enumerator QMP6988_OVERSAMPLING_8X
enumerator QMP6988_OVERSAMPLING_16X
enumerator QMP6988_OVERSAMPLING_32X
enumerator QMP6988_OVERSAMPLING_64X

Functions

esp_err_t qmp6988_init_desc(qmp6988_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)

Initialize device descriptor.

Parameters:
  • dev – Device descriptor.

  • addr – Device address.

  • port – I2C port.

  • sda_gpio – SDA GPIO.

  • scl_gpio – SCL GPIO.

Returns:

ESP_OK on success.

esp_err_t qmp6988_free_desc(qmp6988_t *dev)

Free device descriptor.

Parameters:

dev – Device descriptor

Returns:

ESP_OK on success

esp_err_t qmp6988_init(qmp6988_t *dev)

Initialize sensor.

Parameters:

dev – Device descriptor

Returns:

ESP_OK on success

esp_err_t qmp6988_setup_powermode(qmp6988_t *dev, qmp6988_power_mode_t power_mode)

Set up power mode for QMP6988.

Parameters:
  • dev – Device descriptor.

  • power_mode – Power mode to be set.

Returns:

ESP_OK on success.

esp_err_t qmp6988_set_filter(qmp6988_t *dev, qmp6988_filter_t filter_mode)

Set up filter mode for QMP6988.

Parameters:
  • dev – Device descriptor.

  • filter_mode – Filter mode to be set.

Returns:

ESP_OK on success.

esp_err_t qmp6988_set_p_oversampling(qmp6988_t *dev, qmp6988_oversampling_t oversampling_p_mode)

Set up pressure oversampling mode for QMP6988.

Parameters:
  • dev – Device descriptor.

  • oversampling_p_mode – Oversampling mode for pressure to be set.

Returns:

ESP_OK on success.

esp_err_t qmp6988_set_t_oversampling(qmp6988_t *dev, qmp6988_oversampling_t oversampling_t_mode)

Set up temperature oversampling mode for QMP6988.

Parameters:
  • dev – Device descriptor.

  • oversampling_t_mode – Oversampling mode for temperature to be set.

Returns:

ESP_OK on success.

esp_err_t qmp6988_calc_pressure(qmp6988_t *dev, float *p)

Calculate pressure based on QMP6988 sensor data.

Parameters:
  • dev – Device descriptor.

  • p[out] Calculated pressure in Pascals (Pa).

Returns:

ESP_OK on success.

esp_err_t qmp6988_calc_temperature(qmp6988_t *dev, float *t)

Calculate temperature based on QMP6988 sensor data.

Parameters:
  • dev – Device descriptor.

  • t[out] Calculated temperature in degrees Celsius (°C).

Returns:

ESP_OK on success.

struct qmp6988_ik_data_t
#include <qmp6988.h>

Structure holding calibration data for QMP6988.

struct qmp6988_t
#include <qmp6988.h>

Device descriptor.

Public Members

i2c_dev_t i2c_dev

I2C device descriptor.

qmp6988_power_mode_t power_mode

used power mode

qmp6988_filter_t filter_mode

used filter mode

qmp6988_oversampling_t oversampling_t_mode

used oversampling temp mode

qmp6988_oversampling_t oversampling_p_mode

used oversampling pressure mode

qmp6988_ik_data_t ik

used calibration data

float temperature

measured temperature

float pressure

measured pressure