モチログ

はてなでのブログ

ESP-WROOM-02のファームウェア書き換え on MAC

ESP-WROOM-02が流行っているようなので、試しに使ってみたけど、案の定色々躓いたのでそのメモ。 21352682501_e5a2e19b18_m

使用したパーツ

  • ESP-WROOM-02(秋月で550円で購入)
  • ESP-WROOM-02ブレークアウトボード(aitendoで120円で購入)
  • 10KΩの抵抗x5
  • タクトスイッチ2個(無くてもできる)
  • ブレットボード適宜
  • FT234X UART接続用(秋月で600円で購入)
  • 3.3Vブレットボード電源モジュール(こちらを使用)

ちなみに秋月でESP-WROOM-02を買って、その後aitendoでブレークアウトボードを買いに行ったら、セールでESP-WROOM-02が500円だった……   電源は3.3V3端子レギュレーターを使ってFT234Xの5Vを変換しても良いと思われる。持ってなかったので、手持ちのものを使用した。

使用したソフト

  • シリアル通信用のソフト:CoolTerm

WindowsではTeraTerm Pro派だけど、Macではシリアル通信を使っていなかったので良いツールを今回しらべてみた。
Screenコマンドでターミナルから使うという手もあったけど、ファームウェア書き換え失敗時のエラーメッセージが文字化けしたり、接続が落ちたりした後の接続が不安定になったりしたのでやめた。 SerialToolsというのを最初に試したが、Disconnect時やボードレート変更時に50%位の確立でアプリが落ちるのでやめた。
現状CoolTermが良かった。

ESP-WROOM-02の接続

基本的に参考にしたサイト1に従って接続。ただし、LCDに接続しないので、AE AQM0802の部分には接続せず。
UART接続なので、TXDとRXD、RXDとTXDを接続するのに、何も考えず適当に接続してたので、TXDとTXD, RXDとRXDを接続しててびっくりした。
ちゃんと確認しよう。

ファームウェアの書き換え

ESP-WROOM-02について調べているときに、どこかにファームウェアが古いとwifiが不安定という記述を見て、ファームウェアを書き換えたいと思ったので、まずファームウェアを書き換える事にした。 ファームウェアのダウンロードはここに最新のバージョンが載せられている。今回は1.3.0_15_08_08を使用した。 書き換えツールはここからgit cloneした。

$ git clone https://github.com/themadinventor/esptool
$ cd esptool
$ python setup.py install

なんか関係のあるライブラリもインストールしてくれるみたい。ただ、esptool.pyがパスのあるところにコピーされているようにみえるけど、うまく実行されなかったので、コマンド打つ場所にコピーして使った。 ファームウェアのzipファイルを解凍し、esp_iot_sdk_v1.3.0/binにesptool.pyをコピー。

$ cp esptool.py ../esp_iot_sdk_v1.3.0/bin

上記esp_iot_sdkのパスは適宜置き換えて。 あとはESP-WROOM-02ファームウェア書き換えモードにして、ファームウェア書き換えのコマンドを打てば書き換えができる。 ファームウェア書き換えモードの仕方は参考にしたサイト1にあるように、SW1をおしながらSW2を押し、SW1をおしたまま、SW2を放します。その後SW1も放して大丈夫です。 これでファームウェア書き換えモードになっているので、ファームウェア書き換えコマンドを打ってファームウェアを書き換えます。2つ目のコマンドは長いですが、1行です。

$ cd ../esp_iot_sdk_v1.3.0/bin
$ ./esptool.py -p /dev/tty.各自のデバイス名に置き換えてください write_flash -ff 26m -fm qio -fs 32m 0x00000 boot_v1.4(b1).bin 0x01000 at/user1.1024.new.2.bin 0x7e000 blank.bin 0xfe000 blank.bin

下記メッセージが出たら、書き換えは成功しているはずです。

Connecting...
Erasing flash...
Wrote 3072 bytes at 0x00000000 in 0.3 seconds (73.2 kbit/s)...
Erasing flash...
Wrote 263168 bytes at 0x00001000 in 28.8 seconds (73.2 kbit/s)...
Erasing flash...
Wrote 4096 bytes at 0x0007e000 in 0.4 seconds (75.9 kbit/s)...
Erasing flash...
Wrote 4096 bytes at 0x000fe000 in 0.4 seconds (75.9 kbit/s)...

Leaving...

/dev/tty.以下は各自のデバイス名に置き換えてください。 FT234X向けのFTDIドライバはApple純正(最初から入っている)と、FTDI公式のがあるようです。一応FTDI公式のページからMac OSX 10.9 and aboveの2.3をダウンロードしてインストール、再起動をしています。OSX 10.10.5 (Yosemite)で行っています。古いOSXの場合、もしかするとApple純正ドライバを無効にする必要があるかもしれません。 また、書き換えのコマンドですが、最初下記コマンドでやっていたのですが、この後のATコマンドのテストの時にうまくいきませんでした(Fatal Exception(28)が延々と表示される)

$ ./esptool.py -p /dev/tty.各自のデバイス名に置き換えてください write_flash 0x00000 boot_v1.4(b1).bin 0x01000 at/user1.1024.new.2.bin 0x7e000 blank.bin 0xfe000 blank.bin

ATコマンドのテスト

CoolTermを使います。起動したらまずOptionsから下記設定にします。

  • Serial Port
    ** Port: 各自のシリアルデバイスを選択
    ** Baudrate: 115200
    ** Data Bits: 8
    ** Parity: none
    ** Stop Bits: 1
    ** あとはデフォルトのまま
  • Terminal
    ** Terminal Mode: Line Mode (Raw Modeでも良いですが、Line Modeだとコマンド入力失敗したときにBSで修正出来るのでこちらを使っています)
    ** Enter Key Emulaton: CR+LF
    ** あとはデフォルトのまま
  • 他はデフォルトのまま

設定ができたらConnectボタンを押して、AT+GMR を打ってファームウェアのバージョン情報と"OK"が出たら成功です。

参考にしたサイト3のコマンドを参考に、家のwifiルーターに接続してみました。

AT+CWMODE=3
AT+RST
AT+CWJAP="SSID","password"

下記メッセージが出たら成功していると思われます。

WIFI CONNECTED
WIFI GOT IP
OK

IPアドレスMACアドレスの確認

AT+CIFSR

参考にしたサイト

  1. Qiita - ESP-WROOM-02 の Arduino 環境で I2C 制御
  2. Natural Days - ESP-WROOM-02使ってみる
  3. junpwire.io - ESP8266 ATコマンド一覧