ESP32 ( ESP-WROOM-32 , M5stack )自分的 トラブルシューティング まとめ

記事公開日:2018年2月1日
最終修正日:2018年7月14日

ここでは、ESP32 ( ESP-WROOM-32 ) を開発する上で、私が個人的に遭遇したトラブルや、コメント投稿欄から頂戴したトラブルの対策方法をまとめてみました。
あくまで個人的なまとめで、Espressif Systems 社の公式見解ではありません。

主に Arduino core for the ESP32 を対象にしていて、ESP-IDF については、ほんのちょっと扱っています。

私はアマチュア電子工作家で、無知による誤りや、勘違い等があるかも知れません。
もし、何かありましたらコメント投稿等でご連絡いただけるとありがたいです。

なお、ここに書かれている対策を施しても、動作を保証するものではありません。
GitHub の Arduino core for the ESP32 や、ESP-IDF は頻繁に更新されていて、最新版にアップデートすると、うまく動作しないことが多々あります。
対策が分かり次第、できるだけこの記事も修正していきたいと思っています。

因みに、私は Windows パソコンしか持ち合わせておりません。
以下、Windows 10 の場合で説明します。
MAC 使いの方、ゴメンナサイ・・・。

スポンサーリンク

※2018/06/28以降更新されたArduino-ESP32では大幅な変更がありました。
以下の記事を参照してください。
Arduino – ESP32 大幅更新( 2018/06/28以降 )と I2C 不具合解決、その他気付いたこと
上手く動かない場合は、2018/06/24版を使って下さい。
旧バージョンのインストール方法は以下の記事を参照してください。

旧バージョン Arduino – ESP32 のインストール方法
(2018/07/07)

    【目次】

  1. ESP32 ( ESP-WROOM-32 ) がまったく反応しない
  2. Arduino core for the ESP32 がインストールできない
  3. Arduino – ESP32 のコンパイル中で、ウィルス検出ソフトが gen.esp32part.exe ファイルを弾いてしまう
  4. SPIFFS アップローダープラグインでファイルをアップロードできない(その1)
  5. SPIFFS アップローダープラグインでファイルをアップロードできない(その2)
  6. SPIFFS アップローダープラグインでファイルをアップロードできない(その3)
  7. SPIFFS アップローダープラグインで正常にファイルをアップロードできたのに、ファイルの読み込み不具合
  8. SPIFFS フラッシュメモリ内のデータが、正常に読み取らなくなってしまった
  9. 今まで問題無かったのに、急にWi-Fi に繋がらなくなった
    (2018/06/07更新)
  10. エラーや警告が全く出ないのに、プログラムが動かない
  11. Arduino – ESP32 でコンパイルした時に、コンパイラメッセージ欄に「libraries\BLE に、無効なライブラリ」と表示される場合の対処法
  12. A fatal error occurred: Timed out waiting for packet content または Timed out waiting for packet header というメッセージが出て、コンパイルできない
    (2018/06/23更新)
  13. A fatal error occurred: Invalid head of packet (‘F’) とメッセージが出て、コンパイルできない
  14. 「○○.h」に対して複数のライブラリが見つかりました。というメッセージが出て、コンパイルできない
  15. 最新版 Arduino – ESP32 をインストールしたら、うまく動作しない(旧バージョンのインストール方法)
  16. WEB上のスケッチ(プログラム)コピーして、Arduino IDE に貼り付けたのに、うまく動作しない
  17. WiFi ライブラリを使って Web から記事やデータを取得できていたのに、急に取得できなくなった
  18. バージョンアップしたライブラリがインストールできない
  19. ESP32 の MAC アドレスを知りたい
  20. ESP-WROOM-32 開発ボードの USB-シリアルによるスケッチコンパイル書き込みが、1回目は必ず失敗する
  21. Arduino – ESP32 のマルチタスク動作で、シリアルモニターに The following tasks did not reset the watchdog in time というメッセージが表示される
  22. ESP-IDF のmsys ウィンドウで、CDコマンドが効かない。path設定がおかしい。動作が重いなど
  23. WebSocket 通信ができない
  24. SDカードスロットのSPI接続で、GPIOピンが変更できない
  25. Arduino – ESP32 で CPUフル稼働しながら、 Wi-Fi機能だけOFFにして消費電力を抑えたい
  26. I2C通信( Wireライブラリ使用)で、すぐに通信エラーになる
      (2018/07/07更新)
  27. ESP32 ( ESP-WROOM-32 )の電源が急に落ち、再起動する
  28. Arduino-ESP32でコンパイルしたら、collect2.exe: error というエラーが出た
  29. Arduino-ESP32でシリアルモニター出力中に謎のリセット(再起動)してしまう。
    (2018/07/11追加)
  30. Arduino-ESP32でシリアルモニター出力中に Guru Meditation Error: Core 0 panic’ed と表示され、強制リセット(再起動)してしまう。
    (2018/07/14追加)
  31. M5Stack でUSBポート(USBシリアル COMポート)が認識しない
    (2018/07/12追加)
  32. WiFi(Wi-Fi)の再接続が上手くいかない。Webサイトへの再接続がうまくいかない。または、WiFi接続できない
    (2018/07/14追加)

