10.picoでwifiサンプル動作 Arduino


10.picoでwifiサンプル動作 Arduino

ESP8266を使用してArduinoでwifi接続をし、指定ホームページの最初の2000文字程度を読取ります。しかし、まだ不明点があります。
・httpsが読めるか。
・日本語の文字化けは直せるか。

ESP8266基板

Pico ESP8266
https://www.waveshare.com/wiki/Pico-ESP8266
・ESP-12F (ESP8266の小さいパッケージ)
・UART通信 115200 bps
・GP0 UART Tx0
・GP1 UART Rx0
・動作電圧 3.3V

ライブラリ

Arduino-IDE のライブリマネージャ検索欄にて "wifi esp8266 pico"で検索すると、11件ヒットしました。全てKhoi Hoang氏のライブラリです。全てインストールしてみました。

1.Blynk_Esp8266AT_WM

[Blynk]
マルチWiFiクレデンシャルを備えたBlynk用のシンプルなWiFiManager、RP2040ベースなどのESP8266ATシールドを実行するボード用。EEPROM、SAMD EEPROMでエミュレートされたFlashStorage、SAM-DUEDueFlashStorageまたはnRF52/RP2040LittleFSに保存された構成データ
https://github.com/khoih-prog/Blynk_Esp8266AT_WM
RP2040_ESP8266Shield.ino

2.DDNS_Generic

[DDNS]
ESP8266-ATを使用して、ESP8266、RP2040ベースのRASPBERRY_PI_PICOなどの自動DDNS更新クライアントを実装するシンプルなライブラリ/ ESP32-AT WiFi、WiFiNINA、イーサネットW5x00、ENC28J60またはLAN8742A。軽量になるように設計されており、現在DuckDNS、No-ip、…をサポートしています。
https://github.com/khoih-prog/DDNS_Generic

3.ESP_AT_Lib

[ラッパー]
Arduino用のESP8266/ESP32ラッパーライブラリは、ESP8266/ESP32-ATシールドを操作するための使いやすい方法を提供します。
https://github.com/khoih-prog/ESP_AT_Lib

4.ESP_AT_WiFiManager

ESP8266/ESP32-ATコマンドシールドを使用して、RP2040ベースのボードなどの実行時にWiFi/クレデンシャルを構成するライブラリ。静的APおよびSTAIPを指定することもできます。
https://github.com/khoih-prog/ESP_AT_WiFiManager

5.ESP_AT_WM_Lite

[4のLite版]
RP2040ベースのRASPBERRY_PI_PICOなどの軽量WiFi/ Credentials Managerは、Web構成ポータルでESP8266/ESP32-ATコマンドシールドを実行します。動的なカスタムパラメータの追加を可能にする、強力でありながら使いやすい機能。静的APおよびSTAIPを指定することもできます。使用するメモを大幅に減らします…
https://github.com/khoih-prog/ESP_AT_WM_Lite
RPi_Pico_ESP8266Shield.ino

6.Ethernet_Manager

[有線LAN]
ESP8266などのボード用のシンプルなイーサネットマネージャー。SSLの有無にかかわらず、構成データはESP8266 LittleFS、SPIFFS、nRF52 LittleFS / InternalFS、EEPROM、DueFlashStorage、またはSAMDFlashStorageに保存されます。
https://github.com/khoih-prog/Ethernet_Manager
Ethernet_RP2040.ino, MQTT_ThingStream_Ethernet_RP2040.ino

7.FTPClient_Generic

[FTP]
RP2040ベースRASPBERRY_PI_PICO等の汎用ボード用のFTPクライアント/ESP8266など)。FTPクライアントはWiFi(ESP82662-AT等)、イーサネット…を使用できます
https://github.com/khoih-prog/FTPClient_Generic

8.NTPClient_Generic

[NTP]
NTPClientがNTPタイムサーバーに接続するためのライブラリ。NTPタイムサーバーから時間を取得し、同期を維持します。AVR以外のESP8266などの場合、ESP8266ATコマンドWiFiを使用。
https://github.com/khoih-prog/NTPClient_Generic

9.Timezone_Generic

[夏時間]
タイムゾーンの変換と自動夏時間の調整を容易にするライブラリ。ESP8266、RP2040ベースRASPBERRY_PI_PICO等を使用するイーサネットまたはWiFiボードなど…
https://github.com/khoih-prog/Timezone_Generic

