Bluetooth
■ 概要( → Bluetooth .com )
・2.4 GHz帯を使う近距離無線、通信距離はmax 10 ~ 400m
・Bluetoothの仕様策定: Bluetooth SIG(Special Interest Group、業界団体)
■ 規格
<全般>
Version | 制定 年月 |
要約 | 記事 | 備考 |
1.0 | 1999年 | |||
1.1 | 2001年 | 最初の普及バージョン | ||
1.2 | 2003年 | WiFiとの干渉対策 追加 | 無線LAN(Wi-Fi)との干渉を避けるAFH(Adaptive Frequency Hopping)対応 | |
2.0 | 2004年 | 大容量伝送で 3Mbps伝送 追加 | 容量の大きいデータを通信する際に最大通信速度を3Mbpsの通信に切り替える Enhanced Data Rate (EDR) がオプションで追加できるようになった | |
2.1 | 2007年 | 省電力機能 追加 簡易ペアリング 追加 |
・消費電力を削減する「Sniff Subrating」機能を追加 ・簡略化されたペアリング「Secure Simple Pairing」機能を追加 |
|
3.0 | 2009年 4月 |
HS(24Mbps)通信 追加 | ・ Protocol Adaptation Layer(PAL)を採用し、最大通信速度が24Mbpsとなる High Speed (HS) がオプションで追加できるようになった | |
4.0 | 2009年 12月 |
BLE省電力型 追加 ホストにDual mode(BR/EDR or BLE) 実装オプション 追加 |
従来からの Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR) に加えて、BR/EDR に比べ大幅に省電力化された Bluetooth Low Energy (BLE) が追加された。Bluetooth SIGが公開する資料によれば、ボタン電池1つのみでも数年駆動可能としている。転送速度は1Mbpsだが、データパケットサイズが8 - 27オクテットと非常に小さくなっている。これは、例えば家電製品などに搭載されたセンサとのデータ通信に向けた仕様となっている。この点が BR/EDR と方向性が異なっており、互換性が無く、ベンダは BR/EDR と BLE をそれぞれ目的別に採用するものとされている。ホスト側は両方を組み込んだ「デュアルモード」を実装できる。 | |
4.1 | 2013年 | BLEにモバイル機器との干渉対策 追加 BLEにインターネット接続機能 追加 BLEにホスト/クライアント同時機能 追加 |
Bluetooth Low Energy に モバイル端末向け通信サービスの電波との干渉を抑える技術、データ転送の効率化、自動の再接続機能、直接インターネット接続できる機能、ホストとクライアント同時になれる機能、が追加された | |
4.2 | 2014年 | BLEのセキュリティ強化 追加 BLEの伝送速度の高速化 追加 (260kbps → 650kbps) |
Bluetooth Low Energy に Data Packet Length Extension を追加し、通信速度(アプリケーションスループット)が260kbpsから650kbpsに2.5倍高速化。Bluetooth Low Energy が IPv6/6LoWPAN でインターネット接続できるようになる。 | |
5.0 | 2016年 | BLEの到達距離4倍(400m/125kbps) BLEの伝送速度を2倍(100m/2Mbps) |
Bluetooth Low Energy のデータレートが2Mbps, 1Mbps, 500kbps, 125kbpsになり、2及び1Mbpsは従来通り到達距離が100m、125kbpsは到達距離が400mとなった | |
<認証>
・ 日本に於いて、総務大臣から登録されている登録認証機関としては、
TELEC(一般財団法人テレコムエンジニアリングセンター)、ULジャパンなどがある。
・ RN4020の技術基準適合証明番号: 201-140392
<無線クラス>
・クラス1 : 100mW ( = 20dBm) //(概略)到達距離:100m
・クラス2 : 2.5mW( = 4 dBm = 10log(2.5/1.0) = 10 x 0.3979) //(概略)到達距離:10m
・クラス3 : 1.0mW( = 0 dBm = 10log(1.0/1.0) = 10 x 0) //(概略)到達距離:1m
<データレート>(最大データ転送速度)
|
■ Microchip Bluetooth Device 全リスト → URL
略号 | 名称 | 内容 | 備考 |
3DSP | 3D Synchronization Profile | 3Dメガネとテレビを繋ぐためのプロファイル。 | |
A2DP | Advanced Audio Distribution Profile | デジタルオーディオプレイヤー - ヘッドフォン間などで用いられる、ステレオ音質のオーディオデータをストリーミング配信するためのプロファイル。 | RN52 BM64 |
AVRCP | Audio/Video Remote Control Profile | デジタルオーディオプレイヤー - リモコン間などで用いられる、操作対象デバイスをリモコンからリモート操作するためのプロファイル。 | RN52 BM64 |
BIP | Basic Imaging Profile | 携帯電話 - プリンタ間などで用いられる、画像の送受信や印刷のためのプロファイル。 | |
BPP | Basic Printing Profile | 携帯電話 - プリンタ間などで用いられる、電子メールや画像、プレーンテキストなどの印刷のためのプロファイル。 | |
CTN | Calendar Tasks and Notes Profile | カレンダータスクとノート | |
DI | Device Identification Profile | SDPを利用して、デバイス固有の情報を提供するためのプロファイル。 | |
DUN | Dial-Up Network Profile | Bluetoothの無線接続経由で、インターネットや他のダイアルアップサービスにアクセスするためのプロファイル。 | RN41,RN42 |
FTP | File Transfer Profile | 2台のPC間でファイル転送を行うためのプロファイル。同名のプロトコル (File Transfer Protocol) との関連はない。 | |
GAP | Generic Access Profile | 他の全てのプロファイルの基礎として機能するプロファイルで、機器の接続、認証、暗号化などを行うもの。A2DPとVDPの基礎として使われている。 | |
GATT | Generic Attribute Profile | Bluetooth Low Energyを利用するすべての通信のベースとなるプロファイル。その他のプロファイルと組み合わせて使う。 | |
GAVDP | Generic Audio/Video Distribution Profile | ビデオストリームやオーディオストリームを配信するためのプロファイル。前述のGAPと同じく、A2DPとVDPの基礎として使われている。 | |
GNSS | Global Navigation Satellite System Profile | GPSなどの測位情報を伝送するためのプロファイル。 | |
GOEP | Generic Object Exchange Profile | ファイル転送の基礎として機能するプロファイル。 | |
HCRP | Hard Copy Cable Replacement Profile | PC - プリンタ間で用いられる、ファイルの印刷・スキャンを行なうためのプロファイル。 | |
HDP | Health Device Profile | 健康管理機器を接続するためのプロファイル。 | |
HFP | Hands-Free Profile | 携帯電話 - ヘッドセット間などで用いられる、電話の発着信や通話を行なうためのプロファイル。 | RN52 BM64 |
HID | Human Interface Device Profile | キーボードやマウス(ポインティングデバイス)をBluetoothの無線接続経由で使用するためのプロファイル。 | RN41,RN42 |
HSP | Headset Profile | PC・携帯電話 - ヘッドセット間などで用いられる、音声入出力を行なうためのプロファイル。 | RN52 |
IOPT | Interoperability Profile | すべてのBluetooth対応機器に適用されるプロファイルで相互運用性を定義する。 | |
MAP | Message Access Profile | デバイス間でメッセージオブジェクトを交換するためのプロファイル。GOEPを基礎技術として用いている。 | |
MPS | Multi-Profile Specification | 複数のプロファイルのサポート | |
OPP | Object Push Profile | 携帯電話 - 携帯電話間のオブジェクト(たとえば電話帳のデータやスケジュールのデータなど)を交換するために使用されるプロファイル。 | |
PAN | Personal Area Networking Profile | ある1台のPC(マスター)を中心として、複数のPC(スレイブ)が無線接続を行なうためのプロファイル。 | |
PBAP | Phone Book Access Profile | 電話帳情報を伝送するためのプロファイル。 | |
SAP | SIM Access Profile | GSM(2G)方式のSIMカード、UICC、R-UIMカードにアクセスするためのプロファイル。 | |
SPP | Serial Port Profile | PC間において仮想シリアルポートを設定し、それらのPCを接続するために使用されるプロファイル。 | RN41,RN42 RN52 |
SYNCH | Synchronization Profile | GOEPと連動して使用することで、PCや携帯電話などの各デバイス間で各種情報(カレンダーやアドレスなど)を共有するために使用されるプロファイル。 | |
VDP | Video Distribution Profile | ビデオカメラ - モニタ間などで、ビデオデータをストリーミング配信するためのプロファイル。 |
■ BLE(Bluetooth Low Energy)全般
<クラシックBluetooth vs BLE>
比較項目 | クラシックBluetooth (イメージ:USB/CDCクラス、インタラプト転送) |
BLE (イメージ:USB/HIDクラス、コントロール転送) |
備考 |
消費電力 | 大 | 小 | |
パケット長 | 長い | 短い | 1つのキャラクタリスティックの最大サイズは20バイト (注) |
リンク確立までの時間 | 数100msec | 数msec | |
チャンネル数 | 79ch | 37ch | |
用途 | BLEはセンサーの値やスイッチのON/OFFの検出など少量のデータを省エネで通信するのに向いている。 (1つのキャラクタリスティックの最大サイズは20バイト) ある程度大きなデータを送受信する場合はクラシックBTの方が向いている。 |
||
備考 | (注) キャラクタリスティックへのデータ送信(書き込み)例 <条件> ・BLEデバイス:RN4020、モード:ペリフェラル ・キャラクタリスティック容量設定を: 20バイトに設定しても、21バイトに設定しても結果(下記)は同じ CHW,000B,4041424344454647484940414243444546474849//Write 20byte ……20バイト送信の場合、ペリフェラル側Notification: 有 AOK CHW,000B,404142434445464748494041424344454647484940//Write 21byte ……21バイト送信の場合、 ペリフェラル側notification: 無 ERR |
<BLEに係る表示>
・ Bluetooth 4.0+EDR: LEに対応せず、2.0/2.1用のEDRに対応することを表わす。 +HSと記すときもある。 Bluetooth 4.0+EDR/LE: LEに対応 2.0/2.1用のEDRにも対応することを表わす
|
|||||||
・Bluetooth Smart vs Smart Ready
|
■通信のやり方
<基本> ・不特定多数に対してデータを送信する「ブロードキャスト」と特定のデバイス間で使用する「コネクション」の2種類がある。 ・キャラクタリスティックに対して値を書いたり,その値を読んだりすることで行われます. 「データを送信する」という従来のBluetooth通信の感覚より,「キャラクタリスティックにデータを書き込む」→「その結果データが送信される」 Advertize → Scan → Connect → Disconnect ・データ構造はBluetooth SIGによりGATTと呼ばれるプロトコルで規定されている。 Service、 Characteristics、UUID ・通信手順はBluetooth SIGによりGAP(Generic Access Profile)と呼ばれるプロトコルで規定されている。 Central、 Peripheral、Advertize 、Scan 、Connect、 Disconnect ・Scan、Connect/DisconnectはCentralの権限である。 ・キャラクタリスティックCharacteristicsはサービスServiceという呼び名で分類されている。 ・データ読み書き関連として、Read, Writeに加え Notifyと云う機能がある。 Notifyとはキャラクタリスティックの値が変更になった場合通知を受ける機能のことを云う ・Services、Characteristicsは UUID(Universally Unique IDentier)とよばれる16バイトの値で識別されている。実際には2バイト、4バイトが使われることが多い。 ・Characteristicsは、 Value , Property, Descriptorの3要素からなる。 <GATT(Generic attribute profile)>-汎用アトリビュートプロファイル ・ATT(アトリビュートプロトコル)を用いてデータを構造化 ・アプリケーション間でのやり取りの方法を定義 ・BLEのアプリケーションは、すべてこのGATTを使用して構築される ・Bluetooth SIGが公式に提供しているプロファイルと、機器メーカなどの独自提供のものがある <その他> ・無線モジュールとのインターフェースはSPP(Serial Port Protocol)のものが多々市販されている。ほとんどがUARTである。RN4020は115.2K bauのUARTである。 |
<GATTの構造> (→ GATT Services )
ブルーツースSIGによる 公式サービスリストです。
|
:黄色枠のサービスは、RN4020でサポートされているサービスです。 |
Bluetooth SIG 公式サービスリスト | |||
---|---|---|---|
Name(サービス名) x42 | Uniform Type Identifier | Assigned Number | Specification |
Generic Access | org.bluetooth.service.generic_access | 0x1800 | GSS |
Alert Notification Service(アラート通知) | org.bluetooth.service.alert_notification | 0x1811 | GSS |
Automation IO(オートメーション I/O) | org.bluetooth.service.automation_io | 0x1815 | GSS |
Battery Service(バッテリーサービス) | org.bluetooth.service.battery_service | 0x180F | GSS |
Binary Sensor | GATT Service UUID | 0x183B | BSS |
Blood Pressure(血圧値) | org.bluetooth.service.blood_pressure | 0x1810 | GSS |
Body Composition | org.bluetooth.service.body_composition | 0x181B | GSS |
Bond Management Service | org.bluetooth.service.bond_management | 0x181E | GSS |
Continuous Glucose Monitoring | org.bluetooth.service.continuous_glucose_monitoring | 0x181F | GSS |
Current Time Service(現在時刻) | org.bluetooth.service.current_time | 0x1805 | GSS |
Cycling Power | org.bluetooth.service.cycling_power | 0x1818 | GSS |
Cycling Speed and Cadence(サイクリングケイデンス) | org.bluetooth.service.cycling_speed_and_cadence | 0x1816 | GSS |
Device Information(デバイス情報) | org.bluetooth.service.device_information | 0x180A | GSS |
Emergency Configuration | GATT Service UUID | 0x183C | EMCS |
Environmental Sensing(環境感知) | org.bluetooth.service.environmental_sensing | 0x181A | GSS |
Fitness Machine | org.bluetooth.service.fitness_machine | 0x1826 | GSS |
Generic Attribute | org.bluetooth.service.generic_attribute | 0x1801 | GSS |
Glucose(血糖値) | org.bluetooth.service.glucose | 0x1808 | GSS |
Health Thermometer(体温計) | org.bluetooth.service.health_thermometer | 0x1809 | GSS |
Heart Rate(心拍数) | org.bluetooth.service.heart_rate | 0x180D | GSS |
HTTP Proxy | org.bluetooth.service.http_proxy | 0x1823 | GSS |
Human Interface Device | org.bluetooth.service.human_interface_device | 0x1812 | GSS |
Immediate Alert | org.bluetooth.service.immediate_alert | 0x1802 | GSS |
Indoor Positioning | org.bluetooth.service.indoor_positioning | 0x1821 | GSS |
Insulin Delivery | org.bluetooth.service.insulin_delivery | 0x183A | GSS |
Internet Protocol Support Service | org.bluetooth.service.internet_protocol_support | 0x1820 | GSS |
Link Loss | org.bluetooth.service.link_loss | 0x1803 | GSS |
Location and Navigation(位置とナビ) | org.bluetooth.service.location_and_navigation | 0x1819 | GSS |
Mesh Provisioning Service | org.bluetooth.service.mesh_provisioning | 0x1827 | GSS |
Mesh Proxy Service | org.bluetooth.service.mesh_proxy | 0x1828 | GSS |
Next DST Change Service | org.bluetooth.service.next_dst_change | 0x1807 | GSS |
Object Transfer Service | org.bluetooth.service.object_transfer | 0x1825 | GSS |
Phone Alert Status Service | org.bluetooth.service.phone_alert_status | 0x180E | GSS |
Pulse Oximeter Service | org.bluetooth.service.pulse_oximeter | 0x1822 | GSS |
Reconnection Configuration | org.bluetooth.service.reconnection_configuration | 0x1829 | GSS |
Reference Time Update Service | org.bluetooth.service.reference_time_update | 0x1806 | GSS |
Running Speed and Cadence(ランニングスピードとリズム) | org.bluetooth.service.running_speed_and_cadence | 0x1814 | GSS |
Scan Parameters | org.bluetooth.service.scan_parameters | 0x1813 | GSS |
Transport Discovery | org.bluetooth.service.transport_discovery | 0x1824 | GSS |
Tx Power | org.bluetooth.service.tx_power | 0x1804 | GSS |
User Data(ユーザデータ) | org.bluetooth.service.user_data | 0x181C | GSS |
Weight Scale | org.bluetooth.service.weight_scale | 0x181D | GSS |
■ 用語
■ ペアリング VS ボンディング
|
|||
■ パブリックアドレス VS プライベートアドレス
|
|||
■ MLDP(Microchip Low-energy Data Profile)
|
|||
■ BR/EDR(Bluetooth Basic Rate/Enhanced Data Rate) Bluetooth Classicのこと。 Bluetooth 4.0で追加されたBLE(Bluetooth Low Energy)でないBluetoothのこと。 |
■ スマホBLE
■BLEデバイス デバックソフト(Android)
<LightBlue>
スマホアプリ LightBlue で下記コマンドに伴う動作をレビュー
RN4020との送受信ソフトの画面(VC#で作成) |
メモ | ➀ LightBlueの起動画面 | ➁ ターゲットのBLE2_ClickB0CC(デバイス名)をクリック |
③ Heart Rateサービスをクリック |
スマホ画面 | |||
メモ | ④ Heart Rate Measurementキャラクタリスティック(Assigned Number:2A37)をクリック | ⑤ SUW,2A37,60 を送信後、SUBSCRIBEボタンをクリック | ⑥ Charasteristicの値が60にセットされています。 |
スマホ画面 | |||
メモ | ⑦ SUW,2A37,68 を送信するとリアルタイムで値が60 → 68 に変更となる 。Light Blueの操作なし |
||
スマホ画面 |
・LightBlueからの書き込み
以下は、UUID180dが書き込み可なので123456を書き込んだところです。
(セントラルへデータを書き込み)
LightBlue画面 | |||
PC画面 Writeボタンをクリックして書き込みをおこなうと同時に WV,001D,123456. がPC側に送信されてくる |
■ Bluetooth USB ドングル
ドングル購入に際しては プロファイルをよく精査する必要がある。
■ 汎用Blootooth USBドングル
プロファイルの最新機能によっては最新のハードのBluetoothデバイスのよる、そして最新の同ドライバーにしないと動作が正常でない場合がある。
(例)
・BT-Micro4(PLANEX) RN4020デバイスを検出するがGATT接続不可
・BSBT4D200(BUFFALO) RN4020デバイス検出せず
★注意: 内臓Bluetooth デバイスがある場合は内蔵用ドライバーを無効にして 追加ドングル用のドライバーを動作させないと
追加しドングルは正常に動作しない(以下参照)
内蔵用Bluetooth Driver 無効化前 → 動作不調 | 内蔵Bluetooth Driver 無効化後 → 動作正常 | |
■ デバック用 専用ドングル & BLEアプリ
・ Bluetooth LE explore(Microchip)
・ Blue Tropical Fish ( → URL)
・ Bluefruit LE Sniffer( → URL) 要専用ドングル
■ Bluetoothを使ったPC間のファイル転送 (→ URL)
■ RN4020 メモ
・RN4020の独自キャラクタリスティックの最大設定可能数は 10個である。
・ キャラクタリスティックのプロパティ | |||||||||||||||||||||||||||||||||||||||||
|
★ LCコマンド 1行目はプライベートサービスのUUID 2行目は キャラクタリスティックAのUUID、ハンドル、キャラクタリスティックのプロパティの下位4ビット(b3-b0) 3行目は キャラクタリスティックAのUUID、ハンドル、キャラクタリスティックのプロパティの上位4ビット(b7-b4) 何故か 4行目は キャラクタリスティックAのUUID、ハンドル、キャラクタリスティックのプロパティの8ビット(b7-b0) 何故か 5-7行目は 2-4行目と全く同じ内容が表示される。 |
|
LC//Client Server Services |
★ PS, PCコマンド PSコマンドで、プライベートサービスを設定、つづくPCコマンドで下位のキャラクタリスティックを設定する。 読み書きに際してはUUIDを直接使用しないで ハンドル(000B,000C,000Eなど:ヘッダーコードとも呼ばれる)を使用する ハンドルはLSコマンドでしることができる。 同一のキャラクタリスティクに対して 読み書き用のハンドルとノーティフィケーション用ハンドルはことなる。(000B vs 000C) PS,11223344556677889900AABBCCDDEEFF //Set Private Service UUID AOK //キャラクタリスティックのデータ(10バイト)保存用 PC,010203040506070809000A0B0C0D0E01,1A,10//Set Private Chara UUID, Read_ResWrite_Notify, 16byte AOK //キャラクタリスティクのプロパティ保存用 PC,010203040506070809000A0B0C0D0E02,06,02//Set Private Chara UUID, Read_noResWrite, 2byte AOK R,1//RN4020 Reboot Reboot CMD Echo On A//Advertize AOK Connected LS//List Server services 11223344556677889900AABBCCDDEEFF ★★ 読み書き用とノーティフィケーション用のハンドルがことなる 010203040506070809000A0B0C0D0E01,000B,0A,10 //読み書き用キャラクタリスティック //1Aの下4バイト → 0A 010203040506070809000A0B0C0D0E01,000C,10,02 //ノーティフィケーション用 キャラクタリスティック //1Aの → 上4バイト 010203040506070809000A0B0C0D0E02,000E,06,02 END |
★ CHWコマンド (CHW,<ハンドル>,XXXX...)で データXXXX....には、条件を満たさないとキャラクタリスティックには書き込めない。 書き込み条件に合致しなくとも AOKが返信されるので注意が必要である。 ・ 書き込み可能な文字は 0-9、A-Fである。 ➀G-Zは無視される。 ➁データの途中ででG-Zが現れると 以降のデータが無効となる。 途中に現れたG-Zが偶数番目の場合、前の文字も無視される。 ③アルファベットの小文字a-fは 大文字A-Fに変換されて書き込まれる。 ・ データは2バイト単位でしか書き込めない。 ➀1バイトだけ書き込もうとしても無視される。 ➁トータルが奇数バイトを書き込もうとすると最後の1バイトが無視される。 ③2バイトの上位バイトに9-Fを送信できる。 → 送信データは2バイト単位でみると アスキー文字だけでなく 0x00 - 0xFFまですべて送信可能である。 (送信可能最大バイトは20バイトであるのであるが、データを 0x00-0xFFとすると10バイトが最大となる) ・ データXXXX....は各1バイトである。 例: WV,000B,123ABC. を受信した配列は以下である。 char Data[128]; Data[0] = 'W'; Data[1] = 'V'; Data[2] = ',' Data[3] = '0'; Data[4] = '0'; Data[5] = '0'; Data[6] = 'B'; Data[7] = ','; Data[8] = '1'; Data[9] = '2'; Data[10] = '3'; Data[11] = 'A'; Data[12] = 'B'; Data[13] = 'C'; Data[14] = '.'; |
|||
実行結果 | 備考 | ||
Central 側(PC側) | Peripheral 側(PIC32MZ側) | ||
CHW,000B,10 AOK |
WV,000B,10. | ||
CHW,000B,00 AOK |
WV,000B,00. | ||
CHW,000B,0 AOK |
WV,000B,. |
1バイトだけではキャラクタリスティックにかきこめない | |
CHW,000B,1 AOK |
WV,000B,. | 1バイトだけではキャラクタリスティックにかきこめない | |
CHW,000B,A9 AOK |
WV,000B,A9. | 上位1バイトで9-Fがキャラクタリスティックに書き込める | |
CHW,000B,FF AOK |
WV,000B,FF. | 上位1バイトで9-Fがキャラクタリスティックに書き込める | |
CHW,000B,313233 AOK |
WV,000B,313233. |
||
CHW,000B,31H233 AOK |
WV,000B,31. | G-zZは使用できない。G-Zを含む2バイト移行が書き込めない | |
CHW,000B,312H33 AOK |
WV,000B,31. | G-zZは使用できない。G-Zを含む2バイト移行が書き込めない | |
CHW,000B,0123456789ABCDEFGHIJ AOK |
WV,000B,0123456789ABCDEF. | G-zZは使用できない。G-Zを含む2バイト移行が書き込めない | |
CHW,000B,ABCDEFGHIJK AOK |
WV,000B,ABCDEF. | G-zZは使用できない。G-Zを含む2バイト移行が書き込めない | |
CHW,000B,abcdef AOK |
WV,000B,ABCDEF. | アルファベット小文字は大文字に変換されて書き込まれる | |
CHW,000B,0123456789ABCDEFabcd AOK |
WV,000B,0123456789ABCDEFABCD. |
アルファベット小文字は大文字に変換されて書き込まれる | |
CHW,000B,012345678901234567890123456789 AOK CHR,000B R,012345678901234567890123456789. |
CHR,000Bで書き込まれたキャラクタリスティクをチェックした場合 |