Post on 12-Apr-2017
Windows 10 IoT Coreとハードウェアプロトタイピング2015年8月22日じゅげむ
めとべや東京#9
00 おことわり• 本資料は正式リリース前のバージョンのOSを使用し、作成されています。(Windows 10 IoT Core Insider Preview for Respberry Pi 2)• 正式リリースされてますが、未確認です。(すみません)• 本資料に記載されている内容は個人の見解であり、所属する組織を代表するものではありません。
2
00 自己紹介• じゅげむ
• Twitter : @jugemsan• http://pichi.net/jugemsan/
• 本業:某社でマネージャ• 経営企画(事業計画・イベント)・情報システム・リスク管理・広報 etc.
• 趣味:1997-2003 同人誌の作成2000-2004 同人誌即売会(オンリーイベント)の主催者2004-2011 >> 暗黒の社畜時代 <<2011- Windows Phoneのアプリ開発
3
01 Windows 10 と Windows 10 IoT
4
⇒Windows 10 IoT
⇒Windows 10 desktop⇒Windows 10 mobile
• Windows 10 =「ユニバーサル Windows プラットフォーム」• いろんなデバイス
• PC/タブレット• スマートフォン(Windows Phone)• ゲーム機(XBOX One)• VRデバイス(HoloLens)• 産業機器(キオスク端末、サイネージ、ハンディターミナル,etc.)• マイコン機器(Raspberry Pi 2,etc.)
02 Windows 10 IoTには3つのバージョンがある
5
ベースOS CPU シェル アプリストア 標準アプリ サードパーティアプリ 拡張SDKサポートUWP ストアアプリfor Win8.1 クラシックWin32/.NET IoT Desktop Mobilefor industry devicesキオスク端末、デジタルサイネージ向け
desktop x86 ◎ ○ ○ ○ △ ○ ○ ○ ×
for mobile devicesハンディターミナル、モバイルPOS向け
mobile ARM ○ ○ ○ ○ △ × ○ × ○
Core小型マイコンボード向け(Core) ARMx86 ×
リモート
のみ
× × ○ × × ○ × ×
03 Windows 10 IoT Core• より小さいデバイスを、Windowsのメリットを生かしてサポート
• アプリ開発をVisual Studioでできる(インテリセンス、C#)• IoT開発に必須のバスアクセスや電波関連デバイス用APIが整備• Alljoyn規格対応APIにより、周辺デバイスとの接続・連携が容易
• 現在サポートするデバイスは3機種限定
6Intel® Galileo Raspberry Pi 2 MinnowBoard Max
04 Raspberry Pi 2 とハードウェアプロトタイピングRaspberry Pi 2• もともとはIT教育を目的に開発• 標準OSはLinux(Debian based)• PC向けインタフェース搭載(HDMI、USB、LAN…)• 電子回路向けインタフェース搭載(GPIO、I2C…)
• GPIO(汎用I/Oポート):デジタル信号(High/Low)の入出力• I2C(シリアル通信):信号線2本で112個のアドレスにデータ送受信可能
7
ハードウェアプロトタイピング• 電子回路のアイディア検証や試作に、プロトタイピング手法を導入• 安価なプログラマブルデバイスの登場、IoTへの注目により活発化• デバイス例
• Raspberry Pi/Raspberry Pi 2(Linux/Windowsが動作)• Arduino(クローン多数)• mbed(ブラウザで開発できる)
05 Raspberry Pi 2でWindows 10 IoTを使う(環境設定)• 手順はこちら
• http://ms-iot.github.io/content/en-US/GetStarted.htm• RP2にWindows 10 IoT Core(Preview版)をインストールする
• RP2用のOSイメージをダウンロードする• microSDカードへの展開ツールあり(要Windows 10インストール済PC)
• 開発用PCに開発環境をセットアップする• Windows8.1 または Windows10のPCを用意する• Visual Studio 2015をインストールする(Community版で可)
• 「ユニバーサルWindowsアプリ開発ツール」を含めること• 開発者モードを有効にする• ローカルグループポリシーエディタ(gpedit.msc)で設定変更• 管理ツールをインストールする(同一NWにあるWin10IoTデバイスを表示)• RP2のOSイメージに同梱の「WindowsDeveloperProgramForIoT.msi」
8
06 Windows 10 IoT Coreにおける開発環境• 開発形態
• 開発用PCからターゲットデバイス(RP2)へ、リモート接続して開発• 同一ネットワークでの接続必須
• ツール• Visual Studio 2015• IoT Core Watcher(同一NW内のWin10 IoTデバイスを検出)• ブラウザモニタ(タスク一覧やCPU/メモリの使用状況など)• PowerShell(Administratorのパスワード変更など)
9
07 今回の開発テーマ• 課題:離れた場所から、在席状況がわかるようにしたい• 方法:赤外線を検知する焦電センサーを使い、人が近づいたら通知する
10
08 プロトタイプ開発:ハードウェア• RP2のGPIOポートを使う• 焦電センサー信号を入力し、検知したらLEDを点灯させる• ちなみに、部品は秋葉原で購入可能(全部で7,000円くらい)
11
Raspberry Pi 2焦電センサー
LED(検知通知)
09 プロトタイプ開発:ソフトウェア• Visual Studio 2015で「Windows Universal」の新規プロジェクトを作成
12
09 プロトタイプ開発:ソフトウェア• 参照から「Windows IoT Extension SDK」を追加
13
09 プロトタイプ開発:ソフトウェア• MainPage.xaml.csにコードを記述• 例:GPIOポートの初期化
• 今回、MainPage.Xaml(画面)は不要なので実装しない• 画面には真っ白な画面が表示されているはず• 検知結果などを表示させてもいい 14
using Windows.Devices.Gpio;int LED_PIN = 5;GpioPin ledPin;var gpio1 = GpioController.GetDefault();ledPin = gpio1.OpenPin(LED_PIN);If (ledPin != null) {
ledPin.Write(GpioPinValue.High);ledPin.SetDriveMode(GpioPinDriveMode.Output);
}
09 プロトタイプ開発:動作確認と作りこみ• アプリを書いたら、基本部分の確認を行う
• 焦電センサーで、どのくらいの距離、角度で検知できるか?• 検知が不十分なら、センサー部品を別のものにする
• 基本部分が固まったら、実使用(課題解決)を意識した作りこみへ• 例:検知結果をLED表示でなく、別の場所に表示するには?
• 別の表示専用機器を作って、無線で飛ばす• クラウド上にデータを置いて、Webアプリにする
15
10 まとめ• デジタル回路の知識は必要だけど、単純なことなら覚えることは少ない• 「○○を作ってみた」に挑戦するのに、Windows 10 IoTは強い味方!
16