こんにちは。本日は、ブルートゥースローエナジープロトコルの基礎知識のプレゼンテーションをご覧いただき、ありがとうございます。本プレゼンテーションでは、ブルートゥース通信アプリケーションの開発に必要な、ブルートゥースローエナジーの基礎知識についてお話いたします。STM32WB開発エコシステムによるブルートゥースローエナジー開発実習を進める際のご理解にお役立てください。なお、等内容はブルートゥースシグが定めるコア使用書、バージョン4.0を基本にお話させていただきます。最新の使用については、ブルートゥースシグ発行の使用書にてご確認いただけるようお願い申し上げます。現在の最新、コア使用書のバージョンは5.2がリリースされております。はじめに、ブルートゥースの概要についてお話しします。ブルートゥースローエナジーは2.4GHzを使った近距離無線通信です。この通信使用は、ブルートゥースシグによって策定発行されています。ブルートゥースローエナジーは、ブルートゥースクラッシックよりも、より低い消費電流で動作することを目的に策定され、個人型電池による長時間使用も可能になりました。このブルートゥースローエナジー技術で、ウェアラブル関連製品への採用も可能となり、より多くのアプリケーションへの合用が可能となっております。ただ、近年の市場要求により、通信速度の高速化や通信範囲の拡張が進められてきました。これら高速後半以下は、低消費電力に対して相反する要素となり、高速化での動作をさせた場合、低消費電力という特徴はやや薄れつつあります。ブルートゥースローエナジーは、図でご覧いただけるように、2402メガヘルツから2480メガヘルツの対域を、2メガヘルツのチャンネルスペースで分割した40チャンネルのキャリア周波数で通信します。この40チャンネルは2種類のチャンネルがあり、1つはアドバータイジング、もう1つはデータチャンネルとして使用されます。アドバータイジング用には、37、38、39の3つのチャンネルが割り当てられており、残り37チャンネルがデータ通信用に割り当てられています。データチャンネルは1チャンネル固定で通信されるのではなく、ホッピングをして複数チャンネルにて通信をし、ブルートゥース同士で通信チャンネルが共合することを避けております。Wi-Fiも同じ2.4GHz対応を使用しています。よって、Wi-Fiとも同一周波数にて通信が共合することもできます。このように、共合が発生し、通信エラーが複数回起きたチャンネルに対して、ブルートゥースではそのチャンネルの使用を中止し、安定して通信できているチャンネルのみで通信するという手法が採用されています。それでは、ブルートゥースローエナジーの使用の基礎の話に進みます。使用の詳しい話の前に、まずはマスターとスレーブの故障について話をさせていただきます。この表は、ブルートゥース通信のマスタースレーブに対して、それぞれの状態での呼び方の違いをまとめたものです。左側がマスター関連で、右側がスレーブ関連になります。マスター側のスキャナーとイニシエーターは、接続が成立する前の状態です。スレーブ側ではアドバータイザーが接続前の状態になります。ブルートゥースでは、接続成立後にクライアントとサーバーという独特の呼び方がされます。クライアントのお役は顧客です。なので、ややスレーブのようなイメージを持ちやすいのですが、サーバーにデータの保管や供給をさせて、そのデータをコントロールしている、言い換えると、そのデータ管理の指導権を持っているという観点で、マスターの位置付けとなっております。日常でも顧客側に指導権があるのはよくあることですよね。ここで、接続形態について、どんな種類があるかも紹介しておきます。基本となるクライアントとサーバーが1対1接続であるピア2ピア接続、そして、1つのクライアントが複数のサーバーと接続する1対n接続です。また、ブルートゥース支具の使用書コア4.1にて追加になったクライアントがサーバーとなり、別のクライアントとも接続できる、マルチプロコンカレンと接続があります。このほか、これらの接続とは異なり、ブロードキャストを応用し、ネットワークを構築するブルートゥースメッシュが2017年7月に策定発行されています。それでは、通信使用について詳しい話をしてまいりましょう。ブルートゥース通信は、1パケットに企画に沿ったデータを配列して、総重視にしています。そのパケットの内容はソフトウェアで制御しています。ソフトウェアは図のように、プロファイルを含むアプリケーション制御のパートと、スタックパートの2つに分かれ、ハードウェア部のファイにアクセスし、総重視に行っております。図中のスタックファームウェアと印されている部分、下側の枠の部分が、ブルートゥース支具により、各解創別に使用が策定されております。各解創は図の一番下から、ファイデイア、データをキャリア信号に載せて、総重視にするハードウェアになります。リンクレイヤー。最終的にファイへ渡すデータ列を組み立てて渡したり、ファイからのデータ列を受け取り処理をします。HCI。図中、青色部の内容を、コストMCUが直接行う場合のインターフェースが用意されているレイヤーです。L2キャップ。総重視にデータを上位層へ受け渡しの交通整理を行っている解創です。セキュリティバネージャー。安全な通信を行うために、暗号化処理を行う解創です。HAT、HATリビュートプロトコル。対抗デバイスの読み書きの属性に関する処理を行う解創です。GAT、サービスやキャラクテリステックの処理を行う解創です。GAP、接続関連の処理を行う解創です。上部のBLEアプリケーションプロファイル部は、ブルートゥースシグニテ作定されている標準プロファイルがありますが、アプリケーション固有のプロファイルを作成することもできるようになっております。GAP、GAT、HATについて、もう少し詳しくお話をします。初めにGAP。GAPでは、都度ように周辺デバイスを確認、あるいは、周辺デバイスへ発信するか。また、どのように接続するか。ボンドはどうするかなど、接続関連の処理について、ロール、モード、手順の、それぞれに基づき定義されています。GATでは、属性、サービスやキャラクテリステックの定義がされており、その処理を行います。この属性により、データサイズやデータ列の内容、順番など、そのデータの素上が明確になっています。その属性に合わせてデータを掃除しにしているので、アプリケーションでのデータ処理がしやすくなっています。標準的なBluetoothローエナジーのアプリケーションでは、GATインターフェースをベースに通信が行われているので、このレイヤーを理解しておくことはとても重要となります。次にAT、ATリビュートです。ATは、対抗デバイスに対してどのようにデータを読み書きするかをお処理しています。クライアントはサーバーで定義されている属性を確認し、その定義に基づいて通信を行います。サーバーからの通信の許可についてもここで管理しています。次にプロファイルについてお話します。プロファイルはスタックの上位層、すなわちアプリケーションレイヤーにて定義処理をします。前スライドで出てきましたGATレイヤーで処理されているサービスを統括し、どのようにそれらのサービスを使うか、どんな使い方ができるかが定義されています。仕組みて標準的なプロファイルが用意されています。医療関係向けで、ヘルスサーモメーターやブラッドプレッシャーなどが一例で、市場にて採用され制金化されています。サービスは、使用用途向けに合わせて定義されているキャラクテリスティックを統括して、アプリケーションにて必要な情報データを提供しています。各キャラクテリスティックに限らず、他のサービスを参照することも許されています。キャラクテリスティックは、サービスで必要とされている用途に合わせ、裁分化されたデータ特性の定義で、宣言、数値、技術士の3つの要素で構成されています。各サービス、キャラクテリスティックは、16ビットか128ビットのUUIDによって識別されます。こちらは、プロファイル、サービス、キャラクテリスティックの構造を図にまとめたものです。プロファイルは複数のサービスで構成され、そのサービスは、複数のキャラクテリスティックにて構成されている構造となります。識別に使われるUUIDには、16ビットと、128ビットの2種類があります。SIGの定める標準のプロファイルで使われる標準サービス、標準キャラクテリスティックについては16ビットです。標準以外で、アプリケーション固有の新規、並びに、カスタムに対しては、128ビットを使います。SIGの定める標準UUIDのサイトと、カスタムUUIDが生成できるサイトのURLを記載しておきますので、これらサイトを参照、活用してください。次に、リンクレイヤーのステートについてお話します。リンクレイヤーのステートは、スタンバイ、アドバータイズ、スキャニング、イニシエーティング、コネクティングの5つとなります。1のスタンバイは、待機そのもので何もしていません。2のアドバータイジングは、自身のデバイス情報をブロードキャストしている状態です。スレーブだけがこの状態となります。よく耳にしていると思いますが、ビーコントはこの状態で動作しているブルーツス製品です。3のスキャニングは、周辺デバイス情報の収集を行っている状態です。マスターだけがこの状態となります。マスターは、収集したデバイス情報を基に接続先スレーブを探します。4のイニシエーティングは、スキャニングを終えたマスターがアドバータイズしているスレーブに対して接続要求をし、接続・リンク成立に必要な情報交換を行っている状態です。5のコネクティングは、マスター・スレーブ・双方で合意が取れた各種接続パラメーターにより、リンクが確立し、通信可能となった状態となります。この合わくで囲われたステートは、マスターが移動するステートです。数字が小さいステートから順にステートを移行します。この赤枠部のステートは、スレーブが移動するステートになります。同様、数字が小さいステートから順にステートを移行します。ここからは、各デバイスの状態と、どのような手順で接続が成立するかをお話しします。この図は、各デバイスの状態を示しております。それぞれの呼び方の違いを前のスライドでご紹介した、マスター・スレーブ・双と合わせてご確認ください。これらは、リンクが確立する前の状態のスキャナーとアドバータイザーです。残りは、リンクが確立している接続状態のマスターとスレーブになっています。リンク確立後で、複数ある接続の一つの接続をピコネットと呼んでいます。続けて、接続の手順についてお話しします。マスターは、イニシエーターとなり、アドバータイザーに対してコネクションリクエストを出します。このリクエストで接続プロセスが始まり、マスターが主導でセキュリティや各種コネクションパラメーターを確定させます。接続処理が完了し、リンクが確立するとアドバータイザーはスレーブとなり、マスターと通信可能な状態となります。ブルーツースローエナジーでは、接続成立後、そのままではマスターからのみしかサーバーのデータを読みかきできなくなっています。サーバーからデータを渡すことができるのですが、サーバーツ号で渡すことができず、マスターからの要求があったときのみとなっています。これは、いわゆる制限のある双方向通信となり、制限のない自由な双方向通信ではありません。この制限ありでは、実際のアプリケーションでは使い勝手が悪いので、インディケーションとノーティフィケーションが用意されています。マスターはリンク成立後、スレーブに対してこれらを有効化、許可することで、スレーブ通号によるスレーブからのデータ送信が可能な状態にできます。こちらは、部屋にて更新されているパケットの構造になります。プリアンブル8ビット、アクセスアドレス32ビット、PDU、CRC24ビットの順に4つのブロックで構成されています。アドバータイズとリンクが確立したコネクション中、ともに構造は同じですが、PDUに含まれるヘッダーの内容が異なります。また、PDUの最大サイズもアドバータイズとデータパケットで異なります。画面下半分の図はPDU部をスタックの改装別に示しています。PDU全てがユーザーデータとして使えるのではなく、各改装向けのヘッダー情報を含んでいるのをご理解いただけると思います。CIGの使用書、COA 4.0では、1パケットで使用できるユーザーデータサイズは20バイトでした。より多く、そして早い通信をさせたいとの要求により、COA 4.2にて、このサイズ制限は244バイトまで拡張されました。無線通信では、送信しながらの受信というように、送受信を同時に行うことはできません。では、どのように無線通信を行っているか見ていきましょう。こちらは、リンク成立後のコネクション状態を示した図になります。ブルーツースにて、デバイスは常に送信、あるいは常に受信の状態にはなっていません。コネクションイベントと呼ばれるイベント期間中に、マスターとスレーブ、双方のパケットを送受信しています。このコネクションイベントは、互いに送信データがない場合でも、接続状態を維持、確認するために必ず行われています。このゼロバイトのパケットは、エンプティーパケットと呼ばれます。左上の波形は、マスターの動作電流の波形となります。マスターの動作状態の繊維がわかります。イベントの開始にて、CPUがウェーカップして、初めに送信、TXをし、続けてスレーブからのパケット受信、RXを行っています。スレーブはこの逆で、マスターが送信中は受信をし、マスターが受信中に送信をしています。これで、互いのパケットを送ったり、受け取ったりをしています。この時、マスターのTX開始とスレーブのRX開始が動機していなければいけません。動機のタイミングは、コネクションインターバルタイムで決まっています。動機を取るには、互いの時計制度が重要な要素になります。互いの時計制度が悪い場合、スレーブはその誤差を考慮して、早めに受信を開始し、マスターのTXデータを受け取り損ねないように動作させます。コネクションイベントは、コネクションインターバルタイムの間隔を開けて行っております。インターバルタイムは、7.5から4000ミリセックの間で設定することができます。このインターバル期間中、デバイスはスリープして待機することができます。このスリープ期間を設けることで、低消費電流化を実現しています。すなわち、スリープ期間が長ければ長いほど消費電流を少なくできます。ただ、これに伴い、通信データ量も少なくなることはご理解いただけると思います。コネクションに関しては、もう一つ重要なパラメータがあります。CEレングス。コネクションイベントレングスです。1コネクションイベントにて通信できるのが1パケットだけだと、大容量のデータを送る場合に、かなりの時間を用意してしまいます。この不都合を解消するために、モアデータビットというオプションが用意されていて、1コネクションイベントにて、複数回、繰り返し、パケットを送信することができるようになります。この繰り返しは図中にあるCEレングス時間内まで行うことができます。CEレングスは、コネクションインターバルタイムとイコールか、それ以下に設定することが可能です。コネクションインターバルタイムとCEレングスは、接続プロセスにてマスターが決定しますが、すればアドバータイズにて希望時間を提示しているので、マスターはこの希望時間を参照した上で時間を決定しています。左上の図にて、モアデータビットを使用したときの動作状態を確認していただけます。この例は、マスター側の動作例で、スレーブがモアデータビットオプションを2回使用して、1回のイベントで3パケットを送り、合計60バイトのデータを送信したときのものになっております。こちらの図で、前スライドにある1パケット動作を続けて3回繰り返しているのを確認していただけます。BluetoothではアドレスのことをBDアドレスやMacアドレスと呼ばれるのを耳にします。これらはともに同儀のものです。このアドレスは主に、アプリケーション側でそれぞれのデバイスを判別、特定することが目的で、直接無線通信には関わっておりません。前のスライド、パケット構造にあったアクセスアドレスとは異なりますのでご注意ください。仮に同じBDアドレスであるデバイスが複数あっても、実際に送信されているパケットでは、固有のアクセスアドレスが使われているので、無線通信事態は可能で、更新するようなことはありません。また、接続成立後にはハンドル番号が付与されて通信するので、アプリケーション的にも対抗デバイスの識別が可能になっています。しかし、接続前のスキャン段階では同じBDアドレスが複数ある場合、アプリケーションとしてデバイスの特定、判別がしづらくなりますので、同一アドレスの使用はやはり避けるべきです。BDアドレスは大きく2種類あり、パブリックとランダムに分かれます。パブリックはIEEEより付与される会社別行動上位24ビットに含む固定値のアドレスです。ランダムアドレスはスタティックとプライベートの2種類に分かれ、プライベートはさらにリゾルバブルとノンリゾルバブルの2種類に分かれます。スタティックアドレスは完全な不定値アドレスですが、上位2ビットが1、1であるのが条件になります。こちらは、電源投入時に決定されます。言い換えると、電源投入の旅にアドレスが変わることになります。プライベートアドレスは通信の安全性を確保する目的に使用されます。一定時間間隔で更新したり、接続する旅に変えることで、外部からの登場をしにくくしています。よって、こちらはより高いセキュリティが求められるアプリケーションにて使用します。最後に、セキュリティについてのお話をいたします。ブルーツースローエナジーでは、安全なリンクを確立するためのプロトコルが規定されております。このセキュリティ処理を行っているのが、セキュリティマネージャーになります。セキュリティマネージャーでは、対抗デバイスの認証、並びに通信データ暗号化に使うキーの管理を行います。暗号化には、AES-128を使用しております。暗号化には、さまざまなキーが用意されています。それらのキーのやり取りは、ブルーツースの接続プロセスの中で行われるものと、OOBと呼ばれるブルーツース通信以外の通信システムで行われるものが規定されています。ブルーツース通信の手順では、ペアリングにて共通リンクキーを生成し、ボンディングにより最終リンクキーが確定します。OOBでは、NFCとブルーツース通信以外の通信手段でキー交換が行われます。これらのキー交換プロセスが、外部当長者に漏れないよう、MITMプロテクションと呼ばれる当長防止の通信プロトコログがあります。これは、通信しているデバイスの間に入り込み、通信内容を中渡しする形を取られても、その通信が成立しない仕組みになっています。この仕組みの詳細については、ブルーツースシグの使用書にてご確認ください。セキュリティのアルコリズムには、JUSTWORKSという暗号化しない状態での通信も可能となっています。暗号化する場合は、前スライドに出てきたペアリングプロセスにて、パスキーロッケタの数字が必要で、アプリケーションがこのロッケタの数値を入力、表示する機能のウムを確認して、手続きが進められます。入力用のキーボードや表示用のディスプレーを有意していない場合でも、ソフトウェアにて処理できるように組むことは可能になっているので、ハードウェアコストが上がるというような心配はありませんのでご安心ください。OUT OF BANDはお話し済みのようにNFCなどのブルーツース通信以外の通信手段にて、キーの交換を行います。以上で、ブルーツースローエナジープロトコルの基礎知識のお話とさせていただきます。スマートフォンやタブレット機器に搭載され、多数のアプリで使われているブルーツース技術をより短な機器としてお使いいただけるよう、STマイクロエレクトロニクスは開発キットを用意し、製品開発のお手伝いをさせていただいております。ぜひ一度弊社の開発キットをお試しいただけるようお願い申し上げます。最後までご覧いただきありがとうございました。