ESPr Developer ( ESP-WROOM-02 開発ボード )の使い方をザッと紹介

記事公開日:2015年11月19日
最終修正日:2017年2月2日

スポンサーリンク

今回は、スイッチサイエンスさんで扱っている ESPr Developer (ESP-WROOM-02 ( ESP8266 ) 開発ボード)の使い方を説明していきたいと思います。
といっても、今までの ESP-WROOM-02単体よりは遙かに簡単に扱えるので、今まで使っていた方々には説明不要かもしれません。
とにかく圧倒的に使いやすくなりましたが、一から仕組みを理解しながら制作したい方には物足りないかもしれません。
でも、あまり時間が取れなく、パッと使いたい方にはとても重宝するモジュールですよ。
今まで苦労してきたWROOMの扱いが全てクリアされてます。脱帽です。

この記事が、何と、スイッチサイエンスさんウェブショップのESP-WROOM-02開発ボードページにリンクされました!
ありがとうございました!!

というわけで、今回は初めて使う人向けにもこのモジュールをザッと説明します。

これはAmazonさんなどでも販売しております。

もちろんスイッチサイエンスさんのページで直売もしております。
かなり売れているようで、在庫切れになっている場合がありますのでご注意ください。
これには2.54mmピンヘッダは付属しておりませんのでご注意ください。別途購入する必要があります。

このモジュールには主に以下のICが回路に入ってます。

  • ESP-WROOM-02 ( ESP8266 ) 本体
  • 3.3V対応USBシリアル変換IC FT231XS
  • 5V→3.3V 電源レギュレーター XC6222B (最大出力電流700mA)

電源容量も全く問題ない余裕の容量です。やっぱりWROOMには500mA以上欲しいと思いますので、かなり厳選してパーツを選んでいる感じがしますね。
2.54mm変換ボード付WROOMだけで 1000円くらいしますので、USBシリアル変換や電源レギュレーターなどを購入したりすると 2000円 くらいになってしまいます。
とすると、ここまでパッケージされていた方が使い勝手がいいですね。

では、この使い方について説明します。

ピンヘッダのハンダ付け

別途購入した2.54mmピンヘッダをニッパで切り取り、下図のようにハンダ付けします。
SS_wroom-howto02
SS_wroom-howto03

UART(シリアル) ATコマンド通信の方法

1.USBでパソコンと接続

下図のようにブレッドボードに設置し、microUSB と パソコンを接続します。

※パソコンにUSBで接続する場合は、USBハブは使わず、必ず直接接続してください。
USBハブでは電流量が足りなくなる場合があるためです。


SS_wroom02

接続したらWindows8以上ならUSBドライバが自動インストールされますので、終わるまでしばらく待ちます。
それが終わると、ArduinoIDEのCOMポートが使用可能になります。
USBUARTシリアルのATコマンド通信を始めるにはこれだけ接続すればOK!!
Arduino UNO などの別途ハードウェアは不要です。
実に簡単!!

2.Arduino IDE シリアルモニター起動

次にUSBをPCと接続した状態で、Arduino IDE を起動します。
(参考)

私はこちらのArduino.cc ページのIDEバージョン 1.8.0 を使ってます。
Arduino.orgページの過去バージョンIDE(1.7.**)ではATコマンド通信は問題ないのですが、後述するフラッシュに直接スケッチを書き込むことができないので注意です。

起動したら、下図のようにツールメニューのポートをご自分の環境のCOMポートを選択して下さい。
※USBハブは電流供給が足りない場合があります。その場合はCOMポートとして認識されないので、パソコンのUSBポートに直接接続してください。

AT01
そして次に下図のようにシリアルモニターを起動します。
AT02

3.シリアルモニターの通信速度等の設定

シリアモニターを開いたら、このようにCR(キャリッジリターン)とLF(ラインフィード)を選択。
通信速度を115200 bps に設定します。
以前の記事でも述べましたが、WROOMはシリアル通信では 115200bps 通信がデフォルトだからです。
また、ATコマンド通信はコマンドの後にCRとLFを送信しなければならないので、ここで設定しておけば、自動的に送信してくれます。

SS_wroom-howto05

4.ATコマンドの送受信

まず、下図のリセットスイッチを押します。
SS_wroom-howto12
すると下図のように文字化けデータが表示されます。
この文字化けデータはWROOMは電源起動直後はかなり遅いビットレート76800bpsで通信してくるため、シリアルモニターの115200bpsでは読み取れないのです。この文字列は無視してOKです。
その後、「ready」と表示されればWROOMと正常にUART(シリアル)通信できます。
「ready」以降に115200bpsで送信されてくるので、シリアルモニターで判読可能になります。
そうしたら、コマンド入力欄に「AT」と入力しエンターキーまたは送信ボタンをクリックします。

SS_wroom-howto06

下図のように、空行の後に「OK」と表示されれば、ATコマンドも正常に送受信できているという証拠です。
SS_wroom-howto07

