ESP8266, ESP-WROOM-02, ESPr Developer トラブルシューティングまとめ

記事公開日:2016年12月19日
最終修正日:2017年1月16日

スポンサーリンク

今回は、ESP8266, ESP-WROOM-02, ESPr Developer のトラブルシューティングについて、コメント等でお問い合わせがあったものと、私の過去の体験等を含めて、まとめてみました。
以下、Windows 8.1 以上で、Arduino IDE を使った場合で説明します。

Aruino IDE 、ESP8266 ボード、SPIFFSアップローダーのバージョンは以下の場合で説明します。

Arduino IDE — ver 1.6.13
Arduino Core for ESP8266 WiFi chip — stable ver 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 開発ボード )の使い方をザッと紹介

では、トラブルシューティングについては以下の目次をクリックするとそこへジャンプします。

    【目次】

  1. Arduino IDE スケッチのコンパイル書き込みで、エラーが出る
  2. シリアルモニターで全ての文字が文字化けする
  3. シリアルモニターで 115200 bps にしているのに、最初の行だけが文字化けする
  4. SPIFFS アップロードで、SPIFFS Upload failed! エラーが出る
  5. SPIFFS ファイルシステムアップローダー、4M ( 3M SPIFFS )で SPIFFS Upload failed! エラーが出る
  6. 起動が安定しない、動作が不安定
  7. SDカード使用で、「SD.h」に対して複数のライブラリが見つかりました、というエラーが出る
  8. Soft WDT reset というメッセージが出て、リセットされてしまう
  9. ESPr Developer ( ESP-WROOM-02, ESP8266 )に接続したデバイスがうまく動作しない
  10. 正常に動作するプログラムでも、コンパイル後の実行で、シリアルモニターに文字化けデータしか表示されない
  11. Web と連動してテキストを抽出する場合に、途中でフリーズ(固まる)する
  12. ESPr Developer ( ESP-WROOM-02, ESP8266 )にLEDを接続したら壊れた
  13. Arduino IDE スケッチのコンパイル書き込みで、「シリアルポート「COM9」が開けません。」というメッセージが出る
  14. ライブラリマネージャーでインストール、アップデート、アンインストールができない
  15. ZIP形式ライブラリがインストールできない
  16. ライブラリをアップデートしたが、うまく動作しない
  17. EasyWebSocketライブラリでブラウザ表示が文字化けする
  18. Arduino IDE のシリアルポート(COMポート)がグレー表示になっていて、選択できない
  19. マイコンボードに書き込もうとしましたが、エラーが発生しました。というメッセージが出る
  20. ESP8266ボード や Arduinoボードで、配列やポインタを使用すると、シリアルモニター表示が変だ

1.Arduino IDE スケッチのコンパイル書き込みで、エラーが出る

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

【原因】
Arduino IDE の ESP8266ボード設定の Reset Method が ck になっていることが原因です。

【対策】
Arduino IDE の ESP8266ボード設定の Reset Method を “nodemcu” にする必要があります。
“ck” の場合は、ご自分でGPIO #0 を押しながらリセットキーを押すと書き込み可能になります。
“nodemcu” にするとリセットキーを押さずとも、自動で書き込みモードに切り替えて書き込みできます。
これは、スイッチサイエンスさんのESPr Developer のトランジスタで構成された、リセット回路の素晴らしいところです。
ESP8266 ボードの設定については、以下のページを参照してください。

Arduino IDE に Staging(Stable)版ESP8266 ボードをインストールする方法

2.シリアルモニターで全ての文字が文字化けする

【原因】
Arduino IDE のシリアルモニターの右下のところの通信速度が 115200 bps 以外になっている。

【対策】
ESP8266, ESP-WROOM-02 のシリアル通信速度のデフォルトは 115200 bps です。
それ以外にすると、すべての通信が文字化けしてしまいますので、115200 bps に変更してください。
TroubleShooting02

3.シリアルモニターで 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行の文字化けは無視して良いです。

4.SPIFFS アップロードで、SPIFFS Upload failed! エラーが出る

【原因】
SPIFFS アップローダーをクリック後、即以下のようなメッセージが出た場合、

error: Failed to open COM6
error: espcomm_open failed
error: espcomm_upload_mem failed
SPIFFS Upload failed!

シリアルモニターが起動していることが原因です。

【対策】
SPIFFS ファイルシステムアップローダーはシリアルモニターが起動していると動作しません。
シリアルモニターを閉じてください。

 5.SPIFFS ファイルシステムアップローダー、4M ( 3M SPIFFS )で SPIFFS Upload failed! エラーが出る

