【保存版】Bluetoothの通信距離まとめ|バージョン別の目安とRaspberry Piでの実測手順

ラズパイ

ここでは、Bluetoothのバージョン別・通信距離の“目安”を初心者向けに整理しています。

屋内ではなぜ短くなる? Long Range(LE Coded PHY)とは? Raspberry PiでRSSIを記録し自分の環境で実距離を測る手順を紹介しています。

スポンサーリンク
スポンサーリンク

Bluetoothの“距離”をどう考える?

  • 表示される距離は多くが見通し(LoS)環境の理想値
  • 屋内では反射・遮蔽物・人体の影響で、1/5〜1/10 程度まで短くなることが一般的。
  • Bluetooth 5.xLong Range(LE Coded PHY: 125 / 500 kbps) で距離を伸ばせますが、速度は低下します。
  • 機器ごとに対応PHY・送信電力・アンテナ設計が違うため、実測が必須です。

Bluetooth バージョン別 通信可能距離(目安)

スマホやラズパイの対応バージョン/機能(2M PHY・Coded PHY など)は機種により異なります。

バージョン主な規格名通信速度通信距離(目安)備考
Bluetooth 1.0 / 1.1 (1999–2001)BR (Basic Rate)721 kbps約 10 m初期仕様。相互接続性に課題あり。
Bluetooth 2.0 + EDR (2004)BR/EDR3 Mbps約 10 mEDR (Enhanced Data Rate) 導入。
Bluetooth 2.1 + EDR (2007)BR/EDR3 Mbps約 10 mSSP(Secure Simple Pairing)でセキュリティ強化。
Bluetooth 3.0 + HS (2009)BR/EDR + 802.1124 Mbps(理論値)約 10 m(BTリンク)実データはWi-Fiで転送。距離はBTリンクに依存。
Bluetooth 4.0 (2010)BLE導入1 Mbps約 50 m(BLE)/ 10 m(BR/EDR)超低消費電力。IoT普及に貢献。
Bluetooth 4.1 (2013)BLE拡張1 Mbps約 50 mLTE干渉対策、IoT向け強化。
Bluetooth 4.2 (2014)BLE 4.21 Mbps最大 60 mIPv6(6LoWPAN over BLE)対応。
Bluetooth 5.0 (2016)BLE 52 Mbps / Long Range(125 / 500 kbps)最大 240 m(見通し・Long Range)4.2比:距離4倍/速度2倍。
Bluetooth 5.1 (2019)BLE 5.12 Mbps / Long Range最大 240 m方向検知(AoA/AoD)。
Bluetooth 5.2 (2020)BLE 5.22 Mbps / Long Range最大 240 mLE Audio(Isochronous Channels)。
Bluetooth 5.3 (2021)BLE 5.32 Mbps / Long Range最大 240 m電力効率・信頼性改善。
Bluetooth 5.4 (2023)BLE 5.42 Mbps / Long Range最大 240 m周期広告同期などIoT向け拡張。

注意
・上記は理論値/理想環境の目安。屋内は 1/5〜1/10 まで短くなることが一般的です。
・「最大240 m」は LE Coded PHY(125 kbps) を用いた場合の理想値です。
・距離・速度・消費電力はトレードオフです。

Raspberry Piで“自分の環境の距離”を実測する

1) 準備(Raspberry Pi OS)

sudo apt update
sudo apt install -y bluez python3-pip
pip3 install bleak

内蔵BTが弱いと感じる場合は、外部アンテナ付きUSB BTドングルの導入で安定することがあります。

2) スキャンしてRSSI(受信強度)を記録する

import asyncio
from bleak import BleakScanner

async def main():
    def on_detect(device, advertisement_data):
        # RSSI は advertisement_data.rssi に入る
        name = device.name or "Unknown"
        print(f"{name} {device.address} RSSI:{advertisement_data.rssi} dBm")

    scanner = BleakScanner(on_detect)
    await scanner.start()
    await asyncio.sleep(5.0)  # 走査時間を調整
    await scanner.stop()

if __name__ == "__main__":
    asyncio.run(main())

測定方法:発信側(スマホのビーコンアプリ/BLE機器)を一定の高さで固定。
ラズパイを 1m → 3m → 5m → … と離してRSSIの落ち方を記録します。

RSSIは揺れます。10〜20回の平均を取ると傾向が掴みやすいです。

結果

測定したら以下の用に検出します。

Y****** **:**:**:**:**:** RSSI:-54 dBm
Unknown **:**:**:**:**:** RSSI:-67 dBm

3) ざっくり距離推定(目安)

def estimate_distance(rssi_dbm: int, tx_power_dbm: int = -59, n: float = 2.0) -> float:
    """
    rssi_dbm: 受信RSSI(例: -65)
    tx_power_dbm: 1mでの送信基準(端末依存。-59はよく使われる仮値)
    n: 環境係数(屋外LoS=~2.0、室内2.0-3.5)
    return: 推定距離[m]
    """
    return 10 ** ((tx_power_dbm - rssi_dbm) / (10 * n))

print(estimate_distance(-70, -59, 2.5))  # 例: 3.5m くらい

重要:推定は外れることが多いです。実測の補助と割り切り、ログの平均化・向き/高さの固定・金属面を避けるなどを徹底しましょう。

距離を伸ばすコツ(実践メモ)

  • アンテナ:外付けアンテナ付きBTドングルで受信S/Nが改善する場合あり
  • 設置:床/金属面から離す、高さを合わせる、人体で遮らない
  • PHY:距離重視→ LE Coded PHY(125 kbps)、速度重視→ 2M PHY(対応機限定)
  • 広告間隔:短めにするとスキャンで捉えやすい(ただし消費電力は増加)

よくある質問(FAQ)

Q. スマホとラズパイで240 mは届きません
A. 多くのスマホはLE Coded PHYに非対応だったり、アンテナ/出力が控えめです。屋外LoS+対応機+外付けアンテナなど条件が揃って初めて長距離化が狙えます。

Q. 室内で10 mも届きません
A. 壁・家具・人体で減衰します。設置位置/高さ/向きの見直し、外付けBTドングルの検討が有効です。

Q. 数値が安定しません
A. RSSIは変動します。平均化し、端末の向きを固定。Wi-Fi干渉が強ければチャンネルも見直します。

製品対応アンテナ特徴リンク
エレコム Bluetooth USB アダプタBLE 5.3外付け安定志向Amazonで見る
MoYa Goa ドングルBLE 5.3外付け安価Amazonで見る
BLEビーコン 加速度トリガー搭載 発信機BLE 5.1外付けオリジナルティが高いAmazonで見る

まとめ

  • 表の数値は理想条件の目安。屋内は大きく短くなる
  • Bluetooth 5.x の Long Range は距離が伸びるが低速
  • Raspberry Pi で実測して、機材・設置・PHYを最適化しよう

タイトルとURLをコピーしました