ここでは、ESP32 ( ESP-WROOM-32 , M5Stack , M5camera )を開発する上で、私が個人的に遭遇したトラブルや、コメント投稿欄から頂戴したトラブルの対策方法をまとめてみました。
あくまで個人的なまとめで、Espressif Systems 社の公式見解ではありません。
主に Arduino core for the ESP32 を対象にしていて、ESP-IDF については、ほんのちょっと扱っています。
私はアマチュア電子工作家で、無知による誤りや、勘違い等があるかも知れません。
もし、何かありましたらコメント投稿等でご連絡いただけるとありがたいです。
なお、ここに書かれている対策を施しても、動作を保証するものではありません。
GitHub の Arduino core for the ESP32 や、ESP-IDF は頻繁に更新されていて、最新版にアップデートすると、うまく動作しないことが多々あります。
対策が分かり次第、できるだけこの記事も修正していきたいと思っています。
因みに、私は Windows パソコンしか持ち合わせておりません。
以下、Windows 10 の場合で説明します。
MAC 使いの方、ゴメンナサイ・・・。
かなり古い情報もあります。
よって、Arduino core for the ESP32 ver 2.0.0以降や新しいハードウェアは対象外で。古いバージョンの対処方法と思って下さい。
- ESP32 ( ESP-WROOM-32 ) がまったく反応しない
- Arduino core for the ESP32 がインストールできない
- Arduino – ESP32 のコンパイル中で、ウィルス検出ソフトが gen.esp32part.exe ファイルを弾いてしまう
- SPIFFS アップローダープラグインでファイルをアップロードできない(その1)
- SPIFFS アップローダープラグインでファイルをアップロードできない(その2)
- SPIFFS アップローダープラグインでファイルをアップロードできない(その3)
- SPIFFS アップローダープラグインで正常にファイルをアップロードできたのに、ファイルの読み込み不具合
- SPIFFS フラッシュメモリ内のデータが、正常に読み取らなくなってしまった
- 今まで問題無かったのに、急にWi-Fi(WiFi) に繋がらなくなった
- エラーや警告が全く出ないのに、プログラムが動かない
- Arduino – ESP32 でコンパイルした時に、コンパイラメッセージ欄に「libraries\BLE に、無効なライブラリ」と表示される場合の対処法
- A fatal error occurred: Timed out waiting for packet content または Timed out waiting for packet header というメッセージが出て、コンパイルできない
- A fatal error occurred: Invalid head of packet (‘F’) とメッセージが出て、コンパイルできない
- 「○○.h」に対して複数のライブラリが見つかりました。というメッセージが出て、コンパイルできない
- 最新版 Arduino – ESP32 をインストールしたら、うまく動作しない(旧バージョンのインストール方法)
- WEB上のスケッチ(プログラム)コピーして、Arduino IDE に貼り付けたのに、うまく動作しない
- WiFi ライブラリを使って Web から記事やデータを取得できていたのに、急に取得できなくなった
- バージョンアップしたライブラリがインストールできない
- ESP32 の MAC アドレスを知りたい
- ESP-WROOM-32 開発ボードの USB-シリアルによるスケッチコンパイル書き込みが、1回目は必ず失敗する
- Arduino – ESP32 のマルチタスク動作で、シリアルモニターに The following tasks did not reset the watchdog in time というメッセージが表示される
- ESP-IDF のmsys ウィンドウで、CDコマンドが効かない。path設定がおかしい。動作が重いなど
- WebSocket 通信ができない
- SDカードスロットのSPI接続で、GPIOピンが変更できない
- Arduino – ESP32 で CPUフル稼働しながら、 Wi-Fi機能だけOFFにして消費電力を抑えたい
- I2C通信( Wireライブラリ使用)で、すぐに通信エラーになる
- ESP32 ( ESP-WROOM-32 )の電源が急に落ち、再起動する
- Arduino-ESP32でコンパイルしたら、collect2.exe: error というエラーが出た
- Arduino-ESP32でシリアルモニター出力中に謎のリセット(再起動)してしまう。またはリセットを繰り返す。
- Arduino-ESP32でシリアルモニター出力中に Guru Meditation Error: Core 0 panic’ed と表示され、強制リセット(再起動)してしまう。
- M5Stack でUSBポート(USBシリアル COMポート)が認識しない
- WiFi(Wi-Fi)の再接続が上手くいかない。Webサイトへの再接続がうまくいかない。または、WiFi接続できない
- Esp Exception Decoder を起動した時、*.elf ファイルが無い、ファイル選択ウィンドウが出る
- 自作ライブラリ ESP32_mgo_tec で「SD.h」、「WiFi.h」に対して複数のライブラリが見つかりました、などのコンパイルエラーが出る
- Web記事取得していて、数時間後に記事取得失敗し、さらに時間が経つと勝手に再起動(リセット)してしまう
- Web記事を複数取得していて、数時間後になぜか最初の一記事だけ取得失敗し、再接続できない
- M5Camera ( M5Stack社 )で、Arduino – ESP32 のサンプルスケッチ CameraWebServer が動かない
- A fatal error occurred: MD5 of file does not match data in flash! というエラーが出る(Arduino core ESP32 でコンパイル書き込み時)
(2021/09/14修正) - コンパイル書き込み後、再起動(リセット)を繰り返してしまう
- コンパイル時に array subscript is above array bounds というエラーが出る
- コンパイル時に jump to case label というエラーが出る
- M5Stack Fireで、PSRAMを有効にしてArduino IDEでコンパイル書き込みすると、シリアルモニターに spiram: SPI SRAM memory test fail というメッセージが出て、PSRAM領域を確保できない。
- Arduino IDEで、sorry, unimplemented: non-trivial designated initializers not supported.というコンパイルエラーが出る
- M5Stack FIRE のWiFi(Wi-Fi)通信で、距離を放すと途切れる。WiFi感度が悪い
- M5Stackでmicro SD(SDHC)カードのデータが読み込まない。LCDに文字が表示されない。
- softAPモードでスマホのブラウザから接続できない
- CORRUPT HEAP: Bad tail at~というエラーメッセージが出て、リセット(再起動)を繰り返す
- A stack overflow in task loopTaskと表示されて延々とリセット(再起動)を繰り返したり、その他謎のリセットを繰り返したりする
- Yahoo RSSサイトやその他Webサイトのデータが取得できなくなった
- M5Stackでボタンが連続で押される状態になる
- Arduino core ESP32でコンパイルしたら、’::ctime’というエラーが出た
(2023/07/26追加)
【目次】
●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さん、H.Wです。
本件記事中の’ESP32トラブルシューティング’の件で、以下ご教示下さい。
M5stackで当初からスケッチの書込み時に’connecting…—…—…’が永遠に継続し、取りあえずその対処方法として、BOTTOM基板コネクタのRSTとGND間に1.5〜3.3μFのコンデンサを挿入し、この対処法で1ヶ月程継続対応して特に問題なかったのですが、ー昨日、スケッチ書込み時に突然画面が消え、その後リセットを何度繰り返しても全く再起動しなくなってしまいました。。。
考えられる原因として、BOTTOM基盤の勘合が当初から多少緩く、接触不良or外れていた可能性があります。また、例のマグネット式USBケーブルの接触不良で書込み時の電圧が低下していた可能性もあります。
目下、購入元のスイッチサイエンスにもこれ迄の経緯も含め、その旨対処方法を問い合わせ中ですが、目下のところ回答が貰えていません…
この様な状態になってしまったら、ファームウェアを書き直す以外に方法はないのでしょうか?
またファームウェアを書き直す場合、具体的な手順はどうしたらいいのでしょうか?
ご多忙中、誠に申し訳ありませんが、ご教示頂けると幸いです。
H.Wさん
それはそれは面倒なことになりましたね。
私にも正直分かりませんが、H.Wさんがおそらくおっしゃる通り、スケッチ書き込み中に電源が落ちたということは、ファームが壊れた可能性大ですね。
粗悪 USB ケーブルは思いのほかインピーダンスが高く、瞬時大電流で思いのほか電圧降下するので、それが原因の可能性もありますね。
ファームの書き換え方法については私はよく知りませんが、ネットでは情報が沢山あると思います。
早く治って欲しいですね。
因みに、私の M5stack で Windows10 環境の場合、最近はUSB書込みに苦労することはありませんでした。
もしかしたら、H.W さんの今までの書き込み不良はUSBケーブルだったということも考えらそうな気がします。
ということで、あまりお役に立てる回答ができず申し訳ございません。
mgo-tecさん、
早速のご連絡有難うございます。
実は諸般の事情から、IDE用の基幹PCはWindows7を使用しており、一応USBシリアルドライバはCP2104の最新版とはなっていますが、スケッチ書込が上手く行かない主原因はこの環境のせいではないかと思っています。
尚、ESP32のファームウェア書込みツール(flash_download_tooles_v3.6.4_0)を以前DLしていたことを思い出し、試しにGithubでM5cloud用のfirmwareは直ぐに見つかったので、これを上記ツールで書き込んで起動&リンクさせることはできましたので、少なくともCPUは死んでいないことは確認できました。
しかし、どういう訳かm5stackの’工場出荷時firmware’が、思い付くリンクの何処をどう探しても見つかりません。
(最初に出荷時状態をバックアップしておけばよかったのですが、それを怠ったことが悔やまれます。。。)
尚、スイッチサイエンス側からは未だ回答がなく、どうも技術的なサポートはされない様なのでちょっと期待薄です。
もし、工場出荷時firmwareの所在情報等でご存知な事がありましたら、宜しくお願い致します。
申し訳ございませんが、ファームのある場所は知りません。
私の場合は、ESP32が起動しなくなった時、ファームを書き替えた経験はありませんので、やり方を知りません。
私は、以下の記事
ESP32 ( ESP-WROOM-32 , M5stack )自分的 トラブルシューティング まとめ
の、9番項目の「原因その2」に書いてあるように、Flash の NVS領域を初期化して、最新版 Arduino – ESP32 を入れ直したら、いつの間にか起動できるようになっていた経験があります。
あまり参考にならないかも知れません。
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基板は高さ制約が厳しく、実質チップ部品でないと、自由な配置の回路実装はかなり難しいですね…
H.Wさん
いえいえ、あまりお役に立てずスミマセン。
私も思っていたのですが、必ずしも工場出荷時のファームは必要ないと思っています。
ですから公開しているサイトが無いんでしょうね。
CPUやその他の回路が生きてさえいれば、Arduinoスケッチが流し込めるのではないかと、個人的に勝手に思っています。
バッテリーモニタはイイですね。
私もいつかバッテリー監視ICで回路を組んで、マウントしたいと思っていました。
というか、M5StackにはそのICが積まれているので、データシートを見れば、どこかにバッテリーモニター出力がありそうな気がします。
ということで、いつもコメントありがとうございます。
なにか面白いものができるといいですね。
初めまして、amisuke1701と言います。
「9.今まで問題無かったのに、急に Wi-Fi ( WiFi )に繋がらなくなった」、大変参考になりました。私も突然wifi接続ができなくなり焦っておりました。残念ながらこちらの手順を試しても復旧せずあきらめていたところ、以下手順で復旧しましたので参考に掲載します。
無線ルーター(Aterm WG2600HP)
暗号モードをWPA/WPA2-PSK(AES) => WPA2-PSK(AES)に切り替える
これで復旧しました。暗号モードを戻しても問題なくなりました。
原因は不明で、復旧理由も不明ですw。
以上、参考までに。
amisuke1701さん
記事をご覧いただき、ありがとうございます。
それは新しい手法ですね。
これはルーターとのコネクションに何らかのバグがあるんでしょうか?
いずれにしても、貴重な情報ありがとうございます。
Twitter でもこの情報を流しておきますね。
もしかしたら、悩んでいる方々の解決につながるかもしれません。
有難うございました。
m(_ _)m
はじめまして!
とても参考にさせていただいています。
下記、私も同じ現象でした・・・
このブログを見なかったら、意味がわからず途方にくれるところでした。
—
M5Stack 側の USB-TypeC では、挿し込み方向によって、パソコン側がCOMポートとして認識しないことがあります。
M5Stack 付属の USB-TypeC ケーブル、または M5Stack 側のUSB-TypeCポートの結線に問題がありそうです。
(詳しく調べていませんが、私の場合、上下逆に挿し込むと認識しないことが確認されています。)
—
Masaki さん
記事をご覧いただきありがとうございます。
無事に動いて良かったですね!
そう言っていただけると作った甲斐があり、嬉しいです。
(^^)
——————————————————————-
14.「○○.h」に対して複数のライブラリが見つかりました。というメッセージが出て、コンパイルできない
例えば、Arduino IDE のコンパイルを実行して、
「WiFi.h」に対して複数のライブラリが見つかりました
というメッセージが出て、コンパイルできないことがあります。
——————————————————————-
⇒14番について、私も同じ現象でした。そちらのパタンに該当するかかどうかは分からないですが、一応情報共有させていただきます。
「WiFi.h」に対して複数のライブラリが見つかりました
僕はWINDOWS 10を使っています。
最初僕はWindows Installer版しか使っていないです。何も問題ありません。その後、Windows app版をインストールすると、上記ライブラリ重複エラーが発生してしまいました。
解決方法はWindows Installer版をアンインストールしかできないようです。(※Windows app版のアンインストールは解決出来ていなかったです)
リュウさん
ブログにお越しいただき、ありがとうございます。
Windows Installer版やapp版とは、Arduino IDEのことですか?
リュウさん
私も全く同じ状態にハマり、ライブラリのincludeの重複が無いことも確認したのですがエラーが消えず、PCを再起動したらエラーはでなくなりました。
原因不明で気持ち悪いですが、参考までに。
問題30.
(Guru Meditation Error: Core 0 panic’ed (LoadProhibited). Exception was unhandled.)
に関連して。
こんにちは
ESP-IDFで書込み、ESP32Webラジオを聴いています。
プログラムの中に
ホスト局のURLを記述してる「playlist」ファイルが有るのですが、
この記述様式が、「デフォルト」状態の様式から逸脱していると
このエラーが出る様です。
ホストのURL追加したり削除したりするとき
うっかりこの「様式」を外して仕舞う場合が有ります。
この、「誤記」に気づけないと・・・
make flash
しても、中で再起動を繰り返してパニクり「訳が解らん・・」となりますが
現象の直前の自分の行いとコマンドプロンプトのモニタ出力を
観て、この「誤記」に気づき、修正で正常動作に戻りました。
「グルの瞑想エラー」は、お遊びの「命名」らしいです。
モニタでこの記述を観ると、『一瞬、何が起きたのか!』と
思いますが・・私のケースでは
その原因は、「playlist」ファイルの中の単なる「誤記」でした。
とんかつさん
トラブル対処のコメントありがとうございます。
悩んでいる読者の方々に助けになると思いますので、トラブルシューティングにコメントリンクという形で反映させて頂きますね。
感謝、感謝です。
m(_ _)m
はじめまして。
>以下の記事を参照して、Wire.begin関数を含めた全ての Wire関連関数を同じタスクに置いて下さい。
これは過去の情報でしょうか。
通りすがりさん
記事をご覧いただき、ありがとうございす。
そのとおり、もう随分前の過去の情報です。
この記事の1年くらい更新しておりません。
スミマセン。
m(_ _)m
こんにちは
Compilation error: WiFi.h: No such file or directoryというえエラーが発生し、先に進むことができません。
通りすがりの開発初心者さん
ブログをご覧いただきありがとうございます。
ただ、頂いた情報だけでは私は何も判断できません。
以下の情報を教えてください。
1.使っているマイコンは何か?
2.Arduino IDEのバージョン
3.Arduino core for the ESP32 のバージョン
4.何を実行した時にそのエラーが出現したか?
あと、現在、このブログでのESP32やM5Stackの記事更新はしばらく停止中です。
私自身もしばらく触っておりませんので、最近の情報は分らないことがあることをご了承ください。
こんにちは
急にESP32がWiFiに繋がらなくなり、予備機に交換したら動きます。
当ESP32は故障で、販売元に文句を言って廃棄かな…と思っておりましたが、
当記事を見つけてRTSのリセットをしてみました所、うまく動くようになりました。
これで廃棄せずに済んだのと、今後も発生したであろう現象を回避することが
できました。
大変お世話になりました。ありがとうございました。
Polinky310さん
記事をご覧いただき、ありがとうございます。
現在はESP32やM5Stackは使っていなくて、この記事も更新しておらず、だいぶ古くなってしまいました。
私はいろいろすっかり忘れてしまい、RTSって何だっけ? という状態でしたが、何はともあれ、廃棄せずに動いて良かったですね。
この記事もそろそろオワコンで、削除しようかなと思っていたところです。
おかげ様で、まだ利用がありそうなので、しばらくこのままにしておこうと思います。
こちらこそコメント頂き、ありがとうございま~す!
m(_ _)m