温湿度・気圧・加速度センサデータのSigfox経由での収集

categories: lpwa
tags: sigfox

Sigfox評価ボードUna Shiled V2Sには、温度、湿度、気圧、および加速度センサが搭載されています。それらのセンサ全てのデータをSigfoxにて伝送してみました。

Una Shiled V2Sを使ったSigfoxの体験の続きです。

Sigfoxの開発ボードUna Shiled V2Sには、ボッシュの温湿度気圧センサBME280と、NXPの加速度センサMMA8451が搭載されていますが、公開されているArduinoサンプルプログラムはBME280のセンシングデータをSigfoxネットワークに送信するところまでです。今回は、BME280とMMA8451のセンシングデータをSigfoxに送信して、そのデータをwebhookにて送信して、データを蓄積するところまでを考えてみます。

Una Shield and Arduino Uno

Una Shieldと、Arduino Uno(またはその互換ボード)と、USB電源を繋いでおいておくだけで自動的に温度、湿度、気圧、ボードの傾き(加速度センサ)をクラウドに送信することができます。Sigfoxネットワークの送信回数制限により1日に収集できる情報は140回までになりますが、それでも15分おきにこれらの情報を収集できるのは楽しいです。

1回に送信できる内容は12バイトまでです。そのため、温度、湿度、そして気圧をそのまま2バイト整数で、xyz方向の傾きを表す3次元加速度をそれぞれ10倍した後に2バイト整数にして、合計12バイトにします。

Arduino IDEへのBME280ライブラリとMMA8451ライブラリの導入

Adafruit社のAdafruit Unified Sensor DriverAdafruit BME280 Library、およびAdafruit MMA8451 Accelerometer Driverのそれぞれで、「Clone or download」ボタンを押し「Download ZIP」でライブラリをダウンロードします。

Arduino IDEの「スケッチ」「ライブラリをインクルード」「.ZIP形式のライブラリをインクルード…」の順に選択して、上述の3つのZIPライブラリを順にインクルードします。

次に「ファイル」「新規作成」を選び次のプログラムを入力します。

このプログラムをコンパイルしてArduino Uno+Una Shieldのボードに転送します。

Sigfox Backend Cloudでのwebhookの設定

Sigfox Backend Cloudにログインして、 上部の「DEVICE TYPE」、Name欄のUnabiz、左側の「CALLBACKS」、右側の「New」の順にクリックして、Custom payload欄に

temp::int:16:little-endian humid::int:16:little-endian press::int:16:little-endian x::int:16:little-endian y::int:16:little-endian z::int:16:little-endian

を入力します。そして、Body欄には

{
  "device": "{device}",
  "time":"{time}",
  "station":"{station}",
  "rssi":"{rssi}",
  "snr":"{snr}",
  "data":"{data}",
  "seq": "{seqNumber}",
  "temp":"{customData#temp}",
  "humid":"{customData#humid}",
  "press":"{customData#press}",
  "x":"{customData#x}",
  "y":"{customData#y}",
  "z":"{customData#z}"
}

とします。その他の設定やwebhook受け取り方は日本で容易に入手できるUna Shiled V2Sを使ってSigfoxを体験するを参考にしてください。

終わりに

Arduino Uno、Una Shileid、USB電源を接続したボードの情報が次のように収集されるはずです。

  device: xxxxxx
  time: xxxxxxxxxx
  station: 50E3
  rssi: -123.00
  snr: 9.48
  data: 11003600f003f4fff1ff5f00
  seq: 2791
  temp: 17
  humid: 54
  press: 1008
  x: -12
  y: -15
  z: 95

これは、気温がセ氏17度、相対湿度が54%、気圧が1008 hPaであることを示しています。また、x, y, z方向の加速度がそれぞれ-1.2 m/s^2, -1.5 m/s^2, 9.5 m/s^2であることを示していますが、重力加速度は9.8 m/s^2なので、ボードが少しだけ傾いていることがわかります。

depreciation message in Sigfox backend cloud

久しぶりにSigfox Backend Cloudにログインしたら「The feature send duplicate and the following information: snr, station, avgSnr, lat, lng, rssi, will not be available anymore for customers in the DATA callback feature from the first of June 2019.」のメッセージが赤で表示されていました。信号対雑音電力比(snr)や信号強度(rssi)が来年6月初旬から表示されなくなるそうです。また、「Send duplicate」をオンにするとsnrやrssiやstationの異なるデータも表示され、3回の送信を異なる3基地局で受信していることがわかりましたが、これもなくなるそうです。この先に、信号対雑音電力比と非公開の基地局位置とをSigfoxネットワーク処理して、マルチラテレーションなどによりユーザ位置を推定するサービスにつながることを期待しています。