次に AT+GMR と入力するとESP-WROOM-02のATコマンドのバージョンおよびファームウェアバージョンを確認できます。
今回購入したものはATコマンドバージョンが0.40 でファームが1.3.0でしたが、こちらのページでは2015/11/18時点で ATコマンドおよびファームのバージョンは 1.4.0 となっていました。ファームのアップデート方法は近々説明しようと思ってます。
SS_wroom-howto08

ATコマンドの英語版マニュアルは以下のページにありますので、ご参照ください。
http://espressif.com/en/products/hardware/esp8266ex/resources

また、もし、うまく動作しない場合は、以下のトラブルシューティングを参照してください。
ESP8266, ESP-WROOM-02, ESPr Developer トラブルシューティングまとめ

このATコマンド通信というものの用途はいったい何かというと、主に別途Arduino UNOなどのハードウェアとシリアル通信して、そのデータをWROOMでWi-Fiで飛ばすような時に使うみたいです。
ですから、後述するフラッシュに直接Aruduinoスケッチを書き込む場合にはATコマンドは使用できません。
このATコマンドはWROOMをいろいろな動作モードにチェンジすることができます。
まだ実験していないのですが、もしかしたらATコマンドで動作モードを変えた後にフラッシュで直接Arduinoスケッチを書き込むといろいろとオモシロイことができるのかもしれません。
いつか実験したいと思います。

UART(シリアル)通信のATコマンドについては以上です。
実際の工作例は過去記事を参照してみてください。
ただ、Arduino とシリアル通信する場合は、Arduino側のソフトウェアシリアルの速度が115200bpsに対応しておりませんのでご注意ください。その場合は過去記事のようにハードウェアシリアルとソフトウェアシリアルの接続コードを差し替えるか、WROOMの通信速度をATコマンドを使って9600bpsに落としてください。
通信速度(baudrate)を変えるコマンドは しえすた さんから教えていただきました。
AT+UART_DEF=9600,8,1,0,3
という風に入力すると変えられるようです。ですが、しばらくATコマンドを使っておらず、まだ私は試していません・・・。申し訳ございません・・・m__m
最近は後述するフラッシュに直接Arduinoスケッチを書き込んでいます。

少し前までは初めてのATコマンド通信という記事にあるようにATコマンドを成功させるだけでも一苦労でした。 しかし、このスイッチサイエンスさんの開発ボードはATコマンド通信は何のトラブルもなく楽チンです。しかも初期立ち上げ以外は文字化けもありません。
これはおすすめボードですよ。

Arduinoスケッチをフラッシュに直接書き込み、ESP-WROOM-02をArduino化する

最近は私はもっぱらこの方法でしかWROOMを使っておりません。
ESP-WROOM-02をArduino化してしまうと、ATコマンドには戻れませんね。戻る必要が無いかもしれません。
さらに、もはやArduinoハードウェアは不要のような気がしてくるほど、この方法はポテンシャルがスゴイです。
最初はとっつきにくかったのですが、スイッチサイエンスさんの開発ボードを使うとかなりサクッと簡単になりました!!

因みに、この方法を使うとフラッシュメモリを全て書き換えてArduino化することになるので、ATコマンドは使えなくなります。
再度ATコマンドに戻りたい場合はATコマンド仕様のフラッシュに書き換えなければなりませんのでご注意ください

1.Arduino IDEにESP8266ボードをインストール

まずは、Arduino.cc ページのArduino IDE をパソコンに予めインストールしておきます。
(2017/1/16時点で絶好調のバージョンは1.8.0です)
間違えてはいけないのは Arduino.orgページのIDEをインストールしないことです。
ボードマネージャーでESP8266ボードをインストールできるのはArduin.ccページのIDEですのでお間違いなきように・・・。
インストールの方法については、こちらの記事
●Arduino IDE に Stable ( Staging )版 ESP8266 ボードをインストールする方法
をご覧ください。

2.スケッチをコンパイル書き込み

ESP8266ボードもインストールして、設定が済んだらスマホブラウザに Hello World というテキストを表示させてみましょう。

以下のソースコードをコピペして、Arduino IDEのスケッチへ貼り付けてください。

#include <ESP8266WiFi.h>

//ご自分のルーターのSSIDを入力してください
const char* ssid = "xxxx";
//ご自分のルーターのパスワード
const char* password = "xxxx";

boolean Ini_html_on = false;//ブラウザからの初回HTTPレスポンス完了したかどうかのフラグ

WiFiServer server(80);
WiFiClient client;

void setup() {
  Serial.begin(115200);
  // Connect to WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());

}

//************メインループ********************************
void loop() {
  if(Ini_html_on == false){
      Ini_HTTP_Response();
  }else if(client.available()){
    Serial.print(client.read());
  }
  delay(1);//これは重要かも。これがないと動作かも。
}

