【ESP32】DOIT ESP32 DEVKIT V1 互換ボードへの書き込み方法

  • 投稿 : 2018-12-03
  • 更新 : 2018-12-25

本記事は広告およびアフィリエイトプログラムによる収益を得ています

・Windows 10 (1809)
・Arduino 1.8.7
Amazon:KKHMF ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetooth デュアルコアCPU低消費電力

上記で確認してますが、互換ボードならほぼ同じかと思います。

設定の確認

Windows 10 (1809)で確認しました2018年8月から、導入方法が簡単になったArduinoIDEを用いた開発のセットアップ手順(Windows) (2018/8月から

お部屋でモバイル

ボード:DOIT ESP32 DEVKIT V1
UploadSpeed :921600bps
シリアルポート:Windowsのデバイスマネージャーで確認したもの

この3つを正しそうな値にしてください。

ボードにステッチを書き込む

初心者なので、どれがボードに直接書き込むメニューかわからなかったのですが・・。

「スケッチ」=>「マイコンボードに書き込む」が正解のようです。これを選ぶと、スケッチ(プログラム)のコンパイルから転送までやってくれます。

DOIT ESP32 DEVKIT V1 互換ボード特有の話

esptool.py v2.3.1
Connecting ......._____.

この文字が出てきたタイミングで、開発ボード側の「BOOT」というスイッチを押します。押し続けた状態で、画面が流れたら、ボタンを離します。

うまくいかない場合は、いったんBOOTボタンを離して、再度、押し続けるとよいみたいです。

うまくいくと、こんな感じで画面が流れて行って、書き込み成功して、スケッチが実行されます。

「esptool.py」というのが書き込みアプリのようです。

エラー時

Connecting........_____....._____....._____....._____....._____....._____....._____....._____....._____.....____スケッチの書き込み中にエラーが発生しました
_

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

BOOTボタンを押さないときは、何回かリトライを繰り返した後、上記のようなエラーになるかと思います。

補足

BOOTボタンを押さないと書き込めないのは、「DOIT ESP32 DEVKIT V1」の仕様のようです。

Amazonのレビューやブログ記事では、「EN端子とGND端子に0.1μFのコンデンサーを挟むと自動で書き込まれる」ようです。

問題は USB経由だとUARTの制御線(RTSやDTR)をあまり高速に変化させることができないということです。制御線を変化させるには、USBにパケットを送出する必要があるので、高速にはできないのです。RTSがENに、DTRがIO0に直結されていれば、時間がかかってもDTRをLowにしたあとRTSをHiにすればいいのですが、上の回路を介しているためDTR=RTS=Lowの期間はEN=IO0=Hiになってしまいます。


こんな波形だと、プログラム書込みモードに入れることの方が不思議ですが、ENの立ち上がりでIO0の状態を見ているわけではなく、ENの立ち上がり、つまりリセットの解除で動き始めたプログラムが、あるタイミングでIO0の状態を取り込んでいるのではないかと想像しています。ESP8266で問題が起きなかった回路がESP32になり、処理が高速になり問題が発生したのかもしれません。
ESP32のプログラム書込みを安定させる - Qiita

原因としては、上記の説明がわかりよい気がします。あと、EN端子とGND端子にコンデンサーですが、上記の引用先の方法がはんだ付けしやすそうな気がします。ENボタンのところにもEN端子?が出てるんですね。

結局・・

Windows 10 (1809)Arduino 1.8.7で確認しました失敗?!0.1μFのセラミックコンデンサーをEN-GNDに挿入してみたが、うま

お部屋でモバイル

追記:2018/12/25
結局、0.22μFの電解コンデンサを挿入して利用してます。安定して、自動書き込みできています。

スポンサーリンク