ケイズファームの日記

京都市の里山暮らし

IoT農業のための工作 第二弾 自動罠システム その3 モーションセンサー

IoT農業のための工作 第二弾 自動罠システム その3 モーションセンサー

 

モーションセンサー編です。↓のオレンジの〇

f:id:keisfarm:20200824135956j:plain


型番: HC-SR501
安い、100円とか? これ手元にあったセンサーライトにも使われていたんですよね、有名な製品なのかな。


ピンが3つあります。
使うにはピン2つに電源の+と-を接続し、動きを検知したら真ん中のピンから3.5Vが出力されます。


3.5Vあればケイズファーム御用達のソリッドステートリレーを動かせるので、これで10 0V機器も動かせます。自分でセンサーライト作ろうかな。
↑ やってみたらパワーが足りずリレーが動きませんでした、センサーからの出力でトランジスタを通じてリレーを駆動させたら動きました。

 

で、これをラズパイで使うのに結構苦労したんですよ。

まず繋いだ時にセンサーがちゃんと動作せず定期的に3.5Vを出力し続けてしまった。


これは電源に間違って3.3Vを使ってしまったのでエラーが出ていただけ。

電源を入れた時は初期調整をするらしいのですが、数秒で調整が止まるはずが止まらなかったので、故障かと思ってしまった。というわけで5V以上推奨です。

 

次、センサーが反応した瞬間を検知するのに手間取った。
これは問題です。センサーが反応しているかどうかを読み取ることは容易ですが、反応した瞬間を検知するのは工夫が必要だった。永久ループで常時監視などもってのほかです。


ラズパイのピンをインプットモードに指定し、そこを何かしらの方法で通電させれば、

ラズパイ内の特別なファイルに1の数字が書き込まれる。
通電していない時は0が書き込まれます。

これがラズパイの仕様です。


この書き込みを検知するしかないのですが、私が使用しているnode.js でのファイル監視コマンド fs.watch() はなんとラズパイでは動かないらしく(実際動きませんでした)
inotify という外部の機能を使うことに。

 

node.js で外部コマンドを使用するにはchild_process コマンドを使いますが、慣れなくて苦労した。

 

とにかく、node.js で fs.watch が使えないなら inotify を child_process で起動する。

これは出来ましたのでご報告します。

 

今日はここまで

 

追記:

モーションセンサーにcdsセルという光センサーを接続すると、暗い状態でしか反応しなくなるので夜間センサーとして使用できます。私の用途にはこの使用法が適切。

あとはセンサーについている2つのネジを回すことで検知時間(真ん中ピンの通電時間)と検知距離を調整出来ますが、かなりアバウトなネジで思ったとおりの調整は難しいとの触れ込みです。