mbedでwifiが使ってみたいと思います。
mbedデバイスとしてはFRDM-K64Fを、wifiとしてはESP-WROOM-02 Wi-Fi シールドを使います。
ESP-WROOM-02 Shieldのfirmwareを上書きして、mbedデバイスで利用できるようにします。
ESP-WROOM-02 Wi-Fi シールドのfirmwareを書き換え
下記記事を参考に書き換えしました。
ESP-WROOM-02 WiFi シールドのファームウェア書き換え方法
ハマりポイント
上記記事にESP-WROOM-02 Shield の JP1 コネクタに FTDI USBシリアル変換アダプターを接続します。
とありますが、FTDI USBシリアル変換アダプター
として、Arduino ミニ3.3V 5.5V FTDI232用の FT232RL FTDI USB-TTLシリアル アダプタ モジュール を使った場合、esptool.pyでfirmwareをflashに書き込む際に、timeoutする事象が発生しました。
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
esptool.py v1.2.1
Connecting...
Auto-detected Flash size: 32m
Running Cesanta flasher stub...
Writing 225280 @ 0x1000... 35840 (15 %)
A fatal error occurred: Timed out waiting for packet header
調べた結果、使用したFTDI USBシリアル変換アダプター
のHWに依存する問題のようです。(この変換アダプタは、他のデバイスでは普通に使えていたのですが、今回のWifi Shieldのfirmware書き換えには適さないようです)
esptool-ck, esp8266, and FTDI Bug Hunting
対応
実績のあるFTDI USBシリアル変換アダプター
を使うことにしましたが、記事で紹介されているFTDI USBシリアル変換アダプター Rev.2は、現在在庫がなかったので、代わりにFTDI USBシリアル変換アダプターを使うことにしました。
ESP-WROOM-02 Wi-Fi シールドに、当該変換アダプターについて記載があったので、利用実績ありと判断しました。
接続
ということで、FTDI USBシリアル変換アダプターを、ESP-WROOM-02 Wi-Fi シールドに接続しました。
fireware書き換え
上述の記事のサンプルコードを参考にスクリプトを用意しました。device fileは実際に自分の環境で認識されたものを使います。
#!/bin/sh
port="/dev/tty.usbserial-A105GSPH"
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."
上記スクリプトを実行し、下記のように実行完了しました。
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
が表示された後、ESP-WROOM-02 Wi-Fi シールドのFLASH
ボタンを押したままRESET
ボタンを押して、ボタンを離します。そして、PCのENTERキーをクリックします。
$ ./fw_update.sh
Updating ESP-WROOM-02 Shield ESP8266 firmware (port: /dev/tty.usbserial-A105GSPH )
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
esptool.py v1.2.1
Connecting...
Auto-detected Flash size: 32m
Running Cesanta flasher stub...
Flash params set to 0x0040
Writing 4096 @ 0x0... 4096 (100 %)
Wrote 4096 bytes at 0x0 in 0.4 seconds (85.7 kbit/s)...
Leaving...
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
esptool.py v1.2.1
Connecting...
Auto-detected Flash size: 32m
Running Cesanta flasher stub...
Writing 225280 @ 0x1000... 225280 (100 %)
Wrote 225280 bytes at 0x1000 in 19.6 seconds (92.2 kbit/s)...
Leaving...
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
esptool.py v1.2.1
Connecting...
Auto-detected Flash size: 32m
Running Cesanta flasher stub...
Writing 4096 @ 0x3fc000... 4096 (100 %)
Wrote 4096 bytes at 0x3fc000 in 0.4 seconds (85.6 kbit/s)...
Leaving...
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
esptool.py v1.2.1
Connecting...
Auto-detected Flash size: 32m
Running Cesanta flasher stub...
Writing 4096 @ 0xfe000... 4096 (100 %)
Wrote 4096 bytes at 0xfe000 in 0.4 seconds (85.6 kbit/s)...
Leaving...
Reset with flash mode (IO0 = Low). Press [Enter] key to continue.
esptool.py v1.2.1
Connecting...
Auto-detected Flash size: 32m
Running Cesanta flasher stub...
Writing 4096 @ 0x3fe000... 4096 (100 %)
Wrote 4096 bytes at 0x3fe000 in 0.4 seconds (85.4 kbit/s)...
Leaving...
Update completed.
参考
別の記事では、mbedをUSB-シリアル変換として利用する手順もありましたが、こちらは、未確認です。
https://developer.mbed.org/teams/ESP8266/wiki/Firmware-Update