エラー発生
ESP8266で以下のような回路を作製しました。すべてのGPIOにLEDがつながっています。
SW1 ON でリセット時
- FLASH Boot IO0 HIGH, IO15 LOW
- FLASH Burn IO0 LOW, IO15 LOW
の条件がありますので、SW2 とIO15 のpull downが付いています。
書込みエラー
Arduino IDEからプログラムの書込みを行おうとすると以下エラーになってしまいます。
2.6
esptool.py v2.6
Serial port COM7
Connecting........_____....._____....._____....._____....._____....._____.....____Traceback (most recent call last):
File "C:\Users\username\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2/tools/upload.py", line 25, in <module>
esptool.main(fakeargs)
File "C:/Users/username/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool\esptool.py", line 2653, in main
esp.connect(args.before)
File "C:/Users/username/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool\esptool.py", line 468, in connect
raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
_
シリアルポート「_
」が選択されていますが、そのポートは存在しないか、ボードが接続されていません。
解決方法
ESP8266 Hardware User Guideのp.34にFLASH Burn の書き込む手順が書かれています。
By default the Flash is empty. Therefore, the following procedures should be followed when you
burn the programs into the Flash:
• Before burning, set the module to work under UART Download mode;
• Pull IO15 and IO0 to low-voltage level, leave IO2 dangled;
ポイントは、leave IO2 dangled、すなわちIO2をオープンにしておかないといけないのです。その結果、IO2にスイッチSW3 を入れることで書き込めるようになりました。書込み時はSW3=OFF です。通常のFLash Boot の時はSW3=ON です。
ただし、IO2はSW3pull upしています。SW3=ONの時、pull upが無いと起動がされない場合があります。
After burning the programs into Flash, pull down IO15 to low-voltage level, keep IO2 dangled,
and pull up IO0 to high-voltage level. The module is then shifted from UART Download mode to
the Flash Boot mode;
とありますので、IO2 をBoot してからつなぐことでも動作します。しかし、リセット後で、IO2を自動的につなぐのが難しそうなので、pull up でごまかしてしまいました。