箱庭ハーブblog

7年目プログラマの趣味の小部屋

BluetoothとBLE

手持ちのメモを供養するシリーズ3

bluetooth 1、用語
________________________________________________________________
用語
スマートレディ:Bluetooth Smart Ready。両対応
スマート   :Bluetooth Smart。BLEのみ
無印     :Bleutooth (無印)。クラシックのみ
マスタ    :通常はPCやスマホ(GATTクライアント)。マスタは同時にスレーブになれる
スレーブ   :マスタに従属する端末(GATTサーバ)。スレーブは同時に2つのマスタに所属できない
ピコネット  :マスタスレーブ間のネットワーク
用語 BLE
BLE        :Bluetooth Low Battery。4.0以降から規格化。電力消費が低く、端末発見が早い
ホスト層       :BLEの通信レイヤの区分。ネットワーク層に相当する
コントローラー層   :BLEの通信レイヤの区分。物理層~リンク層に相当する
GAP        :General Access Profile。セッション確立前に使用する通信規格。アプリは意識しない
GATT       :Generic ATTribute Profile。セッション確立後に使用するHOST層の通信規格
アドバタイジング   :スレーブの状態の一つ。定期的に自分がいることを知らせる待機状態のこと
Broadcaster/Observer :後述
用語 BLE(アプリ)
セントラル      :Central。マスタ、GATTクライアント
ペリフェラル     :Peripheral。ほとんどの場合、スレーブかつGATTサーバ
プロフィール     :=GATT。端末の情報
サービス       :BLE機器の機能。1つのBLE機器は複数のService持ちうる
キャラスタリスティック:BLE機器のServiceのパラメータ。Serviceは複数のCharacteristicを持ちうる





bluetooth 2、BLE
________________________________________________________________
BLE 仕組み コントローラー層
クラシックとは異なる特徴をいくつか持つ
1、端末の識別 :slaveはアドバタイズ情報を定期的に発信する。masterはそれを拾う
2、通信確立  :masterはアドバタイズ中のslaveを検索し、GATT通信を確立する
3、通信方式  :master-slave間の定期通信に乗せる形で通信データを送る(=最大50ms程度遅延)
4、ピコネット :masterは各slaveに対して異なるクロックを提供する。slave同士は認識しない
5、端末の状態 :下記の状態遷移を2つ以上持つことができる
         ただし、masterかつslaveの組み合わせにはなれない。切り替えることは可能
        scanning
          |
advertising ー standby ー Initiating
  |             |
connection(slave)    connection(master)
BLE 仕組み ホスト層
Peripheral(Device)-Service-Characteristic
・Serviceの取得=接続
・Characteristicの値を読み書き=Serviceに操作
・1つのPeripheralは、普通2つ以上のServiceを持つ(例:バッテリ情報、ディスプレイ表示更新用)
________________________________________________________________
BLE アプリ アドバタイジングでやり取り可能な情報
AdvertisementData
・kCBAdvDataLocalName:例えば、CSR Lightingなど
・kCBAdvDataServiceUUIDs:固有のUUID
・kCBAdvDataIsConnectable:1
・kCBAdvDataTxPowerLevel:-2
BLE アプリ  GATTの構造
 16ビットUUID :SIGが取り決めた、種類ごとのUUID
128ビットUUID :任意のUUID
属性ハンドル     :サービスやキャラクタリスティックを識別する番号
BLE アプリ iOS
               :CBPeripheral
               :CBCentralManager
               :scanForPeripheralWithServices
               :CBPeripheralDelegate
デバイス発見時のコールバック :peripheral didDiscoverServices
キャラクタ発見時のコールバック:peripheral didDiscoverCharacteristicsForService
               :peripheral didUpdateValueForCharacteristic
               :peripheral didUpdateValueForCharacteristic
               :discoverDescriptorsForCharacteristic
キャラクタリスティックを表す :CBCharacteristic
通知受取           :CBDescriptor
               :CBUUID

プロトコルの種類とか調べてみた。

プロトコル、ネットワーク、インターネット、Webサーバー、webサーバー、ウェブサーバー、HTTP、Http、http

