Arduino Uno用のEthernetシールドにWiznet W5100 チップを搭載したW5100が安く買えました。セットアップしたWR702Nモバイルルーターと一緒に使いArduinoをRESTクライアントとして使うサンプルを書いてみます。Ethernet libraryを使ったサンプルはたくさん見つかるのでArduinoをネットワーク接続する勉強にはちょうど良いです。
MACアドレスの生成
W5100にはMACアドレスが付いていません。ArduinoのスケッチではMACアドレスを指定する必要があるため別途用意します。
Random MAC address generator for Arduino Ethernet Shield (static MAC generator)の記事にhttps://ssl.crox.net/arduinomacというMACアドレスを生成してくれるサイトの紹介がありました。以下のようにMACアドレスを生成してコードのサンプルまで書いてくれます。
// 90:A2:DA:89:C8:50
// MAC address generated by https://ssl.crox.net/arduinomac/
// see http://blog.crox.net/archives/91-MAC-generator.html
byte mac[6] = { 0x90, 0xA2, 0xDA, 0x89, 0xC8, 0x50 };
HTTPクライアントライブラリ
Arduino用のHTTPクライアントライブラリはいくつか見つかりました。
REST APIを実行することが主な用途のためcsquared/arduino-restclientを使うことにします。
csquared/arduino-restclient
ライブラリをリポジトリからlibrariesディレクトリにgit clone
します。
$ cd ~/Documents/Arduino/libraries
$ git clone https://github.com/csquared/arduino-restclient.git RestClient
arduino-restclientのリポジトリにあるsimple_GET.inoを例にしてMeshbluからstatusを取得するスケッチを書きます。
#include <Ethernet.h>
#include <SPI.h>
#include "RestClient.h"
RestClient client = RestClient("meshblu.octoblu.com");
void setup() {
Serial.begin(9600);
byte mac[6] = { 0x90, 0xA2, 0xDA, 0x11, 0x34, 0x7E };
Ethernet.begin(mac);
Serial.println("Setup!");
String response;
int statusCode = client.get("/status", &response);
Serial.println(response);
}
void loop() {
}
コンパイルしてArduinoに書き込みます。シリアルモニタを実行するとMesubluのステータスを取得します。
Setup!
{"meshblu":"online"}