この投稿はRICOH THETA Advent Calendar 2015 4日目の記事です。
昨日のblog記事は別のAdvent Calendar向けの記事でしたが、こちらもTHETAネタですので未読でしたらあわせてどうぞ。
全天球カメラTHETA S。このカメラはスマートフォンとWiFiで接続してシャッターを切ることができるのですが、THETAシリーズの3代目となるSからはいままでのTHETAとWiFiの接続方法(プロトコル)が変わりました(なのでスマートフォン側のアプリが別になっているのですね)。
以前のTHETAではスマートフォンとカメラの間をPTP/IPというあまり日常では見かけないプロトコルで接続していたのですが、そのためこのプロトコルを真似してシャッターリモコンを作ろうと思うとLinuxが動く機械を使ってガリガリとPTP/IPで通信するプログラムを書くか下回りの部分から通信プログラムが書けるマイコンを使ってガリガリとPTP/IPで通信するプログラムを書くかしかありませんでした。
と・こ・ろ・が。
前述のとおり、THETA Sではこのプロトコルがガラっと変わりまして、HTTP+JSONというWebでとてもよく使われている方式になりました。結果として、いままでリモコンには使えなかった「HTTPしか喋れない」デバイスでもTHETAの制御ができるように!なったのです!これはすごい!やったあ!
というわけでいままでは(基本HTTPしか喋れないため)THETAの制御に使えなかったデバイスのひとつが、これ。WiFiつきSDカード、FlashAir。
このFlashAir、よくある(Eye-Fiのような)「普通のWiFiつきSDカード」とは一味違います。実は公式にAPIなどが公開されておりさまざまなスクリプトをSDカードの中で動かすこともできる優れもの。スクリプトでSDカードのピンをPIOとして制御することまでできたりするので、これを単体のマイコンボードとして扱うことすら可能なのです。さすがにESP-WROOM-02よりだいぶできることは限られてしまいますが、FlashAirにボタンと電池を外付けすれば単体で動作するTHETA Sリモコンも簡単につくることができる!のです。
実際ボタンと電池をぶら下げてあげれば単体で動作するリモコンとして動くのですが、今回はあえてそういった工作はナシで素直にSDカードはSDカードとして使ってみることにしました。さくっとFlashAirからTHETA Sを制御するスクリプトを書いてあげて…
\ はい、THETA Sリモコンの完成です! /
\ やったーNEXがTHETAのリモコンになったよ! /
THETAによる全天球写真は空間すべてをキャプチャする、写真をフレームとして「切り取る」ことを「しない」良さがあるのですが、それはそれとして普通の「切り取った」写真の良さもあるわけです。まだ全天球写真ではカバーできない、通常写真にしかできない表現もいろいろあります。全天球写真もいい!でも普通写真もいい!ああ、どうしよう!どうしよう!いや、だったら両方撮ればいいじゃん!
そう、そんなときは一緒に撮ってしまいましょう!…というロジックで、FlashAir用にスクリプトを書き、「デジカメでシャッターを切ると(=写真がSDカードに書き込まれると)連動してTHETA Sのシャッターも切れるSDカード」をつくってみました。やったね!
つくりかた
Post from RICOH THETA. - Spherical Image - RICOH THETA
材料
FlashAir W-03(容量はなんでもよい)
FlashAirは販売時期によって中身の世代が更新されており、2015年12月現在、一般的に市販されているモデルは「第3世代(W-03)」です。カード内でスクリプト(Lua)を動かす機能はこのW-03から搭載されたものですので、用意するFlashAirもW-03(以降)である必要があります。W-03はカード自体に「W-03」と書いてありますので目印にしてください。上記写真で言うと、左側が初代、右側がW-03です。繰り返しますが、W-03以降でないとだめです。(上記写真左側のFlashAirでは動作しない)
SDカードを読み書きできる環境
材料は以上です。
手順
- FlashAirの設定を書き換える
- FlashAirにTHETA接続用スクリプトを書き込む
- FlashAirをデジカメに刺す
- THETAとデジカメの電源を入れて、デジカメで写真を撮る!
①FlashAirの設定を書き換える
- FlashAirをPCに差し込みます
- \SD_WLAN\CONFIG をメモ帳などで開きます。このファイルは隠しフォルダにあるため、見えない場合は見えるように設定します。
- CONFIGファイルをメモ帳で開くとこんな感じになっています。ここから…
- 「アクセスポイント(THETA)につなぎに行くモード」へ変更(APPMODE)
- 接続が時間で切れないよう変更(APPAUTOTIME)
- THETAが見つからない場合は何度もつなぎなおすよう変更(STA_RETRY_CT)
- THETAのWiFi名称・パスワードを設定(APPSSID , APPNETWORKKEY)
- ファイルが書き込まれたらスクリプトを動かすよう設定(LUA_SD_EVENT)
を設定します。
APPMODE=5
APPAUTOTIME=0
STA_RETRY_CT=0
APPSSID=THETAXS00123456.OSC
APPNETWORKKEY=00123456LUA_SD_EVENT=/theta_trigger.lua
上記の設定を記入します(APPSSID, APPNETWORKKEYはご自分のTHETA Sのものにあわせます)。すでに項目が存在する行は消しておくとよいでしょう。書き終わるとこんな感じになります。
ここまで書き換えたら、ファイルを保存して閉じます
②FlashAirにTHETA接続用スクリプトを書き込む
- このファイルをSDカードのトップに置きます
これで準備完了!
③FlashAirをデジカメに刺す
④THETAとデジカメの電源を入れて、デジカメで写真を撮る!
Post from RICOH THETA. - Spherical Image - RICOH THETA
おーいえー!
ちなみにこちらのスクリプト、THETAが動画モードになっている場合は5秒だけ動画を撮影します。写真+短時間全天球動画、なんてのもどうでしょうか!
あと今回は通常カメラとをTHETAを別々の場所で撮影しましたが、こんなアダプタを使ってカメラ on カメラにしてしまうのもいいかもしれないですね。
まとめ
冒頭で触れたように、FlashAiirを素材として電池とボタンをぶら下げて物理リモコンを作るのもよいとおもいます。また(撮影後それなりに時間かかってしまうので今回は実装しませんでしたが)THETAで撮影したあと自動的に写真をFlashAir側に送ることもできるとおもいます。
FlashAirのほかにもTHETA Sでプロトコルが変更された結果使えるようになったデバイスや環境はあるはず。ぜひみなさんもいろいろ作ってみましょう!