この投稿はRICOH THETA Advent Calendar 2015 10日目の記事です。
4日目も私のTHETA記事、ならびにその前日のblog記事もTHETAネタですので未読でしたらあわせてどうぞ。
さいきんにわかに話題のデバイスESP-WROOM-02、ご存じでしょうか。秋月電子通商で1個450円!(※10個以上の数割)という低価格なWiFiモジュールです。…といってもまだピンとこないと思いますが、この価格で、WiFiが使えて、技適済(!)で、32bit MCUを内蔵していて(!)、ひととおりのプロトコルスタックを内蔵していて(!)、そしてそしてArduinoなどにこのモジュールをぶら下げてWiFi通信する…だけでなく、このモジュール自体に自分のプログラムを書き込んで単体で(電源ぶち込んでやるだけで)動作させることができ(!!)、さらにはその開発がArduino IDEでできてしまう(!!!)
繰り返していいますが、このモジュールが450えん。いやあ世の中どうなってるんだマッタク!
…というわけで、センサや自作デバイスなどを気楽にWiFiにぶら下げられる素敵モジュールESP-WROOM-02。今回はこれを使って次世代THETAリモートシャッターをつくってみることにしました。
前記事とあわせて「またTHETAリモコンかよ!」という声も聞こえてきますがすみません、これ8月にはできてて記事化さぼっていたものなのでやはりここでまとめさせてください(笑)
まずはイントロダクションとして、ESP-WROOM-02をArduino互換環境として(Arudino IDE)で使う方法を説明します。
ESP-WROOM-02を単体で動かすのには最低限、電源・動作モード設定(IO0/IO2/IO15)・リセットを結線する必要があります。
IO0,IO2,IO15は動作モード設定のために結線します。通常はIO0とIO2をプルアップ、IO15をプルダウンしておき、IO0をON/OFFできるように(GNDに落とせるように)しておくとべんりです。IO0=Hiのときは通常起動(書き込まれたプログラムを実行)、IO0=Loのときは書き込みモードになります。
動作モード選択のほかはGND、電源、リセットをつなげばOK。リセットは10kΩでプルアップしておきます。電源は最大200mAほど流れるのでそれなりに電流のとれる電源を用意する必要があります。
書き込み・デバッグ用にはRxD/TxDを使用します。秋月電子のUSB-UARTモジュールなどを使うとかんたんです。
PC側は「技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法」を参考にしてArduino IDEにESP8266の開発環境をセットアップします。セットアップする…といっても、URL設定してぽちっとするだけでほぼ全自動で環境は構築されてしまいます。
開発ボードをGeneric ESP8266 Module、以下このように設定したら準備は完了です。
あとはArduinoと同じようにコードを書いて実行するだけでこのESP-WROOM-02は無線LANつきのマイコンボードとして動き出します。たったこれだけです。なんてこった。
前回blog記事ではFlashAirをつかってリモコンをつくりましたが、(前回も触れたとおり)THETA Sより前の初代/m15ではもっと深い部分で通信プログラムを書くことができないとリモコンとして動作させることができません。ESP-WROOM-02はこういったプログラムも書けますので、これで史上最小!のTHETAリモコンをつくってみましょう…というわけで、基板をぽりっと作ってみました。
基板をつくっていただいたのはユニクラフトさん。blog記事で基板製作体験記事を公開するという条件で無料で5枚まで基板をつくっていただくことができます。…申し訳ありません、時期を逃してここまで引っ張ってしまいました。。。
8月5日発注、同日受注確認、8月19日発送、8月20日到着。到着時に書いた速報記事のとおり、この基板到着日がたまたまTHETAデベロッパーズコンテスト授賞式の当日だったのであわてて1枚製作して会場に(みせびらかしに)持ち込みました。もちろん問題なくばっちり動作。
ESP-WROOM-02は電流をそれなりに消費するのでコイン電池は使えません。3Vの電源としてCR02を使用しました。このバッテリーホルダーのサイズにあわせてギリギリまでサイズを削って、電源・電源スイッチ・LED・ボタンだけを押し込めたのがこの基板です。
- Wi-Fiモジュール ESP-WROOM-02 ×1 (4500円/10個)
- チップ抵抗 1/10W 10kΩ×3 (500円/2500個)
- タクトスイッチ(縦型)×1 (10円/個)
- 基板用スライドスイッチ SS-12D00-G5×1 (20円/個)
- 赤色LED 3mm OSDR3133A×1 (350円/100個)
- チップ抵抗 1/10W 100Ω×1 (500円/2500個)
- 電池ボックス 1/2AA×1本用(ピン付) BH-1/2AA-2P24×1 (80円/個)
部品はすべて秋月電子でそろいます。ぜんぶで1台あたり565円!
つかいかた
ESP-WROOM-02用の「THETAリモートシャッター」、(私バージョンの)コードがこちらになります。
ESP-WROOM-02の結線・プログラム書き込み
- シャッターボタンをESP-WROOM-02のIO14(GPIO14)に、LEDをIO12(GPIO12)に接続します。この接続先についてはTHETA_Remote.inoに記述がありますので、ほかの結線をする場合はこちらを変更してください。
- リモートシャッターのコードをコンパイル・書き込みます
- ESP-WROOM-02を最初に電源を投入すると、ペアリングモードになります
リモートシャッター:ペアリングモード
- 初回電源投入時、またはシャッターボタンを押しながら電源を投入する(電源を入れたらすぐにシャッターボタンを離す)とペアリングモードに入ります。
- ペアリングモードではLEDが1秒おきに2回点滅します
- ペアリングしたいTHETA(初代/m15どちらでも可能)の電源とWiFiを入れ、リモートシャッターを近くに持っていきましょう。複数のTHETAのWiFiが見えている場合でも一定以上近い(=電波が強い)もののみを接続先として選択します。
- リモートシャッターの近くにTHETAの無線を発見すると、LEDが2秒ほど点灯してペアリング完了し、そのまま接続モードへ移行します。(このペアリング先は電源を切っても記憶されます)
- ペアリングはTHETAが工場出荷状態のSSID(無線名)・パスワードであることを前提に行われます(SSIDからパスワードを推測)。これらを自分で変更している場合はペアリングできませんので手動設定モード(後述)でSSID・パスワード・機種を設定してください。
リモートシャッター:接続モード
- ペアリング済のリモートシャッターの電源を入れると、接続モードになります。接続モードではペアリングしたTHETAのWiFi電波を探します。探している間LEDは1秒ごとに1回点滅します。
- 該当THETAを発見すると、接続を試みます。接続が完了するとLEDが点灯し待機モードに移行します
- THETAが近くにあるにもかかわらず(電波が届いているにもかかわらず)いつまでも接続できない場合はほかに端末が繋がっていないか(スマートフォンのWiFiなどが先にTHETAにつながってしまっていないか)確認してください。THETAには同時に1台までしか接続できません。
リモートシャッター:待機モード
- 接続が完了すると、いつでもシャッターが切れる状態になります。シャッターボタンを押すと撮影されます(THETAが静止画モードの場合は静止画撮影、動画モードの場合は動画の撮影開始・停止が行われます)
- 撮影後カメラ内処理中はLEDが点滅します。点滅が終了したらつぎの撮影ができるようになります
リモートシャッター:手動設定モード
- どうしてもペアリングがうまくいかない、THETAの無線設定を工場出荷時から変更している、という場合は手動で無線の設定を変更することができます。
- リモートシャッターのシャッターボタンを押しながら電源を投入し、そのまま○秒間シャッターボタンを押し続けると手動設定モードに入ります。LEDがパターン点滅しはじめたらボタンを離していただいてかまいません。
- 手動設定モードではリモートシャッターがWiFiアクセスポイントとしてふるまいます。
ESSID: RemoteTHETA
Password: (なし)
のアクセスポイントに、スマートフォンやPCで接続してください - ブラウザで http://192.168.1.1/ に接続すると設定画面が見えます
- 設定画面にリモートシャッターを接続したいTHETAの無線設定を書き込み「設定」ボタンを押すと接続先を変更できます
- 設定が終わったらそのまま電源を切り、入れなおしてください
まとめ
単体のリモコンとしてもなかなか便利になったかとおもいます。この複雑な動作がこの値段・この部品数で実現できるとは!THETA SになってFlashAirでもリモート制御できるようになりましたが、ESP-WROOM-02の自由度はすばらしいです。これからしばらく遊ぶベースとして使ってゆきたいですね。
あと、今回このリモコンコード、THETA Sにも対応させてから発表するつもりだったのですが間に合わなかったので近々THETA S対応のアップデートも…できたら…いいなあ。