プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

Raspberry Pi Zero + カメラ で遊んでみました (1/2)

伊勢ギークフェアへの出展も兼ねて、Raspberry Pi Zero +カメラで遊んでみました。
LINEのボットに写真をお願いすると、Raspberry Pi (以下、ラズパイと呼びます)がカメラで撮って、 LINE に投げ返してくれるというものです。

ちょっと長いですが、自分用のメモとして書いておきます。

ラズパイの購入

今回、ラズパイを触るのが初めてになります。なので、まずはラズパイを買うところからになります。
一口にラズパイといっても、いろいろと種類があります。

Raspberry Pi - Wikipedia

なるべく安くてお手軽なもの、ということで、 Raspberry Pi Zero W という、小型の WiFi 付のモデルを選びました。 本体だけだと、1000円強とお安い!

とはいえ、初めて触るので、遊ぶのに必要なものなどをいろいろと買い揃えないといけません。そこで、KSY さんで下記のキットとカメラモジュールを購入しました。

本体はともかく、カメラモジュールがいい値段したりして、予想外に費用がかかりました。まあ、2台目からはいろいろと流用できそうなので、お安く遊べるかな?

セットアップ

さて、注文後しばらくすると、ラズパイが到着しました。

どこから手を付ければよいのか全然わからないので、ざっと、ネットを調べると、下記の記事などがありました。

http://www.feijoa.jp/laboratory/raspberrypi/firstMeetWithPi/

SDカードを指して、ディスプレ、キーボード、マウスをつなげて、電源入れればよいようです。
幸い、今回購入したキットは、SDカードにOS書き込み済みだったので、OSをSDカードに書き込む手間は不要でした。

カメラモジュールはいったん置いておいて、まずは本体を起動させてみます。
さっそくやってみます。

今回のキットのSDカードには、 NOOBS というOSインストーラが書き込まれています。 なので、最初の電源起動後、こんなOS選択画面が表示されます。

f:id:junichim:20191122221329j:plain

ここで、Raspbian を選択すると、

f:id:junichim:20191122221348j:plain

Raspbian のインストールが始まります。

f:id:junichim:20191122220906j:plain

こんな感じです。正確には覚えてませんが、それなりに時間がかかりました(10分~数10分ぐらいだったか?1時間はかかってなかったように思います)。

無事にセットアップが終わると、

f:id:junichim:20191122225836j:plain

Raspbianのデスクトップが立ち上がります。

f:id:junichim:20191122221007j:plain

画面の指示に従って、設定項目を入れていきます。 問題なく、すべての項目のセットアップが終わると、無事にOSが立ち上がる状態になります。

トラブル1:キーボードが使えない

実は、OS起動後のセットアップ中にいくつかトラブルがありました。

セットアップ中に、パスワードの変更を求められるのですが、USBハブ経由でキーボードを接続していたのに、なんとキーボードが認識されません。

状況を整理すると、

  • 家に落ちていた古いUSBハブを使った
  • これに、マウスとキーボードを接続
  • マウスは認識されるけど、キーボードは認識されない
  • USB ハブにキーボードのみにしても認識されないのは同じ
  • USB ハブを外して、キーボード直付けなら認識される

という状態でした。

慌ててネットを探すと、似たような話がありました。

Raspberry Pi Zero 関連 まとめ & 備忘録 | 日々のできごと

どうも、OTG がキーワードになりそうです。 とはいえ、購入したキットについていた、micro USB -> USB A の変換ケーブルはOTG対応になっています。なので、本当なら 普通の USBハブでも認識されて良さそうなものですが、ちょっと不思議です。

まあ、いつのかわからんぐらい古いUSBハブだったので、改めて新しいUSBハブを購入して試したところ、問題なく認識されるようになりました。

ちなみに買ったのはこれでした。

トラブル2:USBハブを指すと再起動する

上記のトラブル1を調べる際に、あるUSBハブを指すと、ラズパイが再起動するという現象がありました。

こちらも最初は原因がわからず困ったのですが、よくよく調べてみると理由は電源容量不足でした。

Zero WHにUSBハブを挿すと再起動されてしまいます - Raspberry Pi Forums

ハードウェアは難しいですね。

