SSブログ

猿検知通報装置の製作

猿による畑作物への被害を防ぐために、畑周辺の猿の通り道にセンサー(子機)を設置し 検出時に無線で親機に通報する装置を製作しました。検知情報は親機からメールで送信することも可能です。
ある程度体の大きい動物や人を検知し、防犯にも使えるシステムです。

--- 内容 ---
1. システム構成
2. 検出方法の改良
3. 回路図と説明
3.1 子機
3.2 親機
3.3 中継器
4. 装置の製作
4.1 子機
4.2 親機
5. TWELITE DIPの設定
6. ソフトウェア
7. 今後の課題
8. 後記


1. システム構成

システムの構成は図1のようになっていて、子機の焦電センサーで検出があった場合その情報を無線で親機に送り、親機はその位置を画面のマップ上に表示して アラーム音とLEDの点灯で知らせます。また、親機がインターネット接続が可能な環境にあれば 検知情報をe-mailで送信することも可能です。

図1 猿検知通報システム構成図
図1_システム構成図.jpg

無線モジュールはMONO WIRELESS 社の TWELITE DIPを使っていて、電波が届かない子機があるときは途中に中継器を入れて設置範囲を広げることができます。 

子機は電池駆動で1年以上電池交換不要というのが目標でしたが、センサー回路の単一電池は短いもので約10か月(凡そ1日平均30回位の検出)でしたので改善課題です。TWELITE DIPの単三電池は1年以上持ちます。
(追記: 「猿検知通報装置の製作(電池寿命改善品)」にて対策をしましたのでそちらも参照願います。 2018.12.09)

親機には グラフィック表示をしたかったのとプログラミングの簡易さからシングルボード コンピュータのRaspberry Pi3 を使い、3.5"のLCDと組み合わせて自作のコンパクトなケースに収納しています。
写真1、2は使用している実物の子機と親機です。

写真1 センサー子機
child.jpg
 
写真2 受信親機
parent.jpg


2. 検出方法

Dual素子焦電センサーを用いた生体検出です。
1号機では市販されているセンサーモジュールを使いましたが、屋外で使うと非常に誤動作が多く また検出距離も短くとても使い物にはなりませんでした。
その原因について考えた結果、検出方法に関して次のような3つの対策を行いました。

(1) 単眼フレネルレンズの採用と不要外光の遮蔽
市販のセンサーモジュールでは広範囲を検出する複眼フレネルレンズを使っていたのですが、範囲が広すぎて余計な反応をするので、単眼フレネルレンズ AE-01(AK-FL1) を用いて検出方向を一方向に絞るようにしました。(検出距離も伸びます)
これによって、図2に示すように猿(被検出体)がセンサーの前方を横切る事で検出信号が得られることになり(線上通過検出)、そのようなセンサーの設置方法が必要となります。
すなわちセンサーは猿が通過する道にゲートのような形で設置することが必要で、畑内の範囲を監視するような設置方法ではありません。

図2 単眼フレネルレンズとDual素子焦電センサの検出ゾーンパターン
図2_検出ゾーンパターン.jpg