●ESP8266 ( ESP-WROOM-02 ) のトラブルシューティングについてはこちらを参照

1.ESP32 ( ESP-WROOM-32 ) がまったく反応しない

ESP32 ( ESP-WROOM-32 ) で、開発ボードを使わずに、電源周りを自作して 3.3V を供給していたり、開発ボードを使用していても、非力なUSB電源を使用したり、電圧管理が不十分なバッテリーを使用した場合には、ESP32 の CPU が破損する場合があります。

原因

ESP32 ( ESP-WROOM-32 ) は、電源投入時やリセット時、および Wi-Fi 通信時に大きな電力を消費します。
通常 Wi-Fi 待機時は常時 160mA 、Wi-Fiアクセス時 300mA、リセット時に瞬時 600mA くらいです。

電源投入時の突入電流は、場合によっては 2A を超える時があります。

ESP32 がその大電流を吸い込んだ時に、回路が瞬時に電圧降下して、CPU の動作保証電圧を下回ってしまう場合があります。
ESP32 の CPU 動作時に 2.3 V を下回ることを繰り返すと、CPU に重大な故障を引き起こすことがあります。
2.3 V以上でも故障する場合があるという情報もあります。

また、粗悪で細い USB ケーブルを使っていたり、電源供給が貧弱な USB ハブを使っていると、ESP32 の瞬時の大電流吸い込み時に電圧降下が起きて、5V電圧が予想外に低下していることがあります。
その結果、ESP32 に供給する 3.3V ライン電圧も低下してしまうことがあります。

ESP32 起動時に最も大きな電流を必要とするので、起動時に最低動作電圧付近の 2.3V よりも降下して、起動に失敗するとウンともスンとも言わなくなります。
ファームウェアを再インストールし直して動作したとして、うまく起動できたとしても、そういうことを3回以上繰り返すと2度と起動しなくなることがるようです。

対策

まず、最低限の対策として、ESP32-DevKitC や ESPr Developer 32 等の開発ボードとパソコンを接続している USB ケーブルをできるだけ短く太い良質のケーブルに交換してください。
1mより長いとトラブルの元になるので要注意です。
そして、USBハブは使用しないでください

次に、バッテリー使用時は特に注意する必要があります。
瞬時電圧降下を起こさない回路設計が必要です。
できるだけ、一瞬でも 3.0 V を下回らない設計が理想ですが、せめて 2.8V くらいに抑えたいですね。

単純にコンデンサ容量を大きくすることは、意味がありませんし、逆に故障の原因になります。
瞬時の電圧降下に高速で応答して、電圧を補填できる回路が必要です。
高速応答 LDO ( ロードロップアウト電圧レギュレーター ) と、セラミックコンデンサをうまく使用しなければなりません。

瞬間の電圧降下を観察するには、100MHz 以上のできるだけ高性能のオシロスコープで見ないと発見できないので要注意です。
これについては以下の記事を参照してください。

●ESP-WROOM-32 ( ESP32 )の消費電流を電流プローブ無しで測定してみました
●ESP-WROOM-32 (ESP32) の 電流 測定 その2
●ESP-WROOM-32 ( ESP32 ) のUSB電源突入電流(インラッシュカレント)を考える
●ESP-WROOM-32 ( ESP32 ) の保護機能付き電源強化対策の実験

また、開発ボードでも、LDO が貧弱なものがありますので、同じく ESP32 破損の可能性があります。
開発ボードだからと言って安心しないでください。
意外と電圧降下が発生しています。

突入電流対策を施していない場合、パソコンのUSBポートや、その他電源にダメージを与える可能性がありますので要注意です。
特に、安物の開発ボードの場合は、LDO周りの回路をよく調べて使用した方が良いです。

いろいろある開発ボードの中では、突入電流対策用に電圧上昇ソフトスタート機能があるチップを採用した、スイッチサイエンスさんの ESPr Developer 32 を個人的にお勧めします。

これについては、以下の記事を参照してください。

ESPr Developer 32 ( スイッチサイエンス製 ) を使ってみました

2.Arduino core for the ESP32 がインストールできない

Windows の場合で説明します。

