GadgeteerのBluetooth LEモジュールゲットしたのでiPhoneとつないでみた!

f:id:iseebi:20131009005504p:plain

先日、konashiを使ってGadgeteerとiPhoneをBLE通信でつないだわけですが、もっとお手軽にできないかと調べていたら、Bluetooth SMARTモジュールの存在を知りました。しかもどうやら、動画や写真を見たら技適マークとれてるようなのです。

ストアがないようで欲しいけど手に入らないとおもってくすぶっていたら、この方がGHIのCreationsというところで40ドルで出しているではありませんか!konashiはGadgeteerと組み合わせて使う用途だとオーバースペックなのでちょうどよい感じ!

というわけで早速問い合わせてみたところ、日本にも Royal Mail *1 で 10ドル(追跡なし) or 15ドル(追跡あり)で送ってもらえるとのことだったので、英語でのやりとりに苦労しつつ、送っていただくことができました。

早速動作確認がてら、動かしてみることにしました。

Bluetooth SMART モジュール

f:id:iseebi:20131009005233p:plain

bluegiga の BLE112 というモジュールを搭載した Socket U の Gadgeteer モジュールです。BLE112自体が技適マークをとっているため、それを組み込んでいる本モジュールも日本国内で合法的に使用できます。
GATT サービスは独自のものが出ているようです。今のところリファレンスとかが発見できていないので、推測で BLExplr でたたいています。

konashi で作ったオレオレモジュールとは違い、きちんと SDK も用意されています。IngenuityMicro SDKをインストールすると、Gadgeteerのデザイナーで使えるモジュールが増えます。

Bluetooth Smart モジュールを使ってみる

では、前回の konashi でやったことと同じことを、Bluetooth Smart モジュールでやってみます。

プロジェクトの作成は前回と同じですが、デザイナ上でBluetooth Smartモジュールを接続しておくことができます。

f:id:iseebi:20131009005616p:plain

あとはコードですが、ProgramStartedにこれだけでOK。受信したデータをLFで区切ってイベントで呼んでくれますので、その値をパースして、対応するLEDを点灯させています。

void ProgramStarted()
{
    Debug.Print("Program Started");

    bluetoothSmart.DataReceived += (val) =>
    {
        Debug.Print("Received text: " + val);
        try
        {
            int ledNumber = int.Parse(val);
            if (ledNumber >= 0 && ledNumber <= 6)
            {
                led7r.TurnLightOn(ledNumber, true);
            }
        }
        catch (Exception)
        {
            Debug.Print("Unknown format");
        }
    };
}

こんな感じで動きます。BLExplr の Write String ではで LF を送れなかったので、HEX値の直接入力でやっています。

やはり、専用に作られているものを使うと簡単にできていいですね。これはもっと広まるべきだと思いました。

*1:EMSっぽいやつ?郵便局の人が持ってきました