bme280

package
v0.0.0-...-7e8b5be Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChipID    = 0x60
	ResetCode = 0xB6

	CalibrationDataSize    = 26
	CalibrationHumDataSize = 7

	MeasurementDataSize = 8
	MeasurementHumMax   = 102400
	MeasurementHumMin   = 0
	MeasurementPressMax = 11000000
	MeasurementPressMin = 3000000
	MeasurementTempMax  = 8000
	MeasurementTempMin  = -4000

	// Register addresses
	RegisterCalibrationData    = 0x88
	RegisterChipID             = 0xD0
	RegisterSoftReset          = 0xE0
	RegisterHumCalibrationData = 0xE1
	RegisterCtrlHum            = 0xF2
	RegisterStatus             = 0xF3
	RegisterCtrlMeas           = 0xF4
	RegisterConfig             = 0xF5
	RegisterPressDataMSB       = 0xF7
	RegisterPressDataLSB       = 0xF8
	RegisterPressDataXLSB      = 0xF9
	RegisterTempDataMSB        = 0xFA
	RegisterTempDataLSB        = 0xFB
	RegisterTempDataXLSB       = 0xFC
	RegisterHumDataMSB         = 0xFD
	RegisterHumDataLSB         = 0xFE
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CalibrationData

type CalibrationData struct {
	// contains filtered or unexported fields
}

CalibrationData represents the factory calibration bits on the BME280 chip. It is used for performing value compensation on the raw measurement values. CompensateTemperature must be run before CompensateHumidity and CompensatePressure so the t_fine value is updated.

func NewCalibrationData

func NewCalibrationData(calibrationData, humidityCalibrationData []byte) *CalibrationData

func (*CalibrationData) CompensateHumidity

func (cal *CalibrationData) CompensateHumidity(rawHum int32) uint32

CompensateHumidity compensates the humidity measurements using the factory calibration data. Black-box algorithm imported from the datasheet. Humidity is given in 1024 * % relative humidity. i.e.: 79974.4 represents 78.1% relative humidity.

func (*CalibrationData) CompensatePressure

func (cal *CalibrationData) CompensatePressure(rawPress int32) uint32

CompensatePressure compensates the pressure measurements using the factory calibration data. Black-box algorithm imported from the datasheet. Pressure is given in 100 * Pascal. i.e.: 10132500.00 represents 1013.25hPa.

func (*CalibrationData) CompensateTemperature

func (cal *CalibrationData) CompensateTemperature(rawTemp int32) int32

CompensateTemperature compensates the temperature measurements using the factory calibration data. Black-box algorithm imported from the datasheet. Temperature is given in 100 * ºCelsius. i.e.: 1500.00 represents 15.0ºC.

func (*CalibrationData) String

func (cal *CalibrationData) String() string

type Config

type Config byte

func (Config) FilterCoefficient

func (b Config) FilterCoefficient() FilterCoefficient

func (Config) InactiveDuration

func (b Config) InactiveDuration() InactiveDuration

func (Config) SetFilterCoefficient

func (b Config) SetFilterCoefficient(value FilterCoefficient) Config

func (Config) SetInactiveDuration

func (b Config) SetInactiveDuration(value InactiveDuration) Config

func (Config) String

func (b Config) String() string

type CtrlHum

type CtrlHum byte

func (CtrlHum) HumidityOversampling

func (b CtrlHum) HumidityOversampling() HumidityOversampling

func (CtrlHum) SetHumidityOversampling

func (b CtrlHum) SetHumidityOversampling(value HumidityOversampling) CtrlHum

func (CtrlHum) String

func (b CtrlHum) String() string

type CtrlMeas

type CtrlMeas byte

func (CtrlMeas) Mode

func (b CtrlMeas) Mode() Mode

func (CtrlMeas) PressureOversampling

func (b CtrlMeas) PressureOversampling() PressureOversampling

func (CtrlMeas) SetMode

func (b CtrlMeas) SetMode(value Mode) CtrlMeas

func (CtrlMeas) SetPressureOversampling

func (b CtrlMeas) SetPressureOversampling(value PressureOversampling) CtrlMeas

