人感センサーとRaspberry Piで人や動物が通ったら撮影する (RPZ-PIRS)

人感センサー(PIR/焦電赤外線センサー)は、人や動物の動きを検知できます。そこで、Raspberry Pi(ラズパイ)、カメラと組み合わせて、人や動物が通ったら写真や動画を撮影する方法を解説します。実際に動作するプログラムも用意しています。人感センサー搭載のRPZ-PIRS拡張基板を利用します。

Raspberry Pi OS Version 2022-09-22対応

更新日 : 2022年10月22日

人感センサーとは

人感センサーは以下の写真のような見た目をしています。

人感センサー

人や動物は体から赤外線を発しています。人感センサーは赤外線の「変化」を検出し、Raspberry Piに知らせます。そのため、人や動物が通ったことを検知できます。

人や動物を検知

人感センサーの検出範囲

検出距離は5mです。対象物が小さい場合は短くなる場合があります。

検出角度は水平106°、垂直97°となっており、センサーの向いている方向の広い範囲で検出できます。今回は検出時にカメラで撮影しますが、Raspberry Pi HQカメラ純正の6mm広角レンズだと画角が足りません。そこで、3.2mm超広角レンズを利用します。




人感センサーの注意点

  • 赤外線の変化を検知する仕組みのため、人や動物が全く動かない場合は検知できません。
  • 対象物が小さい場合や、正面からセンサーに近づく場合、距離が遠い場合は反応しにくくなります。
  • 太陽光も赤外線を含んでいるため、直射日光が当たる環境では誤検知する場合があります。屋内や日陰で利用して下さい。

ハードウェアの準備

カメラと人感センサーの方向を合わせるのに便利なマウントキット、RPZ-CamMountKitを利用します。今回使用するハードウェア一覧は以下の通りです。

ハードウェア備考
Raspberry Pi本体RPZ-CamMountKitを使う場合はRaspberry Pi Zeroシリーズ
それ以外は40ピンコネクタを装備したRaspberry Piシリーズ
RPZ-PIRS人感センサーを搭載した拡張基板
RPZ-CamMountKitHQカメラとRaspberry Piを固定するマウントキット
RPL-UltraWide-3.2mm人感センサーの検出範囲をカバーする画角
Raspberry Pi HQカメラカメラ本体(センサー部分)
三脚、ケーブル、電源必要に応じてご用意下さい
ハードウェア一覧

ハードウェアのセットアップ方法は各製品ページを参照して下さい。

組み立て例

カメラのセットアップとピント調整は以下の記事を参照して下さい。libcamera-stillコマンドで写真の撮影ができる状態にして次のステップに進んで下さい。

フローチャート

今回実行するプログラムのフローチャートを示します。

人感センサーが検知していない間はLEDを緑色に点灯して待機します。

人感センサーが検知するとLEDを青色に点灯し、撮影を行います。オプションで写真か動画を選べるようになっています。撮影後はLEDを黄色にして一定時間待機します。(過剰な撮影枚数を避けるため) 時間はオプションで変更できます。

フローチャート



プログラムダウンロード

プログラムはこちらからダウンロードして展開して下さい。Raspberry Pi OS Bullseye (バージョン2021-10-30)以降をご利用下さい。Raspberry Pi OS Buster以前や、Legacy版だと、撮影コマンドが異なるため動作しません。

わかりやすくするため、撮影は「libcamera-still」及び「libcamera-vid」コマンドを利用する方法をとっています。

オプション設定

17-21行目にあるオプションの値をテキストエディターで書き換えることで、プログラムの動作を変更できます。

まずは、撮影したファイルを保存する「save_dir = ‘/home/pi’」行のみ確認、変更して下さい。ユーザー名がpiの場合は変更不要です。それ以外の場合は適宜書き換えて下さい。