USBシリアルでアップロードしようとして、Arduino IDE に以下のようなメッセージが出た場合

warning: espcomm_send_command: didn't receive command response
warning: espcomm_send_command(FLASH_DOWNLOAD_BEGIN) failed
error: espcomm_upload_mem failed
SPIFFS Upload failed!

【原因】
スイッチサイエンスさんの ESPr Developer ( Rev.3 ) を使った場合はこのメッセージが出ます。(2016/12/18時点)

USBシリアルで 4M( 3M SPIFFS )でアップロードできたのは、1世代前の Rev.2 だけですが、現在販売しているものは、Rev.3 です。

【対策】
Wi-Fi で OTA アップロードならば可能です。
その方法は、以下のページを参照してください。

4M ( 3M SPIFFS ) をシリアルポートでアップロードできない場合のトラブルシューティング( ESP-WROOM-02 ESP8266 )

6.起動が安定しない、動作が不安定

【原因】
ESP-WROOM-02 ( ESP8266 ) に供給する電流量が足りない場合があります。
常時70mA以上電流を消費していて、起動直後は100mAを超える場合があります。
ESPr Developer と 有機EL ( OLED )ディスプレイなどを接続していて、ESPr Developer から電源を供給している場合、リセットをした直後は、一瞬でも400mA を超える場合があります。
そうなると、USBハブを使っていた場合、うまく起動しない場合があります。
また、Arduino UNO の3.3Vから電源供給している場合、Max 50mAまでしか対応してませんので、当然まともに動作しません。

【対策】
パソコンのUSBポートに直挿しする。
または、500mA以上のACアダプターや、モバイル用電源等を使う。
因みに ESPr Developer の最大電流は700mA ですので、パソコンのUSBポートに直挿しすれば、大抵は問題なく動作します。
パソコンのUSBポートでも電流容量が少ないものは避けてください。大抵は500mAだと思います。
ただ、ESPr Developer の電源を通して、他の大容量のディスプレイやLED に電源を供給すると、ESP8266 への電流量が足りなくなる場合がありますのでご注意ください。
その場合、別電源に分けた方が良いです。

また、USBハブによっては、外部ACアダプターで電源を強化できるものがあります。
それを使ってみるということも有効な手段かもしれません。

【関連記事】
ESP-WROOM-02とArduinoで初めてのATコマンド通信

7.SDカード使用で、「SD.h」に対して複数のライブラリが見つかりました、というエラーが出る

ESP8266ボードのSDカードライブラリ、 SD.h をインクルードした時に、以下のようなメッセージが出てコンパイルできないことがあります。

「SD.h」に対して複数のライブラリが見つかりました
使用済:C:\Users\xxxx\Documents\Arduino\libraries\SD
未使用:C:\Users\xxxx\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SD
未使用:E:\arduino\IDE\arduino-1.6.13\libraries\SD
exit status 1
ボードGeneric ESP8266 Moduleに対するコンパイル時にエラーが発生しました。

※xxxx はご自分のPCのユーザーネーム

【原因】
このメッセージをよく見てください。
SDカードライブラリの SD.h が3つあります。

C:\Users\xxxx\Documents\Arduino\libraries
というフォルダは、ユーザーがインストールしたライブラリのフォルダです。

C:\Users\xxxx\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries
というフォルダはArduino core for ESP8266 ボードライブラリのフォルダです。

E:\arduino\IDE\arduino-1.6.13\libraries
というフォルダは私が別のハードディスクにZIP形式のIDEをダウンロードして解凍し、任意のフォルダに保存しておいたものです。
私はArduino IDE はそこから起動しています。

私はArduinoのインストーラーファイルを使っていません。なぜならば、他のバージョンも使うことがある為、複数のバージョンを共存させているからです。
IDEをいろいろとインストールしていると、知らぬ間にユーザーライブラリフォルダの
C:\Users\xxxx\Documents\Arduino\libraries
にSDカードライブラリが入っていることが何度かありました。

実はこれは、ライブラリの自動アップデート通知で、
SD built-in by Arduno, SparkFun
の通知が来て、アップデートしてしまうと、librariesフォルダにSDカードライブラリが新たにインストールされてしまいます。

このドキュメントフォルダにあるSD.h ライブラリは、SparkFunのSDカードライブラリを使用していなければ、不要です。
Arduino UNO などを使用する場合は IDE のlibraries フォルダのSD.h が自動で使用され、ESP8266 ボードを使う時には、自動でArduino15フォルダのSD.h がインクルードされるようになっているので、それ以外は不要です。

