.NETラボ勉強会 で Windows 10 IoT Core on Raspberry Pi のハンズオンをやりました

思い付きでやったので、準備不足…な感は否めませんが、ひとまずハンズオンっぽいものをやりました。.NETラボ勉強会の面子にビデオを撮ってもらったので、後で編集して Youtube 等に上げたいと思います。初動が悪かったので、Raspberry Pi の初心者ばかりが集まる=手ぶらでやってくる方がほとんどと思ったのですが、予想に反して Raspberry Pi 2 を持って来て下さった方が8名余りもいらっしゃいました。ありがとうございます。ちょっと、そっちのほうは予想しなかったので、ほぼ放置状態になってしまったのが申し訳ない/残念なのですが、ひとまず、Raspberry Pi 2 に Windows IoT Core を入れるのは結構大変である、ってのは実感して頂けたと思います。いやいや、あれだけ色々な人がやって、結構躓くのだから、家でひとりでやると2時間ぐらいうんうん唸ってしてまっても仕方がないのですよ。情報的には、英語のサイト Windows IoT – Get Started から辿れるところにありますが、各自の環境(Mac, Windows, 仮想環境, micro SD カードの状況などなど)が異なっていて、一筋縄にはいきません。挙句、終わりの5時頃にできたのは、LED をチカチカさせるところまでです。

image

ただし、その前に「どこで躓くのか?」を話したのと、後ろのほうで「何ができるのか?」を話したので、Hello world 的に Lチカを済ませた後に「どこに進めばよいのか」は何となく掴めたのではないか、とは思っています。Raspberry Pi 2 自体は 5,000円程度はするし、時間とお金を掛けるのであれば、それなりに「何か」を掴み取りたいものです。

土曜日には、あえて言いませんでしたが、Windows IoT Core on RPi で四苦八苦するよりは、Raspberry Pi にすんなり Rasbian を乗せて制御したほうが断然いいです。また、Linux に四苦八苦するよりは、Arduino を使ってさっくりとセンサー制御を学んだほうがいいです。そのあたりは、適材適所なところと、「将来的に何をするのか?」の目標を踏み間違えないようにすれば、無駄な学習をせずにすみます(勿論、あえて「無駄な学習」をして異なる知見を得る方法もあります。私もよくやりますが)。

Windows Iot Core on Raspberry Pi の準備

来週から一週間ほど 6/1(月)Windows 10 for Raspberry PI2 開発実習ハンズオンセミナー – connpass が開催されるので、躓きそうなところ(勝手に)支援しておきます。18:00 スタート 21:00 終了というハードスケジュール(平日なので夕方から開催。たぶん de:code に合わせたと思うのですが、かなりきついスケジュール)なので、どこかで躓くと、Lチカもできずに帰ることになってしまうので。

  • 開発環境が Windows 10 IP + Visual Studio 2015 RC となっていますが、現在の Windows 10 IP の build が非常に不安定なので、Windows 8.1 + VS2015RC の組み合わせも検討してみてください。.NET ラボのハンズオンでは半分ぐらいが Mac に Windows 10 IP を入れていましたが、最新のとそうでないものとが混在すると結構ややこしいです。
  • 古い Windows 10 IP だと micro SD カードに書き込む dism のコマンドが異なっています。矛盾していますが、Windows 10 IP は新しいバージョンを使って micro SD カードに焼きこみます。ある意味、micro SD カードへの焼きこみだけ Windows 10 IP で行って、開発環境は Windows 8.1 + VS2015RC という組み合わせが安定します。ちなみに、Visual Studio 2013 と 2015RC は混在できています(これは安定しています)。
  • Windows 10 IP + Visual Studio 2015RC の組み合わせの場合、VS2015RC を立ち上げるときには「開発者モード」にする必要があります。そうしないと、Windows IoT の XAML デザイナが動きません(Windows 8.1 の場合は、もともと動かないので、気にする必要はありません)。デザイナを有効にするためには、「設定」→「Update & security」→「for Developers」を開いて設定します。ちょっと前の Windows 10 IP では、このページが落ちてしまうので Windows 10 を入れた直後に VS2015RC を入れて起動するとXAMLデザイナが動かないときの対処方法 | Moonmile Solutions Blog を参考にして、グループポリシーを設定してください。
  • micro SD カードに焼きこむときに dism コマンドを使いますが、その中の「/ImageFile:flash.ffu」にある、flash.ffu というのは焼きこむファイル名です。Windows_IoT_Core_RPI2_BUILD.zip を解凍すると flash.ffu というファイルがあるので、カレントディレクトリを cd コマンドで移動させてください。コマンドプロンプトを管理者モードで開くと「c:¥¥windows¥¥system32」になります。そのまま dism コマンドをコピペすると flash.ffu が見つからないので書き込みエラーになります(意外と嵌る人が多い)。
  • 多分、Win IoT のプログラムはユニバーサルアプリで作ると思うのですが、あらかじめ Visual Studio 2015 RC を立ち上げて、Universal アプリのテンプレートをダウンロードしておきます。
    以下な、感じになっていれば ok です。回線が細いと、このアップデートだけで20分以上かかります。最初の Universal アプリを作ったときテンプレートがダウンロードされるので、適当なプロジェクトで1回だけ作成しておきます。

