ラズパイZeroWで作る簡単アクションカメラ——バイク編

Raspberry Pi Zero /W/WH

Raspberry Pi Zero Wと公式のPiカメラモジュールV2を使い、超お手軽で格安のアクションカメラを作りたいと思います。

今回の材料

今回用意したのは次の通りです。

用意した材料

  • Raspberry Pi Zero W
  • 公式のPiカメラモジュールV2.1
  • 専用公式ケース
  • USB接続マイク
  • microUSB変換コネクタ
  • モバイル充電器とUSBケーブル

OSには、Raspbian Buster Lite (2019-07-10-raspbian-buster-lite.zip)

撮影方法は標準コマンドのraspividでトライしてみます。

基本設定とアップデート&アップグレード

sudo apt update

58 packages can be upgraded. Run 'apt list --upgradable' to see them.

58パッケージがアップグレード可能ですね。ZeroWだと処理速度が遅いため気長に待ちましょう。

sudo apt upgrade

アップデート&アップグレードが終わったら、raspi-configでいつも通りに以下を設定します。

sudo raspi-config
  • パスワードの変更
  • ホスト名の命名
  • 地域設定でロケールとWi-Fi国名 (ja_JP.utf8 / Asia Tokyo / JP)
  • そしてカメラを使えるようインターフェイス設定からカメラを有効にします。

一旦、再起動します。

sudo shuttdown -r now

カメラテスト

動画撮影は標準コマンドツールであるraspividを使います。

静止画はraspistillです。以前に「あんまり監視しないカメラ」を作った時は静止画でした。その時と同じようなオプションが使えて便利です。

標準的な書式

raspivid -o video.h264 -t 10000

ファイル名としてvideo.h264、-tは録画時間の指定です。10000ミリ秒なので10秒です。何も指定しないとデフォルトは5秒の撮影になります。

画面が逆さまだったりした場合は、-vf -hfのオプションを付けてください。

-vf(縦方向反対) -hf(横方向反対)

.h264の拡張子は変換が必要

この.h264の拡張子は、ラズパイのカメラ(Pi camera)で、raspividコマンドでは、このRAWのh264が取得できます。これはmp4にする前の生のRAWデータなので、このままだとMacでは再生できないため、エンコードしなくてはなりません。

ちなみに出来上がった.h264ファイルは約10秒で20MBでした。

公式サイトのraspividの説明によると、MP4Boxでエンコードできるとありました。

Raspberry Pi Zero Wで作業させても大丈夫なくらい軽いようですが、あまり長い録画時間の場合は、取り出してメインのマシンでエンコードした方が良さそうです。

Raspberry Pi 側にインストールするには以下です。

sudo apt install -y gpac

先程のvideo.h264を変換するには以下のコマンドです。

MP4Box -add video.h264 video.mp4

mp4ならどのマシンでも再生できます。変換した動画のサイズは約10秒で7.1MBでした。(なぜか、10秒の撮影を指定したのに12秒になっています)

単純計算するとこうなります。(実際は異なります。撮影する物によってもサイズは変わるでしょう)

録画時間サイズ
約10秒20MB
約1分120MB
10分1.2GB
1時間約7.2GB

16GBのmicroSDカードで、恐らく10GB弱は空きがあると思います。そしてFAT32フォーマットですから、1ファイル4GBの制限があるため、連続だと30分強が可能です。

運用方法としては、撮影(録画)→ mp4へ変換→ 元ファイル削除、などで空き容量を確保していけば、変換後はファイルサイズは半分以下になるため充分な録画時間を稼げそうです。

10分〜20分くらいの動画を連続で録画するか、外部からの何かのきっかけでスタートさせるかをすれば実用的でしょう。

そうなると、自動的に行うにはPicameraなどのコマンドツールをPythonで制御する必要がありますね。

オプション一覧はlessコマンドを利用します。

raspividのオプションで録画サイズやフレームレートなども指定できます。

raspividコマンドのオプション一覧を表示させる。

raspivid 2>&1 | less

パイプ(|)する前の2>&1を入れるとページ毎に表示してくれます。

何度か試してみて、適切な画質や大きさをテストしてみてください。

sudo raspivid -w 800 -h 600 -t 10000 -o video.h264 

デフォルトだとフルHDサイズで25フレーム、データレートが約5メガビットとなっていました。(これはmp4に変換した後のファイルです)

この辺を小さくしてあげれば、もっと撮影時間は延びますね。

USBマイク

USBマイクが認識されているか確認します。

lsusb
Bus 001 Device 002: ID 0556:0002 Asahi Kasei Microsystems Co., Ltd 

