Help us understand the problem. What is going on with this article?

HoloLensとESPr® DeveloperでLチカ

More than 1 year has passed since last update.

HoloLensとESPr® DeveloperとArduinoを使ってLチカを行います。
すごく贅沢なLチカになっていますよw

logo.png

必要なもの

合計: ¥337,084
ほとんどHoloLens代。。。

開発環境

今回利用したものはMilkcocoaというBaaSサービスです。
IoTデバイス・スマートフォン・PC間で簡単にリアルタイムデータのやり取りが
出来るようになるクラウドプラットフォームです。
1日の利用制限はありますが、基本無料で利用出来ます。

Milkcocoa登録

こちらにアクセスして(https://mlkcca.com/)無料登録を行います
s100.png

無料登録完了後、アプリを新規作成します
名前は今回 HoloESPr にしました。

s102.png

s103.png

ダッシュボードにあるapp_idをメモしておきましょう

s104.png

Unity設定

HoloLensの詳しい設定は割愛します。
HoloLensCameraInputManagerCursorWithFeedbackをヒエラルキービューに設置します。
今回スイッチを設置したいので、無料のAssetsを使用しました。
https://www.assetstore.unity3d.com/jp/#!/content/38257

s123.png

スクリプト新規作成

スクリプトを新規作成します。
今回はTestScripts.csを作成しました。

TestScripts.cs
using HoloToolkit.Unity.InputModule;
using UnityEngine;

public class TestScripts : MonoBehaviour, IInputClickHandler
{

#if UNITY_UWP
  private Milkcocoa.Milkcocoa Milkcocoa;
#endif

  bool switchFlg = false;

  // Use this for initialization
  void Start () {
  Debug.Log("Start");
#if UNITY_UWP
  Milkcocoa = new Milkcocoa.Milkcocoa("XXXXXXXXXXXXXXX.mlkcca.com"); // メモしたapp_idを入力します
  Milkcocoa.dataStore("message").push(new { v = 0 });
#endif
  }

  // Update is called once per frame
  void Update () {

  }

  public void OnInputClicked(InputClickedEventData eventData)
  {
      Debug.Log("OnInputClicked");
      switchFlg = !switchFlg;

#if UNITY_UWP
      // クリック時にpush
      if (switchFlg) {
          Milkcocoa.dataStore("message").push(new { v = 1 });
      } else {
          Milkcocoa.dataStore("message").push(new { v = 0 });
      }
#endif
  }
}

作成したスクリプトをSwitchにアタッチします
s125.png

HoloLens設定

PlayerSettingは.NET4.6を選択します
s120.png

Internet権限を付け忘れて、最初全然うまく行かなかった。。。
s122.png

UWP Build TypeをD3Dにして、Unity C# Projectsにチェックを入れて、Bluildしましょう。
s121.png

Visual StudioでMilkcocoaをインストールする

buildして出来た.slnファイルを起動しましょう。
ツール-NuGetパッケージマネージャー-パッケージマネージャーコンソールをクリック

s130.png

Install-Package Milkcocoaを入力します
s131.png

インストールが正しくされたかを確認します。
s132.png

HoloLens起動

ここまで出来れば起動してみましょう
Onボタンをクリックすると、Milkcocoaに書き込まれると思います。
s140.png

Milkcocoaのダッシュボードから確認します。
s141.png

Arduino設定

次はArduinoの設定を行います。
こちらからSDKをダウンロードしましょう。

https://github.com/milk-cocoa/Milkcocoa_ESP8266_SDK

ダウンロードしたzipをArduinoにインストールします。
スクリーンショット 2017-06-05 14.42.52.png

具体的なコードのサンプルは下記の通りです。

#include <Milkcocoa.h>

#include <ESP8266WiFi.h>

/************************* Your Milkcocoa Setup *********************************/

#define MILKCOCOA_APP_ID      "xxxxxxxxxxxxx"
#define MILKCOCOA_DATASTORE   "message"

/************* Milkcocoa Setup (you don't need to change this!) ******************/

#define MILKCOCOA_SERVERPORT  1883

//ご自分のルーターのSSIDを入力してください
const char* ssid = "XXXXXXX";
//ご自分のルーターのパスワード
const char* password = "XXXXXXXXXX";

// 使用するLEDのPin番号
int LedPin = 14; 

// Create an ESP8266 WiFiClient class to connect to the MQTT server.
WiFiClient client;

const char MQTT_SERVER[] PROGMEM    = MILKCOCOA_APP_ID ".mlkcca.com";
const char MQTT_CLIENTID[] PROGMEM  = __TIME__ MILKCOCOA_APP_ID;

// Milkcocoa設定
Milkcocoa milkcocoa = Milkcocoa(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);

void onpush(DataElement *elem) {
  Serial.println("onpush");
  Serial.println(elem->getInt("v"));

  if (elem->getInt("v") == 1) {
    Serial.println("disp=1");

    // LED点灯
    digitalWrite(LedPin, HIGH);

  } else {
    Serial.println("disp=0");    

    // LED消灯
    digitalWrite(LedPin, LOW);
  }
};

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

  // connect to wifi.
  WiFi.begin(ssid, password);
  WiFi.mode(WIFI_STA); // omajinai
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(10000);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());

  // LED設定
  pinMode(LedPin, OUTPUT);

  // Milkcocoa初期化
  Serial.println( milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush) );

}

void loop() {
  // ↓ 必ず必要
  milkcocoa.loop();

  delay(1000);
}

これでマイコンボードに書き込んでみます。
HoloLensを起動して、ESPrDeveloperも起動します。
するとLチカがうまくいくはずです。
movie.gif

まとめ

非常に簡単にHoloLensと連携が出来ました。
応用すれば、実際のライト等に3Dオブジェクトを配置してHoloLens上からライトの明るさを調整するということも可能かと思います。
では、素敵なHoloLensライフを!

h-takauma
様々なIoT機器の研究開発を行っています。 AWSの研究開発がメインです。LINE API Expert('19〜) 最近はスマートスピーカーに夢中です! 著書「スマートスピーカーアプリ開発入門」https://amzn.to/2o0KGWs
i-enter
「効果」をつねに提供します。スマホアプリ開発No.1の実績。最新のIoTに対応した開発も行います。
https://www.i-enter.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした