Windows 10 iot core をやってみたが、思っていたよりはるかに実用的な件






HoloLensの勉強会で、
マイクロソフトの商品自体にも
興味がわいたので、
Windows iot Coreを
使ってみます。


今回は実機として、
Raspiberrry pi M2を使います。
(公式サイトを見る限り、M3も全くやり方は同じです。)
実際に使える
ハードウェアについては
Raspberry piで動いていたものでも
使えないものがあるので、
使う場合は、下のサイトを見てください。
https://docs.microsoft.com/en-us/windows/iot-core/learn-about-hardware/HardwareCompatList

2018年2月3日現在下のサイトから
https://developer.microsoft.com/en-us/windows/iot/Downloads

Get Windows 10 iot core dashboard
をクリックしてsetup.exeをダウンロードします。

このダッシュボードから
windows 10 iot coreをラズパイに使うmicro sdカードに
インストールすることにより、
windows 10 iot core を使えるようにします。



setup.exeファイルが
ダウンロードされるのでこれを実行すると
Windows iot dashboardがインストールされます。


今のところインストールできるデバイスは下のようになります。



PCにsdカードアダプターを使ってmicro sdカードを接続し、




管理者パスワードの入力がありますが、
これは
rootユーザのパスワードとなります。




入力できたら
ソフトウェアのライセンス条項にチェックを入れて
ダウンロードとインストールを行います。


途中で
iot utilをこのPCにインストールするか聞かれますが、もちろん
インストールしてください。



ラズパイにmicro sdを挿入して、
hdmiケーブルでつなげれる
モニター必須です。
電源をつなげて起動してください。

ネットワークに接続します。
と出ますが、
イーサネットの場合は、自宅のルーターにつなげてください。
いずれにせよ、開発時には、WindowsPCも、
Raspiberry piもいる。
なのでwifiを使うより、
Raspiberry piとWindwsPCをクロスケーブルでつないだほうが、
効率がよいかもしれない。
(クロスケーブルでRaspiberry piとPCと直接つなげれるかは未確認→確認
しました。)

wifiでつなげることもできますが、
raspbianで使えていた、
wifiが使えなかったです。

raspiberry piが起動すると、
言語の選択が出るので、
日本語を選択します。

Windows iot coreのraspibian側は
下のようなホーム画面になります。

画面上のツールバーにブラウザ、コマンドライン、チュートリアル
などがあります。

次にVisual studioから
C++のWindowsユニバーサル用のツールをインストールします。
(C++を使って開発するときのみ必要、C#のユニバーサルツールは
あらかじめインストールされています。)



また、Visual StudioのIoT向けのテンプレートが

Windows IoT Core Project Templates for VS 2017

という名前で配布されているのでこれをインストールします。
(visual studio 2017しか有効ではないので注意)
インストール先のサイト
https://marketplace.visualstudio.com/items?itemName=MicrosoftIoT.WindowsIoTCoreProjectTemplatesforVS15


まず公式のサイト通りに
C++のプロジェクトを作ってみます。
新しいプロジェクト→VisualC++→Windows ユニバーサル→空白のアプリ
を選択します。



プロジェクト作成時に
「設定アプリ」が開きますので、

開発者モード、デバイスの検出をON
にします。これをしないとリモートコンピュータからインストールできません。
デバイスの検出をONにしないと、USB接続時に
Visual Studioからraspiberry piにアプリをインストールすることができません。
wifi経由でしかインストールできないので、ビルドが遅くなる可能性があります。
→すいません勘違いでした。raspiberry piにはUSBケーブル経由でインストールできないっぽいです。


適用したら
設定を閉じます。
次にVisual studioのソリューションエクスプローラーから
、参照を右クリック→参照の追加を選択します。

Windows Universal



次にソリューションプロジェクトから、
MainPage.xamlを選択します。


デザイナーから変更することができるので、ここから
直接コントロールを入れていきます。
まず、ビルドするデバイスの大きさを左上から
選びます。Iot Deviceを選択して、適当な大きさを選択してください。


