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ケーブル
使用するリーフ
Type | Name | Q’ty |
---|---|---|
AP02 | ESP32 MCU | 1 |
AI01 | 4-Sensors | 1 |
M2 screw | 2 |
動作方法
サンプルのプロジェクトを動かす手順について説明します。各ソースコードの動作の仕組みについて理解したい場合は、後述する仕組みをご覧ください。
1. ESP32リーフにスケッチを書き込む
ESP32リーフとPCをUSBで接続し、Arduino IDEでinoファイルを書き込んでください。
サンプルコードにはESP32 Logging Libraryが使用されています。
Arduino IDEの「ツール → Code Debug Level」を任意のレベルに設定することでシリアルモニタにデバッグメッセージが表示されるようになります。
2. ビーコンスキャナアプリを実行
AdvertisingパケットのScanningにはNode.jsで動くアプリを使用します。
Node.jsが動く環境であれば動作環境は問いませんが、今回は屋外に定点設置するBeacon受信機とすることを想定し、
Raspberry Pi 4を使ってアプリの動作方法について解説します。
必要なパッケージをインストールしてアプリ実行します。
cd ./tools/node-scanner
npm install
npm start
3. ログ取得アプリを実行
ログデータの取得とグラフの表示にはWebアプリケーションを使用します。