記事

IoTへの挑戦 Raspberry PiでWindows 10 IoT Coreを動かす(5)

■Visual StudioでLEDを点灯するサンプル・プログラムを動かす


 今回は、Windows 10 IoTのサンプル・プログラムをVisual Studioで動かしてみます。

(1) サンプル・プログラムのzipファイルをダウンロードし展開する
(2) Visual Studioを起動し、サンプル・プログラムのプロジェクトを開く
(3) Raspberry Pi 2 model BをVisual Studioのリモート・デバイスと設定
(4) Blinkyのプログラムをデバッグ・モードで動作確認する

 今回は以上の作業を行います。

サンプル・プログラムをダウンロードする
 Windows 10 IoTのサンプル・プログラムは、次に示すアドレスのGitHubのページに用意されています。
   https://github.com/ms-iot/samples
 このページの「Download ZIP」のボタンをクリックしてサンプル・プログラムをダウンロードします。

iot01-c7c2c6bb.png

 「Download ZIP」をクリックすると、次に示すように保存するか聞いてきます。保存の横の▼マークをクリックして表示される保存方法から、「名前を付けて保存」を選択し、保存先を指定します。

iot02a-f9c45088.png

 保存先を指定してダウンロードした結果を次に示します。全サンプル・プログラムがsamples-develop.zipの名のファイルとしてダウンロードされました。

iot03a-c784c51d.png

 このzipファイルを、マウスの右ボタンでクリックして表示されるリストから「すべて展開」をクリックして、ファイルの展開を開始します。
 展開先のフォルダを確認し先に進みます。

image007-ebe09883.png

 フォルダの容量が大きいので少し時間がかかります。進行状況がバー・グラフで確認できます。

image009-1921bd1f.png

 展開が完了すると、今回実行するBlinkyを含めて多くのサンプル・プログラムのフォルダが用意されています。

iot04a-f4bdbd42.png

LED点灯のプロジェクトを開く
 Visual Studioを起動して、blinkyのプロジェクトを開きます。

iot05-4d1e2dfb.png

 メニューバーの ファイル>開く>プロジェクト/ソリューション(P)を選択します。
 「プロジェクトを開く」という名称の次のウィンドウが表示されます。解凍したサンプルのフォルダから、Blinkyのフォルダを選択します。このフォルダにはCppとCSのフォルダがあります。CppはC++のプロジェクト、CSはC#のプロジェクトです。今回はC#のプロジェクトを利用します。CSフォルダの中にあるBlinky.slnがプロジェクト・ファイルです。このファイルを選択してプロジェクトを開きます。

iot06-767d57be.png

 プロジェクトを開こうとすると、次の警告のメッセージが表示されます。

image017-6cd2a0be.png

 OKで答えて次に進みます。
 プロジェクトを開いた後は、Windows IoTの拡張機能の設定を次のように行います。
 ソリューションエクスプローラーの「参照」をマウスの右ボタンでクリックし表示されるリストから「参照の追加」を選択します。

iot07-593721bd.png

 参照マネージャのUniversal Windows の拡張を選択します。Windows IoT Extensions for the UWP 10.0.10586.0を選択すると、先頭に四角いチェック欄が表示されます。

iot08-66aaed02.png

 選択した項目をマウスでチェックして、OKボタンをクリックし次に進みます。
 次のリモート・コンピュータの設定で、ネットワーク経由でRaspberry Pi 2 model Bと接続します。接続する前にRaspberry Pi 2 model Bはネットワークに接続し電源を投入し稼働した状態にしておきます。次の処理で、PCのVisual StudioからRaspberry Pi 2 model B にアクセスして接続されます。

リモート・コンピュータ
 ソリューション構成を「デバッグ」に設定し、その横のソリューションプラットフォームをARMに設定します。
 ソリューションエクスプローラーのMainPage.xaml、MainPage.xaml.cs、のMainPageを選択すると、次に示すようにソース・プログラムが表示されます。

