雷センサーで雷を測定

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

準備

用意したもの

  • 雷センサーモジュール(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固定」という記述もあったので、アドレスの表示は気にしなくても良いのかもしれません。

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

設定変更

$ 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を修正しました。
def __init__(self, address, bus=1):
        (省略)
        self.read_data()
        if indoors:
            write_value = (self.registers[0x00] & 0xC1) | (0b10010 << 1)
        else:
            write_value = (self.registers[0x00] & 0xC1) | (0b01110 << 1)
        self.set_byte(0x00, write_value)

def read_data(self):
        try:
            self.registers = self.i2cbus.read_i2c_block_data(self.address, 0x00)
        except Exception as e:
            print '==Error read_data()==' + str(e)

今後さらに

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

釣りに使いたいので

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

こういうブログもありました。

人気のあるブログ:

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


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