SlideShare a Scribd company logo
Nordic nRF51822 で BLE してみました 2
● 前回は、サンプルを動たところまで。
●
今回は Bluetooth の仕様書も見ながらやっていこう。
●
現在 (2015/05/31) の最新は、コアバージョン 4.2
● https://www.bluetooth.org/ja-jp/specification/adopted-specifications
●
残念ながら、英語版のみです。
プロファイルとサービス
● Bluetooth で「プロファイル」という言葉をよく
使うが、これはデータの構造ややりとりの仕方を
決めたもの。
●
「サービス」もだいたいそんなもの。
●
私の中では、「サービス」を組み合わせたりしたのが
「プロファイル」になってる。
●
例えば「 Alert Notification Profile 」 (ANP) というプロ
ファイルがあるのだが、それは「 Alert Notification
Service 」 (ANS) を使っている。
● Bluetooth SIG ではみんな使いそうなプロファイ
ルやサービスを定義しているが、自分で機器を作
るならサービスを自作することも多々ある。
役割 (GATT)
● サービスは、だいたい「機能を提供する方」と「受ける方」に役
割が分かれる。
●
「 role 」という言葉が仕様書によく出てくる。
●
こちらは、 Alert Notification Profile の Role
●
ここは GATT レベルでの役割
●
「 Client 」と「 Server 」と呼んでいるようだ
役割 (GAP)
●
GAP というものがある
●
ここでの Role は、 BLE として果たす役目みたいなイメージ
●
Broadcaster
●
SoftDevice のS110/S130
●
いわゆる「ビーコン専用端末」がこれになる。 Advertising するだけ。
●
Observer
●
SoftDevice のS120/S130
●
無線を受信するだけで、送信しない。
●
Peripheral
● SoftDevice のS110/S130
●
Broadcaster の機能に、接続する機能がある。 Profile やService を持つなら、これ。
●
Central
●
SoftDevice のS120/S130
●
Peripheral の接続先がCentral になる。
役割 (L2CAP)
● BLE の接続管理というところか
●
接続してしまえば、 GATT とかの話になる
●
接続前は、 GAP とか L2CAP とかの話になる
●
ここでの Role は 2 つ
● Slave
● GAP の "Broadcaster" や "Peripheral" にあたる
● 無線を聞く方
● Master
● GAP の "Central" にあたる
●
無線を出し始める方
接続前の状態
●
接続するまでは、 GAP や L2CAP が主役
●
これは、 L2CAP の状態遷移図
●
Master と Slave で経路が違う
接続まで - Master
● Master が接続するまでは、こういう経路になる
● Scanning で Peripheral を探す
●
見つかったら Initiating で
接続するかどうか試す
● OK なら接続する
接続まで - Slave
● Slave が接続するまでは、こういう経路になる
● Advertising して、 Master に
見つけてもらう
● Master から接続要求が来て、
OK なら接続する
Advertising PDU(Packet Data Unit)
●
Advertising は 4 タイプある
● Core_V4.2 - Vol.6 - Part B – 2.3.1 Advertising PDUs
● ADV_IND : 「接続可能」「相手不特定」「 SCAN_REQ 可能」
●
接続する場合はこれを使う
● ADV_DIRECT_IND : 「接続可能」「相手特定」「 SCAN_REQ 不可」
●
どこかで推奨しないという記述を見た気がするのだが、見つけられなかった。。
● ADV_NONCONN_IND : 「接続不可」「相手不特定」「 SCAN_REQ 不可」
●
ビーコン端末などは、これだろう。
● ADV_SCAN_IND : 「接続不可」「相手不特定」「 SCAN_REQ 可能」
●
SCAN_REQ コマンドを受信すると、 SCAN_RSP 応答で情報を返す。
●
使い道がわからない・・・。
●
データ部として 31byte まで使える。
● ADV_DIRECT_IND は違うが、普通使わなさそうなので省略
Advertising のデータ
● 左がヘッダ、右がデータ部の構造
● PDU Type : 前ページの xxx_IND
● TxAdd : AdvA のアドレス種別
● 0...public address / 1...random address
● RxAdd : 未使用?
●
実際に送信されているデータ例 (TI SensorTag)
AdvData
●
AdvData は、 [Length][AD Type][Data] 、という構造
●
AD Type はネットにしかなさそうだ
● https://www.bluetooth.org/en-us/specification/assigned-numbers/generic-access-profile
●
上のデータは、 0x01 、つまり「 Flags 」というデータタイプ
●
参照先: Core Specification Supplement, Part A, section 1.3
●
iBeacon は 0xFF(Manufacturer Specific) にして、あとは好きに使っている
●
データタイプの説明は「コア仕様補完 (CSS) 」にある
●
現在 (2015/05/31) の最新は、 v5
●
0x05 の意味
●
bit0 : LE Limited Discoverable Mode
●
bit 2 : BR/EDR Not Supported
S110 で Advertising
● ble_advdata_set() で AdvData を設定する
● ble_advdata_t 構造体
● sd_ble_gap_adv_start() を呼ぶと Advertising を開始する
● ble_gap_adv_params_t 構造体
●
Advertising PDU の種類 (xxx_IND)
●
送信間隔
●
タイムアウト時間
● Advertising だけしたいなら、 ble_app_beacon サンプルがよい

