だいぶ前に買って1年以上放置していた「Wi-Fiモジュール ESP-WROOM-02 DIP化キット」を引っ張り出して、使ってみた。
このモジュールは、Wi-Fi を飛ばすため、普通のマイコンと違って消費電力がとても大きい。電源は 5V のアダプタを用いて DC-DC で 3.3V に下げるのが良いらしいのだが(参考:「じわじわ進む:ESP-WROOM連続稼働実験 」、「ねむいさんのブログ:ESP-WROOM-02を使ってみる3 -そんな電源で大丈夫か-」)、今回はテストということで、エネループ4本 4.8V と普通の三端子レギュレータで 3.3V を作った。なお、一応オシロで 3.3V ラインは確認しました。ブレッドボードの配線図は下の通り。
EN, IO2, IO0, RST は 3.3V に、IO15 は GND に、それぞれ 10K の抵抗を通して接続する。RST と IO0 にはタクトスイッチをつけて、押したら GND につながるようにしておく。RST スイッチを押すとリセットがかかる。この時 IO0 スイッチを同時に押しておくと、フラッシュ書き込みモードになる。
USBシリアルは AE-TTL-232R を使う。ドライバは FTDI の公式ページで入手できる。ちゃんと Apple の署名がついている。ESP-WROOM-02 とは TXD/RXD/GND の3線で接続する。最初 GND をつないでなくて、「通信できない、おかしい」と首をひねっていたのはナイショです。
最初は AT コマンドで制御できるようになっているので、まずは動作確認から。Arduino IDE のシリアルモニタを使う(別に Arduino IDE でなくてもいいのだが、どうせ後で Arduino 化するので、今から使っておく)。改行を CR+LF, 速度を 115200bps に設定。ESP-WROOM-02 の電源を入れると、最初はゴミが表示されて、その後 "ready" と出る。"AT" と送信すると "OK" と出る。その他、「ESP-WROOM-02: ATコマンドによるWifi動作確認」などを見てチェック。(実際やったのだけど、結果を記録しておくのを忘れていた。)
次に、Arduino として使えるようにする。Arduino IDE のボードマネージャのリンクに http://arduino.esp8266.com/stable/package_esp8266com_index.json
を加える(開発元ページ:Arduino core for ESP8266 WiFi chip)。下のように、"esp8266" がボードマネージャに表示されるので、これをインストールする。現行のバージョンは 2.4.1 だった。
ボードの設定は下の通り。正直よくわからないものもいくつかありますが…
「mgo-tec電子工作:ESP-WROOM-02 (ESP8266) チップ・メモリ・MACアドレス情報確認方法」にあるスケッチをコピー&ペーストする。ブレッドボード上のフラッシュ書き込みスイッチ (IO0) を押しながらリセットスイッチ (RST) を押し、その後 Arduino IDE 上でコンパイル・書き込みを行う。下のようにメッセージが出れば成功。
(前略)
最大1044464バイトのフラッシュメモリのうち、スケッチが253616バイト(24%)を使っています。
最大81920バイトのRAMのうち、グローバル変数が33324バイト(40%)を使っていて、ローカル変数で48596バイト使うことができます。
/Users/########/Library/Arduino15/packages/esp8266/tools/esptool/0.4.13/esptool -vv -cd nodemcu -cb 115200 -cp /dev/cu.usbserial-A1032L8X -ca 0x00000 -cf /var/folders/4r/pld2c6mj7gb36x37hvwy68fh0000gn/T/arduino_build_603642/show_esp8266_info.ino.bin
esptool v0.4.13 - (c) 2014 Ch. Klippel
setting board to nodemcu
setting baudrate from 115200 to 115200
...(中略)...
writing flash
................................................................................ [ 31% ]
................................................................................ [ 63% ]
................................................................................ [ 95% ]
............ [ 100% ]
starting app without reboot
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
espcomm_send_command: receiving 2 bytes of data
closing bootloader
シリアルモニタを開いてリセットスイッチを押すと、(ゴミのあと)下のように表示された。
-----ESP-WROOM-02 ( ESP8266 ) Chip Infomation -----
Core Version = 2_4_1
CPU Frequency = 160 MHz
ChipID = ######
Flash ID = 1640A1
SDK version = 2.2.1(cfd48f3)
Boot version = 31
Boot Mode = 1
Flash Chip IDE Size = 4194304 byte
Flash Chip Real Size = 4194304 byte
Flash Frequency = 80000000 Hz
Flash Chip Mode = QIO
Free Heap Size = 46512
Free Sketch Size = 2887680
Sketch Size = 257616
WiFi StationAP Mac Address = 18:FE:34:##:##:##
WiFi SoftAP Mac Address = 1A:FE:34:##:##:##
Lチカもやってみました。3つ LED を接続しているので、それらを順に点灯する。このスケッチでも、スケッチが246403バイト、グローバル変数が32240バイト使われる。スタートアップ処理部分が大きいのね。
void setup() {
// put your setup code here, to run once:
pinMode(16, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(16, 1);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(4, 0);
delay(500);
digitalWrite(4, 1);
digitalWrite(5, 0);
delay(500);
digitalWrite(5, 1);
digitalWrite(16, 0);
delay(500);
digitalWrite(16, 1);
}
とりあえず使えるようになりました。いろいろ遊んでみたいと思います。