chibi:bit とスマホとで Bluetooth のペアリングをする

プログラミング教育用マイコンボード、chibi:bit (micro:bit 互換機) は BLE を載せています。
PC とペアリングしてもいいんでしょうが、スマホアプリがある点、プログラミング可能な機能がスマホを意識している点などから考えると、Android か iPhone / iPad とペアリングするのがよさそう。

Screenshot_2016-09-19-22-03-46

2016-09-19 22-00-59


ペアリング方法は以下の通り。(本家サイトにも書いていますが)

  1. スマホに micro:bit アプリをインストールして起動しておく
  2. スマホアプリで [Connections] メニューを選択し、[Pair a New micro:bit] を選択する
  3. スマホアプリで [Next] をタップして、[Enter the pattern] が表示されるので、画面はそのままにしておく
  4. chibi:bit で、A, B ボタン両方を押えたままで、リセットスイッチを押す(少しゆっくり目に押すす)のと、次の文字列が表示されるまで A, B ボタンを放さないのがコツかも。
  5. chibi:bit の LED に“PAIRING MODE !”とスクロール表示される。
  6. chibi:bit の LED に Bluetooth のパスキーに相当するパターンが表示される
    ちなみに私の chibi:bit だとこんな感じ
    DSC_0004
  7. LED パターンと同じ形を、スマホアプリに入力して、[Pair] をタップ
  8. スマホアプリで、“A ボタンを押す”ようメッセージが表示されるので、chibi:bit の A ボタンを押す
  9. chibi:bit の LED に、6桁の数値が順に表示される(30秒間繰り返される)
  10. スマホ側でペアリングのパスキーとして LED に表示された数値を入力する
  11. ペアリング設定に成功するとメッセージが表示される。
    ※もし、パスキー入力が間に合わなかった場合などは、最初からやり直し

一度ペアリング設定に成功したら、chibi:bit の [Connections] メニューでいつでもペアリングが可能です。

Screenshot_2016-09-19-23-05-41Screenshot_2016-09-19-23-05-47Screenshot_2016-09-19-23-05-52

ただし、PC と USB 接続して hex ファイルを転送したりすると、chibi:bit 側のペアリング情報が消えてしまうとのこと。この場合も改めてペアリングの設定を行うと復活します。(が、面倒です・・・)


スマホとペアリングができました。ということで、どう利用するのかはまた改めて。

カテゴリー: IoT, mbed | タグ: , , , | コメントをどうぞ

「Windows 10 IoT Core + IFTTT + Skype で "お手軽" データ監視」LTしました (西東京版 IoTLT!IoTLT八王子 vol.1 (2016年7月25日(土) 開催))

最近話題の IoTLT。その西東京版が 2016年8月25日(木) に開催されました。
7月に勉強会会場を貸してくださった WakU2 での開催ということで、参加&LTしました。

テーマは「Windows 10 IoT Core + IFTTT + Skype で “お手軽” データ監視

https://docs.com/d/embed/D25193007-6264-1364-6260-000902558243%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

何を喋ろうかな~から完成まで30分という “お手軽” ぶり。
Windows 10 IoTIFTTTのおかげです。
7月だったか、IFTTT に Skype Channel が追加されたので、せっかくなら使ってみようかということで決めました。
IFTTT については去年の今ごろも LT しました。

IFTTT はビジネスにはさすがに信頼姓が・・・というところはありますが、プロトタイプやプライベートなら特に問題なく使えそうです。
IFTTT の Maker Channel に JSON なデータを投げるだけ、Skype に届くまでのタイムラグもなかなか短く、びっくりするほどお手軽に楽しめます。

「お手軽」とはいえ、一度具体的な手順を見てみたいという人もいるかも。
がんばって作業手順の動画を用意したい思います。長~い目で見守ってください。
それまでは資料をどうぞ。

カテゴリー: IoT, Raspberry Pi, Windows 10 IoT | タグ: , , , , | コメントをどうぞ

chibi:bit で(ちびっと)遊んでみた

誰もが思いついても、誰も口にしないタイトルですみません。このところ暑いですからね。

chibi:bit テスト版を入手したので遊んでみました。ファーストインプレッション、Hello, World です。

