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


関連記事

iOS13ダークモード対応

1 はじめに2 一時しのぎ3 実装3.1 UI Element Colors3.2 Color Set3.3 コードで描きたい3.4 カスタムのカラーを定義する3.5 画像をモードで動的に変更したい4 ...

UserNotificationsの使い方について

1 はじめに2 UserNotificationsフレームワーク3 基本実装3.1 デリゲートの設定3.2 ユーザー許可3.3 デバイストークン取得後3.4 バックグラウンドで通知受信3.5 フォアグ ...

React初心者のRedux解説

1 はじめに2 Reduxとは2.1 そもそもReduxってなに?2.2 Fluxとは2.3 Reduxの3原則3 Reduxの要素3.1 Action3.2 Store3.3 State3.4 Re ...

元mac使いがUbuntuで理想の作業環境に近づけるためにやったこと

1 はじめに2 Ubuntuのインストール2.1 買ったもの2.2 インストールメディアの作成2.3 インストールメディアの起動3 キーボード・トラックパッド周りのカスタマイズ3.1 kinto.sh ...

Go言語

GoフレームワークGinでミドルウェアを使ってログインAPIを実装

1 はじめに2 ログインAPIの作成3 ログインのセッション管理4 ミドルウェア4.1 gin.Default()4.2 Logger4.3 Recovery4.4 sessions5 独自ミドルウェ ...

フォロー

blog-page_side_responsive

2021年7月
 123
45678910
11121314151617
18192021222324
25262728293031

アプリ情報

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