BMP280/BME280 temperature, pressure and humidity sensor

Device driver interface for the Bosch BMP280 and BME280 sensors.

BMP280 and BME280 measure temperature in centi °C and pressure in Pa. BME280 can also measure relative humidity in %.

For more information, see the datasheets:

This driver provides [S]ensor [A]ctuator [U]ber [L]ayer capabilities.

Usage

Add the following to your makefile:

1
2
3
4
5
6
7
8
# For BME280
USEMODULE += bme280

# When using I2C, specify the default I2C device to use,
# and the BME280's address (see datasheet).
# The values below are the defaults:
CFLAGS += -DBMX280_PARAM_I2C_DEV=I2C_DEV\(0\)
CFLAGS += -DBMX280_PARAM_I2C_ADDR=0x77

This allows initialisation with the default parameters in BMX280_PARAMS_DEFAULT from bmx280_params.h.

enum bmx280_t_sb_t
BMX280_SB_0_5 = 0
BMX280_SB_62_5 = 1
BMX280_SB_125 = 2
BMX280_SB_250 = 3
BMX280_SB_500 = 4
BMX280_SB_1000 = 5
BMX280_SB_10 = 6
BMX280_SB_20 = 7
enum bmx280_filter_t
BMX280_FILTER_OFF = 0
BMX280_FILTER_2 = 1
BMX280_FILTER_4 = 2
BMX280_FILTER_8 = 3
BMX280_FILTER_16 = 4
enum bmx280_mode_t
BMX280_MODE_SLEEP = 0
BMX280_MODE_FORCED = 1
BMX280_MODE_FORCED2 = 2
BMX280_MODE_NORMAL = 3
enum bmx280_osrs_t
BMX280_OSRS_SKIPPED = 0
BMX280_OSRS_X1 = 1
BMX280_OSRS_X2 = 2
BMX280_OSRS_X4 = 3
BMX280_OSRS_X8 = 4
BMX280_OSRS_X16 = 5
enum @115
BMX280_OK =  0
everything was fine
BMX280_ERR_NODEV = -1
did not detect BME280 or BMP280
BMX280_ERR_NOCAL = -2
could not read calibration data
int bmx280_init(bmx280_t * dev, const bmx280_params_t * params)

Initialize the given BMX280 device.

Parameters

dev:Initialized device descriptor of BMX280 device
params:The parameters for the BMX280 device (sampling rate, etc)

Return values

  • BMX280_OK on success
  • BMX280_ERR_I2C
  • BMX280_ERR_NODEV
  • BMX280_ERR_NOCAL
int16_t bmx280_read_temperature(const bmx280_t * dev)

Read temperature value from the given BMX280 device, returned in centi °C.

Parameters

dev:Device descriptor of BMX280 device to read from

Return values

  • The temperature in centi Celsius. In case of an error it returns INT16_MIN.
uint32_t bmx280_read_pressure(const bmx280_t * dev)

Read air pressure value from the given BMX280 device, returned in PA.

This function should only be called after doing bmx280_read_temperature first.

Parameters

dev:Device descriptor of BMX280 device to read from

Return values

  • The air pressure in Pa
uint16_t bme280_read_humidity(const bmx280_t * dev)

Read humidity value from the given BME280 device, returned in centi RH.

This function should only be called after doing bmx280_read_temperature first. It’s only available with BME280 sensor.

Parameters

dev:Device descriptor of BME280 device to read from

Return values

  • Humidity in centi RH (i.e. the percentage times 100)
struct bmx280_calibration_t

Calibration struct for the BMX280 sensor.

This must be read from the device at startup.

uint16_t dig_T1

T1 coefficient.

int16_t dig_T2

T2 coefficient.

int16_t dig_T3

T3 coefficient.

uint16_t dig_P1

P1 coefficient.

int16_t dig_P2

P2 coefficient.

int16_t dig_P3

P3 coefficient.

int16_t dig_P4

P4 coefficient.

int16_t dig_P5

P5 coefficient.

int16_t dig_P6

P6 coefficient.

int16_t dig_P7

P7 coefficient.

int16_t dig_P8

P8 coefficient.

int16_t dig_P9

P9 coefficient.

uint8_t dig_H1

H1 coefficient.

int16_t dig_H2

H2 coefficient.

uint8_t dig_H3

H3 coefficient.

int16_t dig_H4

H4 coefficient.

int16_t dig_H5

H5 coefficient.

int8_t dig_H6

H6 coefficient.

struct bmx280_params_t

Parameters for the BMX280 sensor.

These parameters are needed to configure the device at startup.

i2c.h::i2c_t i2c_dev

I2C device which is used.

uint8_t i2c_addr

I2C address.

bmx280.h::bmx280_t_sb_t t_sb

standby

bmx280.h::bmx280_filter_t filter

filter coefficient

uint8_t spi3w_en

Enables 3-wire SPI interface.

bmx280.h::bmx280_mode_t run_mode

ctrl_meas mode

bmx280.h::bmx280_osrs_t temp_oversample

ctrl_meas osrs_t

bmx280.h::bmx280_osrs_t press_oversample

ctrl_meas osrs_p

bmx280.h::bmx280_osrs_t humid_oversample

ctrl_hum osrs_h

struct bmx280_t

Device descriptor for the BMX280 sensor.

bmx280_params_t params

Device Parameters.

bmx280_calibration_t calibration

Calibration Data.