ゲリラ豪雨に注意。雷センサーでカミナリとの距離を測る方法

すっかり夏の風物詩にもなりつつあるゲリラ豪雨。かつてはにわか雨と呼ばれていましたが、今はもっと激しくなった感があります。

ゲリラ豪雨は単純に雨が強いだけでなく、雷もまた激しいのが特徴です。日本では年間20名程度被害が出ており、7割が死亡しています。できるだけ避けた方がいいでしょう。

Raspberry Piと組み合わせて使える雷センサーとしてAS3935が知られています。今回、それを使ってどれくらいの精度でデータが取れるのか試してみました。

接続について

接続は次のようになります。とてもシンプルです。

コードについて

AS3935用のサンプルコードをベースにしています。まず pip でRPi_AS3935をインストールします。なお、ライブラリはPython 2.7系でしか使えませんでした。

pip install RPi_AS3935

インストールしたら、ライブラリを読み込みます。データの取得にGPIOも使うので、それも読み込みます。

from RPi_AS3935 import RPi_AS3935
import RPi.GPIO as GPIO
pin = 17
GPIO.setup(pin, GPIO.IN)
GPIO.add_event_detect(pin, GPIO.RISING, callback=handle_interrupt)

センサーを初期化します。屋内で利用する場合は set_indoors に Trueを指定します。 電気的ノイズの量によって set_noise_floor を設定しますが、0のままで特に問題ないようです。

sensor = RPi_AS3935(address=0x00, bus=1)
sensor.set_indoors(True)
sensor.set_noise_floor(0)
sensor.calibrate(tun_cap=0x0F)

データの取得は get_interrupt で行います。

reason = sensor.get_interrupt()

この結果値は何パターンかあります。まずノイズがありすぎる場合です。この場合は raise_noise_floor を実行して調整します。

if reason == 0x01:
  sensor.raise_noise_floor()

次に何らかの妨害が発生した場合です。筆者が試している限りでは、このデータが返ってきたことはありませんでした。

if reason == 0x04:
  # 何らかの妨害が発生

そして後は雷までの距離です。今回のAS3935は最大40kmまでの雷が検出できます。筆者環境では最大で16km先という結果が返ってきました。

if reason == 0x08:
  # 雷検出
  distance = sensor.get_distance()

この distance の中に1〜40までの値が返ってきます。すぐ近くに雷雲がある場合、1になります。

結果について

今年は筆者の地域では珍しいくらい雷が少なかったです。1日だけ、夜間にものすごく雷が鳴り響いた日がありました。その時のグラフが下のようになります(距離を逆にして、近い距離の時に値を上にしています)。夜間からはじまって、明け方までずっと1km以内にあり、その後17kmまで急速に遠ざかっています。

タイムラプス動画も撮っていたのですが、この時には夜間ということでまったく撮れていません。以下は別な日のものですが、これくらいの動画の場合で、約16km先に雷雲があったようです。

https://www.youtube.com/watch?v=ey9vgQ0L7YM

まとめ

天候の監視は専用のセンサーを使うことで、まさに常時立ち上げておけるラズパイ向けの事例になるでしょう。雷は万一のことがあれば人命に関わりますし、自宅やマンションに落ちると電子機器に甚大な被害が出ることもあります。センサーは数千円で購入できますので、皆さんも試してみてください。目に見えないデータを可視化すると、色々な学びがあるでしょう。

教材付きRaspberry Piキット

教材付きRaspberry Piキットならツクレルの「マイPC」シリーズを検討してみてください


Image by FelixMittermeier from Pixabay

]]>

上部へスクロール