Raspberry Piを使ってHDMIカメラを作ってみた

こんにちは。最近、ご多分に漏れずATEM Miniを買ったSeeedの坪井です。

f:id:ytsuboi:20200806000303j:plain

ウェビナーをしたりYouTubeで配信をするときにHDMIスイッチャーがあれば良いなぁと思って、ついポチっと購入をしてみました。 スライドを表示しつつ、ピクチャーインピクチャーで喋っている人を映すとか、デモのときに手元カメラに切り替えるとかできたら便利ですよね。で、届いたのですが、手元カメラに使えるような小型のHDMIカメラを持っていません。みんなカメラは何使っているんだろうと思って調べてみると、一眼レフなどにHDMIを出力させたり、ZOOMのQ2n-4Kを使ったりしているみたいです。で、Q2n-4Kを買おうと思って探してみたのですがどこも品切れです。悲しい。

そこで、ふとRaspberry PiのCSI端子にカメラを繋いで、HDMIに出力すれば良いんじゃないかということです。これだ!しかも材料は全て手元にあるので、追加投資ゼロです。

f:id:ytsuboi:20200808183238j:plain

まずは、RasPiに接続したカメラの動画をHDMIに出せるかどうかを、Raspberry Pi 4 Model Bで試してみました。

www.seeedstudio.com www.seeedstudio.com

カメラは遊んでみたくて取り寄せたまま、忙しくて放置していたRaspberry Pi High Quality Cameraです。レンズは別売りですので、レンズも一緒に入手するのを忘れないようにしましょう。HQ Cameraは、現在Seeedを含めてあちらこちらで欠品していますので、持っていない方がすぐ試すにはRaspberry Pi Camera Module V2などを使うと良いのではないでしょうか。同様に動くはずです。

大事な前提ですが私はヘッドレス大好きなので、Raspberry Pi OS (32-bit) Liteをいつも使用しています。特に今回は、HDMIをカメラ画像の出力に使うので、デスクトップは邪魔でしかありません。Raspberry Pi OS (32-bit) Liteをダウンロードしてきて使っています。

さて、HDMIに出力する方法をちょこちょこっと調べてみたところ、簡単にできました。あ、もちろん先にraspi-configコマンドを使って、カメラインターフェースを有効にしておいてください。HDMIに出力するには、

raspivid -f -t 0

とコマンドを入力するだけです。-fはフルスクリーン表示、-tは撮影時間です。-t 0でずっと撮影してくれます。終わりたいときはCtrl-Cをキーボードから入力すれば終われます。

さて、できたのですが、Raspberry Pi 4はちょっと大きいですよね。手元カメラに使うには邪魔です。そこで、Raspberry Pi Zeroでもできないかと思ってやってみました。

www.seeedstudio.com www.seeedstudio.com

気軽に使うためにはケースが欲しいですし、なによりRaspberry Pi Zeroのカメラインターフェースは、Raspberry Pi Model Bのインターフェースとピッチが違うためケースに付属のフレキが必要になります。ですので、ケースも一緒に手に入れましょう。Raspberry Pi Zeroをセットアップして、先ほどと同様にraspivid -f -t 0を実行してみます。

f:id:ytsuboi:20200808231012j:plain

特に性能に問題はなさそうです。後はカメラとして気楽に使うため、給電して起動したときにraspividを自動で実行するように設定するのと、電源を抜いて終了できるようにするだけです。

自動で起動

自動でなにかを起動させるには、systemdを使う方法、crontabに@rebootを書き足す方法、/etc/rc.localに書いておく方法など複数の方法があります。 今回はお手軽に/etc/rc.localexit 0の直前に、raspivid -f -t 0って書いた行を足しておきました。どのみち電源引っこ抜いて終了するつもりなので、丁寧に起動をしても意味無いよねということで。

なお、こうやって起動するようにすると、コンソールからCtrl-Cを入力しても終了しません。後でいろいろいじりたい人は、UARTにコンソールを出すか、SSHでログインできるようにしておくと良いかもしれません。

電源を引っこ抜けるようにする

github.com

こちらの記事を参考にしました。

sudo su
apt update
apt install -y git rsync gawk busybox bindfs initramfs-tools
dphys-swapfile swapoff
dphys-swapfile uninstall
update-rc.d dphys-swapfile disable
systemctl disable dphys-swapfile
git clone https://github.com/josepsanzcamp/root-ro.git
rsync -va root-ro/etc/initramfs-tools/* /etc/initramfs-tools/
mkinitramfs -o /boot/initrd.gz
echo initramfs initrd.gz >> /boot/config.txt

がしがしと実行して、swapを切り、rootfsをread-onlyにします。

まとめ

こうして、Raspberry Pi ZeroでHDMIカメラを作る事ができました。 お値段は、Pi Zero $5 + ケース $5.95 + HQカメラ $50 + レンズ $25で、$85.95と送料、輸入消費税です。1万円くらいで作れそうですね。 今度、ATEM Miniに繋いで実際に使えるかどうか確認してみようと思います。

追記

ueponさんが、他の様々な方法について調べてblogを書いていらっしゃいます。こちらも参考になると思います。 uepon.hatenadiary.com

変更履歴

日付 変更者 変更内容
2020/8/9 ytsuboi 作成
2020/8/10 ytsuboi 追記を追加