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

記事公開日:2018年2月1日

スポンサーリンク


【目次ページへ】

11.Arduino – ESP32 でコンパイルした時に、コンパイラメッセージ欄に「libraries\BLE に、無効なライブラリ 」と表示される場合の対処法

最新版 Arduino core for ESP32 をインストールして、新たにスケッチをコンパイルすると、コンパイルは通るのですが、IDE のコンパイラメッセージに下図の様に表示される場合があります。

Arduino-ESP32_trouble03

C:\Users\USER-NAME\Documents\Arduino\hardware\espressif\esp32\libraries\BLE」に、無効なライブラリ「C:\Users\USER-NAME\Documents\Arduino\hardware\espressif\esp32\libraries\BLE」があります。

原因

2017/10/15頃、GitHub の Arduino core for ESP32 の Bluetooth ( BLE )ライブラリが新たに追加されました。
ただ、このライブラリだけ、別の GitHub ユーザーのリポジトリに存在するようになっていました。
ESP32 kolban books で有名な、kolbanさんが作っているようです。
その為、ZIPファイルをダウンロードしても BLE ライブラリフォルダがダウンロードされないようになってしまいました。
将来的には恐らく統合される可能性はあります。

対策

Bluetooth および BLE ライブラリを使わないのであれば、このメッセージは無視しても問題ありません。
コンパイル書き込みは実行されます。

どうしてもこのメッセージを消したければ、以下の記事の最後の方に方法を記述していますのでご参照ください。

Arduino core for the ESP32 のインストール方法

12.A fatal error occurred: Timed out waiting for packet content または Timed out waiting for packet header というメッセージが出て、コンパイルできない

まず、Arduino core for the ESP32 でコンパイルする時、A fatal error occurred というエラーが出て、コンパイル書き込みできない時があります。
この次のメッセージには私が知るところによると、3種類メッセージが出ました。
まず、特に、M5Stack を使った時に発生しやすい以下のメッセージです。

A fatal error occurred: Timed out waiting for packet header

原因その1

M5Stack の場合、シリアル通信系の GPIO に何かしらの通信ジャンパーワイヤーが接続されていると起こります。
私の場合は、GPIO #2 に SPI 通信用の CS を接続していました。
その状態でコンパイル書き込みしようとするとエラーになります。

対策その1

コンパイル書き込みするときだけ、その GPIO ピンを外すことです。
コンパイル書き込みが終了してから、再度接続して再起動してください。
GPIO #1~#3 はコンパイル書き込み時は外すか、そこにアサインしない方が無難と思われます。

その他、Arduino IDE に下図の様なメッセージが出て、コンパイル書き込みができない場合があります。

Arduino-ESP32_trouble02

A fatal error occurred: Timed out waiting for packet content

原因その2

コンパイルは通っても、ESP-WROOM-32 ( ESP32 ) に USB シリアルで書き込みができないようです。
2017/09頃~12月頃までは特に問題無かったのですが、Arduino core for the ESP32 の以下のバージョンでは、このエラーが顕著に出るようになりました。

●Commits on Dec 19, 2017 バージョン
●Commits on Jan 18, 2018 バージョン
●Commits on Jan 19, 2018 バージョン
●Commits on Jan 23, 2018 バージョン

対策その2

1回目の書き込みは失敗しますが、再度続けてコンパイル書き込みを実行すれば問題ありません。

どうしてもこのメッセージが嫌な方は、もっと古いバージョンをインストールし直せば良いと思います。
旧バージョンのインストール方法については以下の記事を参照してください。

旧バージョン Arduino – ESP32 のインストール方法

また、ESP32 の Chip Revision が 最新のものでは 1 になっているので、それを使えばこのエラーは出ないかも知れません。

また、何回やってもこのエラーメッセージが出てコンパイルできない場合は、別の原因が考えられます。
以前、某雑誌の付録ボードを使った方がこのメッセージで悩んでおられました。
ボード側のUSB-シリアル変換回路の問題や、電源容量が足りない回路だった、などのように記憶しています。

13.A fatal error occurred: Invalid head of packet (‘F’) とメッセージが出て、コンパイルできない

Arduino core for the ESP32 で、コンパイルすると以下のようなメッセージが出てコンパイルできない場合があります。

