NodeMCUが書き込みできなくなった件

経緯

  1. OLED0.96_Screen_V2.ino をコピーして、NodeMCU_OLED0.96_Screen_V2.ino として新規保存した。
  2. V2を外付けOLED用に変更した。
    OLED配線は SCL=D1(GPIO5), SDA=D2(GPIO4)。
  3. D2をOLEDのSDAに使うため、V2のボタン入力は衝突回避で D7(GPIO13) に変更した。
  4. OLED0.96_Screen_V1.ino もコピーして、NodeMCU_OLED0.96_Screen_V1.ino として新規保存した。
  5. V1も外付けOLED用に変更した。
    OLED配線は SCL=D1(GPIO5), SDA=D2(GPIO4)。

書き込みエラー
発生していたエラー:

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

最初はUSBケーブル、COMポート、ボード設定、外部配線、FLASHボタン、Upload Speedなどを確認したが改善しなかった。

切り分け
74880 baudでRSTログを確認したところ、最初は次の表示だった。

boot mode:(3,6)

これは通常起動モードで、書き込みモードではなかった。

その後、D3(GPIO0) を GND に接続してRSTしたところ、

boot mode:(1,6)

になった。

これはESP8266が書き込みモードに入った状態。

原因
NodeMCU本体は壊れていなかった。
原因は、ESP8266が自動で書き込みモードに入れていなかったこと。

可能性としては、

FLASHボタンが効きにくい GPIO0周りの接触/回路の問題 自動リセット/自動書き込み回路がうまく動いていない

あたり。

解決方法
書き込み時は手動で書き込みモードに入れる。

D3(GPIO0) → GND に接続 RSTを押して離す boot mode:(1,6) を確認 Arduino IDEでアップロード 書き込み完了後、D3-GNDを外す RSTを押して通常起動

これで書き込みできるようになった。

最終配線
外付けOLED:

OLED SCL → NodeMCU D1 / GPIO5 OLED SDA → NodeMCU D2 / GPIO4 OLED VCC → 3.3V OLED GND → GND

V2のボタン:

ボタン片側 → NodeMCU D7 / GPIO13 ボタンもう片側 → GND

V1はOLEDのI2Cピン変更のみ。

zero

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です