Google Voice Kitにカメラモジュールを追加してみた

ラズベリーパイ
この記事は約13分で読めます。

先日は、久々にGoogle AIY Voice Kitを触ってみました(その時の記事はこちら)が、実はVoice kitにカメラを追加したいというのが実際の理由でした。本日は、実際にラズパイのカメラを追加した際のお話です。

ボイスキットにカメラを追加することの意味

Google AIY系でカメラといえば、巷にはビジョンキット(Vision Kit)というのが存在しています。


ビジョンキットは、ボイスキットと同じく段ボール系のキットで、Raspberry Pi Zero wが同梱されています。ただし、ボイスキット持ちとしては、もう一つ似たようなものを買うのもどうかなと思っていました。

そんな折に、ネットでこういうプロジェクトを発見しました(英語)。

Add Vision to the AIY Voice Kit
This project uses the Google Vision API to describe things, identify logos, and read text aloud. By Liz Myers.

ボイスキットにカメラを取り付けて、画像認識ができるようにするというものです。おぉ、これやってみたい!と思いました。

また、ボイスキットのOSにはビジョンキットのサンプルプログラムも付属しているので、カメラを取り付けて、ビジョンキットのサンプルプログラムも動くなら一石二鳥かも、という期待もありました。ただこれは、私の環境ではうまくいかなかったです。

というわけで善は急げで、さっそくAmazonでラズパイ用のカメラをゲットしたのでした。

ラズパイ用のカメラ

ラズパイ用のカメラというのは、いわゆるカメラモジュールのことを言っていますが、実は何種類か存在します。具体的には、V1 とV2。さらにそれぞれに赤外線カット版と赤外線ノーカット版(Noir)があります。

V1とV2の違いは主に画素数。V1のカメラが500万画素なのに対して、V2のカメラは800万画素になっています。あとは、レンズのF値がV1が2.9なのに対して、V2は2.0だったり、水平画角(53.5→62.2度)、垂直画角(41.4→48.8)と変化があります。

こちらがV1のカメラモジュール。V1と書いてなくても、画素数が500万画素ならV1のカメラです。

一方、こちらがV2のカメラモジュール。800万画素で、V1もそうですがビデオだと1080pまでサポートされています。

一方で、V1にもV2にも赤外線ノーカット版というのが存在します。

これは、赤外線がカットされていないために、日中だと画像が全体的に赤みをおびて表示されます(万年夕方みたいな感じ)。一方で、夜は暗いところでも画像がよく見えるという利点があります。Noir(ノワール。フランス語で黒の意味)と書いてあるやつですね。
こちらがV1の500万画素のNoir

こちらがV2の800万画素のNoirです。

いずれも、カメラにくっついている15ピンフラットリボンケーブルを、ラズパイの基板上にある「15ピンMIPIカメラシリアルインターフェイス(CSI)コネクタ」に接続して使用します。

個人的には、家の薄暗い場所で使うなら赤外線ノーカットのNoirもいいかなと思ったのですが、余分な設定とか必要になったら私は無理、と思って、素直にV2の通常版を購入しました。

カメラが到着

アマゾンスペイン経由で購入し、我が家に届いたカメラがこちらです。

中を開けるとカメラは静電気防止袋に入っていて、それを開けるとカメラが出てきました。

さっそくVoice Kitに取り付けてみる

このカメラモジュールをボイスキットに取り付けてみるわけですが、幸いボイスキットの側面にはカメラ用と思われる穴が既に開いているので、カッター等で段ボールに穴を開けなくとも、すっぽりと収められます

付け方ですが、最初はこの箱に入ったままの状態で取り付けようとしたのですが、さすがに無理でした。一度、段ボールから、スピーカーやラズパイを一度取り出して設置します。

ボイスハット(Voice Hat)をラズパイ本体から取り外すのは厳しいなと思っていたのですが、何とか取り外さずに設置できました。具体的には、ラズパイの基盤にあるシリアルインターフェースコネクタの爪部分を指先でえいやと押し上げて、ボイスハットの隙間からカメラのケーブルを差し込み、再び爪部分を指先で押し下げる感じ。手前はうまくいったのですが、反対側はドライバーの尖った部分を利用して、コネクタを押し下げました。ラズパイを傷つけないように要注意ですが(^^;。

間違えると嫌なので、普通のラズパイ(ボイスハットが付いていないやつ)でシミュレーションしてから行いました。

こんな感じで右下の白いケーブル部分がボイスハットから顔を出します。

カメラの配置法1~ケーブルが上

カメラの配置については、一番簡単なのが、ケーブルが上に来るように設置する方法です。

こうケーブルが上になるように持ってくるわけです。ただこれだとカメラを撮影した際に天地が逆になりますので、カメラを使用する際には、設定で180度回転と指定する必要が出てきます。上で私が参考にしたサイトではそのようにしていました。

カメラの配置法2~ケーブルが下

ただ、毎回180度回転を指示するのは面倒だなという気もしたので、ケーブルをひねる形にはなってしまうのですが、下からケーブルをくぐらせる形でケーブルが下になるように配置してみました。

無駄に生々しい写真でゴメンなさい。

これをやると、段ボール側面に近い所のGPIOの穴がふさがってしまうので、それが嫌という場合は、先の上からケーブルを通して180度回転を指定する方が良いでしょう。

カメラは両面テープで固定

こんな感じに落ち着きました。カメラについたフィルムを剥がしてできあがり。

使用していると位置が少しずれてくるので、カメラは両面テープで段ボールの内側で固定すると安定します。

さて、ケーブル上と下、どちらが良いんだろうという点については、私は両方試してみました。最初は、下からケーブルを通す方法が撮影時に180度回転がなくて良い!と思ったのですが、カメラケーブルの力でなのか、頻繁にカメラの位置が箱の中でずれてしまいました(両面テープも取れがちだし)。なので、最終的にはケーブルが上になった状態になっています。

カメラの動作確認

OSを立ち上げてカメラがきちんと動作しているか確かめるには、ターミナル上で

raspistill -o /home/pi/Pictures/testimg.jpg -w 640 -h 480

と打ってみます。また、先のように天地逆にカメラを設置している場合は撮影の際に「-rot 180」と入れる必要があります。

raspistill -rot 180 -o /home/pi/Pictures/testimg.jpg -w 640 -h 480

デフォルトでは、撮影に5秒間かかるために、カメラにしては少し時間がかかるかも。

とにかくカメラで写真が撮影されたはずです。Picturesフォルダ内に撮影した写真は、以下のコマンドで確認することができます。

DISPLAY=:0 gpicview /home/pi/Pictures/testimg.jpg

ただ、SSH経由だと見られないので、私は撮った画像はVNC接続経由で確認しています。

さて、なんとかカメラは映るようになりました。

次は画像認識のプログラムを用意しますが、それは次の記事にて。

コメント