「土日で完成! 趣味のラズパイ」
土日で完成! 趣味のラズパイ Raspberry Pi Camera Module 3を使って見守りカメラを作る
Raspberry Piに直接つなげて利用できるカメラとして、「Raspberry Pi Camera Module 3」(以下、ラズパイカメラ3)が発売されました。モジュールとして標準版と広角版の2種類が用意される他、解像度が11.9メガピクセルに向上し、オートフォーカス機能が用意されました。スイッチサイエンスでの価格は標準版が4400円、広角版が5940円です。
土日で完成! 趣味のラズパイ
第16回 ラズパイとChatGPTで遊ぼう——圧電ブザーで音を鳴らす
第15回 ラズパイとChatGPTで遊ぼう——気温/湿度/気圧を測定する
第14回 ChatGPTで遊ぼう——ラズパイで作ったデジタル時計に天気情報も表示させる
第13回 ラズパイとChatGPTで遊ぼう——液晶時計を作る
第12回 ラズパイとChatGPTで遊ぶ——その1:Lチカさせてみる
第11回 ラズパイをブリッジモードで使って、Wi-Fi接続する
第10回 ラズパイをWi-Fiルーターにする
特別編 【実機レビュー】よりパワフルになったRaspberry Pi 5を検証!
第9回 VolumioでラズパイからSpotifyやradikoを楽しむ
第8回 ラズパイで音楽プレーヤー「Volumio」を楽しむ
第7回 GPSを導入して正確な時刻を刻む
第6回 ラズパイをNTPサーバーにする
第5回 ラズパイを使ってデジタル時計を作る
第4回 Raspberry Pi Camera Module 3を使って見守りカメラを作る
第3回 BME680の測定データを小型ディスプレイに表示させる
第2回 空気質センサー「BME680」で空気汚染度を測る
第1回 ラズパイ工作の基本! 気温と湿度、気圧を計測する
一覧ページへ
これまでのRaspberry Pi Camera Module V2との違いは以下の通りです。解像度も4608×2592ピクセルと大きくなり、解像度もV2の8メガピクセルから11.9メガピクセルへと向上しています。
今回のバージョンアップで特筆すべきなのはオートフォーカス機能でしょう。ターゲットにしたい物体を中心に据えればはっきりと撮影できます。また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ピクセルとなります。
続いてHDR撮影をしてみましょう。HDR撮影をするにはコマンドに「--hdr」を加えるだけです。
$ libcamera-jpeg --hdr -o hdr.jpg
ここで先ほどの画像とHDR撮影をした画像を比べてみましょう。植木鉢の色が明るくなっているほか、花の全体がくっきりと撮影できています。なおHDRを指定した場合、解像度が1536×864ピクセルになります。
続いてはオートフォーカスについて試してみます。以下のようにコマンドを入力してください。
$ 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は単に画像を撮影するだけでなく、定期的に画像を保存することで植物の成長の様子をタイムラプスにしたり、防犯カメラ用に動体を検知したりと活用できます。次回はこのあたりについて解説します。