Asahi Kasei Microsystemsとありますので、旭化成マイクロシステムズ製ということですね。

これは2018年に購入したので、現在はもっと良いものがあるかも知れません。クリップが付いているので便利に使えそうです。

ちなみに音質などは、Macbookproに搭載のマイクより劣りましたので、Raspberry Pi Zero Wにはちょうど良い性能でしょう。

こちらもモジュールの確認です。

cat /proc/asound/modules 
0 snd_bcm2835
1 snd_usb_audio

優先されるのが0の方で、当然ながらUSBのオーディオは1となってます。これ、優先順位というだけなので、録音する際にカード番号とデバイス番号を指定すれば問題ありません。ここでは確認だけです。

何も作業はしませんが、もしもここで表示されていないのなら、マイクに問題があるでしょう。

サウンドカード番号を調べる

arecord -l
arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: AK5371 [AK5371], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

USBマイクはカード1、デバイス0でした。(1,0)

録音テスト

arecordコマンドで録音してみます。

arecord -D plughw:1,0 ~/test1.wav

オプションDでハードウェアデバイス名を指定しています。ここでは先程調べたUSBマイク(1,0)の番号です。そしてホームフォルダにWAVEファイルで保存しました。

これを再生してみたいのですが、Raspberry Pi Zero Wにはスピーカーが付いていません。仕方ないので、ファイルを取り出します。

後述してあるsamba共有でファイルを共有させ手元のマシンで再生してみましょう。もしくはscpコマンドで取りに行っても良いです。

scpコマンドが超絶に便利だった

scpコマンドってのがあります。sshと同じ仕組み・・・と簡単に覚えてください。

例:MacからRaspberry Pi Zero W側へ取りに行ってMacに保存する場合

scp pi@192.168.XX.XX: ~/a.txt /Users/raspida/Downloads

この場合は、scpの後にラズパイのアドレス:送りたいファイル、そして最後にMac側の保存したい場所となります。簡潔に書くと以下のようになります。

scp pi@192.168.0.14: test.wav .

ラズパイのアドレスが192.168.0.14として、test.wavをMacのターミナルが始まっているのが自分のユーザーディレクトリだったので、そのまま「.」でOKというシンプルさです。

これ、送る側からだとコマンドの順番が異なりのですけど、Macへアップする場合はセキュリティの問題からまた別にMac側で処理が必要です。そこは面倒なので、Macから取りに行くという形が一番簡便です。

これ、1ファイルだけならと思っていましたが、拡張子毎とか複数ファイルも指定によって簡単に行えますね。

こちらが詳しかった。ありがとうございます。
参考URL: https://qiita.com/rock619/items/2bbbe379ae0fdd2ae00f

マイクの集音量と感度の調整

sambaで共有させ、母艦のMacから取り出して再生したところ、かなり雑音が多く、そして録音の音量が小さかったです。

amixer sset Mic 62 -c 1

繋いだUSBマイクのリミットが0-55だったので、最大の55になっています。

Simple mixer control 'Mic',0
  Capabilities: cvolume cswitch cswitch-joined
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 55
  Front Left: Capture 55 [100%] [24.00dB] [on]
  Front Right: Capture 55 [100%] [24.00dB] [on]
arecord -D plughw:1,0 ~/share/test2.wav

もう一度確認したところ、今度はバッチリでした。(sambaで設定したshareフォルダに入れたので母艦のMacから再生させられます。)

コマンドのオプションが分からない場合は、--helpオプションを付けて実行すれば表示されますよ。

arecord --help
-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list device names
-D, --device=NAME       select PCM by name
-q, --quiet             quiet mode
-t, --file-type TYPE    file type (voc, wav, raw or au)
-c, --channels=#        channels
-f, --format=FORMAT     sample format (case insensitive)
-r, --rate=#            sample rate
-d, --duration=#        interrupt after # seconds
-s, --samples=#         interrupt after # samples per channel
(...続く)

長いんで割愛します。他のコマンドも同様に分からない場合は、--helpでどうぞ。

sambaをインストール

インストールし、設定ファイルを編集します。

sudo apt install samba

途中でWINS設定で<はい><いいえ>の選択肢が出ますが、Windows系がネットワークにあるなら<はい>で宜しいかと思います。私はMacしかないので<いいえ>で進めました。名前解決でホスト名とIPアドレスを紐付けてくれるWindowsサーバーのユーティリティです(たぶん)

samba.confの変更

専用のフォルダを作りました。

sudo mkdir ~/share

smb.confファイルに追記

