NAME

Device::Chip::AS3935 - chip driver for AS3935

SYNOPSIS

use Device::Chip::AS3935;
use Future::AsyncAwait;

my $chip = Device::Chip::AS3935->new;
await $chip->mount( Device::Chip::Adapter::...->new );

if( ( await $chip->read_int )->{INT_L} ) {
   printf "Lightning detected %dkm away\n", await $chip->read_distance;
}

DESCRIPTION

This Device::Chip subclass provides specific communcation to an ams AS3935 lightning detector chip 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.

reset

await $chip->reset;

Sends a reset command to initialise the configuration back to defaults.

calibrate_rco

await $chip->calibrate_rco;

Sends a calibrate command to request the chip perform its internal RC oscillator calibration.

read_config

$config = await $chip->read_config;

Returns a HASH reference of the contents of configuration registers using fields named from the data sheet.

AFE_GB       => 0 .. 31
PWD          => "active" | "powerdown"
NF_LEV       => 0 .. 7
WDTH         => 0 .. 15
CL_STAT      => bool
MIN_NUM_LIGH => 1 | 5 | 9 | 16
SREJ         => 0 .. 15
LCO_FDIV     => 16 | 32 | 64 | 128
MASK_DIST    => bool
DISP_LCO     => bool
DISP_SRCO    => bool
DISP_TRCO    => bool
TUN_CAP      => 0 .. 15

Additionally, the following keys are provided calculated from those, as a convenience.

afe        => "indoor" | "outdoor"
noisefloor => int (in units of µVrms)

change_config

await $chip->change_config( %changes );

Writes updates to the configuration registers.

read_calib_status

$status = await $chip->read_calib_status;

Returns a 4-element HASH reference indicating the calibration status:

TRCO_CALIB_DONE => bool
TRCO_CALIB_NOK  => bool
SRCO_CALIB_DONE => bool
SRCO_CALIB_NOK  => bool

read_int

$ints = await $chip->read_int;

Returns a 3-element HASH reference containing the three interrupt flags:

INT_NH => bool
INT_D  => bool
INT_L  => bool

read_distance

$distance = await $chip->read_distance;

Returns an integer giving the estimated lightning distance, in km, or undef if it is below the detection limit.

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>