objc

Data Structures | Enumerations | Functions

Standalone driver for the Bosch BME280 environmental sensor. More...

Collaboration diagram for BME280 Driver:

Data Structures

struct  driver_bme280_data_t
 BME280 measurement data. More...
 
struct  driver_bme280_t
 BME280 driver instance. More...
 

Enumerations

enum  driver_bme280_oversampling_t {
  DRIVER_BME280_OVERSAMPLING_NONE = 0, DRIVER_BME280_OVERSAMPLING_1X = 1, DRIVER_BME280_OVERSAMPLING_2X = 2, DRIVER_BME280_OVERSAMPLING_4X = 3,
  DRIVER_BME280_OVERSAMPLING_8X = 4, DRIVER_BME280_OVERSAMPLING_16X = 5
}
 BME280 oversampling settings. More...
 
enum  driver_bme280_filter_t {
  DRIVER_BME280_FILTER_OFF = 0, DRIVER_BME280_FILTER_2 = 1, DRIVER_BME280_FILTER_4 = 2, DRIVER_BME280_FILTER_8 = 3,
  DRIVER_BME280_FILTER_16 = 4
}
 BME280 IIR filter coefficients. More...
 

Functions

bool driver_bme280_init_i2c (driver_bme280_t *driver, hw_i2c_t *i2c, uint8_t addr_offset)
 Initialize BME280 with I2C interface and default settingsInitializes with default settings: 1x oversampling for all sensors, filter off. More...
 
bool driver_bme280_init_i2c_with_config (driver_bme280_t *driver, hw_i2c_t *i2c, uint8_t addr_offset, driver_bme280_oversampling_t temp_os, driver_bme280_oversampling_t press_os, driver_bme280_oversampling_t hum_os, driver_bme280_filter_t filter)
 Initialize BME280 with I2C interface and custom settingsAllows configuration of oversampling and filter settings. More...
 
bool driver_bme280_valid (driver_bme280_t *driver)
 Check if driver instance is valid. More...
 
void driver_bme280_finalize (driver_bme280_t *driver)
 Finalize and power down BME280. More...
 
void driver_bme280_set_temp_offset (driver_bme280_t *driver, float offset)
 Set temperature offset for calibrationUse this to compensate for self-heating or other temperature offsets. More...
 
bool driver_bme280_read_data (driver_bme280_t *driver, driver_bme280_data_t *data)
 Read all sensor data (temperature, pressure, humidity)Triggers a forced measurement (single shot), waits for completion, and reads all three sensor values in a single transaction. More...
 
float driver_bme280_calculate_altitude (const driver_bme280_data_t *data, float sea_level_pressure)
 Calculate altitude from pressureUses the international barometric formula. More...
 
float driver_bme280_calculate_sea_level_pressure (const driver_bme280_data_t *data, float altitude)
 Calculate sea level pressure from altitude. More...
 

Detailed Description

Standalone driver for the Bosch BME280 environmental sensor.

Provides temperature, pressure, and humidity measurements.

Enumeration Type Documentation

◆ driver_bme280_filter_t

BME280 IIR filter coefficients.

Enumerator
DRIVER_BME280_FILTER_OFF 

Filter off.

DRIVER_BME280_FILTER_2 

Filter coefficient 2.

DRIVER_BME280_FILTER_4 

Filter coefficient 4.

DRIVER_BME280_FILTER_8 

Filter coefficient 8.

DRIVER_BME280_FILTER_16 

Filter coefficient 16.

Definition at line 35 of file drivers_bme280.h.

35  {
Filter coefficient 4.
Filter coefficient 2.
Filter coefficient 8.
Filter coefficient 16.
driver_bme280_filter_t
BME280 IIR filter coefficients.

◆ driver_bme280_oversampling_t

BME280 oversampling settings.

Enumerator
DRIVER_BME280_OVERSAMPLING_NONE 

No oversampling (output set to 0)

DRIVER_BME280_OVERSAMPLING_1X 

Oversampling ×1.

DRIVER_BME280_OVERSAMPLING_2X 

Oversampling ×2.

DRIVER_BME280_OVERSAMPLING_4X 

Oversampling ×4.

DRIVER_BME280_OVERSAMPLING_8X 

Oversampling ×8.

DRIVER_BME280_OVERSAMPLING_16X 

Oversampling ×16.

Definition at line 22 of file drivers_bme280.h.

Function Documentation

◆ driver_bme280_calculate_altitude()

float driver_bme280_calculate_altitude ( const driver_bme280_data_t data,
float  sea_level_pressure 
)

Calculate altitude from pressureUses the international barometric formula.

Parameters
dataPointer to measurement data containing pressure
sea_level_pressureSea level pressure in Pa (default: 101325 Pa)
Returns
Altitude in meters

◆ driver_bme280_calculate_sea_level_pressure()

float driver_bme280_calculate_sea_level_pressure ( const driver_bme280_data_t data,
float  altitude 
)

Calculate sea level pressure from altitude.

Parameters
dataPointer to measurement data containing pressure
altitudeCurrent altitude in meters
Returns
Sea level pressure in Pa

◆ driver_bme280_finalize()

void driver_bme280_finalize ( driver_bme280_t driver)

Finalize and power down BME280.

Parameters
driverPointer to driver structure

◆ driver_bme280_init_i2c()

bool driver_bme280_init_i2c ( driver_bme280_t driver,
hw_i2c_t i2c,
uint8_t  addr_offset 
)

Initialize BME280 with I2C interface and default settingsInitializes with default settings: 1x oversampling for all sensors, filter off.

Parameters
driverPointer to driver structure
i2cPointer to initialized I2C interface
addr_offsetAddress offset (0 for 0x76, 1 for 0x77)
Returns
true if initialization succeeded, false otherwise

◆ driver_bme280_init_i2c_with_config()

bool driver_bme280_init_i2c_with_config ( driver_bme280_t driver,
hw_i2c_t i2c,
uint8_t  addr_offset,
driver_bme280_oversampling_t  temp_os,
driver_bme280_oversampling_t  press_os,
driver_bme280_oversampling_t  hum_os,
driver_bme280_filter_t  filter 
)

Initialize BME280 with I2C interface and custom settingsAllows configuration of oversampling and filter settings.

Parameters
driverPointer to driver structure
i2cPointer to initialized I2C interface
addr_offsetAddress offset (0 for 0x76, 1 for 0x77)
temp_osTemperature oversampling
press_osPressure oversampling
hum_osHumidity oversampling
filterIIR filter coefficient
Returns
true if initialization succeeded, false otherwise

◆ driver_bme280_read_data()

bool driver_bme280_read_data ( driver_bme280_t driver,
driver_bme280_data_t data 
)

Read all sensor data (temperature, pressure, humidity)Triggers a forced measurement (single shot), waits for completion, and reads all three sensor values in a single transaction.

The sensor returns to sleep mode after the measurement.

Parameters
driverPointer to driver structure
dataPointer to structure to receive measurement data
Returns
true if successful, false otherwise

◆ driver_bme280_set_temp_offset()

void driver_bme280_set_temp_offset ( driver_bme280_t driver,
float  offset 
)

Set temperature offset for calibrationUse this to compensate for self-heating or other temperature offsets.

For example, if the sensor reads 33°C but ambient is 22°C, use -11°C offset.

Parameters
driverPointer to driver structure
offsetTemperature offset in °C (can be negative)

◆ driver_bme280_valid()

bool driver_bme280_valid ( driver_bme280_t driver)

Check if driver instance is valid.

Parameters
driverPointer to driver structure
Returns
true if valid, false otherwise