以下の記事、
Arduino core for the ESP32 のインストール方法

にあるような方法で、Arduino IDE に Arduino core for the ESP32 をインストールしようとすると、get.exe が実行できない場合があります。

原因

get.exe を実行すると、インターネットに接続して、コンパイラなどの toolchain をダウンロードしてきます。
その時に、ウィルスチェックソフト等のセキュリティーソフトが検出して、get.exe や esptool.exe を強制削除してしまうことがあります。

また、get.exe を実行する際、管理者権限で実行していないとインストールできない場合があります。

対策

まず、Windows10 の場合、get.exe を実行する場合は、そのファイルを右クリックして、「管理者として実行」をクリックしてください。

それでもダメな場合は、ウィルスチェックソフトや、セキュリティーソフトのファイアウォール設定で、get.exe や esptool.exe などの必要なファイルの動作を「許可」します。
ただ、このファイルが本当に安全なのかは私には分かりません。
それは、Espressif systems 社に問合せてください。
あとは、自己責任で動作させるのみです。

もし、解除できないのならば、このファイルのチェックを解除するようにウィルスチェックソフトメーカーに問合せてみてください。
メーカーによっては、そのファイルを解析してくれることがあります。

3.Arduino – ESP32 のコンパイル中で、ウィルス検出ソフトが gen.esp32part.exe ファイルを弾いてしまう

Norton などのウィルス検出ソフトで、Arduino core for ESP32 のコンパイル実行関連ファイルである、gen.esp32part.exe を検出してしまうことがあります。

原因

Arduino core for the ESP32 は、Arduino IDE でコンパイルする時にインターネットにアクセスしているようです。

Arduino core for the ESP32 は、まだまだ発展途上で完成されておらず、様々な実行ファイルが日々更新されています。
シマンテックなどのセキュリティーソフト会社がファイルの安全性検証などを把握し切れていませんので、検出されてしまうことがあります。

対策

ウィルス検出セキュリティーソフトのファイアウォール設定で、gen.esp32part.exe ファイルを「許可」設定にするしかありません。
ただし、このファイルが本当に安全かどうかは私には分かりません。
しかし、それが実行できないと、Arduino で ESP32 開発はできませんので、個人の責任において実施してみてください。

スポンサーリンク


mgo-tec電子工作 関連コンテンツ ( 広告含む )

投稿者:

mgo-tec

Arduino , ESP32 ( ESP-WROOM-32 ) , ESP8266 ( ESP-WROOM-02 )等を使って、主にスマホと連携した電子工作やプログラミング記事を書いてます。ライブラリも作ったりしてます。趣味、独学でやってますので、動作保証はしません。 電子回路やプログラミングの専門家ではありません。 畑違いの仕事をしていて、介護にドップリ浸かりそうな年配者です。 少しだけ電気の知識が必要な仕事なので、電気工事士や工事担任者等の資格は持っています。