func (CtrlMeas) SetTemperatureOversampling

func (b CtrlMeas) SetTemperatureOversampling(value TemperatureOversampling) CtrlMeas

func (CtrlMeas) String

func (b CtrlMeas) String() string

func (CtrlMeas) TemperatureOversampling

func (b CtrlMeas) TemperatureOversampling() TemperatureOversampling

type FilterCoefficient

type FilterCoefficient byte
const (
	FilterCoefficientOversamplingShift = 2
	FilterCoefficientOversamplingSize  = 3

	FilterCoefficientOff FilterCoefficient = 0x00
	FilterCoefficient2   FilterCoefficient = 0x01
	FilterCoefficient4   FilterCoefficient = 0x02
	FilterCoefficient8   FilterCoefficient = 0x03
	FilterCoefficient16  FilterCoefficient = 0x04
)

func (FilterCoefficient) String

func (b FilterCoefficient) String() string

func (FilterCoefficient) Value

func (b FilterCoefficient) Value() int

type HumidityOversampling

type HumidityOversampling byte
const (
	HumidityOversamplingShift = 0
	HumidityOversamplingSize  = 3

	HumidityOversamplingSkipped HumidityOversampling = 0x00
	HumidityOversampling1x      HumidityOversampling = 0x01
	HumidityOversampling2x      HumidityOversampling = 0x02
	HumidityOversampling4x      HumidityOversampling = 0x03
	HumidityOversampling8x      HumidityOversampling = 0x04
	HumidityOversampling16x     HumidityOversampling = 0x05
)

func (HumidityOversampling) String

func (b HumidityOversampling) String() string

func (HumidityOversampling) Value

func (b HumidityOversampling) Value() int

type I2CAddress

type I2CAddress byte
const (
	I2CAddressLow  I2CAddress = 0x76
	I2CAddressHigh I2CAddress = 0x77
)

func (I2CAddress) String

func (b I2CAddress) String() string

type InactiveDuration

type InactiveDuration byte
const (
	InactiveDurationShift = 5
	InactiveDurationSize  = 3

	InactiveDuration0_5ms  InactiveDuration = 0x00
	InactiveDuration62_5ms InactiveDuration = 0x01
	InactiveDuration125ms  InactiveDuration = 0x02
	InactiveDuration250ms  InactiveDuration = 0x03
	InactiveDuration500ms  InactiveDuration = 0x04
	InactiveDuration1000ms InactiveDuration = 0x05
	InactiveDuration10ms   InactiveDuration = 0x06
	InactiveDuration20ms   InactiveDuration = 0x07
)

func (InactiveDuration) Milliseconds

func (d InactiveDuration) Milliseconds() float64

func (InactiveDuration) String

func (d InactiveDuration) String() string

type MeasurementData

type MeasurementData struct {
	// contains filtered or unexported fields
}

MeasurementData represents the measurement values read from the chip measurement registers. It uses the factory calibration data to compensate the raw measurement data and return formatted values. Temperature must be read first so the t_fine compensation value can be calculated for Humidity and Pressure compensation.

func NewMeasurementData

func NewMeasurementData(cal *CalibrationData) *MeasurementData

func (*MeasurementData) Humidity

Humidity returns the relative humidity in % as a float

func (*MeasurementData) Pressure

func (d *MeasurementData) Pressure() goflying.HPa

Pressure returns the air pressure in hPa (same as millibars) as a float

func (*MeasurementData) SetCalibrationData

func (d *MeasurementData) SetCalibrationData(cal *CalibrationData)

SetCalibrationData stores the factory calibration data for measurement compensation

func (*MeasurementData) String

func (d *MeasurementData) String() string

func (*MeasurementData) Temperature

func (d *MeasurementData) Temperature() goflying.Celsius

Temperature returns the ambient temperature in ºC as a float

func (*MeasurementData) Timestamp

func (d *MeasurementData) Timestamp() time.Time

func (*MeasurementData) Update

func (d *MeasurementData) Update(data []byte, timestamp time.Time)

Update sets the raw measurement data as read from the chip measurement registers

