自作楽器用音源モジュール作成(3)

Wifi経由でのMIDI受信に使う目的で、ESP-WROOM-02にGETリクエストを投げつけてデータをやり取りできるか検証した。

ESP8266関連のライブラリの使い方は大体Githubを眺めた。


サンプルにはWifiAccessPointという名前のWifiを飛ばしてルートにアクセスされたらテキストを返すサンプルがある。

これにGETリクエスト関連の処理を足すだけでいい。非常に良く出来ている。

  String arg(const char* name);   // get request argument value by name
  String arg(int i);              // get request argument value by number
  String argName(int i);          // get request argument name by number
  int args();                     // get arguments count
  bool hasArg(const char* name);  // check if argument exists

esp8266-Arduino/ESP8266WebServer.h at master · sandeepmistry/esp8266-Arduino · GitHub

なんでもいいから値を列挙すればいいならargsの回数でarg(int i)を舐めれば良さそうだ。

パラメータ名が必要ならhasArgしてからarg(const char* name)といったところだと思う。

コード

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

/* Set these to your desired credentials. */
const char *ssid = "mySSID";
const char *password = "password";

ESP8266WebServer server(80);

/* Just a little test message.  Go to http://192.168.4.1 in a web browser
 * connected to this access point to see it.
 */
void handleRoot() {
  uint8_t argc = server.args();
  for(uint8_t i = 0 ; i < argc ; ++i){
    Serial.println(server.arg(i));
  }
	server.send(200, "text/html", "<h1>You are connected</h1>");
}

void setup() {
	delay(1000);
	Serial.begin(115200);
	Serial.println();
	Serial.print("Configuring access point...");

	WiFi.softAP(ssid, password);

	IPAddress myIP = WiFi.softAPIP();
	Serial.print("AP IP address: ");
	Serial.println(myIP);
	server.on("/", handleRoot);
	server.begin();
	Serial.println("HTTP server started");
}

void loop() {
	server.handleClient();
}

動作

f:id:tohkaf:20151208004925p:plain

f:id:tohkaf:20151208004940p:plain

スマホWifi参加させて適当に与えてみたが問題はなさそうだ。今日はここまで。