NAME
Device::Chip::BME280
- chip driver for BME280
SYNOPSIS
use
Device::Chip::BME280;
use
Future::AsyncAwait;
my
$chip
= Device::Chip::BME280->new;
await
$chip
->mount( Device::Chip::Adapter::...->new );
await
$chip
->change_config(
OSRS_H
=> 4,
OSRS_P
=> 4,
OSRS_T
=> 4,
MODE
=>
"NORMAL"
,
);
my
(
$pressure
,
$temperature
,
$humidity
) = await
$chip
->read_sensor;
printf
"Temperature=%.2fC "
,
$temperature
;
printf
"Pressure=%dPa "
,
$pressure
;
printf
"Humidity=%.2f%%\n"
,
$humidity
;
DESCRIPTION
This Device::Chip subclass provides specific communication to a Bosch BME280 attached to a computer via an I²C adapter.
The reader is presumed to be familiar with the general operation of this chip; the documentation here will not attempt to explain or define chip-specific concepts or features, only the use of this module to access them.
MOUNT PARAMETERS
addr
The I²C address of the device. Can be specified in decimal, octal or hex with leading 0
or 0x
prefixes.
METHODS
The following methods documented in an await
expression return Future instances.
read_id
$id
= await
$chip
->read_id;
Returns the chip ID.
read_config
$config
= await
$chip
->read_config;
Returns a HASH
reference containing the chip config, using fields named from the data sheet.
FILTER
=> OFF | 2 | 4 | 8 | 16
MODE
=> SLEEP | FORCED | NORMAL
OSRS_H
=> SKIP | 1 | 2 | 4 | 8 | 16
OSRS_P
=> SKIP | 1 | 2 | 4 | 8 | 16
OSRS_T
=> SKIP | 1 | 2 | 4 | 8 | 16
SPI3W_EN
=> 0 | 1
T_SB
=> 0.5 | 10 | 20 | 62.5 | 125 | 250 | 500 | 1000
change_config
await
$chip
->change_config(
%changes
);
Writes updates to the configuration registers.
Note that these two methods use a cache of configuration bytes to make subsequent modifications more efficient.
read_status
$status
= await
$chip
->read_status;
read_raw
(
$adc_P
,
$adc_T
,
$adc_H
) = await
$chip
->read_raw;
Returns three integers containing the raw ADC reading values from the sensor.
This method is mostly for testing or internal purposes only. For converted sensor readings in real-world units you want to use "read_sensor".
read_sensor
(
$pressure
,
$temperature
,
$humidity
) = await
$chip
->read_sensor;
Returns the sensor readings appropriately converted into units of Pascals for pressure, degrees Celcius for temperature, and percentage relative for humidity.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>