ちなみに、OSインストール後に自動でスタートするセットアップ中にこれらのトラブルは起きたのですが、途中で再起動しても 最初からセットアップがやり直されたので、大きな問題も起こりませんでした。

トラブル3:アップデートに失敗

セットアップ作業の最後でアップデートがかかるのですが、なぜかアップデートに失敗していました。

セットアップ完了後、改めて、

sudo raspi-config

を呼び出して、再度アップデートを試しても同じ結果でした。

これには、下記の記事を参考に、

Raspbianのsudo apt-get updateが失敗したら試したい解決方法

sudo apt-get update --allow-releaseinfo-change

とすればエラーを回避できました。

ちなみに、df -h でSDカードの空き容量を調べてみると、残りが約 800MB だったので、 このあといろいろとインストールすることも考え、一旦保留としました。

カメラ接続

OSのセットアップが終わったら、いったんシャットダウンして、カメラモジュールを接続します。

カメラモジュールをケースから出すとこんな感じです。

f:id:junichim:20191122231018j:plain

ちなみに、中央の白い真ん中に穴の開いたのは何だろうか?と思っていたのですが、後日、ピント調節用の治具だとわかりました。

ラズパイzeroの公式ケースには、カメラモジュール用のケーブルが付属しています。

f:id:junichim:20191122231912j:plain

上から2つ目の赤いケールに入っている短いフラットケーブルですね。

さて、これを実際どうやってカメラモジュールにつけるんだろうか?と少し考えてしまいました。
ま、困ったら調べようということで、下記の記事を見つけて、これを参考にケーブルを差し替えました。

第43回「Raspberry Pi Zero V1.3+カメラモジュールでミニ定点カメラを作ろう!」 | Device Plus - デバプラ

ケーブルはコネクタに刺さった状態で固定(というより抑えてるような感じ?)されているだけのようで、

f:id:junichim:20191122232256j:plain

黒いコネクタの両端を基盤側から外側に押し出すようにすると、コネクタが外れて、

f:id:junichim:20191122232335j:plain

ケーブルを簡単に抜くことができました。

f:id:junichim:20191122232546j:plain

そうしたら、先ほどの公式ケースに付属していた短いケーブルに差し替えて、

f:id:junichim:20191122232715j:plain

再度黒いコネクタを閉じれば終わりです。

f:id:junichim:20191122232741j:plain

ぶきっちょな私でも出来た!

続いて、同じ要領で本体側にもケーブルを接続します。 黒いコネクタを外して、

f:id:junichim:20191122232851j:plain

f:id:junichim:20191122233011j:plain

問題なくケーブルが接続できれば、ハード的な作業は完了です。

次は、ラズパイzeroの電源を入れて、カメラの設定をします。

カメラの有効化

ハードウェアの取り付け作業が終われば、OS側でカメラを有効にするのは簡単です。

下記の記事などを参考にして、

$ sudo raspi-config

を起動して、カメラを選択して有効化します。

試し撮り

Raspbianにはカメラでの撮影用のコマンドが用意されています。

$ raspisitll -o test.jpg

とコマンドをたたいて、問題なく画像が取得できれば、OKです。

ちなみに、何もパラメータを指定しないと、カメラの解像度(3280 × 2464 px)のサイズになります。

幅と高さを指定する場合は、

$ raspisitll -w 640 -h 480 -o test.png

とすると、指定したサイズになります。

詳しくは、公式ドキュメントなどを参照してください。

Raspberry Pi Camera Module - Raspberry Pi Documentation

その他の設定(と確認)

アプリの開発に取り組む前に、いくつかの設定と確認をやっておきます。

SSH と VNC を有効化

先ほどの raspi-config をもう一度呼び出して、SSHとVNCを有効にしておきます。

VNC は接続元のほうにも、VNC Viewer を入れておきます。

Download VNC Viewer | VNC® Connect

なお、下記記事のように、VNCで接続する際の解像度を指定することもできます。

Raspberry PiにVNCで接続して操作する - Qiita

スクリーンショット

ラズパイでスクリーンショットを撮るには、scrot コマンドを使えばよいようです。

Raspberry Piの環境を整える。 - colorful life generator

これで、OSとしてのセットアップが一通り終わったっぽいので、からはアプリケーション開発のための準備と実際の開発を行いたいと思います。