ESP-WROOM-02 WiFi シールドのファームウェア書き換え方法

mbedで公開されているESP8266用のドライバは、ESP-WROOM-02 WiFi シールドに書き込まれているファームウェアとは互換性が無いため、mbed-os-example-client などのサンプルコードはそのままでは動作しません。 ここでは、互換性のあるファームウェアに書き換える方法を説明します。

参考にした情報は、以下のサイトです。


ESP-WROOM-02をATモードで使う方法・および周辺情報の解説
http://trac.switch-science.com/wiki/ESP-WROOM-02_AT
ESP8266 Firmware Update
https://developer.mbed.org/teams/ESP8266/wiki/Firmware-Update

手順

使用するファームウェアは、GitHubに登録されている esp8266_at ですが、boot 用のバイナリのみ、boot_v1.1.bin ではなく、Non OS SDK v2.0 に含まれている boot_v1.6.bin を使用しました。

ESP-WROOM-02 Shield の JP1 コネクタに FTDI USBシリアル変換アダプターを接続します。PC/Mac とは、USBケーブルで接続します。

https://www.switch-science.com/catalog/2782/

Information

ESP-WROOM-02 WiFiシールド上のSW/HW 切り替えスライドスイッチSW3は、HW側に設定してください。

以下のスクリプトで、ファームウェアをアップデートします。個々のバイナリの書き込み開始時に シールド上の FLASH ボタンを押しながら RESET ボタンを押して放します。

fw_update.sh

#!/bin/sh
port="/dev/tty.usbserial-DJ00LQLZ"

echo "Updating ESP-WROOM-02 Shield ESP8266 firmware (port:" $port ")"

read -p "Reset with flash mode (IO0 = Low). Press [Enter] key to continue."
esptool.py -p $port -b 115200 write_flash 0x00000 ./boot_v1.6.bin

read -p "Reset with flash mode (IO0 = Low). Press [Enter] key to continue."
esptool.py -p $port -b 115200 write_flash 0x01000 ./user1.bin

read -p "Reset with flash mode (IO0 = Low). Press [Enter] key to continue."
esptool.py -p $port -b 115200 write_flash 0x3fc000 ./esp_init_data_default.bin

read -p "Reset with flash mode (IO0 = Low). Press [Enter] key to continue."
esptool.py -p $port -b 115200 write_flash 0xfe000 ./blank.bin

read -p "Reset with flash mode (IO0 = Low). Press [Enter] key to continue."
esptool.py -p $port -b 115200 write_flash 0x3fe000 ./blank.bin

echo "Update completed."

Information

書き込み時に以下のエラーメッセージが表示される場合があります。

A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header

ESP8266ではリセット信号によるリセット処理が完全に行われないケースがあり、書き込みモードに遷移せずにタイムアウトエラーが起きることがあります。

回避方法としては、リセットを促すメッセージが表示されたら、USBケーブルを抜き差ししてパワーオンリセットを行ってください(USBケーブルを挿すタイミングで、FLASHボタンを押してください)。


Please log in to post comments.