The Thunder Board - I2C Lightning Detector - Grove Connectors
.
The Thunder Board Grove I2C Lightning Detector for the Raspberry Pi and Arduino - is a programmable Lightning Sensor board that detects the presence and approach of potentially hazardous lightning activity in the vicinity and provides an estimation on the distance to the head of the storm. The embedded lightning algorithm checks the incoming signal pattern to reject the potential man-made disturbers and various noise sources.
How the heck do we detect lightning? You would think it would be pretty easy, but it turns out it is not. It's not just like a giant spark. Well, it is a giant spark, but there are lots of other things that make electrical noise that can be confused for lightning. Your computer (even your Raspberry PI and Arduino!), your car, the motor in your refrigerator, your cell phone, your computer monitor, your AM/FM radio and even your TV. They all make electrical noise that can be confused with Lightning.
The Thunder Board is an I2C device and detects Lightning and provides a distance estimate to the “leading edge” of an incoming storm.
In addition to this board, SwitchDoc Labs has two full Lightning Detector Kits:
The Thunder Board Raspberry Pi IOT Kit
The Thunder Board Arduino IOT Kit
Usage NOTES:
Note#1: The maximum voltages on SDA/SCL must be less than or equal to VCC. Applying 3.3V to VCC while connecting to the 5V SDA/SCL pins on the Arduino violate this specification and will destroy the buffer chip on the ThunderBoard. Make sure that yourI2C pins (SDA/SCL) match the voltage applied to the VCC pin.
Note#2: The AS3935 Lightning detector chip used on the Thunder Board does not like anything else on the same I2C bus segment on the Raspberry Pi. This is a well known problem with the chip.
If you need to use it with other I2C devices (which is a common problem), then you need to include an I2C Mux in the system (as we do with GroveWeatherPi) and put the Thunder Board on it's own I2C Bus segment.
https://shop.switchdoc.com/products/i2c-4-channel-mux-extender-expander-board-grove-pin-headers-for-arduino-and-raspberry-pi
New Tutorial on Thunder Board
Here is a new video tutorial for Tuning the ThunderBoard by Dr. Shovic
Downloads
- - ThunderBoard I2C Lightning Detector Specification (New Version 1.3)
- - Raspberry Pi Drivers
- - Arduino Drivers
- - Full AS3935 Specification
Features and Benefits:
- - 2.4V - 5.5V operation
- - I2C Interface - 0x02 Address
- - Buffered I2C Interface
- - Grove Connectors - No Soldering Required
- - Lightning sensor warns of lightning storm activity within a radius of 40km
- - Distance estimation to the head of the storm down to 1km in 14 steps
- - Detects both cloud-to-ground and intra-cloud (cloud-to-cloud) flashes
- Embedded man-made disturber rejection algorithm
- - Programmable detection levels enable threshold setting for optimal controls
- - I2C interface is used for control and register reading
- - Antenna Tuning to compensate variations of the external components
- - Power-down, listening, and active mode
- - Full Test Code Supplied
Lightning Detector 3D Printed Tower
]
The lighting detector pylon is to move the very sensitive Thunder Board Lightning Detector away from the noisy electronics within the GroveWeatherPi. We noticed early on that we were getting a lot of spurious lightning detection from the device. Moving it about 30cm from the electronics in a separate pylon fixed that problem. If you don't want to print your own pylon, you can find this in store.switchdoc.com.
Following is the Lightning Detector Pylon openSCAD code: // // WeatherPi Lightning Sensor Block Extension // // SwitchDoc Labs 5/18/15 // // module sensorPylon() { // tube difference() { union() { cylinder(120, r=12); // flanges translate([-15,-15,0]) cube([30,30,2]); } translate([0,0,-10]) cylinder(150, r=10.5); // screw holes translate([-12,-12,-5]) #cylinder(h=10,r=2.0,$fs=6); translate([-12,12,-5]) #cylinder(h=10,r=2.0,$fs=6); translate([12,12,-5]) #cylinder(h=10,r=2.0,$fs=6); translate([12,-12,-5]) #cylinder(h=10,r=2.0,$fs=6); } } module sensorBox() { difference() { translate([-16.5,-16.5,0]) cube([43,43,33]); translate([-15,-15,-2]) cube([40,40,32]); translate([-15.5,-15.5,-1]) cube([41,41,3]); } } module sensorPlatform() { difference() { union() { translate([-17.95,-17.95,-1]) cube([40.9,40.9,2]); translate([2.5,2.5,-5]) #cylinder(5,r=10.4); } translate([2.5,2.5,-5]) #cylinder(10,r=9.0); } } /* sensorPylon(); translate([0,0,180]) sensorBox(); translate([0,0,160]) sensorPlatform(); */ translate([60,0,0]) sensorPylon(); rotate(180,[0,1,0]) { translate([50,0,-33]) sensorBox(); translate([0,0,-1]) sensorPlatform(); }