Python
RaspberryPi
カメラ

gphoto2を使ってラズパイからカメラ制御する(1) (構想編)

More than 1 year has passed since last update.

概要

趣味でカメラ撮影をやっていて、朝日や夕日のタイムラプス撮影にハマっている。
↓こんなの。(これは夕日→夜の時)


だが、朝日タイムラプスは、やってみると撮影中の設定変更が難しいと痛感した。

通常、カメラを絞り優先モード(AvやAモード)で撮影すると、自動でシャッタースピードを変えて、明るさを最適化してくれるわけだが、朝日タイムラプスではそれが裏目に出てしまう。
暗いところを明るくしてしまうので、せっかく暗い状態から明るくなっていくところを表現したいのに、最初から明るく見えてしまうのだ。
なのでマニュアルモードで設定を固定し、勝手に明るくしないようにしなければならない。

一方、マニュアルモードでは、最初と最後の明暗差が非常に大きい朝日タイムラプスでは、設定を固定すると白飛びするか黒つぶれしてしまう。
なので、最初と最後で白飛びも黒つぶれもないような範囲に収まるように、少しずつ設定を変えながら撮影していかなければならないわけだ。

手作業でそれをやるのはとても難しい。
まずタイムラプスは、定点で固定した状態で撮影するわけだから、当然ブレてはいけないからだ。
設定を変更するためにカメラに触るというのは、本来あるべきではない。
更に、常に10-20秒単位でリモコンレリーズで撮影し続ける間に、設定を変えて試し撮りをして明るさを確認する暇などなく、設定を変更したらうまく撮れていることを祈るしかない。

そんなわけで、以下の条件でカメラを制御したいと考えていた。
1. 明るさに応じて自動で最適な設定値を計算できること
2. カメラに触れることなく設定を変えれること

いろいろ検索してみると、多くのカメラをコマンドラインで動かせるgphoto2なるソフトがあると行き着いた。
PCに繋いでコマンドを打てば、現在のカメラの情報取得や、カメラの設定変更、シャッターを切ることもできる。
まさしく必要としていたものである。
しかも、Linux関係のコマンドラインで操作できるということは、わざわざPCに繋げなくても、ラズパイにインストールすればラズパイから操作できることを意味する。

というわけで、gphoto2とラズパイを使って、デジタル一眼カメラにて朝日タイムラプスに最適なツールを作れるか、ちょっと挑戦してみようかと思った次第。

やることリスト

  • 朝日が登る際の明るさの範囲のデータを蓄積する(光センサー等で照度を測定し、EV値を出す)
  • データ蓄積のためのファイルへの書き出し方法を覚える(CSV出力。ファイルの保存。場合によってはDropbox等への自動アップロード)
  • 天気・雲量・日の出時間のインターネットからの取得できるようにする。
  • ラズパイの電池の持ち(モバイルバッテリー接続)を把握する。
  • I2Cミニ液晶への出力できるようにする。(動作確認、時間等表示用)
  • gphoto2をPythonで動かす方法を覚える。
  • タイマー制御による自動シャッター

とりあえず、大きくは2つ。
朝日が昇るときの明るさの変化を、実測して取得しておくこと。
撮影終了時の明るい状況を見越して設定していかなければならないので、事前にデータの取得をしておき、実際の撮影時にはそのデータを元に設定を当てはめていくということが必要と思っている。
晴れと曇りではかなり明るさが異なるようなので、天気・雲量との比較もして、関係性も取得したい。(といっても、晴れてるときじゃないと朝日撮影しないけど)
インターネットで調べてみても、意外と時間に応じた明るさのグラフは出てこなかった。
リニアなのかログなのかちょっと興味があるので照度センサーをつけて実測してみたい。

2つめはラズパイへのプログラムの実装。当然といえば当然。
そのままコマンドを呼び出すだけだと遅いという記事を見かけたので、少し工夫が必要とのこと。gphoto2に関する日本語の記事が限られるので、どこまでうまくできるかわからん。
あとラズパイへの電子工作も少しやっておかなければならん。

割と飽きっぽいので完成するかわからないけど、ちまちま進めていければと思います。