type Mode

type Mode byte
const (
	ModeShift = 0
	ModeSize  = 2

	ModeSleep  Mode = 0x00
	ModeForced Mode = 0x01
	ModeNormal Mode = 0x03
)

func (Mode) String

func (b Mode) String() string

type PressureOversampling

type PressureOversampling byte
const (
	PressureOversamplingShift = 2
	PressureOversamplingSize  = 3

	PressureOversamplingSkipped PressureOversampling = 0x00
	PressureOversampling1x      PressureOversampling = 0x01
	PressureOversampling2x      PressureOversampling = 0x02
	PressureOversampling4x      PressureOversampling = 0x03
	PressureOversampling8x      PressureOversampling = 0x04
	PressureOversampling16x     PressureOversampling = 0x05
)

func (PressureOversampling) String

func (b PressureOversampling) String() string

func (PressureOversampling) Value

func (b PressureOversampling) Value() int

type Sensor

type Sensor struct {
	Data *MeasurementData
	// contains filtered or unexported fields
}

func NewSensor

func NewSensor(bus embd.I2CBus, address I2CAddress, settings ...SettingFunc) (*Sensor, error)

NewSensor returns a Sensor object connected to the specified I2C bus and with the specified I2C address. One or more SettingFunc functions can be specified for updating the configuration and control bytes during initialisation.

func (*Sensor) CalibrationData

func (bme *Sensor) CalibrationData() (*CalibrationData, error)

CalibrationData reads chip factory calibration data from registers RegisterCalibrationData and RegisterHumCalibrationData

func (*Sensor) ChipID

func (bme *Sensor) ChipID() (byte, error)

ChipID reads chip ID from register RegisterChipID. Expected value is 0x60 for BME280

func (*Sensor) Config

func (bme *Sensor) Config() (Config, error)

Config reads the config register byte from RegisterConfig. The config register contains the chip inactive duration and IIR filter coefficient values

func (*Sensor) Configure

func (bme *Sensor) Configure(settings ...SettingFunc) error

Configure runs all the specified SettingFunc and writes the modified config and control bytes after they have all finished running

func (*Sensor) CtrlHum

func (bme *Sensor) CtrlHum() (CtrlHum, error)

CtrlHum reads the ctrl_hum register byte from RegisterCtrlHum. The ctrl_hum register contains the humidity oversampling value

func (*Sensor) CtrlMeas

func (bme *Sensor) CtrlMeas() (CtrlMeas, error)

CtrlMeas reads the ctrl_meas register byte from RegisterCtrlMeas. The ctrl_meas register contains the pressure and temperature oversampling, and the chip mode values

func (*Sensor) FilterCoefficient

func (bme *Sensor) FilterCoefficient() (FilterCoefficient, error)

FilterCoefficient reads the IIR filter coefficient bits from the config register

func (*Sensor) HumidityOversampling

func (bme *Sensor) HumidityOversampling() (HumidityOversampling, error)

HumidityOversampling reads the humidity oversampling bits from the ctrl_hum register

func (*Sensor) I2CAddress

func (bme *Sensor) I2CAddress() I2CAddress

I2CAddress returns the formatted chip I2C address

func (*Sensor) InactiveDuration

func (bme *Sensor) InactiveDuration() (InactiveDuration, error)

InactiveDuration reads the inactive duration bits from the config register

func (*Sensor) MeasurementDuration

func (bme *Sensor) MeasurementDuration(max bool) (time.Duration, error)

MeasurementDuration returns the typical interval between measurements if max is false, otherwise it will return the maximum interval between measurements. The total measurement interval consists in a configurable inactive interval (set on the config register) and a variable active interval which depends on the oversampling settings. See appendix B of the BME280 datasheet for more details.

func (*Sensor) Mode

func (bme *Sensor) Mode() (Mode, error)

Mode reads the chip mode from the ctrl_meas register

func (*Sensor) PressureOversampling

func (bme *Sensor) PressureOversampling() (PressureOversampling, error)

PressureOversampling reads the pressure oversampling bits from the ctrl_meas register

func (*Sensor) Reset

func (bme *Sensor) Reset() error