注意)Windows 10 Anniversary Update では、chibi:bit テスト版は利用できません。chibi:bit のファームウェアのアップデートが予定されているので、それを待つか、Anniversary Update 前の Windows 10 か Windows 8.1 マシンを用意しましょう。

 

chibi:bit について、念のために書いておくと、

  • BBCが「子供たちにプログラミング教育を」ということで micro:bit というマイコンボードを開発。イギリスの小学5・6年に無償で配布するんだとか
  • 技適の問題で日本国内では使えない(給電しただけで Bluetoothがオンになる仕様)
  • スイッチサイエンスさんが互換ボードを開発した
  • 先日の Maker Faire Tokyo 2016テスト版ボードを販売した

といったところです。
それを私が買ったということですね。

DSC_1372DSC_1373

LED が25個、ボタンが2個、磁気センサーと加速度センサーが載っていて、Bluetooth LE で通信もできるという、教育用としては充実の構成。

面白い特徴としては、Web上の開発環境が4種類提供されているうち、2つはマイクロソフトが開発したというところ。

WinUSB 問題でボード側のファームを更新しない限り Windows 10 Anniversary Update では動作しないため、急遽 Windows 8.1 マシンを用意して早速遊んでみました。

こんな手順でプログラミングしていきます。


■ micro:bit のサイトに接続

開発環境は https://www.microbit.co.uk/ なので接続。メニューにサインインはありますが、サインインせずに使います。
※サインインはイギリスの小学校の先生用のようです。

2016-08-11 23-39-39

■エディター選択

[Create Code] で開発に使うエディターを選択します。4種類表示されますが、JavaScript と python は未完成のようです。

ここでは Block Editor を選択。

2016-08-11 23-46-03

■コーディング

教育用プログラミング環境では馴染みのある Scratch 風のエディターです。これならプログラミング未経験の小学生でもすぐに使いこなせるでしょう。シミュレーターも表示されているので動作確認も簡単です。

例えば、Hello World 代わりに、以下のコードはいかがでしょうか。

2016-08-12 0-01-42

■実機転送

ツールバーの [Compile] をクリックすると、hexファイル(実行ファイル)が作成されます。ひとまず PC に保存。

2016-08-12 0-09-57

次に chibi:bit を PC に USB接続します。他のマイコンボードでもよくあるように USBメモリーとして見えるので、コンパイルした hex ファイルをコピーします。コピーが完了してエクスプローラーがいったん閉じて、すぐに自動的に開くとプログラムが動き出しています。

2016-08-12 0-10-53

実行するとこんな感じ。文字列を電光掲示板っぽく表示するなど、低レベルなところまで降りると面倒なコードになりそうですが、chibi:bit なら楽勝です。

 


■Touch Develop

micro:bit, chibi:bit 開発に使えるもう一つのエディターが Touch Develop です。

2016-08-12 0-34-51

あまり知られていないかもしれませんが、Touch Develop は実は Windows Phone 7 の時代にリリースされた開発環境です。
スマホ上でタッチ操作だけでアプリ開発ができるツールとしてリリースされました。マイクロソフト謹製です。
今回、micro:bit 用にリライトしたんですね。

キーボードもマウスもなし、タッチだけで開発できるということで、スマホやタブレットでも開発できるのが面白いところ。
慣れてくると、Block Editor よりも速くコードが書けます。ブロックを選択してドラッグしてよりも、タッチのほうが速いですからね。

Block Editor よりもパラメーターの指定が細かくできるようなので、チューニングしたい場合も Touch Develop のほうがいいでしょう。

Block Editor で作成したコードを Touch Develop のコードにコンバートする機能があります。Block Editor のツールバーにある [Convert] をクリックするだけ。
目で見て直感的に理解しやすい Block Editor で作り始め、複雑になってきたりチューニングしたくなったら Touch Develop にコンバートするという進め方もあります。

もちろん最初から Touch Develop で作り始めるのもいいと思います。


■chibi:bit の現時点での課題