iot09-00d7daf6.png

 Deviceの欄の▼ボタンをクリックして、デバイスの設定のリストを表示します。最初は次に示すようにDeviceが設定されています。

iot10-6b517488.png

リモート・コンピュータを選択する
 デバイスの選択で「リモート・コンピュータ」を選択すると、次に示すリモート接続の設定ウィンドウが表示されます。自動検出の欄には「minwinpc--192.168.1.59」のPC名とIPアドレスが表示されます。

iot11-059833a5.png

 自動検出されたminwinpcをマウスで選択します。警告のメッセージが表示されますが、該当するRaspberry Pi 2 model Bなのと、ローカルなネットワーク内ですのでこのminwinpcを選択します。

image029.png

 次にメニューバーのビルド>Blinkyのビルドを選択し、Blinkyのビルドを行うとエラー一覧に正常終了との結果を得ました。

iot12.png

 デバッグ・モードに入り、次のような表示になります。ツールバーの内容もデバッグの「すべての中断」、「デバッグの停止」のボタンなどが表示されています。

iot301.png

 Raspberry Pi 2 model Bのモニタの表示は電源が入っていますから、次のような表示になっています。この状態でVisual Studioのデバッグを開始します。

ito11-2.png

デバッグの開始

  • メニューバーの デバッグ>デバッグの開始(F5)を選択
  • F5のファンクション・キーを押す
  • ツールバーの緑色の横向きの三角のアイコンをクリック

いずれかの方法で、デバッグを開始できます。 

 デバッグの開始からしばらくすると、Raspberry Pi 2 model Bのモニタの画面に、次の表示が現れます。

image037-85938859.jpg

 数秒後に、次のように赤いマークが点滅を開始します。

ito122.png

 Raspberry Pi 2 model Bの、

  • ピンヘッダの1番ピン3.3V
  • 29番ピンのGPIO5のピン

からリード線を引き出し、ブレッドボード上に配線したLEDを点灯しています。3.3Vからのリード線は330Ωの抵抗の一端に接続し、反対の抵抗のリード線はLEDの長いほうの足に接続します。LEDの短いほうの足(-側)はGPIO5に接続しています。このLEDも、モニタの赤のマークと同期して点滅しています。

iot20.png

 Raspberry Piの資料には、GPIOの電流のドライブ能力はGPIOピン全体で50mA、各ピンを単独で駆動する場合は16mA以下にとありました。LEDのVf(順方向電圧は1.8V)、330Ωの抵抗の電圧降下は1.8Vで約4mA電流が流れています。GPIOの許容範囲内です。
 ツールバーの茶色の四角のボタンの「デバッグの停止」をクリックすると、デバッグが停止され、Visual Studioの表示も次のように元に戻ります。

image043.png

 Raspberry Pi 2のモニタの画面も元に戻り、LEDの点滅も停止しBlinkyのプログラムも停止します。

(2016/2/3 V1.0)

<神崎康宏>


バックグラウンド

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では、ピンヘッダははんだ付けされていないので、自分で用意します。

連載メニュー IoTへの挑戦 Raspberry PiでWindows 10 IoT Coreを動かす

(1) 5千円台のマイコン・ボードRaspberry PiでWindows10が動く

(2) Windows 10 IoT Coreのダウンロードとインストール

(3) Windows 10 IoT Core Dashboardが開発基地

(4) 無償で使える開発ツールVisual Studio2015のインストール

(5) Visual StudioでLEDを点灯するサンプル・プログラムを動かす

(6) VisualStudio 2015のデバッガの機能を利用してBlinkyの動きを見る

(7) Blinkyプロジェクトの中身を見る

(8) 押しボタン・スイッチの検出を行うプログラムをテスト

(9) デバッガを使ってPushButtonの処理内容を確認

(10) UIをもたないでバックグラウンドで実行されるプログラム

(11) ボタンとLED点滅の新規プロジェクトの作成