image

  • できれば、Raspberry Pi 2 に Windows 10 IoT Core を乗せて Hello world するまで | Moonmile Solutions Blog 等を読んで、micro SD カードを Raspberry Pi に挿して Windows IoT Core の起動だけは確認しておくと安心です。ここまでを含めてハンズオンかもしれませんが、ここをやっておくだけで MS 太田さんの手間がかなり省けます。
  • 電源キットは、2A 5V の…となっていますが、実はノートパソコンから USB 給電だけでも起動します。ただし、HDMI 接続をしているときはうまく立ち上がらないことが多い(起動はしているので、Powershell やアップロードなどは問題ない)ので、電源アダプタは持っておくといかもしれませんね。Android 用の急速充電器(2A版)があればそれを使うとよいです。おそらく、iPad の充電器も使えるのではないかと。まあ、行った先で若松通商さんで買うのもアリですね。

あとは、受講用に Azure を登録しておくとか諸々ありますが、それらは別途、connpass のドキュメントを見てください。

ハンズオンの実際

少しぐらいは資料を用意すればよかったのと、事前に作っておいた(実は、超音波センサーのプログラムは前日…というか当日の夜に作ってあった)プログラムは、配布すればよかったですね。なんとなく、Raspberry Pi を各自動かしてみてから、の頭があったので配布し忘れていたのですが。

image

組み込みに関しては、全くやったことはないけど興味がある方から、自前で液晶ディスプレイを持参できる方までさまざまです。特に Windows IoT on RPi の場合には、もともと Raspberry Pi を使っている方は、それなりに機材が揃っている(自前のハット/拡張ボードとか)のでそれを使いたいものです。ちなみ、Raspberry Pi の既存のハットなのですが、Windows IoT のピン番号が異なっていたり融通が効かなかったりするので、ほとんど使えないと思います。I2C オンリーならば大丈夫かも、ってことで I2C ボードだけは検証します。残念ながら手元の Sparkfun のモータードライバは使えませんでした。

あと、歴史的に Raspberry Pi よりも Arduino のほうが早い時期からあるため、電子工作的なキットでは Arduino のほうが豊富にあります。このため RPi はサーバー機やカメラ利用に使われることが多いのです。Linux が動くので、そのまま apt-get で作れるってのがメリットですね。ですが、Windows IoT Core の場合は、どちらかというと Arduino 寄りな GPIO 接続を狙っているらしく、そのあたりが中途半端になっています。アナログ入力が RPi にはないので、温度センサーもちょっと工夫しないといけません。まあ、そのあたりは、Arduino + Raspberry Pi の組み合わせで試行するのがよいでしょう。ハンズオンでも話しましたが、中国の Arduino Nano 互換機は 300円と非常に安く手に入ります。Arduino Uno 互換機も 700円程度です。この値段ならば、Arduino を PIC などのチップと同様に扱うことも可能です(まあ、それでも 100円とかに比べれば十分高いですが)。

