Raspberry Pi 2 に Windows 10 IoT Core を乗せて Hello world するまで

詳細は、公式 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 分かかります。何度か真っ黒な画面になりますが、右上にカラー指標の表示が出ていれば大丈夫です。

https://pbs.twimg.com/media/CD3M_BqVAAAKJ4c.jpg

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 があるからです。

image

注)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 というのが開かれます。アプリのデプロイ用の画面やパフォーマンス、プロセスを見ることができます。

image image

左上にシャットダウンや再起動のボタンがあるので、これを利用すればよいでしょう。画面自体はマウスが効かないので、触れないので。まあ、所詮マイコンレベルなので、USB 給電のケーブルをぶちッと抜いても大丈夫です。たまにファイルが壊れるようですが、だいたいが復旧してくれます。

PowerShell でログインする

Windows IoT – Use PowerShell to connect to a Windows IoT Core device. のようにすると、PowerShell を使って RasPi に接続できます。この例では Windows 10 TP からになっていますが、Windows 8.1 からでも大丈夫です。

image

初期のホスト名は 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 アプリで作ります。

image

ペタペタと Hello World のボタンとラベルを貼って、ボタンをクリックしたときのイベントを書きます。実際には RasPi からボタンをクリックできないのですが(多分、USB が反応していないだけだと思う)、まあ一通り作ります。

RasPi への動作は「リモートコンピュータ」で、RasPi のホスト名「minwinpc」を指定すれば ok です。このとき、Windows 認証のチェックを外しておきます。もうひとつ、ソリューションプラットフォームを「ARM」にします。RasPi では CPU が ARM なので、初期値の x86 では動きません。

うまくビルドとデプロイが成功すると、HDMI 接続されているディスプレイに Hello world が表示されます。

https://pbs.twimg.com/media/CD44CvOUUAAtGZA.jpg

Lチカの準備をする

Windows IoT – Blinky Sample を見ながらプログラムを組んでいきます。新規にプロジェクトを作るときは参照設定で、Windows IoT Extension SDK を入れておきます。

image

netduino を使って .net micro を扱ったことのある方は、だいたい似たような感じになっていることが分かるでしょう。Windows.Devices.Gpio 名前空間で GPIO の LOW/HIGH を設定すれば、そのまま完成です。タイマーイベントとか、タクトスイッチのイベントにはラムダ式を使えるので、そのあたりでは C# が便利です。

ひとまず、Netduino で作った TA7291P モータードライブを Netduino でリモート制御する | Moonmile Solutions Blog を、RasPi に直していこうかなと思っています。出来上がったら、ぼちぼちと追記していきますので。

追記

カテゴリー: RaspberryPi, Windows 10 パーマリンク

Raspberry Pi 2 に Windows 10 IoT Core を乗せて Hello world するまで への3件のフィードバック

  1. ピンバック: OSXとRaspberry Pi2でWindows10 Insider Previewを最速で動かす | eye4brain

  2. ピンバック: Raspberry Pi 2にWindows 10 IoT Core Insider Previewをインストール

  3. millennium のコメント:

    H”ですか…さてはDぽユーザですね?

コメントは停止中です。