Windows IoT とRaspberry Pi 2 でLチカ


# はじめに
Windows IoT をRaspberry Pi 2 にインストールして，Microsoft 配布のLチカサンプル実行までのメモ．
ネット上でいろいろ調べたが，皆さんC#を使っていたが，私は諸事情あってC++でなければいけないので，以外と情報が無く，また，VC++に不慣れなこともあり，意外と苦労してしまった．
なお，Windows IoT のインストールとVisual Studio 環境の構築については，Web 上に非常に多くの情報があり，助かった．また，Windows IoT の開発を行うには，Windows10 でなければいけないとのことなので，仕方なくWin7からアップグレードした．

# 1. IoT Dashboard のインストール
配布先は[こちら](http://ms-iot.github.io/content/en-US/Downloads.htm)にあるが，Google で「Raspberry pi」で検索し，公式ページの[DOWNLOADS](https://www.raspberrypi.org/downloads/)から「WINDOWS 10 IOT CORE」のリンクを辿ってもたどり着ける．
配布先にたどり着いたら，[Get IoT Core Dashboard](http://go.microsoft.com/fwlink/?LinkID=708576)をクリックして，setup.exe をダウンロードする．
setup.exe を実行すれば，インストーラーの指示通りに進めれば次のような画面になり，インストールが完了する．
![dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/106933/da46300d-2b11-a8b2-7dbf-87d2f24d2e7f.png)

# 2. OSイメージをSDカードに書き込む
先ほどインストールしたIoT Dashboard で，OSイメージをSDカードに書き込む．パソコンに空のSDカードを挿入したら，先ほどの画面（新しいデバイスのセットアップ）で，

- デバイスの種類：Raspberry Pi 2; Windows 10 IoT Core for Raspberry Pi 2
- ドライブ：挿入したSDカードのドライブ
- 「ソフトウェアライセンス条項に同意する」にチェック

となっていることを確認し，「ダウンロードとインストール」をクリックすれば終了．

# 3. OS のインストール
Raspberry Piをマウスとディスプレイにつなぎ，OSイメージを書き込んだSDカードを，Raspberry Piに挿入し，電源を入れると自動でOSインストールがスタートする．途中言語の選択を求められるので，日本語を選択すればよい．
インストールが完了すると，Dashboard の「自分のデバイス」タブを見ると，デバイスが表示されているはずである．
![mydev.png](https://qiita-image-store.s3.amazonaws.com/0/106933/684c371b-8da1-e4ae-80ff-3e840e2b2963.png)
IPアドレスは，DHCPに対応したルーターであれば，自動で割り振られたIPアドレスがここに表示される．DHCPに対応していない場合は，MACアドレスを手動でルーターに設定する．
次に，セキュリティのために，パスワードを変更する．
先ほどの画面の設定の所にある鉛筆マークをクリックすると，次のような画面になるので，「デバイスのパスワードを変更」をクリックする．
![configdev.png](https://qiita-image-store.s3.amazonaws.com/0/106933/7e3998ef-a961-4f5c-d69e-29cc4f10bd89.png)
すると，パスワード変更の画面となるので，新しいパスワードを設定する．
なお，最初のデフォルトの設定は，

- ユーザー名: Administrator
- パスワード: p@ssw0rd

である．
また，Dashboardの「自分のデバイス」タブで，「Device Portal で開く」にあるインターネットマークを押し，先ほど設定したパスワードを入力すると，より詳細なデバイスの設定ができる場面になる．
![home.png](https://qiita-image-store.s3.amazonaws.com/0/106933/b2124484-673a-ad7e-7d8a-9f0d406167e9.png)

# 4. Visual Studio による開発の準備
これは，先人が既にまとめてくれている通りに行えばよい．

1. [Windows 10を開発者モードに切り替える](http://www.ipentec.com/document/document.aspx?page=windows-windows-10-set-developer-mode&culture=ja-jp)
2. [WinRM(Windows リモート管理) サービスを開始する](http://www.ipentec.com/document/document.aspx?page=windows-windows-10-start-winrm-service&culture=ja-jp)
3. [WinRM の TrastedHosts にホストを追加する](http://www.ipentec.com/document/document.aspx?page=windows-windows-10-add-winrm-trasted-hosts&culture=ja-jp)

なお，3のTrastedHostsに追加の部分では，リンク先の人はデバイス名を追加しているが，私はそれではどうもうまくいかなかったため，IPアドレスを登録したらうまくいった．

また，私は，Visual Studioをデフォルトでインストールしてしまい，幾つかたりないものがあったので，それらを次の手順でインストールした．
Windows＞設定＞システム＞アプリと機能
と進み，Visual Studio 2015をクリックして「変更」を選ぶ．
![vschange.png](https://qiita-image-store.s3.amazonaws.com/0/106933/a8a06b2e-f7b0-8192-8e85-513eefe24bff.png)
すると，次のような画面となるので，再び「変更」を選ぶ．
![vschange2.png](https://qiita-image-store.s3.amazonaws.com/0/106933/ee5651b4-7304-7998-376c-11a5a04ceafa.png)
次に，下の画面のように，「ツール（1,2）とWindows 10 SDK」と「Windows 10 SDK」にチェックを入れて，更新ボタンを押す．あとは，インストーラーの指示通り．
![vschange3.png](https://qiita-image-store.s3.amazonaws.com/0/106933/0d782baa-30ce-bbdc-6aec-4643c3460323.png)

# 5. Lチカサンプルプログラムのダウンロード
サンプルは，[GitHub](https://github.com/ms-iot/samples)にあるので，こちらからZipをダウンロードする．今回使用するサンプルプログラムは，ダウンロードしたファイルに含まれている「Blinky」である．
このサンプルは，Blinky\Cpp配下にあるBlinkyCpp.slnである．

# 6. LEDの配線
LEDの配線は，[Windows 10 IoT CoreでLEDを点滅させてみました](http://mag.switch-science.com/2015/05/02/windows-10-iot-core-blinky/)と全く同じにする．なお，Raspberry PiのGPIOピンの配置は，以下の通りなので，5V電源がよければそちらに変更してもよい．

# 7. リモートコンピュータの設定
次に，Visual Studio上のリモートコンピュータの設定を行う．ここで言うリモートコンピュータとは，Raspberry Piである．
まず，ソリューションエクスプローラー内のBlinkyCpp上で右クリックして，プロパティを選ぶ．
![vsprop.png](https://qiita-image-store.s3.amazonaws.com/0/106933/659653e9-aba4-c6de-e778-8a796a87fbbc.png)
次に，デバックタブに移動して，コンピュータ名をRaspberry PiのIPアドレス（またはコンピュータ名）に，認証の種類を「ユニバーサル」に変更する．
![vsprop_debug.png](https://qiita-image-store.s3.amazonaws.com/0/106933/3487d5fb-f039-b204-7d7a-452318969635.png)
その後，ビルド構成をDebug, ARM，に変更し，次の画面の様にリモートコンピュータに配置先を設定して，プロジェクトをビルド，実行する．
![vsbuild1.png](https://qiita-image-store.s3.amazonaws.com/0/106933/b4f1bc6b-c191-6c6f-5312-ee56aab4b793.png)
すると，無事LEDがチカチカする．また，Raspberry Piの画面もチカチカする．

# エラーの対処
## 1. リモートデバッガーが起動に接続できない時
上記のようにプロジェクトをビルドしても，配置エラーとなり，「Microsoft Visual Studio リモート デバッガーに接続できません」との趣旨のエラーが出ることがある（私はこれにずっと悩まされました）．こういう時は，IoT Dashboard からDevice Portal を開き，Debugging タブ内にある「Start Visual Studio Remote Debugger」のStartをクリックする．すると，リモートデバッカーが起動し，どのポートに接続すればよいかの指示が出るので，それに従い，先ほど設定したIPアドレスの後にポートを入力することで，私はうまくいった．
![start_debugger.png](https://qiita-image-store.s3.amazonaws.com/0/106933/841fa437-5a04-1109-c566-621cae248ff4.png)

## 2. DEP6953エラーが出る時
何度かLチカを試していると，DEP6953エラーが出ることがある．こういう時はDevice Portal のRunning Processes から，msvsmonを停止させて（プロセス名左の×をクリック），もう一度プロジェクトをビルド・実行することで，私はうまくいった．

# 参考になった（なりそうな）Webページ
- C#，C++，pythonでのデプロイについて
        [Deploying an App with Visual Studio](http://ms-iot.github.io/content/en-US/win10/AppDeployment.htm#cpp)
- コンソールアプリのサンプル
        [MemoryStatus Console Application Sample](http://ms-iot.github.io/content/en-US/win10/samples/ConsoleApp.htm)
- 大まかな全体の流れ
        [Visual Studio 2015 でシンプルな Windows 10 IoT アプリケーションを作成する](http://www.ipentec.com/document/document.aspx?page=visual-studio-2015-create-simple-windows-10-iot-application&culture=ja-jp)
- リモートデバッガに接続出来ない時の対処
        [Windows IoT Core : UWP(Universal Windows Platform)アプリでLチカ](http://www.usagi1975.com/201507271294/)