ハードウエアプロトタイピングーGIFカメラを作る(2)ー
- 電子工作
こんにちは。今週のブログ担当の高橋知成です。前回に引き続きRaspberry Piを用いて、GIFカメラの制作をしていきます。
今回の流れ
- Raspberry Pi 3を使いGIF画像を生成してみる
- Raspberry Pi Camera Module V2を使いGIF画像を生成してみる
- ブラウザを使ってGIF画像をダウンロードできるようにする
今回は生成したGIF画像を、ブラウザを使ってダウンロードする所まで作っていきます。
制作で使うもの
- Raspberry Pi 3(固定IP設定済み)
- Raspberry Pi Camera Module v2
1. Raspberry Pi 3を使いGIF画像を生成
前回は、Raspberry Pi 2を使いました。その結果、
- 1枚のJPEGを生成するのに10秒強
- JPEGからGIFを生成するのに約1分
もかかってしまいました。
結果からいうと、Raspberry Pi 3を使うことでGIF画像の生成時間を1/3(約20秒)程度にすることができました。
Raspberry Pi 3でシリアル通信をするには
ただし、Raspberry Pi 3では前回のコードは動きませんでした。
Raspberry Pi 3では設定が変わり、初期設定のままではシリアル通信を行うことができません。
ネットで検索をすると、同じような状況になっている人をみつけることができたので、参考にさせてもらいました。
それにともなってコードを修正しました。コードはこちらに置いておきます。
具体的には、camera.pyを変更しました。
2. Raspberry Pi Camera Module v2を使ってGIF画像生成
続いてシリアルJPEGカメラの代わりに、Raspberry Pi Camera Module v2を使ってみます。
ちなみにこのカメラは、
- 800万画素
- 動画撮影可能(1080p(30fps))
とかなりハイスペックです。
動画からJPEGを生成できるため、JPEGの生成は一瞬でした。
シリアルJPEGカメラと違い、配線がスッキリとしました。
また、公式がライブラリーを提供してくれているので、それを使用しました。
ライブラリーが豊富な機能を提供している
ライブラリーのドキュメントをみていると、基本的なカメラ機能以外にも
- タイムラプス機能
- フィルター機能
- ISO・フレームレートなどの設定
などなど、たくさんの機能がそろっています。(予想以上です。。。)
今回はその中から、GIF画像を撮るために良さそうな「capture_sequence」機能を使い、カメラ撮影のコードを書きました。(camera.py)
3.ブラウザを使ってGIF画像をダウンロードできるようにする
次にスマホなどのブラウザからGIF画像をダウンロードできるようにします。
使うのは、PythonのSimpleHTTPServerモジュールです。コマンドラインで
% python -m SimpleHTTPServer
とやってやると、簡単なサーバーが立ち上がります。
手順
- ディレクトリーを整える
- サーバーを立ち上げるスクリプトを用意する
- Raspberry PIが起動したら、サーバーが立ち上がる設定にする
ディレクトリーを以下のようにしました。
次に、ブラウザからポート8000でアクセスすると、index.htmlが開くようにこのようなスクリプトを用意しました。
最後にRaspberry Pi が起動したら、用意したスクリプトを実行するように設定をします。
そのためにRaspberry Piの/etc/rc.local ファイルに設定を記述します。
今回ですと以下のコードを記述しました。
sh /home/pi/gifcamera/startserver.sh &
※”exit 0″という記述の前に書く必要があります。
今回、Raspberry Pi 3には固定IP(192.168.0.24)を設定しているので、ブラウザで”192.168.0.24:8000″とアクセスすると画像をみることができました。
※ブラウザのスクリーンショットの為動いてはいませんが、実際にはアニメーションしています。
これが全体のソースコードです。
まとめ
Raspberry Pi 3とRaspberry Pi Camera Module V2を使ってGIF画像を生成しました。
PythonのSimpleHTTPServerモジュールを使い、ブラウザからGIF画像をダウンロードできるようにしました。
次に向けて
現状のままだと、カメラとブラウザが同じネットワーク上に無いと、GIF画像をダウンロードすることができません。(例えば同じWiFiに接続している時など)
持ち運びができて、カメラで撮ったらその場でSNSにアップロードすることがGIFカメラ制作の目標なので、引き続き作り込んでいこうと思います。(アクセスポイント化?など???)
それでは、また次回に。