Hue Tapスイッチが高いのでESP-WROOM-02で物理スイッチを自作する 前編

th_arduino-esp-7

Philips hue、ウチでは主に朝の天気予報装置として活躍しているのですが、良い設置場所がなくて、今はデスクのサブライトとして設置しています。

そういうわけで、できれば手軽に点けたり消したりできるようにしたいのですが、hueは基本的にアプリで操作するものなので、イチイチスマホのアプリを立ち上げなきゃいけません。些細なことですがこれはやっぱりストレスなので、できれば物理スイッチが欲しいです。

そういう要望は多かったようで、hueは公式に物理スイッチを販売しています。

。。。うん、高い。カッコイイし電池いらないしで製品としては文句無しなんですが、とにかく高い。

hueはWeb APIで操作できるのだから、HTTPリクエストさえ発行できるものがあれば、同じようなものは作れるハズ(さすがに電池なしはハードル高いですが)。

 

ということで、以前購入して放置していたESP-WROOM-02モジュールを引っ張りだしてきました。

これで物理スイッチを作ることができれば、だいぶお安く済みそうです。というワケで、いざチャレンジ。

さて、このESP-WROOM-02モジュール。「なんか単品でWi-Fi通信できるArduinoっぽい!」程度の知識で購入していたので、何をどう扱えば良いのかさっぱりわかりません。とりあえず、ソフトを書き込む方法から調べないと。

こっちを買っていれば、こちらのページのやり方に従ってすぐに開発できたのでしょうが、あいにく自分が買ってしまったのはモジュール単品をピッチ変換しただけのものです。しょうがないので、自分で何とかします。

とりあえずArduinoとして開発したいので、Arduino IDEの確認です。Arduino cc系IDEの1.6.xが必要なのだそうです。

arduino-cc

起動時にこんな画面が出るやつです(画像はMacで起動した場合)。自分は1.6.8を使っています。バージョンが最新だからといってこっちからダウンロードしないよう注意。Arduinoは内部分裂してからややこしい。。。

ESP8266(ESP-WROOM-02に積んでるチップ)の開発環境のインストールを、公式の手順に則って進めていきます。

それから、こちらも参考にします。

では早速。

Mac版だと、”Arduino→Preferences”を開いて、”追加のボードマネージャーのURL”に以下の画面の1行目を追加します。

arduino-esp-2

2行目は自分がAdafruitのTrinketを開発するために追加しているURLなので、今回は関係ないです。

次に”ツール→マイコンボード→ボードマネージャ”で、” ESP8266″で検索して出てくるものをインストールします。

arduino-esp-3

あとは、”ツール→マイコンボード→ボードマネージャ”で”Generic ESP8266 Module”を選択した後、さらに”ツール→マイコンボード”で以下の項目を設定します。

  • Flash Mode:QIO
  • Flash Frequency:40MHz
  • CPU Frequency:80MHz
  • Flash Size:4M(3M SPIFFS)
  • Debug Port:Serial
  • Debug Level:全て
  • Reset Method:ck
  • Upload Speed:115200
  • シリアルポート:後で接続するFTDI USBシリアル変換アダプターのポート

上記の各設定の意味はよくわかっていないのですが、とりあえず自分が試してうまくいった内容を記載しています。

 

開発環境の準備は以上でおしまいです。で、一番の問題は「何をどう接続するねん」というところです。これについては、以下を参考にさせていただきました。

これらをまとめると、ポイントは以下です。まずArduino IDEでプログラムを書き込むときは、ESP-WROOM-02の各ピンを以下のように接続します。

  • 3V3 … 3.3Vで80mA程度電流を流せる電源を接続
  • GND … GND (LOW)
  • EN … HIGH
  • IO15 … LOW
  • IO2 … HIGH
  • IO0 … LOW
  • TX … FTDIのRX
  • RX …  FTDIのTX

で、書いたプログラムを実行するときは

  • IO0 … HIGH

に変える。他はそのまま。

「書き込みに80mA程度消費」というのがちょっと心配だったのですが、以下を使えば特に問題なく書き込めました。

以上を踏まえて、小さいブレッドボード上に書き込み&動作確認用の配線をしました。

ちょっとごちゃっとしてしまいましたが、こんな感じです。

 th_arduino-esp-5

ESP-WROOM-02を重ねるとこんな感じ。

 th_arduino-esp-8

IO13でLチカをする前提の配線です。結局書き込みとプログラム実行を切り替えるのはIO0のHIGH/LOWなので、それをジャンパーピンで切り替えられるようにしています。写真の状態はIO0をLOWに落とす接続なので、これにさらに

 th_arduino-esp-6

こんな感じでFTDI USBシリアル変換アダプターを接続してArduino IDEの書き込みボタンを押します。

arduino-esp-4

こんな感じの表示になれば書き込み成功です。

th_arduino-esp-7

実行するときは、ジャンパーピンを逆にして、電源だけ繋いでやればOKです。

 

うん、問題なさそうです。さらにRXとTXも繋ぐと、Arduino IDEのシリアルモニタでデバッグもできる。。。ハズなのですが、これが何度やっても表示してくれませんでした。謎。

 

まあとりあえず、ESP-WROOM-02にプログラムを書き込むことはできるようになったので、次回でWiFiに繋いでhueを操作するところまでやりたいと思います。

 

ちなみに、「書き込み装置の配線とかよくわからん!めんどい!」という人は、素直にESP-WROOM-02の開発ボードを買う方がお手軽だと思います。

ただ、どうしても少し割高にはなるし、サイズも少し大きくなってしまうので、ESP-WROOM-02を使ったモノをたくさん作りたいとか、できるだけコンパクトにしたいという場合には、FTDI USB シリアル変換アダプターで書き込み装置を作って、ESP-WROOM-02単品を買う方が良いと思います。