BlueST Protocolの日本語訳と解説

BlueST Protocolについては、GitHubのREADME.mdにありますが、英語で書かれていますし、少し説明も足りておらず、理解しようとするのに一苦労です。

本記事では、BlueST Protocolについて日本語で解説します。

BLE(Bluetooth Low Energy)とは

BlueST Protocolの説明の前に、まずはBLEを理解している必要があります。

BLEとはBluetooth Low Energyの略で、たくさんあるBluetoothの仕様の1つです。ちなみに、今後はBLE1本になる流れのようです。

 

ここでは、BLEのイメージだけ掴んでいただきたいので、かなり省略して説明します。

 

BLEのシステム構成

BLEシステム

Bluetoothは無線通信の1つで、パソコンとマウス、スマホやイヤホン、の通信に使われているのは、ご存知のことと思います。

ここで覚えておいて欲しいのは、『Central』と『Peripheral』の名前と関係です。『Central』はデータをもらう側のことで、パソコンやスマホに相当します。『Peripheral』はデータを提供する側のことで、マウスやイヤホンに相当します。

 

BLEの通信手順

『Central』と『Peripheral』は次の図のような順番で通信を行います。

BLEシーケンス

 

はじめ、『Peripheral』が定期的に『Advertising』と呼ばれるメッセージを送信します。これは自分を見つけてください!という意味で送っています。

 

『Central』がこの『Advertising』に気付いたら、『Connect』メッセージを送信して、接続状態を作ります。

 

接続状態になったら、『Central』は『Peripheral』のデータをもらいたいので、『Start Notify』メッセージを送ります。これは、データが更新したら教えてね!という意味です。

 

その後は、『Peripheral』の中でデータ更新がある度に『Notify』メッセージにデータを載せて、『Central』に通知します。

例えばマウスだったら、マウスの移動量を送ることで、マウスを操作することができますね。

 

『Notify』以外にも、データを取得する方法として『Read』があります。こちらは、通知を受けるのではなく、『Central』が欲しいと思った時に逐次取りに行く方式です。

また、データを書き込む『Write』というメッセージもありますが、ここでは詳細は省きます。

 

BLEのデータ構造

BLEのデータ構造にも軽く触れておきます。

BLEのデータ構造

BLEではデータのことを『Characteristic』と呼びます。この『Characteristic』の中にさらにValueとかPropertyといったものが含まれますが、ここではあまり気にしなくて大丈夫です。

『Characteristic』の上位に『Service』と呼ばれるものがありますが、これは単にわかりやすくするためのグループ分けのようなものです。

複数の『Service』と『Characteristic』があるので区別するために、それぞれ『UUID』と呼ばれるIDを持っています。

 

BlueST Protocolとは

STMicrosystems社の独自仕様

BlueST Protocolは、STMicrosystems社が決めた独自の通信仕様で、STMicrosystems社の開発キットのデモ機能の中で使われています。例えば、評価ボードとスマホアプリ間の通信で使われています。

 

参考:【SensorTile kit】ST BLE Sensorと連携してセンサーの値を取得

 

BlueST Protocolは、BLEをベースにいくつかの決め事を追加したものです。

 

BlueSTスタック

 

追加の決め事は下記の2点です。

 

  • Advertisingのメッセージフォーマット
  • CharacteristicのUUIDとメッセージフォーマット

 

独自仕様と聞くとちょっと腰が引けてしまいますが、BLEをベースに追加の決め事が2つあるだけです。恐れることはありません。

 

BlueST ProtocolのAdvertising

Advertisingメッセージのフォーマットが決められています。

BlueSTのAdvertising

 

Device Idは、『Peripheral』の種類を指定しています。使われる値は下表のとおりです。

Id ボード
0x00 一般的なボード
0x01 STEVAL-WESU1
0x02 STEVAL-STLKT01V1(SensorTile)
0x03 STEVAL-BCNKT01V1(BlueCoint)
0x04 STEVAL-0IDB008V1/2(BlueNRG-2)
0x05 STEVAL-BCN002V18(BlueNRG-Tile)
0x06 STEVAL-MKSBOX1V1(SensorTile.Box)
0x07 B-L475E-IOT01A
0x08~0x7F ユーザカスタムボード用
0x80~0x8A ST Functional pack
0x8B~0x8F 予約

 