A fatal error occurred: Invalid head of packet ('F')

同じようなエラーとして、以下の様な場合もあります。

A fatal error occurred: Failed to calculate md5sum (result was 8080)

原因

この原因も前項と殆ど同じです。
Arduino core for the ESP32 の以下のバージョンから、コンパイル書き込みが1回で成功できなくなりました。

●Commits on Dec 19, 2017 バージョン
●Commits on Jan 18, 2018 バージョン
●Commits on Jan 19, 2018 バージョン
●Commits on Jan 23, 2018 バージョン

これ以前の2017の9月頃からは特に問題無く書き込めていたのですが、バージョンアップして何かしら不具合が出たものと思われます。

対策

恐らく、コンパイルはできても、ESP32 への書き込みが出来ないだけだと思われます。
よって、もう一度コンパイル書き込みしてみてください。
2回目は成功すると思います。

14.「○○.h」に対して複数のライブラリが見つかりました。というメッセージが出て、コンパイルできない

例えば、Arduino IDE のコンパイルを実行して、

「WiFi.h」に対して複数のライブラリが見つかりました

というメッセージが出て、コンパイルできないことがあります。

原因

これは実は、ご自分のスケッチ(プログラム)の単なる記述ミスであることが殆どです。
Arduino UNO 用の WiFi ライブラリと、ESP32 用の WiFi ライブラリが重複したエラーと勘違いして、Arduino 純正 WiFi ライブラリを削除しても意味ありません。
何でこんなメッセージが出るのかは不明です。
どうしても知りたければ、Espressif Systemの Arduino core for ESP32 開発チームに問い合わせるしかありません。

対策

このメッセージの前に大抵、プログラム中のエラー個所がメッセージで表示されているはずです。
表示されていなければ、Arduino IDE の「ファイル」メニューの、「環境設定」を開いて下さい。
下図の様に、コンパイラの警告を「全て」にしてください。

Arduino-ESP32_trouble01

こうすると、プログラム中のどこがエラーなのかが、詳細なメッセージで見えます。
その部分を修正して、プログラムミスが無くなれば、「複数のライブラリが見つかりました」というメッセージは表示されずにコンパイルできると思います。

Arduino core for the ESP32 のライブラリと、Arduino 純正ライブラリとは競合しないように出来ていますので、勘違いしないように。

15.最新版 Arduino – ESP32 をインストールしたら、うまく動作しない(旧バージョンのインストール方法)

GitHub の 最新版 Arduino core for the ESP32 は、いろいろと動作不良の場合が多々あります。
オープンソース無保証なので、仕方ありません。

対策

正常に動作した旧バージョンの Arduino core for the ESP32 に再インストールし直すことです。
正常に動作したころの Arduino core for the ESP32 はパソコンに保存しておくことをお勧めします。

旧バージョンの Arduino core for the ESP32 のインストール方法は以下の記事を参照してください。

旧バージョン Arduino – ESP32 のインストール方法

【目次ページへ】

スポンサーリンク

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

投稿者:

mgo-tec

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

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

  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が積まれているので、データシートを見れば、どこかにバッテリーモニター出力がありそうな気がします。

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

  4. 初めまして、amisuke1701と言います。

    「9.今まで問題無かったのに、急に Wi-Fi ( WiFi )に繋がらなくなった」、大変参考になりました。私も突然wifi接続ができなくなり焦っておりました。残念ながらこちらの手順を試しても復旧せずあきらめていたところ、以下手順で復旧しましたので参考に掲載します。

    無線ルーター(Aterm WG2600HP)
    暗号モードをWPA/WPA2-PSK(AES) => WPA2-PSK(AES)に切り替える
    これで復旧しました。暗号モードを戻しても問題なくなりました。
    原因は不明で、復旧理由も不明ですw。

    以上、参考までに。

    1. amisuke1701さん

      記事をご覧いただき、ありがとうございます。

      それは新しい手法ですね。
      これはルーターとのコネクションに何らかのバグがあるんでしょうか?
      いずれにしても、貴重な情報ありがとうございます。

      Twitter でもこの情報を流しておきますね。
      もしかしたら、悩んでいる方々の解決につながるかもしれません。

      有難うございました。
      m(_ _)m

コメントを残す

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

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

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