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


関連記事

React+axiosでhttpリクエスト

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

Go言語

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

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

Sign in with Appleの実装

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

【iOS14】App Groups を使用して WidgetKit にデータ共有

1 はじめに2 App Groupsの準備2.1 App Groupsの許可2.2 App Groupsの使い方3 WidgetKitにデータ共有4 さいごに5 おすすめ書籍 はじめに 今回はアプリ側 ...

MLKitで使えるTensorflow Liteについて調べてみた

1 はじめに2 そもそもTensorflowとは3 そしてTensorflow Liteとは4 Tensorflowの環境構築4.1 pyenv, pyenv-virtualenvをインストール4.2 ...

フォロー

blog-page_side_responsive

2021年7月
 123
45678910
11121314151617
18192021222324
25262728293031

アプリ情報

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