More Related Content

What's hot

PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
NTT DATA Technology & Innovation
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
Takahiro Harada
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
shunki fujiwara
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
npsg
 
EVPN & VXLAN for Cloud Builders
EVPN & VXLAN for Cloud BuildersEVPN & VXLAN for Cloud Builders
EVPN & VXLAN for Cloud Builders
Juniper Networks (日本)
 
SHA-256を学ぼうとする
SHA-256を学ぼうとするSHA-256を学ぼうとする
SHA-256を学ぼうとする
Takeru Ujinawa
 
zshでコマンドライン履歴を活用する
zshでコマンドライン履歴を活用するzshでコマンドライン履歴を活用する
zshでコマンドライン履歴を活用する
Hideaki Miyake
 
InfiniBand on Debian
InfiniBand on DebianInfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
akira6592
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
CLARA ONLINE, Inc.
 
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
WESEEKWESEEK
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座
Brocade
 
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
NGINX, Inc.
 
NETCONFとYANGの話
NETCONFとYANGの話NETCONFとYANGの話
NETCONFとYANGの話
Masakazu Asama
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
akira6592
 
HSM超入門講座
HSM超入門講座HSM超入門講座
HSM超入門講座
Hiroshi Nakamura
 
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催) ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
akira6592
 

What's hot (20)

PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
Paxos
PaxosPaxos
Paxos
 
Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)Introduction to OpenCL (Japanese, OpenCLの基礎)
Introduction to OpenCL (Japanese, OpenCLの基礎)
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
 
EVPN & VXLAN for Cloud Builders
EVPN & VXLAN for Cloud BuildersEVPN & VXLAN for Cloud Builders
EVPN & VXLAN for Cloud Builders
 
SHA-256を学ぼうとする
SHA-256を学ぼうとするSHA-256を学ぼうとする
SHA-256を学ぼうとする
 
zshでコマンドライン履歴を活用する
zshでコマンドライン履歴を活用するzshでコマンドライン履歴を活用する
zshでコマンドライン履歴を活用する
 
InfiniBand on Debian
InfiniBand on DebianInfiniBand on Debian
InfiniBand on Debian
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
 
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座
 
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
 
NETCONFとYANGの話
NETCONFとYANGの話NETCONFとYANGの話
NETCONFとYANGの話
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 
HSM超入門講座
HSM超入門講座HSM超入門講座
HSM超入門講座
 
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催) ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
 

More from Hirokuma Ueno

About FeliCa Lite-S
About FeliCa Lite-SAbout FeliCa Lite-S
About FeliCa Lite-S
Hirokuma Ueno
 
月刊NDEF 2013年12月号
月刊NDEF 2013年12月号月刊NDEF 2013年12月号
月刊NDEF 2013年12月号
Hirokuma Ueno
 
月刊NDEF 2013年8月号
月刊NDEF 2013年8月号月刊NDEF 2013年8月号
月刊NDEF 2013年8月号
Hirokuma Ueno
 
月刊NDEF 5月号
月刊NDEF 5月号月刊NDEF 5月号
月刊NDEF 5月号
Hirokuma Ueno
 
旅行カバンとNFC
旅行カバンとNFC旅行カバンとNFC
旅行カバンとNFC
Hirokuma Ueno
 
NDEF WriterとOSとPaSoRi
NDEF WriterとOSとPaSoRiNDEF WriterとOSとPaSoRi
NDEF WriterとOSとPaSoRi
Hirokuma Ueno
 
NDEF Writerを使ってみよう
NDEF Writerを使ってみようNDEF Writerを使ってみよう
NDEF Writerを使ってみよう
Hirokuma Ueno
 
月刊NDEF 2013年3月号(卒業号)
月刊NDEF 2013年3月号(卒業号)月刊NDEF 2013年3月号(卒業号)
月刊NDEF 2013年3月号(卒業号)
Hirokuma Ueno
 
月刊NDEF 2013年2月号(臨時号)
月刊NDEF 2013年2月号(臨時号)月刊NDEF 2013年2月号(臨時号)
月刊NDEF 2013年2月号(臨時号)
Hirokuma Ueno
 
