myThingsやSORACOM,Lazuriteでイノシシわなの監視装置をつくる

  • 88
    Like
  • 8
    Comment
More than 1 year has passed since last update.

イントロ

イノシシやシカなどが農作物や樹木への被害をあたえる、いわゆる獣害がふえています。
今回は柵をつかったワナが作動したときに、自分の携帯メールに通知をとばす仕組みを考えてみました。
s_IMG_all.jpg

参考、謝意

メーカーの公式情報以外に下記投稿を参考に作成しています。大変参考になりました。感謝です!!
http://qiita.com/dietposter/items/068019ee53252206a6bf
http://qiita.com/masato/items/f9be4a15216fe29de7fb
http://homepage6047.sakura.ne.jp/
狩猟自体は狩猟免許がないとできません。今回は免許をもっているわたしの嫁とその師匠に協力してもらいました。こちらも感謝です。

ワナのイメージ

今回は箱ワナといわれる形状のワナに対応できる装置をつくることにしました。
ワナは人が住んでいる場所から数100メートルくらいはなれた山林に点在しています。
ワナの状態は毎日見に行くことになりますが、ワナが作動していることがわかれば、見回りのタイミングや順番などは工夫ができるようになります。
s_IMG_6256.jpg

構成

おおまかな構成は次のようになります。
ゲートウェイとインターネットの接続は、いつでもどこでも使えるように3Gで接続したかったのでRaspberry Pi + SORACOMを使うことにしました。
センサーは、なるべく省電力かつゲートウェイまで遠距離通信ができるものにしたかったので、ArduinoライクなIDEをもった省電力マイコンキットでBP3596Aというローム製のサブギガ通信モジュールが使えるラピスセミコンダクタのLazuriteをつかってみました。

スクリーンショット 2015-11-30 16.15.24.png

ゲートウェイ

センサー

クラウド

ゲートウェイの設定

Raspberry PiとLazurite Pi Gateway, BP3596A, ボタン電池(CR1220)を接続します。

s_IMG_GW.jpg

Raspberry Piの設定

LazuriteのダウンロードサイトよりRaspberry Piの起動イメージをDownloadし、起動用のSDカードにイメージを書き込んで起動し、Raspberry Pi 2の初期設定をしていきます。

$ sudo raspi-config

ファイルシステムの拡張とタイムゾーンの変更を行います。

  • Expand Filesystem > Select
  • Internationalisation Options > Change Timezone > Asia > Tokyo

再起動します。

$ sudo reboot

Raspberry Piをネットに接続したうえで、以下の設定をしてください。

パッケージの更新とアップグレードをします。

$ sudo apt-get update
$ sudo apt-get upgrade

NTPサーバーを日本のサーバーに設定します。

/etc/ntp.conf
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
pool ntp.nict.jp iburst

ntpdの再起動をして時間あわせをします。

$ sudo /etc/init.d/ntp restart
Stopping NTP server: ntpd.
Starting NTP server: ntpd.

RaspberryPi起動時にSub-GHzのドライバをインストールするように設定します。

/etc/init.d/subg.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides:     mac008008
# Required-Start:   $local_fs
# Required-Stop:    $local_fs
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    Lazurite Sub-GHz
### END INIT INFO

echo Installing Sub-GHz..
sudo insmod /home/pi/driver/sub-ghz/DRV_802154.ko
$ sudo chmod 755 /etc/init.d/subg.sh
$ sudo insserv -d /etc/init.d/subg.sh

SORACOMの設定

@diteposterさんの投稿をベースに設定します。

センサー側の設定

センサー側はリードスイッチのOFF/ONを検知して、ゲートウェイに通知する仕組みをつくります。
リードスイッチは、スイッチ部分に磁石が近づくことでスイッチがONになります。
イノシシの柵に磁石を取り付けることで、通常はスイッチはON状態ですが、ワナが作動すると柵が降りるため磁石とスイッチがはなれスイッチがOFFになります。

s_IMG_Sensor2.jpg

Lazurite Sub-GHzに通信モジュールとリードスイッチを取り付けます。
リードスイッチはGND2番PORTに接続します。
リードスイッチには極性はないのでどちらにつけても大丈夫です。

