雷センサーで雷を測定

最終更新日

雷センサーモジュールAS3935

オカッパリの釣り、カヤックでの釣りをしている中での心配事に、潮の流れ・風の向き・強さとかあります。さらにロッドを持っている以上、雷の心配も結構なウェイトを占めてもいます。

そこで以前から作ってみたかった、雷の距離測定機を作ってみることにしました。

準備

用意したもの

  • 雷センサーモジュール(AS3935使用):秋月電子 1500円くらい
  • Raspberry Pi W Zero
  • その他:ブレッドボード、ケーブルなど

参考にしたサイト

ハンダ付け

ピンとモジュールが別々なのでハンダ付けが必要になります。

雷センサーモジュールAS3935

こんな感じになりますが、ハンダ付け側は恥ずかしくて見せられないレベルです。。。

雷センサーモジュールAS3935

丁寧な日本語の仕様書が付いてきます。ですが、私にはあまり理解が出来ないです。

雷センサーモジュールAS3935マニュアル

雷センサーとラズパイとを接続

以前作っていたLチカの空きスペースを使ったため、ちょっとごちゃごちゃしていますが、

ブレッドボードを使って雷センサーとラズパイを接続しました。

雷センサーモジュールとラズパイ
Raspberry Pi Zero W I2C雷センサー
I2C SDA (2)SDA
I2C SCL (3)SCL
GPIO 17IRQ
GNDGND
3.3VVDD

最初分からなかった所が、雷センサーのIRQをラズパイのどこへ繋げばよいかという事でした。
後で出てくるPythonスクリプト(demo.py)の指定番号と一致させればいいみたいですね。今の時点ではGPIO 17に繋げたということを覚えておけば良いと思います。

雷センサーモジュールとラズパイ

認識してるかのか?

センサーがラズパイに認識されているかどうかは、通常下記コマンドで確認するかと思うのですが、どうやら表示がされないようです。

$ i2cdetect -y 1

「# 秋月製の雷センサーはI2Cアドレスは0x00固定」という記述もどこかのWebサイトにあったので、アドレスの表示は気にしなくても良いのかもしれません。

Raspberry Pi

i2Cは既に有効にしてる状態です。

叩いたコマンドだけ載せてるので、詳しくはRaspberryPiによる雷センサーを参考におねがいします。

$ uname -a
Linux raspberrypi 4.19.66+ #1253 Thu Aug 15 11:37:30 BST 2019 armv6l GNU/Linux
$ python --version
Python 2.7.18

後述しますが、訳あってPythonの2系を使いました。

設定変更

$ sudo vim /etc/modules

i2c-bcm2708
i2c-dev

必要なものをインストール

$ sudo apt install python-smbus
$ sudo apt install i2c-tools
$ sudo apt install python-rpi.gpio

Pythonでプログラム

pcfens/RaspberryPi-AS3935よりgit cloneして、この中で作業しました。

$ git clone https://github.com/pcfens/RaspberryPi-AS3935.git

cdするとdemo.pyがあるので、こちらを実行していこうと思います。

サンプルがPython2系で書かれているようなので、私もPython2系を新しくインストールした方が楽だと思ったので、環境を合わせることにします。

asdfで2系の最新だった2.7.18をインストールしました。

demo.py

修正箇所です。

sensor = RPi_AS3935(address=0x00, bus=1) # bus=0を1へ変更、ラズパイのバージョンに依る

注意

下記箇所があると思うのですが、pin = 17がGPIO17に対応しています。もしGPIO4にIRQを繋げた場合はpin = 4と変更が必要になると思います。

pin = 17

GPIO.setup(pin, GPIO.IN)
GPIO.add_event_detect(pin, GPIO.RISING, callback=handle_interrupt)

動かしてみる

$ python demo.py

Waiting for lightning - or at least something that looks like it

Waiting for … が表示されれば雷の待ち状態になっていると思われます。

RPi_AS3935/RPi_AS3935.pyを修正

おそらく素のままだと「# 秋月製の雷センサー・・・」に関係してだと思うのですが、こんなエラーが出ます。

OSError: [Errno 121] Remote I/O error


RaspberryPiによる雷センサーのソースコードからRPi_AS3935/RPi_AS3935.pyを修正しました。

class RPi_AS3935:
    (省略)

    def set_indoors(self, indoors):
        self.read_data()
        if indoors:
            # write_value = (self.registers[0x00] & 0xC1) | 0x24
            write_value = (self.registers[0x00] & 0xC1) | (0b10010 << 1)
        else:
            # write_value = (self.registers[0x00] & 0xC1) | 0x1C
            write_value = (self.registers[0x00] & 0xC1) | (0b01110 << 1)
        self.set_byte(0x00, write_value)

    (省略)

今後さらに

これで一応動いている所までは確認できましたが、これから検証していこうと思います。アンテナのキャリブレーションなども必要になってくるようです。

釣りに使いたい

釣り中に雷が近づいてきたら、iPhoneに通知したり出来たらなと思ってます。
さらにデータを保存できるようにしていけたらなと思っています。

以上になります

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください