20130902 btleハンズオンワークショップ

Preview:

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://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日月曜日

TI Sensor tag

IR temperature SensorHumidity SensorPressure SensorAccelerometerGyroscopeMagnetometer

http://www.ti.com/tool/cc2541dk-sensor

13年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日月曜日

Recommended