//*****初回ブラウザからのGET要求によるHTMLタグ吐き出しHTTPレスポンス*******
void Ini_HTTP_Response()
{
  client = server.available();//クライアント生成
  delay(1);
  String req;

  while(client){
    if(client.available()){
      req = client.readStringUntil('\n');
      Serial.println(req);
      if (req.indexOf("GET / HTTP") >= 0 || req.indexOf("GET /favicon") >= 0){//ブラウザからリクエストを受信したらこの文字列を検知する
        //Google Chromeの場合faviconリクエストが来るのでそれも検出する
        Serial.println("-----from Browser FirstTime HTTP Request---------");
        Serial.println(req);
        //ブラウザからのリクエストで空行(\r\nが先頭になる)まで読み込む
        while(req.indexOf("\r") != 0){
          req = client.readStringUntil('\n');//\nまで読み込むが\n自身は文字列に含まれず、捨てられる
          Serial.println(req);
        }
        req = "";
        delay(10);//10ms待ってレスポンスをブラウザに送信
  
        //メモリ節約のため、Fマクロで文字列を囲う
        //普通のHTTPレスポンスヘッダ
        client.print(F("HTTP/1.1 200 OK\r\n"));
        client.print(F("Content-Type:text/html\r\n"));
        client.print(F("Connection:close\r\n\r\n"));//1行空行が必要
        //ここからブラウザ表示のためのHTML JavaScript吐き出し
        client.println(F("<!DOCTYPE html>"));
        client.println(F("<html>"));
        client.println(F("<font size=30>"));
        client.println(F("Hello World"));
        client.println(F("</html>\r\n"));
  
        delay(1);//これが重要!これが無いと切断できないかもしれない。
        client.stop();//一旦ブラウザとコネクション切断する。
  
        Serial.println("\nGET HTTP client stop--------------------");
        req = "";
        Ini_html_on = false;  //一回切りの接続にしたい場合、ここをtrueにする。                
      }
    }
  }
}

5行目と7行目にそれぞれご自分のWi-FiルーターのSSID、パスワードにそれぞれ書き換えてください。

その後、コンパイルするとこのような画面になればOKです。
SS_wroom-howto16
完了したら間髪入れずに即シリアルモニターを立ち上げます。
するとこんな感じに表示されます。
SS_wroom-howto17

スマホブラウザとのコネクション

このローカルIPアドレスをスマホブラウザのURL入力欄に下図のように入力します。
SS_wroom-howto18
するとシリアルモニターにはこんな感じで表示されます。
SS_wroom-howto19
これはGoogle Chromeの場合ですが、ブラウザからGETリクエストメッセージを受信しています。
受信したらWROOMからHTTPレスポンスヘッダを含んだHTMLタグをブラウザへ送信して、コネクション切断します。
すると、ブラウザに Hello World と表示されるはずです。
SS_wroom-howto15
iOSのSafariでも同様に表示されると思いますので、持っている方は試してみてください。

もし、うまく動作しない場合は、以下のトラブルシューティングを参照してください。
ESP8266, ESP-WROOM-02, ESPr Developer トラブルシューティングまとめ

これを過去の記事でATコマンドでやりましたが、この方が遙かに簡単ですね。
Arduino UNOではメモリがギリギリでしたが、ESP-WROOM-02 はメモリが膨大ですので、余裕~~です。

双方向ストリーミング通信WebSocketを試してみる

上記のHello World では物足りない方には双方向ストリーミング通信のWebSocketをやってみましょう。

まず、下図のように接続して、USBでパソコンとESP-WROOM-02開発ボードを接続してみてください。

SS_wroom-howto11

予め、ご自分のWi-FiルーターにはWROOMにアクセスできるようにセットアップを済ましておいてください。
そして、このWebSocketのページのソースコードをスケッチにコピペして、ご自分のルーターのSSID、パスワード、ローカルIPアドレスに書き換えて、コンパイルしてWROOMに書き込んでください。
(※ソースコードが長いので、テキストの最初をクリックして、コードの最後をシフトキーを押しながらクリックするとソースコードが全て選択されます)

ローカルIPアドレスは予めルーター側で割り当ててあれば問題ないのですが、DHCPサーバで自動割り当てにしている場合はSSIDとパスワードだけ書き換えて、ローカルIPアドレスは”XXX.XXX.XXX.XXX”のままにしておいてコンパイルしてください。
すると、シリアルモニターに下図のように表示されます。
SS_wroom-howto14
このIPアドレスをメモっておいて、再度ソースプログラムスケッチのローカルIPアドレスを書き換えればOKです。

コンパイルでこの開発ボードのスゴイところは、何度も書き込みし直しても、リセットしたり、USBを抜いたり、GPIO #0 を差し替えてたりする必要が無くなっていることが分かると思います。これは素晴らしいですね!!

そしたら、Google ChromeなどのスマホブラウザのURL入力欄に先ほど打ち込んだご自分のWROOMのローカルIPアドレスを入力するとこのようにLED調光コントロールできると思います。
SS_wroom-howto10
因みに過去の記事にあるように、スマホは出来るだけ最新の高速CPUの物を使用して、ブラウザやOSはできるだけ最新のものを使用してくださいね。

トラブルシューティング

ESPr Developer のトラブルシューティングについては、以下のページを参照してください。
コンパイルできない、動作が安定しないなどの対処方法を列挙してます。

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

