読者です 読者をやめる 読者になる 読者になる

hogehoge, world.

米国カリフォルニアから日本に一時帰国中のソフトウェアエンジニアがIT・自転車・音楽・天体写真・語学などについて書く予定。

ESP-WROOM-02(Arduino)によるWiFiネットワーキング (5) ~ 電源とUSBシリアル変換モジュール

さてそろそろESP-WROOM-02の話に入ろう。まずはこれがなくては始まらない、電源USBシリアル変換モジュールについて。

買いたてほやほやの状態のESP-WROOM-02には、シリアル通信で対話的にコマンドを送ってWiFI機能を動かすことができるプログラムがあらかじめ書き込まれている。まるで昔のモデムのようなノリで、実際ここで使われるコマンドはそれらしく「ATコマンド」と呼ばれている。最終的には自分でプログラミングするつもりであっても、ESP-WROOM-02を買って来たら、まずはこれを叩いて動作確認をするのが常套手段である。そのために最低限必要なのは、電源と、PCと通信するためのUSBシリアル変換モジュールである。

電源

電源は多くの人がハマっているようなので、しっかり準備しよう。次の点に注意が必要である。

  • 電圧が3.3Vである
  • 起動直後に大きな電流が流れる

既に別のArduinoやUSBシリアル変換モジュールを持っていると、そこに3.3V出力が付いていたりして、こりゃラッキーと使いたくなるのだが、残念ながらそれでは動かないと思った方がよい。ESP-WROOM-02は起動時に200~300mAの電流が(一瞬だが)流れるので、そこで十分な電力が供給できず落ちてしまうのだ。この問題についてはこの記事が詳しい。

USBに挿すだけのArduino Uno/Nanoと比べるとめんどくさい感があるが、まずはちゃんと電流供給力のある独立な電源を用意しよう。私は家に余っている9Vや12VのACアダプターを使って、この小型スイッチングレギュレーターをかまして3.3Vに落としている。

モーターやセンサーなどの周辺デバイスを付ける場合、3.3Vだけではなく、5Vや9Vも必要になることが多い。例えば既出のクマーシステムは、以下の部品を使って、ACアダプター → 5V(モーター用) →3.3V(ESP-WROOM-02用)と二段階で降圧している。

まぁ、私も電源まわりはあまり詳しいわけでもなく、プロトタイピングにおいて使い回しが効きそうな手段を選んでいるだけである。最適解は別にあるのかもしれない。

既に持っているスマフォ用の充電器やモバイルバッテリー(5V 1Aくらいの供給力)を活用できないか?と思う人がいるかもしれない。原理的には上のLDOレギュレーターをかませて3.3Vに降圧すればよいはずで、実際に動くことも確認したが、開発用・実験用にはあまりおススメしない。スマフォ用電源は、バッテリーを傷めずに高速で充電するため繊細な制御が実装されている可能性があって、重い負荷を駆動したり回路の配線ミスなどで少々大きなの電流が流れると、すぐに保護回路が働いて切れてしまったり、最悪破壊してしまうかもしれない。スマフォ用電源を壊してしまうくらいなら、家に転がっている適当なACアダプターに数百円のレギュレーターの方が安上がりだし安定してよいのではないか、と思う。

なお、大きな電流が流れるのは瞬間的なので、全体としてESP-WROOM-02が電力バカ食いというわけではない。こういう変動の大きなシチュエーションでは乾電池の方がむしろ安定するという話もある。

USBシリアル変換モジュール

ESP-WROOM-02にはArduino Uno/NanoのようにPCとの接続用のUSB端子が付いておらず、シリアル入出力端子が生で出ているだけである。そのため、PCと接続してアプリケーションとやりとりしたり、プログラムを書き込んだりするためには、このシリアル入出力をUSBに翻訳するモジュールが必要である。私はこれを使っている。

これをUSBでPCに接続し、ドライバをインストールすると、PC上からは仮想COMポートに見える。つまりPCからの見え方はArduino Uno/Nanoと同じで、ハードウェアのシリアル入出力端子に自力で配線する必要があることが唯一の違いである。

同様の機能のモジュールはいろいろあって何を使ってもよいが、信号電圧が5Vではなく3.3Vである必要があることに注意。上記の「超小型~」は小さい・安い・3.3Vと5Vの両方で使えるのでおススメ。ちなみに、配線のために端子(上の写真の右上)にヘッダピンをはんだ付けするのだが、ブレッドボードにワイヤリングする使い方がメインなのであれば、付属品のオスピンよりも、メスピンを買ってきて付けた方が便利である。

電源とUSBシリアル変換モジュールだけの動作確認用回路

動作確認用の最低限の回路はこんな感じになる。スイッチングレギュレーターやUSBシリアル変換モジュールの見てくれが実物と違うのはご愛敬。

(ちなみにESP-WROOM-02のFritzing用部品は自分で作ったもの。かなり時間かかった。需要があれば公開するつもり。)

f:id:tomoto335:20160511044033p:plain

 

f:id:tomoto335:20160511044054p:plain

ENとIO0をHIGHに吊り、IO15をLOWに落とすのは、ESP-WROOM-02をプログラム実行モードで起動するための仕様である。プログラム書き込みモードへの切り替えもできるようにするには回路をもう少し追加する必要がある。それについては後述する。

この回路を組んでPCとUSBで接続し、電源を入れれば、PCのシリアル端末を使ってESP-WROOM-02の動作確認ができる。端末の設定方法など具体的なやり方はいろいろな人が既に紹介しているのでググってみて欲しい。AT+CWLAPで周囲のアクセスポイント一覧が出たときの感動はなかなかのものである。

ESP-WROOM-02ではなくESP8266?

例えば下記のATコマンド仕様ドキュメントを見ると、モジュール名がESP-WROOM-02ではなくESP8266と参照されていることに気付くと思う。

https://cdn.sparkfun.com/assets/learn_tutorials/4/0/3/4A-ESP8266__AT_Instruction_Set__EN_v0.30.pdf

タネを明かすと、チップ本体はESP8266という名前で、それに周辺回路を付けてパッケージングしたものがESP-WROOM-02なのである。SDKやライブラリに登場する名前もESP8266であり、技術情報を当たる際にもESP8266で検索した方が圧倒的に多くの情報がヒットする。私も以後ESP-WROOM-02固有の話でなければESP8266という呼び方をするかもしれないので注意されたし。