Seeed Studio XIAO ESP32C6 でBLEビーコンを試してみる(1)

この記事では、Seeed Studio XIAO ESP32C6を使って、MicroPythonからBluetooth Low Energy(BLE)のアドバタイズを発信し、スマートフォンからビーコンを検出してみます。

この記事で学べること

  • Bluetooth Low Energy(BLE)とは
  • BLEビーコンとは
  • iBeaconとは
  • ESP32をBLEビーコンとして使う

ステップごとの解説

  1. Bluetooth Low Energy(BLE)とは
    BLE(Bluetooth Low Energy)は、Bluetoothの規格の一つで、少ない消費電力で無線通信を行うための仕組みです。
    スマートフォンやパソコンなどで利用されているBluetoothには、Bluetooth ClassicとBLE(Bluetooth Low Energy)があり、それぞれ得意とする用途が異なります。
    BLEは、その名前のとおり「Low Energy(低消費電力)」を大きな特徴としており、電池で長時間動作させたいセンサーやIoT機器などで広く利用されています。

    Bluetooth Classicとの違い

    Bluetooth Classicは、ワイヤレスイヤホンやスピーカーなど、比較的連続したデータ通信を行う用途でよく利用されています。
    一方、BLEは、必要なときだけ短時間通信するような用途に向いています。
    例えば、温度センサーから定期的に温度を送信したり、機器の状態をスマートフォンに通知したりする用途です。

Bluetooth Classic

BLE

主な用途

音声・連続通信など

センサー、IoTなど

消費電力

比較的大きい

小さい

通信

継続的な通信に向く

短時間の通信に向く

電池駆動

ただし、「BLEなら必ず低消費電力」というわけではありません。通信頻度や送信電力、接続時間などによって消費電力は変わります。

BLEではどのように通信するのか

BLEには、機器同士が接続して通信する方法だけでなく、接続せずに情報を周囲へ発信する方法があります。
この発信に使われるのが「Advertising(アドバタイジング)」です。
例えば、ESP32からBLEのAdvertisingを発信すると、周囲のスマートフォンなどは、その信号をスキャンして検出することができます。

ESP32
  │
  │ BLE Advertising
  │
  ├──────────────→ スマートフォン
  │
  ├──────────────→ タブレット
  │
  └──────────────→ BLEスキャナ

Advertisingでは、機器の名前や識別情報など、一定量の情報を送信することができます。
重要なのは、Advertisingは基本的に「周囲へ情報を知らせる」ための仕組みであり、通常の接続型通信とは異なるという点です。

BLEはIoTと相性がよい

BLEは、低消費電力という特徴から、IoT機器との組み合わせにも適しています。
例えば、

  • 温度センサー
  • 湿度センサー
  • 人感センサー
  • ドア・窓の開閉センサー
  • ウェアラブル機器
  • 位置情報や状態を知らせる機器

など、さまざまな用途に利用されています。
今回の記事では、このBLEのAdvertising機能を使って、Seeed Studio XIAO ESP32C6からBLEビーコンを発信する実験を行います。

BLEビーコンとは

BLEビーコンとは、Bluetooth Low Energy(BLE)のAdvertising機能を利用して、周囲に情報を発信する機器です。
ビーコン(Beacon)には「灯台」や「目印」という意味があります。
その名前のとおり、BLEビーコンは自分の存在や識別情報などを周囲に知らせるために利用されます。
例えば、BLEビーコンを設置すると、

BLEビーコン
    │
    │ BLE Advertising
    │
    ├────────→ スマートフォン
    │
    ├────────→ タブレット
    │
    └────────→ BLE受信機

のように、周囲にあるBLE対応機器からビーコンを検出できます。

BLEビーコンは接続しなくても情報を発信できる

BLEビーコンの大きな特徴は、スマートフォンなどとBluetooth接続を確立しなくても情報を発信できることです。
ビーコンは一定間隔でAdvertisingパケットを送信します。
受信側は周囲のBLE信号をスキャンすることで、そのビーコンを検出できます。
例えば、BLEスキャナアプリを入れたスマートフォンを近づけると、

デバイス名
ESP32-Beacon

RSSI
-55 dBm

その他のAdvertising Data
...

といった情報を確認できます。

BLEビーコンで何ができるのか

BLEビーコンは、単純に「電波を発信するだけ」の機器に見えますが、さまざまな用途があります。
例えば、

  • 店舗や施設内での位置情報サービス
  • 展示物や商品の案内
  • 入退室管理
  • センサー情報の通知
  • 機器の識別
  • スマートフォンとの連携

などに利用できます。
ただし、BLEビーコンそのものがGPSのように正確な位置を測定するわけではありません。
受信側で電波の強さ(RSSI)などを利用して、ビーコンとの距離を推定するような仕組みが使われることがあります。

iBeaconとは?

BLEビーコンについて調べていると、「iBeacon」という言葉が出てきます。
iBeaconは、Appleが定めたBLEを利用したビーコンの仕様です。
iBeaconでは、主に次のような情報をAdvertisingデータに含めて送信します。

UUID
Major
Minor
TX Power

例えば、

UUID  : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Major : 1
Minor : 10

のように設定することで、ビーコンを識別できます。
ここで注意したいのは、BLEとiBeaconは同じものではないということです。
BLEは無線通信技術そのものを指し、iBeaconはそのBLEを利用したビーコンの方式の一つです。

Bluetooth
    │
    └── BLE
          │
          ├── 接続型通信
          │
          └── Advertising
                 │
                 └── BLEビーコン
                        │
                        └── iBeacon など

ESP32をBLEビーコンとして使う

BLEに対応したESP32では、BLEのAdvertising機能を利用してビーコンを作ることができます。
今回は、Seeed Studio社のXIAO ESP32C6を使います。
XIAO ESP32C6は、Amazonスイッチサイエンス社マルツエレック社などで購入することができます。
下記の記事を参考にMicroPythonをインストールしてください。

Seeed Studio XIAO ESP32C6

XIAO ESP32C6にMicroPythonを書き込み、BLEを利用してAdvertisingデータを発信します。
そしてスマートフォンのBLEスキャナを使って、実際にXIAO ESP32C6から発信された信号を確認してみます。

XIAO ESP32C6
      │
      │ BLE Advertising
      ▼
スマートフォン
      │
      ▼
BLEスキャナ
      │
      ├─ デバイス名
      ├─ Advertising Data
      └─ RSSI

まずは単純なBLE Advertisingから始め、最終的にはiBeacon形式のデータを送信するところまで試してみたいと思います。続く

類似投稿