顕微鏡下のBLE

画像






顕微鏡下のBLE。 パート1

パート2 パート3

世界には、「無線で」情報を送信するさまざまな方法があります。 最近、BLE形式がますます一般的になっています。 今日は、このプロトコルの機能を検討し、現代の世界でなぜこれが需要があるのか​​についてお話します。 また、Windows上の補助アプリケーションの開発ツールと機能、Nordicのandroidも検討します。



BLEを思いつく理由



人々が有線の助けを借りずに情報を送信することを学ぶとすぐに、タスクはバッテリー駆動のデバイスを使用してデータを転送することでした。 問題は、常にブロードキャストをリッスンするか、データを送信する別のデバイスに助けられなければならないことです。 受信機と送信機の両方がバッテリー駆動の場合、問題が発生します。 この場合、BlueTooth Low Energy(BLE)が助けになります。 彼は最初にBlueTooth 4.0プロトコルに入りました。 BlueTooth 5.0仕様は現時点ですでにリリースされていますが、主にBlueTooth 4.0形式を検討し、5.0形式の革新を示す場合があります。 通常、デバイスの1つはスマートフォンで、2つ目はバッテリーガジェットです。 Androidはバージョン4.3以降のBLEをサポートしています。



データの送受信にはエネルギーが必要なため、データ転送速度を上げて、単位時間あたりにより多くの情報を転送できるようにします。 このため、BLEでは1 Mbit / sのデータ転送速度が受け入れられます。 ただし、データ転送速度だけが重要ではありません。 BLEで最も重要なことは、通信デバイスが同期動作モードに移行できることです。 言い換えると、デバイスは99%の時間スリープし、その後非常に短い時間に起きて、情報を交換し、再びスリープ状態になります。 ただし、このモードに入る前に、同期手順を実行する必要があります。 このために、「広告」のモードがあります。 後で検討します。 そして、BLEプロトコルの説明に入る前に、BLEプロトコルを操作するためのツールのトピックに触れたいと思います。



ツール



さまざまな小包やリクエストを理解するには、ツールが必要です。 彼らの助けを借りて、パッケージの内容を確認し、デバイス間の相互作用のメカニズムを監視することができました。 これらの目的のために、スニファープログラムであるnRF51822開発ドングル(PCA10000)を使用し、結果を表示するために、すべてのシステム管理者によく知られているWiresharkプログラムを使用します。



画像






プログラムは無料ですが、ドングルの入手自体が問題になる場合があります。 ただし、ツールがなければ、このような複雑なデバイスの開発には非常に問題があります。 最初の段階では、Android「nRF Connect」のプログラムが役立ちます。



画像






エーテルをスキャンし、接続されているデバイスと接続されていないデバイスの両方のパッケージを見つけて分解することができます。 NordicにはBLEデバイスを開発するためのツールが他にもありますが、これらは十分に用意されています。 ロシア市場では、北欧の代表者-会社「Rutronik」(rutronik24.com、rutronik.com)があります。 代理店を通じて、必要なチップ、デバッグボードなどを購入できます。 さらに、インターネット上に会社の代表者が開発者の質問に答えるフォーラムがあります。



まず、ツールの使用方法について簡単に説明しましょう。 ドングルをUSBコネクタに挿入し、ble_sniffer_winプログラムを実行します。 次のウィンドウが表示されます。



画像






ドングルがBLEデバイスを認識すると、それらに関する情報が下部に表示されます。 この場合、オンエアには「TestBLE」と呼ばれるデバイスが1つあります。 また、信号強度、MACアドレス、およびこのアドレスがランダムであるという事実も表示します。 今後、開発者にとっての落とし穴の1つがここにあることに注意してください。 一部の電話(LG G3S、Samsung S6)は、MACアドレスが登録されている(パブリック)デバイスでのみ動作します。



スニファーには2つの動作モードがあります。 キーボードの「w」ボタンを押すと、「Wireshark」プログラムが起動します。 スニファーは3つの広告チャネルをスキャンし、広告内のすべてのデバイスに関する情報を提供します。 対象のデバイスの反対側と同じキーボードの番号を最初に押すと、別の操作モードがオンになります。 その中で、スニファーは、アナウンスメントチャネルとワーキングチャネルの両方で、選択された1つのデバイスのトラフィックのみを追跡します



画像






