RAPIROの視点を楽しむ 〜カメラでいろいろ遊ぶ①〜

さて、RAPIROを動かすことについては基本的なことはできたかなーと思うので、次はRAPIROの内面的(機能的)なことにチャレンジです。今回はカメラを使って色々遊んでみたいと思います。

0.準備:カメラの取付けとRaspberry Piのカメラ有効化

Raspberry Pi専用カメラモジュールを使います。固定ねじは基本4本必要ですが、RAPIROの購入時にはねじは2本しかついていないため、別でねじを持っていない人は、とりあえず対角線上にねじをつけて固定しちゃえばいいと思います。自分はたまたま2mmねじを余分に持っていたので、それで固定しました。

th_rapiro_camera

Raspberry Piの設定も変更が必要です。

$ sudo raspi-config

で設定メニューが出て来たら、”5 Enable Camera”でを選択してください。

1. 静止画を撮影

静止画の撮影自体はとても簡単です。例えば、コンソールで以下のように入力するだけで、写真が撮れてしまいます。

$ raspistill -w 640 -h 480 -rot 180 -o Photo/image.jpg -n -t 10

-wで画像の横幅のピクセル指定、-hで画像の縦幅のピクセル指定です。指定しない場合は2592×1944ピクセルになるらしいですが、そんなに大きなサイズはとりあえずいらないかなあということで、640×480にしています。

-rotで画像を180°回転させていますが、これはRAPIROへ普通にカメラを取り付けると、上下左右が逆さまになってしまうためです。なので、180°回転させて見やすくします(「きょうのかんぱぱ」様の記事を参考にさせていただきました)。そういえば人間の目も同じように本当は上下左右逆さまに像が映っているのではなかったっけ。

-oで出力先を指定しています。自分は/home/piに”Photo”ディレクトリを作り、/home/piでこのコマンドを実行したので、このように指定しています。

-nでプレビューを表示させないようにしています。これを指定しなければRaspberry Piのデスクトップ上にプレビュー画面が出てくるそうなのですが、PCから遠隔ログインしている場合には見えないので、表示させないようにしています。

-tはコマンドを実行してから撮影するまでの待ち時間です。今はコマンドを実行してからすぐに撮影するように、10msを指定しています。0を指定したら即撮影かな?と思いましたが、何やらうまく動いてくれなかったので、とりあえずで10msを指定しています。

2. 撮影した静止画を閲覧

さて、これで撮影自体は出来たので、後は見るだけです。Raspberry PiにSambaとかを入れているなら、ファイルをPCに転送してきて見ることも簡単にできますが、もうちょいスマートにしたいなあ、ということで、DLNAを使ってスマホから写真を見られるようにしたいと思います。

DLNA(Digital Living Network Alliance)はものすごく簡単に言ってしまうと、AV機器間で写真やら音楽やら動画やらを共有できるようにするための通信規格です。つまり、Raspberry Piにちょっと細工してAV機器に仕立て上げてしまえば、後はDLNAに対応したスマホのアプリを使えば、撮影した写真が見えるハズ。

Rasbperry PiをAV機器化するために、DLNAサーバを立ち上げます。

$sudo apt-get install minidlna

これでインストールは完了するので、次はDLNAで公開するフォルダの設定です。デフォルトのままでもいいのかもしれませんが、自分は動画/音楽/写真を分けて保存するので、設定ファイル/etc/minidlna.confの26行目あたりの

media_dir=/var/lib/minidlna

の部分をコメントアウトして、次のように設定しました。

#media_dir=/var/lib/minidlna
media_dir=V, /home/pi/Video
media_dir=A, /home/pi/Music
media_dir=P, /home/pi/Photo

先で写真の出力先をPhoto/image.jpgにしていたのは、このフォルダ設定に合わせるためです。

さて、後はMiniDLNAサーバを起動させれば、Raspberry Pi側はとりあえず準備OKです。

$ sudo /etc/init.d/minidlna start

ちなみに、Raspberry Piの起動時に自動的にMiniDLNAサーバを立ち上げるようにするには、

$ sudo update-rc.d minidlna defaults

とすれば良いらしいのですが、自分の場合は何かエラーが出ました。

pi@raspberrypi ~ $ sudo update-rc.d minidlna defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'mathkernel' missing LSB tags and overrides
insserv: There is a loop between service minidlna and mathkernel if stopped
insserv:  loop involving service mathkernel at depth 2
insserv:  loop involving service minidlna at depth 1
insserv: Stopping mathkernel depends on minidlna and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header

が、再起動して

$ service --status-all

で確認してみると、ちゃんとMiniDLNA立ち上がっている模様。うーん、よくわかりませんが、とりあえず動いているので先に進みます。

スマホのDLNAアプリですが、以下の二つではちゃんと写真を見ることができました。

<iPhoneの場合>

ArkMC Liteメディアプレイヤー

同じローカルネット内にiPhoneとRaspberry Piが接続されていれば、トップ画面の”Servers”で、”raspberrypi: minidlna”が出てくるハズです。ただ、検出されるまでに数分かかることがある模様です。あとは”Browse Folders”などを見て行くと、先ほど撮影した写真にアクセスできると思います。

dlna_1  dlna_2

dlna_3  dlna_4

<Androidの場合>

MediaHouseのUPnP / DLNA対応ブラウザ

先に『Twonkey Beam』を試していたのですが、何やら画像がうまく表示されなかったりしたので、こちらを紹介。こちらもiPhoneと同じような感じで写真にアクセスできます。

以上、そこまでサクサク閲覧できる感じではないですが、見かけ上はスマートなのでとりあえず良しとします。

なんだか思ったより長くなってしまったので、一旦ここまでにします。続きます。

なお、今回のカメラを使ったり、DLNAサーバを立ち上げたりというのは、大部分はこの本 を参照させてもらいました。Raspberry Piで簡単にできることはだいたい網羅されていると思うので、「RAPIROに何か色々機能を付け足したい!」となったときには手元に一冊あると便利です。