sudo nano /etc/samba/smb.conf
[share]
comment = Share
path = /home/pi/share
public = yes
read only = no
browsable = yes
force user = pi

shareフォルダは権限を777にでもしておきます。

sudo chmod 777 ~/share

詳しく知りたい方は関連記事をご覧ください。

関連記事:Sambaファイルサーバーの構築

このshareフォルダを受け取り用にして、外部のマシンから撮影した動画を取り出せます。

手ぶれ補正

バイクの走行動画のようなことをやりたいので、振動をどうするかというのは課題です。

ハード的にスタビライザーを取り付けなくても、ソフトウェアでもそれなりに手ぶれ補正を後からかけられます。

バイク(CB250R)で単気筒となるとブレは大きいでしょうから、効果の程はあまり期待できませんが、少し実験で試してみると滑らかなブレになる分だけマシになります。

撮影した動画を何で補正するのか?

MacならAppleの公式ページにあるようにiMovieで動画を手ぶれ補正できます。現在、iMovieが無料どうか忘れましたが、私は入っているので、それで補正をかけてみると、それなりに上手く補正してくれます。

Androidアプリだと手ぶれ補正はGoogleフォトが有名です。スマホで直接撮影するなら便利です。Raspberry Pi Zero Wでの動画なら、一旦は転送しないとなりませんね。

Windowsは・・・サードパーティ製のソフトウェアが必要かも知れません。詳しい方お教えください。

参考:MacのためのiMovie: クリップを手ぶれ補正する

次回

このRaspberry Pi Zero Wをモバイルバッテリーでデイバックに取り付けて、走行動画撮れたらと思います。

そのためには、他にも位置確認できるようにスマホと連携させたり、録画のON/OFFをどうするか、そもそもシャットダウンコマンドをどうするか、簡単であまり面倒では無い方法を考えてみたいと思います。

こちらが続き。いつものBluetoothボタンで制御させました。

簡易ドライブレコーダーZeroWにBluetoothボタンでオンオフ編

ラズパイダ

ラズパイダ

学べる楽しむ便利になる。小さいくせにヤケにパワフル。そんなRaspberry Pi をまだ知らない人に伝えたい。様々な場所で利用されているRaspberry Pi を知って「あっ、これもラズパイだっ!」だからラズパイダ!

関連記事

特集記事

コメント

この記事へのコメントはありません。

最近の記事 はじめて向け
  1. あのMX LinuxがRaspberry Pi 向けイメージMXFBPをリリース

  2. OMV5のアップデートエラー回避

  3. Raspberry Pi Pico マイコンボード、僅か4ドルで登場

  4. お掃除ルンバのアイロボットから教育用ロボット「Root」発表

  5. 【海外】プライステーション2の中にラズパイ4を組み込んで多目的マシン

  1. お掃除ルンバのアイロボットから教育用ロボット「Root」発表

  2. 【初心者向け】Raspberry Pi 4との接続方法(電源、HDMI)

  3. 【初心者向け】はじめてRaspberry Pi OS をダウンロードする人へ

おすすめの記事

  1. 正式にUbuntuがラズパイ4に対応(Ubuntu 20.10)

  2. NextcloudとRaspberry Pi 3B+で作る自分専用クラウド

  3. ラズパイ4にも対応している軽量でクールなOS「Manjaro」はアリ

  4. 期待が高まるWindowsに似ている新しいLinuxのフレーバー「Endless OS」がRaspberry Pi 4用に登場予定

  5. ラズパイで実用的な物を作るなら特化したOSから始めてみよう

  6. あのMX LinuxがRaspberry Pi 向けイメージMXFBPをリリース

今月の人気記事

  1. 1

    Raspberry Pi で動く様々なOS一覧まとめ13種類!

  2. 2

    ラズパイ4をUSB接続のSSDから起動する方法(USBブート)

  3. 3

    初心者でもラズパイでNASサーバーを作ってみよう!

  4. 4

    Raspbian のWi-Fi設定(Raspberry Pi 初期設定)

  5. 5

    Raspberry Pi 4の初期設定2020年版

  6. 6

    Raspberry Pi 4を起動したのにモニターに画面が映らない対処法

  7. 7

    ラズパイ4はPCライクな性能になったけどPCではないよという話

  8. 8

    ラズパイ4とOMV5(openmediavault5)で作る自宅NASサーバーの設定方法

  9. 9

    Raspberry Pi 4のOSをデスクトップPCとして使うためにUbuntuMATEをインストールしてみた

  10. 10

    ラズパイで使うmicroSDカードの選び方

記事ランキングページ

TOP