Windows IoT Coreでマイコン電子工作?

Windows10のリリースが近づいてきたころにMicrosoftのサイトで情報収集していると、緑色の基板やらブレッドボードなどが目に入る。.NET Micro Frameworkで動作するマイコンがあるのは知ってたので、それのことだろうと思っていた。ArduinoRaspberryPiなどARMプロセッサ上でLinuxベースのOSを稼動させるのが主流であり、まったく食指が動かなかったが、よく見ると「For Raspberry Pi2」とある。

Visual Studio 2015から従来のProfessionalエディション相当がCommunityとなって無償化された。移行・変換ツールなども提供されて、AndroidやらiOSアプリも食ってしまおうという意気込みである。細かい内容など確認もせずAmazonで久々の衝動買い。熱が冷めないうちに備忘録を書き溜めていく。

※投稿時はWindows10 Insider Preview版で検証しており、Core OSもほとんどα、β版相当なので、
この数ヶ月で内容が大きく変わるかもしれない。

まず、関連あるMicrosoftのリンク

  • Windows IoT Coreのホームページ。Core OSの入手やアップデート情報、チュートリアルなど (URL)
  • Windows IoT Core開発のDownloads and Tools (URL)
  • Windows 10 IoT Core for Raspberry Pi2のISOイメージダウンロード(URL)
  • Windows IoT Core開発のドキュメントやサンプルコード (URL)
  • hackster ioのWindows IoTページ(ほかにもさまざまなマイコン開発のプロジェクトがある) (URL)

そもそもWindows IoT Coreとはなにか?

Windows10から、PC、スマホ、タブレット、Xbox・・などのさまざまなプラットフォーム内に共通するコアを持たせることによって、APIを共通化し、ビルドされたプログラムモジュールが、どの端末でも動作するようにしている。

このようなインターフェイスをユニバーサル Windows プラットフォーム (UWP)と呼んでおり、これらのインタフェースで作成したアプリケーションがUWPアプリであり、今後はこれらがメインストリームになるようにMSは画策している。要するにUWPに準拠していれば、作成したアプリやドライバはWindows製品全てで動作すると言っている。

IoT(Internet of Things)は、PCやスマホ、プリンタなど、もともとインターネットに接続する前提のデバイスではない、さまざまな機器(マイコンなどの小型コンピュータもここに含まれる)をインターネットに接続する技術と定義されている。Windows IoT Coreは、これらのデバイス向けに開発された最小のOSになる。要するにすごい小さいWindows10ということになる。これがRaspberry Pi2に乗っかることになってちょっとした騒ぎになった。

Windows IoT CoreをRaspberry Pi2に乗せるには、まずどうするのか?

  • Windows Insider Programに参加して、Windows10 Insider Previewをインストールする(仮想環境でOK)
  • Visual Studio 2015 RC版、IoT Core Toolsを入手してインストールする (URL)
  • Raspberry Pi2、MicroSD(8GB以上)、MicroUSBケーブル(type-b)、HDMIケーブル、HDMI対応モニタ、LANケーブル、USBタイプの充電器や電源アダプタ、マウスを入手する
  • Windows IoT Coreを入手してSDカードインストールする (URL)
  • Raspberry Pi2にSDカード、ケーブルをセットして電源ON

Download Windows 10 IoT Core for Raspberry Pi 2 from Official Microsoft Download Center

Windows IoT Coreを入手してSDカードインストールするまで

IoTホームから、Raspberry Pi2を選択する
a01

a02

IoT Core Toolsをインストールすると、C:\Program Files(x86)\Windows IoTディレクトリ以下に、ツールと最新のIoT Coreのイメージファイル(*.ffu)が展開される。この中のIoTCoreImageHelper.exeというツールがあるのでアプリを起動し、SDカードとffuイメージを選択して実行すると、ffuファイルがSDカードに焼かれる。

a04b

a04

a05

IoT Core イメージ書き込み後のSDカードのパーティション構成は以下のとおり、16GBのカードを用意したが、8GB以降は未定義になるので、8GBのSDカードで十分。

a06

ブートパーティションを見ると、WindowsのCドライブとよく似た構成になっており、config.txtにはハードウェアに関する設定が記載されている。hdmiに関する設定があるので、モニタにあわせて設定がチューニングできるようになっている。

a07

Raspberry Pi2のセットアップとWindows IoT Coreを起動するまで

Raspberry Pi2に対し、SDカード、LANケーブル、HDMIケーブルでモニタに接続した後、最後にMicroUSBケーブルで電源アダプタに接続するとOS起動が開始する。電源スイッチのようなものは存在しない。

002

003

しばらくすると、モニタにWindows10と同じロゴが表示され、Windowsの初期画面へと続く。USBマウスを接続すれば、選択肢を選ぶことができる。

004

005

006

007

ちなみに、現状ではWifiやBluetoothなどの無線デバイスはサポートされていないチュートリアルのキャプチャを見ると、メイン画面でWifiのアクセスポイントを掴んでいる様子もあったので、すぐにでも対応されると思われる。
※flash.ffuの日付が7/10以降のバージョンだとWifi、Bluetoothに対応した模様。

下記リンクにドキュメントあり。
Using WiFi on your Windows 10 IoT Core device
Bluetooth Support

a08

メイン画面からチュートリアルなど参照できるが、マウスなどを接続しても基本的には何もできないと思ってよい。Raspbianなどをイメージして期待するとたぶんガッカリするかもしれない。ただ、IoTデバイスなので40個あるピンをUWPアプリで制御してネットに繋がって通信できればそれで良いと思う。ただRaspberry用の専用LCDやカメラには早めに対応しないと、わざわざWindowsを稼動させる意義が薄れてしまう。

電源まわりの注意点

一応仕様だと、最低5V 1A以上と明記されている。手元にあった最大定格1Aの電源アダプタだと、起動しないケースが多発した。最大定格1Aのアダプタを使う予定の場合は注意する必要がある。できれば1.5~2.0Aぐらいを用意したほうが良い。(ダイソーの1A充電器だと怪しい)

不安定だった1AのUSB充電器。ヘタっているのか、もともとなのか不明

008

家に転がっていた最大定格2.3Aの電源アダプタ。先端をカットしてUSB(メス)をつないだもの

009

クランプメータで起動中のRaspberry Pi2 + Windows IoT Coreの消費電力をチェックしたところ2.1Wとなった。変換効率を100%と考えると420[mA]程度で動作している?

012

1Aアダプタだと起動が不安定だったが、スタンバイ状態だとほとんど電力消費してない模様。アプリケーションを実行させられるようになったら、再度計測してみることにする。

次回は、PCからRaspberryにネットワーク経由でアクセスする方法をまとめる。Power ShellやSSHで接続したり、ブラウザからアクセスできるようだ。