Seeed Studio XIAO ESP32C6 でBLEビーコンを試してみる(3)
この記事では、Seeed Studio XIAO ESP32C6を使って、MicroPythonからBluetooth Low Energy(BLE)のアドバタイズを発信し、スマートフォンからビーコンを検出してみます。
この記事で学べること
- スマートフォンでAdvertisingを確認する方法
Primary PHYについて- Advertising間隔について
- RSSIについて
ステップごとの解説
- スマートフォンでAdvertisingを確認する
XIAO ESP32C6からBLE Advertisingを発信した状態で、スマートフォンのBLEスキャナアプリ(今回は、nRF Connectを利用)を起動して周囲のBLE機器を検索します。
すると、XIAO ESP32C6から発信されたBLE Advertisingを確認することができました。
今回設定したデバイス名は、
XIAO-ESP32C6
です。
BLEスキャナアプリでは、次のように表示されました。

今回の実験では、XIAO ESP32C6が次のように表示されています。
XIAO-ESP32C6
Primary PHY: PHY LE 1M
Secondary PHY: PHY LE 161M
RSSI: -82 dBm
Advertising: 約101.63 ms
これで、XIAO ESP32C6から発信したAdvertisingをスマートフォンで受信できていることを確認できました。
Primary PHYについてPrimary PHY: PHY LE 1Mは、簡単にいうと **「このBLE通信では、基本となる無線通信方式としてLE 1M PHYを使っています」**という意味です。
PHYとは?
PHYは Physical Layer(物理層) の略です。
BLEでは、実際に電波を使って0/1のデータを送受信する部分の通信方式をPHY(Physical Layer)として定義しています。
今回のスキャナ画面では、
Primary PHY: PHY LE 1M
となっています。
これは、
BLEのPrimary Channelで「LE 1M PHY」を使用している
ということです。
「1M」は1MbpsのことLE 1M の「1M」は、基本的に1 Mbit/s(1Mbps)のビットレートを意味します。
LE 1M
│
└─ 1 Mbpsの物理層通信方式
ただし、ここは少し注意が必要です。
1Mbps = 実際にアプリケーションデータを1秒間に1Mbit送れる、という意味ではありません。
BLEでは、パケットのヘッダーや各種制御情報なども送信するため、実際に利用できるデータ速度はこれより低くなります。
- なぜ「Primary PHY」なのか?
BLEのAdvertisingでは、Advertisingに使用するPrimary Channelsがあります。
BLEでは2.4GHz帯の40個のチャネルを使いますが、そのうち、
37
38
39
の3つがAdvertising Channelとして使用されます。
イメージとしては、
BLE 2.4GHz帯
│
├─ Advertising Channel
│ ├─ Channel 37
│ ├─ Channel 38
│ └─ Channel 39
│
└─ Data Channel
└─ その他のチャネル
です。
今回のXIAO ESP32C6が発信しているAdvertisingも、このAdvertising Channelを使って送信されます。
そして、そのPrimary Channelで使用されているPHYが、
PHY LE 1M
ということです。
LE 1M以外もある
BLEには、LE 1M以外にもPHYがあります。
代表的なのが、
|
PHY |
特徴 |
|
LE 1M |
基本的なBLE PHY |
|
LE 2M |
より高速な通信 |
|
LE Coded |
長距離通信を重視 |
です。
特にBLE 5以降では、LE 2MやLE Coded PHYが利用できるようになっています。
ざっくりイメージすると、
LE 1M
速度:標準
互換性:高い
LE 2M
速度:高速
通信距離:一般的にはLE 1Mより不利になりやすい
LE Coded
速度:低め
通信距離:長距離向け
という違いがあります。
- Advertising間隔について
今回のプログラムでは、
ble.gap_advertise(
100000,
adv_data=adv_data
)
として、Advertising間隔を100,000μs、つまり100msに設定しました。
BLEスキャナアプリでは、
101.63 ms
と表示されています。
設定値と完全に同じではありませんが、おおむね100ms間隔でAdvertisingが発信されていることが確認できます。
- RSSIについて
画面には、
-82 dBm
という値も表示されています。
これは**RSSI(Received Signal Strength Indicator)**と呼ばれる、受信した電波の強さを示す値です。
一般的には、
0 dBm
↑
│ 電波が強い
│
-50 dBm
-70 dBm
-82 dBm
│
↓ 電波が弱い
-100 dBm
のように、値が0に近いほど受信電波が強く、マイナスの値が大きくなるほど弱いと考えます。
ただし、RSSIは距離だけで決まるものではありません。
アンテナの向きや周囲の障害物、壁、人などによっても変化するため、RSSIから距離を正確に求められるわけではありません。
今回は、まず「XIAO ESP32C6からBLE Advertisingを発信し、スマートフォンで受信できる」というところまで確認できました。
なお、スクリーンショットには、
XIAO-ESP32C6
とは別に、
Beacon
Manufacturer Data: Microsoft <0006>
...
Beacon Type: 9 (WindowsDesktop)
というものも見えています。
これは今回のXIAO ESP32C6ではなく、周囲に存在する別のBLEビーコン/Advertising機器です。
つまり、スキャナ画面には、
周囲のBLE機器
│
├─ XIAO-ESP32C6 ← 今回の実験対象
│
├─ Beacon ← 周囲にあった別のAdvertising
│
└─ N/A ← その他のBLE機器
と、複数のBLE機器が表示されています。
これは逆に、**BLE Advertisingが「周囲に向けて一方的に発信され、複数の機器からスキャンできる」**という今回の記事の説明にぴったりの実例になっています。
次はこのスクリーンショットを使って、**「Advertisingデータの中身を見てみる」を説明したいと思います。続く