太陽光のような不要外光を遮蔽するために、図3に示すように 受光穴を付けたキャップを取り付けて入射光の角度を制限しました。
センサーユニットは太い塩ビパイプの中に入っていて レンズと塩ビパイプの受光穴との間には元々約25mmの遮蔽距離があるのですが、検出距離を得るために必要となるサイズの穴(14mm径)を開けると誤検出が多くありました。
そこで、塩ビパイプの穴(16mmに拡大)の外に 頭に穴(14mm径)の開いたキャップを付けて実験したところ20mm程度の長さのキャップで誤検出は比較的少なかったので、見た目も考えてキャップ長20mmにしました。
(この条件(14mm径/20mm長)は決め打ち的なところがあるので、本当はもっと良い条件があるかもしれません。
更に、受光穴は左右と上側から外光を減らしたいと気持ちから円ではなくU字形にしてみました。(気休め的なこだわりなのですが、趣味の工作なので。)

図3 遮光キャップ
図3_遮光キャップ.jpg


(2) 検出パルスの異極順次検出
Dual素子焦電センサーと単眼フレネルレンズを使った場合、図2に示すような検出ゾーンを生体が横切ると センサーの出力は図4の生体通過時の波形に示すように上側(+方向)と下側(-方向)に異なる極性の連続アナログパルスを生じます。(順番は横切る方向で逆になります。)

図4 センサー出力の判定方式
図4_異極パルス順次検出.jpg

通常の検出回路では図4(a)のように +/-のアナログパルス検出回路の出力を+デジタルパルスに単極化したものを検知しているので いずれの極性のアナログパルスを検知しても検出として処理をしますが、これでは 例えば図に示すように環境ノイズが+パルス検出回路の閾値を超えただけでも検出したと誤検知しやすくなります。
そこで図4(b)に示すように、+/-の異極パルスがある時間内に連続して発生した場合(異極パルス順次検出)のみ検出と判断するような方式にしました。
外乱ノイズにも+/-のパルス性のノイズがあるので完全には誤検出を防ぐことはできませんが、誤検出の頻度は減らせます。

コンパレータ出力の後のデジタル処理は 回路で行う方法とソフトウェアを処理する方法が考えられます。 ハードウェアの好きな私は回路で行いましたが、回路の消費電力が思ったより大きく電池寿命が目標の1年に達しなかったので 将来ソフト対応を行おうと考えています。

なお、この方法は物体がセンサー前方を右から左に動いたか その逆に動いたかの判別もできるのですが、今回のシステムでは利用していません。

(3) 2センサー検出方式
上述(1)の遮蔽対策をしても、実際にはセンサー設置上どうしても太陽光やその反射光が入ってしまうことは避けられません。
そこで、1つの検出ゲートをセンサーの向きを変えた2つのセンサーで構築することにし、ある時間内に2つのセンサーがともに検出した時場合「検知した」と判断するようなプログラムにしました。
図5にセンサー配置の例を示します。
本システムの子機には2つのセンサーユニットをつなぐことができますので、その2つのセンサーユニットを若干角度を変えて取り付ける方法があります。
狭い横断幅で検出するには、2つの子機のセンサーユニットを向かい合わせに置く事で対処できます。

図5
図5_2センサー検出.jpg

これら(1)~(3)の対策で誤検出によるストレスはなくなったそうです。(以前はアラーム音が多かった。)
特に、コストは上がりますが2センサー検出判定は効果が大きいです。
異極パルス順次検出の効果については数値的データがありませんが、センサーを左か右にゆっくりスライドした時(相対的に周辺全体が動いたのと同じ)の誤検出の程度は改善されていました。


3. 回路図と説明

3.1. センサー検出回路

図6に検出部の回路を示します。

図6 検出部回路図
図6_子機検出部回路図.jpg

焦電センサーはRE-210(電圧 2.2-15V)を使おうとしましたが、背面が金属で覆われていないので後ろからの赤外線にも影響を受けてしてしまう事から、D203Bを使うことにしました。D203Bは仕様書上電圧が 3 - 15Vだが実際には2.4Vでも動作したので使っています。(保証はされてないので、使うのでしたら個々のデバイスを動作確認した方が良いです。
<2022.12.07追記>
当記事を書いた時点では焦電センサーの電源電圧がスペックより低くなっても動作する事を個々のセンサー毎に確認して使っていましたが、「乾電池2本使用の焦電センサー用電源」で対処しました。 <追記終わり> )
検出感度はこの回路との組み合わせでは両者で有意差がありませんでした。

次に 焦電センサー出力をGain=101の非反転アンプ2段で増幅しています。
ゲインが大きいので 近距離の検出時には増幅回路は飽和しますが、検出性能には問題ありません。
OP AMPは低消費電流のNJU7014を使いましたが、このAMPは出力のドライブ電流が小さいので2段目も入力インピーダンスの高い非反転構成にしています。

コンパレータの閾値を作るのにBAV99を2個使いダイオード計4個をシリーズにしていますが、電流が少ないのでこれで 約1.1Vの電位差になっています。

74HC123 の2つのマルチバイブレータはそれぞれ+/-パルスの検出コンパレータの出力があった時に約3秒間 Highレベルを出力します。この間に他方の極性を検知したコンパレータ出力があると、極性検出の順番に応じて74HC74のいずれかのフリップフロップが約1mSのパルスを出力します。
<2022.11.05追記> 2段目アンプの後のコンパレータとロジック回路はPICを使って作るとシンプルになり、またアルゴリズムを検討すれば誤検知の軽減ができるかもしれません。興味のある方にお奨めです。

電源は 初めセンサー回路とTWELITE DIP の電源を一緒にしていたのですが、TWELITE DIPの送信時に電圧が瞬間的に低下し それが焦電センサー出力に影響を及ぼしていたので、格好はよくないですが結局別電源にすることにしました。
この際、マルチバイブレータHC123とHC74を用いたパルス発生回路は消費電流が多いようでしたので、単一アルカリ電池を使うことにしました。TWELITE DIPはコイン電池(2032)でも持つと思ったのですが、実際には2か月持たないものもあったので、単三アルカリ電池を使いました。
<2020.06.23追記> 電源をを単一電池1組にする事が出来ました。こちらを参照してください。

この回路は電源インピーダンスが高いとマルチバイブレータの動作で不安定になり発振することがありますので、電池との接続線はできるだけ太く短くしてください。
今回これが理由でセンサーの電源をFETでスイッチするのを諦めましたが、HC123とHC74で構成する部分をいずれはソフト処理にして回路の省電力化をし、更にセンサー電源をリモートON/OFFをすることで省電力化して電池を長持ちさせるようにしたいと思っています。

図7 送信部回路図
図7_子機送信部回路図.jpg

図7は TWELITE DIP無線モジュール周辺の回路で、2つのセンサーユニットからのOUT1, OUT2検出信号(約1mSの正パルス)はトランジスタで反転してTWELITE DIPにのDI1~DI4に入力しています。
また、ここではセンサーユニットへの電源供給の中継もしていて、ここで電圧の監視用データを取得します。
TWELITE DIPの電源電圧Vcc はデータが送信パケットに割り与えられていますが、センサー回路の電源電圧Vddは1/2に分割してADC(AI1)に入力し ADCデータとしてパケットに入れています。

<2023.06.20追記> 「自作焦電センサー回路を使った動体検知」の回路も使用できますのでご覧ください。


3.2. 親機

図8に受信機(親機TYPE 2)の回路図を示します。

図8 親機TYPE2回路図
図8_親機TYPE2回路図(1).jpg

回路は Raspberry Pi3 本体、TWELITE&サウンド回路基板 ならびに3.5”LCD ディスプレイで構成されています。

GPIO関連は、
- UARTはRaspberry Pi3 とTWELITE の間の信号線を 470Ωの抵抗を介して接続します。
- LEDは、黄色は GPIO 22ピン 赤は GPIO 23ピンで直接ドライブされます。
- アラーム用サウンド用ブザーは GPIO 18ピンをPWM設定にして そこから一定周波数の音信号を出します。
- メロディICは GPIO 27ピンをHighにするとICの電源が供給されてメロディ信号が出て、Lowにすると信号出力が止まります。
- ミュート制御は GPIO 17ピンで行います。

ブザーとメロディ音信号は、ボリュームで調整された後 NJM386BDで増幅して圧電スピーカーをドライブしています。
スピーカースイッチはハードウェアMUTEで、緊急で音を止めたいときにすぐにできるようにしました。


3.3. 中継器

図9に中継器の回路を示します。

図9 中継器回路図
図9_中継器回路図.jpg

TWELITE DIP を中継器モードで使ったもので、5Vの入力電圧を IC regulator で 3.3Vに変換してTWELITE DIPに供給しています。
負荷が軽いと出力電圧が安定しないので、10mA程度を消費する抵抗を出力に入れてあります。

(参考)
実証試験中の場所では子機と親機の距離は 100m にも満たないが、猿検知の為に子機(アンテナ)の高さは60cm程度と低く、また親機の置いてある部屋とはいくつかの壁や雨戸で隔たれているので 信号が届かないことがありました。そこでセンサーに近い部屋のガラス窓際に中継器を置くことにしました。
障害物のないところでの通信距離は取れても家の内外の通信距離は思った程取れないもので、中継器の必要性は高いです。

<2020.11.23追記>
ソーラーパネルを使った中継器も製作してみましたので、こちらの記事内の「子機の中継機能を使った中継器(標準アプリ用)の製作」の部分を参照してください。
TWELITEを中継器モードで使うと中継器の電池電圧の監視が出来ませんが、子機モードでは中継器機能を持たせることもでき、その場合には電圧データを親機に送信することが出来るのでそのモードで使っています。対応した親機のソフトウェア (Saru3.5)もリリースしました。
なお、子機モードで使ってはいますが、猿センサーの子機としては使わず中継専用機です。


4. 装置の製作

4.1. 子機製作

回路基板
回路基板は手作りです。小さいケースに収めるためにコンパクトにしたので作業性が悪く、検出回路基板1枚作るのに4時間ぐらいかかりました。
構造はリンクファイルを参照してください。 => 参照

こんなの作るの面倒くさいという方は、異極パルス順次検出の機能はないですが 市販のモジュールを改造して使うこともできます。 => 参照

回路収納ケース
センサーケース、送信モジュールケース並びに電池を収納するケースは塩ビパイプを加工して作ります。
部品や寸法、加工方法についてはこちらのファイルを参照してください。 => 参照

子機の動作確認
組み立て後 動作確認をします。
親機がない場合には Raspberry Pi3 と MONOSTIC でソフトが使えます。(親機製作参照)
あるいは WindowsパソコンとMONOSTICがあれば、Teratermのようなシリアル通信ソフトで受信パケットを見られますので、子機の動作確認ができます。
5秒おきの定期通信と検出した時にパケットが来ていることを確認してください。

(設置注意事項)
子機設置時の注意点について記しておきます。
- センサーは揺れると誤検出を起こしますので、木の枝など風で揺れるようなところには設置しないでください。
- 木の枝や草の葉の揺れでも誤検出することがありますので、センサー前方はできるだけ障害物がないようにしてください。
- 太陽光が直接あるいは反射して "2センサー検出"する2つのセンサーの受光穴に同時に入らないようにセンサーを設置してください。できるだけ北向きが良いです。
- センサーは動物だけでなく移動する車も検出することがありますので、できるだけ車の通る方向に向けないでください。(逆に車を検知する事を目的に使えるかもしれませんが。)

4.2. 親機製作

親機TYPE 2は Raspberry Pi3 、手作りのTWELITE&サウンド回路基板ならびにKuman 3.5” LCD ディスプレイ(SPIインターフェース)で構成されています。
構造写真はこちらです。 => 参照
(2019.10.25)
最新親機製作方法 => 「Raspi3&3.5"Monitor一体型ユニットの製作」参照 

TYPE2ではRaspberry Pi3 とTWELITE DIPを「TWELITE&サウンド回路基板」経由でUART接続で行っていますが、「TWELITE&サウンド回路基板」を使わず MONOSTICをRaspberry pi3のUSBに挿しただけも使えます。(settings ファイルのシリアルポート設定が必要)
Alarm音やAlarm LEDの点灯はありませんが、モニター上のインディケータは反応します。 

2センサー検出を行わない場合はセンサー数が4個以下で あればTWELITE DIPとロジックIC, タイマーICで親機を作ることができます。ただし、TWELITE DIPのC言語プログラムを改造して書き込むことがちょっと厄介かも知れません。
最初に設置した時に使った親機TYPE 1で、関連資料はこちらです。 => 参照
<2019.11.21追記>
2センサー検出用親機TYPE 1(改)を製作しました。こちらを参照してください。


5. TWELITE DIPの設定

子機の無線モジュールTWELITE DIPはインタラクティブモードで個別に設定が必要です。
子機を特定できるように論理デバイス番号を1から順につけてください。(Saru3.0 以降のソフトでは論理デバイス番号を付けない方法も可能です。)
また子機間欠1秒モード(このモードの設定は回路で行っています)の間欠時間を 5000ms に設定してください。(間欠時間は 10000ms まで設定変更可能ですが、5000ms 以外の設定ではプログラムを使ったことがないので不具合が出るかもしれません。)
そのほかの項目は初期値のままで良いですが、通信の干渉などの問題があるときには必要に応じて関連項目の設定を変えてください。ただし、アプリケーションIDや周波数チャンネルなど 親機子機共に変更が必要なものがあるので注意してください。
なお、親機で使うUARTの設定は回路でBPS端子をOPENにしていますので115200bps に固定されていて、インタラクティブモードでの設定は不要です。

TWELITE DIP の設定には TWELITE R-トワイライター(プログラム更新にも使用可), Micro USB(トワイライター側)ケーブル 、Windows PCとTeratermなどのシリアル通信ソフトが必要です。
インタラクティブモードへの入り方・操作は下記にリンクしてください。
設定変更(インタラクティブ)モード


6. ソフトウェア

基本機能は、画面にマップ図と その上にセンサーと検出位置を示すインディケータを表示し、猿を検知するとインディケータの色を赤にし、更に赤LED点灯、アラーム音を出す というものです。
親機がインターネット接続環境にあるときはメールでアラーム通知も出せます。
プログラム言語は Python2 でグラフィックは Tkinter を使っています。
メールはTLS暗号化対応していて、Raspberry pi3 にPostfixをインストールする必要があります。「Raspberry Pi に Postfix をインストールする手順」を参照してインストールしてください。

より詳しいプログラムの機能説明や設定内容、プログラム変更するのに知っておいたほうが良い情報などをまとめましたので参照願います。
ソースコードを見る前に一度目を通していただけると理解しやすいと思います。
=> 参照 (Saru3.5以前)
=> 参照 (Saru3.6) 1. ソフトウェア関連説明  2.設定関連説明

ソフトウェアのダウンロードはこちらから。 (最終更新 2021.01.29)
*Saru3.6ではIDLEをPython3に変更しています。

このプログラムは必要な機能は果たしていると思いますが、完璧な動作の保証はいたしかねます。またデバッグやアップデートメンテナンスは私の都合で行いますので、使われる方はご自身での修正や変更対応をお願いいたします。

<2019.10.18追記>
SD cardを壊してしまったので新しいSD cardにOSのインストールからやったところ、raspberry piのシステム変更やLCDドライバーの変更などがあって猿検知通報装置の親機が従来のように動作しないことがわかりました。ハードウェア、ソフトウェアの変更が必要です。
変更内容も含めて新たに「Raspbian OSのインストールから 3.5"LCDを搭載した装置が機能するまでの設定方法」をまとめました。 => 「Raspi3セットアップ手順」参照。


7. 今後の課題

完成させてから掲載しようとするといつになるかわからないので、途中で掲載に踏み切りました。 ですのでまだ回路の定数や部品選定など見直したいところもある状態ですが、機能面を優先して次のようなことをしたいと思ってます。

1.異極パルス順次検出をハードからソフト対応にする。
電池寿命1年を達成するためにも是非やりたいと思っています。

2.センサー電源を親機から送った信号でON/OFFする。
マイコンからUARTで親機のTWELITE のDI設定を変えるのにTWELITEのプログラム変更が必要です。できればセンサー個別にON/OFFできるとよいのですが。

3.Raspberry Pi3 に代えて ESP8266 で親機を作る。
グラフィック表示でなくてキャラクター表示でもよいと思うので、コストパフォーマンスの良いESP8266を使えるようにしたいと思っています。

4. 検出距離を伸ばす
増幅回路、コンパレータ回路を見直して最適化する。こういうアナログの検討の方が好きです。

5.検出感度のリモート設定
センサーの検出感度設定(ゲインあるいは閾値設定)を親機からセンサーユニット個別にできると、親機で状況を見ながら誤動作を起こしにくい最大感度に設定できて便利です。

まだまだ先は長そうです。


8. 後記

親戚で猿に畑を荒らされていると聞いたので猿を追い払うような装置ができないものかと考えたのですが、猿は賢く いつも同じ手では慣れてしまうと聞きました。
であれば、少なくとも来たら人に知らせることができるものを作ろうと思い、今回の製作となりました。
最初はさほど時間もかけずにできるものと思っていましたが 何事もそう簡単にはいかないもので、結局4号機まで作ってほぼ使えるものとなりました。
私は仕事の関係で台北に住んでいて 2,3か月に一度日本に帰り、そのたびに改善した新しいものを設置するということを繰り返し、開始2017年3月から実用化までほぼ10か月を要しました。
その間台湾では週末にセンサーを持って公園に行って検出効果を確認したり、日本で設置した親機から毎晩メールで送られてくる検知状況を見てはきちんと動作しているかどうかを確認していました。
しかし 実証実験を始めたものの、センサーを設置したら猿が来なくなってしまいました。
どうも警戒をしているようで寄り付かなくなってしまったそうですが、一度だけ猿を検知したのを確認できたそうで、その時は子連れの猿が来ていたそうです。
こうして今のところ猿の害は防げていますが、センサーを見て警戒して寄り付かないなら何も回路を入れなくても塩ビパイプで似た形状のものを作ればよいということになり、これまで一所懸命システムを作ってきた努力は何だったんだとなってしまいます。 そうならないよう、今では猿が出てきてくれることを内心願う気持ちも少々あります。
最近は薄暗くなったころ鹿が良く来るようで、それは確実に検知できているので その度にライトを当てて追い払っているそうです。
でも鹿じゃ満足できない。やっぱり猿を確実に検知したい。


<追記>
2019.03.12 図8 親機回路図変更 (TWELITE DIP M1ピン接続修正、オーディオアンプ入力レベル範囲適正化。)

2019.07.30 メール送信について
最近 プロバイダーによるサーバーセキュリティ強化により 暗号化してない通信ではメール送信ができなくなっていますが、Raspberry Pi の場合 暗号化対応ができますので その設定やプログラムの変更で送信ができるようになります。
Raspberry piに Postfix というメール転送エージェント(MTA)をインストールし、eMail.py の内容を変更して送信することができました。


===== 関連記事 =====
猿検知通報装置の製作(電池寿命改善品)
猿検知装置用センサーの代替品
猿検知通報装置 新子機製作
太陽電池を使った動物センサー子機の製作
猿検知通報装置関連まとめ

---親機製作---
ESP8266を使った猿検知通報システム親機の製作
Raspi3&3.5"Monitor一体型ユニットの製作
Arduino Nano互換機を使った簡易型親機の製作
ESP32を使った猿検知通報システム親機の製作
ESP32 & 2.8" G_LCD一体型ユニットの製作(2)


>> ブログ記事一覧へ

nice!(0) 
共通テーマ:趣味・カルチャー

nice! 0