10.WiFiMulti_Generic

[Multi]
ESP32/ESP8266のWiFiライブラリのMultiWiFiを他のすべてのWiFiモジュールおよびライブラリに適合させるためのシンプルなMultiWiFiライブラリ。現在、ESP8266、RP2040ベース(RASPBERRY_PI_PICOなど)のボードをサポートしています。...
https://github.com/khoih-prog/WiFiMulti_Generic
WiFiMulti.ino

11.WiFiWebServer

[WebServer]
WiFiモジュール/シールドを実行するRP2040ベースなどのボード用のシンプルでありながら完全なWebServerライブラリです。これらの関数はESP8266/ESP32 WebServerライブラリと類似しており、互換性があるため、ESP8266/ESP32からスケッチを移植するのがはるかに簡単になります。現在WiFiMultを使用しています…
https://github.com/khoih-prog/WiFiWebServer

WiFiManager_Generic_Lite

番外 HPより
RP2040ベースRASPBERRY_PI_PICOなどのボードの実行時にMultiWiFi/クレデンシャルを構成するライブラリ、汎用WiFi(ESP8266-ATなど)モジュール/シールドを使用します。DHCPホスト名、静的AP、およびSTAIPを指定することもできます。…
https://github.com/khoih-prog/WiFiManager_Generic_Lite
RP2040_WiFi.ino, RP2040_WiFi_MQTT.ino

API集

3.ESP_AT_Lib
https://github.com/khoih-prog/ESP_AT_Lib
の頁中頃に30以上のAPIの説明があります。また、
9.Timezone_Generic
https://github.com/khoih-prog/Timezone_Generic
の頁中頃にTimezone_Genericライブラリがあります。

サンプル動作

3.ESP_AT_Libのexamples\HTTPGET\HTTPGET.ino
のスケッチを一部修正して動作させます。
・ESP8266/Arduinoに基づいています。
 https://github.com/esp8266/Arduino/releases
・ESP8266 Arduinoの解説
 https://arduino-esp8266.readthedocs.io/en/latest/

HTTP

・Web(サーバー)と、ブラウザ(クライアント)間で、Webページを送受信するためのプロトコルです。
・日本の文字コードは、UTF-8、Shift_JIS、EUC-JPがよく使われています。
・CR LF は \r\n です。

1.Arduino日本語リファレンスの例

1.1 HTTPの要求送信

Arduino日本語リファレンスのSerial.begin(speed)についてスケッチに書く内容です。

GET /arduino/ref/index.php?f=0&pos=3185 HTTP/1.1
 ↑リクエスト ブラウザはサーバにページ取得を要求 特定リソースをリクエスト
Host: www.musashinodenpa.com
 ↑ブラウザからサーバにサーバ名を送信 必須 空白行までヘッダ
Accept-Charset: EUC-JP
 ↑受信可能なエンコード
Connection: close
 ↑接続を閉じる意思有り
空白行

よって、
"GET /arduino/ref/index.php?f=0&pos=3185 HTTP/1.1\r\nHost: www.musashinodenpa.com\r\nAccept-Charset: EUC-JP\r\nConnection: close\r\n\r\n"
となります。

1.2 webページ

Arduino日本語リファレンスのSerial.begin(speed)
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=3185
読込先の頁のソースです。

<html>
<head>
<title>Arduino 日本語リファレンス</title>
</dead>

<style TYPE="text/css">
<!--

