ウェブページのダウンロード

Arduino:
ウェブページのダウンロード

How to: (方法)

ArduinoでWebページをダウンロードするには、EthernetかWiFiシールドが必要だ。以下の例では、WiFiを使って簡潔に実現しているよ。

#include <WiFi.h>

const char* ssid     = "yourNetworkName";  // WiFiネットワーク名
const char* password = "yourNetworkPass";  // WiFiパスワード
const char* host     = "example.com";      // ダウンロードするサイトのドメイン

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi");
  
  WiFiClient client;
  if (!client.connect(host, 80)) {
    Serial.println("Connection failed");
    return;
  }
  
  String url = "/";  // ダウンロードするページのパス
  client.println("GET " + url + " HTTP/1.1");
  client.println("Host: " + String(host));
  client.println("Connection: close");
  client.println();
}

void loop() {
  delay(10000);  // 10秒おきに実行
  
  WiFiClient client;
  if (client.connect(host, 80)) {
    client.println("GET / HTTP/1.1");
    client.println("Host: " + String(host));
    client.println("Connection: close");
    client.println();
    
    while (client.connected()) {
      String line = client.readStringUntil('\n');
      if (line == "\r") {
        break;
      }
    }

    // Webページの中身を読み取る
    String line = client.readStringUntil('\n');
    Serial.println(line);
    Serial.println();
  }
}

Deep Dive (深掘り)

過去、Webページのダウンロードは主にPC上で行われた。しかし、IoTの発展により、Arduinoのようなマイコンでもよく使われるようになったね。Ethernetシールドを使う方法もあるけど、WiFiの方が手軽だよ。実装にはHTTPプロトコルを利用して、GETリクエストをWebサーバに送り、応答を受け取る。落としたページをどう使うかはプログラマの創造性にかかっている。

See Also (関連情報)