Help us understand the problem. What is going on with this article?

ESP-WROOM-02 Arduino互換ボードでサクッとHTTP通信できたよ

More than 3 years have passed since last update.

スイッチサイエンス製 ESP-WROOM-02 Arduino互換ボード

スイッチサイエンスからESP-WROOM-02 Arduino互換ボードが発売されました。今まではESP-WROOM-02(ESP8266)をArduinoのスケッチを書き込んで使うためには、モジュールをはんだ付けしてブレッドボード上で使用したりと少々使いづらい部分がありました。それをこの互換ボードが解消してくれます :pray:

ESP-WROOM-02 Arduino互換ボード
2620_1.jpg

ESP8266 Arduino CoreでHTTP通信をサクッとやってしまおう

Arduino IDEでESP8266の開発を行うときに使うライブラリESP8266 Arduino Coreには、HTTP通信にかぎらず便利な機能が用意されています。Arduino IDEのメニューから[ファイル]→[スケッチの例]にESP8266関連のサンプルがずらっと追加されているのでせひお試しを :tea:

Arduino IDEでの環境構築については本家の記事「ESP-WROOM-02開発ボードをArduino IDEで開発する方法」をご覧ください。

サンプルをちょっといじってHTTP通信

ベースにしたのはArduino IDEのメニューから[ファイル]→[スケッチの例]→[ESP8266WiFi]→[WiFiClient]のサンプル。そのままではsparkfunのサイトにアクセスするようなので、以下のようにクジラ 外国 為替 確認 APIから日本円のレートをjsonで取得するように変更しました(jsonのパースは未対応)。変更したのはloop()関数内のURLくらいです。簡単ですね :clap:

#include <ESP8266WiFi.h>

const char* ssid     = "your-ssid";
const char* password = "your-password";

const char* host = "api.aoikujira.com";

void setup() {
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  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");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  delay(5000);

  Serial.print("connecting to ");
  Serial.println(host);

  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  // We now create a URI for the request
  String url = "/kawase/json/jpa";

  Serial.print("Requesting URL: ");
  Serial.println(url);

  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  int timeout = millis() + 5000;
  while (client.available() == 0) {
    if (timeout - millis() < 0) {
      Serial.println(">>> Client Timeout !");
      client.stop();
      return;
    }
  }

  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");
}

取得できたよ!

シリアルモニターで取得できたことを無事確認。ヘッダー情報なども一緒に取れてますね :raising_hand:

cap.jpg

Arduino互換ボードと言うよりESP8266 Arduino Coreが便利でした

ESP8266 Arduino Core自体はArduino互換ボードが無くても使えるので、結局はESP8266 Arduino Coreが便利というお話でした :trollface:

ESP-WROOM-02 Arduino互換ボード記事一覧

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away