image_size = (1440, 1080)  # 撮影サイズの横幅, 高さ
mode = 'photo'  # 写真なら'photo', 動画なら'movie'
save_dir = '/home/pi'  # 写真や動画を保存するディレクトリ
interval = 60  # 1度撮影した後、再開するまでのインターバル時間[秒]
movie_duration = 10  # 動画の撮影時間[秒]

プログラム実行

ターミナルを開き、pir_cam.pyと同じディレクトリで以下の$に続くコマンドを実行します。

$ ./pir_cam.py

拡張基板のLEDが緑色に点灯し、人感センサーのモニターを開始します。

人感センサーの前に手をかざすなどすると、反応してLEDが青色に変化し、写真を撮影します。オプションで指定したディレクトリに撮影画像が保存されていれば成功です!

撮影後はLEDが黄色に変化し、オプションで指定されているインターバル時間(デフォルト60秒)待機し、その後再度センサーのモニターに戻ります。これは過剰に撮影しないための機能です。




動画の撮影

オプションで「mode = ‘movie’」に変更すると、動画を撮影できます。撮影時間は「movie_duration」で変更できます。

撮影中は「tmp.h264」と「tmp.txt」の2つのファイルが生成され、撮影終了後にmkvファイルに変換されます。

撮影サイズの変更

オプションの「image_size」の値を書き換えると撮影サイズの変更ができます。写真の最大サイズは4056×3040、動画の最大サイズはエンコーダーの関係で1920×1080となります。

カメラの横:縦の比率が4:3なので、サイズを4:3にすると最大範囲が撮影できます。それ以外を指定すると、上下か左右がクロップされます。そのため、動画で最大範囲を撮影する場合は1440×1080を指定して下さい。

注意事項

Raspberry Pi Zero / Zero WHは、処理能力の関係で人感センサー検知から撮影まで若干のタイムラグが生じる場合があります。Raspberry Pi Zero 2Wを使うか撮影サイズを小さくして下さい。

人感センサーは電源投入後30秒までは出力が安定しない場合があります。




まとめ

人感センサーとRaspberry Pi、カメラと組み合わせて、人や動物が通ったら写真や動画を撮影する方法の解説は以上です。拡張基板「RPZ-PIRS」には赤外線送受信や、明るさ、温度、湿度、気圧センサー機能も搭載しており、人が一定時間検知されない場合に家電をOFFするような応用も可能です。

実現したい機能がある場合、ハードウェア、ソフトウェアを有償にて承っております。ハードウェア、ソフトウェア受託開発をご参照下さい。

定期撮影Raspberry Piカメラをモバイルバッテリーで長期運用 (RPZ-PowerMGR)

Raspberry Pi(ラズパイ)と純正カメラを使用して、定期的に撮影するタイムラプス機能を実装する方法を解説します。RPZ-PowerMGR拡張基板を使うことで、指定時刻に起動し、撮影後は自動的にシャットダウン&電源OFFします。待機時の消費電力をカットすることで、モバイルバッテリーで長期運用が可能になります。

Raspberry Piと赤外線でエアコンの自動ON、消し忘れ機能を実現

普段、エアコンを消し忘れてしまい夜間つけっぱなしにしてしまったり、冬場に朝エアコンを入れても暖かくなるのに時間がかかったことは無いでしょうか?本記事では、Raspberry Piと拡張基板を利用して、毎晩のエアコン消し忘れ機能、および朝に温度が低い場合に自動で暖房を入れる機能を実現します。

指定時刻にRaspberry Piの電源をON/OFF (RPZ-PowerMGR)

RPZ-PowerMGRを使って、指定時刻にRaspberry Pi(ラズパイ)の電源ON/OFFする方法の解説です。決まった時間だけ起動して消費電力を抑えることが可能で、モバイルバッテリーやソーラーシステムでの運用に最適です。

TSL2572センサーとRaspberry Piで明るさ(照度)を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、TSL2572センサーで明るさを測定する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。