ESP8266ブレークアウトボード比較

wroom-02.jpg

夏休みの間、Arduinoはいったん脇に置いて、流行のWiFiマイコン「ESP8266」を使ってみることにします。

ESP8266は、WiFiとCPUをワンチップに統合したもので、フラッシュメモリと組み合わせたシステムインパッケージの形で出回っています。
登場したのは昨年の秋ごろで、安価で柔軟性があることから一気に注目を集めました。

TCP/IPとWiFi機能をシリアルポートから利用できるモジュール(WiFiモデム)は以前からありましたが(たとえばWIZnetやLANTRONIXの製品)、ESP8266を使ったモジュールは5ドル程度と従来の数分の1の価格です。
しかもファームウェアを自作するためのSDKが公開されており、チップのI/Oから直接センサやデバイスを制御することも可能です。

つまり非常に安価な、WiFi機能つき高性能マイコンとして使えるわけで、ホビイストから見れば実に素敵なオモチャです。
海外のブログでは様々な試みが積極的に行われており、一種の熱気を感じます。
Googleトレンドを見るとこんな感じになっています。
esp826601-03.png

このチップの特徴については、以下のブリリアントサービスさんのページが非常によくまとまっていますので、ぜひご覧ください。

技適OKな中華IoTモジュールを使いこなす ~ BRILLIANTSERVICE TECHNICAL BLOG

このESP8266を使ったモジュールですが、国内では比較的早くからaitendoが扱っていましたが、使ってみる人はそれほど多くなかったようです。
総務省の技術適合基準(通称「技適」)をクリアしておらず、そのまま使うと電波法違反になってしまいますので、おおっぴらにできなかったのでしょう。
(実は私も購入だけして放置していました。)

それが、この春にESP8266を使ったモジュールの一つ、「ESP-WROOM-02」が技適を通過したことで、国内でも公式に販売可能になりました。

国内でいち早くこのモジュールを販売し始めたのはマイクロテクニカだったと思います。
その後、Cerevoを皮切りにスイッチサイエンス、aitendo、秋月電子、共立などマイコンを扱うパーツショップが軒並みESP-WROOM-02を扱うようになりました。

使う際のネックは、1.5mmピッチという変則的に狭いピン配列でしたが、これもCerevoがピッチ変換基板とのセット品の販売を始め、やや遅れてマイクロテクニカ、その後スイッチサイエンス、aitendo、デジット、とこれまた各社が変換基板を売り始めました。

実は私もWROOM-02はモジュールを入手したものの、ユニバーサル基板にUEWで配線するしか手がないと思われ、ちょっと面倒で手を付けていませんでした。
ところが急にいろいろな変換基板が登場してきたので、逆に目移りしてしまい、この1ヶ月の間にマイクロテクニカ製、スイッチサイエンス製、aitendo製と3種類もの変換基板を入手してしまいました。

まず、この3種の変換基板を紹介したいと思います。
(Cerevoだけ入手していないのは、あっという間に売り切れてしまったからで、他意はありません。)

下の写真は左から、以下の順に並べています。

ESP-WROOM-02ピッチ変換済みモジュール《フル版》 – スイッチサイエンス
WiFi-UARTモジュール ブレークアウトボード実装済み [BB-ESP-WROOM02] | 無線通信モジュール,Wi-Fi | マイクロテクニカ
WiFiモジュール変換基板(A) – aitendo
esp826601-04.jpg
これを見ると、aitendoは18ピンですが、スイッチサイエンスとマイクロテクニカは16ピンとなっていることが分かります。
元のESP-WROOM-02は18ピンですが、変換基板での配置はそれとは異なっています。

以下が、Cerevoを含めた4種の変換基板のピン配置です。
Cerevoは以下の記事を参考にしました。

技適済みWi-Fiモジュール「ESP8266」で始めるIoT入門(ブレイクアウトボード実装編) | Cerevo TechBlog

  ESP8266 aitendo cerevo SwitchScience マイクロテクニカ
3V3 1 7
EN 2 J4
IO14 3 4
IO12 4 5
IO13 5 6
IO15 6 ←, JP3 3, J1
IO2 7 ←, JP2 1, J2
IO0 8 ←, JP1 16, J3
GND 9 8 9
IO4 10 9 12
RXD 11 10 13
TXD 12 11 14
GND 13
IO5 14 12 15
RST 15 13 J5
TOUT 16 14
IO16 17 15 11
GND 18 16

aitendoの基板は単純にピン間隔を広げるだけです。

Cerevoも同様ですが、WROOM-02のモードを切り替えるためのIO15,2,0をジャンパできるように引き出しています。

スイッチサイエンスは3本あるGNDを1本にまとめています。

マイクロテクニカは凝っていて、モード切り替えの3本のI/Oピンをすべて、LまたはHにジャンパピンで設定できるようにピンヘッダ用のパターンを設けています。
さらに、イネーブルピンもジャンパピンで設定でき、リセットスイッチも実装できるようになっています。

その代わり、ピン配置はWROOM-02とはだいぶ違っています。
また、TOUTが引き出されていません。マイクロテクニカのマニュアル(要パスワード)を見るとTOUTの機能はNCという扱いになっていますが、本家のマニュアルを見るとTOUTはADCの入力ピンのはずなので、なぜ食い違っているのかよく分かりません。

