詳細は、公式 Windows IoT – Get Started と、翻訳 Raspberry Pi 2へのWindows 10 IoT Core Insider Preview版のインストール方法 ≫ DesignSpark を見てもらうとして、RasPi に Windows IoT を乗せるときに躓きそうな点を補足しておきます。
micro SD カードに Windows IoT Core を焼く
Widows 10 が乗るのは、Raspberry Pi 2 のみで、それ以前のものはダメな訳ですが、Get Started からダウンロードできる、Windows_IoT_Core_RPI2_BUILD.zip の中にある Flash.ffu ファイルを焼くことができるのは Windows 10 TP だけです。Raspberry Pi に Linux を入れるときに Win32DiskImager などを使っていると思うのですが(Linux のコマンドを使って書き込むこともできます)、Windows IoT の場合は、Windows 10 にある dism コマンドというものを使います。
diskpart
list disk
を使って、ここに出てくるドライブの番号(micro SDカードのドライブ番号)を使って、dism.exe /Apply-Image /ImageFile:flash.ffu /ApplyDrive:\\.\PhysicalDriveN /SkipPlatformCheck のように書き込みます(PhysicalDriveN の部分は、ドライブ番号に従って、PhysicalDrive3 のように書き換えます)この時、Windows 8.1 にある dism コマンドには /ApplyDrive スイッチがなくて書き込めないのです。この /ApplyDrive スイッチは、Windows 10 TP にしかありません。公式サイトには、最新の Windows TP より高いものと書いてありますが、ちょっと前のバージョンでも大丈夫でした。
朗報です、VMWare Player に Windows 10 TP を入れて micro SD カードをドライブとして認識させてから、同じように dism コマンドを使って書き込むことができます。これで、実機の Windows 10 がなくても RasPi に Windows 10 IoT が入れられます。
ちなみに、一度書き込んだ micro SD カードを Win32DiskImager でバックアップを取って、再び書き込むと正常に動作しました。なので、雛形の SD カードを作っておいて、コピーを取って増産することは可能です。
Windows 10 IoT Core を起動する
PC から micro SD カードを焼いたら、Rapberry Pi 2 に差し込んで起動します。Boot Windows 10 IoT Core Insider Preview にある通り、
- micro SD カード
- LAN ケーブル
- HDMI ケーブル
- 電源用の USB ケーブル
を差して起動します。スターンドアローンなのだから、と思って LAN ケーブルを差し込まずに立ち上げると、起動に失敗します。リモートデバッグ用のサービスが常に立ち上げって来るためか、IP が必ず必要になります。ただし、2度目以降の場合には、LAN ケーブルがなくてもうまく立ち上げります。
USB コネクタにマウスを差しても無反応です。Raspberry Pi のサイトでは xbox のコントローラを差しているシーンがあるので、後からの設定で可能かもしれません。
初回の起動は時間がかかって 2,3 分かかります。何度か真っ黒な画面になりますが、右上にカラー指標の表示が出ていれば大丈夫です。
Windows IoT Core Watcher で接続する
このままでは何もできないので、RasPi に接続します。接続する方法は2種類あって、
- Windows IoT Core Watcher
- PowerShell
があります。Windows IoT Core Watcher は、Windows 8.1 のブラウザ(Windows 10 の H” を使っても ok です)を使ってアプリをデプロイしたり、プロセスを見たりできます。PowerShell のほうは、普通にリモートログインする方法なので、通常の Windows サーバーと同じように扱えます(中身は違うでしょうが、コマンド自体は大体同じはずです)。
Windows_IoT_Core_RPI2_BUILD.zip を解凍したときの、WindowsDeveloperProgramForIoT.msi を実行すると、Windows IoT Core Watcher がインストールできます。RasPi にインストールした状態では、ホスト名が minwinpc になっているので、ping 等で確認すればよいでしょう。公式サイトにたくさんの minwinpc が並んでいるのはネットワーク上にたくさんの RasPi があるからです。
注)Windows 10 IP + Visual Studio 2015 RC の環境や、素の Windows 8.1 の環境に入れても、この画面がでないことがあります。この場合は http://minwinpc/ を直接開けば大丈夫です。つまりは、80 ポートがマネージャ用に常に利用されているということです。
あるいは、
Raspberry Pi ? View topic – WindowsIoTCoreWatcher
https://www.raspberrypi.org/forums/viewtopic.php?f=105&t=109192
を参考にして、
1 2 | sn -Vr WindowsIoTCoreWatcher.exe corflags WindowsIoTCoreWatcher.exe /32BIT+ /FORCE |
を実行してください。64bit版の Windows の場合に上記の現象が発生するとのこと(おそらく、MS開発者の環境が 32bit なのでは?という推測がw)
繋げたい RasPi を選択して、右クリックから Web Browser Here を選択すると、B Web Management というのが開かれます。アプリのデプロイ用の画面やパフォーマンス、プロセスを見ることができます。
左上にシャットダウンや再起動のボタンがあるので、これを利用すればよいでしょう。画面自体はマウスが効かないので、触れないので。まあ、所詮マイコンレベルなので、USB 給電のケーブルをぶちッと抜いても大丈夫です。たまにファイルが壊れるようですが、だいたいが復旧してくれます。
PowerShell でログインする
Windows IoT – Use PowerShell to connect to a Windows IoT Core device. のようにすると、PowerShell を使って RasPi に接続できます。この例では Windows 10 TP からになっていますが、Windows 8.1 からでも大丈夫です。
初期のホスト名は minwinpc なので
Set-Item WSMan:\localhost\Client\TrustedHosts -Value minwinpc
net start WinRM
Enter-PsSession -ComputerName minwinpc -Credential minwinpc\Administrator
とすると、管理者権限でログインができます。パスワードの初期値は、p@ssw0rd です。
Hello World を作る
IoT 絡みの最初としては Lチカなので、https://github.com/ms-iot/samples の Blinky を動かしても良いのですが、あえて Hello world. を動かしてみます。基本的なところは Windows IoT – HelloWorld にある通りですね。
Windows 8.1 に Visual Studio 2015 RC を入れます。Windows ストアアプリを作らないのであえば、Windows 8.1 でも大丈夫です。シミュレータ上で動かすので、Windows Phone 10 のアプリは作れるようですね。
.Net micro のようにテンプレートが分かれていないので、Windows Universal アプリで作ります。
ペタペタと Hello World のボタンとラベルを貼って、ボタンをクリックしたときのイベントを書きます。実際には RasPi からボタンをクリックできないのですが(多分、USB が反応していないだけだと思う)、まあ一通り作ります。
RasPi への動作は「リモートコンピュータ」で、RasPi のホスト名「minwinpc」を指定すれば ok です。このとき、Windows 認証のチェックを外しておきます。もうひとつ、ソリューションプラットフォームを「ARM」にします。RasPi では CPU が ARM なので、初期値の x86 では動きません。
うまくビルドとデプロイが成功すると、HDMI 接続されているディスプレイに Hello world が表示されます。
Lチカの準備をする
Windows IoT – Blinky Sample を見ながらプログラムを組んでいきます。新規にプロジェクトを作るときは参照設定で、Windows IoT Extension SDK を入れておきます。
netduino を使って .net micro を扱ったことのある方は、だいたい似たような感じになっていることが分かるでしょう。Windows.Devices.Gpio 名前空間で GPIO の LOW/HIGH を設定すれば、そのまま完成です。タイマーイベントとか、タクトスイッチのイベントにはラムダ式を使えるので、そのあたりでは C# が便利です。
ひとまず、Netduino で作った TA7291P モータードライブを Netduino でリモート制御する | Moonmile Solutions Blog を、RasPi に直していこうかなと思っています。出来上がったら、ぼちぼちと追記していきますので。
追記
ピンバック: OSXとRaspberry Pi2でWindows10 Insider Previewを最速で動かす | eye4brain
ピンバック: Raspberry Pi 2にWindows 10 IoT Core Insider Previewをインストール
H”ですか…さてはDぽユーザですね?