8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

M5StackAdvent Calendar 2018

Day 6

グラスをスマートにする技術~その1:OSC通信~

Last updated at Posted at 2018-12-05

###概要:
 家庭の食卓を賑やかに盛り上げたい。そんなことを思ったことはありませんか?
 私が所属するaNo研は、会話するグラス「スマートグラス e幹事」を発表しました。
 この記事は、「スマートグラス e幹事」に使われている技術を紹介します。

・実施例

###システム構成

181125_ekanji.png

スマートグラス 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を選択し、インストールします。

181125_ekanji_2.png

###実装例
以下に、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);
}


aNo研:https://anoken.jimdo.com/

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?