Documentation ¶
Index ¶
- Constants
- type CalibrationData
- type Config
- type CtrlHum
- type CtrlMeas
- func (b CtrlMeas) Mode() Mode
- func (b CtrlMeas) PressureOversampling() PressureOversampling
- func (b CtrlMeas) SetMode(value Mode) CtrlMeas
- func (b CtrlMeas) SetPressureOversampling(value PressureOversampling) CtrlMeas
- func (b CtrlMeas) SetTemperatureOversampling(value TemperatureOversampling) CtrlMeas
- func (b CtrlMeas) String() string
- func (b CtrlMeas) TemperatureOversampling() TemperatureOversampling
- type FilterCoefficient
- type HumidityOversampling
- type I2CAddress
- type InactiveDuration
- type MeasurementData
- func (d *MeasurementData) Humidity() goflying.RelativeHumidity
- func (d *MeasurementData) Pressure() goflying.HPa
- func (d *MeasurementData) SetCalibrationData(cal *CalibrationData)
- func (d *MeasurementData) String() string
- func (d *MeasurementData) Temperature() goflying.Celsius
- func (d *MeasurementData) Timestamp() time.Time
- func (d *MeasurementData) Update(data []byte, timestamp time.Time)
- type Mode
- type PressureOversampling
- type Sensor
- func (bme *Sensor) CalibrationData() (*CalibrationData, error)
- func (bme *Sensor) ChipID() (byte, error)
- func (bme *Sensor) Config() (Config, error)
- func (bme *Sensor) Configure(settings ...SettingFunc) error
- func (bme *Sensor) CtrlHum() (CtrlHum, error)
- func (bme *Sensor) CtrlMeas() (CtrlMeas, error)
- func (bme *Sensor) FilterCoefficient() (FilterCoefficient, error)
- func (bme *Sensor) HumidityOversampling() (HumidityOversampling, error)
- func (bme *Sensor) I2CAddress() I2CAddress
- func (bme *Sensor) InactiveDuration() (InactiveDuration, error)
- func (bme *Sensor) MeasurementDuration(max bool) (time.Duration, error)
- func (bme *Sensor) Mode() (Mode, error)
- func (bme *Sensor) PressureOversampling() (PressureOversampling, error)
- func (bme *Sensor) Reset() error
- func (bme *Sensor) SetConfig(value Config) error
- func (bme *Sensor) SetCtrlHum(value CtrlHum) error
- func (bme *Sensor) SetCtrlMeas(value CtrlMeas) error
- func (bme *Sensor) SetFilterCoefficient(value FilterCoefficient) error
- func (bme *Sensor) SetHumidityOversampling(value HumidityOversampling) error
- func (bme *Sensor) SetInactiveDuration(value InactiveDuration) error
- func (bme *Sensor) SetMode(value Mode) error
- func (bme *Sensor) SetPressureOversampling(value PressureOversampling) error
- func (bme *Sensor) SetTemperatureOversampling(value TemperatureOversampling) error
- func (bme *Sensor) Start(ctx context.Context) (func(), error)
- func (bme *Sensor) TemperatureOversampling() (TemperatureOversampling, error)
- type SettingFunc
- func WithFilterCoefficient(value FilterCoefficient) SettingFunc
- func WithHumidityOversampling(value HumidityOversampling) SettingFunc
- func WithInactiveDuration(value InactiveDuration) SettingFunc
- func WithMode(value Mode) SettingFunc
- func WithPressureOversampling(value PressureOversampling) SettingFunc
- func WithTemperatureOversampling(value TemperatureOversampling) SettingFunc
- type TemperatureOversampling
Constants ¶
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
type CtrlHum ¶
type CtrlHum byte
func (CtrlHum) HumidityOversampling ¶
func (b CtrlHum) HumidityOversampling() HumidityOversampling
func (CtrlHum) SetHumidityOversampling ¶
func (b CtrlHum) SetHumidityOversampling(value HumidityOversampling) CtrlHum
type CtrlMeas ¶
type CtrlMeas byte
func (CtrlMeas) PressureOversampling ¶
func (b CtrlMeas) PressureOversampling() PressureOversampling
func (CtrlMeas) SetPressureOversampling ¶
func (b CtrlMeas) SetPressureOversampling(value PressureOversampling) CtrlMeas
func (CtrlMeas) SetTemperatureOversampling ¶
func (b CtrlMeas) SetTemperatureOversampling(value TemperatureOversampling) CtrlMeas
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 ¶
func (d *MeasurementData) Humidity() goflying.RelativeHumidity
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
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 ¶
ChipID reads chip ID from register RegisterChipID. Expected value is 0x60 for BME280
func (*Sensor) Config ¶
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 ¶
CtrlHum reads the ctrl_hum register byte from RegisterCtrlHum. The ctrl_hum register contains the humidity oversampling value
func (*Sensor) CtrlMeas ¶
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 ¶
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) PressureOversampling ¶
func (bme *Sensor) PressureOversampling() (PressureOversampling, error)
PressureOversampling reads the pressure oversampling bits from the ctrl_meas register
func (*Sensor) Reset ¶
Reset triggers a soft reset on the chip. This will also reset the config and control registers.
func (*Sensor) SetCtrlHum ¶
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 ¶
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 ¶
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) 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