ESP-WROOM-02 (ESP8266) ファームウェアアップデート

# はじめに
今更ですが、眠っていた秋月電子の[ESP-WROOM-02のDIP化キット](https://akizukidenshi.com/catalog/g/gK-09758/ "Ｗｉ－Ｆｉモジュール　ＥＳＰ－ＷＲＯＯＭ－０２　ＤＩＰ化キット")のファームウェアを最終版(2.1.0.0）にアップデートした際の作業内容に記述します。

# 環境
- Windows PC (Wondows 10 Home)
- [FT231X USBシリアル変換モジュール] (https://akizukidenshi.com/catalog/g/gK-06894/ "FT231X USBシリアル変換モジュール")
- ブレッドボード、ジャンパーケーブル
- 3.3V電源（今回は5VのACアダプタからLDOで作成）
- プルアップ、プルダウン用抵抗(3x 10k, 1k)、リセット回路用コンデンサ(0.1uF)

# ソフトウェア
- FLASH_DOWNLOAD_TOOLS（V3.6.3[ESPRESSIF社のForum] (https://www.esp32.com/viewtopic.php?t=60&start=20 "")から）
- ESP8266_NONOS_SDK（V3.0.4 [espressif
/ESP8266_NONOS_SDK] (https://github.com/espressif/ESP8266_NONOS_SDK/releases "espressif
/ESP8266_NONOS_SDK") ）

:::note info
FLASH_DOWNLOAD_TOOLS　V3.9.0だとFlashサイズの選択フィールドがなくなっていて、自動選択になったように思えますが、誤ったサイズで書き込まれる模様で、起動できませんでした
:::

# 配線図

![ESP-WROOM-02-connection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/5aa30351-4295-429b-04a2-3d27ed4d2b05.png)

![ESP-WROOM-2_test_borad.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/6df296ad-6cd3-bfe4-acc5-0101bd3dd944.jpeg)


:::note info
AE-FT231XのRESETはボード上に回路が組まれているので、openで問題ありません
:::

# 起動モード

ESP-WROOM-02は下記のブートストラップピンで起動モードが決まるようです。
USB Programingが書き込みモード、Flash Bootは通常の起動モードです。

| Pin  | USB Programing | Flash Boot |
|:----:|:--------------:|:----------:|
| IO0  | pull-down      | pull-up    |
| IO2  | pull-up        | pull-up    |
| IO15 | pull-down      | pull-down  |

:::note info
IO15は10kΩだとpull-downと認識されないようでしたので、1kΩにしてあります。認識結果は、Flash Boot時の起動ログで確認できます
:::

# 書き込み

1. Flash Download Toolを起動し、ESP8266_NONOS_SDKのbinフォルダにあるバイナリと、書き込みアドレスを設定します
2. FLASH SIZEは16Mbit-C1を指定します（ネットの投稿では、16Mbitフラッシュと32Mbitフラッシュが混じっているとのことで、私の環境では32Mbitの設定では起動できませんでした）
3. COMポートは環境に合わせて設定します 
![ESP-WROOOM-02_FlashWrite2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/f8e2316e-eddc-150a-4c5e-14697fbe386d.png)
4. ESP-WROOM-02に3.3Vを供給し、[スタート]ボタンをクリックします
5. FINISHと表示されれば、書き込み終了です
![ESP-WROOOM-02_FlashWrite3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/54fcfcf2-33a4-8682-8f23-ca32ef76d8c5.png)

# Flashブート

1. ESP-WROOM-02のIO0をpull-upし、3.3Vを入れなおします
2. Teratermなどで、起動ログを表示します
![ESP-WROOM-02_terminal_setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/5eb1f52f-cf48-1b73-2635-2d758fbc88d7.png)<br>
![ESP-WROOM-02_serial_setting_boot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/f3346c0e-d165-bc87-a94b-fde64b1d0af0.png)<br>
**Teraterm出力**
![ESP-WROOOM-02_BootLog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/eaac123b-7357-66f3-33d2-4caa515aa361.png)
3．Teratermなどのボーレートを、通常の設定115200bpsにします
![ESP-WROOM-02_serial_setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/48bc81f7-489a-e38e-1744-662147800da3.png)<br>
4. ATコマンドでバージョンを確認します<br>
![ESP-WROOOM-02_GMR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2096600/ae26f687-feff-d85d-9178-99b145917374.png)

# 参考リンク

- [ESP8266(ESP-WROOM-02) ファームウェア書き換え] (https://blog.bluedeer.net/archives/109)
- [ESP-WROOM-02 (ESP8266) ファームウェアアップデート] (https://qiita.com/spiderx_jp/items/76346db10606b80a6a07)
- [ESP-WROOM-02のATコマンドを復活させる [ファームウェアをアップデート]] (https://www.petitmonte.com/robot/esp_wroom_02_update_firmware.html)
- [ESP-WROOM-02のFlash ROMが4MBから2MBに] (https://mag.switch-science.com/2017/09/26/esp-wroom-02-flash-rom/)