ファイル共有プリンタ共有って要するにPC同士で通信してるやん。
リモートデスクトップとかも。うん。
・・・あれ?でも通信してるってことは何らかしらのプロトコル使ってるんだよね。
もちろんこれはデータベースでもそうなわけで。
うむ、よくわからん。
XPの仕様だとIP使ってるから少なくともTCP/IP上のプロトコルなはずだけど、
聞いたことないな…

事の発端はそんな疑問から。一度疑問に思うと何も作業が手につかなくなる恐ろしさ。



【プロトコルとは】

プロトコル。
意味としては仕様とかルールとか。そんな意味。
PCやITでもっとも有名なプロトコルは多分HTTP(Hyper Text Transfer Protocol)。
次点でIP(Internet Protocol)やFTP(File Transfer Protocol)ですかね?

人が誰かと話す時には言語やルールがあるように、コンピュータ同士の通信にもルールがある
そのルールは独自規格だったり、有名な規格だったりする。
いずれにせよ、コンピュータやそれらを構成するハードウェア同士は、
互いにそれぞれのプロトコル(規格)に沿った挙動をする。

コンピュータのプロトコルはさまざまな水準の規格で分割されている。
物理的な部分からアプリケーション的な部分まで、大きく分けて4段階ある。
(OSIだと7階層あるけど、まー4階層で十分)

1、どのような周波数・電圧・ケーブル・電圧の伝達ルールを使用するか
2、各端末をどのように論理的に識別して管理するか。通信網をどう定義するか
3、通信が正しく伝えることを保証するかどうか
4、アプリケーションはどのような情報を送受信するのか。

1番は物理層。7階層モデルだと物理層とリンク層。Ethernetなど。
2番はインターネット層。7階層モデルだとネットワーク層のこと。IPなど。
3番はトランスポート層。7階層モデルでも同名。TCPとかUDP。
4番はアプリケーション層。HTTP、SMTP、POPなど。

プロトコルは代表的なものを挙げただけでも、20を超える規格がある。
物好き以外は覚えても仕方ない気がしないでもない。



【代表的なアプリケーション層のプロトコル】

TCP/IPを下位層に持つ代表的なアプリケーション層プロトコルは以下の通り。

・HTTP・HTTPs 文書の送受信リクエストのためのルールの1つ
・FTP・FTPs ファイルの送受信リクエストのためのルール。
・DNS ドメイン名関連のためのルール。
・SMTP Simple Mail Transfer Protocol。メールが宛先サーバに行くためのルール。(送信)
・POP Post Office Protocol。メールサーバからメールを取得するためのルール。(受信)
・IMAP Internet Message Access Protocol。POPの改良版。相互通信される。(受信改良版)
・IRC。Internet Relay Chat。IRCのプロトコル。
・DHCP。Dynamic Host Config Protocol。ローカルIPの自動割り当てに関すルール。
・telnet。リモート操作用のプロトコル。セキュリティに難があるので現在では使われない。
・RDP。Remote Desctop Protocol。Windowsにおけるリモート用のプロトコル。
・CIFS。Common Internet File System。Windowsにおけるファイル共有用のプロトコル。
・SOAP。HTTPやSMTPの本文部分に関する規格。XMLによる情報定義の規格

いっぱいありますね。

Windows2k以降で使われているファイル共有プロトコルはCIFSで、
リモートデスクトップはRDPでした。
Windowsは元々、TCP/IPベースじゃないプロトコルを使ってましたが、
時代の流れと共にTCP/IPを下位層に持つプロトコルが誕生した感じです。

また、DBのプロトコルは基本的に独自規格で、
仲介プログラムを挟んで運用することになる。



そんな感じで、プロトコル、いい加減皆さんも有名どころ10個ぐらいは押さえてみるのもいいかもしれません。

フリーエリア

takemori
Twitter : @takemori_kondo

1. Unityと戯れてます
2. Cake3は劣化じゃないRails

iOS
coming soon...

Windows
Html Editor - Nazuna
Managed DirectX サンプル集

beginning since
2006.08.17
renewaled on
2011.06.03

最新コメント

[2013/06/14 ミューネ]
[2012/08/30 ノートPC]