1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BLEサービスのUUIDをアドバタイジングする拡張機能 (MakeCode for micro:bit)

Last updated at Posted at 2022-11-18

MakeCode for micro:bitのbluetooth

MakeCode for micro:bitには、bluetooth拡張機能が標準で備わっていますし、自身でBLEサービスを追加実装することも可能です。
しかし、困ったことがあります・・・

困りごと

一般的なアプリケーションにおいてBLE接続する際、micro:bitがデバイス一覧に表示されず、ユーザーは選択することができません。

原因

標準のbluetooth拡張機能では、Complete list of 16-bit Service UUIDsという情報をアドバタイジングできない為です。

解決策

ユーザー定義の拡張機能であるBLADV(pxt-ubit-bladv)を使い、Complete list of 16-bit Service UUIDs情報とその値(UUID)をアドバタイジングします。

背景

一般的なアプリケーション(セントラル)は、BLEデバイス(ペリフェラル)をユーザーが選択するために、検索機能で一覧表示しますが、通信可能なBLEデバイスをすべて表示しているわけではありません。対応しているBLEデバイスだけをユーザーに選択させたい為です。
その検索条件の一つが、アドバタイジング情報のComplete list of 16-bit Service UUIDsです。

MakeCode for micro:bitでは、bluetooth拡張機能のサービスを追加したり、自身でBLEサービスを実装したりすることができますが、このアドバタイジング情報で、アプリケーション側にサービスの存在(UUID)を伝えられなければ、ユーザーはそのBLEデバイスを選択することができません。

ただし、nRF Connect for Mobileandroid版/iPhone版)のような開発ツールを使えば、周辺でアドバタイジングしている全てのBLEデバイスを検索できますし、このComplete list of 16-bit Service UUIDsの有無やその値も表示することができます。

BLADV(pxt-ubit-bladv)の使い方

BLADV(pxt-ubit-bladv)は、MakeCode for micro:bitに対応したユーザー定義の拡張機能として、GitHubで公開されています。

準備

BLADV拡張機能を次の手順でプロジェクトに追加します。

  1. MakeCode for micro:bit を開きます
    https://makecode.microbit.org/
  2. [新しいプロジェクト] を作成します
  3. [+拡張機能] で拡張機能のインポート画面を表示ます
  4. 検索欄にBLADVのURLを入力し、検索します
    https://github.com/jp-rad/pxt-ubit-bladv
  5. 検索表示された ubit-bladv 拡張機能をクリックし、インポートします
  6. [一部の拡張機能を削除してpxt-ubit-bladvを追加する] ボタンをクリックします
  7. [BLADV] のグループが追加されます

image.png

UUIDの設定

BLADV拡張機能には、BLADV Complete list of 16-bit Service ID:ブロックが含まれていますが、これを最初だけに配置します。
設定するUUIDの値は、1(0x0001)から65535(0xFFFF)までの10進数の数値です。

ブロックは1つだけ
BLADV Complete list of 16-bit Service ID:ブロックは、1つだけ配置してください。

Bluetooth Special Interest Group (“Bluetooth SIG”) という団体が Bluetooth(R) を管理しており、このUUIDも GATT Services として定義されています。

定義されているUUIDの例を一覧に抜粋しました。

サービス名 Service Name UUID UUID(10進数)
デバイス情報 Device Information service 0x180A 6154
心拍数 Heart Rate service 0x180D 6157
アラート通知 Alert Notification service 0x1811 6161
サイクリング速度 Cycling Speed and Cadence service 0x1816 6166
ボリューム調整 Volume Control service 0x1844 6212

尚、BLEサービスを実装する際は、次の仕様書(プロファイル)を参照します。

このブロックでUUIDを設定したからといって、そのサービスが実行され、機能するわけではありません。
各サービスの仕様書(プロファイル)と接続元のアプリケーションの仕様に則り、BLEサービスを実装する必要があります。

プロジェクトの設定

MakeCode for micro:bitで、bluetooth機能を有効化する為に、[プロジェクトの設定] が必要です。
例えば、図のように設定します。

settings.png

プロジェクト設定のコツ

プロジェクトの設定で、bluetoothの構成情報を変更します。
しかし、一部、その設定を有効化するために、コツが必要です。
(2022/11/18現在)

  1. MakeCodeエディタで、右上の [その他] ボタンから [プロジェクトの設定] を選択します。
  2. [Enable Bluetooth]以外 をオンにし、[保存] ボタンで保存し、[← 戻る] ボタンで戻ります
  3. 再度、[プロジェクトの設定] を開きます
  4. [Enable Bluetooth]オフ から オン にし、 [設定をテキストで編集する] ボタンをクリックします
  5. 編集ファイル(pxt.json)に、"enabled": 1 が記述されていることを確認します
  6. MakeCodeの [保存] ボタンでコンパイルします(1分以上かかる場合があります)
  7. MakeCodeの [ブロック] ボタンをクリックして、編集画面に戻ります
  8. 作成されたHEX形式ファイルや、その後、ダウンロードするHEX形式ファイルをmicro:bitへ転送してください

アプリケーションからの見え方

MakeCode for micro:bit でプログラミングし、コンパイルしたHEX形式ファイルをmicro:bitへ転送すると、アプリケーションからは、micro:bitがBLEデバイスとしてアドバタイジングしている様子を確認することができ、ブロックで設定したUUIDが表示されることを確認できます。

図は、nRF Connect for Mobileandroid版/iPhone版)で、確認した内容です。

devices.png

まとめ

MakeCode for micro:bit では、bluetooth拡張機能が標準で用意されていますが、Complete list of 16-bit Service UUIDs情報をアドバタイジングする機能がありません。
そこで、ユーザー定義のBLADV拡張機能を用いて、BLEサービスのUUID(16ビット)がアドバタイジングできることを確認しました。
この拡張機能を使用すれば、一般的なアプリケーションに対応したBLEデバイスをmicro:bitで開発することができます。

おまけ

MakeCode for micro:bitで、BLEサービスを実装する際は、次の記事を参考にしてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?