chibi:bit には本校執筆時点(20168月13日)では、いくつか課題が残っています。

  • Windows 10 Anniversary Update がインストールされた PC では USB接続してもただ行く認識されない・・・ファームアップデートを待ちましょう。
  • テスト版は Bボタンが動作しない・・・量産版を待ちましょう。テスト版を買った方は、スイッチサイエンスさんが返品交換または返品返金をしてくれるようです。神対応のスイッチサイエンスさん。
  • Bluetooth LE が使えない・・・chibi:bit には Bluetooth LE が載っています。が、ペアリングは A+B ボタンを押したままでリセットスイッチを押すという操作が必要らしい。つまり現時点ではペアリングができないようです。これも量産版を待つか、テスト版を好感してもらいましょう。

いずれも少し待てば解決する課題です。なかなか楽しいボードなので、みんなで遊んでみましょう。

カテゴリー: IoT, mbed | タグ: , , , | コメントをどうぞ

【休日の検証】グリコードは、ポッキー以外をどの程度までポッキーと見なすか

国民の祝日なので、単に気になっただけの検証。

最近、周囲で(世間でも)話題のグリコード
グリコのお菓子を使って「誰でも手軽に、遊びながらプログラミングの基礎的な考え方を学習できる」という、子どもたちには(おじさんにも)楽しいプログラミングツール。

2016-08-11 17-39-31

 


最も基本的なのが、ゲームキャラクターを移動させるポッキー。
グリコードの説明上ではループに使うものになっていますが、ポッキーの向きに応じてキャラクターを移動させるコマンドでもあります。
キャラクター移動のコマンドなんだから、ポッキーなしでグリコードは始まりません。美味しいし。

となると、どこまでポッキーと見なすか気になりますよね。ポッキーと見なしてくれるか、いくつか検証してみました。
よい子のみんなは真似しないでね。お家の方にちゃんとグリコのお菓子を買ってもらってください。

想定よりも画像認識が緩くて面白みに欠ける結果になってしまったんですが、一応晒しておきます。(国民の祝日なので・・・2回目)

エントリーは次の6選手。

2016-08-11 19-57-25

結果はこんな感じ。

ポッキーチョコレート 成功 当然です。
ポッキーココナッツ 成功 太さも違うしチョコの周りにココナッツが付いていたりで失敗すると思ってたのに・・・。「やっぱりここで失敗しましたね」という流れを想定していたので、完全にシナリオが崩れました。
ポッキーの写真を普通紙に印刷 成功 意外と苦戦。印刷したことで輪郭がボヤけたんですかね。
パワポで描いた角丸の四角2個(グラデーションは無し) 成功 画像認識には一番適した選手ですね。
鉛筆をポッキーっぽく削ったもの 成功 ここまで来ると、やる前から成功するのが読めてきます。
プリッツ<サラダ> 失敗 チョコ要素がないですからね。当然です。

考察は・・・ありません。画像認識の精度がなんとなく分かったのでよしとします。ただそれだけの投稿です、すみません。

グリコさんのおかげで楽しめました。

DSC_1375

カテゴリー: 雑談 | コメントをどうぞ

Windows 10 IoT Core をセキュアにするために、IoT Core Dashboard を使って接続情報をデバイスに配置する(ただし、まだ課題あり)

■IoT Core Dashboard の “Azure に接続” タブでできること

最近(この一ヶ月以内くらい)、IoT Core DashboardIoT Hub を作れるようになりました。

IoT Core Dashboard の“Azure に接続”タブでできることは以下の3つ。

  1. IoT Hub の作成
  2. デバイス ID の作成
  3. デバイスへのプロビジョニング(ドロップダウンの項目名としては“プロビジョニング対象のデバイス”)

1, 2 でできることと操作方法は、先日の勉強会の資料 を参照。

本稿では、3つ目の「デバイスへのプロビジョニング」について取り上げます。
ちなみに本稿のネタ元は Windows Developer ブログ


■IoT Hub に接続するために必要な情報