公式の例通り、ボタンを追加してみます。
ツールボックス→Buttonと選択してください。

奇麗にボタンを置きたい場合は、あらかじめ
Borderを作成してから、その上に重ねる形でButtonを作成します。


次に、テキストボックスを作成します。
ボタンと同様にして
プロパティから、文字列が中央に来るように設定します。
Holizontal Alighnment
Veretical Alighnment
を設定せっていして、文字列が中央に来るようにして、
TextをHelloにします。


ボタンを作成したら、今度はこのbuttonに対して
クリック時のイベントを登録します。
作成したButtonをダブルクリックしてください。


クリック時のイベントが作成されるので
関数の中に下のように書いてください。
(textBoxの変数名を変えた場合は適宜変えてください。)
this->textBox->Text = "HelloWindows 10 iot core!!";

次に実際に動くかどうかBuildしてみます。

cpuはラズベリーパイなのでAVR、
ビルド先は、USBで直接raspiberry piをつなぐ場合は
Deviceを選択して下さい。
wifi経由の場合はリモートコンピュータを選択します。


以下はwifi経由でビルドする場合です。
1.プロジェクト→構成プロパティ→デバック→コンピュータ名
からraspiberry piのデバイスを検索します。


自動検出から、ラズベリーパイのインストール時の
コンピュータ名を選択します。


raspiberry piのコンピュータ名を選択すると以下のように出ますが、
無視してください。
(インターネット経由など危険なネットワークで、、raspiberry piに触るときは無視せず、
Windows認証を設定してください。)


設定し終わったら、右下の適用をクリックします。




これで
F5でデバックを実行してみます。
C++なのでBuildは一瞬ですが、
wifi経由の場合は、たったこれだけの量のコードでも
時間がかかるので、
頻繁にBuildする場合は、USB経由でデバックすることを
お勧めします。


みたいになります。

WindowsPCからShift+F5でデバックを
終えます。

デバックまでだとここまででよいですが、

実際にRaspibery pi にインストールするときには

WindowsPC側の
Powershellを使います。

Powershellを管理者権限で開きます。
次にPowershellから
net start WinRM
と実行してください
次のように実行します。
machine-nameにWindows iot coreをインストールしたときに決めた
Raspiberry piのホスト名を入力するか、IPAddressを入力します。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value <machine-name or IP Address>

なので今回は下のようになります。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value minwinpc

また、複数のデバイスに対して、インストールする場合は、下のように複数選択していきます。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value minwinpc1, minwinpc2, ...



上のように効かれますが、Yを選択してください。
WSMANに追加したので、
今度は、Raspiberry piに接続してみます。
CredentialとComPuterNameで意味が少し被っているように見えますが、
このように書きます。
Enter-PSSession -ComputerName <machine-name or IP Address> -Credential <machine-name or IP Address or localhost>\Administrator
今回の例では下のようになります。
PS C:\Windows\system32> Enter-PSSession -ComputerName minwinpc -Credential minwinpc\Administrator
Raspiberry piに接続できたら下のように表示されます。

[minwinpc]: PS C:\Data\Users\administrator\Documents>

ここでアプリ名を選択して、iostartup list アプリ名で
デプロイできるとマイクロソフトのホームページに書かれていますが、
ioststartup list 
と実行して、アプリ一覧を出してみると、おそらくプロジェクト名と同じ名前のアプリが
ないです。
実はパッケージ名で書かれているので
Visual StudioのPackage.appxmanifestファイルの
パッケージ化を見てみると確認できます。




上の例の場合はPowershellから下のように実行します。

iotstartup add headed be983356-bbbe-4554-99a0-ce57902abea7_2scf4msjdcswm!App

これを実行すると先ほど作成したアプリケーションの画面が表示されるはずです。
このiotstartup add headedは
raspiberry piはこのアプリケーションを起動時に
フォアグラウンドで実行しますという
宣言。
(ただし、バックグラウンドでほかのアプリケーションを
実行することも可能なよう。)
iOSのシングルモードアプリモードに近い。

