M5Stackに手持ちのセンサー全種を接続してAzure IoT Hubに測定値を送信してみた。

手持ちセンサー全部盛りの欲張りセットで測定値を Azure IoT に送信しようと思う。

そこで CO2 センサー(SCD30)を接続した M5Stack で測定値を記録して毎週の変化をグラフで見てみる。
のときに書いたソフトウェアを BME280 / SGP30 / SCD30 / ENV.III unit / SCD41 に対応するようにほぼ全部書き換えた。

用意するもの

M5Stack Core2 for AWS を用意できればそれを使えばいいと思うよ。
あのとき売り切れだったから M5Stack Core2 と M5GO Bottom2 を組み合わせただけなので。

接続

上の M5Stack UNIT を見ると"I2C INTERFACE"となっていてコネクタが赤色なので PORT.A に全部つなぐ。

こういうふうに M5Stack の I2C ポートである Port.A にハブ経由で全部つなぐだけ

さすがに全部盛りだからか電源から 800mA も(状況によってはおそらく 1A くらいは)ひっぱるのでそのつもりで。

GitHub リポジトリ

ENV.III unit/ SCD41 を追加した。
https://github.com/ak1211/m5stack-azure-iot

VSCode + PlatformIO

できるだけ新しい C++を使いたいから皆すでに VSCode と PlatformIO の準備はできているでしょう。
しらんけど。

Azure IoT Hub

M5Stack Core2 IoT 開発キットを Azure IoT Hub に接続して BME280 で測定した環境のグラフをみる。
のときに準備した Azure Iot Hub と
M5Stack Core2 で測定したデータを Azure Cosmos DB に蓄積してみた。
のときに準備した Azure Cosmos DB を今回も使っていきます。

デバイスの追加

Azure IoT Hub の「デバイスの追加」から「デバイスの作成」に移動してデバイス ID を入力して保存することで

「プライマリ接続文字列」または「セカンダリ接続文字列」が必要になる。

functions

JAVASCRIPT
module.exports = function (context, myEventHubMessage) {
  //    context.log('Function triggered to process a message: ', myEventHubMessage);
  // We need sensorId parameters.
  if (myEventHubMessage.sensorId) {
    myEventHubMessage["proceededAt"] = new Date().toISOString();
    context.log(myEventHubMessage);
    // Set the output binding data from the query object.
    context.bindings.outputDocument = myEventHubMessage;
    // Success.
    context.res = {
      status: 200,
    };
  } else {
    context.res = {
      status: 400,
      body: "The query options 'sensorId' are required.",
    };
  }

  context.done();
};
クリックして展開し、詳細を表示

include/credentials.h を用意する

inlcude/credentials.h.example

このファイルの以下の部分を編集して credential.h にリネームして保存する。

platformIO でビルドして M5Stack に書き込む

ビルドが問題なく終わると USB ケーブルをつないで Upload か Upload and Monitor すればいいと思うよ。

WiFi がつながっていれば、次回からは(platformio.ini を編集する必要があるが) Over The Air アップデートできる(だいたい OTA の方が早い。WiFi の速度だし)。

グラフ化

test/に plot_db.py をおいているので

BASH
/mnt/d/m5stack-azure-iot/test$ ./plot_db.py CosmosDBのURI CosmosDBのキー
クリックして展開し、詳細を表示

でグラフ化できる。

CosmosDB の URI と CosmosDB のキーはこの画面にある。

1週間分のグラフ

ソフトのバグを修正したので, データが欠落しないようになった。

M5ENV.Ⅲ Unit の SHT30 と BME280 はほぼ同じ温度と湿度と気圧。
SCD41 はそれより温度が高めになる
SCD30 はさらに温度が高めになる

SCD41 と SCD30 の CO2 はほぼ一致する。
SGP30 の equivalent CO2 は何を測定しているんだ?

実行

こんな感じになる。 タッチスクリーンを使うとスマホみたいな UI になるね。

View this post on Instagram

著作権表示

著者: Akihiro Yamamoto

リンク: https://ak1211.com/posts/7731/

ライセンス: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

コメント

検索を開始

キーワードを入力して記事を検索

↑↓
ESC
⌘K ショートカット