【対策】
上記のメッセージが出たら、ドキュメントフォルダ
C:\Users\xxxx\Documents\Arduino\libraries
の SD フォルダをフォルダごと削除してください。
その後、Arduino IDE を再起動してください。

8.Soft WDT reset というメッセージが出て、リセットされてしまう

Arduino IDE シリアルモニターに、Soft WDT reset というエラーメッセージが出て、リセットしてしまう場合です。
こんな感じです。
SPI_SPEED_UP2_05

【原因】
ESP-WROOM-02 ( ESP8266 ) のチップに装備されているウォッチドッグタイマ(略して WDT )が機能しなくなったことによるものです。
ESP8266 は電源が起動すれば、何もプログラムを実行しなくても、Wi-Fi通信機能などがちゃんと動作できるかどうか監視する機能が定期的に働いています。
マイコンはすべてこのウォッチドッグタイマがあると思って良いと思います。
自作プログラムによる休みの無い連続動作が、ウォッチドッグタイマ割込みを行う余地を与えないとこういうエラーがでるようです。

EasyWebSocket ライブラリを使って、スマホからデータを休みなく連続送信した場合も発生します。

【対策】
無限ループ内 ( while または forループ内 )に yield(); などを置いて、プログラムの休止期間を与えてやる。
Arduino IDE に関しては、メインloop内はこれを置かなくても良いらしいですが、エラーが出る場合は置いてみてください。
delay(1); でも良いですが、これは1ms で、時間が長すぎる場合は、delayMicroseconds を使ってみてください。
yield(); は最も短い休止期間だと思います。

EasyWebSocket ライブラリ beta 1.48 ではwhileループ内に全て yield(); を置いてます。

【関連記事】
ESP8266 ( ESP-WROOM-02 ) SPI 通信高速化、その2 ( 複数デバイス、Mode、Watchdog Timer 問題 )

9.ESPr Developer ( ESP-WROOM-02, ESP8266 )に接続したデバイスがうまく動作しない

【原因】
ESP-WROOM-02 ( ESP8266 )の必要電源電圧は3.3V です。
ESPr Developer はUSB 5V から供給されて、ESP-WROOM-02 へは3.3Vに電圧変換して電源を供給しています。
よって、ESP-WROOM-02 ( ESP8266 ) のGPIOポートの信号電圧は 0~3.3V の範囲内です。
接続されたデバイスが5V動作のものでは正常に動作しない場合があります。

【対策】
ロジック電圧が3.3V のデバイスを使う。
又は、ロジックレベル変換を使用して、ESP-WROOM-02 ( ESP8266 ) のロジック電圧を5V に変換する。
ただし、ロジックレベル変換の動作周波数に注意してください。
ロジックレベル変換の動作周波数よりも ESPr Developer ( ESP-WROOM-02, ESP8266 )のGPIO の動作周波数が大きいと、ロジックレベル変換が処理し切れなくなります。
その場合は、GPIO の動作周波数を下げるなどの対応が必要です。

10.正常に動作するプログラムでも、コンパイル後の実行で、シリアルモニターに文字化けデータしか表示されない

正常に動作するプログラムのはずが、コンパイル後のシリアルモニターに稀に文字化けデータしか表示されない時があります。
もちろん、シリアルモニターの速度は115200 bps に設定されていてる場合です。

【原因??】
電源を起動して、前のプログラムが走っていて、その途中でコンパイルした時、稀に文字化けデータしか表示されない時があります。
恐らく、前のプログラムの実行が連続高速処理されている場合に、途中でコンパイル指令を出すと、こういうことが起こるような気がします。

【対策】
再度、コンパイルすると、正常にコンパイルされる場合が殆どです。

11.Web と連動してテキストを抽出する場合に、途中でフリーズ(固まる)する

以下の記事でツィッター検索記事を定時取得した場合に発生します。

Twitter 検索結果のツイートを有機EL ( OLED )に表示させてみた

【原因??】
まだハッキリと原因は突き止められておりませんが、Twitter検索結果記事の取得の場合、決まってフリーズするのは、記事取得最中に同じルーター環境内の他のパソコンでインターネット通信している時に発生しているようです。
client.read() のところでフリーズしていて、タイムアウト設定を作ってもフリーズしてしまう為、機能しなくなります。
プログラム中にyield(); やdelay(1); を散りばめて配置してもフリーズしてしまいます。
恐らく、Webから送られてくるパケットの断片化が原因でしょうか・・・。

