新しいものづくりがわかるメディア

RSS


「土日で完成! 趣味のラズパイ」

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

Raspberry Piに直接つなげて利用できるカメラとして、「Raspberry Pi Camera Module 3」(以下、ラズパイカメラ3)が発売されました。モジュールとして標準版と広角版の2種類が用意される他、解像度が11.9メガピクセルに向上し、オートフォーカス機能が用意されました。スイッチサイエンスでの価格は標準版が4400円、広角版が5940円です。

これまでの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」は、撮影の前にオートフォーカスでピントを合わせるというオプションです。

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

画像を定期的に保存する

ではこのlibcamera-stillを使って定期的に撮影し、画像を保存する方法について解説します。上記ではコマンドを直接入力して撮影しましたが、それをシェルスクリプトとしてプログラムを作り、実行するようにします。シェルスクリプトとは、実行可能なコマンドの一連の流れをファイルに記述し、実行させる仕組みのことです。今回は以下のように記述し、それを「camera.sh」などのファイル名で保存します。

#!/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は単に画像を撮影するだけでなく、定期的に画像を保存することで植物の成長の様子をタイムラプスにしたり、防犯カメラ用に動体を検知したりと活用できます。次回はこのあたりについて解説します。

ニュース

編集部のおすすめ

連載・シリーズ

注目のキーワード

もっと見る