月刊NDEF 2013年1月号
月刊NDEF 2013年1月号月刊NDEF 2013年1月号
月刊NDEF 2013年1月号
Hirokuma Ueno
 
MIFARE ClassicのAccess Conditions
MIFARE ClassicのAccess ConditionsMIFARE ClassicのAccess Conditions
MIFARE ClassicのAccess ConditionsHirokuma Ueno
 
FeliCa Liteの片側認証
FeliCa Liteの片側認証FeliCa Liteの片側認証
FeliCa Liteの片側認証Hirokuma Ueno
 
SNEPは大変だった
SNEPは大変だったSNEPは大変だった
SNEPは大変だったHirokuma Ueno
 
一人でもSNEP開発
一人でもSNEP開発一人でもSNEP開発
一人でもSNEP開発Hirokuma Ueno
 
NFCIP-1を斜め読み
NFCIP-1を斜め読みNFCIP-1を斜め読み
NFCIP-1を斜め読みHirokuma Ueno
 
SDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみるSDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみるHirokuma Ueno
 

More from Hirokuma Ueno (20)

About FeliCa Lite-S
About FeliCa Lite-SAbout FeliCa Lite-S
About FeliCa Lite-S
 
月刊NDEF 2013年12月号
月刊NDEF 2013年12月号月刊NDEF 2013年12月号
月刊NDEF 2013年12月号
 
月刊NDEF 2013年8月号
月刊NDEF 2013年8月号月刊NDEF 2013年8月号
月刊NDEF 2013年8月号
 
月刊NDEF 5月号
月刊NDEF 5月号月刊NDEF 5月号
月刊NDEF 5月号
 
旅行カバンとNFC
旅行カバンとNFC旅行カバンとNFC
旅行カバンとNFC
 
NDEF WriterとOSとPaSoRi
NDEF WriterとOSとPaSoRiNDEF WriterとOSとPaSoRi
NDEF WriterとOSとPaSoRi
 
NDEF Writerを使ってみよう
NDEF Writerを使ってみようNDEF Writerを使ってみよう
NDEF Writerを使ってみよう
 
月刊NDEF 2013年3月号(卒業号)
月刊NDEF 2013年3月号(卒業号)月刊NDEF 2013年3月号(卒業号)
月刊NDEF 2013年3月号(卒業号)
 
月刊NDEF 2013年2月号(臨時号)
月刊NDEF 2013年2月号(臨時号)月刊NDEF 2013年2月号(臨時号)
月刊NDEF 2013年2月号(臨時号)
 
月刊NDEF 2013年1月号
月刊NDEF 2013年1月号月刊NDEF 2013年1月号
月刊NDEF 2013年1月号
 
MIFARE ClassicのAccess Conditions
MIFARE ClassicのAccess ConditionsMIFARE ClassicのAccess Conditions
MIFARE ClassicのAccess Conditions
 
FeliCa Liteの片側認証
FeliCa Liteの片側認証FeliCa Liteの片側認証
FeliCa Liteの片側認証
 
SNEPは大変だった
SNEPは大変だったSNEPは大変だった
SNEPは大変だった
 
NFC切手
NFC切手NFC切手
NFC切手
 
NFCの汎化
NFCの汎化NFCの汎化
NFCの汎化
 
一人でもSNEP開発
一人でもSNEP開発一人でもSNEP開発
一人でもSNEP開発
 
NFCIP-1を斜め読み
NFCIP-1を斜め読みNFCIP-1を斜め読み
NFCIP-1を斜め読み
 
らくがき
らくがきらくがき
らくがき
 
NFCテルミン
NFCテルミンNFCテルミン
NFCテルミン
 
SDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみるSDK for NFC Starter Kit(2) 使ってみる
SDK for NFC Starter Kit(2) 使ってみる
 

Recently uploaded

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 

Recently uploaded (10)

Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 