このピン配置はマイクロテクニカの自社製品に合わせた仕様になっており、その仕様では、使われていない10番ピンは+5V供給用となっています。
しかしできればこのピンをTOUT用にしてあればと思います。
(UEW等で手配線でつなぐことは可能かもしれませんが。)

次に、ボードを90度回転して並べた画像です。
今度は左から、スイッチサイエンス・aitendo・マイクロテクニカの順です。
esp826601-05.jpg
見て分かるように、ボードの幅がピン幅1本分ずつ違います。

スイッチサイエンスが一番幅が広く、普通のブレッドボードだと追加のピンを挿す場所がありません。
そのため、基板の下に配線するか、より幅広のブレッドボードを使う必要があります。
このことは商品ページにも書かれています。

ESP-WROOM-02ピッチ変換済みモジュール《フル版》 – スイッチサイエンス

ブレッドボード2枚を用意し、このモジュールを2枚のブレッドボードにまたがるように配置して使っている人もいます。

ESP-WROOM-02使ってみる | Natural Days

工作と小物のがらくた部屋: 格安無線LANモジュール ESP8266 (ESP-WROOM-02) お試し。

ただ、ちょっと持ち上げたりするときに気をつける必要がありそうです。

(追記:足の長いピンソケットを使う方法を別記事で書きました。

aitendoの変換基板はスイッチサイエンスよりも1列分狭くなっています。
ですので基板の片側だけはジャンパケーブル等を挿すことができますが、反対側は基板の下に配線するしかないようです。

マイクロテクニカは、それよりさらに1列狭いので、普通のブレッドボードでも両側に1本だけは配線することができます。
ただし、基板がせりだしていますので、実際には下の写真のように、少し斜めに挿す感じになります。

esp826601-07.jpg

なお、cerevoの基板も、ブログの写真を見る限りではマイクロテクニカと同じ幅のように見えます。

というわけで、ブレークアウト基板といっても、意外と細かい違いがあります。
現時点の状況を表にすると下のような感じです。

  モジュール
実装
基板幅 ジャンパ設定 ピン配列
aitendo モジュール準拠
cerevo 一部有 モジュール準拠
マイクロテクニカ 独自
SwitchScience ほぼモジュール準拠

どれが良いかというと難しいのですが、あえて選ぶと、あまり電子工作に慣れていないならマイクロテクニカ、1.5mmピッチのハンダ付けなど何でもないというならcerevoかと思います。
マイクロテクニカは内側のジャンパ設定用のピンヘッダは2mmピッチですが、接続しなくても外側の2.54mmピッチのピンヘッダだけハンダ付けすれば使うことは可能です。
ただし、ESP8266のADCを使用したければTOUTを引き出している他の基板のほうが良いでしょう。
スイッチサイエンスの実装済み基板を使う場合は、足の長いピンソケットを使用することをお勧めします。

今回は、マイクロテクニカの基板にピンヘッダとリセットスイッチを実装し、動作確認を行いました。
注意すべき点は、ESP8266は3.3V動作で、しかも結構電力食いであることです。

PCとの通信用に、これまでArduino Pro Mini(3.3V)で使ってきたUSBシリアル変換モジュールのTX, RX, GNDを基板側のRX, TX, GNDに接続します。
マイクロテクニカが提供しているマニュアルの接続例ではUSBシリアルのGNDを接続していませんが、ノイズが乗る場合があるので接続したほうが良いです。
esp826601-06.jpg
電源ですが、動作時の消費電流が200mA以上あるそうなので、USBシリアル変換モジュールやArduino UNOの3.3Vの出力ではまかなえません。
私は手元に3.3VのACアダプタ(バッファローのスイッチングハブの付属品)があったので、DCジャックをブレッドボード用に変換する基板(秋月電子)を使って接続しました。

通信ソフトは、Arduino IDEのシリアルモニタを使います。(115.2Kbps, 改行はCR+LFに設定します。)
電源を投入すると、ESP8266側からまずメッセージが流れますが、このときのビットレートは76.8Kbpsですので文字化けします。

そのあと、以下のようにWiFiルータへ接続し、取得したIPアドレスを表示させ、ついでにファームウェアのバージョンも表示させています。(青字部分が入力するコマンド)

AT


OK
AT+CWMODE=1


OK
AT+CWJAP="SSID","PASSWORD"

WIFI CONNECTED
WIFI GOT IP

OK
AT+CIFSR

+CIFSR:STAIP,"192.168.0.106"
+CIFSR:STAMAC,"18:fe:XX:XX:XX:XX"

OK
AT+GMR

AT version:0.23.0.0(Apr 24 2015 21:11:01)
SDK version:1.0.1
compile time:May  5 2015 14:03:58

OK

esp826601-01.png

また、以下の記事を真似てGoogleのサイトにHTTPコマンドを送り、返事が返ってくることを確認しました。

ESP8266 connecting to internet | ReiLabs

esp826601-02.png

とりあえず動作は確認できましたので、初回はこれで終了です。

コメント