Lazurite IDEのインストール

Lazurite IDEはWindows版のみ配布されています。
IDEのインストール方法はこちらを参照ください。

Lazurite Sub-GHz側プログラム

通常状態では26番ポートに標準でアサインされているLEDを青色に点灯させます。
リードスイッチがOFFになった場合、26番のLEDをOFFにして、Gatewayがわに"gate_open"の文字列を送信します。
サンプルコードはこちらになります。6行目のHOST_ADDRESSはgateway側のSubGHz通信モジュールのシリアル番号の下4桁になります。

s_IMG_module.jpg

プログラムの反映

IDEを起動し、Lazurite Sub-GHzのmicro USBインターフェースとIDEのインストールされたPCを接続します。
image

ファイルから適用したいファイル名を選択し、適用先の環境を下記の通り設定し、ビルドしたうえでマイコンボードに書き込みします。

ツール>マイコンボード>Lazurite Sub-GHz Rev2
ツール>オプション>Lazurite Sub-GHz
ツール>シリアルポートから適切なポートを設定ください

image

下記のメッセージがでてリードスイッチに磁石を近づけるとPort26が点灯すれば設定完了です。

Success ML620Q504 reset

IDCFチャンネルサーバを構築する

myThingsを自作デバイスと接続するためのプロトコルゲートウェイとして、IDCFクラウド上にIDCFチャンネルサーバを構築します。設定は@masatoさんの情報を参考にしてください。
今回はtrigger-1をつかってmyThingsに通知を行うため、サーバのグローバルIPアドレスとtrigger-1のUUIDとTOKEN情報をメモしておいてください。

myThingsでIDCFチャンネルを認証する

構築したIDCFチャンネルサーバをmyThingsで認証します。
こちらも@masatoさんの情報をそのまま参考にしました。

ゲートウェイの設定

ゲートウェイ側の設定に戻ります。
センサー側と接続して"gate_open"の文字列を受信したときに、IDCFチャンネルサーバにメッセージを送れるようにします。公式サイトで配布されているrubyのサンプルコードを改変したものがこちらです。

「IDCF」チャンネルのリポジトリからgit cloneします。

$ cd ~/ruby
$ git clone https://github.com/mac008008/lazuriteGW

メモしておいたIDCFチャンネルサーバのグローバルIPアドレスとtrigger-1のUUIDとTOKENをgateopen.rbに書き込みます。

~/ruby/gateopen.rb
    if str_buf == "gate_open" then
        uri = URI.parse ("http://{IP_Address}/data/{trigger-1 UUID}")
        Net::HTTP.start(uri.host, uri.port){|http|
            header = {
                "meshblu_auth_uuid" => "{trigger-1 UUID}", "meshblu_auth_token" => "{trigger-1 TOKEN}"
            }
            body = "gate_open"
            response = http.post(uri.path, body, header)
        }
        ## print(sprintf("PANID=0x%04X, rxAddr=0x%04X, txAddr=0x%04X, Strings:: %s",myPanid,rxAddr,txAddr,str_buf))
    end

RaspberryPi起動時にgateopen.rbが起動するように設定しておきます。

myThingsの設定

myThingsでtrigger-1が発火したときに、所定のアドレスにメールがとぶように設定します。

image11.jpg

結果

まずはプロトタイプということで、ジップロックのなかにDC電源付きのLazuriteとシリカゲルをいれ、リードスイッチを柵に設置した磁石に接するように固定しました。
s_IMG_Sensor3.jpg

箱ワナの設置されている柵から100m程度はなれた箇所にゲートウェイをおいた状態で、手動でワナを動作させました。
IMG_63091.jpg

以下のようにメッセージが送信されました!
image15.jpg

見通しがよい場所だとかなりサブギガ帯の通信がとぶようですが、地形や樹木の状態などで大きく状況が変わるようでした。
今回はあまりアンテナの設置や消費電力、長期的に設置するための工夫などまではできませんでしたが、もうすこしフィールドで試行錯誤してみたいとおもいます!