ESP8266をhttpクライアントとして使用します。WiFiに接続し、特定のページ情報を取得します。
準備
パソコン、ESP8266
サンプルプログラムについて
ESP8266ボードをArduino IDEに追加すると、Arduino IDEからサンプルプログラムを使用することができます。サンプルプログラムは、「ファイル」→「スケッチ例」を選択すると、下の方に、「NodeMCU1.0 (ESP-12E Module)用のスケッチ例」の項目がありますので、そこから選択します。
今回は、「ESP8266HTTPClient」の中にある、「BasicHttpClient」を用います。33行目の「WiFiMulti.addAP(“SSID”, “PASSWORD”);」には、ESP8266がアクセスするアクセスポイントの情報を記入します。
インターネットにアクセスする際にプロキシサーバを設定する必要がある場合は、46行目の
if (http.begin(client, “http://jigsaw.w3.org/HTTP/connection.html”)) {
の部分を
if (http.begin(“your-proxy.server.jp”, 8080(ポート番号), “http://jigsaw.w3.org/HTTP/connection.html”)) {
に変更します。
プロググラムをESP8266への書き込みが完了したら、シリアルモニタを開いて動作を確認しましょう。http://jigsaw.w3.org/HTTP/connection.html のhtmlファイルが表示されるはずです。
/**
BasicHTTPClient.ino
Created on: 24.05.2015
*/
#include <arduino.h>
#include <esp8266wifi.h>
#include <esp8266wifimulti.h>
#include <esp8266httpclient.h>
#include <wificlient.h>
ESP8266WiFiMulti WiFiMulti;
void setup() {
Serial.begin(115200);
// Serial.setDebugOutput(true);
Serial.println();
Serial.println();
Serial.println();
for (uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("SSID", "PASSWORD");
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
if (http.begin(client, "http://jigsaw.w3.org/HTTP/connection.html")) { // HTTP
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP} Unable to connect\n");
}
}
delay(10000);
}