人感センサー(PIR/焦電赤外線センサー)は、人や動物の動きを検知できます。そこで、Raspberry Pi(ラズパイ)、カメラと組み合わせて、人や動物が通ったら写真や動画を撮影する方法を解説します。実際に動作するプログラムも用意しています。人感センサー搭載のRPZ-PIRS拡張基板を利用します。
更新日 : 2024年9月28日人感センサーとは
人感センサーは以下の写真のような見た目をしています。
人や動物は体から赤外線を発しています。人感センサーは赤外線の「変化」を検出し、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-CamMountKit | HQカメラとRaspberry Piを固定するマウントキット |
RPL-UltraWide-3.2mm | 人感センサーの検出範囲をカバーする画角 |
Raspberry Pi HQカメラ | カメラ本体(センサー部分) |
三脚、ケーブル、電源 | 必要に応じてご用意下さい |
ハードウェアのセットアップ方法は各製品ページを参照して下さい。
カメラのセットアップとピント調整は以下の記事を参照して下さい。libcamera-stillコマンドで写真の撮影ができる状態にして次のステップに進んで下さい。
フローチャート
今回実行するプログラムのフローチャートを示します。
人感センサーが検知していない間はLEDを緑色に点灯して待機します。
人感センサーが検知するとLEDを青色に点灯し、撮影を行います。オプションで写真か動画を選べるようになっています。撮影後はLEDを黄色にして一定時間待機します。(過剰な撮影枚数を避けるため) 時間はオプションで変更できます。
プログラムダウンロード
プログラムはこちらからダウンロードして展開して下さい。
わかりやすくするため、撮影は「libcamera-still」及び「libcamera-vid」コマンドを利用する方法をとっています。
オプション設定
17-22行目にあるオプションの値をテキストエディターで書き換えることで、プログラムの動作を変更できます。
まずは、撮影したファイルを保存する「save_dir = ‘/home/pi’」行のみ確認、変更して下さい。ユーザー名がpiの場合は変更不要です。それ以外の場合は適宜書き換えて下さい。
image_size = (1440, 1080) # 撮影サイズの横幅, 高さ
mode = 'photo' # 写真なら'photo', 動画なら'movie'
pi5 = False # Raspberry Pi 5の場合True, それ以外はFalse (動画撮影の手順が異なる)
save_dir = '/home/pi' # 写真や動画を保存するディレクトリ
interval = 60 # 1度撮影した後、再開するまでのインターバル時間[秒]
movie_duration = 10 # 動画の撮影時間[秒]
プログラム実行
ターミナルを開き、pir_cam.pyと同じディレクトリで以下の$に続くコマンドを実行します。
$ ./pir_cam.py
拡張基板のLEDが緑色に点灯し、人感センサーのモニターを開始します。
人感センサーの前に手をかざすなどすると、反応してLEDが青色に変化し、写真を撮影します。オプションで指定したディレクトリに撮影画像が保存されていれば成功です!
撮影後はLEDが黄色に変化し、オプションで指定されているインターバル時間(デフォルト60秒)待機し、その後再度センサーのモニターに戻ります。これは過剰に撮影しないための機能です。
動画の撮影
オプションで「mode = ‘movie’」に変更すると、動画を撮影できます。撮影時間は「movie_duration」で変更できます。Raspberry Pi 5ではコマンドが変わるので、オプションの「pi5 = True」に変更してください。
撮影中は「tmp.h264」と「tmp.txt」の2つのファイルが生成され、撮影終了後にmkvファイルに変換されます。(Raspberry Pi 5では直接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するような応用も可能です。
実現したい機能がある場合、ハードウェア、ソフトウェアを有償にて承っております。ハードウェア、ソフトウェア受託開発をご参照下さい。
定期撮影ラズパイカメラをモバイルバッテリーで長期運用 (RPZ-PowerMGR)
Raspberry Pi(ラズパイ)と純正カメラを使用して、定期的に撮影するタイムラプス機能を実装する方法を解説します。RPZ-PowerMGR拡張基板を使うことで、指定時刻に起動し、撮影後は自動的にシャットダウン&電源OFFします。待機時の消費電力をカットすることで、モバイルバッテリーで長期運用が可能になります。
複数のステッピングモーターを制御する (Raspberry Pi + RPZ-Stepper)
複数台のステッピングモーターモーターを使うと、X/Y/Z軸移動など複雑な動きを実現できます。一般的なドライバーで複数のモーターを制御するとプログラムが複雑になりがちです。RPZ-Stepperと制御ソフトウェアを利用すると、各モーターの位置や速度を指定するだけで複数モーターを制御できます。RPZ-Stepper基板1枚に2台のステッピングモーターを接続でき、最大で基板2枚、モーター4台を制御できます。
RPZ-PIRS (Raspberry Pi用 人感/明るさセンサー/赤外線 拡張基板)
Raspberry Pi(ラズパイ)に人感、明るさセンサー、赤外線送受信機能を搭載できる拡張基板です。人感センサーで人や動物を検知してカメラで撮影したり、赤外線で照明をONするような使い方が可能です。周囲の明るさをモニターできる他、外付温湿度/気圧センサー(別売り)を接続することで、温度、湿度、気圧の測定機能を追加できます。7色表示可能なRGB LEDにステータスを表示したり、スイッチを押すことで特定の動作をさせることができます。