AS3935 Lightning sensor library

Dependents:   zeus

Fork of AS3935 by valentin spanu

include the mbed library with this snippet

#include "mbed.h"
#include "AS3935.h"

 // frdm-kl25z sd card connections for spi1 
 // ------------------------------------------------
 // Header -- kl25z -- SD/MMC          
 // J2-20  -- PTE1  -- MOSI
 // J9-13  -- PTE4  -- CS
 // J2-14  -- GND   -- Vss (GND) 
 // J9-9   -- PTE2  -- SCK
 // J9-11  -- PTE3  -- MISO
 
AS3935 ld(PTE1, PTE3, PTE2, PTE4, "ld", 100000); // MOSI, MISO, SCK, CS, SPI bus freq (hz) 
InterruptIn IntLightning(PTA12); //IRQ AS3935
DigitalOut led1(LED_RED);
Serial pc(USBTX, USBRX);

void DetectLightning()
{
    char OriginInt;
     wait_ms(2); 
    OriginInt = ld.interruptSource();
    if (OriginInt == 1) { //
        pc.printf(" Noise level too high\r\n");
        }
    if (OriginInt == 4) { //
        pc.printf(" Disturber\r\n");
        }
    if (OriginInt == 8) { // detection
        // pc.printf(" Lightning detection\r\n");
        pc.printf(" Lightning detection, distance=%dkm\r\n", ld.lightningDistanceKm());
        ld.clearStats();

        }
}

 
int main() {
    pc.baud(9600);
    pc.printf("\r\nstart lightning detector\r\n");
    
    //initialisations
    ld.reset();
    ld.setTuneCap(5); // 500kHz
    ld.powerUp();
    ld.setIndoors();  
    ld.setMinimumLightnings(1);
    //ld.setSpikeRejection(2);
    ld.setNoiseFloor(2);
    ld.disableDisturbers();
    //ld.enableDisturbers();
    ld.setWatchdogThreshold(2);
    wait_ms(10);
    IntLightning.rise(&DetectLightning);
    int MinBlysk = ld.getMinimumLightnings();
    int Noise = ld.getNoiseFloor();
    int TuneCap = ld.getTuneCap();
    int SpikeRej = ld.getSpikeRejection();
    int WatchDog = ld.getWatchdogThreshold();
     
    pc.printf(" Min wylad: %i", MinBlysk);
    pc.printf("\r\n");
    pc.printf(" Noise: %i", Noise);
    pc.printf("\r\n");
    pc.printf(" Tune CAP: %i", TuneCap);
    pc.printf("\r\n");
    pc.printf(" Spike rej: %i", SpikeRej);
    pc.printf("\r\n");
    pc.printf(" Watchdog: %i", WatchDog);
    pc.printf("\r\n");
    while(1) {
        led1 = ! led1;
        wait(0.2);
     }
    
 
 }

History

Read energy registers per the data sheet. default tip

2015-12-14, by cmkachur [Mon, 14 Dec 2015 22:18:11 +0000] rev 15

Read energy registers per the data sheet.


Add defines for events.

2015-09-22, by cmkachur [Tue, 22 Sep 2015 23:05:39 +0000] rev 14

Add defines for events.


Fix the define value for indoor mode to match the data sheet.

2015-06-30, by cmkachur [Tue, 30 Jun 2015 16:20:20 +0000] rev 13

Fix the define value for indoor mode to match the data sheet.


Tune the antenna before calibrating the RCO per the data sheet. The calibrateRCO() method was modified to not overwrite the value of the tuning capacitor from the antenna tune method.

2015-06-24, by cmkachur [Wed, 24 Jun 2015 18:18:37 +0000] rev 12

Tune the antenna before calibrating the RCO per the data sheet. The calibrateRCO() method was modified to not overwrite the value of the tuning capacitor from the antenna tune method.


Store all configuration register values and firmware version to config_data.csv file at startup. Delete obsolete code.

2015-06-24, by cmkachur [Wed, 24 Jun 2015 16:36:47 +0000] rev 11

Store all configuration register values and firmware version to config_data.csv file at startup. Delete obsolete code.


Add method for reading energy of lightning strike. Add energy data to the log file. Remove call to powerUp() since this was only setting outdoor mode which was done elsewhere.

2015-06-23, by cmkachur [Tue, 23 Jun 2015 21:01:27 +0000] rev 10

Add method for reading energy of lightning strike. Add energy data to the log file. Remove call to powerUp() since this was only setting outdoor mode which was done elsewhere.


Update calibrate RCO method. Measure the TRC oscillator.

2015-06-18, by cmkachur [Thu, 18 Jun 2015 15:47:39 +0000] rev 9

Update calibrate RCO method. Measure the TRC oscillator.


Merge with tuneAntenna() method.

2015-06-17, by cmkachur [Wed, 17 Jun 2015 15:04:28 +0000] rev 8

Merge with tuneAntenna() method.


Add tuneAntenna() method to the as3935 class.

2015-06-17, by cmkachur [Wed, 17 Jun 2015 14:32:24 +0000] rev 7

Add tuneAntenna() method to the as3935 class.


add routine to get gain setting; change value for indoor setting

2015-06-16, by ftagius [Tue, 16 Jun 2015 14:21:19 +0000] rev 6

add routine to get gain setting; change value for indoor setting