Feature Maskは、この『Peripheral』が持っているデモ機能(Basic Feature)をビットで表現しています。デモ機能とビットの対応表は下記の通りです。

BlueSTのFeatureMask

 

Device MACは、『Peripheral』の物理アドレスです。『Peripheral』がiOSデバイスの時だけ利用されます。

 

このように『Advertising』メッセージを受け取るだけで、ボードの種類と、持っているデモ機能を知ることができるようになっています。

 

BlueST ProtocolのCharacteristic

BlueST Protocolのデータ構造は下記のようになっています。

 

BlueSTのCharacteristic

 

各Service、Characteristicについては下表を参考にしてください。

 

Service Characteristic UUID 説明
Feature 00000000-0001-11e1-9ab4-0002a5d5c51b デモ機能
 

Base Feature

XXXXXXXX-0001-11e1-ac36-0002a5d5c51b

各デモ機能のデータ。

  Extended Feature XXXXXXXX-0002-11e1-ac36-0002a5d5c51b

追加のデモ機能のデータ。ユーザ追加機能もここに入れる

  Remote Feature 不明

リモートデバイスのFeatureデータ

Debug 00000000-000E-11e1-9ab4-0002a5d5c51b デバッグ機能
  Command 00000001-000E-11e1-ac36-0002a5d5c51b デバッグ用コマンド
  Error 00000002-000E-11e1-ac36-0002a5d5c51b エラー情報
Config 00000000-000F-11e1-9ab4-0002a5d5c51b 設定
  Command 00000002-000F-11e1-ac36-0002a5d5c51b 設定用コマンド
    00000001-000F-11e1-ac36-0002a5d5c51b ボードのレジスタ値

 

Feature

Featureの中には、各デモ機能のデータが格納されています。CharacteristicとしてBasic Feature、Extended Feature、Remote Featureがあります。なお、単にFeatureと言った時はBasic Featureのことを指しています。

Basic FeatureのUUIDのXXXXXXXXとなっている箇所は、AdvertisingのFeature Maskと同じです。つまり、複数のデモ機能のビットが立っていれば、複数のデモ機能データを取得できるFeatureであるということです。

Extended FeatureのUUIDのXXXXXXXXとなっている箇所も考え方は同じですが、どんなデモ機能が追加されるかはわからないので、ビットと機能の対応は定義されていません。

Remote FeatureのUUIDは記載がなく不明です。

 

また、データのフォーマットも定義しています。

 

Basic FeatureとExtended Featureのデータフォーマットは下記の通りです。タイムスタンプの後にFeatureのデータが並んでいるだけのシンプルなフォーマットです。

BlueSTのFeatureのフォーマット

※BLEの制限で最大20バイトまで

 

Remote Featureのデータフォーマットは下記の通りです。リモートデバイスのIDから始まるだけで、あとはFeatureと同じです。

BlueSTのRemote Featureのフォーマット

 

Debug

Debugはデバッグ用途です。

CharacteristicとしてCommandとErrorがあります。Commandは、文字列コマンドの送受信を行います。Errorは、ボード内で発生したエラーの通知を行います。詳しくはREADME.mdには書かれておらず不明です。

 

Configuration

ConfigurationはFeatureとコミュニケーションするために使用します。CommandとRegisterがあります。

 

Commandは、各機能にコマンドを送信を行うことができます。また、一部のコマンドでは応答の受信を行うことができます。

コマンド送信のフォーマットは下記の通りです。

BlueSTのCommandの送信メッセージ

応答のメッセージのフォーマットは下記の通りです。

BlueSTのCommandの応答メッセージ

コマンドのIDとデータは、各Featureの仕様を確認する必要があります。

 

Registerは、ボードの設定レジスタの取得・更新・変更通知を行うことができます。詳しくはREADME.mdには書かれておらず不明です。

 

終わりに

本記事ではBlueST Protocolの日本語訳と解説を行いました。

BlueST ProtocolはSTMicrosystems社の独自仕様ですが、BLEをベースにしており、追加仕様も2つだけなので、BLEさえ理解していれば、そこまで難しいものではありません。

 

本記事を読むことで少なくとも概要はつかんでいただけたかと思います。

さらなる情報については、下記のリンクを参照してください。