試しにPowershellから下のようにraspiberry piを再起動させてみる。
(単純に電源を抜き差ししてもよいです。)
shut down /r /t 0

先ほど
iostart up add headedで指定したアプリケーションが起動するはずです。

Windows iot coreをもとに戻す場合は、
Powershellから、
iotstartup add headed IoTCoreDefaultApp
とするとインストール時と同じくデフォルトの画面が立ち上がります。


Powershellは今回はもう使わないので
Exit-PSSession
として、Sesssionを終了してください。

さらに、Windows 10 Iot Coreは
WindowsPCから
raspiberry piの詳細情報を簡単に取得することができます。
ioT Dashboardから自分のデバイスを選択して
ダブルクリックしてください。


次に「ブラウザーでWindows Device Portalを開く」実行します。




基本認証を求められるので、
インストール時のWindows ioT coreの
パスワードを入力します。


するとブラウザーから、下のようなダッシュボードが開きます。

右上の電源マークから、現在選択している
Raspberry piのシャットダウン、再起動が行えます。

(Windows 自体のupdateもある場合は、
update and shutdownしかないので注意。)
この画面から、
Raspiberry pi のスクリーンショットをとることや、

起動時にコルタナONにするか、
テキストボックスを選択したときに
スクリーンキーボードを表示させるかどうか
などの設定も行うことができる。

また、左のAppから、
現在rasbpiberry piにインストールされている
Windows ioT core アプリケーションの一覧と
その状態を見ることができます。


この画面から、Statappのチェックボックスを変更すると、
先ほどと同じく、最初に起動する

デメリット、メリットをまとめると下のようになります。

通常のraspibianと比べてのメリット
  1. 普通のWindowsPCからraspiberry piを管理することができる。
  2. Azureとも連携できる
  3. 使っているOSをWindowsで統一することができる。
  4. raspiberry piの音声認識にコルタナを使うことができる。(筆者は未使用。)
  5. デバイスの設定等がGUIでできる。
  6. VisualStudioを使ったデザイナーによるフォーム画面の作成
  7. ブラウザ経由のダッシュボードから、Raspiberry piの詳細設定

デメリット
  1. 普通のRaspiberry pi と比べて起動が遅い。
  2. Raspiberyy zero系列には対応していない(おそらく、のちに対応する)
  3. Windows自体がupdateが多いため、updateのたびにアプリが正しく動くかどうか心配になる。
  4. Windows iot coreが普及したら、Mirai botみたいなものが増える可能性があり、その懸念(WindowsはWindows Defender導入後かなりセキュリティが向上したらしいが、OSのシェアの問題もあって、Windowsは狙われやすい。)

メリットの部分が今までの、マイコンに比べて
非常に魅力的なものが多いので、気になった人は
ぜひ試してほしい。
デメリットについては、悩んでいても仕方ない部分があるし、
デメリットがあまり問題にならないものに使うべき。
また、メリットの部分が、電気的な部分でないので、
「マイコンだから、GPIOを使う」ということにこだわらなくてよいというのは
大変な強みかもしれない。リリース後に拡張機能として、
GPIOを残しておくという選択をとったり、
熱い場所に使うなら「すべて冷却ファン」に使うという

方法をとることもできる。

そしてマイコンとして、物理的な機能は
Raspiberry piに最初からあるUSBドングルから
行うという方法をとることもできる。
(Windows iot coreで使えるかどうか不明だが、usbの温度計などもある)
これなら、マイコンを触ったことがないエンジニアでも簡単に
組み立てることができる。


ただし、
恐らく、単純な温度の推移などを行うなら、通常のRaspiberry pi
mBed等を使ったほうがよい。

コルタナや、Windows由来のGUIツール、タッチスクリーン、とりあえずプロトタイプを
作っておきたいケース、大量のRaspiberry piを管理する必要があるケースなどの場合に

Windows 10 Iot Coreは役立つと思われる。


正直言って触ってて、結構ワクワクした。



コメント

人気の投稿