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.

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 <[email protected]>