以下BLE)の通信速度について調査、実測してみたメモ。(2015.3追記)この記事は古く、書いた当時はBLEについての知識も乏しかったので内容には多分に誤りが混じっている可能性があります。BLEでは「無接続状態」から→「接続」→「データやり取り」までの速度を圧倒的に早くすることで普段は頻繁に「つないで」「死んで」「つないで」「死んで」を繰り返している。ホントに必要なときしか動かないことで消費電力を最適化しているわけだ。接続自体のディレイは6ms程度、なのできっとデータ送受信トータル20-30msくらいなのかなぁ。普通の人間が感じることができる(違和感を感じることができる)ディレイなんてせいぜい30ms以上の場合だけだから既出のキーボードなどの用途ではまったくもって申し分ないレベルだ、といえるだろう。(http://mixture-art.net/blebluetooth-low-energy%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E7%9C%9F%E9%9D%A2%E7%9B%AE%E3%81%AB%E6%9B%B8%E3%81%8F/)スペック上は最大通信速度が1Mbpsと謳われているが、「実質10kbps程度と圧倒的に遅い」(森山氏)そうだ。@IT)BLEは、例えば1秒に20バイト程度のデータを送受信するような、データのやり取り頻度は低いけれども、無線接続自体は長期間維持できる応用分野を想定した規格です。データ通信速度も物理層で1Mbpsです。クラシックBTは、ヘッドセットやパーソナル・エリア・ネットワーク(PAN)のような、特定の端末と接続すること(ペアリング)、常時データ通信があること、また高いデータ・レート(~3Mbps)が必要とされる、場面を想定した規格です。BLEの通信速度は、物理層で1Mbps、実際の通信速度は~50kbps程度です。一方でクラシックBTは物理層で3Mbps(WiFiの物理層を使わないものであれば)で、~500kbps程度です。そもそも、そのような連続かつ高速のデータ送受信をし続ける応用例には、BLEを選択すること自体が、BLEの規格の狙い目からはずれていますから、クラシックBTのみで設計すればよいでしょう。(http://reinforce-lab.github.io/blog/2013/01/21/ios-ble-introduction/)諸説ありますが、実質10〜50kbpsのようです。Bluetoothで実際に実装して計ってみました。ループさせる(ループ間隔はUIで変更できる)ペリフェラルからはランダムなNSDataを送り返す(データ長はUIで変更できる)セントラルで受信したデータサイズから通信速度(最大、最小、平均)を計算するというような計測用アプリをつくりました。GATTまわりがまだよくわかってなくてサンプルそのままなので、改善の余地はあるかもしれません。関連記事http://d.hatena.ne.jp/shu223/20140109/1389216052*1:ペリフェラルからのNotifyも同様にループさせて試してみたところ、Readよりも遅かったので、本記事ではReadについてのみ言及しています。(22)月別アーカイブリンクWishlist検索はてなブログをはじめよう!shu223さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。