今回は、ESP8266, ESP-WROOM-02, ESPr Developer のトラブルシューティングについて、コメント等でお問い合わせがあったものと、私の過去の体験等を含めて、自分流にまとめてみました(趣味程度の範囲内です。)
以下、Windows 8.1 以上で、Arduino IDE を使った場合で説明します。
現在、私はESP-WROOM-02およびESP8266を使用せず、ESP32しか使っておりません。
環境も大幅に変更になっており、ご質問には殆んどお答えできないことをご了承ください。
あくまでも、昔の思い出日記と思って読んで下さいね。
Aruino IDE 、ESP8266 ボード、SPIFFSアップローダーのバージョンは以下の場合で説明します。
Arduino IDE — ver 1.8.1 以上
Arduino Core for ESP8266 WiFi chip — ser 2.3.0 以上
SPIFFS ファイルシステムアップローダー — ver 0.3.0 以上
Arduino IDE のインストール方法、ESP8266ボードの設定については以下のページを参照してください。
Arduino IDE に Staging(Stable)版ESP8266 ボードをインストールする方法
Arduino IDE にSPIFFSファイルシステムアップローダープラグインのインストール方法は以下のページを参照してください。
Arduino IDE に ESP8266 SPIFFS ファイルシステムアップローダーをインストールする方法
ESPr Developer とは、スイッチサイエンス製で、ESPRESSIF社製 の技適認証済みWiFiボード ESP-WROOM-02 を、700mA 電源レギュレーター、USBシリアル変換、ロジック変換、リセットスイッチ等でパッケージ化した、とても使いやすく安定した超おすすめボードです。
Amazon.co.jp
この組み立て方法や使い方については、以下のページを参照してください。
ESPr Developer ( ESP-WROOM-02 開発ボード )の使い方をザッと紹介
では、トラブルシューティングについては以下の目次をクリックするとそこへジャンプします。
ESP32 ( ESP-WROOM-32 )のトラブルシューティングは以下のリンクを参照してください。 ESP32 ( ESP-WROOM-32 ) 自分的 トラブルシューティング まとめ
- Arduino IDE には警告やエラーが無いのに、シリアルモニターに Exception や wdt、loadエラーが出て、延々とリセットを繰り返す
- espcomm_sync failed や espcomm_open failed エラーが出る
- シリアルモニターで全ての文字が文字化けする
- シリアルモニターで 115200 bps にしているのに、最初の行だけが文字化けする
- SPIFFS アップロードで、SPIFFS Upload failed! エラーが出る
- SPIFFS ファイルシステムアップローダー、4M ( 3M SPIFFS )で SPIFFS Upload failed! エラーが出る
- 起動が安定しない、動作が不安定
- SDカード使用で、「SD.h」に対して複数のライブラリが見つかりました、というエラーが出る
- Soft WDT reset というメッセージが出て、リセットされてしまう
- ESPr Developer ( ESP-WROOM-02, ESP8266 )に接続したデバイスがうまく動作しない
- 正常に動作するプログラムでも、コンパイル後の実行で、シリアルモニターに文字化けデータしか表示されない
- Web と連動してテキストを抽出する場合に、途中でフリーズ(固まる)する
- ESPr Developer ( ESP-WROOM-02, ESP8266 )にLEDを接続したら壊れた
- Arduino IDE スケッチのコンパイル書き込みで、「シリアルポート「COM9」が開けません。」というメッセージが出る
- ライブラリマネージャーでインストール、アップデート、アンインストールができない
- ZIP形式ライブラリがインストールできない
- ライブラリをアップデートしたが、うまく動作しない
- EasyWebSocketライブラリでブラウザ表示が文字化けする
- Arduino IDE のシリアルポート(COMポート)がグレー表示になっていて、選択できない
- マイコンボードに書き込もうとしましたが、エラーが発生しました。というメッセージが出る
- ESP8266ボード や Arduinoボードで、配列やポインタを使用すると、シリアルモニター表示が変だ
- グローバル変数とローカル変数のメモリに余裕があるのに正常に動作しない
- Arduino IDE のシリアルモニター出力で、日本語漢字が文字化けする
- ブラウザからスケッチ(ソースコード)をコピーして、Arduino IDE スケッチ画面に貼り付け、そのままコンパイル書き込みしたら、うまく動作しない
- 突然 Wi-Fi ルーター(アクセスポイント)につながらなくなった
- SPIFFSフラッシュへアップロードする時、Bad Answer:Invalid bootstrapping state, reset ESP8266 before updating と表示されて、アップロードできない
- Arduino – ESP32 ver 2.4.0 がうまく動作しない
- Arduino – ESP8266 ver 2.4.1 で Wi-Fi が接続できない。シリアルモニターが文字化けする
- ESP-WROOM-02でATコマンドを使っていた時にはWiFiルータに接続できたが、Arduino IDEでコンパイル書き込みすると、WiFiルータに接続できなくなった
(2021/09/14追加) - ESP-WROOM-02(ESP8266)でATコマンドおよびArduinoプログラミングでWiFiのSSIDとパスワードを設定したのに、なぜかパスワードが設定されない
(2022/06/04追加)
現在、私はESP-WROOM-02およびESP8266を使用せず、ESP32しか使っておりません。
環境も大幅に変更になっており、ご質問には殆んどお答えできないことをご了承ください。
あくまでも、昔の思い出日記として読んで下さいね。
※ESP-WROOM-02 のFlashサイズが実は 2MB だったという情報が出ています。
以下のページを参照して、メモリサイズを確認してください。
(2017/10/1)
●ESP-WROOM-02 ( ESP8266 ) チップ・メモリ・MACアドレス情報確認方法
1.Arduino IDE には警告やエラーが無いのに、Exceptin や wdt、load エラーがシリアルモニターに出て、延々とリセットを繰り返す
Arduino IDE で ESPr Developer ( ESP-WROOM-02, ESP8266 )ボードをコンパイルすると、コンパイラの警告やエラーメッセージが一切なく、RAM使用領域も余裕があって、正常なスケッチのはずなのに、シリアルモニターで以下のようなエラーメッセージが出て、延々とリセットを繰り返す場合があります。
ets Jan 8 2013,rst cause:4, boot mode:(3,6) wdt reset load 0x4010f000, len 1384, room 16 tail 8 chksum 0x2d csum 0x2d v09f0c112 ~ld
Exception (9): epc1=0x40104278 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00050a26 depc=0x00000000 ctx: sys sp: 3ffffbb0 end: 3fffffb0 offset: 01a0 >>>stack>>> 3ffffd50: 5c5c5c5c 5c5c5c5c 5c5c5c5c 5c5c5c5c ・・・etc
ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x4010f000, len 1384, room 16 tail 8 chksum 0x2d csum 0x2d v09f0c112 ~ld
【原因】
こういう場合は、プログラム(スケッチ)中で RAMメモリを多く消費し過ぎている場合があります。
例えば、配列宣言の文字数が多すぎるなど・・・。
【対策】
配列宣言の文字数や大きさを少なくしてみて下さい。
詳細は以下の記事を参照してください。
Arduino / ESP8266 の使用できるRAM 領域を再考
2.espcomm_sync failed や espcomm_open failed エラーが出る
ESPr Developer ( ESP-WROOM-02 開発ボード) を使っていて、Arduino IDE に以下のようなメッセージが出た場合です。
warning: espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed error: espcomm_upload_mem failed
【原因その1】
Arduino IDE の ESP8266ボード設定の Reset Method が ck になっていることが原因です。
【対策その1】
Arduino IDE の ESP8266ボード設定の Reset Method を “nodemcu” にする必要があります。
“ck” の場合は、ご自分でGPIO #0 を押しながらリセットキーを押すと書き込み可能になります。
“nodemcu” にするとリセットキーを押さずとも、自動で書き込みモードに切り替えて書き込みできます。
これは、スイッチサイエンスさんのESPr Developer のトランジスタで構成された、リセット回路の素晴らしいところです。
ESP8266 ボードの設定については、以下のページを参照してください。
Arduino IDE に Staging(Stable)版ESP8266 ボードをインストールする方法
【原因その2】
USBを差し替えたり、前にスケッチを書き込んだりした場合、リセットボタンを押していない(LOWレベルにしていない)場合に表示されることがあるようです。
【対策その2】
一旦USBケーブルを外して挿し直し、リセットボタンを押してから再度スケッチをコンパイルしてみてください。
【原因その3】
USBシリアルの転送速度が速すぎる場合があります。
【対策その3】
USBシリアルの転送速度を 115200bps 以下、例えば 9600bps にしてみてください。
それでもダメなら、Arduino-ESP8266 のバージョンを下げる(例えば 2.3.0)という方法も検討してみてください。
3.シリアルモニターで全ての文字が文字化けする
【原因】
Arduino IDE のシリアルモニターの右下のところの通信速度が 115200 bps 以外になっている。
【対策】
ESP8266, ESP-WROOM-02 のシリアル通信速度のデフォルトは 115200 bps です。
それ以外にすると、すべての通信が文字化けしてしまいますので、115200 bps に変更してください。
4.シリアルモニターで 115200 bps にしているのに、最初の行だけが文字化けする
【原因】
ESP-WROOM-02 ( ESP8266 ) の起動直後は76800 bps で起動メッセージをシリアル出力します。
その後起動完了後に 115200 bps でシリアル通信するので、最初の1行が文字化けするわけです。
【対策】
そのメッセージを読み取りたいのであれば、シリアルモニターの速度を74880 bps にすれば読み取れます ( Arduino IDE 1.6.13 の場合 )
こんな感じのメッセージです。
ets Jan 8 2013,rst cause:2, boot mode:(3,2) load 0x4010f000, len 1384, room 16 tail 8 chksum 0x2d csum 0x2d v60000318
ただし、その後のメッセージは全て文字化けしてしまいますが・・・。
ですから、シリアルモニターの速度を115200 bps にしてあれば、最初の1行の文字化けは無視して良いです。
5.SPIFFS アップロードで、SPIFFS Upload failed! エラーが出る
【原因その1】
SPIFFS アップローダーをクリック後、即以下のようなメッセージが出た場合、
error: Failed to open COM6 error: espcomm_open failed error: espcomm_upload_mem failed SPIFFS Upload failed!
シリアルモニターが起動していることが原因です。
【対策その1】
SPIFFS ファイルシステムアップローダーはシリアルモニターが起動していると動作しません。
シリアルモニターを閉じてください。
【原因その2】
旧型の ESP-WROOM-02 や ESPr Developer の Flash は 4MB でしたが、現在流通しているものは 2MB が殆どです。
1MB以上のSPIFFS データはアップロードできません。
ESP-WROOM-02 のチップ情報を確認してみてください。
コメント
非常に参考にさせていただいております。
以下のエラーで色々やっているのですが、うまくコンパイルしたのが転送できておりません。
アドバイスいただけると嬉しいです。
Arduino:1.8.1 (Mac OS X), ボード:”Generic ESP8266 Module, 160 MHz, 80MHz, QIO, 921600, 4M (3M SPIFFS), nodemcu, Disabled, None”
ビルドオプションが変更されました。全体をリビルドしています。
最大1044464バイトのフラッシュメモリのうち、スケッチが230557バイト(22%)を使っています。
最大81920バイトのRAMのうち、グローバル変数が32108バイト(39%)を使っていて、ローカル変数で49812バイト使うことができます。
warning: serialport_set_baudrate: baud rate 921600 may not work
Uploading 234704 bytes from /var/folders/z0/ggnt7s1d3cx7v_ynhpp295jr0000gn/T/arduino_build_551472/sketch_feb19a.ino.bin to flash at 0x00000000
…………………………………………………………………….. [ 34% ]
…………………………………………………………………….. [ 69% ]
….スケッチの書き込み中にエラーが発生しました
.warning: espcomm_send_command: didn’t receive command response
warning: espcomm_send_command(FLASH_DOWNLOAD_DATA) failed
warning: espcomm_send_command: didn’t receive command response
error: espcomm_upload_mem failed
「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。
藤田さん
当ブログをご覧いただき、ありがとうございます。
さて、私はMac を持っておりませんので、どうしてそういうエラーになるのか、正直分かりません。
と出ているので、おそらくシリアルポートの速度が速すぎるのかもしれません。
試しに、115200 bps でアップロードしてみるとかですかね。
ご回答いただいていたのにもかかわらず、お返事が遅くなり申し訳ございません。一度試してみます。よろしくお願いします。
いえいえ。
全然遅れても大丈夫ですよ~。
esp8266でespNow通信を試そうとしています。
esp8266のボードやその他のライブラリーはインストールが成功し正常に動作しています。
しかしながらesp_now.hがインストールできません。
何か方法が有るのでしょうか?
よろしくお願いします。
匿名さん
記事をご覧いただき、ありがとうございます。
コメント投稿が連続で2つ投稿されていたので、最初の方のコメントを採用させていただきました。
私は現在ESP8266を全く使用しておらず、当時とは環境が大幅に変化しており、しかもESP-NOWは全く使ったことがありませんので、あまりまともにお答えできないかも知れません。
ESP-NOWについてザッとネットで調べてみたところ、Arduinoスケッチ上で、
#include <esp_now.h>
と入力するのは、ESP32の場合っぽいです。
ESP8266 の場合は、
#include <espnow.h>
で良いのではないかなと思いました。
一応、現在の私の環境
Arduino IDE 1.8.19
Arduino core for the ESP8266 ver 3.0.2
でコンパイルしてみたところ、エラーせずに通ったので、ライブラリマネージャでESP-NOWをインストールする必要も無いように思います。
違っていたらゴメンナサイ。