Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
食関連産業IT化(機械化)講座 応用編 
Bluetooth Low Energy入門講座 
モノとアプリをつなげる基本技術 
第一部 基礎 
北海道ソフトウェア技術開発機構 
2013年11月12日~13日
講習のゴール 
• IoTのための無線技術としてBLEを捉え、 
LinuxからBLEデバイスを制御しインター 
ネット連携まで経験してみる 
• BLE仕様の概略を知る 
• LinuxからBLEデバイスを扱う 
• センサーデータを取得する...
アイスブレイク 
• 自己紹介 
• 経験の確認 
– Liunx 
– エディタ 
– 言語 
• グループ分け
一日目の内容 
• 午前 
– BLE概要 
– 事例紹介 
– デモ(iPhone/SensorTag/Konashi) 
• 午後 
– BLEの仕組み 
– SensorTag 
– Linuxからの操作
BLE概要
BLEとは 
• BLE = Bluetooth Low Energy 
– 超低消費電力な通信規格 
– コイン電池(CR2032)で一年間稼動可能 
• その名前のとおりBluetooth規格の一部 
– Bluetooth 4.0で統合さ...
仕様の進化 
WiFi 
• 802.11 2Mbps 
• 802.11b 11Mbps 
• 802.11g 54Mbps 
• 802.11n 135Mbps 
Bluetooth 
• v1.1 1Mbps 
• v2 3Mbps 
•...
BLEのターゲット 
• 特徴:低速、近接通信 
– ヘルスケア 
– フィットネス 
– センサー 
– ビーコン 
– 近接検知 
– 室内測位 
• スマートフォンの周辺機器 
↑最重要
Bluetooth Smartロゴ
Bluetooth Smart 
• Bluetooth Smart 
– GATT, Single Mode 
• Bluetooth Smart Ready 
– GATT, Dual Mode
アプリケーション
Fitbit 
• 活動量計:加速度センサ 
• スマートフォンと接続 
• サーバにアップロードして管理
Adidas: Smart Ball 
• シュートの速度・回転・距離のデータをモ 
バイルアプリに送るサッカーボール
iGrill 
• グリル調理用温度計
iBeacon 
• iOS 7で登場 
• BLEを使用した領域と近接検出 
• iOSに組み込まれており、電波でビーコン 
を検知すると登録したアプリを起動する
MLBスタジアムでの実例 
• NY Mets本拠地のMLBでの実験 
– http://japan.cnet.com/news/commentary/35037818/
PayPal Beacon
スマートフォン 
• iphoneがBLEに対応 
– iphone 4s以後の機種 
– iOS6以後で対応 
• Androidも一部の機種で対応 
– 新Nexus 7 
– Android 4.3以後のバージョンで対応
スマートフォンとサービス 
• スマートフォンのアプリと連携したサービス 
が多数登場している 
• サービスを前提としてデバイスが販売され 
ている 
– アプリの販売、有料サービス等 
– 例: SoftbankのFitBit
開発環境の紹介
TI SensorTag 
• TI社のBLEデモボード 
– CC2541チップ+各種センサー 
• 8bit MCU 8051 
– デバイスは安価 
– ファーム開発 
• JTAGで書き換え可能 
• IAR Embedded Work...
BLE112A 
• BlueGiga社のBLEモジュール 
– チップはTI CC2540 
• BG-Script言語で開発可能 
– 無償で利用可能 
• シリアルとして利用可能
Laird BL600 
• smartBASICで開発が可能 
– 中はNordic Semiconductor社のSoC 
– 高性能(ARM-CortexM0) 
• 開発キットは安価(1.6万)
Konashi 
• ユカイ工学 
– iphone/iosのためのフィジカルコンピューティン 
グツールという位置づけ 
– 中身はミツミのWML-C69 
• ios用SDK 
– Objective-C/JavaScriptで開発可能 
...
CC2540DK-Mini 
• TI社CC2540 Mini Development Kit 
– FOBデバイス 
– CC2540 USBドングル 
– CC Debugger
Packet Sniffer 
• TI社
iphoneアプリ 
• TI SensorTag 
– TI社デバイス向け 
– 無料
iphoneアプリ 
• LightBlue 
– 汎用アプリ 
– 任意の参照&書込可能 
– Peripheral(デバイス)もな 
れる
BLEの仕組み
参考文献 
• Bluetooth Low Energy - Robin Heydon 
• Bluetooth Core Specification v4.0
特徴 
• 消費電力を低減するための工夫 
– パケット長短い 
– アドバータイズの制約 
– クロック精度の要求が緩い
Low Power 
• コイン電池で一年稼動可能 
• 設計の工夫 
– パケットを短く 
– ビットレートは高めに 
– オーバーヘッドを小さく 
– ACK送出タイミングを融通 
– コネクション確立は同一チャネルで 
– スレーブの接続...
Advertising 
• ペリフェラルがセントラルと通信を確立する 
ためにパケットを送信する 
• 広告の名の通り、特定のあて先無しに送 
信する 
• セントラルはペリフェラルからの広告を受 
信して動作する 
• 消費電力低減の工夫
物理層 
• 2.4GHz帯ISMバンド 
– 他の目的にも利用されている 
– 2400-2480MHz 2MHz毎 40ch 
• Classicは1MHz毎に79ch 
• 周波数ホッピング(FH) 
– 周波数拡散(SS)の一種 
• ...
BLEの通信トポロジー 
• スター型構成 
– Central 
– Peripheral 
• Classicと違い非対称 
C 
P 
P 
P 
C
デバイスの種類 
• Bluetooth Classic 
– 従来(v3以前)のBluetooth仕様による通信 
• Single Mode 
– BLEのみ動作する 
• Dual Mode 
– BLEとClassicどちらも対応可能
通信の可否 
Single-Mode Dual-Mode Classic 
Single-Mode LE LE Not Available 
Dual-Mode LE Classic Classic 
Classic Not Available...
App 
Host 
Controller 
アーキテクチャ 
Application 
Generic Access Profile 
Generic Attribute Profile 
Attribute Protocol Securit...
Single Chip Solution 
Chip 
Application 
Host 
Controller
Two-Chip Solution 
Chip 
Chip 
Application 
Host 
Chip 
Application 
Host 
Controller Controller 
Chip
Three-Chip Solution 
Chip 
Chip 
Chip 
Application 
Host 
Controller
チャネル 
• 3ch: Advertising(37-39) 
– 広告のみに使用するチャネル 
– Classicと異なり固定 
– WiFi等の周波数を避けて設定されている 
• 37ch: Data (0-36) 
– 広告以外のすべて...
周波数ホッピング 
• 一定時間毎にチャネル切替 
– 衝突が起きても大丈夫なように 
– Classicでは625us毎、BLEはもっと緩やかに 
• Fn+1 = (Fn + hop) mod 37 
– 5<= hop <= 16 
– ...
リンクレイヤステート 
Scanning 
Advertising Standby Initiating 
Connected 
Slave Master
パケットの種類 
• Advertising Packet 
– Adverting Channelで送られるパケット 
– 他のデバイスを見つける、または接続するた 
めに使用 
• Data Packet 
– その他のチャネルで送られるパ...
Packetの構造 
Preamble 
Access 
Address 
Header 
Length 
Data CRC
Advertising Packet 
Scanner Advertiser 
Advertising Packet 
Advertising Packet 
Advertising Packet 
Advertising Packet 
Ad...
Advertising 
• General Advertising 
– コネクション可能デバイス 
• Direct Advertising 
– 即座に接続する場合に使用 
• Nonconnectable Adertising 
– デ...
AdvertiseとConnection 
Initiator 
Master 
Advertiser 
Slave 
ADV_IND 
CONNECT_REQ 
Data Packet 
Data Packet 
Data Packet 
D...
スキャニング 
• Passive Scanning 
• Active Scanning
Attributeの概念 
• BLEでやりとりするデータは「属性」 
Battery Level 
Tx Power 
Alert Level 
37% 
0dBm 
Low 
Device Name “Proximity Tag” 
Tem...
Attribute:ClientとServer 
• クライアントは、サーバの保持するアトリ 
ビュートを読み書きする 
Client Server 
Battery Level 
Tx Power 
Alert Level 
37% 
0dB...
Attributeの操作 
• 読み出し(C→S) 
– ID(UUID)を指定して値を読み出し 
• 書き込み(C→S) 
– ID(UUID)を指定して値を書き込み 
• 通知(S→C) 
– 値の変更があったことを通知
Attribute詳細 
Attribute Handle Attribute Type Attribute Value 
2 octet 2 / 16 octet 0-512 octet
Attribute詳細 
• Attribute Handle 
– 2 octet: 0x0001 ~ 0xffff 
• Attribute Type 
– UUID: short(2 octet) or full(16 octet)
UUID 
• 16bitまたは128bitの識別子 
• Base UUID 
– 00000000-0000-1000-8000-00805F9B34FB 
• Short UUID (16bit) 
– 2A01 
• Full UUID...
UUIDグループ 
• 0x1800 - 0x26ff Service UUIDs 
• 0x2700 - 0x27ff Units 
• 0x2800 - 0x28ff Attribute Types 
• 0x2900 - 0x29ff C...
Attribute Database 
Attribute Handle Attribute Type Attribute Value 
0x0001 Primary Service GAP Service 
0x0002 Characteri...
Attribute Permissions 
• Readable 
• Writable 
• Readable and Writable 
• Authentication required 
• No authentication req...
Attributeへのアクセス 
• Find Requests 
• Read Request 
• Write Request 
• Write Command 
• Notification 
• Indication
Attribute Protocol(1) 
Client Server 
ATT Request 
ATT Response 
Request 
Client Server 
ATT Command 
Command
Attribute Protocol(2) 
Client Server 
ATT Indication 
ATT Confirmation 
Indication 
Client Server 
ATT Notification 
Notif...
Attribute Protocol Opcode 
Exchange MTU Request 0x02 
Find Information Request 0x04 
Find By Type Value Request 0x06 
Read...
GATT 
• Generic ATTribute Profile
実習環境
デバイス 
• Texas Instruments社 BLE Sensor Tag 
• コイン電池 
• ボタン(2+1) 
• センサ 
– 放射温度計 
– 気圧計 
– 加速度 
– 地磁気 
– ジャイロ
SensorTag 
• 各種センサーを搭載 
http://makezine.com/2013/04/18/teardown-of-the-ti-sensortag/
OSとハードウェア 
• OS: Linuxを使用します 
– ディストリビューション: Ubuntu 13.04 
– 仮想環境内で使用します 
• ハードウェア 
– PC: Windows 8.0 
– Bluetooth USBアダプタ
仮想PCの利用 
• 仮想PCに関する固有の操作があります 
– 電源操作: ON/OFF/SUSPEND/RESUME 
– キーボード/マウスの解放 
– ネットワーク 
– USBデバイスの接続
電源操作 
• ツールボタンから操作
キーボード/マウス 
• 起動やシャットダウン中など、キーボードや 
マウスが自動的に解放されない場合があ 
ります 
• Ctrl-Shiftを押すと解放されます
Terminal 
• 左上アイコンをクリックしてTerminalと入力
ネットワーク 
• NATを使用します 
• ブラウザでインターネット接続を確認
USB Bluetoothの接続 
• 場合によりWindows側でUSBデバイスを無 
効に設定しておく必要があります 
• ツールボタンから接続を確認します
USB Bluetoothの確認 
• lsusbコマンドで確認
Bluez 
• Linux向けBluetoothプロトコルスタック 
• Bluez-X.Xを使用します 
• パッケージは予めインストール済み 
• ドキュメントは不足している 
– まとまった資料もあまり公開されていない 
– コマンドラ...
http://www.silex.jp/blog/wireless/assets_c/2012/12/bluez-large-164.html
Bluezのコマンド 
• hciconfig 
– アダプタ設定、広告等 
• hcitool 
– デバイスの発見、接続等 
• gatttool 
– デバイス接続、アトリビュートの取得、書込
hciconfig 
• インターフェースの動作確認 
– hci0として見えていること 
– エラーが出ないこと 
$ hc iconfig 
hci0: Type: BR/EDR Bus: USB 
BD Address: 00:1B:DC...
hcitool 
• アクティブスキャン 
$ sudo hcitool lescan 
LE Scan ... 
90:59:AF:0A:A8:A4 (unknown) 
90:59:AF:0A:A8:A4 SensorTag 
• パッシブ...
hcitool 
• 接続 
$ sudo hcitool lecc 90:59:AF:0A:A8:A4 
Connection handle 64 
• 切断 
$ sudo hcitool ledc 64
hcitool 
• ホワイトリスト 
$ sudo hcitool lewlsz 
White list size: 32 
$ sudo hcitool lewlclr 
$ sudo hcitool lewladd 90:59:AF:0A...
gatttool 
• インタラクティブにコマンド操作 
$ gatttool -I -b 90:59:AF:0A:A8:A4 
[ ][90:59:AF:0A:A8:A4][LE]> 
• 接続 
[ ][90:59:AF:0A:A8:A4]...
gatttool 
• primary service 
[CON][90:59:AF:0A:A8:A4][LE]> primary 
attr handle: 0x0001, end grp handle: 0x000b uuid: 0000...
primary service 
• attr handle: 0x0001, end grp handle: 0x000b 
uuid: 00001800-0000-1000-8000-00805f9b34fb 
– 0x0001 開始ハンド...
gatttool 
• characteristics 
[CON][90:59:AF:0A:A8:A4][LE]> characteristics 
handle: 0x0002, char properties: 0x02, char va...
characteristics 
handle: 0x0002, char properties: 0x02, char value handle: 
0x0003, uuid: 00002a00-0000-1000-8000-00805f9b...
ベンダー固有のUUID 
• 標準のCharacteristicsのBase 128bit UUID 
– 00000000-0000-1000-8000-00805f9b34fb 
• ベンダー独自のCharacteristicsは異なるBa...
アトリビュートの読み出し 
• char-read-hnd 
[CON][90:59:AF:0A:A8:A4][LE]> char-read-hnd 0x0003 
[CON][90:59:AF:0A:A8:A4][LE]> 
Characte...
アトリビュートの書き込み 
• char-write-req (応答有り) 
[CON][90:59:AF:0A:A8:A4][LE]> char-write-req 0x0026 0100 
[CON][90:59:AF:0A:A8:A4][...
Notification 
• デバイスからの通知を受ける 
– SensorTagの場合、0x0026に0100, 0x0029に01を書き込むとIR 
TemperatureのNotificationが毎秒出る 
[CON][90:59:A...
Exercise 
• 各センサーの値を読み出してみる 
– 加速度 
– ジャイロ 
– 地磁気 
– ボタン 
• Notificationとして受け取ってみる
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
Upcoming SlideShare
Loading in …5
×

Bluetoothl-Low-Energy入門講座-part1

17,785 views

Published on

BLEデバイスをLinuxから使って、基礎的なインターネット連携を経験する実習講座の資料です。

Published in: Engineering
  • Be the first to comment

Bluetoothl-Low-Energy入門講座-part1

  1. 1. 食関連産業IT化(機械化)講座 応用編 Bluetooth Low Energy入門講座 モノとアプリをつなげる基本技術 第一部 基礎 北海道ソフトウェア技術開発機構 2013年11月12日~13日
  2. 2. 講習のゴール • IoTのための無線技術としてBLEを捉え、 LinuxからBLEデバイスを制御しインター ネット連携まで経験してみる • BLE仕様の概略を知る • LinuxからBLEデバイスを扱う • センサーデータを取得する • クラウドにアップロードする
  3. 3. アイスブレイク • 自己紹介 • 経験の確認 – Liunx – エディタ – 言語 • グループ分け
  4. 4. 一日目の内容 • 午前 – BLE概要 – 事例紹介 – デモ(iPhone/SensorTag/Konashi) • 午後 – BLEの仕組み – SensorTag – Linuxからの操作
  5. 5. BLE概要
  6. 6. BLEとは • BLE = Bluetooth Low Energy – 超低消費電力な通信規格 – コイン電池(CR2032)で一年間稼動可能 • その名前のとおりBluetooth規格の一部 – Bluetooth 4.0で統合されて – しかし既存の仕様(Classic)とはかなり違う
  7. 7. 仕様の進化 WiFi • 802.11 2Mbps • 802.11b 11Mbps • 802.11g 54Mbps • 802.11n 135Mbps Bluetooth • v1.1 1Mbps • v2 3Mbps • v3 54Mbps • v4 0.3Mbps
  8. 8. BLEのターゲット • 特徴:低速、近接通信 – ヘルスケア – フィットネス – センサー – ビーコン – 近接検知 – 室内測位 • スマートフォンの周辺機器 ↑最重要
  9. 9. Bluetooth Smartロゴ
  10. 10. Bluetooth Smart • Bluetooth Smart – GATT, Single Mode • Bluetooth Smart Ready – GATT, Dual Mode
  11. 11. アプリケーション
  12. 12. Fitbit • 活動量計:加速度センサ • スマートフォンと接続 • サーバにアップロードして管理
  13. 13. Adidas: Smart Ball • シュートの速度・回転・距離のデータをモ バイルアプリに送るサッカーボール
  14. 14. iGrill • グリル調理用温度計
  15. 15. iBeacon • iOS 7で登場 • BLEを使用した領域と近接検出 • iOSに組み込まれており、電波でビーコン を検知すると登録したアプリを起動する
  16. 16. MLBスタジアムでの実例 • NY Mets本拠地のMLBでの実験 – http://japan.cnet.com/news/commentary/35037818/
  17. 17. PayPal Beacon
  18. 18. スマートフォン • iphoneがBLEに対応 – iphone 4s以後の機種 – iOS6以後で対応 • Androidも一部の機種で対応 – 新Nexus 7 – Android 4.3以後のバージョンで対応
  19. 19. スマートフォンとサービス • スマートフォンのアプリと連携したサービス が多数登場している • サービスを前提としてデバイスが販売され ている – アプリの販売、有料サービス等 – 例: SoftbankのFitBit
  20. 20. 開発環境の紹介
  21. 21. TI SensorTag • TI社のBLEデモボード – CC2541チップ+各種センサー • 8bit MCU 8051 – デバイスは安価 – ファーム開発 • JTAGで書き換え可能 • IAR Embedded Workbench • 開発環境は高価(試用は可)
  22. 22. BLE112A • BlueGiga社のBLEモジュール – チップはTI CC2540 • BG-Script言語で開発可能 – 無償で利用可能 • シリアルとして利用可能
  23. 23. Laird BL600 • smartBASICで開発が可能 – 中はNordic Semiconductor社のSoC – 高性能(ARM-CortexM0) • 開発キットは安価(1.6万)
  24. 24. Konashi • ユカイ工学 – iphone/iosのためのフィジカルコンピューティン グツールという位置づけ – 中身はミツミのWML-C69 • ios用SDK – Objective-C/JavaScriptで開発可能 • 各種拡張シールドも提供
  25. 25. CC2540DK-Mini • TI社CC2540 Mini Development Kit – FOBデバイス – CC2540 USBドングル – CC Debugger
  26. 26. Packet Sniffer • TI社
  27. 27. iphoneアプリ • TI SensorTag – TI社デバイス向け – 無料
  28. 28. iphoneアプリ • LightBlue – 汎用アプリ – 任意の参照&書込可能 – Peripheral(デバイス)もな れる
  29. 29. BLEの仕組み
  30. 30. 参考文献 • Bluetooth Low Energy - Robin Heydon • Bluetooth Core Specification v4.0
  31. 31. 特徴 • 消費電力を低減するための工夫 – パケット長短い – アドバータイズの制約 – クロック精度の要求が緩い
  32. 32. Low Power • コイン電池で一年稼動可能 • 設計の工夫 – パケットを短く – ビットレートは高めに – オーバーヘッドを小さく – ACK送出タイミングを融通 – コネクション確立は同一チャネルで – スレーブの接続動作頻度を下げる – 静的に実行可能な暗号化
  33. 33. Advertising • ペリフェラルがセントラルと通信を確立する ためにパケットを送信する • 広告の名の通り、特定のあて先無しに送 信する • セントラルはペリフェラルからの広告を受 信して動作する • 消費電力低減の工夫
  34. 34. 物理層 • 2.4GHz帯ISMバンド – 他の目的にも利用されている – 2400-2480MHz 2MHz毎 40ch • Classicは1MHz毎に79ch • 周波数ホッピング(FH) – 周波数拡散(SS)の一種 • 変調方式 – GFSK = Gaussian Frequency Shift Keying – シンボルレート1M、1bit/1シンボル
  35. 35. BLEの通信トポロジー • スター型構成 – Central – Peripheral • Classicと違い非対称 C P P P C
  36. 36. デバイスの種類 • Bluetooth Classic – 従来(v3以前)のBluetooth仕様による通信 • Single Mode – BLEのみ動作する • Dual Mode – BLEとClassicどちらも対応可能
  37. 37. 通信の可否 Single-Mode Dual-Mode Classic Single-Mode LE LE Not Available Dual-Mode LE Classic Classic Classic Not Available Classic Classic
  38. 38. App Host Controller アーキテクチャ Application Generic Access Profile Generic Attribute Profile Attribute Protocol Security Mgr Logical Link Control and Adaptation Protocol Host Controller Interface Link Layer Physical Layer GAP GATT ATT L2CAP HCI
  39. 39. Single Chip Solution Chip Application Host Controller
  40. 40. Two-Chip Solution Chip Chip Application Host Chip Application Host Controller Controller Chip
  41. 41. Three-Chip Solution Chip Chip Chip Application Host Controller
  42. 42. チャネル • 3ch: Advertising(37-39) – 広告のみに使用するチャネル – Classicと異なり固定 – WiFi等の周波数を避けて設定されている • 37ch: Data (0-36) – 広告以外のすべての通信を行なう – 周波数ホッピング:一定のルールでチャネルを 切り替える。妨害を防ぐ工夫。
  43. 43. 周波数ホッピング • 一定時間毎にチャネル切替 – 衝突が起きても大丈夫なように – Classicでは625us毎、BLEはもっと緩やかに • Fn+1 = (Fn + hop) mod 37 – 5<= hop <= 16 – 37は素数 • AFH (Adaptive Frequency Hopping) – 利用されているチャネルを検知して避ける
  44. 44. リンクレイヤステート Scanning Advertising Standby Initiating Connected Slave Master
  45. 45. パケットの種類 • Advertising Packet – Adverting Channelで送られるパケット – 他のデバイスを見つける、または接続するた めに使用 • Data Packet – その他のチャネルで送られるパケット – 接続されたデバイスがデータの送受信に使用
  46. 46. Packetの構造 Preamble Access Address Header Length Data CRC
  47. 47. Advertising Packet Scanner Advertiser Advertising Packet Advertising Packet Advertising Packet Advertising Packet Advertising Packet Advertising Packet
  48. 48. Advertising • General Advertising – コネクション可能デバイス • Direct Advertising – 即座に接続する場合に使用 • Nonconnectable Adertising – データをブロードキャストする、接続しない • Discoverable Advertising – 接続を受けるのみの場合に使用
  49. 49. AdvertiseとConnection Initiator Master Advertiser Slave ADV_IND CONNECT_REQ Data Packet Data Packet Data Packet Data Packet
  50. 50. スキャニング • Passive Scanning • Active Scanning
  51. 51. Attributeの概念 • BLEでやりとりするデータは「属性」 Battery Level Tx Power Alert Level 37% 0dBm Low Device Name “Proximity Tag” Temperature 37℃
  52. 52. Attribute:ClientとServer • クライアントは、サーバの保持するアトリ ビュートを読み書きする Client Server Battery Level Tx Power Alert Level 37% 0dBm Low Device Name “Proximity Tag”
  53. 53. Attributeの操作 • 読み出し(C→S) – ID(UUID)を指定して値を読み出し • 書き込み(C→S) – ID(UUID)を指定して値を書き込み • 通知(S→C) – 値の変更があったことを通知
  54. 54. Attribute詳細 Attribute Handle Attribute Type Attribute Value 2 octet 2 / 16 octet 0-512 octet
  55. 55. Attribute詳細 • Attribute Handle – 2 octet: 0x0001 ~ 0xffff • Attribute Type – UUID: short(2 octet) or full(16 octet)
  56. 56. UUID • 16bitまたは128bitの識別子 • Base UUID – 00000000-0000-1000-8000-00805F9B34FB • Short UUID (16bit) – 2A01 • Full UUID (128bit) – 00002A01-0000-1000-8000-00805F9B34FB
  57. 57. UUIDグループ • 0x1800 - 0x26ff Service UUIDs • 0x2700 - 0x27ff Units • 0x2800 - 0x28ff Attribute Types • 0x2900 - 0x29ff Characteristic Descriptors • 0x2a00 - 0x7fff Characteristic Types
  58. 58. Attribute Database Attribute Handle Attribute Type Attribute Value 0x0001 Primary Service GAP Service 0x0002 Characteristic Device Name 0x0003 Device Name “device name” 0x0004 Characteristic Appearance 0x0005 Appearance “DEVICE” 0x0006 Primary Service GATT Service
  59. 59. Attribute Permissions • Readable • Writable • Readable and Writable • Authentication required • No authentication required • No authorization • Authorization
  60. 60. Attributeへのアクセス • Find Requests • Read Request • Write Request • Write Command • Notification • Indication
  61. 61. Attribute Protocol(1) Client Server ATT Request ATT Response Request Client Server ATT Command Command
  62. 62. Attribute Protocol(2) Client Server ATT Indication ATT Confirmation Indication Client Server ATT Notification Notification
  63. 63. Attribute Protocol Opcode Exchange MTU Request 0x02 Find Information Request 0x04 Find By Type Value Request 0x06 Read By Type Request 0x08 Read Request 0x0a Read Brob Request 0x0c Read Multiple Request 0x0e Read By Group Type Request 0x10 Write Request 0x12 Write Command 0x52 Error Response 0x01 Exchange MTU Response 0x03 Find Information Response 0x05 Find By Type Value Response 0x07 Read By Type Response 0x09 Read Response 0x0b Read Brob Response 0x0d Read Multiple Response 0x0f Read By Group Type Response 0x11 Write Response 0x13 - - Handle Value Notification 0x1b Handle Value Indication 0x1d Handle Value Confirmation 0x1e
  64. 64. GATT • Generic ATTribute Profile
  65. 65. 実習環境
  66. 66. デバイス • Texas Instruments社 BLE Sensor Tag • コイン電池 • ボタン(2+1) • センサ – 放射温度計 – 気圧計 – 加速度 – 地磁気 – ジャイロ
  67. 67. SensorTag • 各種センサーを搭載 http://makezine.com/2013/04/18/teardown-of-the-ti-sensortag/
  68. 68. OSとハードウェア • OS: Linuxを使用します – ディストリビューション: Ubuntu 13.04 – 仮想環境内で使用します • ハードウェア – PC: Windows 8.0 – Bluetooth USBアダプタ
  69. 69. 仮想PCの利用 • 仮想PCに関する固有の操作があります – 電源操作: ON/OFF/SUSPEND/RESUME – キーボード/マウスの解放 – ネットワーク – USBデバイスの接続
  70. 70. 電源操作 • ツールボタンから操作
  71. 71. キーボード/マウス • 起動やシャットダウン中など、キーボードや マウスが自動的に解放されない場合があ ります • Ctrl-Shiftを押すと解放されます
  72. 72. Terminal • 左上アイコンをクリックしてTerminalと入力
  73. 73. ネットワーク • NATを使用します • ブラウザでインターネット接続を確認
  74. 74. USB Bluetoothの接続 • 場合によりWindows側でUSBデバイスを無 効に設定しておく必要があります • ツールボタンから接続を確認します
  75. 75. USB Bluetoothの確認 • lsusbコマンドで確認
  76. 76. Bluez • Linux向けBluetoothプロトコルスタック • Bluez-X.Xを使用します • パッケージは予めインストール済み • ドキュメントは不足している – まとまった資料もあまり公開されていない – コマンドラインヘルプが頼り
  77. 77. http://www.silex.jp/blog/wireless/assets_c/2012/12/bluez-large-164.html
  78. 78. Bluezのコマンド • hciconfig – アダプタ設定、広告等 • hcitool – デバイスの発見、接続等 • gatttool – デバイス接続、アトリビュートの取得、書込
  79. 79. hciconfig • インターフェースの動作確認 – hci0として見えていること – エラーが出ないこと $ hc iconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:1B:DC:06:6E:E6 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING PSCAN RX bytes:1712 acl:44 sco:0 events:106 errors:0 TX bytes:2393 acl:44 sco:0 commands:48 errors:0
  80. 80. hcitool • アクティブスキャン $ sudo hcitool lescan LE Scan ... 90:59:AF:0A:A8:A4 (unknown) 90:59:AF:0A:A8:A4 SensorTag • パッシブスキャン $ sudo hcitool lescan --passive LE Scan ... 90:59:AF:0A:A8:A4 (unknown)
  81. 81. hcitool • 接続 $ sudo hcitool lecc 90:59:AF:0A:A8:A4 Connection handle 64 • 切断 $ sudo hcitool ledc 64
  82. 82. hcitool • ホワイトリスト $ sudo hcitool lewlsz White list size: 32 $ sudo hcitool lewlclr $ sudo hcitool lewladd 90:59:AF:0A:A8:A4 $ sudo hcitool lewlrm 90:59:AF:0A:A8:A4 •接続 $ sudo hcitool lecc --white Connection handle 64
  83. 83. gatttool • インタラクティブにコマンド操作 $ gatttool -I -b 90:59:AF:0A:A8:A4 [ ][90:59:AF:0A:A8:A4][LE]> • 接続 [ ][90:59:AF:0A:A8:A4][LE]> connect [CON][90:59:AF:0A:A8:A4][LE]>
  84. 84. gatttool • primary service [CON][90:59:AF:0A:A8:A4][LE]> primary attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb attr handle: 0x0010, end grp handle: 0x0022 uuid: 0000180a-0000-1000-8000-00805f9b34fb attr handle: 0x0023, end grp handle: 0x002a uuid: f000aa00-0451-4000-b000-000000000000 attr handle: 0x002b, end grp handle: 0x0035 uuid: f000aa10-0451-4000-b000-000000000000 attr handle: 0x0036, end grp handle: 0x003d uuid: f000aa20-0451-4000-b000-000000000000 attr handle: 0x003e, end grp handle: 0x0048 uuid: f000aa30-0451-4000-b000-000000000000 attr handle: 0x0049, end grp handle: 0x0054 uuid: f000aa40-0451-4000-b000-000000000000 attr handle: 0x0055, end grp handle: 0x005c uuid: f000aa50-0451-4000-b000-000000000000 attr handle: 0x005d, end grp handle: 0x0061 uuid: 0000ffe0-0000-1000-8000-00805f9b34fb attr handle: 0x0062, end grp handle: 0x0068 uuid: f000aa60-0451-4000-b000-000000000000 attr handle: 0x0069, end grp handle: 0x0073 uuid: f000ccc0-0451-4000-b000-000000000000 attr handle: 0x0074, end grp handle: 0xffff uuid: f000ffc0-0451-4000-b000-000000000000 [CON][90:59:AF:0A:A8:A4][LE]>
  85. 85. primary service • attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb – 0x0001 開始ハンドル – 0x000b 終了ハンドル – 0x1800 Generic Access • 割り当てられたService番号は下記に掲載 • https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx • 0x1800 Generic Access • 0x1801 Generic Attribute • 0x180a Device Information
  86. 86. gatttool • characteristics [CON][90:59:AF:0A:A8:A4][LE]> characteristics handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb handle: 0x0006, char properties: 0x0a, char value handle: 0x0007, uuid: 00002a02-0000-1000-8000-00805f9b34fb handle: 0x0008, char properties: 0x08, char value handle: 0x0009, uuid: 00002a03-0000-1000-8000-00805f9b34fb handle: 0x000a, char properties: 0x02, char value handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb handle: 0x000d, char properties: 0x20, char value handle: 0x000e, uuid: 00002a05-0000-1000-8000-00805f9b34fb
  87. 87. characteristics handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb •value handle: 0x00030x2a00=DEVICE NAME •0x2a00は、DEVICE NAME CHARACTERISTICSを意味している •割り当てられた番号はBluetooth Core Specification v4.0 もしくは、下記ページに記載 •https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx
  88. 88. ベンダー固有のUUID • 標準のCharacteristicsのBase 128bit UUID – 00000000-0000-1000-8000-00805f9b34fb • ベンダー独自のCharacteristicsは異なるBase UUID – TI : F0000000-0451-4000-B000-000000000000 • TI Sensor Tagについては下記に記載されている – http://processors.wiki.ti.com/index.php/SensorTag_User_Guide
  89. 89. アトリビュートの読み出し • char-read-hnd [CON][90:59:AF:0A:A8:A4][LE]> char-read-hnd 0x0003 [CON][90:59:AF:0A:A8:A4][LE]> Characteristic value/descriptor: 54 49 20 42 4c 45 20 53 65 6e 73 6f 72 20 54 61 67 [CON][90:59:AF:0A:A8:A4][LE]> = TI BLE Sensor Tag
  90. 90. アトリビュートの書き込み • char-write-req (応答有り) [CON][90:59:AF:0A:A8:A4][LE]> char-write-req 0x0026 0100 [CON][90:59:AF:0A:A8:A4][LE]> Characteristic value was written successfully [CON][90:59:AF:0A:A8:A4][LE]> • char-write-cmd (応答無し) [CON][90:59:AF:0A:A8:A4][LE]> char-write-cmd 0x0026 0100 [CON][90:59:AF:0A:A8:A4][LE]> • 注意: 16進数指定で<handle>は0xが必要 <new value>には不要(付けるとエラー)
  91. 91. Notification • デバイスからの通知を受ける – SensorTagの場合、0x0026に0100, 0x0029に01を書き込むとIR TemperatureのNotificationが毎秒出る [CON][90:59:AF:0A:A8:A4][LE]> char-write-req 0x0026 0100 [CON][90:59:AF:0A:A8:A4][LE]> char-write-req 0x0029 01 Notification handle = 0x0025 value: 70 fe c0 0c [CON][90:59:AF:0A:A8:A4][LE]> Notification handle = 0x0025 value: 6c fe c0 0c [CON][90:59:AF:0A:A8:A4][LE]> Notification handle = 0x0025 value: 69 fe c0 0c [CON][90:59:AF:0A:A8:A4][LE]> Notification handle = 0x0025 value: 6a fe c0 0c
  92. 92. Exercise • 各センサーの値を読み出してみる – 加速度 – ジャイロ – 地磁気 – ボタン • Notificationとして受け取ってみる

×