Reset triggers a soft reset on the chip. This will also reset the config and control registers.

func (*Sensor) SetConfig

func (bme *Sensor) SetConfig(value Config) error

SetConfig sets the config register byte on the RegisterConfig register

func (*Sensor) SetCtrlHum

func (bme *Sensor) SetCtrlHum(value CtrlHum) error

SetCtrlHum sets the ctrl_hum register byte on the RegisterCtrlHum register. Changes to this register only become effective after a write operation to RegisterCtrlMeas.

func (*Sensor) SetCtrlMeas

func (bme *Sensor) SetCtrlMeas(value CtrlMeas) error

SetCtrlMeas sets the ctrl_meas register byte on the RegisterCtrlMeas register

func (*Sensor) SetFilterCoefficient

func (bme *Sensor) SetFilterCoefficient(value FilterCoefficient) error

SetFilterCoefficient sets the IIR filter coefficient bits on the config register

func (*Sensor) SetHumidityOversampling

func (bme *Sensor) SetHumidityOversampling(value HumidityOversampling) error

SetHumidityOversampling sets the humidity oversampling bits on the ctrl_hum register

func (*Sensor) SetInactiveDuration

func (bme *Sensor) SetInactiveDuration(value InactiveDuration) error

SetInactiveDuration sets the inactive duration bits on the config register

func (*Sensor) SetMode

func (bme *Sensor) SetMode(value Mode) error

SetMode sets the chip measurement mode on the ctrl_meas register. Set to ModeNormal for polling mode, or ModeForced to perform a single measurement.

func (*Sensor) SetPressureOversampling

func (bme *Sensor) SetPressureOversampling(value PressureOversampling) error

SetPressureOversampling sets the pressure oversampling bits on the ctrl_meas register

func (*Sensor) SetTemperatureOversampling

func (bme *Sensor) SetTemperatureOversampling(value TemperatureOversampling) error

SetTemperatureOversampling sets the temperature oversampling bits on the ctrl_meas register

func (*Sensor) Start

func (bme *Sensor) Start(ctx context.Context) (func(), error)

Start starts the polling goroutine and returns a stop function

func (*Sensor) TemperatureOversampling

func (bme *Sensor) TemperatureOversampling() (TemperatureOversampling, error)

TemperatureOversampling reads the temperature oversampling bits from the ctrl_meas register

type SettingFunc

type SettingFunc func(config Config, ctrlMeas CtrlMeas, ctrlHum CtrlHum) (Config, CtrlMeas, CtrlHum, error)

SettingFunc represents a function that modifies one of the config or control registers and returns the modified or unmodified values for the next SettingFunc. A SettingFunc slice is passed to the NewSensor function to minimise the number of writes to the register during initialisation. See read_bme280.go for an example.

func WithFilterCoefficient

func WithFilterCoefficient(value FilterCoefficient) SettingFunc

func WithHumidityOversampling

func WithHumidityOversampling(value HumidityOversampling) SettingFunc

func WithInactiveDuration

func WithInactiveDuration(value InactiveDuration) SettingFunc

func WithMode

func WithMode(value Mode) SettingFunc

func WithPressureOversampling

func WithPressureOversampling(value PressureOversampling) SettingFunc

func WithTemperatureOversampling

func WithTemperatureOversampling(value TemperatureOversampling) SettingFunc

type TemperatureOversampling

type TemperatureOversampling byte
const (
	TemperatureOversamplingShift = 5
	TemperatureOversamplingSize  = 3

	TemperatureOversamplingSkipped TemperatureOversampling = 0x00
	TemperatureOversampling1x      TemperatureOversampling = 0x01
	TemperatureOversampling2x      TemperatureOversampling = 0x02
	TemperatureOversampling4x      TemperatureOversampling = 0x03
	TemperatureOversampling8x      TemperatureOversampling = 0x04
	TemperatureOversampling16x     TemperatureOversampling = 0x05
)

func (TemperatureOversampling) String

func (b TemperatureOversampling) String() string

func (TemperatureOversampling) Value

func (b TemperatureOversampling) Value() int

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL