14
11

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.

HoloLensとESPr® DeveloperでLチカ

Posted at

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をダウンロードしましょう。

ダウンロードした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ライフを!

14
11
12

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
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?