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
手順
- 以下のサイトからファームウェアのバイナリをダウンロードする
https://github.com/espressif/esp8266_at/tree/master/bin - 以下のサイトからSDKをダウンロードする
http://espressif.com/sites/default/files/sdks/esp8266_nonos_sdk_v2.0.0_16_08_10.zip - 以下のサイトから ESPtool python script をダウンロードする(SP8266 Flash Download Tools でも書き込み可能だと思いますが、Macで作業したのでこのスクリプトを使いました)
https://github.com/themadinventor/esptool/
使用するファームウェアは、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.