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


   <データレート>(最大データ転送速度)     

     
記号  データレート  備考
BR 1Mbps  ・Bluetooth Rateの略
・BDR(Bluetooth Data Rate)とも云う
・当初は700kbpsであった
・規格策定はver.1.0
EDR 3Mbps ・Enhanced Data Rate
・規格策定はver.2.0
HS 24Mbps ・規格策定はver.3.0




■ Microchip Bluetooth Device 全リスト  → URL

■ Bluetooth プロファイル一覧  

略号 名称 内容 備考
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
内容
Bluetooth SMART  「Bluetooth Low Energy」に対応する機器を総称するブランド名
Bluetooth SMART READY ➀ チップが「Bluetooth Low Energy」と「Basic Bluetooth」の両用可
➁ユーザーの操作によって機器のプロファイルをインストールできること
③他にも実装しなければならない仕様あり

  ■通信のやり方

    
<基本>
・不特定多数に対してデータを送信する「ブロードキャスト」と特定のデバイス間で使用する「コネクション」の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 ボンディング
   ・ ペアリングと云う用語は クラシックBlueetoothだけでなく、BLEでも使用される。
・ ペアリングとは、セントラルとペリフェラル間のデータ暗号化のための鍵の交換をすることある。その時に、正しい相手かを認証をするために、双方で番号を入れるなどチェックをします。
・ボンディングとは、ペアリングで交換した鍵を保存することある。ボンディングをしておけば、次回に同じ相手と接続するときに、ペアリングの処理は行わないで、前回に使った鍵をそのまま使い、データを暗号化でる。
・ペアリングはするが、ボンディグはしないということも可能である。。その場合は、セントラルとペリフェラルが接続のたびに6桁の数字を入れたりして、相互認証を行う必要がある。
ペアリングに関してBluetooth 4.2ではセキュリティが強化され、Bluetooth 4.0とは若干異なる。
  ■ パブリックアドレス VS プライベートアドレス
     ・BLEデバイスは パブリックアドレス プライベートアドレス共に 48ビット(6バイト)である。 
・パブリックアドレス(Public Address)は デバイス固有の物理アドレスである。BLEのデバイス固有のものでありデバイスが製造された段階で決定され不変である。  デバイスが追跡されやすく、機密が漏洩しやすく、またDoS 攻撃なども受けやすい。
・プライベートアドレス(Private Address)は、Random Addressとも呼ばれ、動的に生成された48ビットの乱数を使用する。 デバイスが追跡されにくく、機密が漏洩しにくい。 またDoS 攻撃なども受けにくい。
 プライベートアドレスには以下の3種類がある。
  ➀Random Static Address(最上位2ビット=11)電源投入のたびに生成される乱数アドレス。電源再投入されないかぎり変更されない。
  ➁Non-Resolvable Private Address(最上位2ビット=00)動的に生成される乱数アドレス、ある一定時間後(例: 15分)には変更される。
  ③Resolvable Private Address(最上位2ビット=10)動的に生成される乱数アドレス、ある一定時間後(例: 15分)には変更される。ペアリング時に交換された鍵(IRK)に基づいて生成され、これを受信した側は IRK を用いることでアドレスの正当性を検証(Resolve)できる。

・アドレスがパブリックアドレスかプライベートアドレスかは スキャンコマンド「F」の返信の第2パラメータから判定できる。
 第2パラメータ: 0: パブリックアドレス
           1: プライベートアドレス
  
 例1 パブリックアドレス:001EC074B317
   返信データ: 001EC074B317,0,PIC32MZ,11223344556677889900AABBCCDDEEFF,-3A

 例2 プライベートアドレス:F9D5B830D94B
   返信データ: F9D5B830D94B,1,,,-21

・ 接続に際しては、接続コマンド「E」の第2パラメータにアドレスの種類がパブリックアドレスの場合は「0」を、プライベートアドレスの場合は「1」を送信する必要がある。

 
 例1 パブリックアドレス:001EC074B317の場合
   接続コマンド: E,0,001EC074B317

 例2 プライベートアドレス:F9D5B830D94Bの場合
   接続コマンド: E,1,F9D5B830D94B
 
  ■ MLDP(Microchip Low-energy Data Profile)
    MicrochipがBLEでSPP(Serial Port 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個である。

  ・ キャラクタリスティックのプロパティ
   
   名称  内容 備考 
 b7   拡張プロパティ    RN402未サポート
 b6  認証付き書き込み    RN402未サポート
 b5  インディケーション  サーバーからクライアントに
キャラクタリスティックの変更を報告(ACKあり)
 b5=1
 b4  ノーティフィケーション  サーバーからクライエントに
キャラクタリスティックの変更を通知(ACKなし)
 b4=1
 b3  書き込み  クライアントからの書き込み→ACKあり  b3=1 →クライアントからの書き込みが成功するとACKがサーバーへ返信される
 b2  応答なし書き込み  クライアントからの書き込み→ACKなし  b2=1 →クライアントからの書き込みが成功してもACKはサーバーへ返信されない
 b1  読み出し  クライアントからの読み出し  b1=1 →クライアントからの読み出し可
 b0  ブロードキャスト  キャラクタリスティック値をブロードキャスト  b0=1 →キャラクタリスティック値をブロードキャスト
       


   ★ 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
11223344556677889900AABBCCDDEEFF 010203040506070809000A0B0C0D0E01,000B,0A 010203040506070809000A0B0C0D0E01,000C,10 010203040506070809000A0B0C0D0E02,000E,06 010203040506070809000A0B0C0D0E01,000B,0A 010203040506070809000A0B0C0D0E01,000C,10 010203040506070809000A0B0C0D0E02,000E,06


   ★ 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で書き込まれたキャラクタリスティクをチェックした場合