「ESP32 ( ESP-WROOM-32 , M5stack )自分的 トラブルシューティング まとめ」への6件のフィードバック

  1. mgo-tecさん、H.Wです。
    本件記事中の’ESP32トラブルシューティング’の件で、以下ご教示下さい。

    M5stackで当初からスケッチの書込み時に’connecting…—…—…’が永遠に継続し、取りあえずその対処方法として、BOTTOM基板コネクタのRSTとGND間に1.5〜3.3μFのコンデンサを挿入し、この対処法で1ヶ月程継続対応して特に問題なかったのですが、ー昨日、スケッチ書込み時に突然画面が消え、その後リセットを何度繰り返しても全く再起動しなくなってしまいました。。。

    考えられる原因として、BOTTOM基盤の勘合が当初から多少緩く、接触不良or外れていた可能性があります。また、例のマグネット式USBケーブルの接触不良で書込み時の電圧が低下していた可能性もあります。

    目下、購入元のスイッチサイエンスにもこれ迄の経緯も含め、その旨対処方法を問い合わせ中ですが、目下のところ回答が貰えていません…

    この様な状態になってしまったら、ファームウェアを書き直す以外に方法はないのでしょうか?
    またファームウェアを書き直す場合、具体的な手順はどうしたらいいのでしょうか?

    ご多忙中、誠に申し訳ありませんが、ご教示頂けると幸いです。

    1. H.Wさん

      それはそれは面倒なことになりましたね。
      私にも正直分かりませんが、H.Wさんがおそらくおっしゃる通り、スケッチ書き込み中に電源が落ちたということは、ファームが壊れた可能性大ですね。
      粗悪 USB ケーブルは思いのほかインピーダンスが高く、瞬時大電流で思いのほか電圧降下するので、それが原因の可能性もありますね。
      ファームの書き換え方法については私はよく知りませんが、ネットでは情報が沢山あると思います。
      早く治って欲しいですね。

      因みに、私の M5stack で Windows10 環境の場合、最近はUSB書込みに苦労することはありませんでした。
      もしかしたら、H.W さんの今までの書き込み不良はUSBケーブルだったということも考えらそうな気がします。

      ということで、あまりお役に立てる回答ができず申し訳ございません。

  2. mgo-tecさん、
    早速のご連絡有難うございます。

    実は諸般の事情から、IDE用の基幹PCはWindows7を使用しており、一応USBシリアルドライバはCP2104の最新版とはなっていますが、スケッチ書込が上手く行かない主原因はこの環境のせいではないかと思っています。

    尚、ESP32のファームウェア書込みツール(flash_download_tooles_v3.6.4_0)を以前DLしていたことを思い出し、試しにGithubでM5cloud用のfirmwareは直ぐに見つかったので、これを上記ツールで書き込んで起動&リンクさせることはできましたので、少なくともCPUは死んでいないことは確認できました。

    しかし、どういう訳かm5stackの’工場出荷時firmware’が、思い付くリンクの何処をどう探しても見つかりません。
    (最初に出荷時状態をバックアップしておけばよかったのですが、それを怠ったことが悔やまれます。。。)

    尚、スイッチサイエンス側からは未だ回答がなく、どうも技術的なサポートはされない様なのでちょっと期待薄です。

    もし、工場出荷時firmwareの所在情報等でご存知な事がありましたら、宜しくお願い致します。

    1. 申し訳ございませんが、ファームのある場所は知りません。

      私の場合は、ESP32が起動しなくなった時、ファームを書き替えた経験はありませんので、やり方を知りません。
      私は、以下の記事
      ESP32 ( ESP-WROOM-32 , M5stack )自分的 トラブルシューティング まとめ
      の、9番項目の「原因その2」に書いてあるように、Flash の NVS領域を初期化して、最新版 Arduino – ESP32 を入れ直したら、いつの間にか起動できるようになっていた経験があります。
      あまり参考にならないかも知れません。

  3. mgo-tecさん、
    ご多忙中、煩わしい問い合わせをしてしまい誠に申し訳ありません。

    取りあえずCPUが無事だったことは分かり、M5Cloudのfirmware導入でWeb上のIDEを経由してMicroPythonでプロジェクトが組めたり、既にご存知かもしれませんが、microSDに保存された複数のアプリを自由に切り替えて実行できる、’M5stack_MultiApp_Advance_Firmware’なる素晴しいファームがUPされている事も発見できましたので、結果オーライといったところです。
    (これで必ずしも元のfirmwareが必要ということは無くなりました。。。)

    尚、その後ハード面ではPROTO基板を手に入れ、
    1)RSTとGND間に電解コン(3.3μF)を追加。
    (多少容量が大きいですが、手元に実装できる小型コンデンサがこれしか無かったのと、経時変化で容量が最悪半減するだろう事を想定して良しとしました。)
    2)手持ちのLipo電池(860mAh)を裏側に追加。
    (並列接続するのはあまり良くないとされてますが、BOTTOM基板に実装されてる150mAhと合せて1100mAhまで増量。これで、5時間以上の連続動作が可能となりました。。。)
    3)バッテリーモニタ回路を追加。
    小型LED、チップTr(2SC2712)、チップ抵抗(470, 10k)、半固定ボリューム(5k)で回路を組み、本体側の既存穴からモニターできるようにしました。
    (Lipo電池が3.3Vまで低下したらLEDが消えるように、BE間のボリュームで輝度を微調整。尚、使用しない時は完全消灯できる様に小型SWも一応実装。)

    しかしながら、PROTO基板は高さ制約が厳しく、実質チップ部品でないと、自由な配置の回路実装はかなり難しいですね…

    1. H.Wさん

      いえいえ、あまりお役に立てずスミマセン。
      私も思っていたのですが、必ずしも工場出荷時のファームは必要ないと思っています。
      ですから公開しているサイトが無いんでしょうね。
      CPUやその他の回路が生きてさえいれば、Arduinoスケッチが流し込めるのではないかと、個人的に勝手に思っています。

      バッテリーモニタはイイですね。
      私もいつかバッテリー監視ICで回路を組んで、マウントしたいと思っていました。
      というか、M5StackにはそのICが積まれているので、データシートを見れば、どこかにバッテリーモニター出力がありそうな気がします。

      ということで、いつもコメントありがとうございます。
      なにか面白いものができるといいですね。

コメントを残す

メールアドレスが公開されることはありません。

*画像の文字を入力してください。(スパム防止の為)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください