chibi:bit BLEでスマホ連携

プログラミング教育用マイコンボード chibi:bit (micro:bit 互換) は、Bluetooth Low Energy (BLE) 通信機能を持っています。

ざっくりこんなことができます。

  • スマホでプログラミング、chibi:bit 本体にバイナリーファイルを転送
  • スマホのカメラ操作(chibi:bit からカメラアプリ起動、撮影)
  • スマホで音楽ファイル再生(※スマホで音楽を聴く習慣がないので未検証)
  • スマホのトースト表示、バイブレーション

カメラ操作や音楽ファイル再生は、スマホアプリにサンプルが含まれているんですが、トースト表示、バイブについてはなかなか情報が見つかりません。公式サイトのリファレンスには載っているんですが、記述は非常にあっさり。

ということで、BLE 接続から、プログラム転送、トースト表示/バイブのデモまで、一連の動画を用意しました。
面白いアイデアを形にする参考になれば。

 

ちなみに転送したデモプログラムは以下の通り。今回はスマホ連携自体にフォーカスしたかったので、プログラミングには直感的な Block Editor を使いました。
(これ以上ないくらいの Hello, World 感)

Screenshot_2016-10-04-22-07-25

 

複雑なアプリを作るのは難しいと思いますが、ちょっと遊んでみるには面白いですね。

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 側のペアリング情報が消えてしまうとのこと。この場合も改めてペアリングの設定を行うと復活します。(が、面倒です・・・)


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

「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 に届くまでのタイムラグもなかなか短く、びっくりするほどお手軽に楽しめます。

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

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 ボタンを押したままでリセットスイッチを押すという操作が必要らしい。つまり現時点ではペアリングができないようです。これも量産版を待つか、テスト版を好感してもらいましょう。

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

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 に接続する方法の紹介でした。

「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 を楽しんでほしいと思います。

「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 の理解を深めてください!

mbed ワークショップ 2016 VOL1.2 〜mbedでIoTプロトタイピング〜 に行ってきました (2016年4月30日) #mbed_fest

世間では GW まっただ中。私はと言うと今年は仕事メインになりそう・・・。そんな中で楽しみの一つとして、4月30日(土) に開催された mbed ワークショップ 2016 VOL1.2 に参加してきました。

DSC_1152

 

mbed ・・・ボードを持ってはいるものの L チカしかやったことがありません orz
それじゃまずいよな、ということで、取っかかりとしてワークショップに参加してみました。
結果、とても楽しかったし勉強になりました。mbed いいじゃん。

会場はアームさんのセミナールーム。
当日は教材付きのワークショップなので、会場に入ると机の上には教材が置いてありました。

DSC_1149

マイコンボードは mbed LPC1114FN28、 それにセンサー接続と Wifi 接続用の Simple IoT Board、センサーは Grove 接続の温度・湿度センサー

DSC_1150DSC_1151

接続は全く難しいところはありません。強いて言えば(サンプルコードとの兼ね合いで)センサーを接続するコネクターが決まっていることくらい。

DSC_1155

当日の実習内容は、

  • 温湿度を測定して、UART で PC のターミナルに表示(L チカは省略!)
  • IFTTT を使って、温湿度を Twitter でつぶやく
  • Milkcocoa をつかって、Webページからデバイスの LED の点灯を制御する

実習で特に面白かったのは Web からデバイスを制御する内容。初心者向けの IoT ワークショップ/ハンズオンはどうしてもデバイスからクラウドへの方向が多いと思うんですが、今回はクラウドからデバイスへの方向の実習があったので満足度が高いものでした。

当日の時間の都合があり、コードをじっくり解説してもらうことはできなかったので、復習しながらコードを理解していく感じかな。
それでも、

  • mbed.org のサイト構成
  • オンライン開発環境の使い方
  • 各種ライブラリをインポートして開発していく mbed の開発スタイル

など、勉強になりました。

IFTTT も久しぶりに触ったし、MS 以外のベンダーの製品・サービスも触ってみるのもいいものですね。やり方を教えていただいたので、これからはもうちょっと触ってみます、はい。

もう一つ、今回の教材はやはりいきなり無線 LAN に繋がっているメリットが大きい。
IoT ソリューションのプロトタイピングが楽になりますね。あいにく Grove モジュールは今日の教材以外には持っていないので、それなら逆に、ピッチ変換した Wifi モジュールとユニバーサル基板を使えば、すでに持っている部品を活用できそう。

また新しいおもちゃを覚えてしまった~w

「GR Family 用ライブラリの紹介」LT資料を公開しました (IoT 祭 2016 / 2016年3月12日) #algyan

IoT 祭 2016」(IoT ALGYAN 1周年記念イベント、3月12日(土) 開催) で、

GR Family 用ライブラリの紹介

というテーマで LT 登壇しました。
今回から資料は docs.com で公開しています。これまでの資料は引き続き SlideShare で公開しています。

 

以前からブログでお知らせしていた内容ではあるんですが、改めて LT で紹介しました。
「GitHub で公開してます」だけでは面白くないので、ライブラリを作り始めた経緯とか、ライブラリ利用でどんな風に便利になるのかをお伝えしました。
ぜひ活用して IoT を楽しんでください!

幸い、面白かったと言ってくださる方がいらっしゃって、実は内心薄い内容だな~と思っていたのですが、時間をいただいてよかったです。

懇親会で「DLL ってどうやって使うの?」という質問をいただきました。
このあたりは説明なしでいいのかなと思っていたんですが、やはり使い方とかリファレンスはあるほうがよさそうですね。
用意していきますので、少しだけ長い目で見てください。

 

次の週末 19日(土) の勉強会に参加してくだされば、ライブラリの使い方も紹介できます。ぜひ参加を検討してください。
現在、キャンセル待ちが出ている状態ですが、どうも増席されるんじゃないかな~と。(決めるのは私ですが /笑)

GHI Electronics NETMF 2016 SDK Pre-Release 1 がリリースされました。VS2015 でも開発できます

待ちに待った GHI Electronics NETMF 2016 SDK Pre-Release 1 がリリースされました!

2015-12-29 0-09-49

うれしい!めでたい!
前回のリリースはどうしても Loader / Farm の更新がうまく行かず、Gadgeteer の利用を諦めていました。
8月以来なので 4か月待っていたことになります。長かった・・・。

今回のリリース、大丈夫です!
ちゃんと Loader の更新できます。新しい SDK で開発したアプリもちゃんと動きます。(Spider で Lチカしただけですが)

2015-12-28 22-53-11

最初は Loader モードの Spider を認識してくれないかと思ったんですが、Loader モードの状態でデバイスマネージャーを開いて、Spider のリセットボタンを押す→デバイスマネージャーが自動で更新されるのを数秒待つ、で無事認識してくれました。(同じ状況になったら試してみてください。慌てずに数秒待つのが大事かも)

2015-12-28 22-49-12

もう一つうれしいのは、(まだ暫定らしいですが)Visual Studio 2015 に対応したこと。
Pre だからか「2015 対応のサポートはしないよ」らしいことを言ってはいるのですが、試してみると VS2015 からも認識してくれます。
プロジェクトも作れるし、ハードウェアのデザインもできるし、コーディングも問題ない。転送もデバッグも OK です。

2015-12-28 23-24-26

2015-12-28 23-56-34

Gadgeteer ではない、素の .NET Micro Framework も楽しいですが、やはり .NET Gadgeteer の手軽さ、スピード感は魅力です。
また Gadgeteer に触れるようになってうれしいです。

 

気持ちよく寝られそうなので、今日はこのへんで失礼します。おやすみなさい。