Tech

Bluetooth Low Energy(BLE)とは? Bluetoothの開発が初めての人向け!

投稿日:2021年7月5日 更新日:

はじめに

Bluetoothは今やとても身近な存在になりました。ワイヤレスイヤホン、スマートウォッチ、忘れ物防止タグなど、様々な製品に使用されています。
今回は、そんな身近なBluetooth規格のうち、Bluetooth Low Energyの技術的な入門記事として、用語や概念を中心に紹介します。

Bluetoothの規格

Bluetoothには大きく分けて2つの規格があります。これらの規格はお互いに特性や用途が全く異なるものです。

Bluetooth Classic

元々のBluetoothです。名前に「Classic」とありますが、現在でも広く使われている規格です。
主な用途は、音声ストリーミング、ファイル転送、TCP/IPによるネットワーク構築などです。
最新規格のBluetooth 5.1では、通信速度の理論値が2Mbpsとなっています。
接続する際の手順として、ペアリングしてから接続するという手順となっていることも特徴です。

BLE(Bluetooth Low Energy)

元々はNokkia社の「Wibree」という規格でしたが、Bluetooth 4.0で統合されました。そのため、Bluetooth Classicとは用途や仕様が全く異なります。
BLEでは、低電力に重きを置いており、例えば小型のIoTデバイスが長時間駆動できるように設計されています。
さらに、一度に通信できるデータ長が最大で512octetsとなっており、これを超えるデータをやり取りするには、何度も通信する必要があります。そのため、大きなデータを通信する場合にはスループットが大幅に低下するため、そのような場合はBluetooth Classicか、他の手段を検討した方が良いと言えます。

BLEの役割

BLEでは次のような役割があります。

  • セントラル
    スキャンや接続を行う側です。周囲のデバイスをスキャンし、接続したいデバイスが見つかったら接続しに行きます。
  • ペリフェラル
    セントラルから接続される側です。セントラルに対し、サービスやキャラクタリスティックを提供することで、データを送受信します。

BLEで接続する手順は次の通りです。

  1. ペリフェラルがアドバタイズを発信する
  2. セントラルがペリフェラルのアドバタイズを見つけ、接続したいデバイスに接続する。
  3. セントラルとペリフェラルの接続が確立したら、セントラル側から読み込みもしくは書き込みのリクエストを送信する。
  4. ペリフェラル側は、読み取りリクエストの場合はデータをレスポンス、書き込みリクエストの場合はセントラルからのデータを受け取る。

このように、セントラル・ペリフェラルの関係性は、クライアント・サーバ のような関係性にあるといえます。

サービスとキャラクタリスティック

BLEでよく使われるプロトコルのひとつに「GATT」があります。GATTではサービスとキャラクタリスティックという概念のもと、セントラルと通信します。

サービスとは、キャラクタリスティックの集合体です。セントラルは、ペリフェラルとの通信が確立すると、まずはサービスを選択することになります。
接続が確立すると、ペリフェラルは、サービスの一覧をセントラルの提供するので、セントラルはその中から利用したいサービスを選択します。

サービスを選択すると、次はキャラクタリスティックに対して、データの読み書きをすることになります。キーバリュー型のデータ構造に似ていて、セントラルはUUIDをもとにペリフェラル側にデータを書き込んだり、読み込んだりすることができます。

また、GATTではサービスやキャラクタリスティックを一意に判別するために「UUID」を使用します。このUUIDはあらかじめ定められたものがありますが、自分で生成したUUIDを使用して独自のサービスやキャラクタリスティックとしても構いません。
あらかじめ定められたUUIDの例として、次のようなものがあります。

サービス

  • 0x1805: 現在時刻 (Current Time)
  • 0x180D: 心拍数 (Heart Rate)
  • 0x180F: バッテリー (Battery)

キャラクタリスティック

  • 0x2A07: 日時 (Date Time)
  • 0x2A37: 心拍数 (Heart Rate Measurement)
  • 0x2A39: センサーの取り付け場所 (Body Sensor Location)
  • 0x2A19: バッテリーレベル (Battery Level)

その他の定義済みのUUIDについては以下の資料に記載されています。
16-bit UUID Numbers Document (PDF)

ペリフェラルからの更新通知

セントラルからのリクエストによってデータを取得するだけでなく、ペリフェラルドリブンでデータを配信することもできます。
セントラルがキャラクタリスティックの更新通知を受けるようにすることで、ペリフェラル側から随時送信されて来るデータを受信することができます。

BLEを実装する方法

BLEを始められる方法を紹介します。もし、iOSやAndroidの開発機環境があれば、アプリ上にセントラル・ペリフェラル側の両方を実装することができます。そのほかにも、以下のパッケージを使用すれば、macOSやLinuxが動作するシステムで実装することができます。

さいごに

Bluetoothは年々バージョンアップされていて、利便性が増しています。特に、BLEは開発の敷居が低いと思うので、今後もブログで記事にしていきたいと思います!

おすすめ書籍

Bluetooth Low Energyをはじめよう (Make:PROJECTS) iOS×BLE Core Bluetoothプログラミング

blog-page_footer_336




blog-page_footer_336




-Tech
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【Unity】TextMeshProで文字の表示と日本語入力

1 はじめに2 プロジェクトに追加3 TextMeshProのプロパティ4 日本語を使うには5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。unityをアップデートしたらTextが ...

Flutterで生体認証が楽々導入できると噂のlocal_auth

1 はじめに2 準備3 実装3.1 端末が生体認証可能かの確認3.2 生体認証の登録状態の確認3.3 生体認証の実行4 おすすめ書籍 はじめに 最近はFlutterの勉強ばかりしていますが、今回は簡単 ...

React+axiosでhttpリクエスト

1 はじめに2 axiosとは2.1 XMLHttpRequest2.2 Promise3 準備4 実装4.1 resultsの中身4.2 エラーハンドリング4.3 カスタムヘッダーの付与5 Reac ...

ReactNative画面遷移

1 はじめに2 React Navigation3 React Navigationのインストール4 実装5 さいごに6 おすすめ書籍 はじめに こんにちはnukkyです。 ブログを書きながらアプリを ...

Sign in with Appleの実装

1 はじめに2 Sign in with Appleとは2.1 iOS レビューガイドライン2.2 つまり3 準備4 実装5 デザイン6 さいごに7 おすすめ書籍 はじめに こんにちは、nukkyです ...

フォロー

blog-page_side_responsive

2021年7月
 123
45678910
11121314151617
18192021222324
25262728293031

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。