デモ

本デバイスは以下の動画のように操作できる。

本デバイスを使うと、以下のサイトにあるような動画を生成できる。

動画の出力条件のうち、主な項目は以下の通り。

  • 再生速度: 30倍速
  • fps: 30
  • bps: 3Mbps
  • HLS形式
  • 音声なし

料理の動画を掲載しているのは、特に他にコンスタントに撮影できる対象が考えつかなかったため。これらの動画の撮影のために、3Dプリンターでプリントした部品を使ってラズパイとカメラを固定し、台所上部に吊り下げている。

確認済み動作条件

  • ボード
    • Raspberry Pi Zero W
  • OS
    • Raspberry Pi OS(Legacy) 2022-01-28

現時点(2022/03/21)で推奨OSとなっているRaspberry Pi OSはbullseye版だが、buster版(Legacy)の方を使う。これは、ffmpeg(今回利用するマルチメディア処理ソフト)まわりの環境がbullseye版とbuster版で異なっているため。bullseye版を利用する場合、ハードウェアエンコードを有効にするために、ffmpegをビルドする必要が出てくる。

必要な部品

部品一覧

結構前に購入したタッチパネルモニターを再利用していたので、さすがにもう入手できないかなと思っていたが、まだ販売していて驚いた。

microSDカードへOSをインストールする

まずはmicroSDカードをフォーマットする。以下のページから、SD Card Formatterをダウンロード、インストールする。

インストールしたSD Card Formatterを起動する。microSDカードのドライブを選択し、フォーマットを実行する。フォーマットオプションはクイックフォーマットを選択すればよい。

microSDのフォーマット完了画面

SDカードが初期化出来たので、OSをインストールする。以下のページから、Raspberry Pi Imagerをダウンロード、インストールする。

Raspiberry Pi Imagerを起動する。OSは Raspberry Pi OS(other) → Raspberry Pi OS(Legacy) を選択する。

OS選択画面

Storageは microSDカード を選択し、書き込みを行う。

無線LAN接続・SSH接続が出来るようにする

無線LAN接続及びSSHによる接続ができるように設定する。これらの設定はいくつかやり方があると思うが、microSDカード内のファイルを追加・編集することでも設定できる。ここら辺は以下のような参考になる記事が色々ある。

タッチパネルモニターの設定を行う

本デバイスはタッチパネルから操作を行う想定のため、タッチパネルモニターの設定が必要になる。各自使用するモニターに応じて設定を行う。

上記で紹介したELECROW 3.5inch RPi Displayを利用する場合は、以下のページを参考にドライバをインストールする。このインストール作業時、/boot/config.txtが上書きされるようなので、自分で/boot/config.txtに追加設定等を行っている場合は注意。

カメラモジュールを有効化する

ラズパイにログイン後、以下コマンドを実行し、設定画面を表示する。

sudo raspi-config

3 Interface Options → P1 Camera → Yes と選択し、カメラモジュールを有効化する。

再起動するかどうか聞かれるので、Yesを選択し、再起動する。

タイムラプス生成スクリプト一式をインストールする

以下コマンドを実行し、スクリプト一式をインストールする。

cd /home/pi
git clone https://github.com/kouya17/raspi_timelapse_maker.git
cd raspi_timelapse_maker
sudo ./install.sh

特にエラーが出ていなさそうだったら、以下コマンドでラズパイを再起動する。

sudo reboot

動作確認する

起動後、タッチパネルモニターに操作画面が表示されるので、現在のカメラ画像が表示されることを確認する。

画面のStartボタンを押す。画面に表示されているstatusidleからrecordingに切り替わることを確認する。画面のtimeに録画時間が表示されることを確認する。ラズパイにログインし、/home/pi/raspi_timelapse_maker/recorded/<日時>/配下に録画データ(HLS形式)が保存されていることを確認する。

画面のFinishボタンを押す。/home/pi/raspi_timelapse_maker/recording/配下に何もファイルがないことを確認する。録画プロセスが終了していることを確認するため、以下コマンドを実行して、何も出力されないことを確認する。

ps -aux | grep record | grep -v grep

画面のShutdownボタンを押す。ラズパイがシャットダウンすることを確認する。

Sambaを設定する(任意)

録画したデータは、大抵の場合PC等に転送することになると思う。Sambaをインストールしておくと、WindowsやmacOSからファイルサーバーとしてアクセスできるようになり、データのやり取りがしやすくなる。

自分の場合はWindows PCに動画データをコピーしたかったので、以下のサイトを参考に設定した。

[おまけ]MP4ファイルで出力するようにする

現状は、録画データをHLS形式で出力している。これは、あまり大きなサイズのファイルを扱いたくなかったという自分の事情があったためである。

ただ、MP4ファイルとして出力した方が使い勝手がいいパターンもあるだろう。HLS形式だと再生するのにもWebサーバーが必要になるため、再生確認がしずらい。

MP4ファイルで出力したい場合は、タイムラプス生成スクリプト一式(/home/pi/raspi_timelapse_maker)の中のwebroot/cgi-bin/record_worker.sh内でffmpegを利用している箇所を以下のように修正する。

- ffmpeg -r 150 -i http://localhost:8080/?action=stream -f hls -vcodec h264_omx -vf fps=30 -b:v 3000k -hls_time 10 -hls_list_size 0 -hls_segment_filename $STREAM_PATH/%d.ts $STREAM_PATH/playlist.m3u8
+ ffmpeg -r 150 -i http://localhost:8080/?action=stream -vcodec h264_omx -vf fps=30 -b:v 3000k $STREAM_PATH/output.mp4

上記の修正を適用して録画をすると、webroot/recorded/<日時>/配下にoutput.mp4が生成されるようになる。

pi@raspberrypi:~/raspi_timelapse_maker/webroot $ ls recorded/20220320154823/
output.mp4

[おまけ]Rasberry Pi Zero W + カメラ 固定用3Dモデル

ラズパイとカメラ固定用パーツのSTLデータは以下に置いている。

汎用性は全くない。