macsbug

Just another WordPress.com site

ESP8266 耐久テスト

leave a comment »

Arduino DUE + ESP8266 (ESP-WROOM-02) (57600bps) で構成し耐久テストを行う。 2015.08.21
Arduino から、HTML文を送信し、ブラウザーにボタンを表示し双方向の通信を行う。

ESP-WROOM-02単体で動くWEBと通信するスケッチを友人が作成。
これを、Arduino用に変換して、iMac Safari で通信し、以下の画面になる。
10秒毎にリロードさせ回数を表示。195回目で一度フリーズしたがボタンを押して再会する。
今の所、512回を遥かに超えている。 尚、連打テストも必要ですね。


 

参考HP:
_  ALLAboutEE :How To Use the ESP8266 and Arduino as a Webserver:注目の場所
_  Serial WIFI Transceiver Module ESP8266:参考スケッチ
_  ESP8266 RFERENCE:AT Command の詳細

通信の構成:

1. ESPの初期化は、以下の esp_begin で行う。
2. WEB からのリクエストと、データーの送受信は、以下の sendData で行う。
3. void Loop では、while(Serial1.available() でボタンを検知する。
4. その後に、if (Serial1.find(“+IPD,”) でデーターの先頭を検知する。
5. +IPD の次は、id の値が来る。この id は、送信時に必要な値。
_  Multi Connection mode:(CIPMUX=1): + IPD, id , len : data
6. 通信が停止する件 その1:+IPD,1,280:GET /favicon.ico HTTP/1.1
_   favicon.ico というデータをクライアントが要求して来る場合がある。
_   その応答の為に停止する事がある。
_   対応は、即座に AT+CIPCLOSE を返せば良い。この場合、以下の esp_begin が必要。
_   参考:Arduino Mini Server debug of GET /favicon.ico
7. 通信が停止する件 その2:busy p.. になると通信が途絶える。
_  BAUDRATEが高すぎる。
_  データー長の違いや欠損等々、If文やwhile文の違いで起こる事もあると判断。
_  対策は、再度 以下の esp_begin の実行が必要。

受信データーの例:
+IPD,0,284:GET /RED=ON HTTP/1.1
Host: 192.168.4.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:35.0) Gecko/20100101 Firefox/35.0 SeaMonkey/2.32.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive

 



void esp_begin(){
     sendData("AT+RST\r\n",2000,DEBUG);            // reset module
     sendData("AT+CWMODE=2\r\n",1000,DEBUG);       // configure as access point
     sendData("AT+CIFSR\r\n",1000,DEBUG);          // get ip address
     sendData("AT+CIPMUX=1\r\n",1000,DEBUG);       // TCP/IP Connection :  Multiple
     sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
}

String sendData(String command, const int timeout, boolean debug){
     String response = "";
     Serial1.print(command);
     long int time = millis();
     while( (time+timeout) > millis()){
       while(Serial1.available()){
         char c = Serial1.read();
         response+=c;
       }  
     }   
     if(debug){Serial.print(response);}    
     return response;
}


HTML方式の限界:
HTMLの記述は、ボタン数個程度なら簡単に出来て便利かと思います。
しかし、機能やデザインを良くする程、記述の量が膨大になり、そしてメモリーの限界が訪れます。

対応策:
Blynk」と言う、iOS アプリを使うのが正解だと判断しています。
Blynk は、 送受信の機能があり、UIも素晴らしい機能を持っています。
ボタン、スライダー、そして、グラフ機能が作れます。
皆さん、素晴らしい電子工作を頑張ってください。

 

 


Written by macsbug

8月 21, 2015 @ 3:18 am

カテゴリー: Arduino, ESP8266

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。