雷センサモジュールAS3935で落雷検知、ついでに置き時計

背景

身の回りに電化製品が溢れた現代、落雷ってのは気を使うものですよね。だけど、ビルの中にいると雷なってても気づかないことがあったりして、外から来た人が「雷鳴ってるよ」とか言わない限り気づかなかったりしますよね。
そこで、部屋の中でも雷を察知できるツールがあればいいなということで、ここは作るしか無いかと。

完成外観
台座代わりのツールクリップは別売りです


方法

秋月電子からAS3935という、AMS社が出している落雷検知ICをモジュール化した製品が販売されています。
AS3935使用 雷センサーモジュール

AMラジオなんてあまり聞くことはなくなりましたが、雷が鳴ったり、ガスコンロの着火装置(圧電素子)がチッチッチッって鳴ったときに、ラジオにインパルスなノイズが入るのがわかります。雷は光と同様、電波のような低い周波数に関しても一様に電磁ノイズを発生させます。
AS3935はこのノイズを検知して、落雷かどうか、また距離や落雷の強さを判定するとても優れたICです。
そしてこのモジュールは、検知に必要なアンテナやLC発振回路などをパッケージにしてすぐ使えるようにしてあり、いいかんじです。
ただ、使用シーンとして鉄筋コンクリート造の部屋の中を想定しているので、これ電波入るのか疑問です。窓があればいいんですけど。これは今年の雷シーズンに間に合わせて作りましたので、これから要検証です。

で、雷なんてオフシーズンはめったに鳴るものではないですから、文鎮化しないよう、時計に温湿度センサついてるありがちな置き時計みたいな感じで使えるように、リアルタイムクロックモジュールRTC-8564NBと、温湿度センサモジュールAM2322を使用しました。
LCDは豪華20文字4行、白色LEDバックライト搭載のSC2004CSWBを使用しました。

メインボードはArduino UNO Rev3を使用しました。Arduinoを使うのは初めてだったんですが、I2CやキャラクタLCDを使うためのライブラリが予め用意されていたので、とても使いやすいです。
Arduino用のユニバーサル基板も出てるので、自作の回路をシールドとしてスタックすることもできていい感じです。厚みが増すのが難点ですが。

一枚のArduino用ユニバーサル基板にきれいに収まりました。

プロトタイピングでのチェック終盤
 20文字4行のキャラクタLCDはかなりでかいです。
この時点でケースに収まらないんじゃないか疑惑が。

殆どがモジュールで収まってますので、こちらで他に用意するパーツはあまりありません。RTCのバックアップバッテリーとしてCR2032のケースや、余り物のブザーがかなり場所を取っています。雷センサーはノイズに繊細なのでなるべくアンテナを基板から離します。

動作の流れ

表示1:待機

タカチのSW-125が20文字4行LCDがピッタリ収まる横幅でした。
ホントはケース面とLCD面はツライチにしたかったんですが、やはり収まらなくなるのでLCD部が飛び出た形になりました。
僕が全面にカーボン調フィルム貼ってる時は、穴あけでなにか失敗した箇所があってごまかしているときです。

上記写真が待機画面です。1行目に日時と時刻、2行目に雷センサの状態を表してます。
NHiはノイズが多すぎ、DDはDisturber Detectの略でノイズ検知したけど雷じゃありませんでしたの意味です。
雷センサはノイズフロアレベルを設定し、その閾値を超えた時点で信号の検証に入ります。その結果雷ではなかった場合、Disturber Detectを出力します。
設定によりますが、割と高い頻度でノイズを検知し、文字で情報を表示するとちらちら気になるので、文字両脇のブロックが移動して現在のステータスを表す方法にしました。

3行目に温湿度と、一日の検出数を表示しています。温湿度の計測周期は1分にしてます。どうもAS3935とAM2322の相性が良くないらしく、温湿度センサAM2322を起こしに行くと、ノイズが発生するのか高い確率でAS3935がDisturber Detectします。温湿度はオマケみたいなもんですから、計測周期が頻繁でなくてもいいので、1分間隔にしてごまかしました。

AM2322のI2Cクロック速度は100kHzが上限です。Arduino UNOはデフォルトで100kHzで動作するのですが、上限ピッタリで動かすと、たいてい動作不良になって電源落とすまで永遠に無反応になる不具合がありました。その場合は80kHzくらいで使うといい感じです。安いセンサだけど反応は機敏ですよ。

表示2:検知

バックライトの動作はArduinoのGPIO端子でスイッチングするには電流が大きいです。
外部に半導体と電流制限抵抗をつけて動かしてあげてます。いたわりが大切。

落雷を検知しますと、ブザーとバックライトのブリンク、点灯でお知らせします。Eは雷のエネルギー量をあります。この数字はなにか単位があるわけではないので、相対的な目安です。Dは雷雲の距離を表します。落雷地点ではないのがポイントで、これはAMS社の独自のアルゴリズムで、雷雲の先端から、現在地までの距離を算出するようになっています。40kmまで検知可能で、直上とアウトレンジの場合はブザーのなりわけでお知らせします。まぁ、直上雷くらいはさすがに気づきそうですが。

下半分の2行は直近1時間に発生した雷の経過時間と、距離を表示します。最大4件表示し、それ以上は古いものからオーバーフローします。

表示3:復帰

なるべく置き時計の様に、操作せずとも勝手に事が進んでくようにしてあります。

雷が去って1時間経過すると、待機画面に戻ります。当日落雷が発生した時は、4行目に最終検知雷の情報を表示します。日が変われば、カウンターと履歴表示をリセットします。RTCつけておくといろいろ制御の幅が増えますね。

その他、右脇にLCDのコントラスト調整、リセット釦、セット・カウントアップ釦をつけてあり、時刻設定や雷センサーの各種設定変更、バックライト点灯などの機能がついており、充実した機能になっています。ArduinoのFlashメモリーが多いおかげです。

おわり

この画面表示を見るとちゃんと落雷検知しているように見えますが、これはチャッカマンで擬似的に雷みたいなノイズを出しているだけなので、本物の落雷を検知したことはまだ一度もありません。あとはちゃんと検知してくれればいいのですが…。夏になったらまた報告するかもしれません。


参考文献・資料
Massimo Banzi and Michael Shiloh , 船田 巧 訳 (2016年) Arduinoをはじめよう 第3 版 , 株式会社オーム社.
O-Family 電子工作の部屋 『 ■ AS3935「雷」センサーを制御する ■』
Pengin (2014年11月15日) pineconの電子工作 『Arduinoに湿度センサー(AM2321)を繋いでみる。』

コメント