image

ハンズオンでは、敢えて安いブレッドボードと、あえて安いLED/ジャンパーワイヤーを使っています。色々高いものもあるのですが、価格的には低いところから入れますよというのを強調したかったからです。

こんな風な Arduino 戦車であれば、3,500円位で作れます。Arduno Nano 互換機を使えばもっと安くなります。これは Windows Remote Arduino 用にしたもので、Windows ストアアプリや Xamarin.Android を使って Android スマートフォンから操作できます。

image

ロボットアームも、おもちゃのものであれば 5,000円弱からあります。これは株式会社イスペットが出しているグリッパーアームロボットです。サーボモータではないので安く作れています。ロボットアームは2,3年前あたりに流行ったのですが、高価なものが多かった(5万円位?)ためか今ではほとんどが発売中止になっています。うまくやると、グリッパーアームで積木を積むことができます。

image

以前、Kickstarter で出ていた meArm も持ってきました。これはサーボモーターが4つ付いて 3,500円ぐらいです。英国産です。Raspberry Pi 用に Sparkfan で I2C ボードも買ってあるので、いずれ Windows IoT で動かしてみましょう。一年前に meArmPi の動作メモ | Moonmile Solutions Blog あたりで、Raspbian + mono + F# で動かしたことがあります。

image

半田付けの電子工作の例として、RealSense コンテストのとき作った妖怪ウォッチ LED も持って行きました。これは抵抗付きなので、そのまま Raspberry Pi のピンから給電しても大丈夫です。

image

私の場合、Internet of Things というよりも、動かせるモノからスタートしているので他とはちょっと毛色が違うのですが、具体的に「何かが動く」とか「何を操作できる」という入り口がいいかなと思っています。手元の Raspberry Pi 5 台は小学校でのワークショップ用に買ってはみたのですが、Windows IoT だとディスプレイがないとちょっと辛い感じ(Raspbian だとなおさら)なので、この辺りは考え直そうかなと思案中ですね。

次は何をするか?

Windows IoT Core で Lチカをやったり、モーターを制御できた後は何をするのか?が問題ですよね。ホビー的にマルチコプターに進むのもいいのですが、ワタクシ的には地べたを這いずり回るほうが「安全」なので、キャタピラと車輪とアームのほうに進みます。位置情報なんかは「確率ロボテック」を読むとよいでしょう。ルンバの位置情報はこれを使っているハズです。あと、カメラとアーム制御なんかは、ROS に対応させるのも良いかなと。

という訳で、.NET ラボ勉強会スタッフの皆様と、会場を提供してくださった Microsoft さんに感謝です。

参考資料

いくつか Windows IoT Core on Raspberry Pi で参考になりそうな書籍を上げておきます。

サンプルコード

ハンズオンで使った(使う予定だった)サンプルコードを後で載せておきます。

  • いわゆる Hello World.
  • Lチカ
  • 超音波センサーで(おざなりに)距離計測
  • グリッパーアームロボットを遠隔操作
  • Windows Remote Arduino で Arduino 戦車をストアプリで操作
  • Windows Remote Arduino で Arduino 戦車を Android スマートフォンで操作(Xamarin.Android)

の予定

 

カテゴリー: RaspberryPi, Win IoT パーマリンク

.NETラボ勉強会 で Windows 10 IoT Core on Raspberry Pi のハンズオンをやりました への1件のコメント

  1. ピンバック: .NETラボ 勉強会 2015年5月 : .NET Lab

コメントは停止中です。