「Wireshark」を使用すると、パッケージに関するすべての情報を簡単に取得できます。 プログラムは3つのウィンドウで構成されています。 受信したすべてのパッケージは、上部の2番目のウィンドウ(選択したパッケージに関する詳細情報)に表示され、3番目のウィンドウにはフレーム自体が表示されます。 同様に、2番目のウィンドウには3つの情報ブロックがあります。 最上部-選択したフレームの一時的な値、2番目(Nordic BLEスニファーメタ)-信号レベル、周波数チャネルなどのフレームに関する一般情報。 私たちにとって最も興味深いのは、3番目の情報ブロック(Bluetooth Low Energy Link Layer)です。 フレーム内の分析を見ることができます。 今後、この情報ブロックについて具体的にお話しします。 最初に、広告パッケージがどのように形成されるかを見ていきます。



広告



下の写真を見てみましょう。 BLEのチャネルの頻度分布を示しています。 広告チャネルは、37(2402 MHz)、38(2426 MHz)、および39(2480 MHz)チャネルです。 この広告チャネルの分布は偶然選ばれたものではありません。 まず、広告チャネルはWi-Fiチャネル(1、6、11チャネル)の間にあるため、低電力レベルでも他のデバイスから音声を聞くことができます。 第二に、互いに離れた広告チャネルを配信すると、メッセージ配信が保証されます。 これは部屋の信号干渉によるものです。 壁からの無線信号の反射の結果として、受信機と送信機が互いに聞こえない場合に状況が発生することが知られています。 ただし、この場合、広告パッケージが可能な限り周波数が互いに離れている3つの異なるチャネルで連続して送信される場合、この効果はありません。



画像






次に、広告パッケージ自体の形式を検討します。 仕様では、データ長はオクテットで測定されます。 私たちにとって、これらはバイトです。 最初のバイトはプリアンブルです。 ゼロと1が交互になっています。 これは、送信機と受信機を同期するためです。 プリアンブルに続いて、4バイトのアクセスアドレスが送信されます。 その後、データパケット(PDU)が届きます。 仕様4.0では、PDUの最大長は39バイトであり、バージョン5.0では、データパケットの長さが257バイトに増加しています。 各提案の最後に、チェックサム(CRC)の3バイトがあります。



画像






ここで、アクセスアドレスは、デバイスがBLEパッケージの対象を理解していることを確認するのに役立つことに注意してください。 これは一種のアクセスコードです。 このアクセスコードがデバイスに馴染みがない場合、パケットは無視されます。 すべてのアドバタイジングチャネルでは、動作中のものとは異なり、同じ(0x8E89BED6)であるため、アドバタイズメントチャネル上のすべてのデバイスは互いに認識します。



次に、PDUデータブロックの形式を検討します。 PDUの最初の部分には、16ビットのヘッダーがあります。 これには、パケットタイプ、フラグTxAdd、RxAdd、およびバイト単位のPDUフィールド全体の長さが含まれます。 RFUは予約フィールドです。 仕様4.0の場合、次のようになります。



画像






タイトル:



画像






仕様5.0では、ペイロードフィールドが255バイトに増加し、ヘッダーに新しいフィールドが追加されました。



画像






タイトル:



画像






TxAddフィールドは、デバイスのMACアドレスがどのように表示されるかを正確に管理します。 このフィールドが1に等しい場合、デバイスのMACはランダムに表示されます。 次に、広告パッケージの種類を検討します。 図は、仕様4.0のリストを示しています。 5.0形式では、それらの数が増えますが、両方の形式に含まれるものを検討します。



画像






ADV_INDは、参加する準備ができたデバイスを送信する無方向パケットです。 ほとんどのガジェットは、これらを使用して広告パッケージを送信します。



ADV_DIRECT_IND-接続されたデバイスのターゲット広告パッケージ。 以前に既知のMACアドレスを持つ特定のデバイスのみがそれらと接続してデータを交換できます。



ADV_NONCONN_IND-接続できないデバイスを送信する提案。 これらはビーコンです。 通常、それらはある種の参照情報を取得するのに役立ちます。 たとえば、店舗の入り口でプロモーションについて通知できます。 さらに、灯台からの信号のレベルを測定し、その位置の地図を知ることにより、自動屋内測位を実行することが可能です。 これは、自動倉庫に当てはまります。



SCAN_REQ、SCAN_RSP、CONNECT_REQ-同期接続を確立するプロセスで接続デバイスと電話の間で交換されるパケット。 これらのパッケージと参加のプロセスは、記事の後半で検討します。



ADV_SCAN_IND-これらのパケットは接続不可能なデバイスによって送信され、スキャン中の要求に応じて追加情報を提供できます。






記事の第2部では、BLEデバイスのさまざまな動作モード、およびデバイスを電話に「接続」して動作周波数に切り替えるメカニズムについて検討します。



ペチェルスキフウラジミール



All Articles