Upload
akihiro-uehara
View
1.678
Download
3
Embed Size (px)
DESCRIPTION
Citation preview
BluetoothLE体験講座(iOS):iOS開発者向け
ドリームコア 1F モバイル・コア9月2日
(合)わふう 上原 昭宏(有)トリガーデバイス 佐藤 忠彦
13年9月2日月曜日
目次
• Bluetooth Low Energyって?
• センサータグを使う
• iOSらしいBluetooth LEの使い方?
13年9月2日月曜日
サンプルコードのダウンロード
http://www.ti.com/tool/sensortag-sw
http://www.ti.com/ww/en/wireless_connectivity/sensortag/
13年9月2日月曜日
http://goo.gl/Sf3p7
13年9月2日月曜日
http://www.ti.com/tool/sensortag-sw
13年9月2日月曜日
http://www.ti.com/tool/sensortag-sw
13年9月2日月曜日
Bluetooth Low Energy
13年9月2日月曜日
Bluetoothの歴史
13年9月2日月曜日
Bluetoothの歴史
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
2009V3.0 High Speed
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
2009V3.0 High Speed
2010V4.0 Low Energy
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
2009V3.0 High Speed
2010V4.0 Low Energy
2004Bluetooth Low End Extension
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
2009V3.0 High Speed
2010V4.0 Low Energy
2004Bluetooth Low End Extension
2006Wibree
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
2009V3.0 High Speed
2010V4.0 Low Energy
2004Bluetooth Low End Extension
2006Wibree
2010V4.0 Low Energy
= 3.0 + LE
13年9月2日月曜日
Bluetoothの歴史
2007V2.1 EDR
2009V3.0 High Speed
2010V4.0 Low Energy
2004Bluetooth Low End Extension
2006Wibree
2010V4.0 Low Energy
= 3.0 + LE
Low Energy
13年9月2日月曜日
Bluetooth Low Energyとは
13年9月2日月曜日
Bluetooth Low Energyとは
13年9月2日月曜日
Bluetooth Low Energyとは
13年9月2日月曜日
Bluetooth SMART ロゴ
• SMART / SMART READY
13年9月2日月曜日
iOSとBTLE• iOSデバイスのBluetooth4対応
• iPhone4S (2011年10月発売) 以降のApple社製品 、iOS5 / iOS6
• BTLE対応アプリのストア承認• Made for iPhone(MFi) NDA締結不要 (ロゴ掲載には必要)
• ハードウェアの提出は求められるかも
• 開発環境• CoreBluetoothフレームワーク (一般開発者が使える)
• 従来BTをつかった独自機器開発• MFi必須。
13年9月2日月曜日
BTLEの使いどころ
13年9月2日月曜日
BTLEの使いどころ
13年9月2日月曜日
BTLEの使いどころ
13年9月2日月曜日
BTLEの使いどころ
13年9月2日月曜日
BTLEの使いどころ• 運動、健康、近接...
13年9月2日月曜日
BTLEの使いどころ• 運動、健康、近接...
• Appcessory
13年9月2日月曜日
BTLEの使いどころ• 運動、健康、近接...
• Appcessory
• ハード、スマフォ、ネット
13年9月2日月曜日
BTLEの使いどころ• 運動、健康、近接...
• Appcessory
• ハード、スマフォ、ネット• ぶっちゃけ
13年9月2日月曜日
BTLEの使いどころ• 運動、健康、近接...
• Appcessory
• ハード、スマフォ、ネット• ぶっちゃけ• ハードメーカがスマフォで売れるぜは死亡フラグ
13年9月2日月曜日
BTLEの使いどころ• 運動、健康、近接...
• Appcessory
• ハード、スマフォ、ネット• ぶっちゃけ• ハードメーカがスマフォで売れるぜは死亡フラグ
• 異世界にようこそ
13年9月2日月曜日
Sensor Tagで遊ぶ
13年9月2日月曜日
http://goo.gl/d3HUL
13年9月2日月曜日
TI Sensor tag
IR temperature SensorHumidity SensorPressure SensorAccelerometerGyroscopeMagnetometer
http://www.ti.com/tool/cc2541dk-sensor
13年9月2日月曜日
http://goo.gl/Sf3p713年9月2日月曜日
Bluetoothの設定
13年9月2日月曜日
Bluetoothの設定
13年9月2日月曜日
Bluetoothの設定
設定→Bluetooth13年9月2日月曜日
Bluetoothの設定
設定→Bluetooth13年9月2日月曜日
Bluetoothの設定
設定→Bluetooth13年9月2日月曜日
13年9月2日月曜日
13年9月2日月曜日
13年9月2日月曜日
SensorTagを使うアプリ
13年9月2日月曜日
サンプルコードを開く
• Sensor Example Source Code 1.0.0
13年9月2日月曜日
実行する
1. MacにiPhone(iPod touch)を接続2. 左上のプルダウンメニューから、ターゲットに実機を選択3. Runアイコンを押して動かす
13年9月2日月曜日
CoreBluetoothを使う
13年9月2日月曜日
CBフレームワーク• 通信手順を抽象化
• 発見
• 接続 / 切断
• 読み書き
• 通知
13年9月2日月曜日
フレームワークの追加
13年9月2日月曜日
フレームワークの追加
13年9月2日月曜日
フレームワークの追加
13年9月2日月曜日
フレームワークの追加
#import "KeyFobController.h"#import <CoreBluetooth/CoreBluetooth.h>
@interface KeyFobController() <CBCentralManagerDelegate, CBPeripheralDelegate> { CBCentralManager *_centralManager;
13年9月2日月曜日
フレームワークの追加
• CoreBluetooth.frameworkを追加
• #import <CoreBluetooth/CoreBluetooth.h>
• CBCentralManagerDelegate, CBPeripheralDelegate を実装
#import "KeyFobController.h"#import <CoreBluetooth/CoreBluetooth.h>
@interface KeyFobController() <CBCentralManagerDelegate, CBPeripheralDelegate> { CBCentralManager *_centralManager;
13年9月2日月曜日
BTの状態変化
13年9月2日月曜日
deviceSelector.m 121行 BTサポート,On/Off設定CBCentralManager delegate
deviceSelector.m 25行 CBCentralManagerインスタンス
13年9月2日月曜日
ペリフェラルの発見
13年9月2日月曜日
ネットワーク・トポロジ• スター型• 接続数の上限がない• スキャッタネットはない• ペリフェラルが同時に2つのセントラルと接続セントラル
(Central)
ペリフェラル(Peripheral)
13年9月2日月曜日
ネットワーク・トポロジ• スター型• 接続数の上限がない• スキャッタネットはない• ペリフェラルが同時に2つのセントラルと接続セントラル
(Central)
ペリフェラル(Peripheral)
13年9月2日月曜日
ネットワーク・トポロジ• スター型• 接続数の上限がない• スキャッタネットはない• ペリフェラルが同時に2つのセントラルと接続セントラル
(Central)
ペリフェラル(Peripheral)
✗13年9月2日月曜日
ペリフェラルの発見
• アドバタイズメント
• パケットを送信
• 20ミリ秒~1.3秒周期
• デバイス名などの情報
Ad
Ad
Ad
Ad
13年9月2日月曜日
モデル
セントラル(Central)
ペリフェラル(Peripheral)
CBCentralManager
CBPeripheral
1. CBCentralManagerのインスタンスを作る2. CBPeriperalを見つけて取得
13年9月2日月曜日
deviceSelector.m 134行 ペリフェラルの発見、接続開始
13年9月2日月曜日
deviceSelector.m 134行 ペリフェラルの発見、接続開始
//UUIDはnullかも
13年9月2日月曜日
deviceSelector.m 134行 ペリフェラルの発見、接続開始
//UUIDはnullかも
//接続
13年9月2日月曜日
deviceSelector.m 134行 ペリフェラルの発見、接続開始
//必ずretain
//UUIDはnullかも
//接続
13年9月2日月曜日
接続と切断
13年9月2日月曜日
SensorTagApplicationViewController.m104行 delegateの再設定、接続
13年9月2日月曜日
SensorTagApplicationViewController.m104行 delegateの再設定、接続
//接続
13年9月2日月曜日
サービスとキャラクタリスティクスそしてプロファイル
13年9月2日月曜日
プロトコルスタックApplications
GATT
ATT
L2CAP
PHY
Link Layer
Applications
Core Bluetooth
Applications
XPC
BTserver
13年9月2日月曜日
プロトコルスタックApplicationsCore Bluetooth
GATT
ATT
L2CAP
PHY
Link Layer
ApplicationsApplications
XPC
BTserver
サービス=クラスキャラクタリスティクス
=プロパティ
13年9月2日月曜日
プロトコルスタックApplicationsCore Bluetooth
GATT
ATT
L2CAP
PHY
Link Layer
ApplicationsApplications
XPC
BTserver
• キャラクタリスティクス• 制御/動作指定
• センサー値/外界の状態
• (装置の)動作状態/内部状態
サービス=クラスキャラクタリスティクス
=プロパティ
13年9月2日月曜日
プロファイルの実装ApplicationsCore Bluetooth
GATT
ATT
L2CAP
PHY
Link Layer
ApplicationsApplications • プロファイルがアプリ側
• 任意の振る舞い、OK
• すべてがアプリの管理下• 発見
• 接続/切断
• 読み書き
• iOSはいっさい関係してこない13年9月2日月曜日
プロファイルの実装ApplicationsCore Bluetooth
GATT
ATT
L2CAP
PHY
Link Layer
ApplicationsApplications
XPC
BTserver
• プロファイルがアプリ側
• 任意の振る舞い、OK
• すべてがアプリの管理下• 発見
• 接続/切断
• 読み書き
• iOSはいっさい関係してこない13年9月2日月曜日
プロファイルの実装ApplicationsCore Bluetooth
GATT
ATT
L2CAP
PHY
Link Layer
ApplicationsApplications
XPC
BTserver
• プロファイルがアプリ側
• 任意の振る舞い、OK
• すべてがアプリの管理下• 発見
• 接続/切断
• 読み書き
• iOSはいっさい関係してこない13年9月2日月曜日
CBフレームワークの使い方:サービスとキャラクタリスティクスの
リスティング
13年9月2日月曜日
SensorTagApplicationViewController.m419行 接続完了、サービスを検索
434行 キャラクタリスティクスを検索
427行 キャラクタリスティクスを発見13年9月2日月曜日
読み込み
13年9月2日月曜日
BLEUtility.m57行 ペリフェラルのreadValueForCharacteristic:
SensorTagApplicationViewController.m443行 値の更新
13年9月2日月曜日
BLEUtility.m57行 ペリフェラルのreadValueForCharacteristic:
//非同期
SensorTagApplicationViewController.m443行 値の更新
13年9月2日月曜日
BLEUtility.m93行 setNotifyValue: forCharacteristic
SensorTagApplicationViewController.m439行 値更新の通知
13年9月2日月曜日
BLEUtility.m93行 setNotifyValue: forCharacteristic
//通知ON
SensorTagApplicationViewController.m439行 値更新の通知
13年9月2日月曜日
書き込み
13年9月2日月曜日
BLEUtility.m28行 writeValue:type: レスポンス あり/なし
SensorTagApplicationViewController.m571行 書き込み完了の通知
13年9月2日月曜日
BLEUtility.m28行 writeValue:type: レスポンス あり/なし
//非同期
SensorTagApplicationViewController.m571行 書き込み完了の通知
13年9月2日月曜日
情報源• 目的
• 基礎知識、入門知識
• 最新情報の収集
• 分野
• ハードウェア
• アプリ
• サービス13年9月2日月曜日
Appleからの情報• https://developer.apple.com/videos/
wwdc/2012/
• Session 703: Core Bluetooth 101
• Session 705 Advanced Core Bluetooth
• Apple Bluetooth Mailing list
• https://lists.apple.com/mailman/listinfo/bluetooth-dev
13年9月2日月曜日
サービス、動向
• Facebook BTLEグループ
• https://www.facebook.com/groups/563064710384459/
• Kickstarter ?
• http://www.kickstarter.com/discover/recently-launched
13年9月2日月曜日
半導体会社の情報• Texus Instruments社
• http://www.tij.co.jp/product/jp/cc2540
• http://processors.wiki.ti.com/index.php/Category:BluetoothLE?DCMP=blestack&HQS=ble-wiki
• フォーラム• Nordic Semiconductor社
• https://www.nordicsemi.com
• BlueGiga
• http://www.bluegiga.com
13年9月2日月曜日
書籍• AppleのBluetoothアクセサリ設計指針
• Bluetooth Low Energy Handbook
• http://www.amazon.co.jp/Bluetooth-Low-Energy-Developers-ebook/dp/B009XDA1G8/
• Building iPhone and iPad Electronic Projects
• http://shop.oreilly.com/product/0636920029281.do
• Bluetooth4 Core Specificaiton (辞書的に)
13年9月2日月曜日