以上です。
どうですか?
このクセのあるデバイス ESP-WROOM-02 がとても使いやすくなっていると思いませんか?
これで、他の電子工作の実験が早くできそうです。
ということで、このスイッチサイエンスさんのESP-WROOM-02開発ボードの使い方をザッと紹介しました。
もっとイイ使い方があったらまたご紹介する予定です。
因みに、WebSocket通信のソースコードも近々ライブラリ化する予定ですので、しばらくお待ちください。

ライブラリ作成しました!!
最新記事ではバージョンアップして、格段に使いやすくなりました。LEDを3つコントロールできて、WebSocket通信がサクサク動きます。
現在BETA1.48です。
こちらのページをご覧ください。2016/7/11
EWS_Beta13_15

スポンサーリンク

広告 と mgo-tec電子工作 関連コンテンツ

さらに最新記事ではスマホ写真をWi-Fi送信してフルカラー有機EL ( OLED )に表示させたり、ツイッター記事自動取得やNTP時計、BME280搭載、温湿度・気圧センサーのグラフ表示、WEB連動4連ドットマトリックス電光掲示板電光掲示板も作りました。
以下の記事をご覧ください。

スマホのJPEG写真や画像をWi-Fiで飛ばして OLED ( 有機EL )に表示させてみた

Twitter 検索結果のツイートを有機EL ( OLED )に表示させてみた
twitter_ssd1351_04
NTP時刻・温度・湿度・気圧データのSDカードロガー制作。日本語フォントもSDカードから読み込む
SD_ntp_bme280_ssd1351_05
ESP-WROOM-02 と 極小OLED (有機EL) で Yahooニュース電光掲示板とNTP時計を表示させてみました
ws_OLED_SSD1306_09
自作LED電光掲示板に Yahooニュースや 天気予報 を表示させ、さらに NTP 時計機能追加しました
ws_Yahoo_message04

Amazon.co.jp広告







投稿者:

mgo-tec

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

