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涎 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涎 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>