BODY { margin:3em 6em 3em 6em; background:white; }
H1 { font-size:110%; margin:1.5em 0.2em 0.5em 0em; border-bottom:1px solid #808080; }
PRE { margin:10px 20px 10px 10px; }

-->
</style>

<body>
<div style="text-align:center">
<font size=+1><b>Arduino 日本語リファレンス</b></font><br>
<hr size=1 noshade>
<br>
<table width=100% cellspacing=9>
<tr>
<td><h2>Serial.begin(speed)  </h2> <a href=http://www.arduino.cc/en/Reference/Serial/Begin
>原文</a><br />
<br />シリアル通信のデータ転送レートをbps(baud)で指定します。bpsはビット/秒です。コンピュータと通信する際は、次のレートから1つを選びます。
<br />300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200
<br />他の転送レートを必要とするコンポーネントをピン0と1につないで使う場合、上記以外の値を指定することも可能です。
<br />
<br />
<br />【パラメータ】
<br />
<br />speed: 転送レート (int)
<br />
<br />【戻り値】
<br />
<br />なし
<br />
<br />【例】
<br />
<br /><pre style="border:2px dotted tomato; padding:10px 10px 10px">void setup() {
	Serial.begin(9600);	// 9600bpsでポートを開く
}

void loop() {}
</pre>
<br />次に示すのはArduino Megaでの使用例です。4つのシリアルポート(Serial, Serial1, Serial2, Serial3)を異なる転送レートで初期化しています。
以下略

1.3 シリアルモニタ出力

実際の出力内容です。ホームページの受信で、文字コードを EUC-JP に合わせても、日本語が文字化けしています。

HTTPGET.ino 開始
ボード名: RASPBERRY_PI_PICO
ESP_AT_Lib v1.4.1
ATコマンドのVer: AT+GMR

AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
Ai-Thinker Technology Co. Ltd.
v1.5.4.1-a Nov 30 2017 15:54:29
OK
AP+STA両モードに設定: 成功
WiFiに接続: 成功
IP:
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"46:17:93:04:8c:ae"
+CIFSR:STAIP,"192.168.68.61"
+CIFSR:STAMAC,"44:17:93:04:8c:ae"
単一接続モードに設定: 成功
設定終了
TCP作成: 成功
========================= 受信 ============================
HTTP/1.1 200 OK
Date: Wed, 06 Jul 2022 05:52:50 GMT
Server: Apache/2.2.15 (FreeBSD) DAV/2 PHP/7.3.9
X-Powered-By: PHP/7.3.9
Content-Length: 2472
Connection: close
Content-Type: text/html; charset=EUC-JP


<html>
<head>
<title>Arduino ⸮⸮⸮ܸ⸮⸮ե⸮⸮⸮⸮</title>
</dead>

<style TYPE="text/css">
<!--

BODY { margin:3em 6em 3em 6em; background:white; }
H1 { font-size:110%; margin:1.5em 0.2em 0.5em 0em; border-bottom:1px solid #808080; }
PRE { margin:10px 20px 10px 10px; }

-->
</style>

<body>
<div style="text-align:center">
<font size=+1><b>Arduino ⸮⸮⸮ܸ⸮⸮ե⸮⸮⸮⸮</b></font><br>
<hr size=1 noshade>
<br>
<table width=100% cellspacing=9>
<tr>
<td><h2>Serial.begin(speed)  </h2> <a href=http://www.arduino.cc/en/Reference/Serial/Begin
>⸮⸮ʸ</a><br />
<br />⸮⸮⸮ꥢ⸮⸮⸮̿⸮⸮Υǡ⸮⸮⸮ž⸮⸮⸮졼⸮Ȥ⸮bps(baud)⸮ǻ⸮⸮ꤷ⸮ޤ⸮⸮⸮bps⸮ϥӥå⸮/⸮äǤ⸮⸮⸮⸮⸮⸮⸮ԥ塼⸮⸮⸮⸮⸮̿⸮⸮⸮⸮⸮ݤϡ⸮⸮⸮⸮Υ졼⸮Ȥ⸮⸮⸮1⸮Ĥ⸮⸮⸮⸮Ӥޤ⸮⸮⸮
<br />300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200
<br />¾⸮⸮ž⸮⸮⸮졼⸮Ȥ⸮ɬ⸮פȤ⸮⸮륳⸮⸮ݡ⸮⸮ͥ⸮Ȥ⸮ԥ⸮0⸮⸮1⸮ˤĤʤ⸮⸮ǻȤ⸮⸮⸮硢⸮嵭⸮ʳ⸮⸮⸮⸮ͤ⸮⸮⸮ꤹ⸮뤳⸮Ȥ⸮⸮ǽ⸮Ǥ⸮⸮⸮
<br />
<br />
<br />⸮ڥѥ⸮᡼⸮⸮⸮⸮
<br />
<br />speed: ž⸮⸮⸮졼⸮⸮ (int)
<br />
<br />⸮⸮⸮⸮⸮⸮͡⸮
<br />
<br />⸮ʤ⸮
<br />
<br />⸮⸮⸮⸮⸮
<br />
<br /><pre style="border:2px dotted tomato; padding:10px 10px 10px">void setup() {
	Serial.begin(9600);	// 9600bps⸮ǥݡ⸮⸮Ȥ򳫤⸮
}

void loop() {}
</pre>
<br />⸮⸮⸮˼⸮⸮⸮⸮Τ⸮Arduino Mega⸮Ǥλ⸮⸮⸮⸮⸮Ǥ⸮⸮⸮4⸮ĤΥ⸮⸮ꥢ⸮⸮ݡ⸮⸮⸮(Seri
============================================================

2.arduinoロゴについて

2.1 HTTPの要求送信

スケッチに書く内容です。

GET /asciilogo.txt HTTP/1.1
 ↑上(1.1)と同じ
Host: arduino.tips
 ↑上(1.1)と同じ
Connection: close
 ↑上(1.1)と同じ
空白行

よって、
"GET /asciilogo.txt HTTP/1.1\r\nHost: arduino.tips\r\nConnection: close\r\n\r\n"
となります。

2.2 webページ

http://arduino.tips/asciilogo.txt
読込先の頁のソースです。

           `:;;;,`                      .:;;:.
        .;;;;;;;;;;;`                :;;;;;;;;;;:     TM
      `;;;;;;;;;;;;;;;`            :;;;;;;;;;;;;;;;
     :;;;;;;;;;;;;;;;;;;         `;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;       .;;;;;;;;;;;;;;;;;;;;
   ;;;;;;;;:`   `;;;;;;;;;     ,;;;;;;;;.`   .;;;;;;;;
  .;;;;;;,         :;;;;;;;   .;;;;;;;          ;;;;;;;
  ;;;;;;             ;;;;;;;  ;;;;;;,            ;;;;;;.
 ,;;;;;               ;;;;;;.;;;;;;`              ;;;;;;
 ;;;;;.                ;;;;;;;;;;;`      ```       ;;;;;`
 ;;;;;                  ;;;;;;;;;,       ;;;       .;;;;;
`;;;;:                  `;;;;;;;;        ;;;        ;;;;;
,;;;;`    `,,,,,,,,      ;;;;;;;      .,,;;;,,,     ;;;;;
:;;;;`    .;;;;;;;;       ;;;;;,      :;;;;;;;;     ;;;;;
:;;;;`    .;;;;;;;;      `;;;;;;      :;;;;;;;;     ;;;;;
.;;;;.                   ;;;;;;;.        ;;;        ;;;;;
 ;;;;;                  ;;;;;;;;;        ;;;        ;;;;;
 ;;;;;                 .;;;;;;;;;;       ;;;       ;;;;;,
 ;;;;;;               `;;;;;;;;;;;;                ;;;;;
 `;;;;;,             .;;;;;; ;;;;;;;              ;;;;;;
  ;;;;;;:           :;;;;;;.  ;;;;;;;            ;;;;;;
   ;;;;;;;`       .;;;;;;;,    ;;;;;;;;        ;;;;;;;:
    ;;;;;;;;;:,:;;;;;;;;;:      ;;;;;;;;;;:,;;;;;;;;;;
    `;;;;;;;;;;;;;;;;;;;.        ;;;;;;;;;;;;;;;;;;;;
      ;;;;;;;;;;;;;;;;;           :;;;;;;;;;;;;;;;;:
       ,;;;;;;;;;;;;;,              ;;;;;;;;;;;;;;
         .;;;;;;;;;`                  ,;;;;;;;;:




    ;;;   ;;;;;`  ;;;;:  .;;  ;; ,;;;;;, ;;. `;,  ;;;;
    ;;;   ;;:;;;  ;;;;;; .;;  ;; ,;;;;;: ;;; `;, ;;;:;;
   ,;:;   ;;  ;;  ;;  ;; .;;  ;;   ,;,   ;;;,`;, ;;  ;;
   ;; ;:  ;;  ;;  ;;  ;; .;;  ;;   ,;,   ;;;;`;, ;;  ;;.
   ;: ;;  ;;;;;:  ;;  ;; .;;  ;;   ,;,   ;;`;;;, ;;  ;;`
  ,;;;;;  ;;`;;   ;;  ;; .;;  ;;   ,;,   ;; ;;;, ;;  ;;
  ;;  ,;, ;; .;;  ;;;;;:  ;;;;;: ,;;;;;: ;;  ;;, ;;;;;;
  ;;   ;; ;;  ;;` ;;;;.   `;;;:  ,;;;;;, ;;  ;;,  ;;;;

2.3 シリアルモニタ出力

実際の出力内容です。


HTTPGET.ino 開始
ボード名: RASPBERRY_PI_PICO
ESP_AT_Lib v1.4.1
ATコマンドのVer: AT+GMR

AT version:1.2.0.0(Jul  1 2016 20:04:45)
SDK version:1.5.4.1(39cb9a32)
Ai-Thinker Technology Co. Ltd.
v1.5.4.1-a Nov 30 2017 15:54:29
OK
AP+STA両モードに設定: 成功
WiFiに接続: 成功
IP: 
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"46:17:93:04:8c:ae"
+CIFSR:STAIP,"192.168.68.61"
+CIFSR:STAMAC,"44:17:93:04:8c:ae"
単一接続モードに設定: 成功
設定終了
TCP作成: 成功
========================= 受信 ============================
HTTP/1.1 200 OK
Date: Thu, 07 Jul 2022 14:00:33 GMT
Content-Type: text/plain
Content-Length: 2263
Connection: close
x-amz-id-2: owrfm/mRP7c9GUnqtGYVU5rkFVJ3o7vIx6kCpajR5An6xF8HiacwNTyPDqeDh3ulKO0fDRarRuM=
x-amz-request-id: BQGVJAAS6HW9RHMR
Last-Modified: Wed, 23 Feb 2022 14:56:42 GMT
ETag: "667cf48afcc12c38c8c1637947a04224"
CF-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=cdr7tnDp5aJmcXsPFIb6uE1QAUVUVUufdsOrvi%2FpP0IDMC9SeCc0chptmKtU2ocYQzVA8u2i6Ptrh%2BPsXoEdj6TZZHxRgM%2FeRmIpBPRuZiAbdIqG2OA7%2Bh0O0GRwtDU%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
CF-RAY: 72711b64ea5d80a1-NRT
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400


            `:;;;,`                      .:;;:.           
        .;;;;;;;;;;;`                :;;;;;;;;;;:     TM 
      `;;;;;;;;;;;;;;;`            :;;;;;;;;;;;;;;;      
      :;;;;;;;;;;;;;;;;;;         `;;;;;;;;;;;;;;;;;;     
    ;;;;;;;;;;;;;;;;;;;;;       .;;;;;;;;;;;;;;;;;;;;    
    ;;;;;;;;:`   `;;;;;;;;;     ,;;;;;;;;.`   .;;;;;;;;   
  .;;;;;;,         :;;;;;;;   .;;;;;;;          ;;;;;;;  
  ;;;;;;             ;;;;;;;  ;;;;;;,            ;;;;;;. 
  ,;;;;;               ;;;;;;.;;;;;;`              ;;;;;; 
  ;;;;;.                ;;;;;;;;;;;`      ```       ;;;;;`
  ;;;;;                  ;;;;;;;;;,       ;;;       .;;;;;
`;;;;:                  `;;;;;;
============================================================

スケッチ

2つの*****には、wifiのssidとそのパスワードを記入してください。

// HTTPGET.ino  ESP_AT_Libでweb頁取得
// https://github.com/khoih-prog/ESP_AT_Lib/tree/master/examples/HTTPGET/HTTPGET.ino
#include "ESP_AT_Lib.h"                    // ATコマンドライブラリ使用
#define SSID        "*****"  // 自分のssid
#define PASSWORD    "*****"         // そのパスワード

////////// 下の要求内容のhello[]も変更
#define HOST_NAME "www.musashinodenpa.com" // 接続先1
//#define HOST_NAME "arduino.tips"         // 接続先2 arduino.ccから変更
//#define HOST_NAME "www.yahoo.com"        // 接続先 ng
//////////

#define HOST_PORT   (80)                   // ポート番号
#define ESP_AT_DEBUG_OUTPUT  Serial        // 定義する シリアルモニタ
#define EspSerial            Serial1       // 定義する ESP8266
#define _ESP_AT_LOGLEVEL_    4             // 定義する デバッグレベル(0-4)
#define BOARD_TYPE  "RASPBERRY_PI_PICO"    // 定義する ボードtype
#define BOARD_NAME  BOARD_TYPE             // 定義する ボード名
ESP8266 wifi(&EspSerial);                  // 

void setup(void){
  EspSerial.begin(115200); // ESPモジュールのシリアルを初期化
  Serial.begin(115200);    // シリアルモニタを初期化
  while (!Serial);         // シリアルモニタが開くまで待つ
  delay(1000);             // 1秒待つ
  Serial.println("\nHTTPGET.ino 開始");            // 表示
  Serial.println("ボード名: " + String(BOARD_NAME));//"RASPBERRY_PI_PICO"と表示
  Serial.println(ESP_AT_LIB_VERSION);//"ESP_AT_Lib v1.4.1"と表示 ライブラリのVer
  Serial.print("ATコマンドのVer: ");           // 表示
  Serial.println(wifi.getVersion().c_str());  // AT+GMR ATコマンドのVer
  // "AT version:1.2.0.0(Jul  1 2016 20:04:45)" "SDK version:1.5.4.1(39cb9a32)"
  // "Ai-Thinker Technology Co. Ltd." "v1.5.4.1-a Nov 30 2017 15:54:29" "OK"と表示
  Serial.print("AP+STA両モードに設定: "); // 表示
  if (wifi.setOprToStationSoftAP()){    // 動作モードをSTA+softAPに設定出来たら
    Serial.println("成功");              // こちらを表示
  } else {
    Serial.println("失敗");              // 表示
  }
  Serial.print("WiFiに接続: ");          // 表示
  if (wifi.joinAP(SSID, PASSWORD)){     // APに接続出来たら
    Serial.println("成功\nIP: ");        // 表示
    Serial.println(wifi.getLocalIP().c_str()); //ESP8266のIPアドレスを取得
    // +CIFSR:APIP,"192.168.4.1"     +CIFSR:APMAC,"46:17:93:04:8c:ae"
    // +CIFSR:STAIP,"192.168.68.61"  +CIFSR:STAMAC,"44:17:93:04:8c:ae"と表示
  } else {
    Serial.println("失敗");  // 表示
  }
  Serial.print("単一接続モードに設定: ");   // 表示 
  if (wifi.disableMUX()){   // 単一接続モードなら
    Serial.println("成功");  // こちらを表示
  } else {
    Serial.println("失敗");  // 表示
  }
  Serial.println("設定終了"); // 表示
}
uint8_t buffer[2048] = {0};  // bufferの初期化 1パケットmax2048byte

void loop(void){
  Serial.print("TCP作成: ");                  // 表示
  if (wifi.createTCP(HOST_NAME, HOST_PORT)){ // シングルモードでTCP接続が出来たら
    Serial.println("成功");                   // こちらを表示
  } else {
    Serial.println("失敗");                   // 表示
  }

  //////////
  char hello[] = "GET /arduino/ref/index.php?f=0&pos=3185 HTTP/1.1\r\nHost: www.musashinodenpa.com\r\nAccept-Charset: EUC-JP\r\nConnection: close\r\n\r\n";
  //char hello[] = "GET /asciilogo.txt HTTP/1.1\r\nHost: arduino.tips\r\nConnection: close\r\n\r\n";
  //char hello[] = "GET / HTTP/1.1\r\nHost: www.yahoo.com\r\nConnection: close\r\n\r\n";
  //////////

  wifi.send((const uint8_t*)hello, strlen(hello));         // シングルモードで要求送信
  uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); // bufferに応答受信
  if (len > 0){                                            // 受信データがあれば
    Serial.println("========================= 受信 ============================");
    for (uint32_t i = 0; i < len; i++){  // 1文字ずつ
      Serial.print((char) buffer[i]);    // 1文字表示
    }
    Serial.println("\n============================================================");
  }
  if (wifi.releaseTCP()){       // シングルモードでTCP接続を解放
    Serial.println("TCPを解放"); // 表示
  } 
  delay(60000);                 // 1分待つ
}
* フラッシュメモリ(2Mbyte)を、スケッチが2%使用。RAM(262kbyte)を、グローバル変数が3%使用、ローカル変数で252kbyte使用可能。(1kbyte=1000byteで計算)