IoTへの挑戦 Raspberry PiでWindows 10 IoT Coreを動かす(5)(Ver 2.0)
■Visual StudioでLEDを点灯するサンプル・プログラムを動かす
今回は、Windows 10 IoTのサンプル・プログラムをVisual Studioで動かします。
1 サンプル・プログラムのzipファイルをダウンロードし展開する 2 Visual Studioを起動し、サンプル・プログラムのプロジェクトを開く 3 Raspberry Pi 3 model BをVisual Studioのリモート・デバイスと設定 4 Blinkyのプログラムをデバッグ・モードで動作確認する (HelloBlinkyフォルダにある) |
今回は以上の作業を行います。
●サンプル・プログラムをダウンロードする
Windows 10 IoTのサンプル・プログラムは次に示すアドレスのGitHubのページに用意されています。
https://github.com/ms-iot/samples
このページの緑色の「Clone or download」のボタンの下向きの三角のアイコンをクリックすると、ダウンロードができるようになります。
次に示すように、「Download ZIP」の表示のボタンをクリックしてサンプル・プログラムをダウンロードします。
「Download ZIP」をクリックすると、次に示すように保存するか聞いてきます。保存の横の▼マークをクリックして表示される保存方法から、「名前を付けて保存」を選択し保存先を指定します。
保存先を指定してダウンロードした結果を次に示します。全サンプル・プログラムが、samples-develop.zipの名のファイルとしてダウンロードされました。
このzipファイルをマウスの右ボタンでクリックして表示されるリストから、「すべて展開」をクリックしてファイルの展開を開始します。
展開先のフォルダを確認し先に進みます。
フォルダの容量が大きいので少し時間がかかります。進行状況がバー・グラフで確認できます。
展開が完了すると、次に示すようにHelloBlinkyを含めて多くのサンプル・プログラムのフォルダが用意されています。
サンプル・プログラムは ドキュメント>Visual Studio 2017>Projects>sampleのフォルダにCppとCSのフォルダがあります。CppはC++用、CSはC#用です。Blinkyのソリューション・ファイルがBlinky.slnの名で格納されています。
●Visual Studio 2017を起動
Visual Studioを起動すると、次の初期画面が表示されます。
メニューバーの ファイル>開く>プロジェクト/ソリューション(P)を選択します。
「プロジェクトを開く」という名の次のようなウィンドウが表示されます。解凍したサンプル・フォルダからコピーしたHelloBlinkyのフォルダを選択します。このフォルダにはCppとCSのフォルダがあります。CppはC++のプロジェクト、CSはC#のプロジェクトです。今回はC#のプロジェクトを利用します。CSフォルダの中にあるBlinky.slnがソリューション・ファイルです。このファイルを選択してソリューションを開きます。
ソリューションを開こうとすると、次のような警告のメッセージが表示されます。
マイクロソフトのサイトからダウンロードしたサンプル・プログラムですので、OKで答えて次に進みます。
ソリューションおよびプロジェクトを開いた後は、Windows 10 IoTの拡張機能の設定を次のように行います。ソリューションエクスプローラーの「参照」をマウスの右ボタンでクリックし、表示されるリストから「参照の追加」を選択します。
次に示す参照マネージャーのUniversal Windows の拡張を選択します。Windows 10 IoT Extensions for the UWP 10.0.10586.0を選択すると、先頭に四角いチェック欄が表示されます。
選択した項目をマウスでチェックしてOKボタンをクリックし次に進みます。
次のリモートコンピュータの設定で、ネットワーク経由でRaspberry Pi 3 model Bと接続します。接続する前にRaspberry Pi 3 model Bはネットワークに接続し電源を投入し稼働した状態にしておきます。次の処理でPCのVisual StudioからRaspberry Pi 3 model B にアクセスして接続されます。
●リモートコンピュータ
ソリューション構成を「デバッグ」に設定し、その横のソリューションプラットフォームをARMに設定します。
ソリューションエクスプローラーのMainPage.xaml、MainPage.xaml.csのうちMainPage.xaml.csを選択すると、次に示すようにソース・プログラムが表示されます。
Deviceの欄の▼ボタンをクリックしてデバイスの設定のリストを表示します。最初は、次に示すようにDeviceが設定されています。
●リモートコンピュータを選択する
デバイスの選択でリモートコンピュータを選択すると、次に示すリモート接続の設定ウィンドウが表示されます。自動検出の欄にはminwinpc010--192.168.1.79のPC名とIPアドレスが表示されます。
ネットワークに3台のRaspberry Piが接続されています。そのため、3台のRaspberry Piが自動検出されています。今回リモート接続のテストを行うのはRaspberry Pi 3ですので、minwinpc010--192.1681.79が該当のRaspberry Piです。この項目をマウスで選択します。
選択ボタンをクリックし、リモートコンピュータの設定を終えます。
●ビルド・デバッグ
次にメニューバーの「ビルド>Blinkyのビルド」を選択し、Blinkyのビルドを行いエラー一覧に正常終了との結果を得ました。
●デバッグの開始
メニューバーの「デバッグ>デバッグの開始(F5)」を選択するか、F5のファンクション・キーを押すか、ツールバーの緑色の横向きの三角のアイコンをクリックすることでデバッグを開始できます。
ここでは、次に示すようにメニューバーの「デバッグ>デバッグの開始」を選択してデバッグを開始します。
デバッグ・モードに入ると、次のような表示になります。ツールバーの内容もデバッグの「すべての中断」、「デバッグの停止」のボタンなどが表示されています。
Raspberry Pi 3のモニタの表示は電源が入っていますから、次のような表示になっています。この状態でVisual Studioのデバッグを開始します。
デバッグの開始からしばらくすると、Raspberry Pi 3のモニタの画面に次のような表示が現れます。
その後に次のように赤いマークが点滅を開始します。
Raspberry Pi 3 model Bのピンヘッダの1番ピン3.3Vと29番ピンのGPIO5のピンからリード線を引き出し、LEDを点灯しています。3.3Vからのリード線は330Ωの抵抗の一端に接続し、抵抗のもう一方のリード線はLEDの長いほうの足に接続します。LEDの短い方の足(-側)はGPIO5に接続しています。このLEDもモニタの赤のマークと同期して点滅しています。
GPIOの電流のドライブ能力はGPIOピン全体で50mA、各ピンを単独で駆動する場合は16mA以下にとありました。LEDのVf(順方向電圧)は1.8V、330Ωの抵抗の電圧降下は1.8Vで約4mA電流が流れています。これはGPIOの許容範囲内です。
ツールバーの茶色の四角のボタンの「デバッグの停止」をクリックするとデバッグが停止され、Visual Studioの表示も次のように元に戻ります。
Blinkyのプログラムも停止するため、Raspberry Pi 3のモニタの画面も元に戻り、LEDの点滅も停止します。
(2016/2/3 V1.0)
(2017/6/13 V2.0)Visual Studio 2017のサンプル・プログラムが2015から保存場所などが変更されたため、ほぼ全面的に図と文章を更新。
<神崎康宏>
バックグラウンドGitHub;ソース・コードを管理するシステムを提供しているWebサイトです。分散したリポジトリ(保存領域)を複数人によってバージョン管理ができるので、それまで使われていたSourceForge.netから移行しています。公開リポジトリは無償で使用できます。企業ユーザには有料のプライベート・リポジトリが提供されます。
プロジェクト;アプリケーションを開発するときにソース・コードは一つとは限りませんし、ヘッダ・ファイルや画像なども管理しなければなりません。それらもろもろをまとめて管理する単位がプロジェクトです。
C++、C#;C言語を拡張してオブジェクト指向言語としてC++が作られました。C#は、マイクロソフトが .NET用に新しく作ったC++とJavaが混ざったような言語だといわれています。
デバッグ;プログラムは思ったように動かないのが普通です。一つは、文法をしっかり覚えていないための用法間違いによるもの。文法的には完璧でも、思い込みでループの回数を少なくしてしまい、計算結果が違っているというアルゴリズムの不正確さなどが原因でプログラムが正しく動かないことがあります。その原因を、プログラムを1行ずつ実行させたりしながら、変数の中身を見て、自分のミスを見つけるのがデバッグです。
ピンヘッダ;Raspberry PiのCPUのI/O信号の多くは40ピンのGPIOに取り出されています。2.54mm(0.1インチ)間隔で並んだ2列×20本のピンがはんだ付けされ、簡単に別の外部の回路とつなげるように端子が出ています。これらをピンヘッダと呼びます。
Raspberry Pi ZEROでは、ピンヘッダははんだ付けされていないので、自分で用意します。