LoginSignup
29
32

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-04

スイッチサイエンス製 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互換ボード記事一覧

29
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
32