「ESPr Developer ( ESP-WROOM-02 開発ボード )の使い方をザッと紹介」への39件のフィードバック

  1. 楽しく拝見させていただいてます。早速購入しました。
    ESP FLASH DOWNLOAD TOOLでファームウェアのバージョンアップを行ったところ、少々ハマってしまったので、コメントさせて頂きます。Arduino IDEとは関係なく申し訳ありません。
    ESP FLASH DOWNLOAD TOOLでSTARTボタンを押す前に、IO0スイッチを押した状態で、RESETボタンを押して離し、IO0スイッチを押した状態のまま、ESP FLASH DOWNLOAD TOOLのSTARTボタンを押さないと、ファームウェアの書き込みが出来ませんでした。
    週末にArduino IDEとWebSocketを試したいと思います。

    1. 記事をお読みいただき、ありがとうございます。
      実は、私もファームウェアアップデートはハマリまして、GPIO#0を押したまままにしなければいけないことは体験していました。ただ、アップデート開始したらボタンを離しても問題なかったと思います。押したままだとちょっと辛いですからね。
      ただ、それでも私の方はうまくアップデートできなかったんです。
      ですから、それの方法について記事を書けなかったんです。
      ただ、ATコマンドは最近殆ど使っておらす、Arduinoスケッチを直に書き込んでいるので、アップデートしなくてもいいかな・・・、と思ってます。
      Arduino IDE でスケッチを書き込むときは、「WebSocketライブラリ、ベータのベータバージョンを作ってみました」記事でも書いてありますが、IDEのESP8266ボードをStagingバージョンにして、「ツール」メニューの「Reset Method」をnodemcuにすると、GPIO#0やリセットスイッチを押さなくてもバンバン書き込めます。Stableバージョンでも、SPIFFSファイルシステムを使わなければ、同じように書き込めます。FLASH DOWNLOAD TOOL使用に限ってはスイッチサイエンスさんの開発ボードはほんの少しだけ使いにくいかも知れませんね。その他は格段に使いやすいですが・・・。

      1. FLASH DOWNLOAD TOOLでのファームウェアアップデートですが、STARTボタンを押した直後にリセットパルスが一瞬出て
        ファームウェアの書き込みモードが解除されてしまいます。
        (オシロで確認しています)
        よって、対策としては GND-RESET間に0.1uFのセラコンを
        入れる事で解決します。Arduino IDEからの書き込みも問題ありません。
        開発ボードもArduino互換ボードも同じ回路なので同様の対策で
        OKです。

      2. ESP FLASH DOWNLOAD TOOLでファームウェアのバージョンアップ
        ですが、STARTボタンを押した直後に一瞬リセットが掛かり
        ファームウェアの書き込みモードが解除される事をオシロで確認しました。
        これがファームウェアの書き込みに失敗する原因です。
        対策としては、GND – RESET 間に0.1uFのセラコンを接続する事で解決します。

        Arduino IDE でスケッチを書き込む時も問題無い事を確認しています。
        ESP-WROOM-02開発ボードおよびESP-WROOM-02 Arduino互換ボードは同じ
        回路ですから対策は同じ、GND – RESET 間に0.1uFのセラコンを接続する、でOKです

        なお、ESP DOWNLOAD TOOL は、Ver2.4を使いました。

        スイッチサイエンスさんの検証が不十分だと感じました。

        1. コメント投稿ありがとうございます!!!
          とても有益な情報、感謝いたしますm_ _m
          へぇ~、そうだったんだ・・・と感心してしまいました。
          やっぱり不具合の時はオシロで確認が原則でしたね。自分も反省です・・・。
          しばらく当方では不具合が無く、FLASH DOWNLOAD TOOLも使っておりませんでした。
          今取り込み中の作業が終わったら是非試してみたいと思います。
          結果が分かり次第、コメントか記事でお知らせしたいと思っています。

  2. ありがとうございます。参考にさせていただいてます。
    ESP-WROOM-02 開発ボードを購入し早速Hello Worldをコピペし
    コンパイルしてみたところ何度やっても
    exit status 1
    ‘Ini_HTTP_Response’ was not declared in this scope
    が出て書き込みまで至りません。
    IDEはccの1.6.7でATコマンドまでの確認はできています。
    ソースはSSIDとパスワードを書き換えただけです。
    (仕様ぽいですがLチカを書き込んだらATコマンドが使えなくなってますが)
    なにかアドバイス有りませんでしょうか?
    よろしくお願いします。

    1. pikapikaさん

      コメント有難うございます。
      早速、Arduino IDE ver 1.6.7 で試してみました。
      当方でも同じ症状が確認できました。

      やはり、ESP8266ボードを使用する場合は Arduino IDE 1.6.5 でないと動かないようです。
      過去のバージョンは以下のアドレスからダウンロードできます。
      https://www.arduino.cc/en/Main/OldSoftwareReleases#previous

      1.6.5 で再度試したら問題なく動きました。
      GitHubのArduino core for ESP8266 WiFi chip ページでも1.6.5を推奨しているようです。
      当方のIDEリンクページでも1.6.7のページへ誘導していたのが悪かったですね。
      即訂正します。失礼いたしました。

      ちなみに、現在のESP8266ボードのバージョンではツールメニューの Reset Method は “nodemcu” にしておくと、リセットボタンを押さなくても書き込めます。

      では、これで試してみて、まだ不具合ありましたらご連絡ください。

    2. pikapikaさん

      もう一つ答え忘れてました。

      ESP8266ボードをインストールして、Arduinoスケッチを書き込むと、ATコマンドは使えなくなります。要するにESP-WROOM-02が全てArduino化してしまったわけです。
      もし、またATコマンドに戻りたい場合はATコマンド仕様フラッシュに書き換えなければなりません。
      その戻し方は当ブログでは紹介しておりません。ネット検索するといろいろなサイトで見つかると思いますので、ご確認してみてください。

  3. 早速、確認いただきありがとうございました。
    1.6.5で問題なく動作しました。
    ようやく第一歩が踏み出せた気がします。
    これからも拝見させていただきますのでよろしくお願いします。

    1. pikapikaさん

      動いて良かったですね。
      でも、1.6.5 限定という仕様もなんとか改善してほしいと個人的に思ってます。

      これからも当ブログをよろしくお願いします。

  4. 素晴らしい記事をありがとうございます!
    私はMAC PROで行いましたが、全く問題なく無事にHello worldがでました!
    スムーズにできて感動しております。

    1点だけ、IPアドレスをたたき、Hello worldが出た後、
    再度リロードで表示させようとすると、アクセスできなくなります。
    リセットボタンを押すと同じようにアクセスできるのですが、
    2回目以降のrequestを受け付けません。
    何か原因などわかりましたら、ご教授いただけると幸いです。

    1. Masaさん

      仕事中でお返事遅くなり申し訳ございません。
      MACで動くかどうか心配だったのですが、動いて安心しました。
      ご報告ありがとうございます。

      さて、Hello Worldプログラムの再接続は想定してませんでした。
      すぐに次のステップに進むだろうと思い込んでました。
      大変失礼いたしました。

      ブラウザのURL入力欄で再接続できるようにするためには、
      88行目のIni_html_on = true; を
      Ini_html_on = false;
      と変更すれば、再接続できると思います。
      試してみてください。

      1. お返事いただいてありがとうございます!
        falseにすると、まさにwebサーバとなりました!
        素敵な記事をありがとうございました。
        これからも拝見させていただきます。
        よろしくお願いします。

        1. Masaさん

          再接続できて良かったです。
          こちらこそ、これからもどうぞよろしくお願いします。

  5. こんばんわ。
    私もボードを入手してやり始めました。楽しいですね。
    ところで、”‘Ini_HTTP_Response’ was not declared in this scope” エラーですが、呼ばれる関数がメインルーチンの後にあるから出るようです。IDEは1.6.7で、後方参照に対するコンパイラのチェックが厳しいんでしょうね。

    解決法は、呼ばれる関数をメインのloop() より前に置けばいいだけです。無事コンパイル通って表示できました。

    もっと大きなプログラムなら、関数はライブラリ化して、最初にインクルードするというスタイルだから、なのかもしれませんね。
    では。

    1. 船長さん

      いろいろとバタついていてお返事遅くなり、申し訳ございません。

      もの凄く有益な情報ありがとうございました。
      早速、私も1.6.7 で void Ini_HTTP_Response(); をloop()の前に置いてコンパイル実行してみました。
      見事! 問題なく動きました!!
      昔ながらのC言語と同様の方式に変わったんですね・・・。

      他のサンプルスケッチで見てみたら、何でメインループの前に関数宣言を置いているのか疑問だったんです。
      1.6.7の仕様をちゃんと読んでませんでした。

      これから、1.6.7も視野に入れながら開発していきたいと思います。
      ありがとうございました!!!

  6. mgo-tec様

    ブログを拝見させて頂きESP-WROOM-02 開発ボードを利用しているのですが、ESP-WROOM-02にスケッチの書き込みが出来なくなってしまいまいした。
    もし宜しければココを確認するなど良いなど御座いましたらご指摘頂けると幸いです。

    ###エラー内容
    スケッチ例のBlinkを書き込もうとした場合
    “`
    スケッチが プログラムストレージ領域の 219,219バイト (50%) を使用しています。最大は 434,160バイト です。
    グローバル変数が 31,416バイト (38%) の 動的メモリを使用しており、ローカル変数に 50,504 バイトが残っています。最高は 81,920バイトです。。
    Uploading 223360 bytes from to flash at 0x00000000
    erasing flash
    size: 036880 address: 000000
    first_sector_index: 0
    total_sector_count: 55
    head_sector_count: 16
    adjusted_sector_count: 39
    erase_size: 027000
    espcomm_send_command: sending command header
    espcomm_send_command: sending command payload
    setting timeout 15000
    setting character timeout 150
    done
    setting timeout 1
    setting character timeout 1
    done
    warning: espcomm_send_command: didn’t receive command response
    warning: espcomm_send_command(FLASH_DOWNLOAD_BEGIN) failed
    closing bootloader
    error: espcomm_upload_mem failed
    “`

    error: espcomm_upload_mem failed との事なので書き込みが出来ていないのかなーと。
    ※error: espcomm_open failedのエラーはないのでopenは出来ているのかなーと。

    電源はPCからのUSBですが先日まで同条件で行っていたので、大丈夫かとは考えていますが。。。

    1. katoさん

      当ブログをご覧いただきありがとうございます。
      このエラーは初めて見ました。
      もう一度Arduino IDE のボードマネージャーの設定を見直してみてください。
      マイコンボードが Generic ESP8266 になっていますでしょうか?
      FLASHサイズもできるだけ大きい値にしてみてください。
      特にReset Method が nodemcu になっていますでしょうか?
      その他の設定も再確認してみてください。
      ボードマネージャーでインストールしたものを一旦削除して、最新ボード(2016/4/12現在で2.1.0)でインストールし直してみてください。

      また、ESP-WROOM-02 のシリアル入出力端子に何か別のものが接続されているとアップロードできませんので抜いてください。TXD, RXDという端子です。

      それでもダメなら、USBの電流供給量が足りないかもしれません。
      または、Arduino IDE 1.6.5 ならば、以下のリンクページを参照していただき、IDE 1.6.8 にしたら上手くいく可能性があります。
      https://www.mgo-tec.com/blog-entry-wroom-arduino-ide168.html

      それでもダメなら、もしかしたらハードが壊れているかも・・・。
      今、私が思いつく対処はこんなところですが・・・。

  7. mgo-tec様

    ご返答有難う御座います。
    以下確認しました。
    Generic ESP8266 になっていますでしょうか?
    > はい。Generic ESP8266となります。

    FLASHサイズもできるだけ大きい値にしてみてください。
    > いくつかの変更してみましたが結果変わらずですね。。。

    Reset Method が nodemcu になっていますでしょうか?
    > “nodemcu”となります。併せて手動?の”ck”にしてio0のon, offでも試しましたが結果変わらず。。。

    最新ボード(2016/4/12現在で2.1.0)でインストールし直してみてください。
    > 再インストール及び再起動してみましたがダメでした。。。stable, staging両方試したり、バージョンを下げたのを試したりも行いましたがダメでした。。。

    ESP-WROOM-02 のシリアル入出力端子に何か別のものが接続されているとアップロードできませんので抜いてください。TXD, RXDという端子です。
    >全ての入出力端子を抜いて、USBで本体とPCがのみがつながっている状態となります。

    その他として
    USBポートを変えてみたり、USBケーブルを変更してみましたがダメでした。。。
    電流の供給量を計る物を持っていないので何ともですが、2-3日前までPCからの供給で書き込み出来ていたので同じ状況なので大丈夫かなーと考えておりますが。。。

    Arduino IDE 1.6.5 ならば、以下のリンクページを参照していただき、IDE 1.6.8
    >1.6.5でしたので1.6.8をインストール及びボードも再インストールなど一通り行いましたがダメでした。
    1.6.5と1.6.8の変わった点として
    “`
    warning: espcomm_send_command: didn’t receive command response
    warning: espcomm_send_command(FLASH_DOWNLOAD_BEGIN) failed
    closing bootloader

    “`
    1.6.5の時は最後に表示されていた”error: espcomm_upload_mem failed”の表示がなくなりました。
    ※出力されるエラー内容は同じです。

    やはりハードが壊れている可能性が高いですかね。。。
    色々ご指摘頂き本当に有難う御座います。

    1. なるほど・・・。
      すべて効果無しでしたか・・・。

      メッセージから見ると、肝心のチップのESP8266が起動していない感じですね。
      USBにプラスして電流容量に余裕のある(例えば1Aくらい)ACアダプター外部電源からも供給してみるとかでしょうか・・・。
      (スイッチサイエンスさんのホームページではVINに 3.7V~6V とあります。)

      また、もうすでに試していると思いますが、Reset Method を”ck” にして、IO0のスイッチを押しながら書込みをしてみてください。書込みが終わるまで、押しっぱなしです。

      あとは、他の方がブログ等で挙げている方法でFLASHダウンロードツールを使用してファームウェアをアップデートしてみるしかないでしょうか。
      これについては現段階では私はまだ試しておりませんので、アドバイスできずに申し訳ありません。

      それでもダメなら、ちょっとお手上げですね・・・。
      これでお力になれなかったら申し訳ございません。

      1. kato様と同じ症状で悩まされていましたが、
        mgo-tec様の忠告の「IO0のスイッチを押しながら書込み」で
        書き込みすることができました。

        ありがとうございました。

        1. moさん

          コメントありがとうございます。
          使われているESPr Developer にRev.3 の印刷があるものでしょうか?
          そうだとすると、katoさんと同じ症状は特殊というよりか、何か原因がありそうですね。
          IO0スイッチを「押しながら書き込み」で全て解決できれば良いのですが、それ以外はちょっと分からないですね。

          1. mgo-tec様

            ESPr Developer にRev.3 の印刷があります。
            開発ボードもそうですが、ESP8266は個体差というか製品ごとに癖?があるような気がします。
            すぐにうまくいくものと、ATコマンドやらリセットなど散々試してうまくいくものなど、一様ではない印象を受けています。

          2. moさん

            そうですか・・・。
            動作が安定しない原因は、USBから供給される電流が少ない場合があります。
            例えば、USBハブを使っている場合は電流量が少ないので動作が不安定になるようです。
            時には300mAを超える場合がありますので、必ずパソコンのUSBポート(MAX 500mA)に直挿しするか、大容量モバイルバッテリーに接続するか、スマホ充電器を使うと動作が安定すると思います。

            それでも動作がおかしい場合は、私にはお手上げです。
            私も4台くらいESPr Developer を使っておりますが、全て安定動作しております。
            (最近はATコマンドは全く使っておりませんが・・・)

  8. 記事大変参考になりました!

    私も,先日ESP-WROOM-02開発ボードを購入してArduino環境で遊んでいます.

    環境は

    Mac OSX Yosemite 10.10.5
    Arduino IDE 1.6.9
    ESP Community 2.2.0
    ESP-WROOM-02

    なのですが,Reset Method:nodemcu
    を設定しても手動で書き込みモードにしないと書き込めません.
    いろいろ,サイトを見たのですが解決方法が見つかりませんでした...

    もし,解決方法を知ってい方がいましたら教えてください.

    1. xionさん

      コメント投稿ありがとうございます。
      ですが、残念ながら私はMACは持ち合わせておりません。
      すべてWindowsPCなんです。
      ですから、MAC環境は全く分からないんです。
      お役に立てず申し訳ございませんm_ _m

  9. mgo-tec様

    ブログを拝見させて頂きESP-WROOM-02 の練習をやろうとしていますが、初めでつまずいてしまいました。ARDUINO 1.6.10をインストールし(1.6.8が見つからないため)、”ツール”→”ポート”と進もうとしたら、”ポート”という項目が見当たりません。”Upload speed”の下の項目は”シリアルポート”となっています。また、1.6.10では”ツール”の下に”Debug Port”とか”Debug Level”とかの項目が追加されています。この辺を適切に選択する必要があるのか。。。。

    本ブログの”お知らせ”に1.6.10動作確認したとありますが、その手順を教えて頂けませんでしょうか?

    以上、よろしくお願いいたします。

    1. fuyachoさん

      当ブログをご覧いただきありがとうございます。
      大変スミマセンでした。
      ATコマンドの記事の画像が古かったので、たった今1.6.10の画面に差し替えました。
      ATコマンドに関しては、Debug port などは設定しなくてもよいです。
      シリアルポートののみを使います。

  10. fuyachoです。

     USBケーブルをWINDOWSPC->USBHUB→(USB CABLE)→ESP-WROOM-02と接続していたのを、

    WINDOWSPC→ESP-WROOM-02としたらCOMポートがToolの下に出てきました。

    またトラブったら教えてください、今回は自己解決でした。

    fuyacho

    1. なるほど・・・。
      USBハブを使う方もいらっしゃることを考えてませんでした。
      確かに、USBハブは電源供給が足りないので、COMポート認識しない可能性が大きいですね。
      記事に注意事項として追加しておきました。
      ご指摘ありがとうございました。

  11. 電子工作初心者ですが、参考にさせていただき助かってます。
    ESPr One+AruduinoIDEで遊んでます。

    基本的な質問で恐縮なのですが、
    スマホとかで周りのWi-Fi APを探したとき、ESPr One自体が
    「ESP_082EDC」とネットワーク選択一覧に出てしまうのですが
    AP機能を無効にか、ステルスモードにするか、SSIDパスワード
    を設定するか、したいのですが、方法をご教示いただきたくお願い申し上げます。

    1. 鈴木さん

      当ブログをご覧いただき、ありがとうございます。

      ATコマンドで制御する場合は、Wi-Fiアナライザーなどで見るとアクセスポイントとしてESP_…と出ますね。
      今、私は全くATコマンドを使用しておらず、ESPrにArduino IDEに直接スケッチを書き込んでいます。
      その場合、ESPr自身がアクセスポイントになるモードのスケッチを書き込むとWi-Fiアナライザーで検知しますが、ステーションモードというものでスケッチを書き込むと検知しません。
      このブログでは殆どステーションモードで紹介しております。
      (EasyWebSocket でAPモード対応した記事もあります)
      ATコマンドよりも直接スケッチを書きこんだ方が遙かに使い勝手が良いですよ。
      この記事より先では、SSIDとパスワードを入力できるスケッチも沢山ありますので、よろしかったらご覧ください。
      例えば、これ→ https://www.mgo-tec.com/blog-entry-easywebsocket-beta13.html
      ちなみに、ステルスモードは使ったことはありません。

      もし、何かわからないことがあれば、コメントくださいませ。

  12. ご回答ありがとうございます。
    私はネット上の例題を真似てESPrにArduino IDEに直接スケッチを書き込んでるつもりなのですが。。。ステーションモードというものを手掛かりにもう一度見直してみます。

    1. そうですか・・・。
      当ブログで紹介している記事のソースコードでコンパイルしても、Wi-FiアナライザでESP_082EDCというSSIDが出るようだったら、よろしかったらその記事を教えてください。
      こちらでも試してみます。

  13. mgo-tec様

    ブログとても参考にさせていただいています。
    ESP-WROOM-02を2台使ってラジコン的なものを作ろうとしています。

    しかし双方向通信をしようとしてWebSocketを使った際、どうしても「WS.close.DisConnected」と出てしまい、ブラウザとの通信ができません…。
    WROOM-02に書き込んだHTMLは正常に表示されていて、シリアルモニタにも解説と違うような表示はなさそうです。
    同じLANにつないでいて、IPアドレスも間違ってはいないと思うのですが、何かエラーの心当たりございますでしょうか…?

    使っているのは
    ・Arduino 1.6.5
    ・ESPr Developer
    ・iPhone6のSafari
    です。

    1. bolcofさん

      当ブログをご覧いただき、ありがとうございます。
      ESPr Developer 2台でラジコンということは、間にルーターを通して通信するということでしょうか?
      それとも、SoftAP モードを使ってルーターを介さないで通信するということでしょうか?

      ブラウザにESPrから送ったHTMLページが表示されているのだとしたら、WebSocketだけの問題です。
      EasyWebSocketライブラリを使っていますでしょうか?
      使っているのならば、忘れがちなのは spiffs_01.txt ファイルの
      ws://xxx.xxx.xxx.xxx
      のところのIPアドレスを変えることです。

      その他、iOS Safari は残念ながらWebSocket通信が良く途切れます。
      EasyWebSocket はSPIFFSファイルシステムを使う最新版バージョンは1.39です。
      それを使うと途切れが少なくなります。
      Androidの最新スマホでGoogle Chromeならば殆ど途切れません。
      iOS版Google ChromeはSafariと変わらずWebSocketは途切れやすいです。
      やはりOSが問題なんでしょうか・・・。

      Arduino IDE も最新バージョンを使って、ESP8266ボードも最新のものをインストールすると若干解消されます。
      Arduino IDE を再インストールして、ボードマネージャーで最新のESP8266ボードをインストールする場合には気を付けていただきたいことがあります。
      Windowsの場合、Arduino15フォルダを削除してからインストールすることです。
      それに関しては以下の記事を参照してください。
      https://www.mgo-tec.com/esp8266-board-install01-html

      それでも動かない場合はまたコメントお待ちしております。

      1. mgo-tec様

        せっかく返信いただいたのに返答遅くなりすみません…。
        コメントを見失っていました。

        少し距離があるので、間にルーターを通して通信するつもりでした。
        これ以前の記事を読んでうなっていたので、EasyWebSocketを使って頑張ってみます!

        ブラウザなどについても詳しく教えていただきありがとうございます!!!

        1. bolcofさん

          いえいえ、逆にご返信ありがとうございます。
          EasyWebSocket 是非試してみてください。
          ちゃんと動いてくれることを願っております。

コメントを残す

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

*