【対策??】
残念ながらまだ判りません。
ESPr Developer ( ESP-WROOM-02, ESP8266 ) をリセットするしかないようです。

12.ESPr Developer ( ESP-WROOM-02, ESP8266 )にLEDを接続したら壊れた

【原因】
ESP8266 ( ESP-WROOM-02 ) のGPIO 端子に流すことができる最大電流は 12mA までです。
これは、ESPRESSIF社で公開されているデータシートに掲載されています。
GPIO に 電流制限抵抗等を接続せずに LED を直結して、12mA 以上の電流が流れてしまうと、殆どの場合、即故障します。
私の手持ちの一般的で安価な砲弾型LED (5V) は、GPIOに直結しても5mA ほどしか流れないものでしたので、過去に挙げた記事のように直結しても問題ありませんでした。
高輝度LED を直結してしまうと、12mA を超えてしまう場合があります。

【対策】
ESPr Developer ( ESP-WROOM-02, ESP8266 ) のGPIO にLED を直結する前に、そのLED が3.3V をかけても12mA 以上電流が流れないかどうか、データシートで確認してください。
また、別電源でLEDに可変抵抗器などを接続して、電流計でチェックしながら3.3V をかけてみてチェックしておくことが必要です。それから必要に応じて抵抗を挟みながら、GPIOに接続してください。
また、定電流ダイオードを間に接続するという方法もあります。
例えば、以下のような10mAのものがあります。

13.Arduino IDE スケッチのコンパイル書き込みで、「シリアルポート「COM9」が開けません。」というメッセージが出る

複数のESPr Developer ( ESP-WROOM-02 開発ボード )を使ってそれぞれ USB を差し替えてコンパイル書き込みするときにこのメッセージが出る時があります。

【原因】
別のESPr Developer にUSBを差し替えた時に、Arduino IDE の「ツール」メニューのシリアルポートが選択されていない

【対策】
ESPr Developer のUSB を差し替えた後は Arduino IDE の「ツール」メニューのシリアルポートで、COMポートを選択すればOKです。

14.ライブラリマネージャーでインストール、アップデート、アンインストールができない

【原因】
当方自作のライブラリ、EasyWebSocket、Utf8toSjis、ShinonomeFNTread 等は、Arduino IDE のライブラリマネージャーではインストールやアンインストール、アップデートはできません。
残念ながら、ライブラリマネージャーを使用できるような申請をしておりません。

【対策】
Arduino IDEのフォーマットに沿ったZIP形式ライブラリならば、IDE の「ZIP形式のライブラリをインストール」機能を使えば簡単にインストールできます。

うまくいかない場合は、手動でZIPファイルを解凍して、Arduino IDE のlibrariesフォルダにコピーしてください。
Windows10 の場合は
ドキュメント/Arduino/libraries
というパスにあります。
EasyWebSocket_SPIFFS-master の場合、解凍したフォルダの中に更に同じ名前の EasyWebSocket_SPIFFS-master というフォルダがあるので、そのフォルダごとコピーすれば良いです。

15.ZIP形式ライブラリがインストールできない

Arduino IDE の「ZIP形式のライブラリをインストール」機能を使ってインストールできない場合

【原因】
まず、Arduino IDEのフォーマットに沿ったZIP形式ライブラリでなければ正常にインストールできません。
library.properties ファイルが正しく記載されていないと反映されませんし、フォルダ名やサンプルファイル名も合っていないとIDEに反映されません。

また、同じ名前のライブラリがある場合はエラーとなり、インストールできません。

【対策】
同じ名前のライブラリがある場合は、IDE の libraries フォルダやドキュメントフォルダ内のlibraries フォルダにあるライブラリをフォルダごと削除してください。
IDEのフォーマットに沿っていないZIP形式ライブラリは、上記のように手動で解凍してフォルダごとコピーしてください。
当方自作の最新のEasyWebSocketライブラリ等はZIP形式インストールに対応しています。

16.ライブラリをアップデートしたが、うまく動作しない

【原因】
同じ名前のライブラリが存在する場合が考えられます。

【対策】
バージョンアップしたライブラリは、フォルダ名が異なっていても、インクルードするライブラリ名が古いライブラリ名と同じ場合があります。
その場合は古いライブラリをフォルダごと削除してください。

また、ESP8266ボードを使っている場合は、以下のフォルダをチェックしてください。
(Windows10 の場合)
●インストールしたArduino IDE の中のlibrariesフォルダ内
●C:\Users\ユーザー名\AppData\Local\Arduino15
●ドキュメント\Arduino\libraries