Nordic nRF51822でBLEしてみました 2

  • 1. Nordic nRF51822 で BLE してみました 2 ● 前回は、サンプルを動たところまで。 ● 今回は Bluetooth の仕様書も見ながらやっていこう。 ● 現在 (2015/05/31) の最新は、コアバージョン 4.2 ● https://www.bluetooth.org/ja-jp/specification/adopted-specifications ● 残念ながら、英語版のみです。
  • 2. プロファイルとサービス ● Bluetooth で「プロファイル」という言葉をよく 使うが、これはデータの構造ややりとりの仕方を 決めたもの。 ● 「サービス」もだいたいそんなもの。 ● 私の中では、「サービス」を組み合わせたりしたのが 「プロファイル」になってる。 ● 例えば「 Alert Notification Profile 」 (ANP) というプロ ファイルがあるのだが、それは「 Alert Notification Service 」 (ANS) を使っている。 ● Bluetooth SIG ではみんな使いそうなプロファイ ルやサービスを定義しているが、自分で機器を作 るならサービスを自作することも多々ある。
  • 3. 役割 (GATT) ● サービスは、だいたい「機能を提供する方」と「受ける方」に役 割が分かれる。 ● 「 role 」という言葉が仕様書によく出てくる。 ● こちらは、 Alert Notification Profile の Role ● ここは GATT レベルでの役割 ● 「 Client 」と「 Server 」と呼んでいるようだ
  • 4. 役割 (GAP) ● GAP というものがある ● ここでの Role は、 BLE として果たす役目みたいなイメージ ● Broadcaster ● SoftDevice のS110/S130 ● いわゆる「ビーコン専用端末」がこれになる。 Advertising するだけ。 ● Observer ● SoftDevice のS120/S130 ● 無線を受信するだけで、送信しない。 ● Peripheral ● SoftDevice のS110/S130 ● Broadcaster の機能に、接続する機能がある。 Profile やService を持つなら、これ。 ● Central ● SoftDevice のS120/S130 ● Peripheral の接続先がCentral になる。
  • 5. 役割 (L2CAP) ● BLE の接続管理というところか ● 接続してしまえば、 GATT とかの話になる ● 接続前は、 GAP とか L2CAP とかの話になる ● ここでの Role は 2 つ ● Slave ● GAP の "Broadcaster" や "Peripheral" にあたる ● 無線を聞く方 ● Master ● GAP の "Central" にあたる ● 無線を出し始める方
  • 6. 接続前の状態 ● 接続するまでは、 GAP や L2CAP が主役 ● これは、 L2CAP の状態遷移図 ● Master と Slave で経路が違う
  • 7. 接続まで - Master ● Master が接続するまでは、こういう経路になる ● Scanning で Peripheral を探す ● 見つかったら Initiating で 接続するかどうか試す ● OK なら接続する
  • 8. 接続まで - Slave ● Slave が接続するまでは、こういう経路になる ● Advertising して、 Master に 見つけてもらう ● Master から接続要求が来て、 OK なら接続する
  • 9. Advertising PDU(Packet Data Unit) ● Advertising は 4 タイプある ● Core_V4.2 - Vol.6 - Part B – 2.3.1 Advertising PDUs ● ADV_IND : 「接続可能」「相手不特定」「 SCAN_REQ 可能」 ● 接続する場合はこれを使う ● ADV_DIRECT_IND : 「接続可能」「相手特定」「 SCAN_REQ 不可」 ● どこかで推奨しないという記述を見た気がするのだが、見つけられなかった。。 ● ADV_NONCONN_IND : 「接続不可」「相手不特定」「 SCAN_REQ 不可」 ● ビーコン端末などは、これだろう。 ● ADV_SCAN_IND : 「接続不可」「相手不特定」「 SCAN_REQ 可能」 ● SCAN_REQ コマンドを受信すると、 SCAN_RSP 応答で情報を返す。 ● 使い道がわからない・・・。 ● データ部として 31byte まで使える。 ● ADV_DIRECT_IND は違うが、普通使わなさそうなので省略
  • 10. Advertising のデータ ● 左がヘッダ、右がデータ部の構造 ● PDU Type : 前ページの xxx_IND ● TxAdd : AdvA のアドレス種別 ● 0...public address / 1...random address ● RxAdd : 未使用? ● 実際に送信されているデータ例 (TI SensorTag)
  • 11. AdvData ● AdvData は、 [Length][AD Type][Data] 、という構造 ● AD Type はネットにしかなさそうだ ● https://www.bluetooth.org/en-us/specification/assigned-numbers/generic-access-profile ● 上のデータは、 0x01 、つまり「 Flags 」というデータタイプ ● 参照先: Core Specification Supplement, Part A, section 1.3 ● iBeacon は 0xFF(Manufacturer Specific) にして、あとは好きに使っている ● データタイプの説明は「コア仕様補完 (CSS) 」にある ● 現在 (2015/05/31) の最新は、 v5 ● 0x05 の意味 ● bit0 : LE Limited Discoverable Mode ● bit 2 : BR/EDR Not Supported
  • 12. S110 で Advertising ● ble_advdata_set() で AdvData を設定する ● ble_advdata_t 構造体 ● sd_ble_gap_adv_start() を呼ぶと Advertising を開始する ● ble_gap_adv_params_t 構造体 ● Advertising PDU の種類 (xxx_IND) ● 送信間隔 ● タイムアウト時間 ● Advertising だけしたいなら、 ble_app_beacon サンプルがよい