###概要:
家庭の食卓を賑やかに盛り上げたい。そんなことを思ったことはありませんか?
私が所属するaNo研は、会話するグラス「スマートグラス e幹事」を発表しました。
この記事は、「スマートグラス e幹事」に使われている技術を紹介します。
・実施例
みなさんこんにちは!
— aNo研 (@anoken2017) 2018年8月2日
今日は特に暑い一日でしたが皆さんはいかがお過ごしでしたか?#MFTokyo2018 まであと2日!aNo研ブースでは代表作である茶道ロボを紹介してくれるコップたちも参戦予定!
皆様のご来場お待ちしております!
出店場所
Food Makerブース「D-02-02」 pic.twitter.com/ea2E24APDS
###システム構成
スマートグラス e幹事は、OSC通信(OpenSound Control)というインターフェイスを使って、RasberryPIと相互に通信しています。OSC通信はもともと、音楽データ通信に使われていましたが、その通信の柔軟さなどからさまざまなケースに利用されるようになってきています。M5stackでもArduinoのライブラリを使うことで、OSC通信を使うことができます。
###RasberryPIでOSC通信準備
RasberryPIでOSC通信するために、今回は、aike氏が作成された、oscer を利用させてもらいました。
まず、goの開発環境をインストールします。
# sudo apt-get install golang-go
goのversionを確認して、インストールができているか、確認します。
$ go version
go version go1.6.2 linux/amd64
oscerをコンパイルします。
$ git clone https://github.com/aike/oscer.git
$ cd oscer/src
$ make
コンソールを二つ立ち上げ、RasberryPIの中で通信できているか、確認してみましょう。
####送信側
$ ./oscer localhost 10000 /hello
####受信側
$ ./oscer receive 10000
./hello
###M5StackでOSC通信準備
M5StackでOSC通信をするために、hideakitai氏が作成された、ArduinoOSCを利用します。
Arduinoのライブラリマネージャーから、ArduinoOSCを選択し、インストールします。
###実装例
以下に、RasberryPIから、M5Stackへ、メッセージを送るサンプルを示します。
OSC通信によって、任意の端末へ、メッセージを簡単に送ることが可能になります。
####RasberryPIでのOSC通信
$ ./oscer m5stack_hostname 10000 /msg hogehoge
####M5StackでのOSC通信
#include <M5Stack.h>
#include <ArduinoOSC.h>
WiFiUDP udp;
ArduinoOSCWiFi osc;
const char* ssid = "yourwifi";
const char* password = "wifi_password";
const int recv_port = 10000;
void messageCb(OSCMessage& m) {
String str = m.getArgAsString(0);
int len = str.length();
Serial.println(str);
}
void setup() {
Serial.begin(115200);
Serial.print("Connecting to " + String(ssid));
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("Connected! IP address: ");
Serial.print(WiFi.localIP());
osc.begin(udp, recv_port);
osc.addCallback("/msg", &messageCb);
}
void loop() {
osc.parse();
delay(1000);
}