土日で完成! 趣味のラズパイ Raspberry Pi Camera Module 3を使って見守りカメラを作る

Raspberry Piに直接つなげて利用できるカメラとして、「Raspberry Pi Camera Module 3」(以下、ラズパイカメラ3)が発売されました。モジュールとして標準版と広角版の2種類が用意される他、解像度が11.9メガピクセルに向上し、オートフォーカス機能が用意されました。スイッチサイエンスでの価格は標準版が4400円、広角版が5940円です。
———————————————————————————
土日で完成! 趣味のラズパイ
第4回 Raspberry Pi Camera Module 3を使って見守りカメラを作る
第3回 BME680の測定データを小型ディスプレイに表示させる
第2回 空気質センサー「BME680」で空気汚染度を測る
第1回 ラズパイ工作の基本! 気温と湿度、気圧を計測する
一覧ページへ

———————————————————————————
これまでのRaspberry Pi Camera Module V2との違いは以下の通りです。解像度も4608×2592ピクセルと大きくなり、解像度もV2の8メガピクセルから11.9メガピクセルへと向上しています。

これまで発売されたカメラとの比較。赤枠内が新しく発売されたRaspberry Pi Camera Module 3のスペック(ラズベリーパイ財団のHPより引用)。

これまで発売されたカメラとの比較。赤枠内が新しく発売されたRaspberry Pi Camera Module 3のスペック(ラズベリーパイ財団のHPより引用)。

Raspberry Pi Camera Module 3。左側が広角、右が標準。
Raspberry Pi Camera Module 3。左側が広角、右が標準。
標準(左)と広角(右)で撮影した画像。
標準(左)と広角(右)で撮影した画像。

今回のバージョンアップで特筆すべきなのはオートフォーカス機能でしょう。ターゲットにしたい物体を中心に据えればはっきりと撮影できます。またHDR(High Dynamic Range)をサポートしたことも大きいですね。これによりくっきりとした映像を撮影できるようになりました。また広角版では102度の画角で撮影できます。
撮影してみる
ラズパイカメラ3とラズパイ本体の接続ですが、本体のUSBポート近くにあるコネクターにリボンケーブルを接続して使います。ケーブルには表裏があり、金属が出ている側を留め具の反対側に差して固定します。なお、ラズパイの電源を落とした状態で作業してください。

ラズパイ本体のコネクターに接続する。
ラズパイ本体のコネクターに接続する。
リボンケーブルはこの向きに差す。
リボンケーブルはこの向きに差す。

接続したら電源を入れ、ラズパイが起動したら以下のコマンドを入力します。
$ sudo apt update && sudo apt upgrade -y
これはラズパイにインストールされているライブラリーなどを最新のものにするためのコマンドです。カメラにかかわらず、ラズパイで何かをするときには必ず実行しましょう。
ではカメラを動かしてみましょう。これからの作業ですが、ラズパイをディスプレイに接続して使うのはもちろんですが、バーチャルコンソール(VNC)を使ってWindows PCやMacで作業してもよいです。ただしVNCを使うと動画をキャプチャーしたい場合は、間に通信を挟んでいますので、どうしても動きがもっさりとします。VNCについては連載「第8回 「Windowsでラズパイを使う」って何ですか」を参考にしてください。
では以下のコマンドを入力しましょう。
$ libcamera-hello
カメラからの画像が5秒ほど表示されて終了したらOKです。このようにラズパイでは「libcamera」というアプリを使って撮影が可能です。以前は「raspistill」が使われていましたが、OSのアップデートに合わせてlibcameraを使うようになりました。
libcameraには上に挙げた「libcamera-hello」のほか、以下のアプリがあります。それぞれの役割は以下の通りです。
*libcamera-hello:基本的なカメラ画像の表示に使うアプリ。いわゆる“Hello World”的なもの
*libcamera-jpeg:高解像度の画像を撮影するアプリ
*libcamer-still:静止画を撮影するアプリ
*libcamera-vid:ビデオ録画をするアプリ
libcamera-helloは画像を表示させるだけのアプリなので、画像の保存はできません。そこで以下のコマンドを入力してみましょう。
$ libcamera-jpeg -o test.jpg
「-o」オプションは画像を指定したファイル名で記録する、というものです。このためルートディレクトリに「test.jpg」という画像ファイルが保存されたと思います。libcamera-jpegはフルサイズのJPEG画像を保存しますので、サイズは解像度最大の4608×2592ピクセルとなります。