デバイスを IoT Hub に接続するためには、

  • デバイス ID
  • 接続文字列(IoT Hub のエンドポイントやアクセスキーを含む文字列

が必要です。

一番お手軽な方法は、const で持ったり、config ファイルなどに定義しておくやり方。ただし、デバイスごとにビルドが必要な const は検証以外ではありえないし、configだとしても管理が面倒&平文だと情報が漏れてしまった時に問題が起こるという問題がある。

次に考えられる方法は、このブログではすっかりお馴染みに MS 太田さん作の こちらのハンズオン資料 で行っているように、IoT Hub への接続に必要な情報を返す Web サービスを立てるやり方。この方法は接続情報を返すサービスのエンドポイント自体はデバイスに平文で保持することになります。


■デバイスへのプロビジョニング

よりセキュアに IoT Hub への接続情報を保持するために、Windows 10 IoT と IoT Core Dashboard で提供しているのが、デバイスの TPM を利用する方法。
※Raspberry Pi は実際には TPM を載せていないので、エミュレーターを使います。つまり現時点では、本稿で紹介している方法はセキュアではないということ。今後 and/or 他のデバイスに期待しましょう。(ラズパイの価格を考えると TPM を載せるのは難しいかな・・・)

デバイスの TPM に接続情報を保存するのはとても簡単。

  1. Dashboard で IoT Hub を作成する、または既存の IoT Hub に接続する。
  2. デバイス ID を新規登録する、または既存の IoT Hub に登録済みのデバイス ID を選択する。ここまでは先日の勉強会でやった内容。
  3. Windows 10 IoT Core デバイスを動作させる。
  4. Dashboard の [Azure に接続] タブで、IoT Hub とデバイス ID を配置したいデバイスを [プロビジョニング対象のデバイス] で指定する。
  5. [プロビジョニング] ボタンをクリックする。

以上で終了。

2016-08-07 20-15-042016-08-07 20-17-05

実運用では、多数のデバイスに接続情報を保存するにも、もっと効率が良い方法を検討するほうがいいと思いますが、検証フェーズや仕組みを覚える目的には上記の手順で OK。

Device Portal でデバイスを覗いてみると、確かに指定したデバイスの TPM に登録されていることが分かります。

2016-08-07 20-18-29

ただし上でも触れたとおり、Raspberry Pi 2/3 は TPM を載せていないので、現時点ではエミュレーターを使っています。残念ながらセキュアではありません(他の方法より劣っているという意味ではありません、念のため)。


■TPM に保存した情報をアプリで利用する方法

TPMに接続情報を保存できたので、次はアプリでそれらの値を参照する方法が必要です。
Microsoft.Devices.Tpm クラスが面倒を見てくれます。わかりやすい名前ですね。

  1. Visual Studio 2015 で  UWP プロジェクト(空のプロジェクトでも OK)を作成
  2. IoT に最低限必要なライブラリを参照。具体的には “Windows IoT Extensions for the UWP”と “Microsoft.Azure.Devices.Client”の二つ。
    2016-08-07 20-24-202016-08-07 20-23-31
  3. TPM を利用するためのライブラリを NuGet からダウンロード。 “Microsoft.Devices.Tpm”がそれ。
    2016-08-07 20-22-31
  4. コード中では TpmDevice クラスを利用します。デバイスには複数の TPM を持てますが、今回は 0番目。
    GetHostName, GetDeviceId, GetSASToken の各メソッドで必要な情報を読み出せます。
    2016-08-07 20-26-35
  5. IoT Hub に接続するには DeviceClient クラスを使います。
    上のコードで取得した値を Create メソッドに渡すと IoT Hub に接続されます。あとはデータを送るのも受けるのも、先日の勉強会ハンズオン資料の通り。

実は簡単にセキュアな情報を利用できるのでした。
(上にも書いたとおり、Raspberry Pi では現時点ではエミュレーターでの動作なのですが・・・)


■DragonBoard 410c の場合

TPM が載っている Windows 10 IoT Core 対応ボードということで、DragonBoard 410c でも試してみました。

残念ながら今のところ、プロビジョニングの操作でエラーが発生して、接続情報を配置することができていません。それこそセキュリティ上の問題だと思いますが、原因はまだ分かっていません。すいません。
これについては引き続き調査してみたいと思います。

2016-08-07 20-28-182016-08-07 20-29-59

DragonBoard 410c には確かに TPM が載っているので、この操作ができれば Raspberry Pi に対するメリットになりますね。

 

以上、まだ課題が残っている状態ですが、セキュアに IoT Hub に接続する方法の紹介でした。

カテゴリー: IoT, Microsoft Azure, Windows 10 IoT | タグ: , , , | コメントをどうぞ

「GR-PEACH + NETMFで1行プログラミング」LT資料を公開しました (ルネサスナイト 9、2016年7月23日 (土) 開催)

30日(土) の勉強会資料の公開とは順番が逆になってしまいましたが、7月23日(土) 開催のルネサスナイト 9 に参加して LT登壇しました。

https://docs.com/d/embed/D25193197-9500-6085-1560-001018019056%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

皆さん、ガチで組込み開発をされている方ばかりで相当場違い、アウェイな感じでしたが、得るものも多く有意義な時間でした。

そういう方たちに向けて、GR-PEACH で動作する .NET Micro Framework の紹介をしました。

GR-PEACH の特徴の一つがマルチプラットフォームなのですが、NETMF on GR-PEACH は肩身が狭く、当日のイベントでも冒頭に「マルチプラットフォームで .NET Micro Framework も動く」という一言だけで片付けられる始末・・・orz
そういう場所で、.NET Micro Framework を認知してもらう程度にはお役に立てたと思っています。
裏にライブラリがあるから、C#だから、Visual Studio があるからという理由があるにしても、ボタンと LED 程度ならば本当に 1行で書けるわけで、これは他のプラットフォームや言語に対するメリットだと思います。(もちろんケースバイケースで向き不向きはあるはずですが)

LT は持ち時間 4分、そのうち 2分はライブコーディング(1行だけですが)の構成で作った資料なので、ツールやライブラリのダウンロードサイトの紹介、1行プログラミングの例を載せただけです。

これで NETMF に興味を持った方は、ぜひこのブログや MS 太田さんのブログハンズオン資料を見て、NETMF を楽しんでほしいと思います。

カテゴリー: .NET Micro Framework, GR-PEACH, GrFamilyLibrary, IoT | タグ: , , , | コメントをどうぞ

「IoT キットハンズオンのソースコード解説します (クラウド編 Part 1)」セッション資料を公開しました (Techfair.jp 勉強会 2016年7月30日開催)

まとめ(というより、ここでのお知らせ)がすっかり遅くなりましたが、7月30日(土) に

IoT キットハンズオンのソースコード解説します (クラウド編 Part 1)

なる勉強会を開催しました。
会場は、初めての八王子開催、WakU2 さんのスペースでした。都心ではないということで実は少し集客を心配したのですが、公開から1日経たずに定員に達しました。


IoT のハンズオンを受けて、また各種イベントなどで技術者の皆さんとお会いした時に、「ハンズオンで動きは分かったけど、仕組みや中味が分からないので解説してほしい」という声をたくさんいただきました。
IoT は構成要素がたくさんあり、全体を俯瞰できるハンズオンは相当のボリュームで 1日がかりなので、解説までできないのは当然と言えば当然。

そこで(ハンズオンは自習していただくとして)、中味の解説をしようというのが今回の勉強会。
ちなみにマイコンボード (.NET Micro Framework on GR-PEACH) に焦点を当てたのが前回の勉強会 です。
また今回のタイトルに “Part 1”と付けていることから分かるように、まだ扱っていない構成要素を解説する勉強会も今後開催したいと考えています。

今回は、IoT Hub, Stream Analytics という、IoT の中心と言っていいサービスをメインに、データ入力として Windows 10 IoT Core、出力例として Power BI, Excel を紹介しました。


休憩を挟みながら、3時間半のセッションであったので(いや、疲れたw、というより最後は声が出なかった・・・)、資料も3部構成。

https://docs.com/d/embed/D25193249-9793-6065-7830-000238822446%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

https://docs.com/d/embed/D25193249-9624-5155-0340-001664257068%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

https://docs.com/d/embed/D25193249-9523-3647-4060-001028506262%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702


今回好評だったので、リピートセッション続編も検討中です。
ただし今のところ、Techfair.jp でのハンズオンは予定していません。それを実施するコミュニティの体力(スタッフ)も、資材(マイコンボードなど)も、残念ながら持っていないため。
その代わり、今回のような形態での勉強会は今後も開催します。ご理解ください。

まずは上の資料とハンズオン資料で、IoT の理解を深めてください!

カテゴリー: コミュニティ, IoT, Microsoft Azure, Techfair, Windows 10 IoT | タグ: , , , | 2件のコメント