17.EasyWebSocketライブラリでブラウザ表示が文字化けする

当方自作のEasyWebSocketライブラリを使って、日本語文字列があるサンプルスケッチをコンパイル実行させたら、ブラウザ画面で文字化けした場合

【原因】
Arduino IDE のスケッチ入力で、OSの入力用文字コードが UTF-8 でない場合は、スマホのブラウザに表示させた場合は文字化けします。
例えば、spiffs_01.txt ファイルなどのHTMLヘッダの charset で文字コードを指定してます。

<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>

これは、スマホのブラウザ表示画面は UTF-8 で表示させている指令になります。
Arduino IDEで入力した文字列が別の文字コードだと当然文字化けするわけです。

【対策】
Arduino IDEのスケッチエディタの入力をUTF-8 にする必要があります。
実は、私は Windows10 日本語版の場合で Microsoft IME の文字入力の場合、普通にインストールすれば、UTF-8 になると思っていたのですが、最近、Shift_JIS入力だったというコメント投稿をいただきました。
こちらの記事のコメント欄参照

Web News記事自動取得 OLED ( 有機EL )ミニ電光掲示板に16×16フリー日本語フォント( 東雲 ) を使う

その場合は、恐らく Microsoft IME の文字コードをUTF-8 にすれば良いと思うのですが、残念ながらその方法がまだ分かっておりません。
そうすると、HTMLヘッダファイルを
charset=Shift_JIS
と変更すればうまくいくかも知れません。
今、殆どのアプリやブラウザはUTF-8 が標準になっているので、できるだけ全てのアプリは UTF-8 にしておいた方が良いと個人的に思っています。

18.Arduino IDE のシリアルポート(COMポート)がグレー表示になっていて、選択できない

【原因】
もしかしたら、Arduino や ESPr Developer ( ESP-WROOM-02, ESP8266 ) とパソコンを接続しているUSBケーブルが充電専用か、ケーブル自体が不良の可能性があります。

【対策】
充電ケーブルの場合は、正常な普通の通信用USBケーブルに替えてください。
USBケーブルの中途半端な挿し込みの可能性もありますので、再度挿し直してください。

19.マイコンボードに書き込もうとしましたが、エラーが発生しました。というメッセージが出る

【原因】
一つ上の18項目の原因と同じで、USBケーブルに原因があるかも知れません。
そちらを参照してください。

【対策】
Arduino IDE のメニューで「ツール」を見てください。
「シリアルポート」または「COMポート」がグレー表示になっていて、クリックできなければ、マイコンボードとパソコンが通信不可能な状態です。
USBケーブルを指し直すか、充電ケーブルの場合は、普通の通信用USBケーブルに替えてください。

ESP8266ボード や Arduinoボードで、配列やポインタを使用すると、シリアルモニター表示が変だ

Arduino IDE でArduino UNOボードを使って、配列の初期化や、ポインタを使用していて、それをシリアルモニターに表示させると、意味不明な文字や、期待通りの結果にならない時があります。

また、同様に、ESP8266ボード上では、Arduinoボードと異なる表示結果になったりします。
ESP8266ボードではエラーになったのに、Arduino UNOボードでは正常にコンパイルできることがあります。

【原因】
配列やポインタの使い方を誤っている場合が考えられます。
Arduino IDE は全てのC言語仕様をサポートしていて、一部のC++言語をサポートしているそうです。
Arduino言語はビギナーにとって、とても使いやすくできていますが、複雑難解な本来のC言語の文法が隠れてしまって、なかなかアマチュアでは分からないことがあります。

【対策】
ポインタや配列の初期化については、以下の記事を参照してみてください。
そして、最後の方のコメント欄も参照してみてください。
その道の熟練者からアドバイスを頂きました。
意外な事実があったりします。
改めて、ポインタ・配列・初期化などを再考

まとめ

現段階で思いついたトラブルシューティングは以上です。
もし、誤りや、その他のトラブル対処方法等がありましたら、コメント等でご連絡いただけると幸いです。
新たに見つかったものは、随時、この記事に足していこうと思っておりますので、よろしくお願いいたします。

スポンサーリンク

Amazon.co.jp広告







投稿者:

mgo-tec

Arduino, ESP8266, ESP-WROOM-02 等を使って、主にスマホと連携した電子工作やプログラミング記事を書いてます。ライブラリも作ったりしてます。趣味、独学でやってます。

コメントを残す

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


*