2020年08月20日 更新

Android/iOS端末をBLEデバイス化

どうも、クラゲです。
ここではAndroid端末やiOS端末を簡単にBLEペリフェラル化する方法を紹介します。つまり、スマホやタブレットをバーチャルなBLEデバイスにしてしまうという技です。

【 概要 】

[TOC]

iOS端末向けシミュレーター

"LightBlue Explorer" というアプリをインストールします。無料です。

一番下に”Create Virtual Peripheral”という所があるので、そこを選択します
Blankを選んでSaveします。Virtual Peripheralsに追加されてチェックマークが入っていることを確認します。
これだけで、セントラルからScanが可能となります

次にセントラルからReadできるように試みます
中央にある i マークをタップし、ServiceUUIDを入力します。BlueJellyサンプルで使用しているBLE Nanoサンプル用のServiceUUIDを入力します。

713D0000-503E-4C75-BA94-3148F18D941E

その下のUUID(書いてませんが、ここがCharacteristicUUIDになります)をタップして、さらに一番上のUUIDをタップし、UUIDを入力します。

BlueJellyサンプルで使用しているBLE Nanoサンプル用のCharacteristicUUID(RX)のUUIDを入力します。

713D0002-503E-4C75-BA94-3148F18D941E

Readできるようにデータを入力しておきます。
BlueJellyサンプルでは2ByteのReadを行っているので、16進数表示で4桁の数値を入力します(例:0x1000)
これで準備完了です。BlueJellyサンプルからReadすることできます。

BlueJellyサンプル(BLE nano:Read)

WriteやNotifyなども上記の応用で作成可能です。その際PROPERTYの設定をお忘れなく。

Android端末向けシミュレーター

BLE Peripheral Simulatorというアプリをインストールします。無料です。

決められたServiceUUIDしか使えないので、Batteryに対応したBlueJellyサンプルを用意しました。

BlueJellyサンプル(Notify battery)

ちなみに、他のBlueJellyサンプルで行いたい場合は、HTMLファイルにて、以下のようにUUIDを変更することと、Read時のByte数を1Byteに変更することが必要です。

ble.setUUID("BatteryLevel", "0000180f-0000-1000-8000-00805f9b34fb", "00002a19-0000-1000-8000-00805f9b34fb");

Androidアプリを起動したらBatteryを選択します。 これでBlueJellyからアクセスできます

Androidアプリのシークバーを動かすことによりValueの変化を体験することができます。
ちなみに、Notifyをセントラル側へ通知する場合は、Androidアプリにて手動でNOTIFYボタンを押してください。

Android端末向けシミュレーター2

他にnRF Connectというアプリがあり、Scanまではできますが、ReadやWriteはうまくできませんでした。
一応、やり方だけ展開しておきます。
nRF Connectというアプリをインストールします。無料です。

起動したら、タブでADVERTISERという所を選択し、右下の+マークから新しく作ります。
EDITを選択して、Advertising dataからADD RECORDを選択し、Complete Local Nameを追加
これで、スイッチをONにすれば、少なくともScanまでは出来ます。
UUIDを追加しても、ReadやWriteは出来ないかもしれません。

以上、Android/iOS端末をBLEデバイス化する方法でした!