コンテンツにスキップ
ショップ

ESP32 BLE Beacon

ESP32を使ったBLE Beacon型の環境センサアプリケーションの例です。 GATT ServerのAttributeにセンサデータを入れることで、データをブロードキャストするBeaconとして動作するとともに、 外部から接続要求があった場合にはサーバクライアント型の通信を行い、Characteristicでログデータのやり取りを行います。

Beacon型で発生するパケットの受信失敗によるデータの損失を、ESP32内の不揮発メモリにセンサデータを残すことで防ぎます。 ユーザは任意のタイミングで接続してログデータを読み出す事ができ、データ転送完了後にはすぐにBeaconモードに移行することで電力の消費を大幅に抑えます。

使用するスケッチやツールのソースコードは下記のリポジトリで閲覧可能です。

Sample-Sketches/ESP32_BLE_Beacon at master · Leafony/Sample-Sketches

  • Leafony ESP32 Wi-Fi Kit
  • Leafony Basic Kit
  • Raspberry Pi
  • Androidスマートフォン
  • USB microケーブル
TypeNameQ’ty
AP02ESP32 MCU1
AI014-Sensors1
M2 screw2

サンプルのプロジェクトを動かす手順について説明します。各ソースコードの動作の仕組みについて理解したい場合は、後述する仕組みをご覧ください。

1. ESP32リーフにスケッチを書き込む

Section titled “1. ESP32リーフにスケッチを書き込む”

ESP32リーフとPCをUSBで接続し、Arduino IDEでinoファイルを書き込んでください。

サンプルコードにはESP32 Logging Libraryが使用されています。
Arduino IDEの「ツール → Code Debug Level」を任意のレベルに設定することでシリアルモニタにデバッグメッセージが表示されるようになります。

2. ビーコンスキャナアプリを実行

Section titled “2. ビーコンスキャナアプリを実行”

AdvertisingパケットのScanningにはNode.jsで動くアプリを使用します。
Node.jsが動く環境であれば動作環境は問いませんが、今回は屋外に定点設置するBeacon受信機とすることを想定し、 Raspberry Pi 4を使ってアプリの動作方法について解説します。

必要なパッケージをインストールしてアプリ実行します。

Terminal window
cd ./tools/node-scanner
npm install
npm start

ログデータの取得とグラフの表示にはWebアプリケーションを使用します。

ESP32 Sensors Logger