STM32 Logger Beacon

はじめに

STM32リーフに搭載されたFlashメモリを使って、温湿度と測定時間を記録することが可能なBLE Beaconのサンプルデザインです。1

Beaconを用いた温湿度の測定方式では現在時刻での温湿度のみを知ることができ、これまでの測定値を知るためには、別途設置した受信機で常にBeaconの電波を受信し続ける必要がありました。
Beaconの電波は非常に弱く、発信時間も短いため、受信時に取りこぼしが発生することも多々あり、安定した測定をするためには不十分でした。
しかしながら本サンプルでは、STM32に搭載された不揮発メモリに測定記録を残すことができるため、万が一Beaconの電波を受信できなかったとしても、後からLeafonyに接続して、不揮発メモリに記録されたデータを取り出すことができます。

また、このサンプルではBeaconの受信とSTM32 Flashメモリに書き込まれたデータの読み出しがどちらも行えるWebアプリのサンプルも含まれています。

サンプルのソースコード

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

用意するもの

  • Leafony
  • Google ChromeがインストールされたAndroidスマートフォン または Mac2

使用するリーフ

Type Name Q’ty
AI01 4-Sensors 1
AP03 STM32 MCU 1
AZ01 USB 1
AC02 BLE Sugar 1
AV01 CR2032 1
- CR2032 coin cell battery 1
- M2*18mm screw 2

動作方法

  1. STM32リーフにサンプルスケッチSTM32_Logger_Beacon.inoを書き込んでください。

  2. AndroidスマートフォンでSTM32 Sensors Logger Webアプリケーションを開いてださい。

  3. Start Scanningボタンを押すと、Bluetooth利用許可を求めるポップアップウィンドウ表示されます。許可を押すとBeaconの電波の受信を開始します。
    Leafonyから発されるBeaconの電波を受信すると、画面の温度/電池電圧/受信時刻表示が更新されます。

  4. Connectボタンを押すとLeafonyに接続され、数秒ほど待つとFlashメモリに保存されていた過去の測定データを受信し、画面上のグラフが更新されます。

  5. 受信完了後はDisconnectボタンを押しLeafonyと切断すると、Leafonyは再度Beaconモードに移行し、センサ情報の記録を再開します。

動作解説

本サンプルの動作シーケンスは下図のとおりです。 Webアプリ側からの接続要求が無い限り、LeafonyはBeaconモードでの動作をしたあとに一度本体電源を自ら落とし省電力化を図ります。 その間、STM32内に含まれたリアルタイムクロックだけは動作を続けることができるため、一定時間を測定した後、STM32本体の電源を投入し、再度Beaconモードに移行します。

Beaconモードで動作中にWebアプリ側から接続要求があった場合、Connectモードに移行し、スケッチのloop()関数に移行します。 LeafonyはWebアプリ側からの応答を待ち、getコマンドを受信すると直ちにメモリに保存されたセンサデータをBluetoothで送信します。

STM32リーフには内部に不揮発性メモリ(Flashメモリ)が搭載されています。 本サンプルでは、このFlashメモリをリングバッファとして扱います。 下図のように、メモリの0番地と1番地にはリングバッファの読み出しアドレス記録しておくことにって、 本体の電源が切れた後も、再度電源を入れ直せば測定を再開することが可能です。

前のページに戻る


  1. 2021年1月現在、測定時刻を記録する機能は実装されてません。実装されるまで今しばらくお待ち下さい。 ↩︎

  2. 2021年1月現在、WebbluetoothのScanning APIを利用可能なのは、Android 6.0 Marshmallow以降、または、Mac OS X Yosemite以降のみです。対応状況はWebbluetooth Implementation Statusを御覧ください。 ↩︎


最終更新 March 3, 2021