libcamera-jpegで撮影した画像。
libcamera-jpegで撮影した画像。

続いてHDR撮影をしてみましょう。HDR撮影をするにはコマンドに「–hdr」を加えるだけです。
$ libcamera-jpeg –hdr -o hdr.jpg
ここで先ほどの画像とHDR撮影をした画像を比べてみましょう。植木鉢の色が明るくなっているほか、花の全体がくっきりと撮影できています。なおHDRを指定した場合、解像度が1536×864ピクセルになります。

左がHDRオフ、右がHDRオン。周囲が明るくなり、花の画像もくっきりとなった。
左がHDRオフ、右がHDRオン。周囲が明るくなり、花の画像もくっきりとなった。

続いてはオートフォーカスについて試してみます。以下のようにコマンドを入力してください。
$ libcamera-jpeg –autofocus-on-capture -o autofocus.jpg
カメラの中心を後ろの赤い花に合わせました。オートフォーカス機能が効いて、後ろにある花がボケて撮影されています。「–autofocus-on-capture」は、撮影の前にオートフォーカスでピントを合わせるというオプションです。

左が黄色い花に合わせたショット。右が赤い花に合わせたショット。
左が黄色い花に合わせたショット。右が赤い花に合わせたショット。

ファイル名で保存します。
 #!/bin/bash
DATE=$(date +”%Y-%m-%d_%H%M”)
libcamera-still –autofocus-on-capture –width=1280 –height=720 –hdr=1 -o /home/pi/camera/$DATE.jpg

ファイルの保存先ですが、絶対パスで記述する必要があります。今回はホームディレクトリである「/home/pi」の下に「camera」というディレクトリを作成し、「$DATE.jpg」というファイル名で保存しています。ここでファイル名にある「$DATE」ですが、その前の行に「DATE=$(date +”%Y-%m-%d_%H%M”)」とある通り、年月日と時間、分をファイル名として出力するように指定しています。
続いて定期的に保存するために「cron」を使います。cronについては「土日で完成! 趣味のラズパイ BME680の測定データを小型ディスプレイに表示させる」で解説していますので、詳細は割愛します。5分ごとにファイルを保存するためには以下のような内容を記述すればOKです。
 #*/5 * * * * bash /home/pi/camera.sh
これで5分ごとに日付と時刻が記された画像ファイルが保存できます。

定期的に画像を保存した。
定期的に画像を保存した。

このようにラズパイカメラ3は単に画像を撮影するだけでなく、定期的に画像を保存することで植物の成長の様子をタイムラプスにしたり、防犯カメラ用に動体を検知したりと活用できます。次回はこのあたりについて解説します。
———————————————————————————
ライタープロフィール

岩泉 茂
岩泉 茂

Raspberry Piと出会ってから7年。最初はArduinoに傾いていたが、Pythonにハマるうちにラズパイ一筋へ。そして小学校の時の電子工作熱が再び燃え上がり、GPIOを使って面白いものを作るのが楽しみとなる。あとこっそりとテツ。乗りテツ4割、模型テツ3割、撮りテツ2割、音テツ1割。今はラズパイで鉄道模型をコントロールすることに夢中。あとゆるいキャンプのアニメに触発されて、こちらもまた高校生以来のキャンプ熱再燃。コロナのおかげで行きづらくなったが、隔月くらいでキャンプしたいと思っている。
———————————————————————————

fabcross
fabcross
2023年4月28日RT(18)
見 守(KEN MAMORU)

見 守(KEN MAMORU)

見守りサービスの情報を提供します!